> Hi Jon,
>> E.g. (fibo 8) returns 34, while that should have been the result of
>> (fibo 9).
>> The bugs in fibo and cachedFibo are in lines 6 and 30 where "(if (>
>> 2 N)" should have been "(if (>= 2 N)".
> Yes, I know. :)
>> When this "=" got lost I don't know, but in picoLisp-2.3.5 these
>> things are correct.
> This is not a new "bug". I'm using "(if (> N 2)" since 30 years for such
> simple benchmark purposes, so I didn't care to change. I don't remember
> if I made this up by myself, of if I found it somewhere.
I suggest you add a comment in misc/fibo.l that explains this, in case
there are others (like me) who think that Wolfram|Alpha is the "final
> In any case it is a matter of definition, i.e. where you start counting
> the fibonacci numbers. If you omit the initial zero, you get a proper
> sequence starting with index '1' (as is the convention in PicoLisp):
> : (for N 7 (println N (fibo N)))
> 1 1
> 2 2
> 3 3
> 4 5
> 5 8
> 6 13
> 7 21
> -> 21
>> The bugs are here as well:
> Right, in this place it should better not be used.
The strange thing is that here, your return value from (fibo 1000) seems
to agree with Wolfram|Alpha.
>> Something else:
>> The function 'bench' seems not to be available in pil32 and
>> pil64emu. Why not make it available?
> In fact it is. But in all systems you must switch on debug mode (with
> the '+') to have it loaded:
> $ pil +
> : (pp 'bench)
> (de bench Prg
> (let U (usec)
> (prog1 (run Prg 1)
> (out 2
> (format (*/ (- (usec) U) 1000) 3)
> " sec" ) ) ) ) )
> -> bench
Then I suggest a few words in the docs that says "only in debug mode".
(This may be the case for other functions in the docs also?)
>> I tried to start pil64emu this way: bin/picolisp misc/fibo.l
>> .. but that gave me a "Segmentation fault".
> I think it crashes because of the beta version. But the above call is by
> itself also not wise, because it doesn't properly set up the runtime
> environment needed for this file.
> You should try
> $ ./pil misc/fibo.l
> or at least
> $ bin/picolisp lib.l lib/misc.l misc/fibo.l
> to have everything that's needed.
> But it will also not work, because the 'native' function is still
> missing in pil64emu.
>> Have a nice weekend!
> You and everybody else, too! :)
> - Alex