Date: Sun, 12 Aug 2012 23:10:47 -0000 From: Stephen Montgomery-Smith <stephen@missouri.edu> To: Bruce Evans <brde@optusnet.com.au> Cc: Diane Bruce <db@db.net>, John Baldwin <jhb@freebsd.org>, David Chisnall <theraven@freebsd.org>, Bruce Evans <bde@freebsd.org>, Steve Kargl <sgk@troutmask.apl.washington.edu>, 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: <500CD87D.9060804@missouri.edu> Resent-Message-ID: <20120812231040.GB20453@server.rulingia.com> In-Reply-To: <20120723131233.U1189@besplex.bde.org> 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> <20120719205347.T2601@besplex.bde.org> <50084322.7020401@missouri.edu> <20120720035001.W4053@besplex.bde.org> <50085441.4090305@missouri.edu> <20120720162953.N2162@besplex.bde.org> <20120720184114.B2790@besplex.bde.org> <50095CDE.4050507@missouri.edu> <20120723044308.X6145@besplex.bde.org> <500C5EE5.4090602@missouri.edu> <20120723131233.U1189@besplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 07/22/2012 11:12 PM, Bruce Evans wrote: > On Sun, 22 Jul 2012, Stephen Montgomery-Smith wrote: > >> But I will say that your latest version of clog doesn't do as well as >> mine with this input: >> >> x = unur_sample_cont(gen); >> y = unur_sample_cont(gen); >> h = hypot(x,y); >> x = x/h; >> y = y/h; >> >> I was able to get ULPs less than 2. Your program gets ULPs more like >> up to 4000. > > I may have broken the double version when working mostly on the float > version recently. > > What are the actual x and y? I'm not set up to use mpfr. The code segment didn't I showed didn't use mpfr. It used unuran. Basically I am generating random numbers uniformly distributed on the disk |z|=1. You could also do it using x = cos(t) y = sin(t) where t is a random real number in the interval [0,2 pi]. > Since the float version gets errors of 4096 ulps (12 bits wrong), the > double version is sure to get errors of [much more than] 12 + (53-24) > = 41 bits wrong. That is 2 tera ulps. Not noticing such enormous > errors indicates that the problematic cases haven't been tested. I > think you are right that it needs more like tripled double precision > -- with merely doubled double precision, it can probably get all 53 > mantissa bits and the sign bit wrong too (sign of (|z|^2 - 1)). That > is total loss of precision (TLOSS), and should be handled by returning > NaN. Sign errors are especially interesting with complex functions > and even for real log() applied to a real function, since they may > change the branch. I got TLOSS including sign errors in the loghypotf() > result in intermediate version due to bugs in the doubling of float > precision. Before the attempted doubling, TLOSS might have been the > usual case for z near 1! I will have another go at this code, maybe tomorrow, maybe later. I have been putting a lot of work into casinh, casin, cacosh and cacos, getting the branches correct. That has exhausted me. >> I have to say that I consider a ULP of 4000 under these very extreme >> circumstances to be acceptable. Definitely acceptable if the code >> goes a whole lot faster than code that has a ULP of less than 2. > > "An ULP of 4000" is unusual terminology. An ulp is a unit, not a count. I am so different than you guys. I have no problem with lack of consistency in notation, no problem with language being abused, no problem with people using different programming styles - certainly no problems with ULP's on the large side (oops, errors with large numbers of ULP's) , and ... > I haven't figured out how to cut down the amount of mail generated by > this thread. Sorry to add to it :-). ... no problems deleting emails that I don't want (but surely with all the email volume we have, this does suggest we need a freebsd-numerics mailing list, doesn't it?), and ... > >> On 07/22/2012 02:29 PM, Bruce Evans wrote: >>> Replying again to this... > > Top posting is one way :-). ... most definitely no problem with top posting! I try not to top post on the FreeBSD mailing list because I know so many people there are bothered by it. But most of the people I communicate with (professors in academic institutions, friends and relatives) top post all the time. But I should have remembered not to top post with you guys. I understand that you guys and I think differently. I don't think that I am right and you guys are wrong. But conversely, I hope that you don't think I am wrong and you are right! And I hope that you can appreciate the qualities I bring to the discussion, just as I appreciate the qualities that you bring. Stephen
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?500CD87D.9060804>