Folks, A new user. Please be kind. I have checked http://www.ruby-forum.com/topic/74141#new, but could not find what I was looking for. See following irb session: start irb(main):004:0* google=10**100 => 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 irb(main):005:0> googleplex=10**google (irb):5: warning: in a**b, b may be too big => Infinity irb(main):006:0> google.class => Bignum irb(main):007:0> googleplex.class => Float end This was nice! But, I expected googleplex.class to be BigNum. Is Infinity a Float? Why? Thanks in advance, Kedar
on 2008-12-31 05:13
on 2008-12-31 06:25
Hi, Am Mittwoch, 31. Dez 2008, 12:12:55 +0900 schrieb Kedar M.: > > This was nice! But, I expected googleplex.class to be BigNum. Is > Infinity a Float? I like this kind of questions. A weird example, though; I would prefer an exception. BigNum * BigNum may not result in a Float. Hit me with your refutations. Bertram
on 2008-12-31 09:23
Bertram S. wrote: >> => Bignum > Bertram > > Hmmm ... "google" is a Bignum (multi-precision integer). "10" is an Integer. So you are raising an Integer to a Bignum power. So it boils down to how Ruby raises an Integer to a Bignum power. Now if this were an "ideal machine", it would perform some kind of exact, and very long running, exponentiation routine. Clearly it didn't ... it looked at the numbers and said, "Whoa!" :) Yeah ... it should have returned an exception, not a Float. But there are plus and minus Infinity in the IEEE floating point number spec, so I guess it makes sense to return that. But in theory, given enough memory for the digits and enough compute time, it could return a Bignum. An estimate of the amount of memory required is left as an exercise for the student. :) Incidentally, the correct spelling is "googol", not to be confused with the search engine or the Russian author. :) -- M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P), WOM I've never met a happy clam. In fact, most of them were pretty steamed.