Some words of wisdom like the following need to be added to the
definition of the exponentiation operator (as well as the complex
and imag cases being documented):
This operator is unlike other mathematical operators for floating
point data which are correctly rounded, i.e. have a rounding error
which is not greater than 0.5 * ULP (1). At best, exponentiation of
a floating point number achieves a rounding error which is for a
floating point exponent is guaranteed to not exceed 1 * ULP(1)
with an underlying robust mathematical library. For cases of an
integral exponent of a floating point datum, this will be optimized
for speed (at a sacrifice in accuracy). In this case, the rounding
error can be significantly higher than 1 * ULP(1). For an integral
exponent of n, the error can exceed log(n) * ULP(1). although in
most cases it is only several ULPs.
A more succinct version of the above would be better but I cannot
come up with tighter words for now.
That said, if a Chapel user thinks the above is too technical and
needs a lot of simplification, I would humbly suggest that this user
needs to learn a lot more about rounding errors and their potential
bad impact on the quality of their results.