mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-07-01 05:31:04 +08:00
fix -a^b which was interpreted as (-a)^b
Originally committed as revision 6713 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
@ -209,19 +209,22 @@ static double evalPrimary(Parser *p){
|
|||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
static double evalPow(Parser *p){
|
static double evalPow(Parser *p, int *sign){
|
||||||
int sign= (*p->s == '+') - (*p->s == '-');
|
*sign= (*p->s == '+') - (*p->s == '-');
|
||||||
p->s += sign&1;
|
p->s += *sign&1;
|
||||||
return (sign|1) * evalPrimary(p);
|
return evalPrimary(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static double evalFactor(Parser *p){
|
static double evalFactor(Parser *p){
|
||||||
double ret= evalPow(p);
|
int sign, sign2;
|
||||||
|
double ret, e;
|
||||||
|
ret= evalPow(p, &sign);
|
||||||
while(p->s[0]=='^'){
|
while(p->s[0]=='^'){
|
||||||
p->s++;
|
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){
|
static double evalTerm(Parser *p){
|
||||||
|
Reference in New Issue
Block a user