PIPS
|
#include <stdio.h>
#include <stdlib.h>
#include "linear.h"
#include "genC.h"
#include "ri.h"
#include "ri-util.h"
#include "misc.h"
#include "boolean.h"
#include "vecteur.h"
#include "contrainte.h"
#include "sc.h"
#include "matrice.h"
#include "conversion.h"
Go to the source code of this file.
Functions | |
void | scanning_base_to_vect (matrice G, int n, Pbase base, pvg) |
void scanning_base_to_vect(matrice G,int n,Pbase base,Pvecteur pvg[n]) compute G*base and put the result in a vector pvg[n] ex: 1 2 G = , base = (I, J) , alor pvg[2] = ((I+2J), (3I+4J)) More... | |
Pvecteur | vect_change_base (Pvecteur pv_old, Pbase base_oldindex, pvg) |
Pvecteur vect_change_base(Pvecteur pv_old, Pvecteur pvg[], Pbase base_oldindex, Pbase base_newindex) compute the new vector in the new basis pvg[]. More... | |
cons * | listexpres_to_listexpres_newbase (cons *lex, pvg, Pbase base_oldindex) |
cons listexpres_to_listexpres_newbase(cons *lex, Pvecteur pvg[], Pbase base_oldindex) compute the new list of expressions (cons lex) in the new basis pvg[] More... | |
expression | expression_to_expression_newbase (expression e_old, pvg, Pbase base_oldindex) |
expression expression_to_expression_newbase(expression e_old,Pvecteur pvg[], Pbase base_oldindex) compute the new expression for e_old in the new basis pvg[] More... | |
void | statement_newbase (statement s, pvg, Pbase base_oldindex) |
statement_newbase(statement s, Pvecteur pvg[], Pbase base_oldindex) compute the new statement by performing the change of basis More... | |
expression expression_to_expression_newbase | ( | expression | e_old, |
pvg | , | ||
Pbase | base_oldindex | ||
) |
expression expression_to_expression_newbase(expression e_old,Pvecteur pvg[], Pbase base_oldindex) compute the new expression for e_old in the new basis pvg[]
pips_debug(9, "considering expression %p:\n", e_old);
print_expression(e_old);
}
linear
complex
Definition at line 134 of file code_change_of_basis.c.
References call_arguments, expression_syntax, gen_free_list(), listexpres_to_listexpres_newbase(), make_vecteur_expression(), NORMALIZE_EXPRESSION, normalized_linear, normalized_linear_p, normalized_tag, pips_debug, ref, reference_indices, syntax_call, syntax_call_p, syntax_reference, syntax_reference_p, and vect_change_base().
Referenced by hyperplane(), listexpres_to_listexpres_newbase(), statement_newbase(), and unimodular().
cons listexpres_to_listexpres_newbase(cons *lex, Pvecteur pvg[], Pbase base_oldindex) compute the new list of expressions (cons lex) in the new basis pvg[]
f (ex_new != ex) free_expression(ex);
Definition at line 113 of file code_change_of_basis.c.
References CAR, CDR, CONS, EXPRESSION, expression_to_expression_newbase(), gen_nreverse(), and NIL.
Referenced by expression_to_expression_newbase(), and statement_newbase().
void scanning_base_to_vect(matrice G,int n,Pbase base,Pvecteur pvg[n]) compute G*base and put the result in a vector pvg[n] ex: 1 2 G = , base = (I, J) , alor pvg[2] = ((I+2J), (3I+4J))
3 4
Definition at line 52 of file code_change_of_basis.c.
References ACCESS, base, G, Svecteur::succ, Svecteur::var, and vect_add_elem().
Referenced by hyperplane(), local_tile_constraints(), tiling_transformation(), and unimodular().
statement_newbase(statement s, Pvecteur pvg[], Pbase base_oldindex) compute the new statement by performing the change of basis
Definition at line 195 of file code_change_of_basis.c.
References call_arguments, CAR, CDR, expression_to_expression_newbase(), forloop_body, forloop_condition, forloop_increment, forloop_initialization, free_expression(), gen_free_list(), instruction_block, instruction_call, instruction_forloop, instruction_goto, instruction_loop, instruction_tag, instruction_test, instruction_whileloop, is_instruction_block, is_instruction_call, is_instruction_forloop, is_instruction_goto, is_instruction_loop, is_instruction_test, is_instruction_unstructured, is_instruction_whileloop, listexpres_to_listexpres_newbase(), loop_body, loop_range, pips_internal_error, range_increment, range_lower, range_upper, s1, STATEMENT, statement_instruction, test_condition, test_false, test_true, whileloop_body, and whileloop_condition.
Referenced by code_generation().
Pvecteur vect_change_base(Pvecteur pv_old, Pvecteur pvg[], Pbase base_oldindex, Pbase base_newindex) compute the new vector in the new basis pvg[].
var is in base_oldindex
on bousille tranquillement le vecteur sur lequel on itere;-)
vect_erase_var(&pv_old,pv->var);
clean vector
Definition at line 73 of file code_change_of_basis.c.
References base_add_variable(), base_find_variable_rank(), BASE_NULLE, base_rm, entity_name_or_TCST(), Svecteur::succ, Svecteur::val, Svecteur::var, vect_add(), vect_dup(), vect_erase_var(), and vect_multiply().
Referenced by expression_to_expression_newbase(), hyperplane(), and unimodular().