PIPS
pnome-alloc.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include "linear_assert.h"
#include "boolean.h"
#include "arithmetique.h"
#include "vecteur.h"
#include "polynome.h"
+ Include dependency graph for pnome-alloc.c:

Go to the source code of this file.

Functions

Pmonome new_monome ()
 INTLIBRARY. More...
 
Ppolynome new_polynome ()
 allocation of an unitialized polynome (to avoid various direct unchecked call to malloc) More...
 
Pmonome make_monome (float coeff, Variable var, Value expo)
 Pmonome make_monome(float coeff, Variable var, Value expo) PRIVATE allocates space for, and creates, the monome "coeff*var^expo". More...
 
Ppolynome make_polynome (float coeff, Variable var, Value expo)
 Ppolynome make_polynome(float coeff, Variable var, Value expo) PRIVATE allocates space for, and creates, the polynome "coeff*var^expo". More...
 
Ppolynome monome_to_new_polynome (Pmonome pm)
 Ppolynome monome_to_new_polynome(Pmonome pm) PRIVATE allocates space for, and creates the polynomial containing the monomial pointed by pm, which is NOT duplicated but attached to the polynomial. More...
 
Pmonome monome_dup (Pmonome pm)
 Pmonome monome_dup(Pmonome pm) PRIVATE creates and returns a copy of pm. More...
 
void monome_rm (Pmonome *ppm)
 void monome_rm(Pmonome* ppm) PRIVATE frees space occupied by monomial *ppm returns *ppm pointing to MONOME_NUL !usage: monome_rm(&pm); More...
 
void polynome_rm (Ppolynome *ppp)
 void polynome_rm(Ppolynome* ppp) frees space occupied by polynomial *ppp returns *ppp pointing to POLYNOME_NUL !usage: polynome_rm(&pp); More...
 
Ppolynome polynome_free (Ppolynome pp)
 Ppolynome polynome_free(Ppolynome pp) frees space occupied by polynomial pp returns pp == POLYNOME_NUL !usage: polynome_rm(pp);. More...
 
Ppolynome polynome_dup (Ppolynome pp)
 Ppolynome polynome_dup(Ppolynome pp) creates and returns a copy of pp. More...
 

Function Documentation

◆ make_monome()

Pmonome make_monome ( float  coeff,
Variable  var,
Value  expo 
)

Pmonome make_monome(float coeff, Variable var, Value expo) PRIVATE allocates space for, and creates, the monome "coeff*var^expo".

Parameters
coeffoeff
varar
expoxpo

Definition at line 81 of file pnome-alloc.c.

82 {
83  if (coeff == 0)
84  return MONOME_NUL;
85 
86  Pmonome pm = new_monome();
87  monome_coeff(pm) = coeff;
88  if (value_zero_p(expo))
90  else
91  monome_term(pm) = vect_new(var, expo);
92 
93  return pm;
94 }
#define value_zero_p(val)
#define VALUE_ONE
Pmonome new_monome()
INTLIBRARY.
Definition: pnome-alloc.c:48
#define monome_term(pm)
#define monome_coeff(pm)
Macros definitions.
#define MONOME_NUL
Null/undefined, monomial/polynomial definitions.
#define TCST
VARIABLE REPRESENTANT LE TERME CONSTANT.
Pvecteur vect_new(Variable var, Value coeff)
Pvecteur vect_new(Variable var,Value coeff): allocation d'un vecteur colineaire au vecteur de base va...
Definition: alloc.c:110

References monome_coeff, MONOME_NUL, monome_term, new_monome(), TCST, VALUE_ONE, value_zero_p, and vect_new().

Referenced by make_polynome(), number_replaces_var(), polynome_decr(), polynome_incr(), polynome_scalar_add(), polynome_scalar_addition(), and polynome_sscanf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ make_polynome()

Ppolynome make_polynome ( float  coeff,
Variable  var,
Value  expo 
)

Ppolynome make_polynome(float coeff, Variable var, Value expo) PRIVATE allocates space for, and creates, the polynome "coeff*var^expo".

