Floating point exponentiation

Torbjorn Granlund tg at gmplib.org
Tue Mar 23 11:15:18 CET 2010


David Gillies <daggillies at gmail.com> writes:

  What does 'big' mean? Forget floating point: exp(n) for an n that fits
  in a uint32_t will exhaust, or as near as makes no difference, memory
  in any normal machine. exp(2^32) is around the billion-byte mark in
  radix 256 (eight bit binary.) Even if you can fit your operand (and
  its destination) in main memory, any computation beyond O(n) is going
  to be silly. 64 bit? Nah. The exponent ceases to be representable in a
  first-order scheme. The mantissa waved bye-bye through the back window
  many miles back.
  
I don't understand this comment.

We're talking about floating-point numbers here, not integers.  While
e^2^32 is a large number, it will be possible to represent
approximatively with GMP on a 64-bit machine.  (The exponent type is
there typically 64 bits.)  It will not need more memory than specified
for the destination variable.

I also do not agree with the statement that computations in \Omega(n)
are silly for numbers with billion digit mantissas.  I assume this is
what you mean with "beyond O(n)".

-- 
Torbjörn


More information about the gmp-discuss mailing list