On Wed, Feb 20, 2013 at 4:37 PM, Dennis E. Hamilton <orc...@apache.org> wrote:
> I earlier quoted the applicable (and only) texts from the Standards 
> themselves, particularly C++ and also the latest C Standard (2011 and C99 
> with all Technical Corrigenda through 2007).
>
> No matter what is said about pow(0,0) in the C99 Rationale v5.10 Appendix F 
> of April 2003, there are no such requirements in the Standards, including 
> those versions that have been adopted since 2003.
>
>  - Dennis
>
> PS: I mentioned cpow(0,0) because of the mathematical relationship and I was 
> observing that is consistent with the subset that pow(x,y) supports.
>
> DETAILS
>
> The definition of domain error is that an implementation-defined value is 
> returned *and* errno is set to EDOM.  There is also the option of triggering 
> a floating-point exception. I assume that "capable of representation" 
> *includes* silent NaN and +infinity but for all I know those return with 
> non-exception domain errors too.  Plauger certainly prepared to encounter 
> those in his implementation (though he also chose pow(0,0) = 1.0).
>
> The C 99 Rationale is not an ISO/IEC International Standard, regardless of 
> the INCITS J11 and SC22 WG14 participation.  It is not necessary to even know 
> about it.  In particular,
>
>         "This Rationale discusses some language or library features which 
> were not adopted into the
> Standard. These are usually features which are popular in some C 
> implementations, so that a
> user of those implementations might question why they do not appear in the 
> Standard." [p.5 preceding section 0.1]  The Rationale doesn't address that 
> question users might have.
>
>         "**[T]his rationale is not part of the Standard**" [bottom of page 5, 
> their emphasis]
>
> Then there is Appendix F.  I have no idea what it means to have "normative" 
> in the title.  This appears to be an IEC 60559 floating-point profile from 
> NCEC, with certain exceptions to 60559, although not even that is entirely 
> clear.  pow(+inf,0) = pow(0,0) = 1 are stated as required under Appendix F 
> (bottom of page 180)  Adding pow(NaN,0) = 1 (page 182) by taking power(x,0)=1 
> as settled for all x is particularly marvelous.
>

In other words, C99, in a normative Annex F, section 9.4.4, for
implementations that conform to IEEE 754 floating point, says:

"pow(x, ±0) returns 1 for any x, even a NaN."

Do you see something different?

I'd like to make sure we're seeing the same thing here.

-Rob


> The developers of C 2011 also didn't seem to be under any compulsion with 
> regard to the C99 Rationale.
>
> -----Original Message-----
> From: Rob Weir [mailto:robw...@apache.org]
> Sent: Wednesday, February 20, 2013 10:14
> To: dev@openoffice.apache.org
> Subject: Re: Solving this 0⁰ issue correctly (was Re: Calc behavior: result 
> of 0 ^ 0)
>
> [ ... ] I'm reading a requirement for pow(x,0) to
> return 1 for all values of x.  Are you seeing something else?  Are you
> seeing anything that says a conforming C/C++ runtime may *return*
> something other than 1?
>
> Btw, the rationale for this choice is described on page 182 of this document:
>
> http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf
>
> [ ... ]
>

Reply via email to