[Cfp-interest 1389] Re: Math functions & range errors

Jim Thomas jaswthomas at sbcglobal.net
Sun Aug 25 15:15:34 PDT 2019



> On Aug 23, 2019, at 1:59 PM, Fred J. Tydeman <tydeman at tybor.com> wrote:
> 
> Here is an updated (as an attachment).
> 
> 
> ---
> Fred J. Tydeman        Tydeman Consulting
> tydeman at tybor.com <mailto:tydeman at tybor.com>      Testing, numerics, programming
> +1 (702) 608-6093      Vice-chair of PL22.11 (ANSI "C")
> Sample C99+FPCE tests: http://www.tybor.com <http://www.tybor.com/>
> Savers sleep well, investors eat well, spenders work forever.
> 
> 
> Submitter:Fred Tydeman
> Submission Date: 2019-08-??
> Document: WG14 Nxxxx
> Reference Documents:
> 
> Summary
> 
> The standard has a few incorrect, missing, or ambiguous statements about range errors in some of the math functions.
> 
> Does "too large" mean close to +infinity or +/-infinity?
> 
> Does "too small" mean close to -infinity or +/-zero?
> 
> Some implementations consider f(infinity) as a range error based upon the text: A range error occurs if [the magnitude of] x is too
> 
Consider changing to: “Some implementations incorrectly treat …”.
> large. While this is covered by 7.12.1#5 about overflows, the CFP group believes it is better to be explicit in each math function where it matters.
> 
> Possible Technical Corrigendum:
> 
> The asin functions
> Add to 7.12.4.2#2
> 
> A range error occurs if the magnitude of nonzero x is too small.
> The atan functions
> Add to 7.12.4.3#2
> 
> A range error occurs if the magnitude of nonzero x is too small.
> The atan2 functions
> Add to 7.12.4.4#2
> 
> A range error occurs if x is positive and the magnitude of nonzero y/x is too small.
> The sin functions
> Add to 7.12.4.6#2
> 
> A range error occurs if the magnitude of nonzero x is too small.
> The tan functions
> Add to 7.12.4.7#2
> 
> A range error occurs if the magnitude of nonzero x is too small.
> The sinpi functions
> Add to 7.12.4.13#2
> 
> A range error occurs if the magnitude of nonzero x is too small.
> The tanpi functions
> Add to 7.12.4.14#2
> 
> A range error occurs if the magnitude of nonzero x is too small.
> The asinh functions
> Add to 7.12.5.2#2
> 
> A range error occurs if the magnitude of nonzero x is too small.
> The atanh functions
> Add to 7.12.5.3#2
> 
> A range error occurs if the magnitude of nonzero x is too small.
> The cosh functions
> Change 7.12.5.4#2 from
> 
> A range error occurs if the magnitude of x is too large.
> to
> 
> A range error occurs if the magnitude of finite x is too large.
> The sinh functions
> Change 7.12.5.5#2 from
> 
> A range error occurs if the magnitude of x is too large.
> to
> 
> A range error occurs if the magnitude of finite x is too large or if the magnitude of nonzero x is too small..
> The tanh functions
> Add to 7.12.5.6#2
> 
> A range error occurs if the magnitude of nonzero x is too small.
> The exp functions
> Change 7.12.6.1#2 from
> 
> A range error occurs if the magnitude of x is too large.
> to
> 
> A range error occurs if the magnitude of finite x is too large.
> The exp10m1 functions
> Change 7.12.6.3#2 from
> 
> A range error occurs if finite x is too large or if the magnitude of nonzero x is too small.
> to
> 
> A range error occurs if finite positive x is too large or if the magnitude of nonzero x is too small.
I recall David suggesting this be “A range error occurs if the magnitude of finite positive x is too large ….” but am not sure what we agreed to. With that change we’d be saying “magnitude” wherever talking about too large or too small. Without that change we’d be saying “magnitude”  just where needed for correctness.
> The exp2 functions
> Change 7.12.6.4#2 from
> 
> A range error occurs if the magnitude of x is too large.
> to
> 
> A range error occurs if the magnitude of finite x is too large.
> The exp2m1 functions
> Change 7.12.6.5#2 from
> 
> A range error occurs if the magnitude of x is too large or if the magnitude of nonzero x is too small.
> to
> 
> A range error occurs if the magnitude of finite positive x is too large or if the magnitude of nonzero x is too small.
> The expm1 functions
> Change 7.12.6.6#2 from
> 
> A range error occurs if positive x is too large.252)
> to
> 
> A range error occurs if finite positive x is too large or if the magnitude of nonzero x is too small.252)
> The ldexp functions
> Change 7.12.6.9#2 from
> 
> A range error may occur.
> to
> 
> A range error may occur for finite x.
> The log1p and logp1 functions
> Add to 7.12.6.14#2
> 
> A range error occurs if the magnitude of nonzero x is too small.
> The log2p1 functions
> Add to 7.12.6.16#2
> 
> A range error occurs if the magnitude of nonzero x is too small.
> The scalbn and scalbln functions
> Change 7.12.6.19#2 from
> 
> A range error may occur.
> to
> 
> A range error may occur for finite x.
> The compoundn functions
> Change 7.12.7.2#2 from
> 
> A range error may occur if n is too large, depending on x.
> to
> 
> A range error may occur if n is too large, depending on finite x.
Do we mean if the magnitude of n is too large?
> The hypot functions
> Change 7.12.7.4#2 from
> 
> A range error may occur.
> to
> 
> A range error may occur for finite arguments.
> The pow functions
> Change 7.12.7.5#2 from
> 
> A range error may occur.
> to
> 
> A range error may occur for finite x.
> The pown functions
> Change 7.12.7.6#2 from
> 
> A range error may occur.
> to
> 
> A range error may occur for finite x.
> The powr functions
> Change 7.12.7.7#2 from
> 
> A range error may occur.
> to
> 
> A range error may occur for finite x.
> The rootn functions
> Change 7.12.7.8#2 from
> 
> A range error may occur if n is -1.
> to
> 
> A range error may occur for finite x if n is -1.
> The erf functions
> Add to 7.12.8.1#2
> 
> A range error occurs if the magnitude of nonzero x is too small.
> The erfc functions
> Change 7.12.8.2#2
> 
> A range error occurs if positive x is too large.
> to:
> 
> A range error occurs if finite positive x is too large.
> The lgamma functions
> Change 7.12.8.3#2
> 
> A range error occurs if positive x is too large.
> to:
> 
> A range error occurs if finite positive x is too large.
> The tgamma functions
> Change 7.12.8.4#2
> 
> A range error occurs if the magnitude of x is too large and may occur if the magnitude of x is too small.
> to:
> 
> A range error occurs if the magnitude of finite x is too large and may occur if the magnitude of non-zero x is too small.
How is there a range error if the magnitude of negative x is too large? Can't there be range errors for moderate magnitude negative x?
> The fmod functions
> Add to 7.12.10.1#2
> 
> A range error may occur if both x and y are nonzero and the magnitude of either is too small.
> The remainder functions
> Add to 7.12.10.2#2
> 
> A range error may occur if both x and y are nonzero and the magnitude of either is too small.
> The fdim functions
> Change 7.12.12.1#2
> 
> A range error may occur.
> to:
> 
> A range error may occur for finite arguments.
> The fma functions
> Change 7.12.13.1#2
> 
> A range error may occur.
> to:
> 
> A range error may occur for finite arguments.

A general question: What does “may occur” mean?


- Jim Thomas

> _______________________________________________
> Cfp-interest mailing list
> Cfp-interest at oakapple.net <mailto:Cfp-interest at oakapple.net>
> http://mailman.oakapple.net/mailman/listinfo/cfp-interest <http://mailman.oakapple.net/mailman/listinfo/cfp-interest>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.oakapple.net/pipermail/cfp-interest/attachments/20190825/7b991fa6/attachment-0001.html 


More information about the Cfp-interest mailing list