/*************************************************************************************************************************************/ /* */ /* Q U E L Q U E S D E F I N T I O N S U T I L E S : */ /* */ /* */ /* Author of '$xtc/INCLUDES.01$I' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20051108171308). */ /* */ /*************************************************************************************************************************************/ #include <stdlib.h> /* Introduit le 20130129101445... */ #include <stdio.h> #include <string.h> /* Introduit le 20141208105602... */ #include <math.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> /* Introduits le 20151227105222... */ #define BIT \ 1 \ /* Introduit le 20151202111119... */ #define OK \ 0 #define NOK \ (OK+1) /* Introduit le 20130129100912... */ #define FAUX \ (0 == 1) #define VRAI \ (1 == 1) /* Les definitions 'VRAI' et 'FAUX' furent introduites le 20080307101318 et "modernisees" */ /* le 20130128092957... */ #define PI \ 3.141592653589793 #define PI_SUR_2 \ (PI/2) #define PI_SUR_3 \ (PI/3) #define PI_SUR_4 \ (PI/4) #define DEUX_PI \ (2*PI) #define COND(condition,valeur_si_vrai,valeur_si_faux) \ ((condition) ? (valeur_si_vrai) : (valeur_si_faux)) #define IFOU(condition_1,condition_2) \ ((condition_1) || (condition_2)) #define IFET(condition_1,condition_2) \ ((condition_1) && (condition_2)) #define PARE(x) \ (x) \ /* Introduit le 20101227094326... */ #define SE13(x1,x2,x3) \ (x1) #define SE23(x1,x2,x3) \ (x2) #define SE33(x1,x2,x3) \ (x3) /* Introduits le 20130128092957... */ #define IFEQ(x,a) \ ((x) == (a)) /* Introduit le 20120702135449... */ #define IFNE(x,a) \ ((x) != (a)) #define IFGE(x,a) \ ((x) >= (a)) #define IZNE(x) \ IFNE(x,0) #define IZGE(x) \ IFGE(x,0) #define OUIN(a,b) \ ((a)|(b)) #define OUEX(a,b) \ ((a)^(b)) #define ETLO(a,b) \ ((a)&(b)) /* Introduits le 20130514142719... */ #define DECD(a,b) \ ((a)>>(b)) #define DECG(a,b) \ ((a)<<(b)) /* Introduits le 20130514143845... */ #define ABSO(x) \ COND(((x)>0),NEUT(x),NEGA(x)) #define NEUT(x) \ (x) #define NEGA(x) \ SOUS(0,x) #define MIN2(a,b) \ COND(((a)<=(b)),(a),(b)) #define MAX2(a,b) \ COND(((a)>=(b)),(a),(b)) #define ADD2(a,b) \ ((a)+(b)) #define ADD3(a,b,c) \ ADD2(a,ADD2(b,c)) #define ADD4(a,b,c,d) \ ADD2(a,ADD3(b,c,d)) #define SOUS(a,b) \ ((a)-(b)) #define bSOU(a,b) \ SOUS(a,b) \ /* Introduit le 20101227094326... */ #define MUL2(a,b) \ ((a)*(b)) #define LIN3(a,x,b,y,c,z,t) \ ADD4(MUL2(a,x),MUL2(b,y),MUL2(c,z),t) \ /* Introduit le 20220429104932 pour 'v $xtc/NoeudTrefle.01$c LIN3'... */ #define GRO2(a) \ MUL2(2,a) #define GRO3(a) \ MUL2(3,a) #define GRO4(a) \ MUL2(4,a) /* Introduits le 20101231090947... */ #define EXP2(x) \ MUL2(x,x) #define EXP3(x) \ MUL2(x,EXP2(x)) #define EXP4(x) \ MUL2(x,EXP3(x)) #define EXP5(x) \ MUL2(x,EXP4(x)) #define EXP6(x) \ MUL2(x,EXP5(x)) #define EXP7(x) \ MUL2(x,EXP6(x)) #define EXP8(x) \ MUL2(x,EXP7(x)) #define DIVI(a,b) \ ((a)/(b)) #define REST(a,b) \ ((a)%(b)) #define INVE(a) \ DIVI(1,a) #define MOIT(a) \ DIVI(a,2) #define AXPB(a,x,b) \ ADD2(MUL2(a,x),b) #define BARY(origine,extremite,lambda) \ ADD2(MUL2(SOUS(1,lambda),origine),MUL2(lambda,extremite)) #define LIZ2(a,x,b,y) \ ADD2(MUL2(a,x),MUL2(b,y)) /* Introduit le 20220415093338 pour 'v $xtc/Peano_SurjectionFractale.23$vv$c LIZ2'). */ #define EST_PAIR(nombre) \ (REST(nombre,2) == 0) #define EST_IMPAIR(nombre) \ (REST(nombre,2) != 0) /* Introduit le 20210208121417... */ #define HOMO(x,origine1,extremite1,origine2,extremite2) \ ADD2(SCAL(SOUS(x,origine1),SOUS(extremite1,origine1),SOUS(extremite2,origine2)),origine2) #define SCAL(x,ancien_intervalle,nouvel_intervalle) \ SCAZ(x,ancien_intervalle,nouvel_intervalle,x) #define SCAZ(x,ancien_intervalle,nouvel_intervalle,exception) \ MUL2(DIVI(FLOT(x),FLOT(ancien_intervalle)),FLOT(nouvel_intervalle)) #define DET1(a11) \ NEUT(a11) #define DET2(a11,a12,a21,a22) \ NEUT(ADD2(MUL2(NEUT(a11),DET1(a22)) \ ,MUL2(NEGA(a12),DET1(a21)) \ ) \ ) #define DET3(a11,a12,a13,a21,a22,a23,a31,a32,a33) \ NEUT(ADD3(MUL2(NEUT(a11),DET2(a22,a23,a32,a33)) \ ,MUL2(NEGA(a12),DET2(a21,a23,a31,a33)) \ ,MUL2(NEUT(a13),DET2(a21,a22,a31,a32)) \ ) \ ) #define DET4(a11,a12,a13,a14,a21,a22,a23,a24,a31,a32,a33,a34,a41,a42,a43,a44) \ NEUT(ADD4(MUL2(NEUT(a11),DET3(a22,a23,a24,a32,a33,a34,a42,a43,a44)) \ ,MUL2(NEGA(a12),DET3(a21,a23,a24,a31,a33,a34,a41,a43,a44)) \ ,MUL2(NEUT(a13),DET3(a21,a22,a24,a31,a32,a34,a41,a42,a44)) \ ,MUL2(NEGA(a14),DET3(a21,a22,a23,a31,a32,a33,a41,a42,a43)) \ ) \ ) #define HORNER_1_02(x,a,b,c) \ (((a)*(x)+(b))*(x)+(c)) \ /* Methode de Horner pour les polynomes a une variable (1) du deuxieme (2) degre */ \ /* (introduite le 20130415162125)... */ #define HORNER_1_03(x,a,b,c,d) \ ((((a)*(x)+(b))*(x)+(c))*(x)+(d)) \ /* Methode de Horner pour les polynomes a une variable (1) du troisieme (3) degre */ \ /* (introduite le 20130415162125)... */ extern int atoi(); extern long int atol(); extern char *getenv(); #define gGet(valeur_de_la_variable,nom_de_la_variable,valeur_par_defaut) \ { \ valeur_de_la_variable = COND((getenv(nom_de_la_variable) == 0),valeur_par_defaut,atoi(getenv(nom_de_la_variable))); \ } \ /* Procedure Generale de recuperation de variables d'environnement entieres courtes */ \ /* (introduite le 20130205133824). */ #define Get(valeur_de_la_variable,nom_de_la_variable) \ { \ valeur_de_la_variable = atoi(getenv(nom_de_la_variable)); \ } \ /* Procedure de recuperation de variables d'environnement entiere courte. */ #define gGetl(valeur_de_la_variable,nom_de_la_variable,valeur_par_defaut) \ { \ valeur_de_la_variable = COND((getenv(nom_de_la_variable) == 0),valeur_par_defaut,atol(getenv(nom_de_la_variable))); \ } \ /* Procedure Generale de recuperation de variables d'environnement entieres longues */ \ /* (introduite le 20130314113433). */ #define Getl(valeur_de_la_variable,nom_de_la_variable) \ { \ valeur_de_la_variable = atol(getenv(nom_de_la_variable)); \ } \ /* Procedure de recuperation de variables d'environnement entieres longues (introduite le */ \ /* 20130314113433). */ #define INDEX0 \ 0 \ /* Introduit le 20130128155254... */ #define IndexVersNombre(index) \ (((index)-INDEX0)+1) #define NombreVersIndex(nombre) \ (INDEX0+((nombre)-1)) /* Introduit le 20130204182939... */ #define NBITOC \ 8 \ /* Introduit le 20130509210504... */ #define NOCMO \ 4 \ /* Introduit le 20151203144126... */ #define NBITMO \ (NOCMO*NBITOC) \ /* Introduit le 20151203144126... */ #define MASKO \ 255 \ /* Introduit le 20141214175319... */ #define NOIR \ 0 #define BLANC \ MASKO #define COULEURS \ ADD2(SOUS(BLANC,NOIR),1)