Complex arg-trig functions

Stephen Montgomery-Smith stephen at missouri.edu
Wed Aug 15 22:11:24 UTC 2012


On 08/15/2012 04:49 PM, Stephen Montgomery-Smith wrote:
> On 08/15/2012 03:42 PM, Stephen Montgomery-Smith wrote:
>
>>
>> All your solutions depend upon using (1-tiny) with the result being
>> used.  But what if FE_DOWNWARD is set?  Then 1-tiny becomes
>> 1-DBL_EPSILON.  And then if the result is used, everything is off by 1
>> ulp.
>>
>> And
>> if ((int)(1 - tiny) == 1)
>> will fail.
>
> How about replacing
>
>      if (huge+ax>one && huge+bx>one) ....
>
> with
>
>      if ((int)(1/ax)==0 || (int)(1/bx)==0) ....
>
> (We know that one of ax or bx is larger than 1.)

if ((int)(1/(2+ax))==0) ....

(because one of ax or bx might be 0).


More information about the freebsd-numerics mailing list