Me encontré con este problema cuando traté de calcular 3 ** 557 en irb. Ruby y MacRuby están instalados en mi Mac (OS X 10.8). Y la versión de ruby es 1.8.7, de MacRuby 0.12 (ruby 1.9.2). rib y macirb me dieron dos respuestas diferentes en el cálculo de 3 ** 557. (macirb's tiene razón.)Exponencia en Ruby 1.8.7 Devuelve respuestas incorrectas
$ irb
>> 3**557
=> 54755702179342762063551440788945541007926808765326951193810107165429610423703291760740244724326099993131913104272587572918520442872536889724676586931200965615875242243330408150984753872526006744122187638040962508934109837755428764447134683114539218909666971979603
$ macirb
irb(main):001:0> 3**557
=> 57087217942658063217290581978966727348872586279944803346410228520919738045995056049600505293676159316424182057188730248707922985741467061108015301244570536546607487919981026877250949414156613856336341922395385463291076789878575326
Y luego intenté con algo más grande, p. 3 ** 5337, y obtuve la misma respuesta esta vez.
Entonces, ¿esto es un error en Ruby 1.8.7, o debería usar otra forma de calcular la exponenciación?
Sin relación con Rubí específicamente, pero es posible que desee ver en [exponenciación modular] (http://en.wikipedia.org/wiki/Modular_exponentiation) dependiendo de lo que esté haciendo con el resultado. – jli
No tengo una MRI pre-1.9.3 instalada, pero eso da el resultado correcto. –
¿Qué modelo exacto de mac estás usando? No puedo reproducir esto en mi MacPro (Xeon) con la misma versión de Ruby (1.8.7 p358). Tampoco puedo en un antiguo 1.8.6 ejecutando en 32 bits. –