Parameters
coeffoeff
varar
expoxpo

Definition at line 100 of file pnome-alloc.c.

101 {
102  Pmonome m = make_monome(coeff, var, expo);
105  return p;
106 }
#define assert(ex)
Definition: newgen_assert.h:41
Ppolynome monome_to_new_polynome(Pmonome pm)
Ppolynome monome_to_new_polynome(Pmonome pm) PRIVATE allocates space for, and creates the polynomial ...
Definition: pnome-alloc.c:115
Pmonome make_monome(float coeff, Variable var, Value expo)
Pmonome make_monome(float coeff, Variable var, Value expo) PRIVATE allocates space for,...
Definition: pnome-alloc.c:81
#define MONOME_UNDEFINED_P(pm)

References assert, make_monome(), monome_to_new_polynome(), and MONOME_UNDEFINED_P.

Referenced by add_constraint_on_x(), apply_farkas(), complexity_float_add(), complexity_sigma(), create_farkas_poly(), enode_to_polynome(), evalue_to_polynome(), expression_to_polynome(), make_polynome_Xe(), make_single_var_complexity(), mapping_on_broadcast(), my_vecteur_to_polynome(), old_vecteur_to_polynome(), plc_make_proto(), polynome_power_n(), polynome_sum_of_power(), pvecteur_to_polynome(), reference_to_polynome(), sc_enumerate(), vecteur_mult(), and vecteur_to_polynome().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ monome_dup()

Pmonome monome_dup ( Pmonome  pm)

Pmonome monome_dup(Pmonome pm) PRIVATE creates and returns a copy of pm.

Parameters
pmm

Definition at line 132 of file pnome-alloc.c.

134 {
135  if (MONOME_NUL_P(pm))
136  return (MONOME_NUL);
137  else if (MONOME_UNDEFINED_P(pm))
138  return (MONOME_UNDEFINED);
139  else {
140  Pmonome pmd = new_monome();
141  monome_coeff(pmd) = monome_coeff(pm);
142  monome_term(pmd) = vect_dup(monome_term(pm));
143  return(pmd);
144  }
145 }
#define MONOME_NUL_P(pm)
#define MONOME_UNDEFINED
Pvecteur vect_dup(Pvecteur v_in)
Pvecteur vect_dup(Pvecteur v_in): duplication du vecteur v_in; allocation de et copie dans v_out;.
Definition: alloc.c:51

References monome_coeff, MONOME_NUL, MONOME_NUL_P, monome_term, MONOME_UNDEFINED, MONOME_UNDEFINED_P, new_monome(), and vect_dup().

Referenced by monome_gen_copy_tree(), polynome_dup(), polynome_monome_add(), polynome_monome_addition(), and polynome_roots().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ monome_rm()

void monome_rm ( Pmonome ppm)

void monome_rm(Pmonome* ppm) PRIVATE frees space occupied by monomial *ppm returns *ppm pointing to MONOME_NUL !usage: monome_rm(&pm);

Parameters
ppmpm

Definition at line 154 of file pnome-alloc.c.

156 {
157  if ((!MONOME_NUL_P(*ppm)) && (!MONOME_UNDEFINED_P(*ppm))) {
158  vect_rm((Pvecteur) monome_term(*ppm));
159  free((char *) *ppm);
160  }
161  *ppm = MONOME_NUL;
162 }
void free(void *)
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
void vect_rm(Pvecteur v)
void vect_rm(Pvecteur v): desallocation des couples de v;
Definition: alloc.c:78

References free(), MONOME_NUL, MONOME_NUL_P, monome_term, MONOME_UNDEFINED_P, and vect_rm().

Referenced by do_solve_hardware_constraints_on_volume(), monome_gen_free(), monome_monome_div(), monome_monome_mult(), polynome_decr(), polynome_free(), polynome_incr(), polynome_rm(), polynome_roots(), polynome_scalar_add(), polynome_scalar_addition(), polynome_sscanf(), and polynome_var_subst().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ monome_to_new_polynome()

