@chapter Expression Evaluation
@c man begin EXPRESSION EVALUATION
-When evaluating an arithemetic expression, FFmpeg uses an internal
+When evaluating an arithmetic expression, FFmpeg uses an internal
formula evaluator, implemented through the @file{libavutil/eval.h}
interface.
variable. @var{var} specifies the number of the variable where to
store the value, and it is a value ranging from 0 to 9. The function
returns the value stored in the internal variable.
+Note, Variables are currently not shared between expressions.
@item ld(var)
Allow to load the value of the internal variable with number
-@var{var}, which was previosly stored with st(@var{var}, @var{expr}).
+@var{var}, which was previously stored with st(@var{var}, @var{expr}).
The function returns the loaded value.
@item while(cond, expr)
@item gcd(x, y)
Return the greatest common divisor of @var{x} and @var{y}. If both @var{x} and
@var{y} are 0 or either or both are less than zero then behavior is undefined.
+
+@item if(x, y)
+Evaluate @var{x}, and if the result is non-zero return the result of
+the evaluation of @var{y}, return 0 otherwise.
+
+@item ifnot(x, y)
+Evaluate @var{x}, and if the result is zero return the result of the
+evaluation of @var{y}, return 0 otherwise.
@end table
The following constants are available:
@table @option
@item PI
-area of the unit disc, approximatively 3.14
+area of the unit disc, approximately 3.14
@item E
-exp(1) (Euler's number), approximatively 2.718
+exp(1) (Euler's number), approximately 2.718
@item PHI
-golden ratio (1+sqrt(5))/2, approximatively 1.618
+golden ratio (1+sqrt(5))/2, approximately 1.618
@end table
-Note that:
+Assuming that an expression is considered "true" if it has a non-zero
+value, note that:
@code{*} works like AND
@code{+} works like OR
-thus
+and the construct:
@example
if A then B else C
@end example
is equivalent to
@example
-A*B + not(A)*C
+if(A,B) + ifnot(A,C)
@end example
In your C code, you can extend the list of unary and binary functions,