Browse Source

fix -a^b which was interpreted as (-a)^b

Originally committed as revision 6713 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Michael Niedermayer 18 years ago
parent
commit
2c409cc7af
1 changed files with 10 additions and 7 deletions
  1. +10
    -7
      libavcodec/eval.c

+ 10
- 7
libavcodec/eval.c View File

@@ -209,19 +209,22 @@ static double evalPrimary(Parser *p){
return d;
}

static double evalPow(Parser *p){
int sign= (*p->s == '+') - (*p->s == '-');
p->s += sign&1;
return (sign|1) * evalPrimary(p);
static double evalPow(Parser *p, int *sign){
*sign= (*p->s == '+') - (*p->s == '-');
p->s += *sign&1;
return evalPrimary(p);
}

static double evalFactor(Parser *p){
double ret= evalPow(p);
int sign, sign2;
double ret, e;
ret= evalPow(p, &sign);
while(p->s[0]=='^'){
p->s++;
ret= pow(ret, evalPow(p));
e= evalPow(p, &sign2);
ret= pow(ret, (sign2|1) * e);
}
return ret;
return (sign|1) * ret;
}

static double evalTerm(Parser *p){


Loading…
Cancel
Save