comparison eval.c @ 2967:ef2149182f1c libavcodec

COSMETICS: Remove all trailing whitespace.
author diego
date Sat, 17 Dec 2005 18:14:38 +0000
parents 86d14aebd527
children 0b546eab515d
comparison
equal deleted inserted replaced
2966:564788471dd4 2967:ef2149182f1c
73 d= strtod(p->s, &next); 73 d= strtod(p->s, &next);
74 if(next != p->s){ 74 if(next != p->s){
75 p->s= next; 75 p->s= next;
76 return d; 76 return d;
77 } 77 }
78 78
79 /* named constants */ 79 /* named constants */
80 for(i=0; p->const_name && p->const_name[i]; i++){ 80 for(i=0; p->const_name && p->const_name[i]; i++){
81 if(strmatch(p->s, p->const_name[i])){ 81 if(strmatch(p->s, p->const_name[i])){
82 p->s+= strlen(p->const_name[i]); 82 p->s+= strlen(p->const_name[i]);
83 return p->const_value[i]; 83 return p->const_value[i];
84 } 84 }
85 } 85 }
86 86
87 p->s= strchr(p->s, '('); 87 p->s= strchr(p->s, '(');
88 if(p->s==NULL){ 88 if(p->s==NULL){
89 av_log(NULL, AV_LOG_ERROR, "Parser: missing ( in \"%s\"\n", next); 89 av_log(NULL, AV_LOG_ERROR, "Parser: missing ( in \"%s\"\n", next);
90 return NAN; 90 return NAN;
91 } 91 }
98 if(p->s[0] != ')'){ 98 if(p->s[0] != ')'){
99 av_log(NULL, AV_LOG_ERROR, "Parser: missing ) in \"%s\"\n", next); 99 av_log(NULL, AV_LOG_ERROR, "Parser: missing ) in \"%s\"\n", next);
100 return NAN; 100 return NAN;
101 } 101 }
102 p->s++; // ")" 102 p->s++; // ")"
103 103
104 if( strmatch(next, "sinh" ) ) d= sinh(d); 104 if( strmatch(next, "sinh" ) ) d= sinh(d);
105 else if( strmatch(next, "cosh" ) ) d= cosh(d); 105 else if( strmatch(next, "cosh" ) ) d= cosh(d);
106 else if( strmatch(next, "tanh" ) ) d= tanh(d); 106 else if( strmatch(next, "tanh" ) ) d= tanh(d);
107 else if( strmatch(next, "sin" ) ) d= sin(d); 107 else if( strmatch(next, "sin" ) ) d= sin(d);
108 else if( strmatch(next, "cos" ) ) d= cos(d); 108 else if( strmatch(next, "cos" ) ) d= cos(d);
138 av_log(NULL, AV_LOG_ERROR, "Parser: unknown function in \"%s\"\n", next); 138 av_log(NULL, AV_LOG_ERROR, "Parser: unknown function in \"%s\"\n", next);
139 return NAN; 139 return NAN;
140 } 140 }
141 141
142 return d; 142 return d;
143 } 143 }
144 144
145 static double evalPow(Parser *p){ 145 static double evalPow(Parser *p){
146 int sign= (*p->s == '+') - (*p->s == '-'); 146 int sign= (*p->s == '+') - (*p->s == '-');
147 p->s += sign&1; 147 p->s += sign&1;
148 return (sign|1) * evalPrimary(p); 148 return (sign|1) * evalPrimary(p);
185 double ff_eval(char *s, double *const_value, const char **const_name, 185 double ff_eval(char *s, double *const_value, const char **const_name,
186 double (**func1)(void *, double), const char **func1_name, 186 double (**func1)(void *, double), const char **func1_name,
187 double (**func2)(void *, double, double), char **func2_name, 187 double (**func2)(void *, double, double), char **func2_name,
188 void *opaque){ 188 void *opaque){
189 Parser p; 189 Parser p;
190 190
191 p.stack_index=100; 191 p.stack_index=100;
192 p.s= s; 192 p.s= s;
193 p.const_value= const_value; 193 p.const_value= const_value;
194 p.const_name = const_name; 194 p.const_name = const_name;
195 p.func1 = func1; 195 p.func1 = func1;
196 p.func1_name = func1_name; 196 p.func1_name = func1_name;
197 p.func2 = func2; 197 p.func2 = func2;
198 p.func2_name = func2_name; 198 p.func2_name = func2_name;
199 p.opaque = opaque; 199 p.opaque = opaque;
200 200
201 return evalExpression(&p); 201 return evalExpression(&p);
202 } 202 }
203 203
204 #ifdef TEST 204 #ifdef TEST
205 #undef printf 205 #undef printf
206 static double const_values[]={ 206 static double const_values[]={
207 M_PI, 207 M_PI,
208 M_E, 208 M_E,
209 0 209 0
210 }; 210 };
214 0 214 0
215 }; 215 };
216 main(){ 216 main(){
217 int i; 217 int i;
218 printf("%f == 12.7\n", ff_eval("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_values, const_names, NULL, NULL, NULL, NULL, NULL)); 218 printf("%f == 12.7\n", ff_eval("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_values, const_names, NULL, NULL, NULL, NULL, NULL));
219 219
220 for(i=0; i<1050; i++){ 220 for(i=0; i<1050; i++){
221 START_TIMER 221 START_TIMER
222 ff_eval("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_values, const_names, NULL, NULL, NULL, NULL, NULL); 222 ff_eval("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_values, const_names, NULL, NULL, NULL, NULL, NULL);
223 STOP_TIMER("ff_eval") 223 STOP_TIMER("ff_eval")
224 } 224 }