# Shortest Ruby crash #49

My contribution to the contest:

567

deserves a medal for being the least intuitive error message of 2008!

And now, for the real question…

Why is this being evaluated as 5**(6**7), when for instance 9/9/9 is
being evaluated normally (9/9)/9=0, instead of 9/(9/9)=9?

Lata!

On Aug 19, 2008, at 3:36 PM, Limo D. wrote:

being evaluated normally (9/9)/9=0, instead of 9/(9/9)=9?

Lata!

Mine is fine with it:
irb> 567
(irb):17: warning: in a**b, b may be too big
=> Infinity

What ruby do you have that crashes?

-Rob

On Aug 19, 2008, at 2:36 PM, Limo D. wrote:

My contribution to the contest:

567

On 1.9, I get a number of 195,667 digits that starts 736 and ends 635.

Dave

Limo D. [email protected] writes:

My contribution to the contest:

567

deserves a medal for being the least intuitive error message of 2008!

Works fine for me:

\$ irb
irb(main):001:0> 567
=> 73643396061195573182045442760389697209119043099561473825102644208480
80271451222449204242010655986286553096951684440491235491489097071221600
73189280314561194164500176158310362022388644790243471934093460794441233
52773742517692136546608518658769275630499890833988104996453386858963527

and so on

this on my locally compiled irb 0.9.5(05/04/13) on debian

And now, for the real question…

Why is this being evaluated as 5**(6**7), when for instance 9/9/9 is
being evaluated normally (9/9)/9=0, instead of 9/(9/9)=9?

What makes you think either order is the “normal” one?

I’ve installed ruby exactly 8 minutes ago.
Managed to crash it with my fifth ‘Hello World’ attempt.

ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

precedence.

It seems your kung-fu is stronger than mine.

Fine than, try 999. Ouch.

Limo D. wrote:

Why is this being evaluated as 5**(6**7), when for instance 9/9/9 is
being evaluated normally (9/9)/9=0, instead of 9/(9/9)=9?
Exponentiation has reverse precedence as compared to division,
multiplication, etc.

Well, I kindof gathered that so far

Now I’m just trying to poke at the “Principle of Least Astonishment”.

On Tue, Aug 19, 2008 at 12:36 PM, Limo D. [email protected]
wrote:>

Why is this being evaluated as 5**(6**7), when for instance 9/9/9 is
being evaluated normally (9/9)/9=0, instead of 9/(9/9)=9?

Ruby follows the actual mathematical usage, where a^b^c (imagine it
written in tower form) is a^(b^c). I guess this is because (a^b)^c =
a^(bc), so a^(b^c) was the case that needed the compact notation

martin

Limo D. wrote:

I’ve installed ruby exactly 8 minutes ago.
Managed to crash it with my fifth ‘Hello World’ attempt.

ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

precedence.

I tried with the identical version of Ruby on WinXP and I get the “b may
be too large” message. No crash.

On Tue, Aug 19, 2008 at 9:44 PM, Dave T. [email protected] wrote:

On Aug 19, 2008, at 2:36 PM, Limo D. wrote:

My contribution to the contest:

567

On 1.9, I get a number of 195,667 digits that starts 736 and ends 635.
…containing 42 exactly 1922 times.
R.

On 19.08.2008, at 21:44, Dave T. wrote:

On Aug 19, 2008, at 2:36 PM, Limo D. wrote:

My contribution to the contest:

567

On 1.9, I get a number of 195,667 digits that starts 736 and ends 635.

Really?
With 1.9 and 1.8.7, I get a number that starts with the same and ends
with
625. I hope it’s just a typo.

\$ ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin8]
\$ ruby19 --version
ruby 1.9.0 (2008-08-18 revision 0) [i386-darwin8.11.1]

regards, Sandor
Szücs

On Wed, Aug 20, 2008 at 11:38 AM, Sandor
Szücs[email protected] wrote:

Really?
With 1.9 and 1.8.7, I get a number that starts with the same and ends with
625. I hope it’s just a typo.
If I remember modulo calculations from school correctly it surely is a
typo
R.

In article
[email protected],
Limo D. [email protected] wrote:

Well, I kindof gathered that so far

Now I’m just trying to poke at the “Principle of Least Astonishment”.

At least it is only mild astonishment in this case.

Francis

Limo D. wrote:

being evaluated normally (9/9)/9=0, instead of 9/(9/9)=9?
Appears to be working fine on JRuby trunk.

• Charlie