1 /**************************/
3 /**************************/
5 /**********************************************************************/
7 /**********************************************************************/
12 /**********************************************************************/
14 /**********************************************************************/
16 /**********************************************************************/
18 /**********************************************************************/
22 static char *eqt_bench
[] =
24 "h+i*64+j*128+320-(h+i*64+j*128+64)" ,"256" ,
27 "h+i*64+j*128+64-0+4*k" ,"h+i*64+j*128+k*4+64" ,
28 "(i-1)*4+j" ,"j+(i-1)*4" ,
29 "(-i+j*1024+5119)-(-i+j*1024+1023)" ,"4096" ,
30 "1588211555" ,"1588211555" ,
31 "(-i+j*1024+k*4096+l*524288+1.0496e+06)-(-i+j*1024+k*4096+l*524288+1023)", "1048577",
32 "(i+j+384)-(i+j+640)" ,"-256" ,
33 "(i+j+512)-(i+j+256)" ,"256" ,
38 /***** New function from USER ****************************************/
40 double trunc (double p
)
45 double sum (double p
, double q
)
51 double max (double p
, double q
)
67 double mycos (double p
)
72 /******** Main function ***********************************/
73 int main (int argc
, char **argv
)
80 eqt_node
*node
= NULL
;
86 ecx
=eqt_init (EQT_NB_VARS
);
88 eqt_addfunction2(ecx
, "max", &max
) ;
89 eqt_addfunction (ecx
, "ln", &ln
) ;
90 eqt_addfunction (ecx
, "cos", &mycos
) ;
92 /******* Initialisation des parametres generaux *******/
101 doTree
= !strcmp(str2
,"tree");
106 /*- Test arithmetique -*/
107 node
= eqt_create(ecx
, str
) ;
109 printf("error empty node!!!\n") ;
112 printf("\noriginal\n");
115 eqt_printTree(ecx
,node
,0);
116 printf("\ndelmindiv\n");
117 node
= eqt_DelMinDiv(ecx
,node
);
118 eqt_drive(ecx
, node
);
120 eqt_printTree(ecx
,node
,0);
121 printf("\nlinearisation\n");
122 eqt_linearise(ecx
,node
);
125 eqt_printTree(ecx
,node
,0);
126 printf("\nadd neutral\n");
127 eqt_addNeutral(ecx
,node
);
130 eqt_printTree(ecx
,node
,0);
131 printf("\nsorting\n");
132 eqt_sortBranch(ecx
,node
);
135 eqt_printTree(ecx
,node
,0);
136 printf("\nassociation\n");
137 node
= eqt_associate(ecx
,node
);
140 eqt_printTree(ecx
,node
,0);
141 eqt_assocVar(ecx
,node
);
142 printf("\nresult\n");
143 eqt_reduce(ecx
,node
);
144 node
= eqt_DelNeutral(ecx
,node
);
146 eqt_printTree(ecx
,node
,0);
147 printf("\ndrived\n");
150 eqt_eval (ecx
, str
,EQTFAST
);
152 // fprintf (stdout, "\n*** Normal = %g ***\n", eqt_eval (str, EQTNORMAL)) ;
153 // fprintf (stdout, "\n*** Fast = %g ***\n", eqt_eval (str, EQTFAST)) ;
157 str
= eqt_getSimpleEquation(str
);
158 printf("eqt_getSimpleEquation :\n%s\n",str
);
165 for (i
= 0; eqt_bench
[i
]; i
+= 2)
167 fprintf(stdout
,"Testing : %s\n",eqt_bench
[i
]);
168 fprintf(stdout
,"-- Expected : %s\n",eqt_bench
[i
+1]);
169 str
= eqt_getSimpleEquation(eqt_bench
[i
]);
170 fprintf(stdout
,"-- Result : %s\n",str
);
171 if (strcmp(str
,eqt_bench
[i
+1]))
174 fprintf(stdout
,"OK\n");