Ppolynome monome_to_new_polynome ( Pmonome  pm)

Ppolynome monome_to_new_polynome(Pmonome pm) PRIVATE allocates space for, and creates the polynomial containing the monomial pointed by pm, which is NOT duplicated but attached to the polynomial.

Parameters
pmm

Definition at line 115 of file pnome-alloc.c.

116 {
117  if (MONOME_NUL_P(pm))
118  return POLYNOME_NUL;
119  else if (MONOME_UNDEFINED_P(pm))
120  return POLYNOME_UNDEFINED;
121 
122  Ppolynome pp = new_polynome();
123  polynome_monome(pp) = pm;
125  return pp;
126 }
Ppolynome new_polynome()
allocation of an unitialized polynome (to avoid various direct unchecked call to malloc)
Definition: pnome-alloc.c:64
#define POLYNOME_NUL
#define POLYNOME_UNDEFINED
#define polynome_monome(pp)
#define polynome_succ(pp)

References MONOME_NUL_P, MONOME_UNDEFINED_P, new_polynome(), polynome_monome, POLYNOME_NUL, polynome_succ, and POLYNOME_UNDEFINED.

Referenced by make_polynome(), number_replaces_var(), polynome_dup(), polynome_gen_read(), polynome_monome_add(), and polynome_monome_addition().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ new_monome()

Pmonome new_monome ( void  )

INTLIBRARY.

POLYNOME_INCLUDED.

allocation of an unitialized monome (to avoid various direct unchecked call to malloc)

(void) fprintf(stderr, "%10.3f MB", (sbrk(0) - etext)/(double)(1 << 20));

xit(-1);

Definition at line 48 of file pnome-alloc.c.

49 {
50  Pmonome pm = (Pmonome) malloc(sizeof(Smonome));
51  if (pm == NULL) {
52  (void) fprintf(stderr,"new_monome: Out of memory space\n");
53  /* (void) fprintf(stderr, "%10.3f MB",
54  (sbrk(0) - etext)/(double)(1 << 20)); */
55  abort();
56  /*exit(-1);*/
57  }
58  return pm;
59 }
void * malloc(YYSIZE_T)
#define abort()
Definition: misc-local.h:53
struct Smonome * Pmonome
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...

References abort, fprintf(), and malloc().

Referenced by make_monome(), monome_del_var(), monome_dup(), and monome_monome_div().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ new_polynome()

Ppolynome new_polynome ( void  )

allocation of an unitialized polynome (to avoid various direct unchecked call to malloc)

(void) fprintf(stderr, "%10.3f MB", (sbrk(0) - etext)/(double)(1 << 20));

xit(-1);

Definition at line 64 of file pnome-alloc.c.

65 {
66  Ppolynome pp = (Ppolynome) malloc(sizeof(Spolynome));
67  if (pp == NULL) {
68  (void) fprintf(stderr,"new_polynome: Out of memory space\n");
69  /* (void) fprintf(stderr, "%10.3f MB",
70  (sbrk(0) - etext)/(double)(1 << 20)); */
71  abort();
72  /*exit(-1);*/
73  }
74  return pp;
75 }
struct Spolynome * Ppolynome

References abort, fprintf(), and malloc().

Referenced by monome_to_new_polynome().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ polynome_dup()

Ppolynome polynome_dup ( Ppolynome  pp)

Ppolynome polynome_dup(Ppolynome pp) creates and returns a copy of pp.

Parameters
ppp

Definition at line 211 of file pnome-alloc.c.

213 {
214  Ppolynome ppdup, curpp;
215 
216  if (POLYNOME_NUL_P(pp))
217  return (POLYNOME_NUL);
218  else if (POLYNOME_UNDEFINED_P(pp))
219  return (POLYNOME_UNDEFINED);
220  else {
222  curpp = ppdup;
223  while ((pp = polynome_succ(pp)) != POLYNOME_NUL) {
224  polynome_succ(curpp) =
226  curpp = polynome_succ(curpp);
227  }
228  return (ppdup);
229  }
230 }
Pmonome monome_dup(Pmonome pm)
Pmonome monome_dup(Pmonome pm) PRIVATE creates and returns a copy of pm.
Definition: pnome-alloc.c:132
#define POLYNOME_UNDEFINED_P(pp)
#define POLYNOME_NUL_P(pp)

