55 #include "pips_config.h"
87 "expression is already normalized\n");
195 "Is it an undeclared variable?\n",
200 pips_user_warning(
"Reference to entity \"%s\" cannot be normalized because of its type tag %d\n",
348 val =
MIN(val1, val2);
351 val =
MAX(val1, val2);
359 "0 divide in modulo evaluation\n");
382 val =
ipow(val1,val2);
void free_normalized(normalized p)
normalized make_normalized(enum normalized_utype tag, void *val)
normalized make_normalized_linear(Pvecteur _field_)
normalized make_normalized_complex(void)
#define VALUE_TO_INT(val)
#define MIN(x, y)
minimum and maximum if they are defined somewhere else, they are very likely to be defined the same w...
bool get_bool_property(const string)
FC 2015-07-20: yuk, moved out to prevent an include cycle dependency include "properties....
void gen_multi_recurse(void *o,...)
Multi recursion visitor function.
void gen_null(__attribute__((unused)) void *unused)
Ignore the argument.
bool gen_true(__attribute__((unused)) gen_chunk *unused)
Return true and ignore the argument.
#define ENDP(l)
Test if a list is empty.
size_t gen_length(const list l)
#define CAR(pcons)
Get the value of the first element of a list.
#define CDR(pcons)
Get the list less its first element.
int vect_size(Pvecteur v)
package vecteur - reductions
#define pips_user_warning
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
#define pips_internal_error
#define user_error(fn,...)
#define user_warning(fn,...)
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
static void norm_all_rewrite(expression e)
Look for affine expressions and encode them as vectors when possible.
Pvecteur expression_to_affine(expression e)
normalized NormalizeCall(call c)
normalized NormalizeReference(reference r)
void normalize_all_expressions_of(void *obj)
static normalized normalize_intrinsic(entity f, list la)
static normalized normalize_call(call c)
normalized NormalizeIntrinsic(entity e, list la)
normalized binary_to_normalized(list la, int op)
normalized normalize_reference(reference r)
normalized NormalizeCast(cast c)
void normalize_first_expressions_of(void *obj)
bool EvalNormalized(normalized n, int *pv)
normalized NormalizeSyntax(syntax s)
static normalized normalize_constant(constant c)
static bool normalized_constant_p(normalized n, int *pv)
normalized NormalizeExpression(expression e)
normalize.c
static bool normalize_first_expressions_filter(expression e)
void free_expression_normalized(expression e)
normalized NormalizeConstant(constant c)
static normalized _NormalizeExpression(expression e)
this function shouldn't be called.
void unnormalize_expression(void *st)
void unnormalize_expression(expression exp): puts all the normalized field of expressions in "st" to ...
void FreeNormalized(normalized n)
#define ENTITY_PLUS_UPDATE_P(e)
#define ENTITY_DIVIDE_P(e)
#define ENTITY_POWER_P(e)
#define ENTITY_MINUS_P(e)
#define ENTITY_UNARY_MINUS_P(e)
#define ENTITY_MULTIPLY_P(e)
#define ENTITY_PLUS_C_P(e)
#define entity_variable_p(e)
An entity_variable_p(e) may hide a typedef and hence a functional type.
#define ENTITY_MINUS_C_P(e)
#define ENTITY_MINUS_UPDATE_P(e)
#define ENTITY_MODULO_P(e)
const char * entity_user_name(entity e)
Since entity_local_name may contain PIPS special characters such as prefixes (label,...
bool entity_enum_variable_p(entity e)
bool top_level_entity_p(entity e)
Check if the scope of entity e is global.
bool entity_pointer_p(entity e)
int ipow(int vg, int vd)
FI: such a function should exist in Linear/arithmetique.
type expression_to_type(expression)
For an array declared as int a[10][20], the type returned for a[i] is int [20].
bool type_equal_p(type, type)
bool entity_integer_scalar_p(entity)
for variables (like I), not constants (like 1)! use integer_constant_p() for constants
#define type_functional_p(x)
#define normalized_linear_(x)
#define normalized_undefined
#define expression_domain
newgen_execution_domain_defined
#define value_constant(x)
#define syntax_reference(x)
#define normalized_complex_p(x)
#define normalized_linear_p(x)
#define reference_variable(x)
#define symbolic_constant(x)
@ is_syntax_sizeofexpression
#define value_symbolic(x)
#define EXPRESSION(x)
EXPRESSION.
#define cast_expression(x)
#define constant_int_p(x)
#define expression_normalized(x)
#define reference_indices(x)
#define call_arguments(x)
#define normalized_undefined_p(x)
#define normalized_linear(x)
#define expression_syntax(x)
#define entity_domain_number(x)
#define type_variable_p(x)
#define entity_domain
newgen_syntax_domain_defined
#define entity_initial(x)
Value b1
booleen indiquant quel membre est en cours d'analyse
void vect_chg_sgn(Pvecteur v)
void vect_chg_sgn(Pvecteur v): multiplie v par -1
Pvecteur vect_multiply(Pvecteur v, Value x)
Pvecteur vect_multiply(Pvecteur v, Value x): multiplication du vecteur v par le scalaire x,...
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
The structure used to build lists in NewGen.
#define TCST
VARIABLE REPRESENTANT LE TERME CONSTANT.
#define VECTEUR_NUL
DEFINITION DU VECTEUR NUL.
#define VECTEUR_UNDEFINED
struct Svecteur * Pvecteur
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
Pvecteur vect_dup(Pvecteur v_in)
Pvecteur vect_dup(Pvecteur v_in): duplication du vecteur v_in; allocation de et copie dans v_out;.
Pvecteur vect_new(Variable var, Value coeff)
Pvecteur vect_new(Variable var,Value coeff): allocation d'un vecteur colineaire au vecteur de base va...
void vect_rm(Pvecteur v)
void vect_rm(Pvecteur v): desallocation des couples de v;
Pvecteur vect_add(Pvecteur v1, Pvecteur v2)
package vecteur - operations binaires
Pvecteur vect_substract(Pvecteur v1, Pvecteur v2)
Pvecteur vect_substract(Pvecteur v1, Pvecteur v2): allocation d'un vecteur v dont la valeur est la di...