Shortest Ruby crash #49

L

Limo Driver

My contribution to the contest:

5**6**7

This baby throws "Errno::EBADF: Bad file descriptor", which I think
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!
 
R

Rob Biedenharn

My contribution to the contest:

5**6**7

This baby throws "Errno::EBADF: Bad file descriptor", which I think
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!


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

What ruby do you have that crashes?

-Rob

Rob Biedenharn http://agileconsultingllc.com
(e-mail address removed)
 
J

Joost Diepenmaat

Limo Driver said:
My contribution to the contest:

5**6**7

This baby throws "Errno::EBADF: Bad file descriptor", which I think
deserves a medal for being the least intuitive error message of 2008!

Works fine for me:

$ irb
irb(main):001:0> 5**6**7
=> 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?
 
L

Limo Driver

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]

It's not really about the crash, it's about the interesting operation
precedence.
 
J

Joshua Ballanco

Limo said:
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.
 
L

Limo Driver

Well, I kindof gathered that so far :/

Now I'm just trying to poke at the "Principle of Least Astonishment".
 
M

Martin DeMello

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
 
T

Tim Hunter

Limo said:
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]

It's not really about the crash, it's about the interesting operation
precedence.

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

Sandor Szücs

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 =20=

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=FCcs
--
 
R

Robert Dober

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

Charles Oliver Nutter

Limo said:
My contribution to the contest:

5**6**7

This baby throws "Errno::EBADF: Bad file descriptor", which I think
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?

Appears to be working fine on JRuby trunk.

- Charlie
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,743
Messages
2,569,477
Members
44,898
Latest member
BlairH7607

Latest Threads

Top