References monome_dup(), monome_to_new_polynome(), polynome_monome, POLYNOME_NUL, POLYNOME_NUL_P, polynome_succ, POLYNOME_UNDEFINED, and POLYNOME_UNDEFINED_P.

Referenced by complexity_dup(), cutting_conditions(), do_computation_intensity(), is_not_trivial_p(), make_causal_external(), make_causal_internal(), old_polynome_to_sc(), plc_make_distance(), polynome_add(), polynome_addition(), polynome_equal(), polynome_gen_copy_tree(), polynome_monome_div(), polynome_monome_mult(), polynome_nth_root(), polynome_power_n(), polynome_roots(), polynome_sum_of_power(), polynome_to_new_complexity(), polynome_to_sc(), prgm_mapping(), prototype_var_subst(), search_scc_bdt(), and valuer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ polynome_free()

Ppolynome polynome_free ( Ppolynome  pp)

Ppolynome polynome_free(Ppolynome pp) frees space occupied by polynomial pp returns pp == POLYNOME_NUL !usage: polynome_rm(pp);.

correct?

Parameters
ppp

Definition at line 191 of file pnome-alloc.c.

193 {
194  Ppolynome pp1 = pp, pp2;
195 
196  if (!POLYNOME_UNDEFINED_P(pp)) {
197  while (pp1 != POLYNOME_NUL) {
198  pp2 = polynome_succ(pp1);
199  monome_rm(&polynome_monome(pp1));
200  free((char *) pp1); /* correct? */
201  pp1 = pp2;
202  }
203  }
204  return POLYNOME_NUL;
205 }
void monome_rm(Pmonome *ppm)
void monome_rm(Pmonome* ppm) PRIVATE frees space occupied by monomial *ppm returns *ppm pointing to M...
Definition: pnome-alloc.c:154

References free(), monome_rm(), polynome_monome, POLYNOME_NUL, polynome_succ, and POLYNOME_UNDEFINED_P.

Referenced by complexity_mult(), complexity_stats_add(), do_group_statement_constant(), polynome_addition(), polynome_monome_addition(), polynome_scalar_multiply(), and valuer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ polynome_rm()

void polynome_rm ( Ppolynome ppp)

void polynome_rm(Ppolynome* ppp) frees space occupied by polynomial *ppp returns *ppp pointing to POLYNOME_NUL !usage: polynome_rm(&pp);

correct?

Parameters
ppppp

Definition at line 170 of file pnome-alloc.c.

172 {
173  Ppolynome pp1 = *ppp, pp2;
174 
175  if (!POLYNOME_UNDEFINED_P(*ppp)) {
176  while (pp1 != POLYNOME_NUL) {
177  pp2 = polynome_succ(pp1);
178  monome_rm(&polynome_monome(pp1));
179  free((char *) pp1); /* correct? */
180  pp1 = pp2;
181  }
182  *ppp = POLYNOME_NUL;
183  }
184 }

References free(), monome_rm(), polynome_monome, POLYNOME_NUL, polynome_succ, and POLYNOME_UNDEFINED_P.

Referenced by complexity_float_add(), complexity_sigma(), cutting_conditions(), do_computation_intensity(), do_solve_hardware_constraints_on_volume(), expression_to_polynome(), make_causal_external(), make_causal_internal(), make_single_var_complexity(), number_replaces_var(), polynome_add(), polynome_gen_free(), polynome_monome_add(), polynome_monome_addition(), polynome_mult(), polynome_nth_root(), polynome_power_n(), polynome_roots(), polynome_scalar_mult(), polynome_sigma(), polynome_sum_of_power(), polynome_var_subst(), power_op_handler(), reference_to_polynome(), and simplify_expression().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: