I don't want to get into this.  I think enough has been said.

I do want to avoid anyone misunderstanding what the ANSI/ISO Standards for C 
and C++ say about pow(0,0) however.

In general, C/C++ pow(0,0) is left implementation-defined.  There may be a 
domain error (this is an implementation-defined result plus setting of a global 
condition).  There may be a silent return of NaN.  

 - Dennis

DETAILS

In ISO/IEC 14882-1998 (C++) the numeric_limits account for specializations in 
arithmetic that provide for +infinity and silent (non-exception-triggering) NaN 
among other cases.  The value for *complex* pow(0,0) is implementation-defined 
in 26.2.8.  For <cmath> (section 26.5) the definitions are deferred to the C 
Standard <math.h>, although more type specializations are provided for numtype 
pow(numtype1, numtype2).

In ISO/IEC 14882-2003 (C++) is the same.  I haven't checked -2011 and the 
standardization of some of the Boost library.

In ISO/IEC 9899:2011 (C) the specification of cpow( ) does not say anything 
about cpow(0,0).  The specification of pow(x,y) says that a domain error may 
occur if x is zero and y is zero.  The same language appears in ISO C99 
(including its Technical Corrigenda).  In ANSI/ISO C (way back, before 1992) 
the rule was that "A domain error occurs if the result cannot be represented 
when x is zero and y is less than or equal to zero."  (A domain error involves 
return of an implementation-defined value and the global error variable is set 
- exceptions aren't used in Standard C libraries.)  So, considerable 
variability is provided. Quiet NaN and +Inf are representations, of course, if 
available in the library and arithmetic implementation.  These are accounted 
for in 9899:2011.

 Plauger's "Standard C Library" (in 1992) assumes IEEE floating point and 
handles NaN and +Inf (and his implementation appears to return 1 for pow(0,0) 
-- the code is pretty snarly).  

-----Original Message-----
From: Rob Weir [mailto:robw...@apache.org] 
Sent: Wednesday, February 20, 2013 07:08
To: dev@openoffice.apache.org
Subject: Re: Solving this 0⁰ issue correctly (was Re: Calc behavior: result of 
0 ^ 0)

[ ... ] ANSI C, C99, ISO C++ all require that
pow(x,0) return 1 for all values of x. 

[ ... ]

Reply via email to