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;