Date: Sun, 12 Aug 2012 23:09:20 -0000 From: Bruce Evans <brde@optusnet.com.au> To: Stephen Montgomery-Smith <stephen@missouri.edu> Cc: Diane Bruce <db@db.net>, Steve Kargl <sgk@troutmask.apl.washington.edu>, John Baldwin <jhb@freebsd.org>, David Chisnall <theraven@freebsd.org>, Bruce Evans <bde@freebsd.org>, Bruce Evans <brde@optusnet.com.au>, David Schultz <das@freebsd.org>, Peter Jeremy <peter@rulingia.com>, Warner Losh <imp@bsdimp.com> Subject: Re: Use of C99 extra long double math functions after r236148 Message-ID: <20120719205347.T2601@besplex.bde.org> Resent-Message-ID: <20120812230913.GL20453@server.rulingia.com> In-Reply-To: <5007AD41.9070000@missouri.edu> References: <20120714120432.GA70706@server.rulingia.com> <20120717084457.U3890@besplex.bde.org> <5004A5C7.1040405@missouri.edu> <5004DEA9.1050001@missouri.edu> <20120717200931.U6624@besplex.bde.org> <5006D13D.2080702@missouri.edu> <20120718205625.GA409@troutmask.apl.washington.edu> <500725F2.7060603@missouri.edu> <20120719025345.GA1376@troutmask.apl.washington.edu> <50077987.1080307@missouri.edu> <20120719032706.GA1558@troutmask.apl.washington.edu> <5007826D.7060806@missouri.edu> <5007AD41.9070000@missouri.edu>
index | next in thread | previous in thread | raw e-mail
On Thu, 19 Jul 2012, Stephen Montgomery-Smith wrote: > I did a ULP test on clog. The test code is attached. (Not the cleanest > code, I know, but it does the job.) It needs the mpfr and unuran ports > installed. > > To my shock, I found that under certain circumstances, the ULP in the real > part was huge. The problem is when hypot(x,y) is close to 1, because then > the real part of clog is close to zero. I was seeing ULPs in the thousands. Better than GULPs in the thousands :-). This is not the problem that I first thought it might be. > I struggled to find a solution, and now I think I have the ULP down to about > 2. I am going to work on it more tomorrow to see if I can get ULP down even > further. I peeked at the Apple code (complex.c). It is not very sophisticated, but usages log1p() and doesn't use hypot(). I don't know if this is inherently more accurate or is just more efficient. Apple code has a more sophisticated casinh() based on Kahan's old papers about branch cuts and nothing's sign bit. I don't know if Apple's copyright inibits us using complex.c. Its uglyness prevents me using it. We didn't use it for cexp() or ccosh(), and our code is better. Brucehome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120719205347.T2601>
