Hi Alex, > 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 word" ... <http://www.wolframalpha.com/input/?i=fibonacci+9> > 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: >> <http://rosettacode.org/wiki/Fibonacci_sequence#PicoLisp> > > 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 > (prinl > (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?) >> And: >> 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! :) > > Cheers, > - Alex /Jon -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe