6 #ifndef polynome_header_included
7 #define polynome_header_included
135 #ifndef POLYNOME_INCLUDED
136 #define POLYNOME_INCLUDED
150 #define monome_coeff(pm) ((pm)->coeff)
151 #define monome_term(pm) ((pm)->term)
152 #define polynome_monome(pp) ((pp)->monome)
153 #define polynome_succ(pp) ((pp)->succ)
157 #define is_single_monome(pp) ((!POLYNOME_NUL_P(pp)) && (POLYNOME_NUL_P(polynome_succ(pp))))
159 #define monome_constant_new(coeff) make_monome(coeff, TCST, 1)
160 #define monome_power1_new(coeff, var) make_monome(coeff, var, 1)
163 #define MONOME_NUL ((Pmonome) -256)
164 #define MONOME_NUL_P(pm) ((pm)==MONOME_NUL)
165 #define MONOME_UNDEFINED ((Pmonome) -252)
166 #define MONOME_UNDEFINED_P(pm) ((pm)==MONOME_UNDEFINED)
167 #define MONOME_CONSTANT_P(pm) (term_cst((pm)->term))
169 #define POLYNOME_NUL ((Ppolynome) NULL)
170 #define POLYNOME_NUL_P(pp) ((pp)==POLYNOME_NUL)
171 #define POLYNOME_UNDEFINED ((Ppolynome) -248)
172 #define POLYNOME_UNDEFINED_P(pp) ((pp)==POLYNOME_UNDEFINED)
174 #define MONOME_COEFF_MULTIPLY_SYMBOL "*"
175 #define MONOME_VAR_MULTIPLY_SYMBOL "."
176 #define POLYNOME_NUL_SYMBOL "0"
177 #define POLYNOME_UNDEFINED_SYMBOL "<polynome undefined>"
178 #define MONOME_NUL_SYMBOL "<monome nul>"
179 #define MONOME_UNDEFINED_SYMBOL "<monome undefined>"
181 #define MAX_NAME_LENGTH 50
183 #define PNOME_MACH_EPS 1E-8
184 #define PNOME_FLOAT_N_DECIMALES 2
185 #define PNOME_FLOAT_TO_EXP_LEVEL 1E8
186 #define PNOME_FLOAT_TO_FRAC_LEVEL 9
236 extern double intpower(
double ,
int );
bool monome_colin(Pmonome, Pmonome)
bool monome_colin(Pmonome pm1, Pmonome pm2) PRIVATE returns true if the two monomials are "colinear":...
bool polynome_check(Ppolynome)
bool polynome_check(Ppolynome pp) Return true if all's right.
void polynome_add(Ppolynome *, Ppolynome)
void polynome_add(Ppolynome* ppp, Ppolynome pp2) (*ppp) = (*ppp) + pp2.
bool is_polynome_a_monome(Ppolynome)
bool is_polynome_a_monome(Ppolynome pp) Return true if the pp is just a monome.
bool polynome_equal(Ppolynome, Ppolynome)
bool polynome_equal(Ppolynome pp1, Ppolynome pp2) return (pp1 == pp2) >>>TO BE CONTINUED<<<
Ppolynome new_polynome(void)
allocation of an unitialized polynome (to avoid various direct unchecked call to malloc)
Ppolynome make_polynome(float, Variable, Value)
Ppolynome make_polynome(float coeff, Variable var, Value expo) PRIVATE allocates space for,...
void polynome_negate(Ppolynome *)
pnome-unaires.c
Ppolynome vecteur_to_polynome(Pvecteur)
===========================================================================
float polynome_TCST(Ppolynome)
float polynome_TCST(Ppolynome pp) returns the constant term of polynomial pp.
Ppolynome polynome_incr(Ppolynome)
Ppolynome polynome_incr(Ppolynome pp) returns pp + 1.
void monome_fprint(FILE *, Pmonome, Pbase, bool, char *(*)(Variable))
char * polynome_sprint(Ppolynome, char *(*)(Variable), int(*)(Pvecteur *, Pvecteur *))
void monome_rm(Pmonome *)
void monome_rm(Pmonome* ppm) PRIVATE frees space occupied by monomial *ppm returns *ppm pointing to M...
Ppolynome polynome_nth_root(Ppolynome, int)
computes the n-root of polynomial if possible, that is if all exponents are multiple of n return POLY...
Ppolynome polynome_monome_addition(Ppolynome, Pmonome)
Ppolynome polynome_monome_addition(Ppolynome pp, Pmonome pm) PRIVATE Add monomial pm to polynomial pp...
void polynome_monome_add(Ppolynome *, Pmonome)
pnome-bin.c
Ppolynome polynome_opposed(Ppolynome)
Ppolynome polynome_opposed(Ppolynome pp); changes sign of polynomial pp.
Ppolynome polynome_dup(Ppolynome)
Ppolynome polynome_dup(Ppolynome pp) creates and returns a copy of pp.
void polynome_fprint(FILE *, Ppolynome, char *(*)(Variable), int(*)(Pvecteur *, Pvecteur *))
Ppolynome polynome_sort(Ppolynome *, int(*)(Pvecteur *, Pvecteur *))
Ppolynome polynome_var_subst(Ppolynome, Variable, Ppolynome)
pnome-reduc.c
Ppolynome polynome_mult(Ppolynome, Ppolynome)
Ppolynome polynome_mult(Ppolynome pp1, Ppolynome pp2) returns pp1 * pp2.
Ppolynome polynome_factorize(Ppolynome, Variable, int)
Ppolynome polynome_factorize(Ppolynome pp, Variable var, int n) returns the (polynomial) coefficient ...
Ppolynome polynome_scalar_multiply(Ppolynome, double)
Pmonome monome_dup(Pmonome)
Pmonome monome_dup(Pmonome pm) PRIVATE creates and returns a copy of pm.
Pbase polynome_used_var(Ppolynome, int(*)(Pvecteur *, Pvecteur *))
Ppolynome polynome_sum_of_power(Ppolynome, int)
Ppolynome polynome_sum_of_power(Ppolynome ppsup, int p) calculates the sum of i^p for i=1 to (ppsup),...
int polynome_max_degree(Ppolynome)
int polynome_max_degree(Ppolynome pp) returns the degree of polynomial pp Let's hope there aren't too...
Pmonome monome_del_var(Pmonome, Variable)
pnome-private.c
int default_is_inferior_pvarval(Pvecteur *, Pvecteur *)
bool default_is_inferior_pvarval(Pvecteur * pvarval1, Pvecteur * pvarval2) return true if var1 is bef...
Pmonome new_monome(void)
POLYNOME_INCLUDED.
void polynome_chg_var(Ppolynome *, Variable, Variable)
void polynome_chg_var(Ppolynome *ppp, Variable v_old, Variable v_new) replace the variable v_old by v...
void float_to_frac(double, char **)
pnome-io.c
float Bernouilli(int)
float Bernouilli(int i) PRIVATE returns Bi = i-th Bernouilli number
Ppolynome polynome_div(Ppolynome, Ppolynome)
Ppolynome polynome_div(Ppolynome pp1, Ppolynome pp2) returns p = pp1 / pp2.
Ppolynome polynome_decr(Ppolynome)
Ppolynome polynome_decr(Ppolynome pp) returns pp - 1.
bool polynome_constant_p(Ppolynome)
bool polynome_constant_p(Ppolynome pp) return true if pp is a constant polynomial (including null pol...
double intpower(double, int)
double intpower(double d, int n) returns d^n for all integers n
void good_polynome_assert(char *,...)
void good_polynome_assert(va_alist) Check if the second argument is a valid polynomial.
int polynome_degree(Ppolynome, Variable)
int polynome_degree(Ppolynome pp, Variable var) returns the degree of polynomial pp viewed as a polyn...
bool is_inferior_monome(Pmonome, Pmonome, int(*)(Pvecteur *, Pvecteur *))
Ppolynome polynome_sigma(Ppolynome, Variable, Ppolynome, Ppolynome)
Ppolynome polynome_sigma(Ppolynome pp, Variable var, Ppolynome ppinf, ppsup) returns the sum of pp wh...
struct Spolynome Spolynome
Ppolynome polynome_sscanf(char *, Variable(*)(Variable))
Ppolynome polynome_sscanf(char *sp, (*name_to_variable)()) converts into polynomial structure the exp...
bool monome_check(Pmonome)
bool monome_check(Pmonome pm) Return true if all's right.
Ppolynome monome_to_new_polynome(Pmonome)
Ppolynome monome_to_new_polynome(Pmonome pm) PRIVATE allocates space for, and creates the polynomial ...
Ppolynome number_replaces_var(Ppolynome, Variable, double)
void polynome_rm(Ppolynome *)
void polynome_rm(Ppolynome* ppp) frees space occupied by polynomial *ppp returns *ppp pointing to POL...
bool polynome_contains_var(Ppolynome, Variable)
bool polynome_contains_var(Ppolynome pp, Variable var) PRIVATE returns true if variable var is in pol...
struct Spolynome * Ppolynome
int factorielle(int)
int factorielle (int n) PRIVATE returns n!
void polynome_scalar_add(Ppolynome *, double)
char * monome_sprint(Pmonome, Pbase, bool, char *(*)(Variable))
int default_is_inferior_varval(Pvecteur, Pvecteur)
bool default_is_inferior_varval(Pvecteur varval1, Pvecteur varval2) return true if var1 is before var...
Ppolynome polynome_addition(Ppolynome, Ppolynome)
Ppolynome polynome_addition(Ppolynome pp, Ppolynome pp2) pp = pp + pp2.
void polynome_error(const char *, char *,...)
pnome-error.c
Pmonome monome_monome_div(Pmonome, Pmonome)
Pmonome monome_monome_div(Pmonome pm1, Pmonome pm2) PRIVATE (pm1) = (pm1) / pm2.
Ppolynome polynome_free(Ppolynome)
Ppolynome polynome_free(Ppolynome pp) frees space occupied by polynomial pp returns pp == POLYNOME_NU...
Ppolynome polynome_monome_div(Ppolynome, Pmonome)
Ppolynome polynome_monome_div(Ppolynome pp, Pmonome pm) PRIVATE returns p = pp / pm.
Pvecteur polynome_roots(Ppolynome, Variable)
pnome-root.c
int default_is_inferior_var(Variable, Variable)
bool default_is_inferior_var(Variable var1, Variable var2) return true if var1 is before var2,...
Ppolynome polynome_scalar_addition(Ppolynome, double)
Pmonome make_monome(float, Variable, Value)
Pmonome make_monome(float coeff, Variable var, Value expo) PRIVATE allocates space for,...
Ppolynome polynome_monome_mult(Ppolynome, Pmonome)
Ppolynome polynome_monome_mult(Ppolynome pp, Pmonome pm) PRIVATE returns pp * pm.
bool monome_equal(Pmonome, Pmonome)
bool monome_equal(Pmonome pm1, Pmonome pm2) PRIVATE returns true if the two monomials are equal same ...
void polynome_scalar_mult(Ppolynome *, double)
pnome-scal.c
Ppolynome polynome_power_n(Ppolynome, int)
Ppolynome polynome_power_n(Ppolynome pp, int n) returns pp ^ n (n>=0)
char * default_variable_name(Variable)
char *default_variable_name(Variable var) returns for variable var the name "Vxxxx" where xxxx are fo...
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....