I could imagine a reason #5: you are porting programs from a language that 
supports 80bits. 



On Nov 10, 2012, at 4:41 PM, Neil Toronto wrote:

> On 11/09/2012 06:56 AM, Dmitry Pavlov wrote:
>> 2. Maybe we are cutting blocks with a razor here?
>> If there is any simpler way to have native 80-bit
>> floating point in Racket (say Racket->ASM compilation,
>> Racket->C, LLVM, anything), please do tell me.
> 
> Here's another razor/brick-related question: What does 80 bits get you?
> 
> I'm not staunchly defending 64-bit floats, and I'm not trying to turn down 
> your kind offer to improve to Racket. I just wonder whether there's an easier 
> way to get what you need.
> 
> Some problems bigger floats would help with are:
> 
> 1. Computing large values whose fractional parts are significant. Large 
> physics simulations, for example: you don't want orbits to go erroneously 
> wobbly far from the origin, where floats are much sparser.
> 
> 2. You need exponents greater than 308 and/or less than -308.
> 
> 3. You need to compute sort-of-stable solutions or long-running simulations 
> accurately.
> 
> 4. You have some difficult computations that suffer from overflow, underflow, 
> or severe cancellation.
> 
> If your problem is #4, I may have a good enough 64-bit solution.
> 
> An example of #4 is (x/k)^k * exp(k-x), which shows up embarrassingly often 
> in gamma-related functions, and is impossible to compute accurately for large 
> x and k without using more bits. (To avoid under-/overflow, you must accept 
> cancellation errors.) If just this one function were computed accurately, all 
> of these gamma-related functions could be computed accurately. As it is, 
> nobody has ever implemented an accurate 64-bit incomplete gamma integral.
> 
> There's a body of work on floating-point "expansions," which represent 
> numbers as the sum of multiple non-overlapping floats. Two 64-bit floats, for 
> example, is equivalent to one 117-bit float (1 sign, 11 exponent, 105 
> significand). I've just implemented 117-bit arithmetic, log1p, expm1, and 
> exp. I'm going to use these judiciously, because they're a bit expensive; I 
> think a two-float multiply is 17 flops.
> 
> I was planning to keep this part of the math library private on the first 
> release, but I could put it in something like math/unstable for now if it 
> could help with your problem.
> 
> But if what you need 80 bits for is pervasive, or if you're simply committed 
> to it, I'll just look forward to having them. :)  I'll be happy to consult as 
> well.
> 
> Neil ⊥
> 
> ____________________
> Racket Users list:
> http://lists.racket-lang.org/users

Attachment: smime.p7s
Description: S/MIME cryptographic signature

____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to