# Re: ACTION-2146: Update definition of power()

From: Steven Pemberton <steven.pemberton@cwi.nl>
Date: Wed, 13 Dec 2017 15:32:24 +0100
To: public-xformsusers@w3.org, "XForms Users Community Group Issue Tracker" <sysbot+tracker@w3.org>, "Steven Pemberton" <steven.pemberton@cwi.nl>
Message-ID: <op.za6v0an2smjzpq@steven-xps>
```Done.

https://www.w3.org/community/xformsusers/wiki/XPath_Expressions_Module#The_power.28.29_Function

Steven

On Wed, 13 Dec 2017 13:57:51 +0100, Steven Pemberton
<steven.pemberton@cwi.nl> wrote:

> For power(x, y), we say:
>
> "Raises the first argument to the power of the second argument,
> returning the result. Both arguments may be fractional and negative. If
> the calculation does not result in a real number, then NaN is returned."
>
> and the problem is with the meaning of "if the calculation does not
> result in a real number"
>
> XPath functions says:
> https://www.w3.org/TR/xpath-functions/#func-math-pow
>
> pow(\$x, \$y)
>
> "If \$y is an instance of xs:integer, the result is \$x raised to the
> power of \$y as defined in the [IEEE 754-2008] specification of the pown
> function applied to a 64-bit binary floating point value and an integer.
>
> Otherwise \$y is converted to an xs:double by numeric promotion, and the
> result is the value of \$x raised to the power of \$y as defined in the
> [IEEE 754-2008] specification of the pow function applied to two 64-bit
> binary floating point values."
>
> IEEE 754 says:
>
> "For the pown function (integral exponents only):
> pown(x, 0) is 1 for any x (even a zero, quiet NaN, or infinity)
> pown(±0, n) is ±∞ and signals the divideByZero exception for odd
> integral n<0
> pown(±0, n) is +∞ and signals the divideByZero exception for even
> integral n<0
> pown(±0, n) is +0 for even integral n>0
> pown(±0, n) is ±0 for odd integral n>0.
>
> For the pow function (integral exponents get special treatment):
> pow(x, ±0) is 1 for any x (even a zero, quiet NaN, or infinity)
> pow(±0, y) is ±∞ and signals the divideByZero exception for y an odd
> integer <0
> pow(±0, −∞) is +∞ with no exception
> pow(±0, +∞) is +0 with no exception
> pow(±0, y) is +∞ and signals the divideByZero exception for finite y<0
> and not an odd integer
> pow(±0, y) is ±0 for finite y>0 an odd integer
> pow(±0, y) is +0 for finite y>0 and not an odd integer
> pow(−1, ±∞) is 1 with no exception
> pow(+1, y) is 1 for any y (even a quiet NaN)
> pow(x, y) signals the invalid operation exception for finite x<0 and
> finite non-integer y"
>
> So I propose for our text:
>
> "Raises the first argument to the power of the second argument,
> returning the result. The value of power(0,0) is 1.
>
> Both arguments may be fractional and negative, however,
>   power(0, y) = NaN for negative y
>   power(x, y) = NaN for negative x and non integer y.
> "
>
> Steven
```
Received on Wednesday, 13 December 2017 14:32:53 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 13 December 2017 14:32:53 UTC