User Tools

Site Tools


gams:difference_between_the_-operator_and_the_power_function

What is the 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