Since all of your versions of log-factorial show roughly similar run-times, I'll concentrate on LOG-FACTORIAL-C. Timings are on a SparcStation 1+, 20mhz clock, 24meg memory. With CMU Common Lisp 16e: common-lisp-user> (time (log-factorial-c 10000)) Evaluation took: 0.43 seconds of real time 0.4 seconds of user run time 0.03 seconds of system run time 0 page faults and 160000 bytes consed. 82108.95 With Franz Allegro "4.0.1 [Sun4] (2/8/91)": (time (log-factorial-c 10000)) cpu time (non-gc) 1984 msec user, 367 msec system cpu time (gc) 533 msec user, 150 msec system cpu time (total) 2517 msec user, 517 msec system real time 3538 msec space allocation: 2 cons cells, 0 symbols, 1280016 other bytes, 82108.95 I wrote a modified version of LOG-FACTORIAL-C with declarations that are more to CMU CL's liking: (defun log-factorial-cmu (n) "Calculates log of n-factorial non-recursively." (declare (fixnum n)) (let ((result 0.0)) (declare (single-float result)) (do ((i 1 (1+ i))) ((> i n) result) (declare (fixnum i)) (incf result (the single-float (log (coerce i 'single-float))))))) With CMU Common Lisp 16e: common-lisp-user> (time (log-factorial-cmu 10000)) Evaluation took: 0.23 seconds of real time 0.23 seconds of user run time 0.0 seconds of system run time 0 page faults and 8 bytes consed. 82108.95 With Franz Allegro "4.0.1 [Sun4] (2/8/91)": (time (log-factorial-cmu 10000)) cpu time (non-gc) 3383 msec user, 317 msec system cpu time (gc) 567 msec user, 0 msec system cpu time (total) 3950 msec user, 317 msec system real time 4363 msec space allocation: 2 cons cells, 0 symbols, 1600016 other bytes, 82108.95 (time (log-factorial-a 10000)) (time (log-factorial-c 10000)) (time (log-factorial-d 10000)) (time (log-factorial-e 10000)) (time (log-factorial-f 10000)) (time (log-factorial-cmu 10000)) cpu time (non-gc) 2166 msec user, 284 msec system cpu time (gc) 8100 msec user, 66 msec system cpu time (total) 10266 msec user, 350 msec system real time 10634 msec space allocation: 2 cons cells, 0 symbols, 1280016 other bytes, 82108.95 cpu time (non-gc) 2016 msec user, 66 msec system cpu time (gc) 517 msec user, 17 msec system cpu time (total) 2533 msec user, 83 msec system real time 2671 msec space allocation: 2 cons cells, 0 symbols, 1280016 other bytes, 82108.95 cpu time (non-gc) 2016 msec user, 0 msec system cpu time (gc) 517 msec user, 17 msec system cpu time (total) 2533 msec user, 17 msec system real time 2538 msec space allocation: 2 cons cells, 0 symbols, 1280016 other bytes, 82108.95 cpu time (non-gc) 1934 msec user, 16 msec system cpu time (gc) 516 msec user, 0 msec system cpu time (total) 2450 msec user, 16 msec system real time 2468 msec space allocation: 2 cons cells, 0 symbols, 1280016 other bytes, 82108.95 cpu time (non-gc) 1933 msec user, 0 msec system cpu time (gc) 534 msec user, 0 msec system cpu time (total) 2467 msec user, 0 msec system real time 2469 msec space allocation: 2 cons cells, 0 symbols, 1280016 other bytes, 82108.95 cpu time (non-gc) 2434 msec user, 33 msec system cpu time (gc) 516 msec user, 0 msec system cpu time (total) 2950 msec user, 33 msec system real time 2996 msec space allocation: 2 cons cells, 0 symbols, 1600032 other bytes, 82108.95 ;;;; Same machine, CMU Common Lisp 16e common-lisp-user> (time (log-factorial-a 10000)) (time (log-factorial-c 10000)) (time (log-factorial-d 10000)) (time (log-factorial-e 10000)) (time (log-factorial-f 10000)) (time (log-factorial-cmu 10000)) Compiling LAMBDA NIL: Compiling Top-Level Form: Evaluation took: 0.47 seconds of real time 0.46 seconds of user run time 0.01 seconds of system run time 0 page faults and 160000 bytes consed. 82108.95 common-lisp-user> Compiling LAMBDA NIL: Compiling Top-Level Form: Evaluation took: 0.43 seconds of real time 0.4 seconds of user run time 0.03 seconds of system run time 0 page faults and 160000 bytes consed. 82108.95 common-lisp-user> Compiling LAMBDA NIL: Compiling Top-Level Form: Evaluation took: 0.47 seconds of real time 0.44 seconds of user run time 0.03 seconds of system run time 0 page faults and 160000 bytes consed. 82108.95 common-lisp-user> Compiling LAMBDA NIL: Compiling Top-Level Form: Evaluation took: 0.42 seconds of real time 0.4 seconds of user run time 0.02 seconds of system run time 0 page faults and 160000 bytes consed. 82108.95 common-lisp-user> Compiling LAMBDA NIL: Compiling Top-Level Form: Evaluation took: 0.43 seconds of real time 0.4 seconds of user run time 0.03 seconds of system run time 0 page faults and 160000 bytes consed. 82108.95 common-lisp-user> Compiling LAMBDA NIL: Compiling Top-Level Form: [GC threshold exceeded with 1,138,712 bytes in use. Commencing GC.] [GC completed with 141,904 bytes retained and 996,808 bytes freed.] [GC will next occur when at least 1,141,904 bytes are in use.] Evaluation took: 0.23 seconds of real time 0.23 seconds of user run time 0.0 seconds of system run time 0 page faults and 8 bytes consed. 82108.95 common-lisp-user>