gams:difference_between_the_-operator_and_the_power_function

The power function `power(x,y)`

is an integer power and thus the exponent `y`

must be an integer.

This is not required for the ** operator. x**y is a real power and gets evaluated as `exp(y * log(x))`

. The real power is not defined for a negative base (e.g. http://www.cppreference.com/stdmath/pow.html) - `x`

must be a positive number (or `y >= 0`

, if `x = 0`

) to avoid an execution error. So:

scalar test; test = (-3)**4; * note: this is not the same as -3**4,which will be treated as -(3**4) display test;

will return an error:

**** Exec Error at line 2: rPower: FUNC DOMAIN: x**y, x < 0

This formulation will work:

scalar test; test = power(-3,4); display test;

gams/difference_between_the_-operator_and_the_power_function.txt · Last modified: 2008/07/26 03:49 by support