Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Feb 2017 02:10:23 +1100 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        "Montgomery-Smith, Stephen" <stephen@missouri.edu>
Cc:        "freebsd-numerics@freebsd.org" <freebsd-numerics@freebsd.org>
Subject:   Re: C11 conformance of casinl-like functions.
Message-ID:  <20170209014517.Y17120@besplex.bde.org>
In-Reply-To: <0256e890-05ca-6a1b-9635-88034c544724@missouri.edu>
References:  <CAByVWPUvbG78nUoxQQAOTTY9dJa1agjCZo9oO3dShv2U8Q=y0A@mail.gmail.com> <20170208221449.K14261@besplex.bde.org> <CAByVWPXomH1ijy4oUHjw991c_hgyHQU6Zti1j1jYutxuHE4jcw@mail.gmail.com> <0256e890-05ca-6a1b-9635-88034c544724@missouri.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 8 Feb 2017, Montgomery-Smith, Stephen wrote:

> On 02/08/17 06:47, mokhi wrote:
>>> I think you mean acosl, asinl, ...
>> yeah :D
>>
>>>  These were implemented quite well in 2012-2013, but not quite finished,
>>> and not committed.  Only the float and double version were committed.
>>> The raw versions are still available in
>>> https://people.freebsd.org/~stephen/catrig*.c.  These have rotted and
>>> require some editing.  Compare with the committed parts to see most
>>> of the necessary editing.
>> Okay, I'll do.
>> Would you like that I add you on Phabricator for reviewing when my
>> editing is done?
>>
>> Thanks and best wishes, Mokhi.
>
> I would love to see these functions implemented.  I spent a lot of time
> on them, and they went through a lot of testing to make sure they were
> accurate, even in very extreme edge cases.

It was you that implemented them :-).  Except for many onerous details
like testing on all supported arches and committing them.

> Here are more details about the implementation.
>
> http://faculty.missouri.edu/~stephen/software/#catrig

It says that the the results are good to 4 ulps except in float precision.
I dout that that is correct.  Higher precisions are just less likely to
get near the corner cases where the errors are larger.

Corner cases are probably only near zeros and poles, but I test the
real and imaginary parts separately and this gives a dubious size for
an ulp (for the error relative to each part instead of relative to
the absolute value of the result).  This gives 1-dimensional sets of
corner cases.  The functions try to get a small error by this measure
and mostly succeed.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170209014517.Y17120>