equivalent to your explicit function, but slow on my computer

 timespacex '({: , +/)^:(474998) 1 1x ' 
63.3016 1.31469e6 


Your's may be faster due to special code for inplace assignments.

but there may be shortcuts to finding a direct fib number.


----- Original Message -----
From: Jon Hough <jgho...@outlook.com>
To: "programm...@jsoftware.com" <programm...@jsoftware.com>
Cc: 
Sent: Tuesday, September 1, 2015 8:35 PM
Subject: Re: [Jprogramming] Comparing J speed

Apologies for the messed up fib2, I'm seriously considering dumping outlook.com.

> From: jgho...@outlook.com
> To: programm...@jsoftware.com
> Date: Wed, 2 Sep 2015 01:32:45 +0100
> Subject: [Jprogramming] Comparing J speed
> 
> In this talk https://www.youtube.com/watch?v=apBWkBDVlow
> the presenter attempts to show Haskell hasn't sacrificed speed for 
> expressiveness by comparing a Java Fibonacci calculator to his Haskell 
> one.(skip to the 18:00 mark).Essentially, to calculate the 475000th Fibonacci 
> number, it took his Java program ~8 seconds, while the very terse Haskell 
> program took ~6 seconds.
> So I tried to do the same in J. My first attempt, used a tacit, memoized verb 
> fib1 =:1:`(($:@:<:) + ($:@:-&2))@.(2&<)M.
> 
> 
> However, this gives a stack error for large numbers (~100000). So I decided 
> to make an imperative verb,
> 
> 
> fib2 =: 3 : 0 x1 =. x:1 x2 =. x:1 c =. 0 while. c < y do. tmp =.  x1 x1 =. x2 
> x2 =. tmp + x1 c=.c+1 end. x2 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> ) 
> 
> 
> This gets there, I can calculate the 475000th Fibonacci number, but 
> 
> 
> timespacex 'fib2 475000' 
> 
> 
> 
> 
> 36.183 1.31558e6
> 
> 
> It takes 36 seconds (of course, my hardware is different to that in the 
> presentation, but still...). 
> 
> 
> Is there a speedier way to do this in J? Preferably a tacit one liner would 
> also be good.
> 
> 
> Thanks, 
> Jon 
>  
>                            
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

                          
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to