@ -369,9 +369,10 @@ static int verify_expr(AVExpr * e) {
}
}
AVExpr * ff_parse_expr ( const char * s , const char * const * const_name ,
double ( * const * func1 ) ( void * , double ) , const char * const * func1_name ,
double ( * const * func2 ) ( void * , double , double ) , const char * const * func2_name ,
AVExpr * ff_parse_expr ( const char * s ,
const char * const * const_name ,
const char * const * func1_name , double ( * const * func1 ) ( void * , double ) ,
const char * const * func2_name , double ( * const * func2 ) ( void * , double , double ) ,
const char * * error ) {
Parser p ;
AVExpr * e = NULL ;
@ -412,11 +413,12 @@ double ff_eval_expr(AVExpr * e, const double *const_value, void *opaque) {
return eval_expr ( & p , e ) ;
}
double ff_parse_and_eval_expr ( const char * s , const double * const_value , const char * const * const_name ,
double ( * const * func1 ) ( void * , double ) , const char * const * func1_name ,
double ( * const * func2 ) ( void * , double , double ) , const char * const * func2_name ,
double ff_parse_and_eval_expr ( const char * s ,
const char * const * const_name , const double * const_value ,
const char * const * func1_name , double ( * const * func1 ) ( void * , double ) ,
const char * const * func2_name , double ( * const * func2 ) ( void * , double , double ) ,
void * opaque , const char * * error ) {
AVExpr * e = ff_parse_expr ( s , const_name , func1 , func1_name , func2 , func2_name , error ) ;
AVExpr * e = ff_parse_expr ( s , const_name , func1_name , func1 , func2_name , func2 , error ) ;
double d ;
if ( ! e ) return NAN ;
d = ff_eval_expr ( e , const_value , opaque ) ;
@ -438,12 +440,12 @@ static const char *const_names[]={
} ;
int main ( void ) {
int i ;
printf ( " %f == 12.7 \n " , ff_parse_and_eval_expr ( " 1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1) " , const_values , const_nam es , NULL , NULL , NULL , NULL , NULL , NULL ) ) ;
printf ( " %f == 0.931322575 \n " , ff_parse_and_eval_expr ( " 80G/80Gi " , const_values , const_nam es , NULL , NULL , NULL , NULL , NULL , NULL ) ) ;
printf ( " %f == 12.7 \n " , ff_parse_and_eval_expr ( " 1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1) " , const_names , const_valu es , NULL , NULL , NULL , NULL , NULL , NULL ) ) ;
printf ( " %f == 0.931322575 \n " , ff_parse_and_eval_expr ( " 80G/80Gi " , const_names , const_valu es , NULL , NULL , NULL , NULL , NULL , NULL ) ) ;
for ( i = 0 ; i < 1050 ; i + + ) {
START_TIMER
ff_parse_and_eval_expr ( " 1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1) " , const_values , const_nam es , NULL , NULL , NULL , NULL , NULL , NULL ) ;
ff_parse_and_eval_expr ( " 1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1) " , const_names , const_valu es , NULL , NULL , NULL , NULL , NULL , NULL ) ;
STOP_TIMER ( " ff_parse_and_eval_expr " )
}
return 0 ;