miarc.c: CUBED_ROOT_[24]
Mouse <[email protected]> Tue, 30 Nov 2021 21:00:42 -0500 (EST)
| Newsgroups | gmane.os.netbsd.devel.x11 |
|---|---|
| Message-ID | <[email protected]> |
Every X server source I have at ready hand includes, in miarc.c, # define CUBED_ROOT_2 1.2599210498948732038115849718451499938964 # define CUBED_ROOT_4 1.5874010519681993173435330390930175781250 The cube roots of 2 and 4 are actually 1.259921049894873164767210607278228350570251464701507980081975113 and 1.587401051968199474751705639272308260391493327899853009808285762, to an error of less than one unit in the last places of those numbers (1.2599...113 cubed is greater than 2 and 1.2599...112 cubed is less than 2; similarly, 1.5874...762 cubed is greater than 4 and 1.5874...761 cubed is less than 4). Thus, more than half the decimal places given in the #defines are complete garbage; the first place in error is the 1e-16 place and of course the rest are meaningless. Does anyone know why the discrepancy? Does anyone know whether it would break anything to correct them? A quick glance makes me think they are used only in floating-point arithmetic and thus anything below the machine's level of FPU accuracy is useless. I would suspect the #defines given of being the decimal conversion of someone's floating-point computation of the cube roots, but the details of the values make that seem unlikely. /~\ The ASCII Mouse \ / Ribbon Campaign X Against HTML [email protected] / \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B