On Thu, 21 Jan 2016, Riccardo (Jack) Lucchetti wrote:

> On Wed, 20 Jan 2016, Allin Cottrell wrote:
>
>> Perhaps we should offer a prize for the first example of actual time-saving 
>> (and/or improvement in accuracy) in sending a calculation of the sort that 
>> might be required in gretl out to julia for computation.
>
> Easy: just take Oleh's recursion example.
>
> <hansl>
> set echo off
> set messages off
>
> function scalar fib(scalar n)
>    return n<2 ? n : fib(n-1) + fib(n-2)
> end function
>
> set stopwatch
> eval fib(30)
> native = $stopwatch
>
> foreign language=julia
>       function fib(n)
>               if n<2
>                       return n
>               else
>                       return fib(n-1)+fib(n-2)
>               end
>       end
>       println(fib(30))
> end foreign
> julia = $stopwatch
>
> print native julia
> </hansl>
>
> <output>
> 832040
> 832040
>
>
>         native =  71.920384
>
>          julia =  4.4912745
> </output>

For sure, that's an example of something that julia does a lot faster 
than gretl. But my notional prize is not yet awarded since if I insert 
this native function

<hansl>
function scalar smartfib(scalar n)
   if n < 2
     return n
   endif
   scalar r5 = sqrt(5)
   return (((1+r5)/2)^n - ((1-r5)/2)^n)/r5
end function
</hansl>

and time it as "native_smart", I get

<output>
832040
832040
832040


          native =  35.508119

    native_smart =  8.5512991e-05

           julia =  0.54034932
</output>

Your example shows that recursion is a _lot_ faster in julia; so now 
we want a case where recursion is actually needed.

Allin

Reply via email to