; SLIME 2006-04-20
;;;; Compile file /home/mortis/personal/projects/project-euler/sr ...
; compiling file "/home/mortis/personal/projects/project-euler/src/cl/problem-35.lisp" (written 01 OCT 2007 11:27:10 PM):

; /home/mortis/personal/projects/project-euler/src/cl/problem-35.fasl written
; compilation finished in 0:00:00
;;;; (time  (let ((num-circular 0))    (loop for ii from 1 to 100 ...
;;;; (defun primes-under (num)   (let ((res (list 2)))     (loop  ...
;;;; (primes-under 30) ...
;;;; (defun primes-under (num)   (let ((res (list 2)))     (loop  ...
STYLE-WARNING: redefining PRIMES-UNDER in DEFUN
num-circular:1148
Evaluation took:
  130.6 seconds of real time
  116.04325 seconds of user run time
  1.092069 seconds of system run time
  [Run times include 11.033 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  14,222,661,752 bytes consed.
;;;; (primes-under 30) ...
;;;; (defvar *primes-under-a-million* (primes-under 1000000)) ...
;;;; (time  (let ((num-circular 0))    (loop for prime in *primes ...
CL-USER> 3
3
num-circular:560
Evaluation took:
  44.955 seconds of real time
  40.254517 seconds of user run time
  0.496031 seconds of system run time
  [Run times include 5.217 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  6,665,530,848 bytes consed.
CL-USER> (length *primes-under-a-million*)
78498
;;;; (with-open-file (out "/home/mortis/personal/projects/project ...
;;;; (loop for num from 2 to 99       do       (when (all-rotatio ...
ok: 2
ok: 3
ok: 5
ok: 7
ok: 8
ok: 10
ok: 11
ok: 13
ok: 14
ok: 17
ok: 22
ok: 23
ok: 26
ok: 28
ok: 29
ok: 31
ok: 32
ok: 34
ok: 37
ok: 38
ok: 41
ok: 43
ok: 44
ok: 47
ok: 62
ok: 67
ok: 68
ok: 71
ok: 73
ok: 74
ok: 76
ok: 79
ok: 82
ok: 83
ok: 86
ok: 88
ok: 92
ok: 97
;;;; (assert (all-rotations-prime 2)) ...
;;;; (assert (all-rotations-prime 197)) ...
;;;; (assert (not (all-rotations-prime 17))) ...
;;;; (defun all-rotations-prime (num)   (let ((result t))     (lo ...
STYLE-WARNING: redefining ALL-ROTATIONS-PRIME in DEFUN
;;;; (assert (not (all-rotations-prime 17))) ...
trying:17 => 71 ? T
trying:17 => 17 ? T
trying:17 => 71 ? T
trying:17 => 17 ? T
;;;; (not (all-rotations-prime 17)) ...
trying:17 => 71 ? T
trying:17 => 17 ? T
;;;; (not (all-rotations-prime 92)) ...
trying:92 => 29 ? T
trying:92 => 92 ? T
;;;; (assert (not (all-rotations-prime 92))) ...
trying:92 => 29 ? T
trying:92 => 92 ? T
;;;; (all-rotations-prime 92) ...
trying:92 => 29 ? T
trying:92 => 92 ? T
;;;; (all-rotations-prime 92) ...
trying:92 => 29 ? T
trying:92 => 92 ? T
;;;; (prime? 92) ...
;;;; (defun prime? (num)   (when (= 2 num)     (return-from prime ...
STYLE-WARNING: redefining PRIME? in DEFUN
;;;; (assert (not (prime? 4))) ...
;;;; (assert (not (prime? 92))) ...
;;;; (prime? 92) ...
;;;; (defun prime? (num)   (when (= 2 num)     (return-from prime ...
STYLE-WARNING: redefining PRIME? in DEFUN
;;;; (assert (not (prime? 92))) ...
num:92 fact:10
num:92 fact:9
num:92 fact:7
num:92 fact:5
num:92 fact:3
;;;; (defun prime? (num)   (when (= 2 num)     (return-from prime ...
STYLE-WARNING: redefining PRIME? in DEFUN
;;;; (not (prime? 92)) ...
num:92 fact:10
num:92 fact:9
num:92 fact:7
num:92 fact:5
num:92 fact:3
;;;; (defun prime? (num)   (when (= 2 num)     (return-from prime ...
STYLE-WARNING: redefining PRIME? in DEFUN
;;;; (assert (not (prime? 92))) ...
num:92 fact:10
num:92 fact:9
num:92 fact:7
num:92 fact:5
num:92 fact:3
;;;; (not (prime? 92)) ...
num:92 fact:10
num:92 fact:9
num:92 fact:7
num:92 fact:5
num:92 fact:3
;;;; (defun prime? (num)   (when (= 2 num)     (return-from prime ...
STYLE-WARNING: redefining PRIME? in DEFUN
;;;; (not (prime? 92)) ...
num:92 fact:10
num:92 fact:9
num:92 fact:7
num:92 fact:5
num:92 fact:3
;;;; (defun prime? (num)   (when (= 2 num)     (return-from prime ...
STYLE-WARNING: redefining PRIME? in DEFUN
;;;; (not (prime? 92)) ...
num:92 fact:10
num:92 fact:9
num:92 fact:7
num:92 fact:5
num:92 fact:3
;;;; (defun prime? (num)   (when (= 2 num)     (return-from prime ...
STYLE-WARNING: redefining PRIME? in DEFUN
;;;; (not (prime? 92)) ...
num:92 fact:10
num:92 fact:9
num:92 fact:7
num:92 fact:5
num:92 fact:3
falling back to mod 2: 0
;;;; (defun prime? (num)   (when (= 2 num)     (return-from prime ...
STYLE-WARNING: redefining PRIME? in DEFUN
;;;; (not (prime? 92)) ...
num:92 fact:10
num:92 fact:9
num:92 fact:7
num:92 fact:5
num:92 fact:3
falling back to mod 2: 0
;;;; (prime? 3) ...
num:3 fact:2
falling back to mod 2: 1
;;;; (prime? 2) ...
;;;; (prime? 4) ...
num:4 fact:2
found fact 0 == 4 % 2
;;;; (prime? 5) ...
num:5 fact:3
falling back to mod 2: 1
;;;; (prime? 6) ...
num:6 fact:3
found fact 0 == 6 % 3
;;;; (prime? 6) ...
num:6 fact:3
found fact 0 == 6 % 3
;;;; (prime? 92) ...
num:92 fact:10
num:92 fact:9
num:92 fact:7
num:92 fact:5
num:92 fact:3
falling back to mod 2: 0
;;;; (assert (not (prime? 92))) ...
num:92 fact:10
num:92 fact:9
num:92 fact:7
num:92 fact:5
num:92 fact:3
falling back to mod 2: 0
;;;; (assert      (prime? 2)) ...
;;;; (assert      (prime? 3)) ...
num:3 fact:2
falling back to mod 2: 1
;;;; (assert (not (prime? 4))) ...
num:4 fact:2
found fact 0 == 4 % 2
;;;; (assert      (prime? 5)) ...
num:5 fact:3
falling back to mod 2: 1
;;;; (assert (not (prime? 6))) ...
num:6 fact:3
found fact 0 == 6 % 3
;;;; (defun prime? (num)   (when (= 2 num)     (return-from prime ...
STYLE-WARNING: redefining PRIME? in DEFUN
;;;; (loop for num from 2 to 99       do       (when (all-rotatio ...
trying:2 => 2 ? T
ok: 2
trying:3 => 3 ? T
ok: 3
trying:4 => 4 ? NIL
trying:5 => 5 ? T
ok: 5
trying:6 => 6 ? NIL
trying:7 => 7 ? T
ok: 7
trying:8 => 8 ? NIL
trying:9 => 9 ? NIL
trying:10 => 1 ? T
trying:10 => 10 ? NIL
trying:11 => 11 ? T
trying:11 => 11 ? T
ok: 11
trying:12 => 21 ? NIL
trying:13 => 31 ? T
trying:13 => 13 ? T
ok: 13
trying:14 => 41 ? T
trying:14 => 14 ? NIL
trying:15 => 51 ? NIL
trying:16 => 61 ? T
trying:16 => 16 ? NIL
trying:17 => 71 ? T
trying:17 => 17 ? T
ok: 17
trying:18 => 81 ? NIL
trying:19 => 91 ? NIL
trying:20 => 2 ? T
trying:20 => 20 ? NIL
trying:21 => 12 ? NIL
trying:22 => 22 ? NIL
trying:23 => 32 ? NIL
trying:24 => 42 ? NIL
trying:25 => 52 ? NIL
trying:26 => 62 ? NIL
trying:27 => 72 ? NIL
trying:28 => 82 ? NIL
trying:29 => 92 ? NIL
trying:30 => 3 ? T
trying:30 => 30 ? NIL
trying:31 => 13 ? T
trying:31 => 31 ? T
ok: 31
trying:32 => 23 ? T
trying:32 => 32 ? NIL
trying:33 => 33 ? NIL
trying:34 => 43 ? T
trying:34 => 34 ? NIL
trying:35 => 53 ? T
trying:35 => 35 ? NIL
trying:36 => 63 ? NIL
trying:37 => 73 ? T
trying:37 => 37 ? T
ok: 37
trying:38 => 83 ? T
trying:38 => 38 ? NIL
trying:39 => 93 ? NIL
trying:40 => 4 ? NIL
trying:41 => 14 ? NIL
trying:42 => 24 ? NIL
trying:43 => 34 ? NIL
trying:44 => 44 ? NIL
trying:45 => 54 ? NIL
trying:46 => 64 ? NIL
trying:47 => 74 ? NIL
trying:48 => 84 ? NIL
trying:49 => 94 ? NIL
trying:50 => 5 ? T
trying:50 => 50 ? NIL
trying:51 => 15 ? NIL
trying:52 => 25 ? NIL
trying:53 => 35 ? NIL
trying:54 => 45 ? NIL
trying:55 => 55 ? NIL
trying:56 => 65 ? NIL
trying:57 => 75 ? NIL
trying:58 => 85 ? NIL
trying:59 => 95 ? NIL
trying:60 => 6 ? NIL
trying:61 => 16 ? NIL
trying:62 => 26 ? NIL
trying:63 => 36 ? NIL
trying:64 => 46 ? NIL
trying:65 => 56 ? NIL
trying:66 => 66 ? NIL
trying:67 => 76 ? NIL
trying:68 => 86 ? NIL
trying:69 => 96 ? NIL
trying:70 => 7 ? T
trying:70 => 70 ? NIL
trying:71 => 17 ? T
trying:71 => 71 ? T
ok: 71
trying:72 => 27 ? NIL
trying:73 => 37 ? T
trying:73 => 73 ? T
ok: 73
trying:74 => 47 ? T
trying:74 => 74 ? NIL
trying:75 => 57 ? NIL
trying:76 => 67 ? T
trying:76 => 76 ? NIL
trying:77 => 77 ? NIL
trying:78 => 87 ? NIL
trying:79 => 97 ? T
trying:79 => 79 ? T
ok: 79
trying:80 => 8 ? NIL
trying:81 => 18 ? NIL
trying:82 => 28 ? NIL
trying:83 => 38 ? NIL
trying:84 => 48 ? NIL
trying:85 => 58 ? NIL
trying:86 => 68 ? NIL
trying:87 => 78 ? NIL
trying:88 => 88 ? NIL
trying:89 => 98 ? NIL
trying:90 => 9 ? NIL
trying:91 => 19 ? T
trying:91 => 91 ? NIL
trying:92 => 29 ? T
trying:92 => 92 ? NIL
trying:93 => 39 ? NIL
trying:94 => 49 ? NIL
trying:95 => 59 ? T
trying:95 => 95 ? NIL
trying:96 => 69 ? NIL
trying:97 => 79 ? T
trying:97 => 97 ? T
ok: 97
trying:98 => 89 ? T
trying:98 => 98 ? NIL
trying:99 => 99 ? NIL
;;;; (defun all-rotations-prime (num)   (let ((result t))     (lo ...
STYLE-WARNING: redefining ALL-ROTATIONS-PRIME in DEFUN
;;;; (loop for num from 2 to 99       do       (when (all-rotatio ...
ok: 2
ok: 3
ok: 5
ok: 7
ok: 11
ok: 13
ok: 17
ok: 31
ok: 37
ok: 71
ok: 73
ok: 79
ok: 97
;;;; (assert (equalp 	 '(2 3 5 7 11 13 17 31 37 71 73 79 97) 	 (l ...
ok: 2
ok: 3
ok: 5
ok: 7
ok: 11
ok: 13
ok: 17
ok: 31
ok: 37
ok: 71
ok: 73
ok: 79
ok: 97
;;;; (let ((res (list))) 	   (loop for num from 2 to 99 		 do 		  ...
ok: 2
ok: 3
ok: 5
ok: 7
ok: 11
ok: 13
ok: 17
ok: 31
ok: 37
ok: 71
ok: 73
ok: 79
ok: 97
;;;; (assert (equalp 	 '(2 3 5 7 11 13 17 31 37 71 73 79 97) 	 (s ...
ok: 2
ok: 3
ok: 5
ok: 7
ok: 11
ok: 13
ok: 17
ok: 31
ok: 37
ok: 71
ok: 73
ok: 79
ok: 97
;;;; (time  (let ((num-circular 0))    (loop for prime in *primes ...
num-circular:55
Evaluation took:
  43.541 seconds of real time
  39.47447 seconds of user run time
  0.464029 seconds of system run time
  [Run times include 5.856 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  6,663,898,832 bytes consed.
;;;; Compile file /home/mortis/personal/projects/project-euler/sr ...
; compiling file "/home/mortis/personal/projects/project-euler/src/cl/problem-34.lisp" (written 01 OCT 2007 11:50:59 PM):

; /home/mortis/personal/projects/project-euler/src/cl/problem-34.fasl written
; compilation finished in 0:00:00
STYLE-WARNING: redefining EXPLODE-STRING in DEFUN
;;;; (explode-string->numbers "123") ...
;;;; (defun fib-sum (num)   (apply #'+ (mapcar #'fib (explode-str ...
;;;; (fib-sum 145) ...
;;;; (mapcar #'fib (explode-string->numbers (format nil "~d" num) ...
;;;; (mapcar #'fib (explode-string->numbers (format nil "~d" 145) ...
;;;; (fib 4) ...
;;;; (defun fact (n)   (loop    for ii from 1 to n    for ff = ii ...
; in: LAMBDA NIL
;     (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)
; 
; caught ERROR:
;   (in macroexpansion of (LOOP FOR II ...))
;   (hint: For more precise location, try *BREAK-ON-SIGNALS*.)
;   unknown LOOP keyword: FINALL
;   current LOOP context: FINALL (RETURN FF).

;     (SB-INT:NAMED-LAMBDA FACT (N)
;                        (BLOCK FACT
;                          (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)))
; ==>
;   #'(SB-INT:NAMED-LAMBDA FACT (N)
;                          (BLOCK FACT
;                            (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)))
; 
; caught STYLE-WARNING:
;   The variable N is defined but never used.
; 
; compilation unit finished
;   caught 1 ERROR condition
;   caught 1 STYLE-WARNING condition
;;;; (fact 5) ...
;;;; (defun fact (n)   (loop    for ii from 1 to n    for ff = ii ...
STYLE-WARNING: redefining FACT in DEFUN
;;;; (fact 5) ...
;;;; (defun fib-sum (num)   (apply #'+ (mapcar #'fact (explode-st ...
STYLE-WARNING: redefining FIB-SUM in DEFUN
;;;; (defun fact-sum (num)   (apply #'+ (mapcar #'fact (explode-s ...
;;;; (fact-sum 145) ...
;;;; (assert (= 145 (fact-sum 145))) ...
;;;; (loop for ii from 1 to 100       do       (format t "ii:~d f ...
ii:1 fact-sum:1
ii:2 fact-sum:2
ii:3 fact-sum:6
ii:4 fact-sum:24
ii:5 fact-sum:120
ii:6 fact-sum:720
ii:7 fact-sum:5040
ii:8 fact-sum:40320
ii:9 fact-sum:362880
;;;; (fact-sum 10) ...
;;;; (format nil "~d" 10) ...
;;;; (explode-string->numbers (format nil "~d" 10)) ...
;;;; (defun fact (n)   (when (= 0 n)     (return-from fact 1))    ...
STYLE-WARNING: redefining FACT in DEFUN
;;;; (fact-sum 10) ...
;;;; (loop for ii from 1 to 100       do       (format t "ii:~d f ...
ii:1 fact-sum:1
ii:2 fact-sum:2
ii:3 fact-sum:6
ii:4 fact-sum:24
ii:5 fact-sum:120
ii:6 fact-sum:720
ii:7 fact-sum:5040
ii:8 fact-sum:40320
ii:9 fact-sum:362880
ii:10 fact-sum:2
ii:11 fact-sum:2
ii:12 fact-sum:3
ii:13 fact-sum:7
ii:14 fact-sum:25
ii:15 fact-sum:121
ii:16 fact-sum:721
ii:17 fact-sum:5041
ii:18 fact-sum:40321
ii:19 fact-sum:362881
ii:20 fact-sum:3
ii:21 fact-sum:3
ii:22 fact-sum:4
ii:23 fact-sum:8
ii:24 fact-sum:26
ii:25 fact-sum:122
ii:26 fact-sum:722
ii:27 fact-sum:5042
ii:28 fact-sum:40322
ii:29 fact-sum:362882
ii:30 fact-sum:7
ii:31 fact-sum:7
ii:32 fact-sum:8
ii:33 fact-sum:12
ii:34 fact-sum:30
ii:35 fact-sum:126
ii:36 fact-sum:726
ii:37 fact-sum:5046
ii:38 fact-sum:40326
ii:39 fact-sum:362886
ii:40 fact-sum:25
ii:41 fact-sum:25
ii:42 fact-sum:26
ii:43 fact-sum:30
ii:44 fact-sum:48
ii:45 fact-sum:144
ii:46 fact-sum:744
ii:47 fact-sum:5064
ii:48 fact-sum:40344
ii:49 fact-sum:362904
ii:50 fact-sum:121
ii:51 fact-sum:121
ii:52 fact-sum:122
ii:53 fact-sum:126
ii:54 fact-sum:144
ii:55 fact-sum:240
ii:56 fact-sum:840
ii:57 fact-sum:5160
ii:58 fact-sum:40440
ii:59 fact-sum:363000
ii:60 fact-sum:721
ii:61 fact-sum:721
ii:62 fact-sum:722
ii:63 fact-sum:726
ii:64 fact-sum:744
ii:65 fact-sum:840
ii:66 fact-sum:1440
ii:67 fact-sum:5760
ii:68 fact-sum:41040
ii:69 fact-sum:363600
ii:70 fact-sum:5041
ii:71 fact-sum:5041
ii:72 fact-sum:5042
ii:73 fact-sum:5046
ii:74 fact-sum:5064
ii:75 fact-sum:5160
ii:76 fact-sum:5760
ii:77 fact-sum:10080
ii:78 fact-sum:45360
ii:79 fact-sum:367920
ii:80 fact-sum:40321
ii:81 fact-sum:40321
ii:82 fact-sum:40322
ii:83 fact-sum:40326
ii:84 fact-sum:40344
ii:85 fact-sum:40440
ii:86 fact-sum:41040
ii:87 fact-sum:45360
ii:88 fact-sum:80640
ii:89 fact-sum:403200
ii:90 fact-sum:362881
ii:91 fact-sum:362881
ii:92 fact-sum:362882
ii:93 fact-sum:362886
ii:94 fact-sum:362904
ii:95 fact-sum:363000
ii:96 fact-sum:363600
ii:97 fact-sum:367920
ii:98 fact-sum:403200
ii:99 fact-sum:725760
ii:100 fact-sum:3
;;;; (* 9999999 362880) ...
;;;; (* 7 362880) ...
;;;; (* 7 362880) ...
;;;; (* 6 362880) ...
;;;; (* 6 362880) ...
;;;; (* 5 362880) ...
;;;; (* 4 362880) ...
;;;; (* 4 362880) ...
;;;; (loop for ii from 1 to 100       do       (format t "ii:~d ~ ...
ii:1 1 fact-sum:1
ii:2 2 fact-sum:2
ii:3 6 fact-sum:6
ii:4 24 fact-sum:24
ii:5 120 fact-sum:120
ii:6 720 fact-sum:720
ii:7 5040 fact-sum:5040
ii:8 40320 fact-sum:40320
ii:9 362880 fact-sum:362880
ii:10 3628800 fact-sum:2
ii:11 39916800 fact-sum:2
ii:12 479001600 fact-sum:3
ii:13 6227020800 fact-sum:7
ii:14 87178291200 fact-sum:25
ii:15 1307674368000 fact-sum:121
ii:16 20922789888000 fact-sum:721
ii:17 355687428096000 fact-sum:5041
ii:18 6402373705728000 fact-sum:40321
ii:19 121645100408832000 fact-sum:362881
ii:20 2432902008176640000 fact-sum:3
ii:21 51090942171709440000 fact-sum:3
ii:22 1124000727777607680000 fact-sum:4
ii:23 25852016738884976640000 fact-sum:8
ii:24 620448401733239439360000 fact-sum:26
ii:25 15511210043330985984000000 fact-sum:122
ii:26 403291461126605635584000000 fact-sum:722
ii:27 10888869450418352160768000000 fact-sum:5042
ii:28 304888344611713860501504000000 fact-sum:40322
ii:29 8841761993739701954543616000000 fact-sum:362882
ii:30 265252859812191058636308480000000 fact-sum:7
ii:31 8222838654177922817725562880000000 fact-sum:7
ii:32 263130836933693530167218012160000000 fact-sum:8
ii:33 8683317618811886495518194401280000000 fact-sum:12
ii:34 295232799039604140847618609643520000000 fact-sum:30
ii:35 10333147966386144929666651337523200000000 fact-sum:126
ii:36 371993326789901217467999448150835200000000 fact-sum:726
ii:37 13763753091226345046315979581580902400000000 fact-sum:5046
ii:38 523022617466601111760007224100074291200000000 fact-sum:40326
ii:39 20397882081197443358640281739902897356800000000 fact-sum:362886
ii:40 815915283247897734345611269596115894272000000000 fact-sum:25
ii:41 33452526613163807108170062053440751665152000000000 fact-sum:25
ii:42 1405006117752879898543142606244511569936384000000000 fact-sum:26
ii:43 60415263063373835637355132068513997507264512000000000 fact-sum:30
ii:44 2658271574788448768043625811014615890319638528000000000 fact-sum:48
ii:45 119622220865480194561963161495657715064383733760000000000 fact-sum:144
ii:46 5502622159812088949850305428800254892961651752960000000000 fact-sum:744
ii:47 258623241511168180642964355153611979969197632389120000000000 fact-sum:5064
ii:48 12413915592536072670862289047373375038521486354677760000000000 fact-sum:40344
ii:49 608281864034267560872252163321295376887552831379210240000000000 fact-sum:362904
ii:50 30414093201713378043612608166064768844377641568960512000000000000 fact-sum:121
ii:51 1551118753287382280224243016469303211063259720016986112000000000000 fact-sum:121
ii:52 80658175170943878571660636856403766975289505440883277824000000000000 fact-sum:122
ii:53 4274883284060025564298013753389399649690343788366813724672000000000000 fact-sum:126
ii:54 230843697339241380472092742683027581083278564571807941132288000000000000 fact-sum:144
ii:55 12696403353658275925965100847566516959580321051449436762275840000000000000 fact-sum:240
ii:56 710998587804863451854045647463724949736497978881168458687447040000000000000 fact-sum:840
ii:57 40526919504877216755680601905432322134980384796226602145184481280000000000000 fact-sum:5160
ii:58 2350561331282878571829474910515074683828862318181142924420699914240000000000000 fact-sum:40440
ii:59 138683118545689835737939019720389406345902876772687432540821294940160000000000000 fact-sum:363000
ii:60 8320987112741390144276341183223364380754172606361245952449277696409600000000000000 fact-sum:721
ii:61 507580213877224798800856812176625227226004528988036003099405939480985600000000000000 fact-sum:721
ii:62 31469973260387937525653122354950764088012280797258232192163168247821107200000000000000 fact-sum:722
ii:63 1982608315404440064116146708361898137544773690227268628106279599612729753600000000000000 fact-sum:726
ii:64 126886932185884164103433389335161480802865516174545192198801894375214704230400000000000000 fact-sum:744
ii:65 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000 fact-sum:840
ii:66 544344939077443064003729240247842752644293064388798874532860126869671081148416000000000000000 fact-sum:1440
ii:67 36471110918188685288249859096605464427167635314049524593701628500267962436943872000000000000000 fact-sum:5760
ii:68 2480035542436830599600990418569171581047399201355367672371710738018221445712183296000000000000000 fact-sum:41040
ii:69 171122452428141311372468338881272839092270544893520369393648040923257279754140647424000000000000000 fact-sum:363600
ii:70 11978571669969891796072783721689098736458938142546425857555362864628009582789845319680000000000000000 fact-sum:5041
ii:71 850478588567862317521167644239926010288584608120796235886430763388588680378079017697280000000000000000 fact-sum:5041
ii:72 61234458376886086861524070385274672740778091784697328983823014963978384987221689274204160000000000000000 fact-sum:5042
ii:73 4470115461512684340891257138125051110076800700282905015819080092370422104067183317016903680000000000000000 fact-sum:5046
ii:74 330788544151938641225953028221253782145683251820934971170611926835411235700971565459250872320000000000000000 fact-sum:5064
ii:75 24809140811395398091946477116594033660926243886570122837795894512655842677572867409443815424000000000000000000 fact-sum:5160
ii:76 1885494701666050254987932260861146558230394535379329335672487982961844043495537923117729972224000000000000000000 fact-sum:5760
ii:77 145183092028285869634070784086308284983740379224208358846781574688061991349156420080065207861248000000000000000000 fact-sum:10080
ii:78 11324281178206297831457521158732046228731749579488251990048962825668835325234200766245086213177344000000000000000000 fact-sum:45360
ii:79 894618213078297528685144171539831652069808216779571907213868063227837990693501860533361810841010176000000000000000000 fact-sum:367920
ii:80 71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000 fact-sum:40321
ii:81 5797126020747367985879734231578109105412357244731625958745865049716390179693892056256184534249745940480000000000000000000 fact-sum:40321
ii:82 475364333701284174842138206989404946643813294067993328617160934076743994734899148613007131808479167119360000000000000000000 fact-sum:40322
ii:83 39455239697206586511897471180120610571436503407643446275224357528369751562996629334879591940103770870906880000000000000000000 fact-sum:40326
ii:84 3314240134565353266999387579130131288000666286242049487118846032383059131291716864129885722968716753156177920000000000000000000 fact-sum:40344
ii:85 281710411438055027694947944226061159480056634330574206405101912752560026159795933451040286452340924018275123200000000000000000000 fact-sum:40440
ii:86 24227095383672732381765523203441259715284870552429381750838764496720162249742450276789464634901319465571660595200000000000000000000 fact-sum:41040
ii:87 2107757298379527717213600518699389595229783738061356212322972511214654115727593174080683423236414793504734471782400000000000000000000 fact-sum:45360
ii:88 185482642257398439114796845645546284380220968949399346684421580986889562184028199319100141244804501828416633516851200000000000000000000 fact-sum:80640
ii:89 16507955160908461081216919262453619309839666236496541854913520707833171034378509739399912570787600662729080382999756800000000000000000000 fact-sum:403200
ii:90 1485715964481761497309522733620825737885569961284688766942216863704985393094065876545992131370884059645617234469978112000000000000000000000 fact-sum:362881
ii:91 135200152767840296255166568759495142147586866476906677791741734597153670771559994765685283954750449427751168336768008192000000000000000000000 fact-sum:362881
ii:92 12438414054641307255475324325873553077577991715875414356840239582938137710983519518443046123837041347353107486982656753664000000000000000000000 fact-sum:362882
ii:93 1156772507081641574759205162306240436214753229576413535186142281213246807121467315215203289516844845303838996289387078090752000000000000000000000 fact-sum:362886
ii:94 108736615665674308027365285256786601004186803580182872307497374434045199869417927630229109214583415458560865651202385340530688000000000000000000000 fact-sum:362904
ii:95 10329978488239059262599702099394727095397746340117372869212250571234293987594703124871765375385424468563282236864226607350415360000000000000000000000 fact-sum:363000
ii:96 991677934870949689209571401541893801158183648651267795444376054838492222809091499987689476037000748982075094738965754305639874560000000000000000000000 fact-sum:363600
ii:97 96192759682482119853328425949563698712343813919172976158104477319333745612481875498805879175589072651261284189679678167647067832320000000000000000000000 fact-sum:367920
ii:98 9426890448883247745626185743057242473809693764078951663494238777294707070023223798882976159207729119823605850588608460429412647567360000000000000000000000 fact-sum:403200
ii:99 933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000 fact-sum:725760
ii:100 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 fact-sum:3
;;;; (loop for ii from 1 to 100       do       (format t "ii:~d f ...
ii:1 fact-sum:1
ii:2 fact-sum:2
ii:3 fact-sum:6
ii:4 fact-sum:24
ii:5 fact-sum:120
ii:6 fact-sum:720
ii:7 fact-sum:5040
ii:8 fact-sum:40320
ii:9 fact-sum:362880
ii:10 fact-sum:2
ii:11 fact-sum:2
ii:12 fact-sum:3
ii:13 fact-sum:7
ii:14 fact-sum:25
ii:15 fact-sum:121
ii:16 fact-sum:721
ii:17 fact-sum:5041
ii:18 fact-sum:40321
ii:19 fact-sum:362881
ii:20 fact-sum:3
ii:21 fact-sum:3
ii:22 fact-sum:4
ii:23 fact-sum:8
ii:24 fact-sum:26
ii:25 fact-sum:122
ii:26 fact-sum:722
ii:27 fact-sum:5042
ii:28 fact-sum:40322
ii:29 fact-sum:362882
ii:30 fact-sum:7
ii:31 fact-sum:7
ii:32 fact-sum:8
ii:33 fact-sum:12
ii:34 fact-sum:30
ii:35 fact-sum:126
ii:36 fact-sum:726
ii:37 fact-sum:5046
ii:38 fact-sum:40326
ii:39 fact-sum:362886
ii:40 fact-sum:25
ii:41 fact-sum:25
ii:42 fact-sum:26
ii:43 fact-sum:30
ii:44 fact-sum:48
ii:45 fact-sum:144
ii:46 fact-sum:744
ii:47 fact-sum:5064
ii:48 fact-sum:40344
ii:49 fact-sum:362904
ii:50 fact-sum:121
ii:51 fact-sum:121
ii:52 fact-sum:122
ii:53 fact-sum:126
ii:54 fact-sum:144
ii:55 fact-sum:240
ii:56 fact-sum:840
ii:57 fact-sum:5160
ii:58 fact-sum:40440
ii:59 fact-sum:363000
ii:60 fact-sum:721
ii:61 fact-sum:721
ii:62 fact-sum:722
ii:63 fact-sum:726
ii:64 fact-sum:744
ii:65 fact-sum:840
ii:66 fact-sum:1440
ii:67 fact-sum:5760
ii:68 fact-sum:41040
ii:69 fact-sum:363600
ii:70 fact-sum:5041
ii:71 fact-sum:5041
ii:72 fact-sum:5042
ii:73 fact-sum:5046
ii:74 fact-sum:5064
ii:75 fact-sum:5160
ii:76 fact-sum:5760
ii:77 fact-sum:10080
ii:78 fact-sum:45360
ii:79 fact-sum:367920
ii:80 fact-sum:40321
ii:81 fact-sum:40321
ii:82 fact-sum:40322
ii:83 fact-sum:40326
ii:84 fact-sum:40344
ii:85 fact-sum:40440
ii:86 fact-sum:41040
ii:87 fact-sum:45360
ii:88 fact-sum:80640
ii:89 fact-sum:403200
ii:90 fact-sum:362881
ii:91 fact-sum:362881
ii:92 fact-sum:362882
ii:93 fact-sum:362886
ii:94 fact-sum:362904
ii:95 fact-sum:363000
ii:96 fact-sum:363600
ii:97 fact-sum:367920
ii:98 fact-sum:403200
ii:99 fact-sum:725760
ii:100 fact-sum:3
;;;; (defvar *maxval* 9999999)  ...
;;;; (time   (let ((num-curious 0))    (loop for ii from 3 to *ma ...
found: 145 145
found: 40585 40585
;;;; (loop for ii from 1 to 100       do       (format t "ii:~d f ...
ii:1 fact-sum:1
ii:2 fact-sum:2
ii:3 fact-sum:6
ii:4 fact-sum:24
ii:5 fact-sum:120
ii:6 fact-sum:720
ii:7 fact-sum:5040
ii:8 fact-sum:40320
ii:9 fact-sum:362880
ii:10 fact-sum:2
ii:11 fact-sum:2
ii:12 fact-sum:3
ii:13 fact-sum:7
ii:14 fact-sum:25
ii:15 fact-sum:121
ii:16 fact-sum:721
ii:17 fact-sum:5041
ii:18 fact-sum:40321
ii:19 fact-sum:362881
ii:20 fact-sum:3
ii:21 fact-sum:3
ii:22 fact-sum:4
ii:23 fact-sum:8
ii:24 fact-sum:26
ii:25 fact-sum:122
ii:26 fact-sum:722
ii:27 fact-sum:5042
ii:28 fact-sum:40322
ii:29 fact-sum:362882
ii:30 fact-sum:7
ii:31 fact-sum:7
ii:32 fact-sum:8
ii:33 fact-sum:12
ii:34 fact-sum:30
ii:35 fact-sum:126
ii:36 fact-sum:726
ii:37 fact-sum:5046
ii:38 fact-sum:40326
ii:39 fact-sum:362886
ii:40 fact-sum:25
ii:41 fact-sum:25
ii:42 fact-sum:26
ii:43 fact-sum:30
ii:44 fact-sum:48
ii:45 fact-sum:144
ii:46 fact-sum:744
ii:47 fact-sum:5064
ii:48 fact-sum:40344
ii:49 fact-sum:362904
ii:50 fact-sum:121
ii:51 fact-sum:121
ii:52 fact-sum:122
ii:53 fact-sum:126
ii:54 fact-sum:144
ii:55 fact-sum:240
ii:56 fact-sum:840
ii:57 fact-sum:5160
ii:58 fact-sum:40440
ii:59 fact-sum:363000
ii:60 fact-sum:721
ii:61 fact-sum:721
ii:62 fact-sum:722
ii:63 fact-sum:726
ii:64 fact-sum:744
ii:65 fact-sum:840
ii:66 fact-sum:1440
ii:67 fact-sum:5760
ii:68 fact-sum:41040
ii:69 fact-sum:363600
ii:70 fact-sum:5041
ii:71 fact-sum:5041
ii:72 fact-sum:5042
ii:73 fact-sum:5046
ii:74 fact-sum:5064
ii:75 fact-sum:5160
ii:76 fact-sum:5760
ii:77 fact-sum:10080
ii:78 fact-sum:45360
ii:79 fact-sum:367920
ii:80 fact-sum:40321
ii:81 fact-sum:40321
ii:82 fact-sum:40322
ii:83 fact-sum:40326
ii:84 fact-sum:40344
ii:85 fact-sum:40440
ii:86 fact-sum:41040
ii:87 fact-sum:45360
ii:88 fact-sum:80640
ii:89 fact-sum:403200
ii:90 fact-sum:362881
ii:91 fact-sum:362881
ii:92 fact-sum:362882
ii:93 fact-sum:362886
ii:94 fact-sum:362904
ii:95 fact-sum:363000
ii:96 fact-sum:363600
ii:97 fact-sum:367920
ii:98 fact-sum:403200
ii:99 fact-sum:725760
ii:100 fact-sum:3
;;;; (defun is-curious? (num)   (= num (fact-sum num))) ...
;;;; (is-curious? 145) ...
;;;; (assert (is-curious? 145)) ...
;;;; (assert (not (is-curious? 144))) ...
;;;; (loop for ii from 1 to 100       do       (format t "ii:~d f ...
ii:1 fact-sum:1 is-curious?:T
ii:2 fact-sum:2 is-curious?:T
ii:3 fact-sum:6 is-curious?:NIL
ii:4 fact-sum:24 is-curious?:NIL
ii:5 fact-sum:120 is-curious?:NIL
ii:6 fact-sum:720 is-curious?:NIL
ii:7 fact-sum:5040 is-curious?:NIL
ii:8 fact-sum:40320 is-curious?:NIL
ii:9 fact-sum:362880 is-curious?:NIL
ii:10 fact-sum:2 is-curious?:NIL
ii:11 fact-sum:2 is-curious?:NIL
ii:12 fact-sum:3 is-curious?:NIL
ii:13 fact-sum:7 is-curious?:NIL
ii:14 fact-sum:25 is-curious?:NIL
ii:15 fact-sum:121 is-curious?:NIL
ii:16 fact-sum:721 is-curious?:NIL
ii:17 fact-sum:5041 is-curious?:NIL
ii:18 fact-sum:40321 is-curious?:NIL
ii:19 fact-sum:362881 is-curious?:NIL
ii:20 fact-sum:3 is-curious?:NIL
ii:21 fact-sum:3 is-curious?:NIL
ii:22 fact-sum:4 is-curious?:NIL
ii:23 fact-sum:8 is-curious?:NIL
ii:24 fact-sum:26 is-curious?:NIL
ii:25 fact-sum:122 is-curious?:NIL
ii:26 fact-sum:722 is-curious?:NIL
ii:27 fact-sum:5042 is-curious?:NIL
ii:28 fact-sum:40322 is-curious?:NIL
ii:29 fact-sum:362882 is-curious?:NIL
ii:30 fact-sum:7 is-curious?:NIL
ii:31 fact-sum:7 is-curious?:NIL
ii:32 fact-sum:8 is-curious?:NIL
ii:33 fact-sum:12 is-curious?:NIL
ii:34 fact-sum:30 is-curious?:NIL
ii:35 fact-sum:126 is-curious?:NIL
ii:36 fact-sum:726 is-curious?:NIL
ii:37 fact-sum:5046 is-curious?:NIL
ii:38 fact-sum:40326 is-curious?:NIL
ii:39 fact-sum:362886 is-curious?:NIL
ii:40 fact-sum:25 is-curious?:NIL
ii:41 fact-sum:25 is-curious?:NIL
ii:42 fact-sum:26 is-curious?:NIL
ii:43 fact-sum:30 is-curious?:NIL
ii:44 fact-sum:48 is-curious?:NIL
ii:45 fact-sum:144 is-curious?:NIL
ii:46 fact-sum:744 is-curious?:NIL
ii:47 fact-sum:5064 is-curious?:NIL
ii:48 fact-sum:40344 is-curious?:NIL
ii:49 fact-sum:362904 is-curious?:NIL
ii:50 fact-sum:121 is-curious?:NIL
ii:51 fact-sum:121 is-curious?:NIL
ii:52 fact-sum:122 is-curious?:NIL
ii:53 fact-sum:126 is-curious?:NIL
ii:54 fact-sum:144 is-curious?:NIL
ii:55 fact-sum:240 is-curious?:NIL
ii:56 fact-sum:840 is-curious?:NIL
ii:57 fact-sum:5160 is-curious?:NIL
ii:58 fact-sum:40440 is-curious?:NIL
ii:59 fact-sum:363000 is-curious?:NIL
ii:60 fact-sum:721 is-curious?:NIL
ii:61 fact-sum:721 is-curious?:NIL
ii:62 fact-sum:722 is-curious?:NIL
ii:63 fact-sum:726 is-curious?:NIL
ii:64 fact-sum:744 is-curious?:NIL
ii:65 fact-sum:840 is-curious?:NIL
ii:66 fact-sum:1440 is-curious?:NIL
ii:67 fact-sum:5760 is-curious?:NIL
ii:68 fact-sum:41040 is-curious?:NIL
ii:69 fact-sum:363600 is-curious?:NIL
ii:70 fact-sum:5041 is-curious?:NIL
ii:71 fact-sum:5041 is-curious?:NIL
ii:72 fact-sum:5042 is-curious?:NIL
ii:73 fact-sum:5046 is-curious?:NIL
ii:74 fact-sum:5064 is-curious?:NIL
ii:75 fact-sum:5160 is-curious?:NIL
ii:76 fact-sum:5760 is-curious?:NIL
ii:77 fact-sum:10080 is-curious?:NIL
ii:78 fact-sum:45360 is-curious?:NIL
ii:79 fact-sum:367920 is-curious?:NIL
ii:80 fact-sum:40321 is-curious?:NIL
ii:81 fact-sum:40321 is-curious?:NIL
ii:82 fact-sum:40322 is-curious?:NIL
ii:83 fact-sum:40326 is-curious?:NIL
ii:84 fact-sum:40344 is-curious?:NIL
ii:85 fact-sum:40440 is-curious?:NIL
ii:86 fact-sum:41040 is-curious?:NIL
ii:87 fact-sum:45360 is-curious?:NIL
ii:88 fact-sum:80640 is-curious?:NIL
ii:89 fact-sum:403200 is-curious?:NIL
ii:90 fact-sum:362881 is-curious?:NIL
ii:91 fact-sum:362881 is-curious?:NIL
ii:92 fact-sum:362882 is-curious?:NIL
ii:93 fact-sum:362886 is-curious?:NIL
ii:94 fact-sum:362904 is-curious?:NIL
ii:95 fact-sum:363000 is-curious?:NIL
ii:96 fact-sum:363600 is-curious?:NIL
ii:97 fact-sum:367920 is-curious?:NIL
ii:98 fact-sum:403200 is-curious?:NIL
ii:99 fact-sum:725760 is-curious?:NIL
ii:100 fact-sum:3 is-curious?:NIL
;;;; (loop for ii from 1 to 200       do       (format t "ii:~d f ...
ii:1 fact-sum:1 is-curious?:T
ii:2 fact-sum:2 is-curious?:T
ii:3 fact-sum:6 is-curious?:NIL
ii:4 fact-sum:24 is-curious?:NIL
ii:5 fact-sum:120 is-curious?:NIL
ii:6 fact-sum:720 is-curious?:NIL
ii:7 fact-sum:5040 is-curious?:NIL
ii:8 fact-sum:40320 is-curious?:NIL
ii:9 fact-sum:362880 is-curious?:NIL
ii:10 fact-sum:2 is-curious?:NIL
ii:11 fact-sum:2 is-curious?:NIL
ii:12 fact-sum:3 is-curious?:NIL
ii:13 fact-sum:7 is-curious?:NIL
ii:14 fact-sum:25 is-curious?:NIL
ii:15 fact-sum:121 is-curious?:NIL
ii:16 fact-sum:721 is-curious?:NIL
ii:17 fact-sum:5041 is-curious?:NIL
ii:18 fact-sum:40321 is-curious?:NIL
ii:19 fact-sum:362881 is-curious?:NIL
ii:20 fact-sum:3 is-curious?:NIL
ii:21 fact-sum:3 is-curious?:NIL
ii:22 fact-sum:4 is-curious?:NIL
ii:23 fact-sum:8 is-curious?:NIL
ii:24 fact-sum:26 is-curious?:NIL
ii:25 fact-sum:122 is-curious?:NIL
ii:26 fact-sum:722 is-curious?:NIL
ii:27 fact-sum:5042 is-curious?:NIL
ii:28 fact-sum:40322 is-curious?:NIL
ii:29 fact-sum:362882 is-curious?:NIL
ii:30 fact-sum:7 is-curious?:NIL
ii:31 fact-sum:7 is-curious?:NIL
ii:32 fact-sum:8 is-curious?:NIL
ii:33 fact-sum:12 is-curious?:NIL
ii:34 fact-sum:30 is-curious?:NIL
ii:35 fact-sum:126 is-curious?:NIL
ii:36 fact-sum:726 is-curious?:NIL
ii:37 fact-sum:5046 is-curious?:NIL
ii:38 fact-sum:40326 is-curious?:NIL
ii:39 fact-sum:362886 is-curious?:NIL
ii:40 fact-sum:25 is-curious?:NIL
ii:41 fact-sum:25 is-curious?:NIL
ii:42 fact-sum:26 is-curious?:NIL
ii:43 fact-sum:30 is-curious?:NIL
ii:44 fact-sum:48 is-curious?:NIL
ii:45 fact-sum:144 is-curious?:NIL
ii:46 fact-sum:744 is-curious?:NIL
ii:47 fact-sum:5064 is-curious?:NIL
ii:48 fact-sum:40344 is-curious?:NIL
ii:49 fact-sum:362904 is-curious?:NIL
ii:50 fact-sum:121 is-curious?:NIL
ii:51 fact-sum:121 is-curious?:NIL
ii:52 fact-sum:122 is-curious?:NIL
ii:53 fact-sum:126 is-curious?:NIL
ii:54 fact-sum:144 is-curious?:NIL
ii:55 fact-sum:240 is-curious?:NIL
ii:56 fact-sum:840 is-curious?:NIL
ii:57 fact-sum:5160 is-curious?:NIL
ii:58 fact-sum:40440 is-curious?:NIL
ii:59 fact-sum:363000 is-curious?:NIL
ii:60 fact-sum:721 is-curious?:NIL
ii:61 fact-sum:721 is-curious?:NIL
ii:62 fact-sum:722 is-curious?:NIL
ii:63 fact-sum:726 is-curious?:NIL
ii:64 fact-sum:744 is-curious?:NIL
ii:65 fact-sum:840 is-curious?:NIL
ii:66 fact-sum:1440 is-curious?:NIL
ii:67 fact-sum:5760 is-curious?:NIL
ii:68 fact-sum:41040 is-curious?:NIL
ii:69 fact-sum:363600 is-curious?:NIL
ii:70 fact-sum:5041 is-curious?:NIL
ii:71 fact-sum:5041 is-curious?:NIL
ii:72 fact-sum:5042 is-curious?:NIL
ii:73 fact-sum:5046 is-curious?:NIL
ii:74 fact-sum:5064 is-curious?:NIL
ii:75 fact-sum:5160 is-curious?:NIL
ii:76 fact-sum:5760 is-curious?:NIL
ii:77 fact-sum:10080 is-curious?:NIL
ii:78 fact-sum:45360 is-curious?:NIL
ii:79 fact-sum:367920 is-curious?:NIL
ii:80 fact-sum:40321 is-curious?:NIL
ii:81 fact-sum:40321 is-curious?:NIL
ii:82 fact-sum:40322 is-curious?:NIL
ii:83 fact-sum:40326 is-curious?:NIL
ii:84 fact-sum:40344 is-curious?:NIL
ii:85 fact-sum:40440 is-curious?:NIL
ii:86 fact-sum:41040 is-curious?:NIL
ii:87 fact-sum:45360 is-curious?:NIL
ii:88 fact-sum:80640 is-curious?:NIL
ii:89 fact-sum:403200 is-curious?:NIL
ii:90 fact-sum:362881 is-curious?:NIL
ii:91 fact-sum:362881 is-curious?:NIL
ii:92 fact-sum:362882 is-curious?:NIL
ii:93 fact-sum:362886 is-curious?:NIL
ii:94 fact-sum:362904 is-curious?:NIL
ii:95 fact-sum:363000 is-curious?:NIL
ii:96 fact-sum:363600 is-curious?:NIL
ii:97 fact-sum:367920 is-curious?:NIL
ii:98 fact-sum:403200 is-curious?:NIL
ii:99 fact-sum:725760 is-curious?:NIL
ii:100 fact-sum:3 is-curious?:NIL
ii:101 fact-sum:3 is-curious?:NIL
ii:102 fact-sum:4 is-curious?:NIL
ii:103 fact-sum:8 is-curious?:NIL
ii:104 fact-sum:26 is-curious?:NIL
ii:105 fact-sum:122 is-curious?:NIL
ii:106 fact-sum:722 is-curious?:NIL
ii:107 fact-sum:5042 is-curious?:NIL
ii:108 fact-sum:40322 is-curious?:NIL
ii:109 fact-sum:362882 is-curious?:NIL
ii:110 fact-sum:3 is-curious?:NIL
ii:111 fact-sum:3 is-curious?:NIL
ii:112 fact-sum:4 is-curious?:NIL
ii:113 fact-sum:8 is-curious?:NIL
ii:114 fact-sum:26 is-curious?:NIL
ii:115 fact-sum:122 is-curious?:NIL
ii:116 fact-sum:722 is-curious?:NIL
ii:117 fact-sum:5042 is-curious?:NIL
ii:118 fact-sum:40322 is-curious?:NIL
ii:119 fact-sum:362882 is-curious?:NIL
ii:120 fact-sum:4 is-curious?:NIL
ii:121 fact-sum:4 is-curious?:NIL
ii:122 fact-sum:5 is-curious?:NIL
ii:123 fact-sum:9 is-curious?:NIL
ii:124 fact-sum:27 is-curious?:NIL
ii:125 fact-sum:123 is-curious?:NIL
ii:126 fact-sum:723 is-curious?:NIL
ii:127 fact-sum:5043 is-curious?:NIL
ii:128 fact-sum:40323 is-curious?:NIL
ii:129 fact-sum:362883 is-curious?:NIL
ii:130 fact-sum:8 is-curious?:NIL
ii:131 fact-sum:8 is-curious?:NIL
ii:132 fact-sum:9 is-curious?:NIL
ii:133 fact-sum:13 is-curious?:NIL
ii:134 fact-sum:31 is-curious?:NIL
ii:135 fact-sum:127 is-curious?:NIL
ii:136 fact-sum:727 is-curious?:NIL
ii:137 fact-sum:5047 is-curious?:NIL
ii:138 fact-sum:40327 is-curious?:NIL
ii:139 fact-sum:362887 is-curious?:NIL
ii:140 fact-sum:26 is-curious?:NIL
ii:141 fact-sum:26 is-curious?:NIL
ii:142 fact-sum:27 is-curious?:NIL
ii:143 fact-sum:31 is-curious?:NIL
ii:144 fact-sum:49 is-curious?:NIL
ii:145 fact-sum:145 is-curious?:T
ii:146 fact-sum:745 is-curious?:NIL
ii:147 fact-sum:5065 is-curious?:NIL
ii:148 fact-sum:40345 is-curious?:NIL
ii:149 fact-sum:362905 is-curious?:NIL
ii:150 fact-sum:122 is-curious?:NIL
ii:151 fact-sum:122 is-curious?:NIL
ii:152 fact-sum:123 is-curious?:NIL
ii:153 fact-sum:127 is-curious?:NIL
ii:154 fact-sum:145 is-curious?:NIL
ii:155 fact-sum:241 is-curious?:NIL
ii:156 fact-sum:841 is-curious?:NIL
ii:157 fact-sum:5161 is-curious?:NIL
ii:158 fact-sum:40441 is-curious?:NIL
ii:159 fact-sum:363001 is-curious?:NIL
ii:160 fact-sum:722 is-curious?:NIL
ii:161 fact-sum:722 is-curious?:NIL
ii:162 fact-sum:723 is-curious?:NIL
ii:163 fact-sum:727 is-curious?:NIL
ii:164 fact-sum:745 is-curious?:NIL
ii:165 fact-sum:841 is-curious?:NIL
ii:166 fact-sum:1441 is-curious?:NIL
ii:167 fact-sum:5761 is-curious?:NIL
ii:168 fact-sum:41041 is-curious?:NIL
ii:169 fact-sum:363601 is-curious?:NIL
ii:170 fact-sum:5042 is-curious?:NIL
ii:171 fact-sum:5042 is-curious?:NIL
ii:172 fact-sum:5043 is-curious?:NIL
ii:173 fact-sum:5047 is-curious?:NIL
ii:174 fact-sum:5065 is-curious?:NIL
ii:175 fact-sum:5161 is-curious?:NIL
ii:176 fact-sum:5761 is-curious?:NIL
ii:177 fact-sum:10081 is-curious?:NIL
ii:178 fact-sum:45361 is-curious?:NIL
ii:179 fact-sum:367921 is-curious?:NIL
ii:180 fact-sum:40322 is-curious?:NIL
ii:181 fact-sum:40322 is-curious?:NIL
ii:182 fact-sum:40323 is-curious?:NIL
ii:183 fact-sum:40327 is-curious?:NIL
ii:184 fact-sum:40345 is-curious?:NIL
ii:185 fact-sum:40441 is-curious?:NIL
ii:186 fact-sum:41041 is-curious?:NIL
ii:187 fact-sum:45361 is-curious?:NIL
ii:188 fact-sum:80641 is-curious?:NIL
ii:189 fact-sum:403201 is-curious?:NIL
ii:190 fact-sum:362882 is-curious?:NIL
ii:191 fact-sum:362882 is-curious?:NIL
ii:192 fact-sum:362883 is-curious?:NIL
ii:193 fact-sum:362887 is-curious?:NIL
ii:194 fact-sum:362905 is-curious?:NIL
ii:195 fact-sum:363001 is-curious?:NIL
ii:196 fact-sum:363601 is-curious?:NIL
ii:197 fact-sum:367921 is-curious?:NIL
ii:198 fact-sum:403201 is-curious?:NIL
ii:199 fact-sum:725761 is-curious?:NIL
ii:200 fact-sum:4 is-curious?:NIL
;;;; (Fact 4) ...
;;;; (fact 3) ...
;;;; (fact-sum 9999999) ...
;;;; (fact-sum 9999999) ...
;;;; (fact-sum 9999990) ...
;;;; (fact-sum 999999) ...
;;;; (fact-sum 9099999) ...
;;;; (fact-sum 9009999) ...
;;;; (fact-sum 9000999) ...
;;;; (fact-sum 9000099) ...
;;;; (fact-sum 9000009) ...
;;;; (fact-sum 9) ...
;;;; (fact-sum 9) ...

CL-USER> 
CL-USER> 3
3
;;;; Compile file /home/mortis/personal/projects/project-euler/sr ...
; compiling file "/home/mortis/personal/projects/project-euler/src/cl/problem-34.lisp" (written 02 OCT 2007 12:19:50 AM):

; /home/mortis/personal/projects/project-euler/src/cl/problem-34.fasl written
; compilation finished in 0:00:01
ii:1 fact-sum:1 is-curious?:T
ii:2 fact-sum:2 is-curious?:T
ii:3 fact-sum:6 is-curious?:NIL
ii:4 fact-sum:24 is-curious?:NIL
ii:5 fact-sum:120 is-curious?:NIL
ii:6 fact-sum:720 is-curious?:NIL
ii:7 fact-sum:5040 is-curious?:NIL
ii:8 fact-sum:40320 is-curious?:NIL
ii:9 fact-sum:362880 is-curious?:NIL
ii:10 fact-sum:2 is-curious?:NIL
ii:11 fact-sum:2 is-curious?:NIL
ii:12 fact-sum:3 is-curious?:NIL
ii:13 fact-sum:7 is-curious?:NIL
ii:14 fact-sum:25 is-curious?:NIL
ii:15 fact-sum:121 is-curious?:NIL
ii:16 fact-sum:721 is-curious?:NIL
ii:17 fact-sum:5041 is-curious?:NIL
ii:18 fact-sum:40321 is-curious?:NIL
ii:19 fact-sum:362881 is-curious?:NIL
ii:20 fact-sum:3 is-curious?:NIL
ii:21 fact-sum:3 is-curious?:NIL
ii:22 fact-sum:4 is-curious?:NIL
ii:23 fact-sum:8 is-curious?:NIL
ii:24 fact-sum:26 is-curious?:NIL
ii:25 fact-sum:122 is-curious?:NIL
ii:26 fact-sum:722 is-curious?:NIL
ii:27 fact-sum:5042 is-curious?:NIL
ii:28 fact-sum:40322 is-curious?:NIL
ii:29 fact-sum:362882 is-curious?:NIL
ii:30 fact-sum:7 is-curious?:NIL
ii:31 fact-sum:7 is-curious?:NIL
ii:32 fact-sum:8 is-curious?:NIL
ii:33 fact-sum:12 is-curious?:NIL
ii:34 fact-sum:30 is-curious?:NIL
ii:35 fact-sum:126 is-curious?:NIL
ii:36 fact-sum:726 is-curious?:NIL
ii:37 fact-sum:5046 is-curious?:NIL
ii:38 fact-sum:40326 is-curious?:NIL
ii:39 fact-sum:362886 is-curious?:NIL
ii:40 fact-sum:25 is-curious?:NIL
ii:41 fact-sum:25 is-curious?:NIL
ii:42 fact-sum:26 is-curious?:NIL
ii:43 fact-sum:30 is-curious?:NIL
ii:44 fact-sum:48 is-curious?:NIL
ii:45 fact-sum:144 is-curious?:NIL
ii:46 fact-sum:744 is-curious?:NIL
ii:47 fact-sum:5064 is-curious?:NIL
ii:48 fact-sum:40344 is-curious?:NIL
ii:49 fact-sum:362904 is-curious?:NIL
ii:50 fact-sum:121 is-curious?:NIL
ii:51 fact-sum:121 is-curious?:NIL
ii:52 fact-sum:122 is-curious?:NIL
ii:53 fact-sum:126 is-curious?:NIL
ii:54 fact-sum:144 is-curious?:NIL
ii:55 fact-sum:240 is-curious?:NIL
ii:56 fact-sum:840 is-curious?:NIL
ii:57 fact-sum:5160 is-curious?:NIL
ii:58 fact-sum:40440 is-curious?:NIL
ii:59 fact-sum:363000 is-curious?:NIL
ii:60 fact-sum:721 is-curious?:NIL
ii:61 fact-sum:721 is-curious?:NIL
ii:62 fact-sum:722 is-curious?:NIL
ii:63 fact-sum:726 is-curious?:NIL
ii:64 fact-sum:744 is-curious?:NIL
ii:65 fact-sum:840 is-curious?:NIL
ii:66 fact-sum:1440 is-curious?:NIL
ii:67 fact-sum:5760 is-curious?:NIL
ii:68 fact-sum:41040 is-curious?:NIL
ii:69 fact-sum:363600 is-curious?:NIL
ii:70 fact-sum:5041 is-curious?:NIL
ii:71 fact-sum:5041 is-curious?:NIL
ii:72 fact-sum:5042 is-curious?:NIL
ii:73 fact-sum:5046 is-curious?:NIL
ii:74 fact-sum:5064 is-curious?:NIL
ii:75 fact-sum:5160 is-curious?:NIL
ii:76 fact-sum:5760 is-curious?:NIL
ii:77 fact-sum:10080 is-curious?:NIL
ii:78 fact-sum:45360 is-curious?:NIL
ii:79 fact-sum:367920 is-curious?:NIL
ii:80 fact-sum:40321 is-curious?:NIL
ii:81 fact-sum:40321 is-curious?:NIL
ii:82 fact-sum:40322 is-curious?:NIL
ii:83 fact-sum:40326 is-curious?:NIL
ii:84 fact-sum:40344 is-curious?:NIL
ii:85 fact-sum:40440 is-curious?:NIL
ii:86 fact-sum:41040 is-curious?:NIL
ii:87 fact-sum:45360 is-curious?:NIL
ii:88 fact-sum:80640 is-curious?:NIL
ii:89 fact-sum:403200 is-curious?:NIL
ii:90 fact-sum:362881 is-curious?:NIL
ii:91 fact-sum:362881 is-curious?:NIL
ii:92 fact-sum:362882 is-curious?:NIL
ii:93 fact-sum:362886 is-curious?:NIL
ii:94 fact-sum:362904 is-curious?:NIL
ii:95 fact-sum:363000 is-curious?:NIL
ii:96 fact-sum:363600 is-curious?:NIL
ii:97 fact-sum:367920 is-curious?:NIL
ii:98 fact-sum:403200 is-curious?:NIL
ii:99 fact-sum:725760 is-curious?:NIL
ii:100 fact-sum:3 is-curious?:NIL
ii:101 fact-sum:3 is-curious?:NIL
ii:102 fact-sum:4 is-curious?:NIL
ii:103 fact-sum:8 is-curious?:NIL
ii:104 fact-sum:26 is-curious?:NIL
ii:105 fact-sum:122 is-curious?:NIL
ii:106 fact-sum:722 is-curious?:NIL
ii:107 fact-sum:5042 is-curious?:NIL
ii:108 fact-sum:40322 is-curious?:NIL
ii:109 fact-sum:362882 is-curious?:NIL
ii:110 fact-sum:3 is-curious?:NIL
ii:111 fact-sum:3 is-curious?:NIL
ii:112 fact-sum:4 is-curious?:NIL
ii:113 fact-sum:8 is-curious?:NIL
ii:114 fact-sum:26 is-curious?:NIL
ii:115 fact-sum:122 is-curious?:NIL
ii:116 fact-sum:722 is-curious?:NIL
ii:117 fact-sum:5042 is-curious?:NIL
ii:118 fact-sum:40322 is-curious?:NIL
ii:119 fact-sum:362882 is-curious?:NIL
ii:120 fact-sum:4 is-curious?:NIL
ii:121 fact-sum:4 is-curious?:NIL
ii:122 fact-sum:5 is-curious?:NIL
ii:123 fact-sum:9 is-curious?:NIL
ii:124 fact-sum:27 is-curious?:NIL
ii:125 fact-sum:123 is-curious?:NIL
ii:126 fact-sum:723 is-curious?:NIL
ii:127 fact-sum:5043 is-curious?:NIL
ii:128 fact-sum:40323 is-curious?:NIL
ii:129 fact-sum:362883 is-curious?:NIL
ii:130 fact-sum:8 is-curious?:NIL
ii:131 fact-sum:8 is-curious?:NIL
ii:132 fact-sum:9 is-curious?:NIL
ii:133 fact-sum:13 is-curious?:NIL
ii:134 fact-sum:31 is-curious?:NIL
ii:135 fact-sum:127 is-curious?:NIL
ii:136 fact-sum:727 is-curious?:NIL
ii:137 fact-sum:5047 is-curious?:NIL
ii:138 fact-sum:40327 is-curious?:NIL
ii:139 fact-sum:362887 is-curious?:NIL
ii:140 fact-sum:26 is-curious?:NIL
ii:141 fact-sum:26 is-curious?:NIL
ii:142 fact-sum:27 is-curious?:NIL
ii:143 fact-sum:31 is-curious?:NIL
ii:144 fact-sum:49 is-curious?:NIL
ii:145 fact-sum:145 is-curious?:T
ii:146 fact-sum:745 is-curious?:NIL
ii:147 fact-sum:5065 is-curious?:NIL
ii:148 fact-sum:40345 is-curious?:NIL
ii:149 fact-sum:362905 is-curious?:NIL
ii:150 fact-sum:122 is-curious?:NIL
ii:151 fact-sum:122 is-curious?:NIL
ii:152 fact-sum:123 is-curious?:NIL
ii:153 fact-sum:127 is-curious?:NIL
ii:154 fact-sum:145 is-curious?:NIL
ii:155 fact-sum:241 is-curious?:NIL
ii:156 fact-sum:841 is-curious?:NIL
ii:157 fact-sum:5161 is-curious?:NIL
ii:158 fact-sum:40441 is-curious?:NIL
ii:159 fact-sum:363001 is-curious?:NIL
ii:160 fact-sum:722 is-curious?:NIL
ii:161 fact-sum:722 is-curious?:NIL
ii:162 fact-sum:723 is-curious?:NIL
ii:163 fact-sum:727 is-curious?:NIL
ii:164 fact-sum:745 is-curious?:NIL
ii:165 fact-sum:841 is-curious?:NIL
ii:166 fact-sum:1441 is-curious?:NIL
ii:167 fact-sum:5761 is-curious?:NIL
ii:168 fact-sum:41041 is-curious?:NIL
ii:169 fact-sum:363601 is-curious?:NIL
ii:170 fact-sum:5042 is-curious?:NIL
ii:171 fact-sum:5042 is-curious?:NIL
ii:172 fact-sum:5043 is-curious?:NIL
ii:173 fact-sum:5047 is-curious?:NIL
ii:174 fact-sum:5065 is-curious?:NIL
ii:175 fact-sum:5161 is-curious?:NIL
ii:176 fact-sum:5761 is-curious?:NIL
ii:177 fact-sum:10081 is-curious?:NIL
ii:178 fact-sum:45361 is-curious?:NIL
ii:179 fact-sum:367921 is-curious?:NIL
ii:180 fact-sum:40322 is-curious?:NIL
ii:181 fact-sum:40322 is-curious?:NIL
ii:182 fact-sum:40323 is-curious?:NIL
ii:183 fact-sum:40327 is-curious?:NIL
ii:184 fact-sum:40345 is-curious?:NIL
ii:185 fact-sum:40441 is-curious?:NIL
ii:186 fact-sum:41041 is-curious?:NIL
ii:187 fact-sum:45361 is-curious?:NIL
ii:188 fact-sum:80641 is-curious?:NIL
ii:189 fact-sum:403201 is-curious?:NIL
ii:190 fact-sum:362882 is-curious?:NIL
ii:191 fact-sum:362882 is-curious?:NIL
ii:192 fact-sum:362883 is-curious?:NIL
ii:193 fact-sum:362887 is-curious?:NIL
ii:194 fact-sum:362905 is-curious?:NIL
ii:195 fact-sum:363001 is-curious?:NIL
ii:196 fact-sum:363601 is-curious?:NIL
ii:197 fact-sum:367921 is-curious?:NIL
ii:198 fact-sum:403201 is-curious?:NIL
ii:199 fact-sum:725761 is-curious?:NIL
ii:200 fact-sum:4 is-curious?:NIL
;;;; 1 ...
;;;; 1 ...
;;;; 1 ...
;;;; a ...
CL-USER> #\a
#\a
CL-USER> #\A
#\A
;;;; a ...
;;;; (defun ch->num (ch)   (cond ((equal ch #\1) 1) 	((equal ch # ...
;;;; (ch->num #\1) ...
;;;; (defun fact-sum (num)   (apply #'+ (mapcar #'fact (loop for  ...
STYLE-WARNING: redefining FACT-SUM in DEFUN
;;;; (assert (= 145 (fact-sum 145))) ...
;;;; (defun ch->num (ch)    (cond ((equal ch #\1) 1) 	 ((equal ch ...
STYLE-WARNING: redefining CH->NUM in DEFUN
;;;; (defun fact-sum (num)   (apply #'+ (mapcar #'fact (loop for  ...
STYLE-WARNING: redefining FACT-SUM in DEFUN
;;;; (assert (= 145 (fact-sum 145))) ...
;;;; (defun fact-sum2 (num)   (apply #'+ (mapcar #'fact (explode- ...
;;;; (time (loop for ii from 1 to 1000 	    do 	    (fact-sum2 ii ...
Evaluation took:
  0.082 seconds of real time
  0.076005 seconds of user run time
  0.0 seconds of system run time
  [Run times include 0.016 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  9,921,944 bytes consed.
;;;; (time (loop for ii from 1 to 1000 	    do 	    (fact-sum ii) ...
Evaluation took:
  0.012 seconds of real time
  0.016001 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  2,161,744 bytes consed.
;;;; (time (loop for ii from 1 to 10000 	    do 	    (fact-sum2 i ...
Evaluation took:
  1.128 seconds of real time
  0.828052 seconds of user run time
  0.052004 seconds of system run time
  [Run times include 0.164 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  126,196,776 bytes consed.
;;;; (time (loop for ii from 1 to 10000 	    do 	    (fact-sum ii ...
Evaluation took:
  0.173 seconds of real time
  0.16801 seconds of user run time
  0.0 seconds of system run time
  [Run times include 0.024 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  21,885,720 bytes consed.
;;;; (defun fact-sum3 (num)   (apply #'+ (loop for n across (form ...
;;;; (time (loop for ii from 1 to 10000 	    do 	    (fact-sum ii ...
Evaluation took:
  0.162 seconds of real time
  0.152009 seconds of user run time
  0.0 seconds of system run time
  [Run times include 0.012 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  21,891,368 bytes consed.
;;;; (time (loop for ii from 1 to 10000 	    do 	    (fact-sum3 i ...
Evaluation took:
  0.188 seconds of real time
  0.16001 seconds of user run time
  0.0 seconds of system run time
  [Run times include 0.02 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  21,494,536 bytes consed.
;;;; (time (loop for ii from 1 to 100000 	    do 	    (fact-sum i ...
Evaluation took:
  1.719 seconds of real time
  1.656103 seconds of user run time
  0.012001 seconds of system run time
  [Run times include 0.2 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  221,320,488 bytes consed.
;;;; (time (loop for ii from 1 to 100000 	    do 	    (fact-sum3  ...
Evaluation took:
  1.68 seconds of real time
  1.644103 seconds of user run time
  0.0 seconds of system run time
  [Run times include 0.18 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  216,612,360 bytes consed.
;;;; (defun fact-sum3 (num)   (let ((res 0))     (loop for n acro ...
STYLE-WARNING: redefining FACT-SUM3 in DEFUN
;;;; (time (loop for ii from 1 to 100000 	    do 	    (fact-sum i ...
Evaluation took:
  1.744 seconds of real time
  1.652103 seconds of user run time
  0.044003 seconds of system run time
  [Run times include 0.224 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  221,320,064 bytes consed.
;;;; (time (loop for ii from 1 to 100000 	    do 	    (fact-sum3  ...
Evaluation took:
  1.577 seconds of real time
  1.540097 seconds of user run time
  0.0 seconds of system run time
  [Run times include 0.164 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  207,989,776 bytes consed.
;;;; (defun fact-sum3 (num)   (apply #'+ (mapcar #'fact (loop for ...
STYLE-WARNING: redefining FACT-SUM3 in DEFUN
;;;; (defun fact-sum (num)   (let ((res 0))     (loop for n acros ...
STYLE-WARNING: redefining FACT-SUM in DEFUN
;;;; (defun fact-sum (num)   (declare (optimize speed))   (let (( ...
; in: LAMBDA NIL
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-0)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a T, not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a T, not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.
; 
; compilation unit finished
;   printed 16 notes
STYLE-WARNING: redefining FACT-SUM in DEFUN
;;;; (defun fact-sum (num)   (declare (the fixnum num) 	   (optim ...
; in: LAMBDA NIL
;     (SB-INT:NAMED-LAMBDA FACT-SUM (NUM)
;                        (DECLARE (THE FIXNUM NUM) (OPTIMIZE SPEED))
;                        (BLOCK FACT-SUM
;                          (LET ((RES 0))
;                            (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;                                  (SETF RES #))
;                            RES)))
; ==>
;   #'(SB-INT:NAMED-LAMBDA FACT-SUM (NUM)
;                          (DECLARE (THE FIXNUM NUM) (OPTIMIZE SPEED))
;                          (BLOCK FACT-SUM
;                            (LET ((RES 0))
;                              (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;                                    (SETF RES #))
;                              RES)))
; 
; caught WARNING:
;   unrecognized declaration (THE FIXNUM NUM)

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-0)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a T, not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a T, not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.
; 
; compilation unit finished
;   caught 1 WARNING condition
;   printed 16 notes
STYLE-WARNING: redefining FACT-SUM in DEFUN

CL-USER> 3
3
;;;; (defun fact-sum (num)   (declare (the number num) 	   (optim ...
; in: LAMBDA NIL
;     (SB-INT:NAMED-LAMBDA FACT-SUM (NUM)
;                        (DECLARE (THE NUMBER NUM) (OPTIMIZE SPEED))
;                        (BLOCK FACT-SUM
;                          (LET ((RES 0))
;                            (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;                                  (SETF RES #))
;                            RES)))
; ==>
;   #'(SB-INT:NAMED-LAMBDA FACT-SUM (NUM)
;                          (DECLARE (THE NUMBER NUM) (OPTIMIZE SPEED))
;                          (BLOCK FACT-SUM
;                            (LET ((RES 0))
;                              (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;                                    (SETF RES #))
;                              RES)))
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-0)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a T, not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a T, not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.
; 
; compilation unit finished
;   caught 1 WARNING condition
;   printed 16 notes
STYLE-WARNING: redefining FACT-SUM in DEFUN
;;;; (defun fact-sum (num)   (declare (the number num) 	   (optim ...
; in: LAMBDA NIL
;     (SB-INT:NAMED-LAMBDA FACT-SUM (NUM)
;                        (DECLARE (THE NUMBER NUM) (OPTIMIZE SPEED))
;                        (BLOCK FACT-SUM
;                          (LET ((RES 0))
;                            (DECLARE (THE NUMBER RES))
;                            (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;                                  (SETF RES #))
;                            RES)))
; ==>
;   #'(SB-INT:NAMED-LAMBDA FACT-SUM (NUM)
;                          (DECLARE (THE NUMBER NUM) (OPTIMIZE SPEED))
;                          (BLOCK FACT-SUM
;                            (LET ((RES 0))
;                              (DECLARE (THE NUMBER RES))
;                              (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;                                    (SETF RES #))
;                              RES)))
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-0)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a T, not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a T, not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.
; 
; compilation unit finished
;   caught 2 WARNING conditions
;   printed 16 notes
STYLE-WARNING: redefining FACT-SUM in DEFUN
;;;; (time (loop for ii from 1 to 100000 	    do 	    (fact-sum i ...
Evaluation took:
  1.477 seconds of real time
  1.348084 seconds of user run time
  0.0 seconds of system run time
  [Run times include 0.164 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  200,788,008 bytes consed.
;;;; (time (loop for ii from 1 to 100000 	    do 	    (fact-sum3  ...
Evaluation took:
  1.681 seconds of real time
  1.632102 seconds of user run time
  0.008 seconds of system run time
  [Run times include 0.188 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  221,322,992 bytes consed.
;;;; (defun fact-sum (num)   (declare (the number num) 	   (optim ...
; in: LAMBDA NIL
;     (SB-INT:NAMED-LAMBDA FACT-SUM (NUM)
;                        (DECLARE (THE NUMBER NUM) (OPTIMIZE SPEED))
;                        (BLOCK FACT-SUM
;                          (LET ((RES 0))
;                            (DECLARE (THE NUMBER RES))
;                            (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;                                  (DECLARE #) (SETF RES #))
;                            RES)))
; ==>
;   #'(SB-INT:NAMED-LAMBDA FACT-SUM (NUM)
;                          (DECLARE (THE NUMBER NUM) (OPTIMIZE SPEED))
;                          (BLOCK FACT-SUM
;                            (LET ((RES 0))
;                              (DECLARE (THE NUMBER RES))
;                              (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;                                    (DECLARE #) (SETF RES #))
;                              RES)))
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (DECLARE (THE NUMBER N))
;           (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (DECLARE (THE NUMBER N))
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-0)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a T, not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a T, not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.
; in: LAMBDA NIL
;     (DECLARE (THE NUMBER N))
; 
; caught WARNING:
;   There is no function named DECLARE. References to DECLARE in some contexts
;   (like starts of blocks) have special meaning, but here it would have to be a
;   function, and that shouldn't be right.

; 
; caught STYLE-WARNING:
;   This function is undefined:
;     DECLARE
; 
; compilation unit finished
;   caught 3 WARNING conditions
;   caught 1 STYLE-WARNING condition
;   printed 16 notes
STYLE-WARNING: redefining FACT-SUM in DEFUN
;;;; (time (loop for ii from 1 to 100000 	    do 	    (fact-sum i ...
;;;; (defun fact (n)   (declare (the number n))   (when (= 0 n)   ...
; in: LAMBDA NIL
;     (SB-INT:NAMED-LAMBDA FACT (N) (DECLARE (THE NUMBER N))
;                        (BLOCK FACT
;                          (WHEN (= 0 N) (RETURN-FROM FACT 1))
;                          (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)))
; ==>
;   #'(SB-INT:NAMED-LAMBDA FACT (N) (DECLARE (THE NUMBER N))
;                          (BLOCK FACT
;                            (WHEN (= 0 N) (RETURN-FROM FACT 1))
;                            (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)))
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER N)
; 
; compilation unit finished
;   caught 1 WARNING condition
STYLE-WARNING: redefining FACT in DEFUN

CL-USER> 3
3
;;;; (defun fact (n)   (declare (optimize speed))   (when (= 0 n) ...
; in: LAMBDA NIL
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.
; 
; compilation unit finished
;   printed 12 notes
STYLE-WARNING: redefining FACT in DEFUN
;;;; (defun fact (n)   (declare (optimize speed) 	   (type number ...
; in: LAMBDA NIL
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.
; 
; compilation unit finished
;   printed 12 notes
STYLE-WARNING: redefining FACT in DEFUN
CL-USER> 3
3
;;;; (defun fact (n)   (declare (optimize speed) 	   (type number ...
; in: LAMBDA NIL
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.
; 
; compilation unit finished
;   printed 12 notes
STYLE-WARNING: redefining FACT in DEFUN
;;;; (defun fact (n)   (declare (optimize speed) 	   (type number ...
; in: LAMBDA NIL
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: LAMBDA NIL
;     (SB-INT:NAMED-LAMBDA FACT (N)
;                        (DECLARE (OPTIMIZE SPEED) (TYPE NUMBER N)
;                         (TYPE NUMBER II FF))
;                        (BLOCK FACT
;                          (WHEN (= 0 N) (RETURN-FROM FACT 1))
;                          (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)))
; ==>
;   #'(SB-INT:NAMED-LAMBDA FACT (N)
;                          (DECLARE (OPTIMIZE SPEED) (TYPE NUMBER N)
;                           (TYPE NUMBER II FF))
;                          (BLOCK FACT
;                            (WHEN (= 0 N) (RETURN-FROM FACT 1))
;                            (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)))
; 
; caught WARNING:
;   undefined variable: FF
; 
; caught WARNING:
;   undefined variable: II

; 
; caught WARNING:
;   These variables are undefined:
;     FF II
; 
; compilation unit finished
;   caught 3 WARNING conditions
;   printed 12 notes
STYLE-WARNING: redefining FACT in DEFUN

CL-USER> 3
3
;;;; (defun fact (n)   (declare (optimize speed) 	   (type number ...
; in: LAMBDA NIL
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: LAMBDA NIL
;     (SB-INT:NAMED-LAMBDA FACT (N)
;                        (DECLARE (OPTIMIZE SPEED) (TYPE NUMBER N)
;                         (TYPE NUMBER II FF))
;                        (BLOCK FACT
;                          (WHEN (= 0 N) (RETURN-FROM FACT 1))
;                          (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)))
; ==>
;   #'(SB-INT:NAMED-LAMBDA FACT (N)
;                          (DECLARE (OPTIMIZE SPEED) (TYPE NUMBER N)
;                           (TYPE NUMBER II FF))
;                          (BLOCK FACT
;                            (WHEN (= 0 N) (RETURN-FROM FACT 1))
;                            (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)))
; 
; caught WARNING:
;   undefined variable: FF
; 
; caught WARNING:
;   undefined variable: II

; 
; caught WARNING:
;   These variables are undefined:
;     FF II
; 
; compilation unit finished
;   caught 3 WARNING conditions
;   printed 12 notes
STYLE-WARNING: redefining FACT in DEFUN
;;;; (defun fact (n)   (declare (optimize speed) 	   (type number ...
; in: LAMBDA NIL
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (<= II N)
; --> IF 
; ==>
;   (> II N)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a NUMBER, not a FIXNUM.
;       The second argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a NUMBER, not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 1), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: LAMBDA NIL
;     (DO ((II 1 (+ II 1))
;        (FF II (* FF II)))
;       ((<= II N) FF)
;     (DECLARE (TYPE NUMBER FF II)))
; --> BLOCK 
; ==>
;   (LET ((II 1) (FF II))
;     (DECLARE (TYPE NUMBER FF II))
;     (TAGBODY
;       (GO #:G1)
;      #:G0
;       (TAGBODY)
;       (PSETQ II (+ II 1) FF (* FF II))
;      #:G1
;       (UNLESS (<= II N) (GO #:G0))
;       (RETURN-FROM NIL (PROGN FF))))
; 
; caught WARNING:
;   undefined variable: II

; 
; caught WARNING:
;   This variable is undefined:
;     II
; 
; compilation unit finished
;   caught 2 WARNING conditions
;   printed 11 notes
STYLE-WARNING: redefining FACT in DEFUN
;;;; (defun fact (n)   (declare (optimize speed) 	   (type number ...
; in: LAMBDA NIL
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (<= II N)
; --> IF 
; ==>
;   (> II N)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (+ 1 II)
; ==>
;   (+ SB-C::Y 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a NUMBER, not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a NUMBER, not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: LAMBDA NIL
;     (DECLARE (TYPE NUMBER FF II))
; 
; caught WARNING:
;   There is no function named DECLARE. References to DECLARE in some contexts
;   (like starts of blocks) have special meaning, but here it would have to be a
;   function, and that shouldn't be right.

;     (TYPE NUMBER FF II)
; 
; caught WARNING:
;   undefined variable: NUMBER
; 
; caught WARNING:
;   The function TYPE is undefined, and its name is reserved by ANSI CL so that
;   even if it were defined later, the code doing so would not be portable.

; 
; caught WARNING:
;   This variable is undefined:
;     NUMBER

; 
; caught STYLE-WARNING:
;   These functions are undefined:
;     DECLARE TYPE
; 
; compilation unit finished
;   caught 4 WARNING conditions
;   caught 1 STYLE-WARNING condition
;   printed 11 notes
STYLE-WARNING: redefining FACT in DEFUN

CL-USER> 3
3
;;;; (defun fact (n)   (declare (optimize speed) 	   (type number ...
; in: LAMBDA NIL
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (<= II N)
; --> IF 
; ==>
;   (> II N)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (+ 1 II)
; ==>
;   (+ SB-C::Y 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a NUMBER, not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a NUMBER, not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: LAMBDA NIL
;     (DECLARE (TYPE NUMBER FF II))
; 
; caught WARNING:
;   There is no function named DECLARE. References to DECLARE in some contexts
;   (like starts of blocks) have special meaning, but here it would have to be a
;   function, and that shouldn't be right.

;     (TYPE NUMBER FF II)
; 
; caught WARNING:
;   undefined variable: NUMBER
; 
; caught WARNING:
;   The function TYPE is undefined, and its name is reserved by ANSI CL so that
;   even if it were defined later, the code doing so would not be portable.

; 
; caught WARNING:
;   This variable is undefined:
;     NUMBER

; 
; caught STYLE-WARNING:
;   These functions are undefined:
;     DECLARE TYPE
; 
; compilation unit finished
;   caught 4 WARNING conditions
;   caught 1 STYLE-WARNING condition
;   printed 11 notes
STYLE-WARNING: redefining FACT in DEFUN
CL-USER> 
; No value
CL-USER> 3
3
;;;; (defun fact (n)   (declare (optimize speed) 	   (type number ...
; in: LAMBDA NIL
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (<= II N)
; --> IF 
; ==>
;   (> II N)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (+ 1 II)
; ==>
;   (+ SB-C::Y 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a NUMBER, not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a NUMBER, not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.
; 
; compilation unit finished
;   printed 11 notes
STYLE-WARNING: redefining FACT in DEFUN
CL-USER> 3
3
;;;; (defun fact (n)   (declare (optimize speed) 	   (type number ...
; in: LAMBDA NIL
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (<= II N)
; --> IF 
; ==>
;   (> II N)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (+ 1 II)
; ==>
;   (+ SB-C::Y 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a NUMBER, not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a NUMBER, not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.
; 
; compilation unit finished
;   printed 11 notes
STYLE-WARNING: redefining FACT in DEFUN
;;;; (fact 5) ...
;;;; (defun fact (n)   (declare (optimize speed) 	   (type number ...
; in: LAMBDA NIL
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.
; 
; compilation unit finished
;   printed 12 notes
STYLE-WARNING: redefining FACT in DEFUN
;;;; (fact 5) ...
;;;; (time (loop for ii from 1 to 100000 	    do 	    (fact-sum3  ...
Evaluation took:
  1.627 seconds of real time
  1.584099 seconds of user run time
  0.008 seconds of system run time
  [Run times include 0.184 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  221,315,352 bytes consed.
;;;; Compile file /home/mortis/personal/projects/project-euler/sr ...

; compiling file "/home/mortis/personal/projects/project-euler/src/cl/problem-34.lisp" (written 02 OCT 2007 12:43:03 AM):

; file: /home/mortis/personal/projects/project-euler/src/cl/problem-34.lisp
; in: DEFUN FACT
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: DEFUN FACT-SUM
;     (DEFUN FACT-SUM (NUM)
;     (DECLARE (THE NUMBER NUM) (OPTIMIZE SPEED))
;     (LET ((RES 0))
;       (DECLARE (THE NUMBER RES))
;       (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES #)))
;       RES))
; --> PROGN EVAL-WHEN 
; ==>
;   (SB-IMPL::%DEFUN 'FACT-SUM
;                    (SB-INT:NAMED-LAMBDA FACT-SUM (NUM)
;                                         (DECLARE (THE NUMBER NUM)
;                                          (OPTIMIZE SPEED))
;                                         (BLOCK FACT-SUM
;                                           (LET (#)
;                                             (DECLARE #)
;                                             (LOOP FOR N ACROSS # DO #)
;                                             RES)))
;                    NIL 'NIL (SB-C:SOURCE-LOCATION))
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-78)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.
; 
; compilation unit finished
;   caught 2 WARNING conditions
;   printed 28 notes

; /home/mortis/personal/projects/project-euler/src/cl/problem-34.fasl written
; compilation finished in 0:00:01
STYLE-WARNING: redefining FACT in DEFUN
STYLE-WARNING: redefining EXPLODE-STRING in DEFUN
STYLE-WARNING: redefining EXPLODE-STRING->NUMBERS in DEFUN
STYLE-WARNING: redefining CH->NUM in DEFUN
STYLE-WARNING: redefining FACT-SUM2 in DEFUN
STYLE-WARNING: redefining FACT-SUM3 in DEFUN
STYLE-WARNING: redefining FACT-SUM in DEFUN
STYLE-WARNING: redefining IS-CURIOUS? in DEFUN
ii:1 fact-sum:1 is-curious?:T
ii:2 fact-sum:2 is-curious?:T
ii:3 fact-sum:6 is-curious?:NIL
ii:4 fact-sum:24 is-curious?:NIL
ii:5 fact-sum:120 is-curious?:NIL
ii:6 fact-sum:720 is-curious?:NIL
ii:7 fact-sum:5040 is-curious?:NIL
ii:8 fact-sum:40320 is-curious?:NIL
ii:9 fact-sum:362880 is-curious?:NIL
ii:10 fact-sum:2 is-curious?:NIL
ii:11 fact-sum:2 is-curious?:NIL
ii:12 fact-sum:3 is-curious?:NIL
ii:13 fact-sum:7 is-curious?:NIL
ii:14 fact-sum:25 is-curious?:NIL
ii:15 fact-sum:121 is-curious?:NIL
ii:16 fact-sum:721 is-curious?:NIL
ii:17 fact-sum:5041 is-curious?:NIL
ii:18 fact-sum:40321 is-curious?:NIL
ii:19 fact-sum:362881 is-curious?:NIL
ii:20 fact-sum:3 is-curious?:NIL
ii:21 fact-sum:3 is-curious?:NIL
ii:22 fact-sum:4 is-curious?:NIL
ii:23 fact-sum:8 is-curious?:NIL
ii:24 fact-sum:26 is-curious?:NIL
ii:25 fact-sum:122 is-curious?:NIL
ii:26 fact-sum:722 is-curious?:NIL
ii:27 fact-sum:5042 is-curious?:NIL
ii:28 fact-sum:40322 is-curious?:NIL
ii:29 fact-sum:362882 is-curious?:NIL
ii:30 fact-sum:7 is-curious?:NIL
ii:31 fact-sum:7 is-curious?:NIL
ii:32 fact-sum:8 is-curious?:NIL
ii:33 fact-sum:12 is-curious?:NIL
ii:34 fact-sum:30 is-curious?:NIL
ii:35 fact-sum:126 is-curious?:NIL
ii:36 fact-sum:726 is-curious?:NIL
ii:37 fact-sum:5046 is-curious?:NIL
ii:38 fact-sum:40326 is-curious?:NIL
ii:39 fact-sum:362886 is-curious?:NIL
ii:40 fact-sum:25 is-curious?:NIL
ii:41 fact-sum:25 is-curious?:NIL
ii:42 fact-sum:26 is-curious?:NIL
ii:43 fact-sum:30 is-curious?:NIL
ii:44 fact-sum:48 is-curious?:NIL
ii:45 fact-sum:144 is-curious?:NIL
ii:46 fact-sum:744 is-curious?:NIL
ii:47 fact-sum:5064 is-curious?:NIL
ii:48 fact-sum:40344 is-curious?:NIL
ii:49 fact-sum:362904 is-curious?:NIL
ii:50 fact-sum:121 is-curious?:NIL
ii:51 fact-sum:121 is-curious?:NIL
ii:52 fact-sum:122 is-curious?:NIL
ii:53 fact-sum:126 is-curious?:NIL
ii:54 fact-sum:144 is-curious?:NIL
ii:55 fact-sum:240 is-curious?:NIL
ii:56 fact-sum:840 is-curious?:NIL
ii:57 fact-sum:5160 is-curious?:NIL
ii:58 fact-sum:40440 is-curious?:NIL
ii:59 fact-sum:363000 is-curious?:NIL
ii:60 fact-sum:721 is-curious?:NIL
ii:61 fact-sum:721 is-curious?:NIL
ii:62 fact-sum:722 is-curious?:NIL
ii:63 fact-sum:726 is-curious?:NIL
ii:64 fact-sum:744 is-curious?:NIL
ii:65 fact-sum:840 is-curious?:NIL
ii:66 fact-sum:1440 is-curious?:NIL
ii:67 fact-sum:5760 is-curious?:NIL
ii:68 fact-sum:41040 is-curious?:NIL
ii:69 fact-sum:363600 is-curious?:NIL
ii:70 fact-sum:5041 is-curious?:NIL
ii:71 fact-sum:5041 is-curious?:NIL
ii:72 fact-sum:5042 is-curious?:NIL
ii:73 fact-sum:5046 is-curious?:NIL
ii:74 fact-sum:5064 is-curious?:NIL
ii:75 fact-sum:5160 is-curious?:NIL
ii:76 fact-sum:5760 is-curious?:NIL
ii:77 fact-sum:10080 is-curious?:NIL
ii:78 fact-sum:45360 is-curious?:NIL
ii:79 fact-sum:367920 is-curious?:NIL
ii:80 fact-sum:40321 is-curious?:NIL
ii:81 fact-sum:40321 is-curious?:NIL
ii:82 fact-sum:40322 is-curious?:NIL
ii:83 fact-sum:40326 is-curious?:NIL
ii:84 fact-sum:40344 is-curious?:NIL
ii:85 fact-sum:40440 is-curious?:NIL
ii:86 fact-sum:41040 is-curious?:NIL
ii:87 fact-sum:45360 is-curious?:NIL
ii:88 fact-sum:80640 is-curious?:NIL
ii:89 fact-sum:403200 is-curious?:NIL
ii:90 fact-sum:362881 is-curious?:NIL
ii:91 fact-sum:362881 is-curious?:NIL
ii:92 fact-sum:362882 is-curious?:NIL
ii:93 fact-sum:362886 is-curious?:NIL
ii:94 fact-sum:362904 is-curious?:NIL
ii:95 fact-sum:363000 is-curious?:NIL
ii:96 fact-sum:363600 is-curious?:NIL
ii:97 fact-sum:367920 is-curious?:NIL
ii:98 fact-sum:403200 is-curious?:NIL
ii:99 fact-sum:725760 is-curious?:NIL
ii:100 fact-sum:3 is-curious?:NIL
ii:101 fact-sum:3 is-curious?:NIL
ii:102 fact-sum:4 is-curious?:NIL
ii:103 fact-sum:8 is-curious?:NIL
ii:104 fact-sum:26 is-curious?:NIL
ii:105 fact-sum:122 is-curious?:NIL
ii:106 fact-sum:722 is-curious?:NIL
ii:107 fact-sum:5042 is-curious?:NIL
ii:108 fact-sum:40322 is-curious?:NIL
ii:109 fact-sum:362882 is-curious?:NIL
ii:110 fact-sum:3 is-curious?:NIL
ii:111 fact-sum:3 is-curious?:NIL
ii:112 fact-sum:4 is-curious?:NIL
ii:113 fact-sum:8 is-curious?:NIL
ii:114 fact-sum:26 is-curious?:NIL
ii:115 fact-sum:122 is-curious?:NIL
ii:116 fact-sum:722 is-curious?:NIL
ii:117 fact-sum:5042 is-curious?:NIL
ii:118 fact-sum:40322 is-curious?:NIL
ii:119 fact-sum:362882 is-curious?:NIL
ii:120 fact-sum:4 is-curious?:NIL
ii:121 fact-sum:4 is-curious?:NIL
ii:122 fact-sum:5 is-curious?:NIL
ii:123 fact-sum:9 is-curious?:NIL
ii:124 fact-sum:27 is-curious?:NIL
ii:125 fact-sum:123 is-curious?:NIL
ii:126 fact-sum:723 is-curious?:NIL
ii:127 fact-sum:5043 is-curious?:NIL
ii:128 fact-sum:40323 is-curious?:NIL
ii:129 fact-sum:362883 is-curious?:NIL
ii:130 fact-sum:8 is-curious?:NIL
ii:131 fact-sum:8 is-curious?:NIL
ii:132 fact-sum:9 is-curious?:NIL
ii:133 fact-sum:13 is-curious?:NIL
ii:134 fact-sum:31 is-curious?:NIL
ii:135 fact-sum:127 is-curious?:NIL
ii:136 fact-sum:727 is-curious?:NIL
ii:137 fact-sum:5047 is-curious?:NIL
ii:138 fact-sum:40327 is-curious?:NIL
ii:139 fact-sum:362887 is-curious?:NIL
ii:140 fact-sum:26 is-curious?:NIL
ii:141 fact-sum:26 is-curious?:NIL
ii:142 fact-sum:27 is-curious?:NIL
ii:143 fact-sum:31 is-curious?:NIL
ii:144 fact-sum:49 is-curious?:NIL
ii:145 fact-sum:145 is-curious?:T
ii:146 fact-sum:745 is-curious?:NIL
ii:147 fact-sum:5065 is-curious?:NIL
ii:148 fact-sum:40345 is-curious?:NIL
ii:149 fact-sum:362905 is-curious?:NIL
ii:150 fact-sum:122 is-curious?:NIL
ii:151 fact-sum:122 is-curious?:NIL
ii:152 fact-sum:123 is-curious?:NIL
ii:153 fact-sum:127 is-curious?:NIL
ii:154 fact-sum:145 is-curious?:NIL
ii:155 fact-sum:241 is-curious?:NIL
ii:156 fact-sum:841 is-curious?:NIL
ii:157 fact-sum:5161 is-curious?:NIL
ii:158 fact-sum:40441 is-curious?:NIL
ii:159 fact-sum:363001 is-curious?:NIL
ii:160 fact-sum:722 is-curious?:NIL
ii:161 fact-sum:722 is-curious?:NIL
ii:162 fact-sum:723 is-curious?:NIL
ii:163 fact-sum:727 is-curious?:NIL
ii:164 fact-sum:745 is-curious?:NIL
ii:165 fact-sum:841 is-curious?:NIL
ii:166 fact-sum:1441 is-curious?:NIL
ii:167 fact-sum:5761 is-curious?:NIL
ii:168 fact-sum:41041 is-curious?:NIL
ii:169 fact-sum:363601 is-curious?:NIL
ii:170 fact-sum:5042 is-curious?:NIL
ii:171 fact-sum:5042 is-curious?:NIL
ii:172 fact-sum:5043 is-curious?:NIL
ii:173 fact-sum:5047 is-curious?:NIL
ii:174 fact-sum:5065 is-curious?:NIL
ii:175 fact-sum:5161 is-curious?:NIL
ii:176 fact-sum:5761 is-curious?:NIL
ii:177 fact-sum:10081 is-curious?:NIL
ii:178 fact-sum:45361 is-curious?:NIL
ii:179 fact-sum:367921 is-curious?:NIL
ii:180 fact-sum:40322 is-curious?:NIL
ii:181 fact-sum:40322 is-curious?:NIL
ii:182 fact-sum:40323 is-curious?:NIL
ii:183 fact-sum:40327 is-curious?:NIL
ii:184 fact-sum:40345 is-curious?:NIL
ii:185 fact-sum:40441 is-curious?:NIL
ii:186 fact-sum:41041 is-curious?:NIL
ii:187 fact-sum:45361 is-curious?:NIL
ii:188 fact-sum:80641 is-curious?:NIL
ii:189 fact-sum:403201 is-curious?:NIL
ii:190 fact-sum:362882 is-curious?:NIL
ii:191 fact-sum:362882 is-curious?:NIL
ii:192 fact-sum:362883 is-curious?:NIL
ii:193 fact-sum:362887 is-curious?:NIL
ii:194 fact-sum:362905 is-curious?:NIL
ii:195 fact-sum:363001 is-curious?:NIL
ii:196 fact-sum:363601 is-curious?:NIL
ii:197 fact-sum:367921 is-curious?:NIL
ii:198 fact-sum:403201 is-curious?:NIL
ii:199 fact-sum:725761 is-curious?:NIL
ii:200 fact-sum:4 is-curious?:NIL
;;;; (time   (let ((num-curious 0))    (loop for ii from 3 to *ma ...
found: 145 145
at:10000
at:20000
at:30000
at:40000
found: 40585 40585
at:50000
at:60000
at:70000
at:80000
at:90000
at:100000
at:110000
at:120000
at:130000
at:140000
at:150000
at:160000
at:170000
at:180000
at:190000
at:200000
at:210000
at:220000
at:230000
at:240000
at:250000
at:260000
at:270000
at:280000
at:290000
at:300000
at:310000
at:320000
at:330000
at:340000
at:350000
at:360000
at:370000
at:380000
at:390000
at:400000
at:410000
at:420000
at:430000
at:440000
at:450000
at:460000
at:470000
at:480000
at:490000
at:500000
at:510000
at:520000
at:530000
at:540000
at:550000
at:560000
at:570000
at:580000
at:590000
at:600000
at:610000
at:620000
at:630000
at:640000
at:650000
at:660000
at:670000
at:680000
at:690000
at:700000
at:710000
at:720000
at:730000
at:740000
at:750000
at:760000
at:770000
at:780000
at:790000
at:800000
at:810000
at:820000
at:830000
at:840000
at:850000
at:860000
at:870000
at:880000
at:890000
at:900000
at:910000
at:920000
at:930000
at:940000
at:950000
at:960000
at:970000
at:980000
at:990000
at:1000000
at:1010000
at:1020000
at:1030000
at:1040000
at:1050000
at:1060000
at:1070000
at:1080000
at:1090000
at:1100000
at:1110000
at:1120000
at:1130000
at:1140000
at:1150000
at:1160000
at:1170000
at:1180000
at:1190000
at:1200000
at:1210000
at:1220000
at:1230000
at:1240000
at:1250000
at:1260000
at:1270000
at:1280000
at:1290000
at:1300000
at:1310000
at:1320000
at:1330000
at:1340000
at:1350000
at:1360000
at:1370000
at:1380000
at:1390000
at:1400000
at:1410000
at:1420000
at:1430000
at:1440000
at:1450000
at:1460000
at:1470000
at:1480000
at:1490000
at:1500000
at:1510000
at:1520000
at:1530000
at:1540000
at:1550000
at:1560000
at:1570000
at:1580000
at:1590000
at:1600000
at:1610000
at:1620000
at:1630000
at:1640000
at:1650000
at:1660000
at:1670000
at:1680000
at:1690000
at:1700000
at:1710000
at:1720000
at:1730000
at:1740000
at:1750000
at:1760000
at:1770000
at:1780000
at:1790000
at:1800000
at:1810000
at:1820000
at:1830000
at:1840000
at:1850000
at:1860000
at:1870000
at:1880000
at:1890000
at:1900000
at:1910000
at:1920000
at:1930000
at:1940000
at:1950000
at:1960000
at:1970000
at:1980000
at:1990000
at:2000000
at:2010000
at:2020000
at:2030000
at:2040000
at:2050000
at:2060000
at:2070000
at:2080000
at:2090000
at:2100000
at:2110000
at:2120000
at:2130000
at:2140000
at:2150000
at:2160000
at:2170000
at:2180000
at:2190000
at:2200000
at:2210000
at:2220000
at:2230000
at:2240000
at:2250000
at:2260000
at:2270000
at:2280000
at:2290000
at:2300000
at:2310000
at:2320000
at:2330000
at:2340000
at:2350000
at:2360000
at:2370000
at:2380000
at:2390000
at:2400000
at:2410000
at:2420000
at:2430000
at:2440000
at:2450000
at:2460000
at:2470000
at:2480000
at:2490000
at:2500000
at:2510000
at:2520000
at:2530000
at:2540000
at:2550000
at:2560000
at:2570000
at:2580000
at:2590000
at:2600000
at:2610000
at:2620000
at:2630000
at:2640000
at:2650000
at:2660000
at:2670000
at:2680000
at:2690000
at:2700000
at:2710000
at:2720000
at:2730000
at:2740000
at:2750000
at:2760000
at:2770000
at:2780000
at:2790000
at:2800000
at:2810000
at:2820000
at:2830000
at:2840000
at:2850000
at:2860000
at:2870000
at:2880000
at:2890000
at:2900000
at:2910000
at:2920000
at:2930000
at:2940000
at:2950000
at:2960000
at:2970000
at:2980000
at:2990000
at:3000000
at:3010000
at:3020000
at:3030000
at:3040000
at:3050000
at:3060000
at:3070000
at:3080000
at:3090000
at:3100000
at:3110000
at:3120000
at:3130000
at:3140000
at:3150000
at:3160000
at:3170000
at:3180000
at:3190000
at:3200000
at:3210000
at:3220000
at:3230000
at:3240000
at:3250000
at:3260000
at:3270000
at:3280000
at:3290000
at:3300000
at:3310000
at:3320000
at:3330000
at:3340000
at:3350000
at:3360000
at:3370000
at:3380000
at:3390000
at:3400000
at:3410000
at:3420000
at:3430000
at:3440000
at:3450000
at:3460000
at:3470000
at:3480000
at:3490000
at:3500000
at:3510000
at:3520000
at:3530000
at:3540000
at:3550000
at:3560000
at:3570000
at:3580000
at:3590000
at:3600000
at:3610000
at:3620000
at:3630000
at:3640000
at:3650000
at:3660000
at:3670000
at:3680000
at:3690000
at:3700000
at:3710000
at:3720000
at:3730000
at:3740000
at:3750000
at:3760000
at:3770000
at:3780000
at:3790000
at:3800000
at:3810000
at:3820000
at:3830000
at:3840000
at:3850000
at:3860000
at:3870000
at:3880000
at:3890000
at:3900000
at:3910000
at:3920000
at:3930000
at:3940000
at:3950000
at:3960000
at:3970000
at:3980000
at:3990000
at:4000000
at:4010000
at:4020000
at:4030000
at:4040000
at:4050000
at:4060000
at:4070000
at:4080000
at:4090000
at:4100000
at:4110000
at:4120000
at:4130000
at:4140000
at:4150000
at:4160000
at:4170000
at:4180000
at:4190000
at:4200000
at:4210000
at:4220000
at:4230000
at:4240000
at:4250000
at:4260000
at:4270000
at:4280000
at:4290000
at:4300000
at:4310000
at:4320000
at:4330000
at:4340000
at:4350000
at:4360000
at:4370000
at:4380000
at:4390000
at:4400000
at:4410000
at:4420000
at:4430000
at:4440000
at:4450000
at:4460000
at:4470000
at:4480000
at:4490000
at:4500000
at:4510000
at:4520000
at:4530000
at:4540000
at:4550000
at:4560000
at:4570000
at:4580000
at:4590000
at:4600000
at:4610000
at:4620000
at:4630000
at:4640000
at:4650000
at:4660000
at:4670000
at:4680000
at:4690000
at:4700000
at:4710000
at:4720000
at:4730000
at:4740000
at:4750000
at:4760000
at:4770000
at:4780000
at:4790000
at:4800000
at:4810000
at:4820000
at:4830000
at:4840000
at:4850000
at:4860000
at:4870000
at:4880000
at:4890000
at:4900000
at:4910000
at:4920000
at:4930000
at:4940000
at:4950000
at:4960000
at:4970000
at:4980000
at:4990000
at:5000000
at:5010000
at:5020000
at:5030000
at:5040000
at:5050000
at:5060000
at:5070000
at:5080000
at:5090000
at:5100000
at:5110000
at:5120000
at:5130000
at:5140000
at:5150000
at:5160000
at:5170000
at:5180000
at:5190000
at:5200000
at:5210000
at:5220000
at:5230000
at:5240000
at:5250000
at:5260000
at:5270000
at:5280000
at:5290000
at:5300000
at:5310000
at:5320000
at:5330000
at:5340000
at:5350000
at:5360000
at:5370000
at:5380000
at:5390000
at:5400000
at:5410000
at:5420000
at:5430000
at:5440000
at:5450000
at:5460000
at:5470000
at:5480000
at:5490000
at:5500000
at:5510000
at:5520000
at:5530000
at:5540000
at:5550000
at:5560000
at:5570000
at:5580000
at:5590000
at:5600000
at:5610000
at:5620000
at:5630000
at:5640000
at:5650000
at:5660000
at:5670000
at:5680000
at:5690000
at:5700000
at:5710000
at:5720000
at:5730000
at:5740000
at:5750000
at:5760000
at:5770000
at:5780000
at:5790000
at:5800000
at:5810000
at:5820000
at:5830000
at:5840000
at:5850000
at:5860000
at:5870000
at:5880000
at:5890000
at:5900000
at:5910000
at:5920000
at:5930000
at:5940000
at:5950000
at:5960000
at:5970000
at:5980000
at:5990000
at:6000000
at:6010000
at:6020000
at:6030000
at:6040000
at:6050000
at:6060000
at:6070000
at:6080000
at:6090000
at:6100000
at:6110000
at:6120000
at:6130000
at:6140000
at:6150000
at:6160000
at:6170000
at:6180000
at:6190000
at:6200000
at:6210000
at:6220000
at:6230000
at:6240000
at:6250000
at:6260000
at:6270000
at:6280000
at:6290000
at:6300000
at:6310000
at:6320000
at:6330000
at:6340000
at:6350000
at:6360000
at:6370000
at:6380000
at:6390000
at:6400000
at:6410000
at:6420000
at:6430000
at:6440000
at:6450000
at:6460000
at:6470000
at:6480000
at:6490000
at:6500000
at:6510000
at:6520000
at:6530000
at:6540000
at:6550000
at:6560000
at:6570000
at:6580000
at:6590000
at:6600000
at:6610000
at:6620000
at:6630000
at:6640000
at:6650000
at:6660000
at:6670000
at:6680000
at:6690000
at:6700000
at:6710000
at:6720000
at:6730000
at:6740000
at:6750000
at:6760000
at:6770000
at:6780000
at:6790000
at:6800000
at:6810000
at:6820000
at:6830000
at:6840000
at:6850000
at:6860000
at:6870000
at:6880000
at:6890000
at:6900000
at:6910000
at:6920000
at:6930000
at:6940000
at:6950000
at:6960000
at:6970000
at:6980000
at:6990000
at:7000000
at:7010000
at:7020000
at:7030000
at:7040000
at:7050000
at:7060000
at:7070000
at:7080000
at:7090000
at:7100000
at:7110000
at:7120000
at:7130000
at:7140000
at:7150000
at:7160000
at:7170000
at:7180000
at:7190000
at:7200000
at:7210000
at:7220000
at:7230000
at:7240000
at:7250000
at:7260000
at:7270000
at:7280000
at:7290000
at:7300000
at:7310000
at:7320000
at:7330000
at:7340000
at:7350000
at:7360000
at:7370000
at:7380000
at:7390000
at:7400000
at:7410000
at:7420000
at:7430000
at:7440000
at:7450000
at:7460000
at:7470000
at:7480000
at:7490000
at:7500000
at:7510000
at:7520000
at:7530000
at:7540000
at:7550000
at:7560000
at:7570000
at:7580000
at:7590000
at:7600000
at:7610000
at:7620000
at:7630000
at:7640000
at:7650000
at:7660000
at:7670000
at:7680000
at:7690000
at:7700000
at:7710000
at:7720000
at:7730000
at:7740000
at:7750000
at:7760000
at:7770000
at:7780000
at:7790000
at:7800000
at:7810000
at:7820000
at:7830000
at:7840000
at:7850000
at:7860000
at:7870000
at:7880000
at:7890000
at:7900000
at:7910000
at:7920000
at:7930000
at:7940000
at:7950000
at:7960000
at:7970000
at:7980000
at:7990000
at:8000000
at:8010000
at:8020000
at:8030000
at:8040000
at:8050000
at:8060000
at:8070000
at:8080000
at:8090000
at:8100000
at:8110000
at:8120000
at:8130000
at:8140000
at:8150000
at:8160000
at:8170000
at:8180000
at:8190000
at:8200000
at:8210000
at:8220000
at:8230000
at:8240000
at:8250000
at:8260000
at:8270000
at:8280000
at:8290000
at:8300000
at:8310000
at:8320000
at:8330000
at:8340000
at:8350000
at:8360000
at:8370000
at:8380000
at:8390000
at:8400000
at:8410000
at:8420000
at:8430000
at:8440000
at:8450000
at:8460000
at:8470000
at:8480000
at:8490000
at:8500000
at:8510000
at:8520000
at:8530000
at:8540000
at:8550000
at:8560000
at:8570000
at:8580000
at:8590000
at:8600000
at:8610000
at:8620000
at:8630000
at:8640000
at:8650000
at:8660000
at:8670000
at:8680000
at:8690000
at:8700000
at:8710000
at:8720000
at:8730000
at:8740000
at:8750000
at:8760000
at:8770000
at:8780000
at:8790000
at:8800000
at:8810000
at:8820000
at:8830000
at:8840000
at:8850000
at:8860000
at:8870000
at:8880000
at:8890000
at:8900000
at:8910000
at:8920000
at:8930000
at:8940000
at:8950000
at:8960000
at:8970000
at:8980000
at:8990000
at:9000000
num-curious: 2
Evaluation took:
  148.916 seconds of real time
  128.66805 seconds of user run time
  1.516094 seconds of system run time
  [Run times include 15.288 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  18,145,184,552 bytes consed.
;;;; Compile file /home/mortis/personal/projects/project-euler/sr ...
; compiling file "/home/mortis/personal/projects/project-euler/src/cl/problem-34.lisp" (written 02 OCT 2007 12:45:45 AM):

; file: /home/mortis/personal/projects/project-euler/src/cl/problem-34.lisp
; in: DEFUN FACT
;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-53)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-53)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

;     (= 0 N)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to open code because: The operands might not be the same type.

;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

;     (LOOP FOR II FROM 1 TO N FOR FF = II THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-79)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-79)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The second argument is a (INTEGER 2), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The second argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: DEFUN FACT-SUM
;     (DEFUN FACT-SUM (NUM)
;     (DECLARE (THE NUMBER NUM) (OPTIMIZE SPEED))
;     (LET ((RES 0))
;       (DECLARE (THE NUMBER RES))
;       (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES #)))
;       RES))
; --> PROGN EVAL-WHEN 
; ==>
;   (SB-IMPL::%DEFUN 'FACT-SUM
;                    (SB-INT:NAMED-LAMBDA FACT-SUM (NUM)
;                                         (DECLARE (THE NUMBER NUM)
;                                          (OPTIMIZE SPEED))
;                                         (BLOCK FACT-SUM
;                                           (LET (#)
;                                             (DECLARE #)
;                                             (LOOP FOR N ACROSS # DO #)
;                                             RES)))
;                    NIL
;                    '(SB-C:LAMBDA-WITH-LEXENV NIL NIL NIL (NUM)
;                      (DECLARE (THE NUMBER NUM) (OPTIMIZE SPEED))
;                      (BLOCK FACT-SUM
;                        (LET (#)
;                          (DECLARE #)
;                          (LOOP FOR N ACROSS # DO #)
;                          RES)))
;                    (SB-C:SOURCE-LOCATION))
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

;     (FACT (CH->NUM N))
; 
; note: deleting unreachable code

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-84)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

; in: DEFUN FACT
;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: DEFUN FACT-SUM
;     (+ RES (FACT (CH->NUM N)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.

;     (FACT (CH->NUM N))
; 
; caught WARNING:
;   Asserted type NUMBER conflicts with derived type (VALUES NULL &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"

; in: ASSERT (= 145 (FACT-SUM 145))
;     (FACT-SUM 145)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

; in: DEFUN FACT-SUM
;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

;     (FACT (CH->NUM N))
; 
; note: deleting unreachable code

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-107)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

; in: DEFUN FACT
;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: DEFUN FACT-SUM
;     (+ RES (FACT (CH->NUM N)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.

;     (FACT (CH->NUM N))
; 
; caught WARNING:
;   Asserted type NUMBER conflicts with derived type (VALUES NULL &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"

; in: DEFUN IS-CURIOUS?
;     (FACT-SUM NUM)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

; in: DEFUN FACT-SUM
;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

;     (FACT (CH->NUM N))
; 
; note: deleting unreachable code

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-126)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

; in: DEFUN FACT
;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: DEFUN FACT-SUM
;     (+ RES (FACT (CH->NUM N)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.

;     (FACT (CH->NUM N))
; 
; caught WARNING:
;   Asserted type NUMBER conflicts with derived type (VALUES NULL &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"

; in: DEFUN IS-CURIOUS?
;     (FACT-SUM NUM)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

; in: DEFUN FACT-SUM
;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

;     (FACT (CH->NUM N))
; 
; note: deleting unreachable code

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-149)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

; in: DEFUN FACT
;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: DEFUN FACT-SUM
;     (+ RES (FACT (CH->NUM N)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.

;     (FACT (CH->NUM N))
; 
; caught WARNING:
;   Asserted type NUMBER conflicts with derived type (VALUES NULL &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"

; in: DEFUN IS-CURIOUS?
;     (FACT-SUM NUM)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

; in: DEFUN FACT-SUM
;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

;     (FACT (CH->NUM N))
; 
; note: deleting unreachable code

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-170)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

; in: DEFUN FACT
;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: DEFUN FACT-SUM
;     (+ RES (FACT (CH->NUM N)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.

;     (FACT (CH->NUM N))
; 
; caught WARNING:
;   Asserted type NUMBER conflicts with derived type (VALUES NULL &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"

; in: LOOP FOR
;     (FACT-SUM II)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

; in: DEFUN FACT-SUM
;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

; in: DEFUN IS-CURIOUS?
;     (FACT-SUM NUM)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

; in: DEFUN FACT-SUM
;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

;     (FACT (CH->NUM N))
; 
; note: deleting unreachable code
; 
; note: deleting unreachable code

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-193)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

; in: DEFUN FACT
;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

; in: DEFUN FACT-SUM
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-189)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

; in: DEFUN FACT
;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: DEFUN FACT-SUM
;     (+ RES (FACT (CH->NUM N)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.

; in: DEFUN FACT
;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: DEFUN FACT-SUM
;     (+ RES (FACT (CH->NUM N)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.

;     (FACT (CH->NUM N))
; 
; caught WARNING:
;   Asserted type NUMBER conflicts with derived type (VALUES NULL &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"
; 
; caught WARNING:
;   Asserted type NUMBER conflicts with derived type (VALUES NULL &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"

; in:
;      TIME (LET ((NUM-CURIOUS 0))
;         (LOOP FOR II FROM 3 TO *MAXVAL* DO
;               (WHEN (= 0 (MOD II 10000)) (FORMAT T "at:~d~&" II))
;               (WHEN (= II (FACT-SUM II))
;                 (FORMAT T "found: ~a ~a~&" II (FACT-SUM II))
;                 (INCF NUM-CURIOUS)))
;         (FORMAT T "num-curious: ~a~&" NUM-CURIOUS)
;         NUM-CURIOUS)
;     (FACT-SUM II)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

; in: DEFUN FACT-SUM
;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

; in:
;      TIME (LET ((NUM-CURIOUS 0))
;         (LOOP FOR II FROM 3 TO *MAXVAL* DO
;               (WHEN (= 0 (MOD II 10000)) (FORMAT T "at:~d~&" II))
;               (WHEN (= II (FACT-SUM II))
;                 (FORMAT T "found: ~a ~a~&" II (FACT-SUM II))
;                 (INCF NUM-CURIOUS)))
;         (FORMAT T "num-curious: ~a~&" NUM-CURIOUS)
;         NUM-CURIOUS)
;     (FACT-SUM II)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

; in: DEFUN FACT-SUM
;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

;     (FACT (CH->NUM N))
; 
; note: deleting unreachable code
; 
; note: deleting unreachable code

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-238)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

; in: DEFUN FACT
;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.

; in: DEFUN FACT-SUM
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-231)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

; in: DEFUN FACT
;     (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: DEFUN FACT-SUM
;     (+ RES (FACT (CH->NUM N)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.

; in: DEFUN FACT
;     (* FF II)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; in: DEFUN FACT-SUM
;     (+ RES (FACT (CH->NUM N)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.

;     (FACT (CH->NUM N))
; 
; caught WARNING:
;   Asserted type NUMBER conflicts with derived type (VALUES NULL &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"
; 
; caught WARNING:
;   Asserted type NUMBER conflicts with derived type (VALUES NULL &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"
; 
; compilation unit finished
;   caught 27 WARNING conditions
;   printed 234 notes

; /home/mortis/personal/projects/project-euler/src/cl/problem-34.fasl written
; compilation finished in 0:00:02
STYLE-WARNING: redefining FACT in DEFUN
STYLE-WARNING: redefining EXPLODE-STRING in DEFUN
STYLE-WARNING: redefining EXPLODE-STRING->NUMBERS in DEFUN
STYLE-WARNING: redefining CH->NUM in DEFUN
STYLE-WARNING: redefining FACT-SUM2 in DEFUN
STYLE-WARNING: redefining FACT-SUM3 in DEFUN
STYLE-WARNING: redefining FACT-SUM in DEFUN
STYLE-WARNING: redefining IS-CURIOUS? in DEFUN
ii:1 fact-sum:1 is-curious?:T
ii:2 fact-sum:2 is-curious?:T
ii:3 fact-sum:6 is-curious?:NIL
ii:4 fact-sum:24 is-curious?:NIL
ii:5 fact-sum:120 is-curious?:NIL
ii:6 fact-sum:720 is-curious?:NIL
ii:7 fact-sum:5040 is-curious?:NIL
ii:8 fact-sum:40320 is-curious?:NIL
ii:9 fact-sum:362880 is-curious?:NIL
ii:10 fact-sum:2 is-curious?:NIL
ii:11 fact-sum:2 is-curious?:NIL
ii:12 fact-sum:3 is-curious?:NIL
ii:13 fact-sum:7 is-curious?:NIL
ii:14 fact-sum:25 is-curious?:NIL
ii:15 fact-sum:121 is-curious?:NIL
ii:16 fact-sum:721 is-curious?:NIL
ii:17 fact-sum:5041 is-curious?:NIL
ii:18 fact-sum:40321 is-curious?:NIL
ii:19 fact-sum:362881 is-curious?:NIL
ii:20 fact-sum:3 is-curious?:NIL
ii:21 fact-sum:3 is-curious?:NIL
ii:22 fact-sum:4 is-curious?:NIL
ii:23 fact-sum:8 is-curious?:NIL
ii:24 fact-sum:26 is-curious?:NIL
ii:25 fact-sum:122 is-curious?:NIL
ii:26 fact-sum:722 is-curious?:NIL
ii:27 fact-sum:5042 is-curious?:NIL
ii:28 fact-sum:40322 is-curious?:NIL
ii:29 fact-sum:362882 is-curious?:NIL
ii:30 fact-sum:7 is-curious?:NIL
ii:31 fact-sum:7 is-curious?:NIL
ii:32 fact-sum:8 is-curious?:NIL
ii:33 fact-sum:12 is-curious?:NIL
ii:34 fact-sum:30 is-curious?:NIL
ii:35 fact-sum:126 is-curious?:NIL
ii:36 fact-sum:726 is-curious?:NIL
ii:37 fact-sum:5046 is-curious?:NIL
ii:38 fact-sum:40326 is-curious?:NIL
ii:39 fact-sum:362886 is-curious?:NIL
ii:40 fact-sum:25 is-curious?:NIL
ii:41 fact-sum:25 is-curious?:NIL
ii:42 fact-sum:26 is-curious?:NIL
ii:43 fact-sum:30 is-curious?:NIL
ii:44 fact-sum:48 is-curious?:NIL
ii:45 fact-sum:144 is-curious?:NIL
ii:46 fact-sum:744 is-curious?:NIL
ii:47 fact-sum:5064 is-curious?:NIL
ii:48 fact-sum:40344 is-curious?:NIL
ii:49 fact-sum:362904 is-curious?:NIL
ii:50 fact-sum:121 is-curious?:NIL
ii:51 fact-sum:121 is-curious?:NIL
ii:52 fact-sum:122 is-curious?:NIL
ii:53 fact-sum:126 is-curious?:NIL
ii:54 fact-sum:144 is-curious?:NIL
ii:55 fact-sum:240 is-curious?:NIL
ii:56 fact-sum:840 is-curious?:NIL
ii:57 fact-sum:5160 is-curious?:NIL
ii:58 fact-sum:40440 is-curious?:NIL
ii:59 fact-sum:363000 is-curious?:NIL
ii:60 fact-sum:721 is-curious?:NIL
ii:61 fact-sum:721 is-curious?:NIL
ii:62 fact-sum:722 is-curious?:NIL
ii:63 fact-sum:726 is-curious?:NIL
ii:64 fact-sum:744 is-curious?:NIL
ii:65 fact-sum:840 is-curious?:NIL
ii:66 fact-sum:1440 is-curious?:NIL
ii:67 fact-sum:5760 is-curious?:NIL
ii:68 fact-sum:41040 is-curious?:NIL
ii:69 fact-sum:363600 is-curious?:NIL
ii:70 fact-sum:5041 is-curious?:NIL
ii:71 fact-sum:5041 is-curious?:NIL
ii:72 fact-sum:5042 is-curious?:NIL
ii:73 fact-sum:5046 is-curious?:NIL
ii:74 fact-sum:5064 is-curious?:NIL
ii:75 fact-sum:5160 is-curious?:NIL
ii:76 fact-sum:5760 is-curious?:NIL
ii:77 fact-sum:10080 is-curious?:NIL
ii:78 fact-sum:45360 is-curious?:NIL
ii:79 fact-sum:367920 is-curious?:NIL
ii:80 fact-sum:40321 is-curious?:NIL
ii:81 fact-sum:40321 is-curious?:NIL
ii:82 fact-sum:40322 is-curious?:NIL
ii:83 fact-sum:40326 is-curious?:NIL
ii:84 fact-sum:40344 is-curious?:NIL
ii:85 fact-sum:40440 is-curious?:NIL
ii:86 fact-sum:41040 is-curious?:NIL
ii:87 fact-sum:45360 is-curious?:NIL
ii:88 fact-sum:80640 is-curious?:NIL
ii:89 fact-sum:403200 is-curious?:NIL
ii:90 fact-sum:362881 is-curious?:NIL
ii:91 fact-sum:362881 is-curious?:NIL
ii:92 fact-sum:362882 is-curious?:NIL
ii:93 fact-sum:362886 is-curious?:NIL
ii:94 fact-sum:362904 is-curious?:NIL
ii:95 fact-sum:363000 is-curious?:NIL
ii:96 fact-sum:363600 is-curious?:NIL
ii:97 fact-sum:367920 is-curious?:NIL
ii:98 fact-sum:403200 is-curious?:NIL
ii:99 fact-sum:725760 is-curious?:NIL
ii:100 fact-sum:3 is-curious?:NIL
ii:101 fact-sum:3 is-curious?:NIL
ii:102 fact-sum:4 is-curious?:NIL
ii:103 fact-sum:8 is-curious?:NIL
ii:104 fact-sum:26 is-curious?:NIL
ii:105 fact-sum:122 is-curious?:NIL
ii:106 fact-sum:722 is-curious?:NIL
ii:107 fact-sum:5042 is-curious?:NIL
ii:108 fact-sum:40322 is-curious?:NIL
ii:109 fact-sum:362882 is-curious?:NIL
ii:110 fact-sum:3 is-curious?:NIL
ii:111 fact-sum:3 is-curious?:NIL
ii:112 fact-sum:4 is-curious?:NIL
ii:113 fact-sum:8 is-curious?:NIL
ii:114 fact-sum:26 is-curious?:NIL
ii:115 fact-sum:122 is-curious?:NIL
ii:116 fact-sum:722 is-curious?:NIL
ii:117 fact-sum:5042 is-curious?:NIL
ii:118 fact-sum:40322 is-curious?:NIL
ii:119 fact-sum:362882 is-curious?:NIL
ii:120 fact-sum:4 is-curious?:NIL
ii:121 fact-sum:4 is-curious?:NIL
ii:122 fact-sum:5 is-curious?:NIL
ii:123 fact-sum:9 is-curious?:NIL
ii:124 fact-sum:27 is-curious?:NIL
ii:125 fact-sum:123 is-curious?:NIL
ii:126 fact-sum:723 is-curious?:NIL
ii:127 fact-sum:5043 is-curious?:NIL
ii:128 fact-sum:40323 is-curious?:NIL
ii:129 fact-sum:362883 is-curious?:NIL
ii:130 fact-sum:8 is-curious?:NIL
ii:131 fact-sum:8 is-curious?:NIL
ii:132 fact-sum:9 is-curious?:NIL
ii:133 fact-sum:13 is-curious?:NIL
ii:134 fact-sum:31 is-curious?:NIL
ii:135 fact-sum:127 is-curious?:NIL
ii:136 fact-sum:727 is-curious?:NIL
ii:137 fact-sum:5047 is-curious?:NIL
ii:138 fact-sum:40327 is-curious?:NIL
ii:139 fact-sum:362887 is-curious?:NIL
ii:140 fact-sum:26 is-curious?:NIL
ii:141 fact-sum:26 is-curious?:NIL
ii:142 fact-sum:27 is-curious?:NIL
ii:143 fact-sum:31 is-curious?:NIL
ii:144 fact-sum:49 is-curious?:NIL
ii:145 fact-sum:145 is-curious?:T
ii:146 fact-sum:745 is-curious?:NIL
ii:147 fact-sum:5065 is-curious?:NIL
ii:148 fact-sum:40345 is-curious?:NIL
ii:149 fact-sum:362905 is-curious?:NIL
ii:150 fact-sum:122 is-curious?:NIL
ii:151 fact-sum:122 is-curious?:NIL
ii:152 fact-sum:123 is-curious?:NIL
ii:153 fact-sum:127 is-curious?:NIL
ii:154 fact-sum:145 is-curious?:NIL
ii:155 fact-sum:241 is-curious?:NIL
ii:156 fact-sum:841 is-curious?:NIL
ii:157 fact-sum:5161 is-curious?:NIL
ii:158 fact-sum:40441 is-curious?:NIL
ii:159 fact-sum:363001 is-curious?:NIL
ii:160 fact-sum:722 is-curious?:NIL
ii:161 fact-sum:722 is-curious?:NIL
ii:162 fact-sum:723 is-curious?:NIL
ii:163 fact-sum:727 is-curious?:NIL
ii:164 fact-sum:745 is-curious?:NIL
ii:165 fact-sum:841 is-curious?:NIL
ii:166 fact-sum:1441 is-curious?:NIL
ii:167 fact-sum:5761 is-curious?:NIL
ii:168 fact-sum:41041 is-curious?:NIL
ii:169 fact-sum:363601 is-curious?:NIL
ii:170 fact-sum:5042 is-curious?:NIL
ii:171 fact-sum:5042 is-curious?:NIL
ii:172 fact-sum:5043 is-curious?:NIL
ii:173 fact-sum:5047 is-curious?:NIL
ii:174 fact-sum:5065 is-curious?:NIL
ii:175 fact-sum:5161 is-curious?:NIL
ii:176 fact-sum:5761 is-curious?:NIL
ii:177 fact-sum:10081 is-curious?:NIL
ii:178 fact-sum:45361 is-curious?:NIL
ii:179 fact-sum:367921 is-curious?:NIL
ii:180 fact-sum:40322 is-curious?:NIL
ii:181 fact-sum:40322 is-curious?:NIL
ii:182 fact-sum:40323 is-curious?:NIL
ii:183 fact-sum:40327 is-curious?:NIL
ii:184 fact-sum:40345 is-curious?:NIL
ii:185 fact-sum:40441 is-curious?:NIL
ii:186 fact-sum:41041 is-curious?:NIL
ii:187 fact-sum:45361 is-curious?:NIL
ii:188 fact-sum:80641 is-curious?:NIL
ii:189 fact-sum:403201 is-curious?:NIL
ii:190 fact-sum:362882 is-curious?:NIL
ii:191 fact-sum:362882 is-curious?:NIL
ii:192 fact-sum:362883 is-curious?:NIL
ii:193 fact-sum:362887 is-curious?:NIL
ii:194 fact-sum:362905 is-curious?:NIL
ii:195 fact-sum:363001 is-curious?:NIL
ii:196 fact-sum:363601 is-curious?:NIL
ii:197 fact-sum:367921 is-curious?:NIL
ii:198 fact-sum:403201 is-curious?:NIL
ii:199 fact-sum:725761 is-curious?:NIL
ii:200 fact-sum:4 is-curious?:NIL
found: 145 145
at:10000
at:20000
at:30000
at:40000
found: 40585 40585
at:50000
at:60000
at:70000
at:80000
at:90000
at:100000
at:110000
at:120000
at:130000
at:140000
at:150000
at:160000
at:170000
at:180000
at:190000
at:200000
at:210000
at:220000
at:230000
at:240000
at:250000
at:260000
at:270000
at:280000
at:290000
at:300000
at:310000
at:320000
at:330000
at:340000
at:350000
at:360000
at:370000
at:380000
at:390000
at:400000
at:410000
at:420000
at:430000
at:440000
at:450000
at:460000
at:470000
at:480000
at:490000
at:500000
at:510000
at:520000
at:530000
at:540000
at:550000
at:560000
at:570000
at:580000
at:590000
at:600000
at:610000
at:620000
at:630000
at:640000
at:650000
at:660000
at:670000
at:680000
at:690000
at:700000
at:710000
at:720000
at:730000
at:740000
at:750000
at:760000
at:770000
at:780000
at:790000
at:800000
at:810000
at:820000
at:830000
at:840000
at:850000
at:860000
at:870000
at:880000
at:890000
at:900000
at:910000
at:920000
at:930000
at:940000
at:950000
at:960000
at:970000
at:980000
at:990000
at:1000000
at:1010000
at:1020000
at:1030000
at:1040000
at:1050000
at:1060000
at:1070000
at:1080000
at:1090000
at:1100000
at:1110000
at:1120000
at:1130000
at:1140000
at:1150000
at:1160000
at:1170000
at:1180000
at:1190000
at:1200000
at:1210000
at:1220000
at:1230000
at:1240000
at:1250000
at:1260000
at:1270000
at:1280000
at:1290000
at:1300000
at:1310000
at:1320000
at:1330000
at:1340000
at:1350000
at:1360000
at:1370000
at:1380000
at:1390000
at:1400000
at:1410000
at:1420000
at:1430000
at:1440000
at:1450000
at:1460000
at:1470000
at:1480000
at:1490000
at:1500000
at:1510000
at:1520000
at:1530000
at:1540000
at:1550000
at:1560000
at:1570000
at:1580000
at:1590000
at:1600000
at:1610000
at:1620000
at:1630000
at:1640000
at:1650000
at:1660000
at:1670000
at:1680000
at:1690000
at:1700000
at:1710000
at:1720000
at:1730000
at:1740000
at:1750000
at:1760000
at:1770000
at:1780000
at:1790000
at:1800000
at:1810000
at:1820000
at:1830000
at:1840000
at:1850000
at:1860000
at:1870000
at:1880000
at:1890000
at:1900000
at:1910000
at:1920000
at:1930000
at:1940000
at:1950000
at:1960000
at:1970000
at:1980000
at:1990000
at:2000000
at:2010000
at:2020000
at:2030000
at:2040000
at:2050000
at:2060000
at:2070000
at:2080000
at:2090000
at:2100000
at:2110000
at:2120000
at:2130000
at:2140000
at:2150000
at:2160000
at:2170000
at:2180000
at:2190000
at:2200000
at:2210000
at:2220000
at:2230000
at:2240000
at:2250000
at:2260000
at:2270000
at:2280000
at:2290000
at:2300000
at:2310000
at:2320000
at:2330000
at:2340000
at:2350000
at:2360000
at:2370000
at:2380000
at:2390000
at:2400000
at:2410000
at:2420000
at:2430000
at:2440000
at:2450000
at:2460000
at:2470000
at:2480000
at:2490000
at:2500000
at:2510000
at:2520000
at:2530000
at:2540000
at:2550000
at:2560000
at:2570000
at:2580000
at:2590000
at:2600000
at:2610000
at:2620000
at:2630000
at:2640000
at:2650000
at:2660000
at:2670000
at:2680000
at:2690000
at:2700000
at:2710000
at:2720000
at:2730000
at:2740000
at:2750000
at:2760000
at:2770000
at:2780000
at:2790000
at:2800000
at:2810000
at:2820000
at:2830000
at:2840000
at:2850000
at:2860000
at:2870000
at:2880000
at:2890000
at:2900000
at:2910000
at:2920000
at:2930000
at:2940000
at:2950000
at:2960000
at:2970000
at:2980000
at:2990000
at:3000000
at:3010000
at:3020000
at:3030000
at:3040000
at:3050000
at:3060000
at:3070000
at:3080000
at:3090000
at:3100000
at:3110000
at:3120000
at:3130000
at:3140000
at:3150000
at:3160000
at:3170000
at:3180000
at:3190000
at:3200000
at:3210000
at:3220000
at:3230000
at:3240000
at:3250000
at:3260000
at:3270000
at:3280000
at:3290000
at:3300000
at:3310000
at:3320000
at:3330000
at:3340000
at:3350000
at:3360000
at:3370000
at:3380000
at:3390000
at:3400000
at:3410000
at:3420000
at:3430000
at:3440000
at:3450000
at:3460000
at:3470000
at:3480000
at:3490000
at:3500000
at:3510000
at:3520000
at:3530000
;;;; (defun is-curious? (num)   (= num (fact-sum num))) ...
at:3540000
at:3550000
at:3560000
at:3570000
at:3580000
at:3590000
at:3600000
at:3610000
at:3620000
at:3630000
at:3640000
at:3650000
at:3660000
at:3670000
at:3680000
at:3690000
at:3700000
at:3710000
at:3720000
at:3730000
at:3740000
at:3750000
at:3760000
at:3770000
at:3780000
at:3790000
at:3800000
at:3810000
at:3820000
at:3830000
at:3840000
at:3850000
at:3860000
at:3870000
at:3880000
at:3890000
at:3900000
at:3910000
at:3920000
at:3930000
at:3940000
at:3950000
at:3960000
at:3970000
at:3980000
at:3990000
at:4000000
at:4010000
at:4020000
at:4030000
at:4040000
at:4050000
at:4060000
at:4070000
at:4080000
at:4090000
at:4100000
at:4110000
at:4120000
at:4130000
at:4140000
at:4150000
at:4160000
at:4170000
at:4180000
at:4190000
at:4200000
at:4210000
at:4220000
at:4230000
at:4240000
at:4250000
at:4260000
at:4270000
at:4280000
at:4290000
at:4300000
at:4310000
at:4320000
at:4330000
at:4340000
at:4350000
at:4360000
at:4370000
at:4380000
at:4390000
at:4400000
at:4410000
at:4420000
at:4430000
at:4440000
at:4450000
at:4460000
at:4470000
at:4480000
at:4490000
at:4500000
at:4510000
at:4520000
at:4530000
at:4540000
at:4550000
at:4560000
at:4570000
at:4580000
at:4590000
at:4600000
at:4610000
at:4620000
at:4630000
at:4640000
at:4650000
at:4660000
at:4670000
at:4680000
at:4690000
at:4700000
at:4710000
at:4720000
at:4730000
at:4740000
at:4750000
at:4760000
at:4770000
at:4780000
at:4790000
at:4800000
at:4810000
at:4820000
at:4830000
at:4840000
at:4850000
at:4860000
at:4870000
at:4880000
at:4890000
at:4900000
;;;; (defun fact-sum (num)   (declare (the number num) 	   (optim ...
at:4910000
at:4920000
at:4930000
at:4940000
at:4950000
at:4960000
at:4970000
at:4980000
at:4990000
at:5000000
at:5010000
at:5020000
at:5030000
at:5040000
at:5050000
at:5060000
at:5070000
at:5080000
at:5090000
at:5100000
at:5110000
at:5120000
at:5130000
at:5140000
at:5150000
at:5160000
at:5170000
at:5180000
at:5190000
at:5200000
at:5210000
at:5220000
at:5230000
at:5240000
at:5250000
at:5260000
at:5270000
at:5280000
at:5290000
at:5300000
at:5310000
at:5320000
at:5330000
at:5340000
at:5350000
at:5360000
at:5370000
at:5380000
at:5390000
at:5400000
at:5410000
at:5420000
at:5430000
at:5440000
at:5450000
at:5460000
at:5470000
at:5480000
at:5490000
at:5500000
at:5510000
at:5520000
at:5530000
at:5540000
at:5550000
at:5560000
at:5570000
at:5580000
at:5590000
at:5600000
at:5610000
at:5620000
at:5630000
at:5640000
at:5650000
at:5660000
at:5670000
at:5680000
at:5690000
at:5700000
at:5710000
at:5720000
at:5730000
at:5740000
at:5750000
at:5760000
at:5770000
at:5780000
at:5790000
at:5800000
at:5810000
at:5820000
at:5830000
at:5840000
at:5850000
at:5860000
at:5870000
at:5880000
at:5890000
at:5900000
at:5910000
at:5920000
at:5930000
at:5940000
at:5950000
at:5960000
at:5970000
at:5980000
at:5990000
at:6000000
at:6010000
at:6020000
at:6030000
at:6040000
at:6050000
at:6060000
at:6070000
at:6080000
at:6090000
at:6100000
at:6110000
at:6120000
at:6130000
at:6140000
at:6150000
at:6160000
at:6170000
at:6180000
at:6190000
at:6200000
at:6210000
at:6220000
at:6230000
at:6240000
at:6250000
at:6260000
at:6270000
at:6280000
at:6290000
at:6300000
at:6310000
at:6320000
at:6330000
at:6340000
at:6350000
at:6360000
at:6370000
at:6380000
at:6390000
at:6400000
at:6410000
at:6420000
at:6430000
at:6440000
at:6450000
at:6460000
at:6470000
at:6480000
at:6490000
at:6500000
at:6510000
at:6520000
at:6530000
at:6540000
at:6550000
at:6560000
at:6570000
at:6580000
at:6590000
at:6600000
at:6610000
at:6620000
at:6630000
at:6640000
at:6650000
at:6660000
at:6670000
at:6680000
at:6690000
at:6700000
at:6710000
at:6720000
at:6730000
at:6740000
at:6750000
at:6760000
at:6770000
at:6780000
at:6790000
at:6800000
at:6810000
at:6820000
at:6830000
at:6840000
at:6850000
at:6860000
at:6870000
at:6880000
at:6890000
at:6900000
at:6910000
at:6920000
at:6930000
at:6940000
at:6950000
at:6960000
at:6970000
at:6980000
at:6990000
at:7000000
at:7010000
at:7020000
at:7030000
at:7040000
at:7050000
at:7060000
at:7070000
at:7080000
at:7090000
at:7100000
at:7110000
at:7120000
at:7130000
at:7140000
at:7150000
at:7160000
at:7170000
at:7180000
at:7190000
at:7200000
at:7210000
at:7220000
at:7230000
at:7240000
at:7250000
at:7260000
at:7270000
at:7280000
at:7290000
at:7300000
at:7310000
at:7320000
at:7330000
at:7340000
at:7350000
at:7360000
at:7370000
at:7380000
at:7390000
at:7400000
at:7410000
at:7420000
at:7430000
at:7440000
at:7450000
at:7460000
at:7470000
at:7480000
at:7490000
at:7500000
at:7510000
at:7520000
at:7530000
at:7540000
at:7550000
at:7560000
at:7570000
at:7580000
at:7590000
at:7600000
at:7610000
at:7620000
at:7630000
at:7640000
at:7650000
at:7660000
at:7670000
at:7680000
at:7690000
at:7700000
at:7710000
at:7720000
at:7730000
at:7740000
at:7750000
at:7760000
at:7770000
at:7780000
at:7790000
at:7800000
at:7810000
at:7820000
at:7830000
at:7840000
at:7850000
at:7860000
at:7870000
at:7880000
at:7890000
at:7900000
at:7910000
at:7920000
at:7930000
at:7940000
at:7950000
at:7960000
at:7970000
at:7980000
at:7990000
at:8000000
at:8010000
at:8020000
at:8030000
at:8040000
at:8050000
at:8060000
at:8070000
at:8080000
at:8090000
at:8100000
at:8110000
at:8120000
at:8130000
at:8140000
at:8150000
at:8160000
at:8170000
at:8180000
at:8190000
at:8200000
at:8210000
at:8220000
at:8230000
at:8240000
at:8250000
at:8260000
at:8270000
at:8280000
at:8290000
at:8300000
at:8310000
at:8320000
at:8330000
at:8340000
at:8350000
at:8360000
at:8370000
at:8380000
at:8390000
at:8400000
at:8410000
at:8420000
at:8430000
at:8440000
at:8450000
at:8460000
at:8470000
at:8480000
at:8490000
at:8500000
at:8510000
at:8520000
at:8530000
at:8540000
at:8550000
at:8560000
at:8570000
at:8580000
at:8590000
at:8600000
at:8610000
at:8620000
at:8630000
at:8640000
at:8650000
at:8660000
at:8670000
at:8680000
at:8690000
at:8700000
at:8710000
at:8720000
at:8730000
at:8740000
at:8750000
at:8760000
at:8770000
at:8780000
at:8790000
at:8800000
at:8810000
at:8820000
at:8830000
at:8840000
at:8850000
at:8860000
at:8870000
at:8880000
at:8890000
at:8900000
at:8910000
at:8920000
at:8930000
at:8940000
at:8950000
at:8960000
at:8970000
at:8980000
at:8990000
at:9000000
num-curious: 2
Evaluation took:
  146.721 seconds of real time
  116.039246 seconds of user run time
  1.480092 seconds of system run time
  [Run times include 16.58 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  18,145,223,200 bytes consed.
; in: LAMBDA NIL
;     (SB-INT:NAMED-LAMBDA FACT-SUM (NUM)
;                        (DECLARE (THE NUMBER NUM) (OPTIMIZE SPEED))
;                        (BLOCK FACT-SUM
;                          (LET ((RES 0))
;                            (DECLARE (THE NUMBER RES))
;                            (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;                                  (SETF RES #))
;                            RES)))
; ==>
;   #'(SB-INT:NAMED-LAMBDA FACT-SUM (NUM)
;                          (DECLARE (THE NUMBER NUM) (OPTIMIZE SPEED))
;                          (BLOCK FACT-SUM
;                            (LET ((RES 0))
;                              (DECLARE (THE NUMBER RES))
;                              (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;                                    (SETF RES #))
;                              RES)))
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

;     (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)

;     (FACT (CH->NUM N))
; 
; note: deleting unreachable code

;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO
;         (SETF RES (+ RES (FACT (CH->NUM N)))))
; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-0)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

;     (FACT (CH->NUM N))
; --> BLOCK LOOP BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY 
; --> SB-LOOP::LOOP-REALLY-DESETQ SETQ THE 
; ==>
;   (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

;     (+ RES (FACT (CH->NUM N)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.

;     (FACT (CH->NUM N))
; 
; caught WARNING:
;   Asserted type NUMBER conflicts with derived type (VALUES NULL &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"
; 
; compilation unit finished
;   caught 3 WARNING conditions
;   printed 22 notes
; in: LAMBDA NIL
;     (FACT-SUM NUM)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER NUM)

; --> BLOCK 
; ==>
;   (LET ((RES 0))
;     (DECLARE (THE NUMBER RES))
;     (LOOP FOR N ACROSS (FORMAT NIL "~d" NUM) DO (SETF RES (+ RES (FACT #))))
;     RES)
; 
; caught WARNING:
;   unrecognized declaration (THE NUMBER RES)
STYLE-WARNING: redefining FACT-SUM in DEFUN

; --> BLOCK LET LOOP BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETQ THE 
; ==>
;   (LENGTH #:LOOP-ACROSS-VECTOR-0)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a (SIMPLE-ARRAY * (*)).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING
;                               NULL), not a VECTOR.

; --> BLOCK LET LOOP BLOCK LET SB-LOOP::LOOP-BODY TAGBODY 
; --> SB-LOOP::LOOP-REALLY-DESETQ SETQ THE AREF LET* 
; ==>
;   (ARRAY-DIMENSION ARRAY 0)
; 
; note: unable to optimize because: can't tell whether array is simple

; ==>
;   (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a STRING, not a SIMPLE-STRING.
; 
; note: unable to
;   avoid runtime dispatch on array element type
; because:
;   Upgraded element type of array is not known at compile time.

; --> BLOCK LET LOOP BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETF SETQ THE 
; ==>
;   (+ RES (FACT (CH->NUM N)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a RATIONAL.
;   The second argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
;   The second argument is a NUMBER, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a SINGLE-FLOAT.
;   The second argument is a NUMBER, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a DOUBLE-FLOAT.
;   The second argument is a NUMBER, not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
;   The second argument is a NUMBER, not a REAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a REAL.
;   The second argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).

; --> BLOCK LET LOOP BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETF SETQ THE + 
; --> FACT BLOCK LOOP BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY 
; --> SB-LOOP::LOOP-REALLY-DESETQ SETQ THE 
; ==>
;   (* FF II)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX SINGLE-FLOAT).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a NUMBER, not a (COMPLEX DOUBLE-FLOAT).
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a NUMBER, not a INTEGER.
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR NUMBER NULL), not a FIXNUM.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (OR NUMBER NULL), not a (SIGNED-BYTE 32).
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                                &REST T).
;       etc.

; --> BLOCK LET LOOP BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETF SETQ THE 
; ==>
;   (+ RES (FACT (CH->NUM N)))
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a DOUBLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a DOUBLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
;                                                                &REST T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a NUMBER, not a SINGLE-FLOAT.
;       The second argument is a (OR NUMBER NULL), not a SINGLE-FLOAT.
;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
;                                                                &REST T).
;       etc.

; --> BLOCK LET LOOP BLOCK LET SB-LOOP::LOOP-BODY TAGBODY SETF SETQ THE + 
; ==>
;   (FACT (CH->NUM N))
; 
; caught WARNING:
;   Asserted type NUMBER conflicts with derived type (VALUES NULL &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"
; 
; compilation unit finished
;   caught 3 WARNING conditions
;   printed 21 notes
STYLE-WARNING: redefining IS-CURIOUS? in DEFUN
;;;; (+ 40585 145) ...

CL-USER> (fact 1000)
402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
CL-USER> (fact 10000)
28462596809170545189064132121198688901480514017027992307941799942744113400037644437729907867577847758158840621423175288300423399401535187390524211613827161748198241998275924182892597878981242531205946599625986706560161572036032397926328736717055741975962099479720346153698119897092611277500484198845410475544642442136573303076703628825803548967461117097369578603670191071512730587281041158640561281165385325968425825995584688146430425589836649317059251717204276597407446133400054194052462303436869154059404066227828248371512038322178644627183822923899638992827221879702459387693803094627332292570555459690027875282242544348021127559019169425429028916907219097083690539873747452483372899521802363282741217040268086769210451555840567172555372015852132829034279989818449313610640381489304499621599999359670892980190336998484404665419236258424947163178961192041233108268651071354516845540936033009607210346944377982349430780626069422302681885227592057029230843126188497606560742586279448827155956831533440534425446648416894580425709461673613187605234982286326452921529423479870603344290737158688499178932580691483168854251956006172372636323974420786924642956012306288720122652952964091508301336630982733806353972901506581822574295475894399765113865541208125788683704239208764484761569001264889271590706306409661628038784044485191643790807186112370622133415415065991843875961023926713276546986163657706626438638029848051952769536195259240930908614471907390768585755934786981720734372093104825475628567777694081564074962275254993384112809289637516990219870492405617531786346939798024619737079041868329931016554150742308393176878366923694849025999607729684293977427536263119825416681531891763234839190821000147178932184227805135181734921901146246875769835373441456013122615221391178759688367364087207937002992038279198038702372078039140312368997608152840306051116709484722224870389199993442071395836983063962232079115624044250808919914319837120445598344047556759489212101498152454543594285414390843564419984224855478532163624030098442855331829253154206551237079705816393460296247697010388742206441536626733715428700789122749340684336442889847100840641600093623935261248037975293343928764398316390312776450722479267851700826669598389526150759007349215197592659192708873202594066382118801988854748266048342256457705743973122259700671936061763513579529821794290797705327283267501488024443528681645026165662837546519006171873442260438919298506071515390031106684727360135816706437861756757439184376479658136100599638689552334648781746143243573224864326798481981458432703035895508420534788493364582482592033288089025782388233265770205248970937047210214248413342465268206806732314214483854074182139621846870108359582946965235632764870475718351616879235068366271743711915723361143070121120767608697851559721846485985918643641716850899625516820910793570231118518174775010804622585521314764897490660752877082897667514951009682329689732000622392888056658036140311285465929084078033974900664953205873164948093883816198658850827382468034897864757116679890423568018303504133875731972630897909435710687797301633918087868474943633533893373586906405848417828065196275826434429258058422212947649402948622670761832988229004072390403733168207417413251656688443079339447019208905620788387585342512820957359307018197708340163817638278562539516825426644614941044711579533262372815468794080423718587423026200264221822694188626212107297776657401018376182280136857586442185863011539843712299107010094061929413223202773193959467006713695377097897778118288242442920864816134179562017471831609687661043140497958198236445807368209404022211181530051433387076607063149616107771117448059552764348333385744040212757031851527298377435921878558552795591028664457917362007221858143309977294778923720717942857756271300923982397921957581197264742642878266682353915687857271620146192244266266708400765665625807109474398740110772811669918806268726626565583345665007890309050656074633078027158530817691223772813510584527326591626219647620571434880215630815259005343721141000303039242866457207328473481712034168186328968865048287367933398443971236735084527340196309427697652684170174990756947982757825835229994315633322107439131550124459005324702680312912392297979030417587823398622373535054642646913502503951009239286585108682088070662734733200354995720397086488066040929854607006339409885836349865466136727880748764700702458790118046518296111277090609016152022111461543158317669957060974618085359390400067892878548827850938637353703904049412684618991272871562655001270833039950257879931705431882752659225814948950746639976007316927310831735883056612614782997663188070063044632429112260691931278881566221591523270457695867512821990938942686601963904489718918597472925310322480210543841044325828472830584297804162405108110326914001900568784396341502696521048920272140232160234898588827371428695339681755106287470907473718188014223487248498558198439094651708364368994306189650243288353279667190184527620551085707626204244509623323204744707831190434499351442625501701771017379551124746159471731862701565571266295855125077711738338208419705893367323724453280456537178514960308802580284067847809414641838659226652806867978843250660537943046250287105104929347267471267499892634627358167146935060495110340755404658170393481046758485625967767959768299409334026387269378365320912287718077451152622642548771835461108886360843272806227776643097283879056728618036048633464893371439415250259459652501520959536157977135595794965729775650902694428088479761276664847003619648906043761934694270444070215317943583831051404915462608728486678750541674146731648999356381312866931427616863537305634586626957894568275065810235950814888778955073939365341937365700848318504475682215444067599203138077073539978036339267334549549296668759922530893898086430606532961793164029612492673080638031873912596151131890359351266480818568366770286537742390746582390910955517179770580797789289752490230737801753142680363914244720257728891784950078117889336629750436804214668197824272980697579391742229456683185815676816288797870624531246651727622758295493421483658868919299587402095696000243560305289829866386892076992834030549710266514322306125231915131843876903823706205399206933943716880466429711476743564486375026847698148853105354063328845062012173302630676481322931561043551941761050712449024873277273112091945865137493190965162497691657553812198566432207978666300398938660238607357858114394715872800893374165033792965832618436073133327526023605115524227228447251463863269369763762510196714380125691227784428426999440829152215904694437282498658085205186576292992775508833128672638418713277780874446643875352644733562441139447628780974650683952982108174967958836452273344694873793471790710064978236466016680572034297929207446822322848665839522211446859572858403863377278030227591530497865873919513650246274195899088374387331594287372029770620207120213038572175933211162413330422773742416353553587977065309647685886077301432778290328894795818404378858567772932094476778669357537460048142376741194182671636870481056911156215614357516290527351224350080604653668917458196549482608612260750293062761478813268955280736149022525819682815051033318132129659664958159030421238775645990973296728066683849166257949747922905361845563741034791430771561168650484292490281102992529678735298767829269040788778480262479222750735948405817439086251877946890045942060168605142772244486272469911146200149880662723538837809380628544384763053235070132028029488392008132135446450056134987017834271106158177289819290656498688081045562233703067254251277277330283498433595772575956224703707793387146593033088629699440318332665797514676502717346298883777397848218700718026741265997158728035440478432478674907127921672898523588486943546692255101337606377915164597254257116968477339951158998349081888281263984400505546210066988792614558214565319696909827253934515760408613476258778165867294410775358824162315779082538054746933540582469717674324523451498483027170396543887737637358191736582454273347490424262946011299881916563713847111849156915054768140411749801454265712394204425441028075806001388198650613759288539038922644322947990286482840099598675963580999112695367601527173086852756572147583507122298296529564917835071750835741362282545055620270969417476799259229774888627411314587676147531456895328093117052696486410187407673296986649236437382565475022816471926815559883196629848307776666840622314315884384910519058281816740764463033300119710293036455866594651869074475250837841987622990415911793682799760654186088721626654886492344391030923256910633775969739051781122764668486791736049404393703339351900609387268397299246478483727274770977466693599784857120156789000241947269220974984127323147401549980920381459821416481176357147801554231599667838534854486406936410556913531335231184053581348940938191821898694825383960989942822027599339635206217705343572073396250574216769465101608495601439303244304271576099527308684609204422226103154229984444802110098161333824827375218998738205315164927134498105950159974800571591912202154487748750103473246190633941303030892399411985006225902184164409988173214324422108554248620896250260604398180189026317781146617454999771440665232863846363847001655618153861098188111181734191305505024860345856755585637511729774299329074944236579668332700918367338977347901759248885660379952771540569083017311723894140326159612292912225191095948743805673381278538616491842786938417556898047100859868372033615175158097022566275200160956192229925401759878522038545913771783976389811198485803291048751666921195104514896677761598249468727420663437593207852618922687285527671324883267794152912839165407968344190239094803676688707838011367042753971396201424784935196735301444404037823526674437556740883025225745273806209980451233188102729012042997989005423126217968135237758041162511459175993279134176507292826762236897291960528289675223521425234217247841869317397460411877634604625637135309801590617736758715336803958559054827361876112151384673432884325090045645358186681905108731791346215730339540580987172013844377099279532797675531099381365840403556795731894141976511436325526270639743146526348120032720096755667701926242585057770617893798231096986788448546659527327061670308918277206432551919393673591346037757083193180845929565158875244597601729455720505595085929175506510115665075521635142318153548176884196032085050871496270494017684183980582594038182593986461260275954247433376226256287153916069025098985070798660621732200163593938611475394561406635675718526617031471453516753007499213865207768523824884600623735896608054951652406480547295869918694358811197833680141488078321213457152360124065922208508912956907835370576734671667863780908811283450395784812212101117250718383359083886187574661201317298217131072944737656265172310694884425498369514147383892477742320940207831200807235326288053906266018186050424938788677872495503255424284226596271050692646071767467502337805671893450110737377034119346113374033865364675136733661394731550211457104671161445253324850197901083431641989998414045044901130163759520675715567509485243580269104077637210998671624254795385312852889930956570729218673523216666097874989635362610529821472569482799996220825775840988458484250391189447608729685184983976367918242266571167166580157914500811657192200233759765317495922397884982814705506190689275625210462185661305800255607974609726715033327032310025274640428755556546883765838802543227403507431684278620637697054791726484378174446361520570933228587284315690756255569305558818822603590006739339952504379887470935079276181116276309771257983975996526612120317495882059435754883862282508401408885720583992400971219212548074097752974278775912566026443482713647231849125180866278708626116699989634812405803684794587364820124653663228889011636572270887757736152003450102268890189101673572058661410011723664762657835396364297819011647056170279631922332294228739309233330748258937626198997596530084135383241125899639629445129082802023225498936627506499530838925632246794695960669046906686292645006219740121782899872979704859021775060092893328957272392019589994471945147360850770400725717439318148461909406269545285030526341000565022226152309364882887122046454267700577148994335147162504252365173710266068647253458120186683273953682547456536553597546685788700056988360286686450740256993087483441094086086303707908295240576731684941855810482475304758923392801571302824106234999945932390521409856559565661346003396150515164758852742214732517999548977992849522746029855666700811871200856155016457400484170210303038996339253337466556817824410737409336919294104632307731994759826307383499600770372410446285414648704116273895649834555162165685114551383822047005483996671706246467566101291382048909121117229386244253158913066987462045587244806052829378148302622164542280421757760762365459828223070815503469404938317755053305094698999476119419231280721807216964378433313606760676965187138394338772485493689061845700572043696666465080734495814495966306246698679832872586300064215220210171813917325275173672262621454945468506006334692713838311715849753092643252486960220059099802663765386225463265168414963306369548086551101256757717890616694758344043486218485369591602172030456183497524162039926441331651884768606830642004858557924473340290142588876403712518642229016333691585063273727199596362912783344786218887871009533753551054688980236378263714926913289564339440899470121452134572117715657591451734895195016800621353927175419843876163543479806920886666227099512371706241924914282576453125769939735341673046864585181979668232015693792684926999983992413571941496882273704022820805171808003400480615261792013978945186295290558440703738300533552421153903385185829366779190610116306233673144419202893857201855569596330833615450290424822309297087124788002017383072060482680156675397593789931793515799958929562156307338416294599900276730832827716595064217966523190439250543226753731811755315476780739470338931185107297724318378972674957455778183345495942317353558291046967315391275975687281861691161083156337232639968881490543943261197182274996791176628553401860198315809629981791107208804992292016062059067271273599461871634945774995805337947187105456452579396024210259136415528398395201773012712514892051061708228008339985665786646920737114269682301770416324829479409558694699089379165191006305185352102345189798127619143061864362703081977124992751056732909481202057747100687703379708934229207183903744167503493818836342229284946790660285674293251642569044363473087656797056595677285291081242733154406580199802711579126254172797452862574865921933293805915239524735518887119860391319654287576290190503964083560246277534314409155642181729459941596061979622633242715863425977947348682074802021538734729707999753332987785531053820162169791880380753006334350766147737135939362651905222242528141084747045295688647757913502160922040348449149950778743107189655725492651282693489515795075486172341394610365176616750329948642244039659511882264981315925080185126386635308622223491094629059317829408195640484702456538305432056506924422671863255307640761872086780391711356363501269525091291020496042823232628996502758951052844368177415730941874894428065427561430975828127698124936993313028946670560414084308942231140912722238148470364341019630413630736771060038159590829746410114421358321042574358350220737173219745089035573187350445827238770728271406162997919629357224104477155051652535867544109395079218369015261138440382680054150924346511711436477899444553993653667727589565713987505542990824585609510036934663100673714708029927656933435500927189854050109917474979991554392031908961967615444686048175400695689471463928245383807010444181045506171305160584355817521032338465829201071030061124283407458607006060194830551364867021020364708470807422704371893706965688795617928713045224516842027402021966415605280335061293558739079393524404092584248380607177444609964035221891022961909032569042381374492494906892314330884224399631396391545854065286326468807581148748371408284176455226386313520264894016262494802388568231599102952620337126449279901938211134518446387544516391239377974190576649911764237637722282802318465738050121277809680315691477264910257503508758792248110223544524410872448565700755187132146592093548504552829170749596775404450779494836371756062326925757412813110241910373338080434325310884694831555729402265394972913817581338619457057799561808755951413644907613109617155928376585840036489374076822257523935988731081689667688287403837192827690431514106997678303819085690713091931340846019511147482766350724676534922040058626677632935516631939622498979912708004465982264899125226813124300528104995058595676527123591494442612554437618645029202881358582871789577224116380815161831603129728796987480139828621645629196153096358337313619724773332353025466571196902611237380629030242904275794549030022660847446513161741691916851746464945459696005330885252792083472495235473110674109099223541055506299687642153951249355986311346661725116890785633328935569150449485189113488301876365100638502565916433021928565596263914382895068324838727165616560111531517055222955765944972454788815532316417453267167978861141165355597588331979638070962998880767303616940317736448140427867784251232449974693421348217179595190698204602997172001174857303889719205597414742453011135869766256607770970225633261701108463784795555258504578058879440756064974127974530918418405207558526462208821483646754652237609210787539190454684852349759986044943322828073120679922402477507514105890774627334319091255451352225329275913842047384603056163154236552935312278389759446515787337343463172280001031380425481404022090580405056003860937403435068863081434683848900708938565050027569059678069404698435184535134141031615133683043714786642925389717165978629010728400758939700388317742648163725113277369926827709465342583596111881955092462062153978121197244762623771534452048069819082524943963962251113831177428978535825590832490480497516047104257569753442551515779815600370847230603484753977513688390404316017486248871339311818523029425425676202485688393970836748788453789172574145155917919035398535077200900594979352939459631213445503368260690059828717723533375221941915547303742062343262892968397015058892191112049249864792053410872349115430987182160055762209075732304626106597744947658346313025598636315029959672352476943975462530206788193304372284800209305354155640664838569378144603138697563459200233462606995955513484754147891180830329816421587452922952678937925647752029052675349356673744293182673374571642465407748267901046778759085408130531447176455869894169668940436489952465247443988349583871206296485413357553813419500498743813369062703973874586604296871595820715766599826607317005624465541763024501349159567288942619746144496908671655859782729228702723774835097362901019130417812735773037781804081589136005207315806941034305003184349342360269244733060013861119781774472669608928321052543116496033420102032603863672532889648333405862204843616575362001468405476649666473566979572953394809138263703324220930839366954980688240491622063147911494642042500022450413425558561937442905257252436320054487441524307305215070491020434076572476865095751174125413729531644521765577235348601821566833352520532830000108344008762266843817023235605645158256954177359197813649975559601912567744942717986360045847405209290089397315276024304951653864431388147876977541478757432610159879709758855625806766197973098472460769484821127948427976536607055051639104415022554420329721292033009353356687294595912327965886376486894188433640548494009574965791657687213927330153555097865114767947399690623184878377515462613823651665956337209345708208301840482797005728071432925727577436229587047361641609731817241594204270366066404089740245521530725227388637241859646455223673260411164598464020010216920823315155388821071527191267876531795071908204525100447821291318544054814494151867114207103693891129125012750853466337717749376016543454696390042711129829255096830420665725364279472200020835313883708781649957189717629338794854271276882652003766325924561614868744897471519366219275665852462114457407010675380427564184440834805203838265052601698584060084788422421887856927897751810442805474427229455167420335686460609977973124950433321425205053675790499520783597650415379001132579536040655172654879022173595444151139429231648950663177813039057462082449171921311864129633704661406456900178942356738775523130952785912774533241855442484484493664210731348819180640189222317302156645813473186449997905781662091469870718039388885781280740226363602294114354869871402143572055947730892808653678920201935102605361567924483276749476117858316071865710310842200560259545115191391309119544447844361032741876102338843391687589233423790859841968266525610628751237572318491474951945985728897934981791761822652480408237128109790772638864286067917082288575852703470839714561619926247844794692794996845945632382702297364173503430783194115698247820013290851202878474805860188960045901745974055630732714487679085288867978809970695240681006625611440014983413580889737246844064948857074167687916413224205373654067330186392497910915474785959163865597507090581175924899502214799250945635582514315814464060134283490422798357939659258985200763845646681640732681928346007767285876284900068874564639274964415904034033672337814491597032941787294155061054129515400159393851663929325677429557549480046658273579653990940233543644649376827272541873627547532976808190325336141086433084237771738995221536763095302045902438694632702895293994483013577589081214884558493819874505920914067209522469096263076941753340983698859363700314973728977996360018626500174929290087931189997822963712306642297996163582572600112288983647651418045975770042120833949364659647336464289044499325396227091907373705772051322815957863227591912786054297862953188615559804728160710864132803585400160055575686855791785977899197902656592621283007225351401525973569300729015392211116868504740402172174442051738000251361000494534119324331668344243125963098812396962202358858395587831685194833126653577353244379935683215269177042249034574534858913812582681366908929476809052635560638119661306063936938411817713545929884317232912236262458868394202889981693561169865429884776513118227662526739978808816010470651542335015671353744817086234314662531190291040152262927104099285072418843329007277794754111637552176563589316326636049381218401837512818884771168975479483767664084842753623074019542183217985496260666590347925816342392670947839907062923166535037285019751324813803837070894638925470887039085723581006130628646664710006104352115778926613432214655311411882596942926284522109026688414975763341554921135581254616558078273470115814006008345762133130389987843270653719956709570847385786092649188858378739239165554263577301292243641604062551736892335636568854365851646207821875741724364525814143487632761341752707376754922276287782264765154315341585713773522730335403376364204258034257264749686217823666951353410677378421131371131987373222891805275062812277716412494412401207125954319991746574745892582613712825555535080404143944557295994554635608487251339462936358940832098964801619583130429720964794128539388996265368928263807677168759588502216464582430940165009688797366157733560316836710386895228270941509545222744002735499253670214715994056544813842186380128799900820933576320736369405991424263718294000613741900579513096298545330748197802568301089672873802234820488862973130369689882640657904781562389778485365025691064231795736025330908763271784911189748432246868086340383964176127605788646574472284824932687443062551220506955168464669477183681911432873544815836350548146411099960143390595799766290646881295025039150923633011076070632863317393378149693380247580035052789782755750928604039420506342939327064636161031822879248152679306862749237275631852225654266008556849497720285909150930495425967473648331437236349555448901598668408362176913559656039519670425368863482369587129462524759031776813184977588276576740482558136502103649585505703259219957675334264223783723586058509403583977103476670644788640831109650302565215607464019652716999732373465237173456595514559493098166644006211599349133180135150528651842178828026343325934755850761168697709125580056185683710540856081249519403148064618719402577663285267019698387567561524696759028106864896869293315954352097687527137201616160931174250199709289684940034696242325688410665113304377412256176258658941236728171145526423894512631717834790276921171452887352955019336759218908006048633737786728180610254782570436788449503518925787499836694785908612975543084122677060954347612133717433156783790162012337237023338316414706428592185977610158232721997915062871868186750981665537745013020880333904353639770263363809098526494532628146558065546504823486429495390613257400496912888340518222933644476683855037967975809619983575807027759535968788226194659612223044549275600274955168583542582295336042834426318478068825395450746691877897765406038432512843812811316856204608617289408229658626174420766920297427930088129519854678713548623236610413216581279267151545961594352593456757445992307889205519540082316409719591250025455237503106735639748835542480449681383030671851931491335789202123605308199952020584503423499932150962634977812456658304680581824563524814625849331926195406884818446445248429486063016169476663242625231476322371109695369483824482316410396224507675405614287468267835723704895606990652792688455844512046654853378534026646645042339638488257719874953611300494215593735545211926186721478265416885604094928290056616883807637656690510740892510549165222968878676968631652514917701499900066637344546120262780701925698706225540928945194718778004306130021828287425867048748480826948573444778244078734102710824870269523830804910960482013901294024631244800159336670212658317677879752965963472576894326540435889267293950687860830626266263287392087327302547910099932113388977807814336728791448768373686467748528777737403547472871644217767820712964506270880978637928144071192505141148004907055608097229299792441471062852247029870699869227676341773513258602908903875707454368077876422385333700692089616351009233587303986543906071880952557553380364725895007306772122528078179471056481171378557451057691044322925429024149433588396093679321361696954251299731031032804436954501929843820842383121265825740594509426942777307124802176915781835720087170538773256017987133005505911377823841791640280841409623820847637393013930778428554545222367559824666250608754284876104145661362227642405914304455580856318180935230407793891614902116292400515074914068443203230365609954878620999194306564455332547135557365318516011700321550690787716752062881527885897149410320986984083048966524351030502444679931779147659103428949129054120361601695671222140806369405940304552186212879933092856231022418446365289097444640151986623183881962444822590783585914043686193019041458962693878907034982169868696934448086213990534591792826654304798207219634134755646525483143771156678459077797196510772468000293581546267646310224279007313631352522067062951125935874473134186492497282784796644585448962932905262058065248588707020879389134476083344653170939242408249328008915731319541348311820927752486880548733943315867562666122179355051190609992911379445634995627391898459029021713155706096267881673302940198464237390445098028030948975981259252055850973537436556825780313681902007151675693827281818824587541710721180806556448039122504537089422695358382192535075692834095639859265599740391316709290043996275976830375217503360879028295673068862263077729733533853682668734519035709709687322323738300494090123239274318759046526327095178406267264828893646896593219169521106361729757074376148061601331104911692271318609404145014842866423634716982892418180484365230538864559809839273836490685480823014267803143937440431807822678779494006206489151248952516543005634448375046751754207043313372486870633237561645232360481932024377596890914783372179553676992603235715185513391098402739063753280702313301755754269396202629423910945323537910125948964941812563672992967084250667599803456273455598559628512281414582556024841783305645240508450065988755987518601335860624932784487772006842296591945516539562982960591610046578907214842054861830418175604559815168088031783080261445994444677918012432146400983610678683412974872596729258786806223080115822026289014364459002301645823666709265571264559925790622304745235625575111770791512002789380975775468546121017307522799241407026308137792971909461413145802081087738121624539858769697371425881836152605069380926917712087321915005831977113322793572385071940612761291872572099404930250277748156614021327434743881966413330052634229082906400927944924808556131183440161804801357032507836323938921567643159620442612809700944107776130638909071294456394056601559246025454204771186140420155233371270501377121034570009578009389265329385720478576508777149663403003562380595757191609382171312222810465858388943507176431939973012661591423837170284400120399485880996231859472474858776584355077006934099220340378772192728370301380838144394114984971730766162961342059105014814283949700695951676939041557902856356911055547312684571497449635320554677940775184056667637222969090346128706829887104278761090090999160443821794511763620835379716161833124364431267855435550800507986124664397724135502128238026726719914989727248512981287283697489276420792868666970177259794407858155909332508554131299946581118527691652464790819119384233275897699573012098103009171001695718791616942270079528915191912521053891838538959315167400505723817401030621004380243011187977704252328073236575129609372456053680037516596164236147709330391224409752871732067976128120428026739256557305675931512645750047875756531854825821411574030473147492511910835615765732002546109686701890307648531373832912682481741181359032826625082549313211431478953352317043989053928534946642886074268371824902498092479487226633686823799580875637040808655649321905489637785549531167397935270799470452399153297534358690514105864096534514182896474439367182852711843560799285895978176543950113088848419163516673213692860830956744502801800373716458009168082972708715609185038654053436660045504985624687376022557041595800250174095361839287643458003670864954057941720085136357127163768323493134230703821274484501440529541695374381945459456533165140990993722722801019654652726227831512103467686166826131471843610025517863247950150022953695466317739589344131481485834694374523981159954666071205997794363440185078360899108948073419633939259318973940943110042116729120199722626609871927014024105805515315100109804996044147291039451030312664114726736839973315035036742741546992633165270432940675237449075056739508929674779115800864399992564817208847429250821546279856079127768611946086210349405535850134472190244543824521089284409498132717010673966471114931896789977661595488186193176900175027901783824624387873831483279500879026433992577026588005849778984624295660321276945810824348129690840972550671054732471317254997191901039553305847040728081693158626093886019147689944137673621432083607375131574376316754666479186753896571555100850626810005119827486807780592667765654100834778571024250133253391587384761024129794736751001163498977803745930025457609870671092153597115178252014281216647543034075128600240297038428615984289816602143429849088917359682192284469123035904329877231843309914187264674607558318725713138832356015809009594182530207799397648462597901883341793830920965841463574411985878296475850943053008148341821747826603773762252997703468752903517310792083220038080809212164346586817989810504274375385786789186350517717501606531826406928883250135919517178537687865881752366421534010961295763074762648070312757365787762352859057153932484576503944390496668087711899192498933896524852395536795827530614167131757915756386606004839994179548705868209201195154952031294562451315422506574858629161606523796643010172693950282294667489681746821163996794950294284013099235901278250437428192557634533217576162292751110598368271567229778620053722932314082887058749444060116236521627717558503013451471452765841864277071769968435499620257547431811994883385806759692359580622165832464092095350648357935817742903018315351290014321495518177456908388719320697769695657771754499149911431368950836160692539606469893374870942933219185601299108564470256257163505508620689240297589684714283678684735455533583477652536156578189996983068654671736445996343136468195427420490472433064675001442697508322369013083895492637066778406531328664886080129513771720847581157719491012345141774941482773580041432667332379617716965698582785832300505265883502247868050648201444570593197343382923860072601696510903258980909912837652275381493529845099414966933862815568031306981064525192703818515872648691762563239441425216118427769145067718411735714396681005615483952443154944864238384298900399826113322468963346522104692545137969276009719645338955332105584245640187448611050959111766828942711640054010503770420346052521318228045892998637903572350665108782350043349942391285236308896510989246641056331584171142885304143772286629832318970869030400301325951476774237516158840915838059151673504519131178193943428482922272304061422582078027829148070426761629302539228321084917759984200595105312164731818409493139800444072847325902609169730998153853939031280878823902948001579008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;;;; (loop for ii from 1 to 100       for prod = 1 then (* ii pro ...
;;;; (loop for ii from 1 to 100       for prod = 1 then (* ii pro ...
prod:1
prod:2
prod:6
prod:24
prod:120
prod:720
prod:5040
prod:40320
prod:362880
prod:3628800
prod:39916800
prod:479001600
prod:6227020800
prod:87178291200
prod:1307674368000
prod:20922789888000
prod:355687428096000
prod:6402373705728000
prod:121645100408832000
prod:2432902008176640000
prod:51090942171709440000
prod:1124000727777607680000
prod:25852016738884976640000
prod:620448401733239439360000
prod:15511210043330985984000000
prod:403291461126605635584000000
prod:10888869450418352160768000000
prod:304888344611713860501504000000
prod:8841761993739701954543616000000
prod:265252859812191058636308480000000
prod:8222838654177922817725562880000000
prod:263130836933693530167218012160000000
prod:8683317618811886495518194401280000000
prod:295232799039604140847618609643520000000
prod:10333147966386144929666651337523200000000
prod:371993326789901217467999448150835200000000
prod:13763753091226345046315979581580902400000000
prod:523022617466601111760007224100074291200000000
prod:20397882081197443358640281739902897356800000000
prod:815915283247897734345611269596115894272000000000
prod:33452526613163807108170062053440751665152000000000
prod:1405006117752879898543142606244511569936384000000000
prod:60415263063373835637355132068513997507264512000000000
prod:2658271574788448768043625811014615890319638528000000000
prod:119622220865480194561963161495657715064383733760000000000
prod:5502622159812088949850305428800254892961651752960000000000
prod:258623241511168180642964355153611979969197632389120000000000
prod:12413915592536072670862289047373375038521486354677760000000000
prod:608281864034267560872252163321295376887552831379210240000000000
prod:30414093201713378043612608166064768844377641568960512000000000000
prod:1551118753287382280224243016469303211063259720016986112000000000000
prod:80658175170943878571660636856403766975289505440883277824000000000000
prod:4274883284060025564298013753389399649690343788366813724672000000000000
prod:230843697339241380472092742683027581083278564571807941132288000000000000
prod:12696403353658275925965100847566516959580321051449436762275840000000000000
prod:710998587804863451854045647463724949736497978881168458687447040000000000000
prod:40526919504877216755680601905432322134980384796226602145184481280000000000000
prod:2350561331282878571829474910515074683828862318181142924420699914240000000000000
prod:138683118545689835737939019720389406345902876772687432540821294940160000000000000
prod:8320987112741390144276341183223364380754172606361245952449277696409600000000000000
prod:507580213877224798800856812176625227226004528988036003099405939480985600000000000000
prod:31469973260387937525653122354950764088012280797258232192163168247821107200000000000000
prod:1982608315404440064116146708361898137544773690227268628106279599612729753600000000000000
prod:126886932185884164103433389335161480802865516174545192198801894375214704230400000000000000
prod:8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
prod:544344939077443064003729240247842752644293064388798874532860126869671081148416000000000000000
prod:36471110918188685288249859096605464427167635314049524593701628500267962436943872000000000000000
prod:2480035542436830599600990418569171581047399201355367672371710738018221445712183296000000000000000
prod:171122452428141311372468338881272839092270544893520369393648040923257279754140647424000000000000000
prod:11978571669969891796072783721689098736458938142546425857555362864628009582789845319680000000000000000
prod:850478588567862317521167644239926010288584608120796235886430763388588680378079017697280000000000000000
prod:61234458376886086861524070385274672740778091784697328983823014963978384987221689274204160000000000000000
prod:4470115461512684340891257138125051110076800700282905015819080092370422104067183317016903680000000000000000
prod:330788544151938641225953028221253782145683251820934971170611926835411235700971565459250872320000000000000000
prod:24809140811395398091946477116594033660926243886570122837795894512655842677572867409443815424000000000000000000
prod:1885494701666050254987932260861146558230394535379329335672487982961844043495537923117729972224000000000000000000
prod:145183092028285869634070784086308284983740379224208358846781574688061991349156420080065207861248000000000000000000
prod:11324281178206297831457521158732046228731749579488251990048962825668835325234200766245086213177344000000000000000000
prod:894618213078297528685144171539831652069808216779571907213868063227837990693501860533361810841010176000000000000000000
prod:71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000
prod:5797126020747367985879734231578109105412357244731625958745865049716390179693892056256184534249745940480000000000000000000
prod:475364333701284174842138206989404946643813294067993328617160934076743994734899148613007131808479167119360000000000000000000
prod:39455239697206586511897471180120610571436503407643446275224357528369751562996629334879591940103770870906880000000000000000000
prod:3314240134565353266999387579130131288000666286242049487118846032383059131291716864129885722968716753156177920000000000000000000
prod:281710411438055027694947944226061159480056634330574206405101912752560026159795933451040286452340924018275123200000000000000000000
prod:24227095383672732381765523203441259715284870552429381750838764496720162249742450276789464634901319465571660595200000000000000000000
prod:2107757298379527717213600518699389595229783738061356212322972511214654115727593174080683423236414793504734471782400000000000000000000
prod:185482642257398439114796845645546284380220968949399346684421580986889562184028199319100141244804501828416633516851200000000000000000000
prod:16507955160908461081216919262453619309839666236496541854913520707833171034378509739399912570787600662729080382999756800000000000000000000
prod:1485715964481761497309522733620825737885569961284688766942216863704985393094065876545992131370884059645617234469978112000000000000000000000
prod:135200152767840296255166568759495142147586866476906677791741734597153670771559994765685283954750449427751168336768008192000000000000000000000
prod:12438414054641307255475324325873553077577991715875414356840239582938137710983519518443046123837041347353107486982656753664000000000000000000000
prod:1156772507081641574759205162306240436214753229576413535186142281213246807121467315215203289516844845303838996289387078090752000000000000000000000
prod:108736615665674308027365285256786601004186803580182872307497374434045199869417927630229109214583415458560865651202385340530688000000000000000000000
prod:10329978488239059262599702099394727095397746340117372869212250571234293987594703124871765375385424468563282236864226607350415360000000000000000000000
prod:991677934870949689209571401541893801158183648651267795444376054838492222809091499987689476037000748982075094738965754305639874560000000000000000000000
prod:96192759682482119853328425949563698712343813919172976158104477319333745612481875498805879175589072651261284189679678167647067832320000000000000000000000
prod:9426890448883247745626185743057242473809693764078951663494238777294707070023223798882976159207729119823605850588608460429412647567360000000000000000000000
prod:933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000
prod:93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
;;;; (loop for ii from 1 to 100       for prod = 1 then (* ii pro ...
ii:1 prod:1
ii:2 prod:2
ii:3 prod:6
ii:4 prod:24
ii:5 prod:120
ii:6 prod:720
ii:7 prod:5040
ii:8 prod:40320
ii:9 prod:362880
ii:10 prod:3628800
ii:11 prod:39916800
ii:12 prod:479001600
ii:13 prod:6227020800
ii:14 prod:87178291200
ii:15 prod:1307674368000
ii:16 prod:20922789888000
ii:17 prod:355687428096000
ii:18 prod:6402373705728000
ii:19 prod:121645100408832000
ii:20 prod:2432902008176640000
ii:21 prod:51090942171709440000
ii:22 prod:1124000727777607680000
ii:23 prod:25852016738884976640000
ii:24 prod:620448401733239439360000
ii:25 prod:15511210043330985984000000
ii:26 prod:403291461126605635584000000
ii:27 prod:10888869450418352160768000000
ii:28 prod:304888344611713860501504000000
ii:29 prod:8841761993739701954543616000000
ii:30 prod:265252859812191058636308480000000
ii:31 prod:8222838654177922817725562880000000
ii:32 prod:263130836933693530167218012160000000
ii:33 prod:8683317618811886495518194401280000000
ii:34 prod:295232799039604140847618609643520000000
ii:35 prod:10333147966386144929666651337523200000000
ii:36 prod:371993326789901217467999448150835200000000
ii:37 prod:13763753091226345046315979581580902400000000
ii:38 prod:523022617466601111760007224100074291200000000
ii:39 prod:20397882081197443358640281739902897356800000000
ii:40 prod:815915283247897734345611269596115894272000000000
ii:41 prod:33452526613163807108170062053440751665152000000000
ii:42 prod:1405006117752879898543142606244511569936384000000000
ii:43 prod:60415263063373835637355132068513997507264512000000000
ii:44 prod:2658271574788448768043625811014615890319638528000000000
ii:45 prod:119622220865480194561963161495657715064383733760000000000
ii:46 prod:5502622159812088949850305428800254892961651752960000000000
ii:47 prod:258623241511168180642964355153611979969197632389120000000000
ii:48 prod:12413915592536072670862289047373375038521486354677760000000000
ii:49 prod:608281864034267560872252163321295376887552831379210240000000000
ii:50 prod:30414093201713378043612608166064768844377641568960512000000000000
ii:51 prod:1551118753287382280224243016469303211063259720016986112000000000000
ii:52 prod:80658175170943878571660636856403766975289505440883277824000000000000
ii:53 prod:4274883284060025564298013753389399649690343788366813724672000000000000
ii:54 prod:230843697339241380472092742683027581083278564571807941132288000000000000
ii:55 prod:12696403353658275925965100847566516959580321051449436762275840000000000000
ii:56 prod:710998587804863451854045647463724949736497978881168458687447040000000000000
ii:57 prod:40526919504877216755680601905432322134980384796226602145184481280000000000000
ii:58 prod:2350561331282878571829474910515074683828862318181142924420699914240000000000000
ii:59 prod:138683118545689835737939019720389406345902876772687432540821294940160000000000000
ii:60 prod:8320987112741390144276341183223364380754172606361245952449277696409600000000000000
ii:61 prod:507580213877224798800856812176625227226004528988036003099405939480985600000000000000
ii:62 prod:31469973260387937525653122354950764088012280797258232192163168247821107200000000000000
ii:63 prod:1982608315404440064116146708361898137544773690227268628106279599612729753600000000000000
ii:64 prod:126886932185884164103433389335161480802865516174545192198801894375214704230400000000000000
ii:65 prod:8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
ii:66 prod:544344939077443064003729240247842752644293064388798874532860126869671081148416000000000000000
ii:67 prod:36471110918188685288249859096605464427167635314049524593701628500267962436943872000000000000000
ii:68 prod:2480035542436830599600990418569171581047399201355367672371710738018221445712183296000000000000000
ii:69 prod:171122452428141311372468338881272839092270544893520369393648040923257279754140647424000000000000000
ii:70 prod:11978571669969891796072783721689098736458938142546425857555362864628009582789845319680000000000000000
ii:71 prod:850478588567862317521167644239926010288584608120796235886430763388588680378079017697280000000000000000
ii:72 prod:61234458376886086861524070385274672740778091784697328983823014963978384987221689274204160000000000000000
ii:73 prod:4470115461512684340891257138125051110076800700282905015819080092370422104067183317016903680000000000000000
ii:74 prod:330788544151938641225953028221253782145683251820934971170611926835411235700971565459250872320000000000000000
ii:75 prod:24809140811395398091946477116594033660926243886570122837795894512655842677572867409443815424000000000000000000
ii:76 prod:1885494701666050254987932260861146558230394535379329335672487982961844043495537923117729972224000000000000000000
ii:77 prod:145183092028285869634070784086308284983740379224208358846781574688061991349156420080065207861248000000000000000000
ii:78 prod:11324281178206297831457521158732046228731749579488251990048962825668835325234200766245086213177344000000000000000000
ii:79 prod:894618213078297528685144171539831652069808216779571907213868063227837990693501860533361810841010176000000000000000000
ii:80 prod:71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000
ii:81 prod:5797126020747367985879734231578109105412357244731625958745865049716390179693892056256184534249745940480000000000000000000
ii:82 prod:475364333701284174842138206989404946643813294067993328617160934076743994734899148613007131808479167119360000000000000000000
ii:83 prod:39455239697206586511897471180120610571436503407643446275224357528369751562996629334879591940103770870906880000000000000000000
ii:84 prod:3314240134565353266999387579130131288000666286242049487118846032383059131291716864129885722968716753156177920000000000000000000
ii:85 prod:281710411438055027694947944226061159480056634330574206405101912752560026159795933451040286452340924018275123200000000000000000000
ii:86 prod:24227095383672732381765523203441259715284870552429381750838764496720162249742450276789464634901319465571660595200000000000000000000
ii:87 prod:2107757298379527717213600518699389595229783738061356212322972511214654115727593174080683423236414793504734471782400000000000000000000
ii:88 prod:185482642257398439114796845645546284380220968949399346684421580986889562184028199319100141244804501828416633516851200000000000000000000
ii:89 prod:16507955160908461081216919262453619309839666236496541854913520707833171034378509739399912570787600662729080382999756800000000000000000000
ii:90 prod:1485715964481761497309522733620825737885569961284688766942216863704985393094065876545992131370884059645617234469978112000000000000000000000
ii:91 prod:135200152767840296255166568759495142147586866476906677791741734597153670771559994765685283954750449427751168336768008192000000000000000000000
ii:92 prod:12438414054641307255475324325873553077577991715875414356840239582938137710983519518443046123837041347353107486982656753664000000000000000000000
ii:93 prod:1156772507081641574759205162306240436214753229576413535186142281213246807121467315215203289516844845303838996289387078090752000000000000000000000
ii:94 prod:108736615665674308027365285256786601004186803580182872307497374434045199869417927630229109214583415458560865651202385340530688000000000000000000000
ii:95 prod:10329978488239059262599702099394727095397746340117372869212250571234293987594703124871765375385424468563282236864226607350415360000000000000000000000
ii:96 prod:991677934870949689209571401541893801158183648651267795444376054838492222809091499987689476037000748982075094738965754305639874560000000000000000000000
ii:97 prod:96192759682482119853328425949563698712343813919172976158104477319333745612481875498805879175589072651261284189679678167647067832320000000000000000000000
ii:98 prod:9426890448883247745626185743057242473809693764078951663494238777294707070023223798882976159207729119823605850588608460429412647567360000000000000000000000
ii:99 prod:933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000
ii:100 prod:93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
;;;; (loop for ii from 1 to 100       for prod = 1 then (* ii pro ...
ii:1 prod:1
ii:2 prod:2
ii:3 prod:6
ii:4 prod:24
ii:5 prod:12
ii:6 prod:72
ii:7 prod:504
ii:8 prod:4032
ii:9 prod:36288
ii:10 prod:36288
ii:11 prod:399168
ii:12 prod:4790016
ii:13 prod:62270208
ii:14 prod:871782912
ii:15 prod:1307674368
ii:16 prod:20922789888
ii:17 prod:355687428096
ii:18 prod:6402373705728
ii:19 prod:121645100408832
ii:20 prod:243290200817664
ii:21 prod:5109094217170944
ii:22 prod:112400072777760768
ii:23 prod:2585201673888497664
ii:24 prod:62044840173323943936
ii:25 prod:15511210043330985984
ii:26 prod:403291461126605635584
ii:27 prod:10888869450418352160768
ii:28 prod:304888344611713860501504
ii:29 prod:8841761993739701954543616
ii:30 prod:26525285981219105863630848
ii:31 prod:822283865417792281772556288
ii:32 prod:26313083693369353016721801216
ii:33 prod:868331761881188649551819440128
ii:34 prod:29523279903960414084761860964352
ii:35 prod:103331479663861449296666513375232
ii:36 prod:3719933267899012174679994481508352
ii:37 prod:137637530912263450463159795815809024
ii:38 prod:5230226174666011117600072241000742912
ii:39 prod:203978820811974433586402817399028973568
ii:40 prod:815915283247897734345611269596115894272
ii:41 prod:33452526613163807108170062053440751665152
ii:42 prod:1405006117752879898543142606244511569936384
ii:43 prod:60415263063373835637355132068513997507264512
ii:44 prod:2658271574788448768043625811014615890319638528
ii:45 prod:11962222086548019456196316149565771506438373376
ii:46 prod:550262215981208894985030542880025489296165175296
ii:47 prod:25862324151116818064296435515361197996919763238912
ii:48 prod:1241391559253607267086228904737337503852148635467776
ii:49 prod:60828186403426756087225216332129537688755283137921024
ii:50 prod:30414093201713378043612608166064768844377641568960512
ii:51 prod:1551118753287382280224243016469303211063259720016986112
ii:52 prod:80658175170943878571660636856403766975289505440883277824
ii:53 prod:4274883284060025564298013753389399649690343788366813724672
ii:54 prod:230843697339241380472092742683027581083278564571807941132288
ii:55 prod:1269640335365827592596510084756651695958032105144943676227584
ii:56 prod:71099858780486345185404564746372494973649797888116845868744704
ii:57 prod:4052691950487721675568060190543232213498038479622660214518448128
ii:58 prod:235056133128287857182947491051507468382886231818114292442069991424
ii:59 prod:13868311854568983573793901972038940634590287677268743254082129494016
ii:60 prod:83209871127413901442763411832233643807541726063612459524492776964096
ii:61 prod:5075802138772247988008568121766252272260045289880360030994059394809856
ii:62 prod:314699732603879375256531223549507640880122807972582321921631682478211072
ii:63 prod:19826083154044400641161467083618981375447736902272686281062795996127297536
ii:64 prod:1268869321858841641034333893351614808028655161745451921988018943752147042304
ii:65 prod:8247650592082470666723170306785496252186258551345437492922123134388955774976
ii:66 prod:544344939077443064003729240247842752644293064388798874532860126869671081148416
ii:67 prod:36471110918188685288249859096605464427167635314049524593701628500267962436943872
ii:68 prod:2480035542436830599600990418569171581047399201355367672371710738018221445712183296
ii:69 prod:171122452428141311372468338881272839092270544893520369393648040923257279754140647424
ii:70 prod:1197857166996989179607278372168909873645893814254642585755536286462800958278984531968
ii:71 prod:85047858856786231752116764423992601028858460812079623588643076338858868037807901769728
ii:72 prod:6123445837688608686152407038527467274077809178469732898382301496397838498722168927420416
ii:73 prod:447011546151268434089125713812505111007680070028290501581908009237042210406718331701690368
ii:74 prod:33078854415193864122595302822125378214568325182093497117061192683541123570097156545925087232
ii:75 prod:24809140811395398091946477116594033660926243886570122837795894512655842677572867409443815424
ii:76 prod:1885494701666050254987932260861146558230394535379329335672487982961844043495537923117729972224
ii:77 prod:145183092028285869634070784086308284983740379224208358846781574688061991349156420080065207861248
ii:78 prod:11324281178206297831457521158732046228731749579488251990048962825668835325234200766245086213177344
ii:79 prod:894618213078297528685144171539831652069808216779571907213868063227837990693501860533361810841010176
ii:80 prod:7156945704626380229481153372318653216558465734236575257710944505822703925548014884266894486728081408
ii:81 prod:579712602074736798587973423157810910541235724473162595874586504971639017969389205625618453424974594048
ii:82 prod:47536433370128417484213820698940494664381329406799332861716093407674399473489914861300713180847916711936
ii:83 prod:3945523969720658651189747118012061057143650340764344627522435752836975156299662933487959194010377087090688
ii:84 prod:331424013456535326699938757913013128800066628624204948711884603238305913129171686412988572296871675315617792
ii:85 prod:2817104114380550276949479442260611594800566343305742064051019127525600261597959334510402864523409240182751232
ii:86 prod:242270953836727323817655232034412597152848705524293817508387644967201622497424502767894646349013194655716605952
ii:87 prod:21077572983795277172136005186993895952297837380613562123229725112146541157275931740806834232364147935047344717824
ii:88 prod:1854826422573984391147968456455462843802209689493993466844215809868895621840281993191001412448045018284166335168512
ii:89 prod:165079551609084610812169192624536193098396662364965418549135207078331710343785097393999125707876006627290803829997568
ii:90 prod:1485715964481761497309522733620825737885569961284688766942216863704985393094065876545992131370884059645617234469978112
ii:91 prod:135200152767840296255166568759495142147586866476906677791741734597153670771559994765685283954750449427751168336768008192
ii:92 prod:12438414054641307255475324325873553077577991715875414356840239582938137710983519518443046123837041347353107486982656753664
ii:93 prod:1156772507081641574759205162306240436214753229576413535186142281213246807121467315215203289516844845303838996289387078090752
ii:94 prod:108736615665674308027365285256786601004186803580182872307497374434045199869417927630229109214583415458560865651202385340530688
ii:95 prod:1032997848823905926259970209939472709539774634011737286921225057123429398759470312487176537538542446856328223686422660735041536
ii:96 prod:99167793487094968920957140154189380115818364865126779544437605483849222280909149998768947603700074898207509473896575430563987456
ii:97 prod:9619275968248211985332842594956369871234381391917297615810447731933374561248187549880587917558907265126128418967967816764706783232
ii:98 prod:942689044888324774562618574305724247380969376407895166349423877729470707002322379888297615920772911982360585058860846042941264756736
ii:99 prod:93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864
ii:100 prod:93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864
;;;; (loop for ii from 1 to 100       for prod = 1 then (* ii pro ...
ii:1 prod:1
ii:2 prod:2
ii:3 prod:6
ii:4 prod:24
ii:5 prod:12
ii:6 prod:72
ii:7 prod:504
ii:8 prod:4032
ii:9 prod:36288
ii:10 prod:36288
ii:11 prod:399168
ii:12 prod:790016
ii:13 prod:270208
ii:14 prod:782912
ii:15 prod:174368
ii:16 prod:789888
ii:17 prod:428096
ii:18 prod:705728
ii:19 prod:408832
ii:20 prod:817664
ii:21 prod:170944
ii:22 prod:760768
ii:23 prod:497664
ii:24 prod:943936
ii:25 prod:235984
ii:26 prod:135584
ii:27 prod:660768
ii:28 prod:501504
ii:29 prod:543616
ii:30 prod:630848
ii:31 prod:556288
ii:32 prod:801216
ii:33 prod:440128
ii:34 prod:964352
ii:35 prod:375232
ii:36 prod:508352
ii:37 prod:809024
ii:38 prod:742912
ii:39 prod:973568
ii:40 prod:894272
ii:41 prod:665152
ii:42 prod:936384
ii:43 prod:264512
ii:44 prod:638528
ii:45 prod:873376
ii:46 prod:175296
ii:47 prod:238912
ii:48 prod:467776
ii:49 prod:921024
ii:50 prod:460512
ii:51 prod:486112
ii:52 prod:277824
ii:53 prod:724672
ii:54 prod:132288
ii:55 prod:727584
ii:56 prod:744704
ii:57 prod:448128
ii:58 prod:991424
ii:59 prod:494016
ii:60 prod:964096
ii:61 prod:809856
ii:62 prod:211072
ii:63 prod:297536
ii:64 prod:42304
ii:65 prod:274976
ii:66 prod:148416
ii:67 prod:943872
ii:68 prod:183296
ii:69 prod:647424
ii:70 prod:531968
ii:71 prod:769728
ii:72 prod:420416
ii:73 prod:690368
ii:74 prod:87232
ii:75 prod:65424
ii:76 prod:972224
ii:77 prod:861248
ii:78 prod:177344
ii:79 prod:10176
ii:80 prod:81408
ii:81 prod:594048
ii:82 prod:711936
ii:83 prod:90688
ii:84 prod:617792
ii:85 prod:251232
ii:86 prod:605952
ii:87 prod:717824
ii:88 prod:168512
ii:89 prod:997568
ii:90 prod:978112
ii:91 prod:8192
ii:92 prod:753664
ii:93 prod:90752
ii:94 prod:530688
ii:95 prod:41536
ii:96 prod:987456
ii:97 prod:783232
ii:98 prod:756736
ii:99 prod:916864
ii:100 prod:916864
;;;; (defun find-prod (max-iters)   (loop for ii from 1 to 100000 ...
; in: LAMBDA NIL
;     (SB-INT:NAMED-LAMBDA FIND-PROD (MAX-ITERS)
;                        (BLOCK FIND-PROD
;                          (LOOP FOR II FROM 1 TO 1000000000000 FOR PROD = 1 THEN
;                                ...)))
; ==>
;   #'(SB-INT:NAMED-LAMBDA FIND-PROD (MAX-ITERS)
;                          (BLOCK FIND-PROD
;                            (LOOP FOR II FROM 1 TO 1000000000000 FOR PROD = 1
;                                  THEN ...)))
; 
; caught STYLE-WARNING:
;   The variable MAX-ITERS is defined but never used.
; 
; compilation unit finished
;   caught 1 STYLE-WARNING condition
;;;; (find-prod 100000) ...
;;;; (defun find-prod (max-iters)   (declare (optimize speed))    ...
; in: LAMBDA NIL
;     (= 0 (MOD PROD 10))
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (20))
;                               (DOUBLE-FLOAT (-10.0d0) (20.0d0))
;                               (SINGLE-FLOAT (-10.0) (20.0))), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

;     (MOD PROD 1000000)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-1000000) (1000000))
;                               (DOUBLE-FLOAT (-1000000.0d0) (1000000.0d0))
;                               (SINGLE-FLOAT (-1000000.0)
;                                (1000000.0))), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-1000000) (1000000))
;                               (DOUBLE-FLOAT (-1000000.0d0) (1000000.0d0))
;                               (SINGLE-FLOAT (-1000000.0)
;                                (1000000.0))), not a FLOAT.

;     (* II PROD)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The second argument is a (OR (SINGLE-FLOAT (-1000000.0) (2000000.0))
;                                (DOUBLE-FLOAT (-1000000.0d0) (2000000.0d0))
;                                (RATIONAL (-1000000) (2000000))), not a FLOAT.
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The second argument is a (OR (SINGLE-FLOAT (-1000000.0) (2000000.0))
;                                (DOUBLE-FLOAT (-1000000.0d0) (2000000.0d0))
;                                (RATIONAL (-1000000) (2000000))), not a INTEGER.

;     (/ PROD 10)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to
;   convert x/2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.

;     (MOD PROD 10)
; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (10))
;                               (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                               (SINGLE-FLOAT (-10.0) (10.0))), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (10))
;                               (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                               (SINGLE-FLOAT (-10.0) (10.0))), not a FLOAT.

; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.

;     (LOOP FOR II FROM 1 TO MAX-ITERS FOR PROD = 1 THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

;     (MOD PROD 10)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (OR (RATIONAL (-10) (10))
;                                   (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                                   (SINGLE-FLOAT (-10.0) (10.0))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (SINGLE-FLOAT (0.0) (20.0))
;                            (DOUBLE-FLOAT (0.0d0) (20.0d0)) (RATIONAL (0) (20)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (OR (RATIONAL (-10) (10))
;                                   (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                                   (SINGLE-FLOAT (-10.0) (10.0))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (SINGLE-FLOAT (0.0) (20.0))
;                            (DOUBLE-FLOAT (0.0d0) (20.0d0)) (RATIONAL (0) (20)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       etc.

;     (MOD PROD 1000000)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (OR (RATIONAL (-1000000) (1000000))
;                                   (DOUBLE-FLOAT (-1000000.0d0) (1000000.0d0))
;                                   (SINGLE-FLOAT (-1000000.0)
;                                    (1000000.0))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (SINGLE-FLOAT (0.0) (2000000.0))
;                            (DOUBLE-FLOAT (0.0d0) (2000000.0d0))
;                            (RATIONAL (0) (2000000)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (OR (RATIONAL (-1000000) (1000000))
;                                   (DOUBLE-FLOAT (-1000000.0d0) (1000000.0d0))
;                                   (SINGLE-FLOAT (-1000000.0)
;                                    (1000000.0))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (SINGLE-FLOAT (0.0) (2000000.0))
;                            (DOUBLE-FLOAT (0.0d0) (2000000.0d0))
;                            (RATIONAL (0) (2000000)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       etc.

;     (LOOP FOR II FROM 1 TO MAX-ITERS FOR PROD = 1 THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (* II PROD)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a (OR (SINGLE-FLOAT (-1000000.0) (2000000.0))
;                                    (DOUBLE-FLOAT (-1000000.0d0) (2000000.0d0))
;                                    (RATIONAL (-1000000)
;                                              (2000000))), not a FIXNUM.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The second argument is a (OR (SINGLE-FLOAT (-1000000.0) (2000000.0))
;                                    (DOUBLE-FLOAT (-1000000.0d0) (2000000.0d0))
;                                    (RATIONAL (-1000000)
;                                              (2000000))), not a (SIGNED-BYTE
;                                                                  32).
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                              &REST T).
;       etc.
; 
; compilation unit finished
;   printed 26 notes
STYLE-WARNING: redefining FIND-PROD in DEFUN
;;;; (defun find-prod (max-iters &optional (ndigits 100000) (peri ...
; in: LAMBDA NIL
;     (MOD PROD 10)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (10))
;                               (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                               (SINGLE-FLOAT (-10.0) (10.0))), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (10))
;                               (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                               (SINGLE-FLOAT (-10.0) (10.0))), not a FLOAT.

;     (= 0 (MOD PROD 10))
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (20))
;                               (DOUBLE-FLOAT (-10.0d0) (20.0d0))
;                               (SINGLE-FLOAT (-10.0) (20.0))), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

;     (MOD PROD NDIGITS)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a (OR SINGLE-FLOAT DOUBLE-FLOAT INTEGER).
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.
;   The second argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF AND IF AND IF PLUSP 
; ==>
;   (> NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

;     (MOD II PERIOD)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The second argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

;     (= 0 (MOD II PERIOD))
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

;     (* II PROD)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The second argument is a REAL, not a INTEGER.

;     (/ PROD 10)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to
;   convert x/2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.

;     (LOOP FOR II FROM 1 TO MAX-ITERS FOR PROD = 1 THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

;     (MOD PROD 10)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (OR (RATIONAL (-10) (10))
;                                   (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                                   (SINGLE-FLOAT (-10.0) (10.0))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (SINGLE-FLOAT (0.0) (20.0))
;                            (DOUBLE-FLOAT (0.0d0) (20.0d0)) (RATIONAL (0) (20)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (OR (RATIONAL (-10) (10))
;                                   (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                                   (SINGLE-FLOAT (-10.0) (10.0))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (SINGLE-FLOAT (0.0) (20.0))
;                            (DOUBLE-FLOAT (0.0d0) (20.0d0)) (RATIONAL (0) (20)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       etc.

;     (MOD PROD NDIGITS)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; ==>
;   (< NUMBER 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF AND IF AND IF PLUSP 
; ==>
;   (> NUMBER 0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a REAL, not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a REAL, not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (MOD II PERIOD)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (LOOP FOR II FROM 1 TO MAX-ITERS FOR PROD = 1 THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (* II PROD)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 32) arithmetic (cost 5) because:
;       The first argument is a (INTEGER 2), not a (SIGNED-BYTE 32).
;       The second argument is a REAL, not a (SIGNED-BYTE 32).
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES (SIGNED-BYTE 32)
;                                                              &REST T).
;       etc.
; 
; compilation unit finished
;   printed 45 notes
STYLE-WARNING: redefining FIND-PROD in DEFUN
;;;; (find-prod 1000 100000 100) ...
ii:100 prod:16864
ii:200 prod:37472
ii:300 prod:70496
ii:400 prod:91008
ii:500 prod:12864
ii:600 prod:78496
ii:700 prod:64384
ii:800 prod:50496
ii:900 prod:62432
ii:1000 prod:53472
;;;; (find-prod 10000 100000 1000) ...
ii:1000 prod:53472
ii:2000 prod:39008
ii:3000 prod:42496
ii:4000 prod:2496
ii:5000 prod:33472
ii:6000 prod:87296
ii:7000 prod:52064
ii:8000 prod:32544
ii:9000 prod:3296
ii:10000 prod:79008
;;;; (time (find-prod 10000 100000 1000)) ...
ii:1000 prod:53472
ii:2000 prod:39008
ii:3000 prod:42496
ii:4000 prod:2496
ii:5000 prod:33472
ii:6000 prod:87296
ii:7000 prod:52064
ii:8000 prod:32544
ii:9000 prod:3296
ii:10000 prod:79008
Evaluation took:
  0.006 seconds of real time
  0.004 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  118,568 bytes consed.
;;;; (time (find-prod 100000 100000 10000)) ...
ii:10000 prod:79008
ii:20000 prod:62496
ii:30000 prod:27296
ii:40000 prod:12544
ii:50000 prod:29008
ii:60000 prod:20096
ii:70000 prod:23264
ii:80000 prod:14688
ii:90000 prod:55776
ii:100000 prod:2496
Evaluation took:
  0.078 seconds of real time
  0.080005 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  6,282,176 bytes consed.
;;;; (time (find-prod 1000000 100000 100000)) ...
ii:100000 prod:2496
ii:200000 prod:12544
ii:300000 prod:20096
ii:400000 prod:94688
ii:500000 prod:12496
ii:600000 prod:60736
ii:700000 prod:10112
ii:800000 prod:6176
ii:900000 prod:92736
ii:1000000 prod:4544
Evaluation took:
  1.15 seconds of real time
  1.080067 seconds of user run time
  0.012001 seconds of system run time
  [Run times include 0.104 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  93,765,912 bytes consed.
;;;; (time (find-prod 10000000 100000 1000000)) ...
ii:1000000 prod:4544
ii:2000000 prod:90688
ii:3000000 prod:58336
ii:4000000 prod:83776
ii:5000000 prod:27344
ii:6000000 prod:76576
ii:7000000 prod:50656
ii:8000000 prod:18144
ii:9000000 prod:92096
ii:10000000 prod:51552
Evaluation took:
  21.928 seconds of real time
  19.99725 seconds of user run time
  0.088006 seconds of system run time
  [Run times include 1.828 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  1,907,634,920 bytes consed.
;;;; (* 12345 12345) ...
;;;; (mod (* 12345 12345) 100000) ...
;;;; (mod (* 112345 12345) 100000) ...
;;;; (mod (* 12345 12345) 100000) ...
;;;; (mod (* 12345 12345) 100000) ...
;;;; (mod (* 912345 12345) 100000) ...
;;;; (time (find-prod 10000000 100000 1000000)) ...
ii:1000000 prod:4544
ii:2000000 prod:90688
ii:3000000 prod:58336
ii:4000000 prod:83776
ii:5000000 prod:27344
ii:6000000 prod:76576
ii:7000000 prod:50656
ii:8000000 prod:18144
ii:9000000 prod:92096
ii:10000000 prod:51552
Evaluation took:
  23.397 seconds of real time
  21.053316 seconds of user run time
  0.076005 seconds of system run time
  [Run times include 1.936 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  1,979,385,688 bytes consed.
;;;; (defun find-prod (max-iters &optional (ndigits 100000) (peri ...
; in: LAMBDA NIL
;     (MOD PROD 10)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (10))
;                               (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                               (SINGLE-FLOAT (-10.0) (10.0))), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (10))
;                               (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                               (SINGLE-FLOAT (-10.0) (10.0))), not a FLOAT.

;     (= 0 (MOD PROD 10))
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (20))
;                               (DOUBLE-FLOAT (-10.0d0) (20.0d0))
;                               (SINGLE-FLOAT (-10.0) (20.0))), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

;     (MOD PROD NDIGITS)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a (OR SINGLE-FLOAT DOUBLE-FLOAT INTEGER).
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.
;   The second argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF AND IF AND IF PLUSP 
; ==>
;   (> NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

;     (MOD II PERIOD)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The second argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

;     (= 0 (MOD II PERIOD))
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

;     (MOD II NDIGITS)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The second argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

;     (= 0 NN)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

;     (*
;    (LET ((NN (MOD II NDIGITS)))
;      (IF (= 0 NN) 1 NN))
;    PROD)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.
;   The second argument is a REAL, not a INTEGER.

;     (/ PROD 10)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to
;   convert x/2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.

;     (LOOP FOR II FROM 1 TO MAX-ITERS FOR PROD = 1 THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

;     (MOD PROD 10)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (OR (RATIONAL (-10) (10))
;                                   (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                                   (SINGLE-FLOAT (-10.0) (10.0))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (SINGLE-FLOAT (0.0) (20.0))
;                            (DOUBLE-FLOAT (0.0d0) (20.0d0)) (RATIONAL (0) (20)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (OR (RATIONAL (-10) (10))
;                                   (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                                   (SINGLE-FLOAT (-10.0) (10.0))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (SINGLE-FLOAT (0.0) (20.0))
;                            (DOUBLE-FLOAT (0.0d0) (20.0d0)) (RATIONAL (0) (20)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       etc.

;     (MOD PROD NDIGITS)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; ==>
;   (< NUMBER 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF AND IF AND IF PLUSP 
; ==>
;   (> NUMBER 0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a REAL, not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a REAL, not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (MOD II PERIOD)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (LOOP FOR II FROM 1 TO MAX-ITERS FOR PROD = 1 THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (MOD II NDIGITS)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (*
;    (LET ((NN (MOD II NDIGITS)))
;      (IF (= 0 NN) 1 NN))
;    PROD)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline float arithmetic (cost 3) because:
;       The first argument is a REAL, not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 3) because:
;       The first argument is a REAL, not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       etc.
; 
; compilation unit finished
;   printed 60 notes
STYLE-WARNING: redefining FIND-PROD in DEFUN
;;;; (defun find-prod (max-iters &optional (ndigits 100000) (peri ...
STYLE-WARNING: redefining FIND-PROD in DEFUN
;;;; (time (find-prod 10000000 100000 1000000)) ...
ii:1000000 prod:88576
ii:2000000 prod:7776
ii:3000000 prod:66976
ii:4000000 prod:6176
ii:5000000 prod:45376
ii:6000000 prod:24576
ii:7000000 prod:63776
ii:8000000 prod:2976
ii:9000000 prod:42176
ii:10000000 prod:61376
Evaluation took:
  16.938 seconds of real time
  15.336958 seconds of user run time
  0.048003 seconds of system run time
  [Run times include 1.132 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  1,263,568,296 bytes consed.
;;;; (defun find-prod (max-iters &optional (ndigits 100000) (peri ...
; in: LAMBDA NIL
;     (MOD PROD 10)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (10))
;                               (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                               (SINGLE-FLOAT (-10.0) (10.0))), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (10))
;                               (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                               (SINGLE-FLOAT (-10.0) (10.0))), not a FLOAT.

;     (= 0 (MOD PROD 10))
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (20))
;                               (DOUBLE-FLOAT (-10.0d0) (20.0d0))
;                               (SINGLE-FLOAT (-10.0) (20.0))), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

;     (MOD PROD NDIGITS)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a (OR SINGLE-FLOAT DOUBLE-FLOAT INTEGER).
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.
;   The second argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF AND IF AND IF PLUSP 
; ==>
;   (> NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

;     (MOD II PERIOD)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The second argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

;     (= 0 (MOD II PERIOD))
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

;     (MOD II NDIGITS)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The second argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

;     (= 0 NN)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

;     (*
;    (LET ((NN (MOD II NDIGITS)))
;      (IF (= 0 NN) 1 NN))
;    PROD)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.
;   The second argument is a REAL, not a INTEGER.

;     (/ PROD 10)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to
;   convert x/2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.

;     (LOOP FOR II FROM 1 TO MAX-ITERS FOR PROD = 1 THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

;     (MOD PROD 10)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (OR (RATIONAL (-10) (10))
;                                   (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                                   (SINGLE-FLOAT (-10.0) (10.0))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (SINGLE-FLOAT (0.0) (20.0))
;                            (DOUBLE-FLOAT (0.0d0) (20.0d0)) (RATIONAL (0) (20)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (OR (RATIONAL (-10) (10))
;                                   (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                                   (SINGLE-FLOAT (-10.0) (10.0))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (SINGLE-FLOAT (0.0) (20.0))
;                            (DOUBLE-FLOAT (0.0d0) (20.0d0)) (RATIONAL (0) (20)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       etc.

;     (MOD PROD NDIGITS)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; ==>
;   (< NUMBER 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF AND IF AND IF PLUSP 
; ==>
;   (> NUMBER 0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a REAL, not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a REAL, not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (MOD II PERIOD)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (LOOP FOR II FROM 1 TO MAX-ITERS FOR PROD = 1 THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (MOD II NDIGITS)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (*
;    (LET ((NN (MOD II NDIGITS)))
;      (IF (= 0 NN) 1 NN))
;    PROD)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline float arithmetic (cost 3) because:
;       The first argument is a REAL, not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 3) because:
;       The first argument is a REAL, not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       etc.
; 
; compilation unit finished
;   printed 60 notes
STYLE-WARNING: redefining FIND-PROD in DEFUN
;;;; (time (find-prod 10000000 100000 1000000)) ...
ii:1000000 prod:88576
ii:2000000 prod:7776
ii:3000000 prod:66976
ii:4000000 prod:6176
ii:5000000 prod:45376
ii:6000000 prod:24576
ii:7000000 prod:63776
ii:8000000 prod:2976
ii:9000000 prod:42176
ii:10000000 prod:61376
Evaluation took:
  17.149 seconds of real time
  15.500969 seconds of user run time
  0.088005 seconds of system run time
  [Run times include 1.1 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  1,235,039,016 bytes consed.
;;;; (/ 1000000000000 100000) ...
;;;; (/ 1000000000000 100000) ...
;;;; (find-prod 100000 100000 10000) ...
ii:10000 prod:79008
ii:20000 prod:62496
ii:30000 prod:27296
ii:40000 prod:12544
ii:50000 prod:29008
ii:60000 prod:20096
ii:70000 prod:23264
ii:80000 prod:14688
ii:90000 prod:55776
ii:100000 prod:2496
;;;; (find-prod 1000000 100000 10000) ...
ii:10000 prod:79008
ii:20000 prod:62496
ii:30000 prod:27296
ii:40000 prod:12544
ii:50000 prod:29008
ii:60000 prod:20096
ii:70000 prod:23264
ii:80000 prod:14688
ii:90000 prod:55776
ii:100000 prod:2496
ii:110000 prod:3968
ii:120000 prod:90016
ii:130000 prod:30816
ii:140000 prod:9824
ii:150000 prod:3968
ii:160000 prod:59616
ii:170000 prod:66944
ii:180000 prod:41248
ii:190000 prod:76896
ii:200000 prod:90016
ii:210000 prod:84128
ii:220000 prod:39936
ii:230000 prod:76736
ii:240000 prod:60704
ii:250000 prod:34128
ii:260000 prod:61536
ii:270000 prod:32224
ii:280000 prod:95008
ii:290000 prod:12416
ii:300000 prod:59936
ii:310000 prod:23488
ii:320000 prod:60256
ii:330000 prod:13056
ii:340000 prod:37184
ii:350000 prod:23488
ii:360000 prod:73856
ii:370000 prod:51104
ii:380000 prod:19968
ii:390000 prod:50336
ii:400000 prod:60256
ii:410000 prod:6048
ii:420000 prod:58976
ii:430000 prod:47776
ii:440000 prod:51264
ii:450000 prod:6048
ii:460000 prod:4576
ii:470000 prod:95584
ii:480000 prod:40128
ii:490000 prod:38656
ii:500000 prod:98976
ii:510000 prod:95808
ii:520000 prod:4096
ii:530000 prod:48896
ii:540000 prod:54944
ii:550000 prod:45808
ii:560000 prod:21696
ii:570000 prod:77664
ii:580000 prod:39488
ii:590000 prod:45376
ii:600000 prod:4096
ii:610000 prod:16768
ii:620000 prod:83616
ii:630000 prod:4416
ii:640000 prod:80224
ii:650000 prod:16768
ii:660000 prod:13216
ii:670000 prod:89344
ii:680000 prod:42048
ii:690000 prod:18496
ii:700000 prod:83616
ii:710000 prod:32928
ii:720000 prod:65536
ii:730000 prod:82336
ii:740000 prod:79104
ii:750000 prod:32928
ii:760000 prod:47136
ii:770000 prod:42624
ii:780000 prod:31808
ii:790000 prod:26016
ii:800000 prod:65536
ii:810000 prod:68288
ii:820000 prod:37856
ii:830000 prod:70656
ii:840000 prod:83584
ii:850000 prod:18288
ii:860000 prod:11456
ii:870000 prod:29504
ii:880000 prod:92768
ii:890000 prod:35936
ii:900000 prod:77856
ii:910000 prod:46848
ii:920000 prod:88576
ii:930000 prod:57376
ii:940000 prod:25664
ii:950000 prod:46848
ii:960000 prod:94176
ii:970000 prod:41984
ii:980000 prod:28928
ii:990000 prod:56256
ii:1000000 prod:88576
;;;; (loop for ii from 1 to 10       do       (format t "ii:~a*8  ...
ii:1*8 = 8
ii:2*8 = 16
ii:3*8 = 24
ii:4*8 = 32
ii:5*8 = 40
ii:6*8 = 48
ii:7*8 = 56
ii:8*8 = 64
ii:9*8 = 72
ii:10*8 = 80
;;;; (* 2 79008) ...
;;;; (find-prod 10000000 100000 10000) ...
ii:10000 prod:79008
ii:20000 prod:62496
ii:30000 prod:27296
ii:40000 prod:12544
ii:50000 prod:29008
ii:60000 prod:20096
ii:70000 prod:23264
ii:80000 prod:14688
ii:90000 prod:55776
ii:100000 prod:2496
ii:110000 prod:3968
ii:120000 prod:90016
ii:130000 prod:30816
ii:140000 prod:9824
ii:150000 prod:3968
ii:160000 prod:59616
ii:170000 prod:66944
ii:180000 prod:41248
ii:190000 prod:76896
ii:200000 prod:90016
ii:210000 prod:84128
ii:220000 prod:39936
ii:230000 prod:76736
ii:240000 prod:60704
ii:250000 prod:34128
ii:260000 prod:61536
ii:270000 prod:32224
ii:280000 prod:95008
ii:290000 prod:12416
ii:300000 prod:59936
ii:310000 prod:23488
ii:320000 prod:60256
ii:330000 prod:13056
ii:340000 prod:37184
ii:350000 prod:23488
ii:360000 prod:73856
ii:370000 prod:51104
ii:380000 prod:19968
ii:390000 prod:50336
ii:400000 prod:60256
ii:410000 prod:6048
ii:420000 prod:58976
ii:430000 prod:47776
ii:440000 prod:51264
ii:450000 prod:6048
ii:460000 prod:4576
ii:470000 prod:95584
ii:480000 prod:40128
ii:490000 prod:38656
ii:500000 prod:98976
ii:510000 prod:95808
ii:520000 prod:4096
ii:530000 prod:48896
ii:540000 prod:54944
ii:550000 prod:45808
ii:560000 prod:21696
ii:570000 prod:77664
ii:580000 prod:39488
ii:590000 prod:45376
ii:600000 prod:4096
ii:610000 prod:16768
ii:620000 prod:83616
ii:630000 prod:4416
ii:640000 prod:80224
ii:650000 prod:16768
ii:660000 prod:13216
ii:670000 prod:89344
ii:680000 prod:42048
ii:690000 prod:18496
ii:700000 prod:83616
ii:710000 prod:32928
ii:720000 prod:65536
ii:730000 prod:82336
ii:740000 prod:79104
ii:750000 prod:32928
ii:760000 prod:47136
ii:770000 prod:42624
ii:780000 prod:31808
ii:790000 prod:26016
ii:800000 prod:65536
ii:810000 prod:68288
ii:820000 prod:37856
ii:830000 prod:70656
ii:840000 prod:83584
ii:850000 prod:18288
ii:860000 prod:11456
ii:870000 prod:29504
ii:880000 prod:92768
ii:890000 prod:35936
ii:900000 prod:77856
ii:910000 prod:46848
ii:920000 prod:88576
ii:930000 prod:57376
ii:940000 prod:25664
ii:950000 prod:46848
ii:960000 prod:94176
ii:970000 prod:41984
ii:980000 prod:28928
ii:990000 prod:56256
ii:1000000 prod:88576
ii:1010000 prod:12608
ii:1020000 prod:45696
ii:1030000 prod:70496
ii:1040000 prod:97344
ii:1050000 prod:12608
ii:1060000 prod:23296
ii:1070000 prod:32064
ii:1080000 prod:84288
ii:1090000 prod:74976
ii:1100000 prod:45696
ii:1110000 prod:49568
ii:1120000 prod:17216
ii:1130000 prod:18016
ii:1140000 prod:10624
ii:1150000 prod:49568
ii:1160000 prod:6816
ii:1170000 prod:71744
ii:1180000 prod:62848
ii:1190000 prod:96
ii:1200000 prod:17216
ii:1210000 prod:1728
ii:1220000 prod:31136
ii:1230000 prod:27936
ii:1240000 prod:57504
ii:1250000 prod:1728
ii:1260000 prod:72736
ii:1270000 prod:13024
ii:1280000 prod:8608
ii:1290000 prod:19616
ii:1300000 prod:51136
ii:1310000 prod:53088
ii:1320000 prod:95456
ii:1330000 prod:8256
ii:1340000 prod:49984
ii:1350000 prod:3088
ii:1360000 prod:29056
ii:1370000 prod:27904
ii:1380000 prod:25568
ii:1390000 prod:41536
ii:1400000 prod:15456
ii:1410000 prod:47648
ii:1420000 prod:38176
ii:1430000 prod:86976
ii:1440000 prod:80064
ii:1450000 prod:47648
ii:1460000 prod:3776
ii:1470000 prod:68384
ii:1480000 prod:57728
ii:1490000 prod:53856
ii:1500000 prod:58176
ii:1510000 prod:69408
ii:1520000 prod:67296
ii:1530000 prod:72096
ii:1540000 prod:59744
ii:1550000 prod:19408
ii:1560000 prod:4896
ii:1570000 prod:6464
ii:1580000 prod:69088
ii:1590000 prod:84576
ii:1600000 prod:67296
ii:1610000 prod:22368
ii:1620000 prod:30816
ii:1630000 prod:11616
ii:1640000 prod:61024
ii:1650000 prod:22368
ii:1660000 prod:80416
ii:1670000 prod:74144
ii:1680000 prod:43648
ii:1690000 prod:1696
ii:1700000 prod:70816
ii:1710000 prod:30528
ii:1720000 prod:16736
ii:1730000 prod:93536
ii:1740000 prod:15904
ii:1750000 prod:30528
ii:1760000 prod:18336
ii:1770000 prod:63424
ii:1780000 prod:25408
ii:1790000 prod:93216
ii:1800000 prod:16736
ii:1810000 prod:77888
ii:1820000 prod:33056
ii:1830000 prod:25856
ii:1840000 prod:36384
ii:1850000 prod:27888
ii:1860000 prod:26656
ii:1870000 prod:46304
ii:1880000 prod:98368
ii:1890000 prod:27136
ii:1900000 prod:33056
ii:1910000 prod:88448
ii:1920000 prod:67776
ii:1930000 prod:96576
ii:1940000 prod:54464
ii:1950000 prod:38448
ii:1960000 prod:93376
ii:1970000 prod:14784
ii:1980000 prod:26528
ii:1990000 prod:31456
ii:2000000 prod:7776
ii:2010000 prod:66208
ii:2020000 prod:68896
ii:2030000 prod:53696
ii:2040000 prod:42144
ii:2050000 prod:16208
ii:2060000 prod:66496
ii:2070000 prod:864
ii:2080000 prod:13888
ii:2090000 prod:14176
ii:2100000 prod:8896
ii:2110000 prod:55168
ii:2120000 prod:64416
ii:2130000 prod:25216
ii:2140000 prod:91424
ii:2150000 prod:5168
ii:2160000 prod:74016
ii:2170000 prod:56544
ii:2180000 prod:4448
ii:2190000 prod:63296
ii:2200000 prod:84416
ii:2210000 prod:39328
ii:2220000 prod:62336
ii:2230000 prod:19136
ii:2240000 prod:14304
ii:2250000 prod:39328
ii:2260000 prod:23936
ii:2270000 prod:53824
ii:2280000 prod:82208
ii:2290000 prod:46816
ii:2300000 prod:62336
ii:2310000 prod:42688
ii:2320000 prod:50656
ii:2330000 prod:23456
ii:2340000 prod:42784
ii:2350000 prod:42688
ii:2360000 prod:4256
ii:2370000 prod:84704
ii:2380000 prod:71168
ii:2390000 prod:12736
ii:2400000 prod:50656
ii:2410000 prod:29248
ii:2420000 prod:97376
ii:2430000 prod:6176
ii:2440000 prod:28864
ii:2450000 prod:29248
ii:2460000 prod:82976
ii:2470000 prod:61184
ii:2480000 prod:15328
ii:2490000 prod:49056
ii:2500000 prod:97376
ii:2510000 prod:83008
ii:2520000 prod:10496
ii:2530000 prod:75296
ii:2540000 prod:84544
ii:2550000 prod:33008
ii:2560000 prod:68096
ii:2570000 prod:55264
ii:2580000 prod:38688
ii:2590000 prod:3776
ii:2600000 prod:10496
ii:2610000 prod:67968
ii:2620000 prod:58016
ii:2630000 prod:98816
ii:2640000 prod:61824
ii:2650000 prod:17968
ii:2660000 prod:27616
ii:2670000 prod:78944
ii:2680000 prod:5248
ii:2690000 prod:4896
ii:2700000 prod:78016
ii:2710000 prod:88128
ii:2720000 prod:87936
ii:2730000 prod:24736
ii:2740000 prod:32704
ii:2750000 prod:38128
ii:2760000 prod:9536
ii:2770000 prod:64224
ii:2780000 prod:39008
ii:2790000 prod:416
ii:2800000 prod:7936
ii:2810000 prod:7488
ii:2820000 prod:68256
ii:2830000 prod:21056
ii:2840000 prod:49184
ii:2850000 prod:7488
ii:2860000 prod:81856
ii:2870000 prod:23104
ii:2880000 prod:63968
ii:2890000 prod:38336
ii:2900000 prod:8256
ii:2910000 prod:90048
ii:2920000 prod:66976
ii:2930000 prod:55776
ii:2940000 prod:63264
ii:2950000 prod:40048
ii:2960000 prod:12576
ii:2970000 prod:67584
ii:2980000 prod:44128
ii:2990000 prod:46656
ii:3000000 prod:66976
ii:3010000 prod:39808
ii:3020000 prod:32096
ii:3030000 prod:76896
ii:3040000 prod:46944
ii:3050000 prod:39808
ii:3060000 prod:49696
ii:3070000 prod:29664
ii:3080000 prod:43488
ii:3090000 prod:53376
ii:3100000 prod:72096
ii:3110000 prod:60768
ii:3120000 prod:11616
ii:3130000 prod:32416
ii:3140000 prod:72224
ii:3150000 prod:10768
ii:3160000 prod:41216
ii:3170000 prod:41344
ii:3180000 prod:46048
ii:3190000 prod:26496
ii:3200000 prod:51616
ii:3210000 prod:76928
ii:3220000 prod:93536
ii:3230000 prod:10336
ii:3240000 prod:71104
ii:3250000 prod:26928
ii:3260000 prod:75136
ii:3270000 prod:94624
ii:3280000 prod:15808
ii:3290000 prod:94016
ii:3300000 prod:93536
ii:3310000 prod:92288
ii:3320000 prod:25856
ii:3330000 prod:58656
ii:3340000 prod:15584
ii:3350000 prod:42288
ii:3360000 prod:99456
ii:3370000 prod:21504
ii:3380000 prod:96768
ii:3390000 prod:43936
ii:3400000 prod:45856
ii:3410000 prod:90848
ii:3420000 prod:16576
ii:3430000 prod:85376
ii:3440000 prod:17664
ii:3450000 prod:40848
ii:3460000 prod:22176
ii:3470000 prod:93984
ii:3480000 prod:72928
ii:3490000 prod:44256
ii:3500000 prod:36576
ii:3510000 prod:96608
ii:3520000 prod:53696
ii:3530000 prod:78496
ii:3540000 prod:9344
ii:3550000 prod:46608
ii:3560000 prod:31296
ii:3570000 prod:4064
ii:3580000 prod:28288
ii:3590000 prod:62976
ii:3600000 prod:93696
ii:3610000 prod:33568
ii:3620000 prod:25216
ii:3630000 prod:26016
ii:3640000 prod:22624
ii:3650000 prod:33568
ii:3660000 prod:14816
ii:3670000 prod:43744
ii:3680000 prod:86848
ii:3690000 prod:48096
ii:3700000 prod:25216
ii:3710000 prod:65728
ii:3720000 prod:99136
ii:3730000 prod:95936
ii:3740000 prod:9504
ii:3750000 prod:15728
ii:3760000 prod:40736
ii:3770000 prod:25024
ii:3780000 prod:52608
ii:3790000 prod:7616
ii:3800000 prod:99136
ii:3810000 prod:37088
ii:3820000 prod:3456
ii:3830000 prod:16256
ii:3840000 prod:61984
ii:3850000 prod:37088
ii:3860000 prod:37056
ii:3870000 prod:99904
ii:3880000 prod:89568
ii:3890000 prod:69536
ii:3900000 prod:3456
ii:3910000 prod:51648
ii:3920000 prod:86176
ii:3930000 prod:34976
ii:3940000 prod:52064
ii:3950000 prod:1648
ii:3960000 prod:51776
ii:3970000 prod:384
ii:3980000 prod:1728
ii:3990000 prod:41856
ii:4000000 prod:6176
ii:4010000 prod:53408
ii:4020000 prod:75296
ii:4030000 prod:80096
ii:4040000 prod:71744
ii:4050000 prod:3408
ii:4060000 prod:12896
ii:4070000 prod:78464
ii:4080000 prod:13088
ii:4090000 prod:72576
ii:4100000 prod:15296
ii:4110000 prod:6368
ii:4120000 prod:38816
ii:4130000 prod:19616
ii:4140000 prod:73024
ii:4150000 prod:6368
ii:4160000 prod:88416
ii:4170000 prod:46144
ii:4180000 prod:7648
ii:4190000 prod:29696
ii:4200000 prod:58816
ii:4210000 prod:34528
ii:4220000 prod:64736
ii:4230000 prod:41536
ii:4240000 prod:87904
ii:4250000 prod:34528
ii:4260000 prod:66336
ii:4270000 prod:95424
ii:4280000 prod:89408
ii:4290000 prod:21216
ii:4300000 prod:4736
ii:4310000 prod:81888
ii:4320000 prod:81056
ii:4330000 prod:73856
ii:4340000 prod:8384
ii:4350000 prod:31888
ii:4360000 prod:74656
ii:4370000 prod:78304
ii:4380000 prod:42368
ii:4390000 prod:15136
ii:4400000 prod:81056
ii:4410000 prod:72448
ii:4420000 prod:75776
ii:4430000 prod:4576
ii:4440000 prod:66464
ii:4450000 prod:22448
ii:4460000 prod:1376
ii:4470000 prod:86784
ii:4480000 prod:30528
ii:4490000 prod:39456
ii:4500000 prod:75776
ii:4510000 prod:10208
ii:4520000 prod:96896
ii:4530000 prod:81696
ii:4540000 prod:34144
ii:4550000 prod:10208
ii:4560000 prod:94496
ii:4570000 prod:52864
ii:4580000 prod:97888
ii:4590000 prod:82176
ii:4600000 prod:36896
ii:4610000 prod:79168
ii:4620000 prod:52416
ii:4630000 prod:13216
ii:4640000 prod:23424
ii:4650000 prod:29168
ii:4660000 prod:62016
ii:4670000 prod:48544
ii:4680000 prod:8448
ii:4690000 prod:71296
ii:4700000 prod:52416
ii:4710000 prod:83328
ii:4720000 prod:90336
ii:4730000 prod:47136
ii:4740000 prod:6304
ii:4750000 prod:33328
ii:4760000 prod:51936
ii:4770000 prod:5824
ii:4780000 prod:66208
ii:4790000 prod:14816
ii:4800000 prod:90336
ii:4810000 prod:66688
ii:4820000 prod:38656
ii:4830000 prod:11456
ii:4840000 prod:74784
ii:4850000 prod:16688
ii:4860000 prod:92256
ii:4870000 prod:76704
ii:4880000 prod:35168
ii:4890000 prod:40736
ii:4900000 prod:38656
ii:4910000 prod:33248
ii:4920000 prod:45376
ii:4930000 prod:54176
ii:4940000 prod:864
ii:4950000 prod:33248
ii:4960000 prod:30976
ii:4970000 prod:93184
ii:4980000 prod:59328
ii:4990000 prod:37056
ii:5000000 prod:45376
ii:5010000 prod:67008
ii:5020000 prod:18496
ii:5030000 prod:83296
ii:5040000 prod:96544
ii:5050000 prod:17008
ii:5060000 prod:76096
ii:5070000 prod:27264
ii:5080000 prod:62688
ii:5090000 prod:51776
ii:5100000 prod:18496
ii:5110000 prod:31968
ii:5120000 prod:26016
ii:5130000 prod:66816
ii:5140000 prod:13824
ii:5150000 prod:31968
ii:5160000 prod:95616
ii:5170000 prod:90944
ii:5180000 prod:49248
ii:5190000 prod:92896
ii:5200000 prod:26016
ii:5210000 prod:72128
ii:5220000 prod:95936
ii:5230000 prod:32736
ii:5240000 prod:44704
ii:5250000 prod:22128
ii:5260000 prod:17536
ii:5270000 prod:36224
ii:5280000 prod:3008
ii:5290000 prod:28416
ii:5300000 prod:95936
ii:5310000 prod:11488
ii:5320000 prod:16256
ii:5330000 prod:69056
ii:5340000 prod:21184
ii:5350000 prod:11488
ii:5360000 prod:29856
ii:5370000 prod:55104
ii:5380000 prod:7968
ii:5390000 prod:26336
ii:5400000 prod:56256
ii:5410000 prod:74048
ii:5420000 prod:74976
ii:5430000 prod:63776
ii:5440000 prod:75264
ii:5450000 prod:24048
ii:5460000 prod:20576
ii:5470000 prod:39584
ii:5480000 prod:28128
ii:5490000 prod:14656
ii:5500000 prod:94976
ii:5510000 prod:63808
ii:5520000 prod:20096
ii:5530000 prod:64896
ii:5540000 prod:78944
ii:5550000 prod:13808
ii:5560000 prod:37696
ii:5570000 prod:21664
ii:5580000 prod:47488
ii:5590000 prod:61376
ii:5600000 prod:40096
ii:5610000 prod:4768
ii:5620000 prod:39616
ii:5630000 prod:60416
ii:5640000 prod:64224
ii:5650000 prod:4768
ii:5660000 prod:69216
ii:5670000 prod:93344
ii:5680000 prod:30048
ii:5690000 prod:94496
ii:5700000 prod:79616
ii:5710000 prod:928
ii:5720000 prod:81536
ii:5730000 prod:98336
ii:5740000 prod:3104
ii:5750000 prod:928
ii:5760000 prod:63136
ii:5770000 prod:86624
ii:5780000 prod:79808
ii:5790000 prod:22016
ii:5800000 prod:81536
ii:5810000 prod:96288
ii:5820000 prod:73856
ii:5830000 prod:6656
ii:5840000 prod:87584
ii:5850000 prod:46288
ii:5860000 prod:47456
ii:5870000 prod:53504
ii:5880000 prod:40768
ii:5890000 prod:31936
ii:5900000 prod:93856
ii:5910000 prod:74848
ii:5920000 prod:24576
ii:5930000 prod:93376
ii:5940000 prod:29664
ii:5950000 prod:24848
ii:5960000 prod:30176
ii:5970000 prod:65984
ii:5980000 prod:36928
ii:5990000 prod:72256
ii:6000000 prod:24576
ii:6010000 prod:608
ii:6020000 prod:1696
ii:6030000 prod:26496
ii:6040000 prod:81344
ii:6050000 prod:608
ii:6060000 prod:79296
ii:6070000 prod:36064
ii:6080000 prod:52288
ii:6090000 prod:10976
ii:6100000 prod:1696
ii:6110000 prod:97568
ii:6120000 prod:93216
ii:6130000 prod:94016
ii:6140000 prod:74624
ii:6150000 prod:47568
ii:6160000 prod:82816
ii:6170000 prod:55744
ii:6180000 prod:50848
ii:6190000 prod:76096
ii:6200000 prod:13216
ii:6210000 prod:69728
ii:6220000 prod:47136
ii:6230000 prod:43936
ii:6240000 prod:81504
ii:6250000 prod:19728
ii:6260000 prod:88736
ii:6270000 prod:57024
ii:6280000 prod:96608
ii:6290000 prod:95616
ii:6300000 prod:47136
ii:6310000 prod:21088
ii:6320000 prod:11456
ii:6330000 prod:24256
ii:6340000 prod:73984
ii:6350000 prod:21088
ii:6360000 prod:45056
ii:6370000 prod:71904
ii:6380000 prod:13568
ii:6390000 prod:17536
ii:6400000 prod:11456
ii:6410000 prod:15648
ii:6420000 prod:54176
ii:6430000 prod:2976
ii:6440000 prod:4064
ii:6450000 prod:15648
ii:6460000 prod:19776
ii:6470000 prod:12384
ii:6480000 prod:45728
ii:6490000 prod:29856
ii:6500000 prod:54176
ii:6510000 prod:37408
ii:6520000 prod:83296
ii:6530000 prod:88096
ii:6540000 prod:83744
ii:6550000 prod:37408
ii:6560000 prod:20896
ii:6570000 prod:50464
ii:6580000 prod:17088
ii:6590000 prod:80576
ii:6600000 prod:83296
ii:6610000 prod:50368
ii:6620000 prod:66816
ii:6630000 prod:47616
ii:6640000 prod:65024
ii:6650000 prod:368
ii:6660000 prod:16416
ii:6670000 prod:98144
ii:6680000 prod:91648
ii:6690000 prod:97696
ii:6700000 prod:86816
ii:6710000 prod:58528
ii:6720000 prod:52736
ii:6730000 prod:29536
ii:6740000 prod:19904
ii:6750000 prod:8528
ii:6760000 prod:54336
ii:6770000 prod:87424
ii:6780000 prod:93408
ii:6790000 prod:29216
ii:6800000 prod:72736
ii:6810000 prod:25888
ii:6820000 prod:9056
ii:6830000 prod:1856
ii:6840000 prod:384
ii:6850000 prod:25888
ii:6860000 prod:2656
ii:6870000 prod:30304
ii:6880000 prod:26368
ii:6890000 prod:83136
ii:6900000 prod:9056
ii:6910000 prod:96448
ii:6920000 prod:63776
ii:6930000 prod:92576
ii:6940000 prod:98464
ii:6950000 prod:46448
ii:6960000 prod:89376
ii:6970000 prod:78784
ii:6980000 prod:94528
ii:6990000 prod:67456
ii:7000000 prod:63776
ii:7010000 prod:14208
ii:7020000 prod:44896
ii:7030000 prod:29696
ii:7040000 prod:6144
ii:7050000 prod:14208
ii:7060000 prod:42496
ii:7070000 prod:84864
ii:7080000 prod:41888
ii:7090000 prod:70176
ii:7100000 prod:84896
ii:7110000 prod:63168
ii:7120000 prod:60416
ii:7130000 prod:21216
ii:7140000 prod:35424
ii:7150000 prod:13168
ii:7160000 prod:70016
ii:7170000 prod:20544
ii:7180000 prod:92448
ii:7190000 prod:39296
ii:7200000 prod:80416
ii:7210000 prod:7328
ii:7220000 prod:78336
ii:7230000 prod:35136
ii:7240000 prod:38304
ii:7250000 prod:7328
ii:7260000 prod:39936
ii:7270000 prod:97824
ii:7280000 prod:30208
ii:7290000 prod:42816
ii:7300000 prod:78336
ii:7310000 prod:70688
ii:7320000 prod:86656
ii:7330000 prod:59456
ii:7340000 prod:46784
ii:7350000 prod:20688
ii:7360000 prod:40256
ii:7370000 prod:8704
ii:7380000 prod:39168
ii:7390000 prod:48736
ii:7400000 prod:6656
ii:7410000 prod:77248
ii:7420000 prod:73376
ii:7430000 prod:82176
ii:7440000 prod:92864
ii:7450000 prod:27248
ii:7460000 prod:58976
ii:7470000 prod:45184
ii:7480000 prod:43328
ii:7490000 prod:5056
ii:7500000 prod:73376
ii:7510000 prod:91008
ii:7520000 prod:6496
ii:7530000 prod:71296
ii:7540000 prod:28544
ii:7550000 prod:41008
ii:7560000 prod:64096
ii:7570000 prod:19264
ii:7580000 prod:26688
ii:7590000 prod:79776
ii:7600000 prod:6496
ii:7610000 prod:35968
ii:7620000 prod:74016
ii:7630000 prod:14816
ii:7640000 prod:85824
ii:7650000 prod:35968
ii:7660000 prod:43616
ii:7670000 prod:22944
ii:7680000 prod:93248
ii:7690000 prod:80896
ii:7700000 prod:74016
ii:7710000 prod:56128
ii:7720000 prod:3936
ii:7730000 prod:40736
ii:7740000 prod:56704
ii:7750000 prod:6128
ii:7760000 prod:25536
ii:7770000 prod:8224
ii:7780000 prod:47008
ii:7790000 prod:16416
ii:7800000 prod:43936
ii:7810000 prod:95488
ii:7820000 prod:24256
ii:7830000 prod:77056
ii:7840000 prod:33184
ii:7850000 prod:45488
ii:7860000 prod:37856
ii:7870000 prod:27104
ii:7880000 prod:11968
ii:7890000 prod:34336
ii:7900000 prod:24256
ii:7910000 prod:18048
ii:7920000 prod:2976
ii:7930000 prod:91776
ii:7940000 prod:67264
ii:7950000 prod:18048
ii:7960000 prod:48576
ii:7970000 prod:91584
ii:7980000 prod:52128
ii:7990000 prod:62656
ii:8000000 prod:2976
ii:8010000 prod:27808
ii:8020000 prod:88096
ii:8030000 prod:32896
ii:8040000 prod:30944
ii:8050000 prod:27808
ii:8060000 prod:5696
ii:8070000 prod:33664
ii:8080000 prod:91488
ii:8090000 prod:49376
ii:8100000 prod:88096
ii:8110000 prod:88768
ii:8120000 prod:47616
ii:8130000 prod:68416
ii:8140000 prod:76224
ii:8150000 prod:38768
ii:8160000 prod:77216
ii:8170000 prod:65344
ii:8180000 prod:34048
ii:8190000 prod:2496
ii:8200000 prod:47616
ii:8210000 prod:44928
ii:8220000 prod:9536
ii:8230000 prod:26336
ii:8240000 prod:95104
ii:8250000 prod:44928
ii:8260000 prod:91136
ii:8270000 prod:38624
ii:8280000 prod:23808
ii:8290000 prod:10016
ii:8300000 prod:29536
ii:8310000 prod:80288
ii:8320000 prod:81856
ii:8330000 prod:14656
ii:8340000 prod:99584
ii:8350000 prod:30288
ii:8360000 prod:55456
ii:8370000 prod:25504
ii:8380000 prod:4768
ii:8390000 prod:59936
ii:8400000 prod:81856
ii:8410000 prod:78848
ii:8420000 prod:72576
ii:8430000 prod:41376
ii:8440000 prod:1664
ii:8450000 prod:28848
ii:8460000 prod:78176
ii:8470000 prod:97984
ii:8480000 prod:80928
ii:8490000 prod:60256
ii:8500000 prod:72576
ii:8510000 prod:84608
ii:8520000 prod:9696
ii:8530000 prod:34496
ii:8540000 prod:93344
ii:8550000 prod:34608
ii:8560000 prod:87296
ii:8570000 prod:8064
ii:8580000 prod:76288
ii:8590000 prod:58976
ii:8600000 prod:9696
ii:8610000 prod:61568
ii:8620000 prod:61216
ii:8630000 prod:62016
ii:8640000 prod:26624
ii:8650000 prod:11568
ii:8660000 prod:50816
ii:8670000 prod:67744
ii:8680000 prod:14848
ii:8690000 prod:4096
ii:8700000 prod:1216
ii:8710000 prod:73728
ii:8720000 prod:95136
ii:8730000 prod:91936
ii:8740000 prod:53504
ii:8750000 prod:23728
ii:8760000 prod:36736
ii:8770000 prod:89024
ii:8780000 prod:60608
ii:8790000 prod:23616
ii:8800000 prod:35136
ii:8810000 prod:25088
ii:8820000 prod:59456
ii:8830000 prod:72256
ii:8840000 prod:45984
ii:8850000 prod:25088
ii:8860000 prod:93056
ii:8870000 prod:3904
ii:8880000 prod:77568
ii:8890000 prod:45536
ii:8900000 prod:99456
ii:8910000 prod:19648
ii:8920000 prod:2176
ii:8930000 prod:50976
ii:8940000 prod:76064
ii:8950000 prod:19648
ii:8960000 prod:67776
ii:8970000 prod:44384
ii:8980000 prod:9728
ii:8990000 prod:57856
ii:9000000 prod:42176
ii:9010000 prod:41408
ii:9020000 prod:31296
ii:9030000 prod:36096
ii:9040000 prod:55744
ii:9050000 prod:41408
ii:9060000 prod:68896
ii:9070000 prod:82464
ii:9080000 prod:61088
ii:9090000 prod:68576
ii:9100000 prod:31296
ii:9110000 prod:34368
ii:9120000 prod:74816
ii:9130000 prod:55616
ii:9140000 prod:77024
ii:9150000 prod:34368
ii:9160000 prod:24416
ii:9170000 prod:70144
ii:9180000 prod:55648
ii:9190000 prod:25696
ii:9200000 prod:74816
ii:9210000 prod:62528
ii:9220000 prod:736
ii:9230000 prod:77536
ii:9240000 prod:91904
ii:9250000 prod:12528
ii:9260000 prod:2336
ii:9270000 prod:19424
ii:9280000 prod:37408
ii:9290000 prod:17216
ii:9300000 prod:20736
ii:9310000 prod:9888
ii:9320000 prod:17056
ii:9330000 prod:9856
ii:9340000 prod:12384
ii:9350000 prod:9888
ii:9360000 prod:10656
ii:9370000 prod:2304
ii:9380000 prod:10368
ii:9390000 prod:51136
ii:9400000 prod:37056
ii:9410000 prod:20448
ii:9420000 prod:51776
ii:9430000 prod:80576
ii:9440000 prod:30464
ii:9450000 prod:20448
ii:9460000 prod:77376
ii:9470000 prod:70784
ii:9480000 prod:58528
ii:9490000 prod:95456
ii:9500000 prod:51776
ii:9510000 prod:18208
ii:9520000 prod:92896
ii:9530000 prod:77696
ii:9540000 prod:78144
ii:9550000 prod:18208
ii:9560000 prod:90496
ii:9570000 prod:16864
ii:9580000 prod:85888
ii:9590000 prod:58176
ii:9600000 prod:32896
ii:9610000 prod:47168
ii:9620000 prod:68416
ii:9630000 prod:29216
ii:9640000 prod:47424
ii:9650000 prod:47168
ii:9660000 prod:78016
ii:9670000 prod:92544
ii:9680000 prod:56448
ii:9690000 prod:67296
ii:9700000 prod:68416
ii:9710000 prod:11328
ii:9720000 prod:26336
ii:9730000 prod:83136
ii:9740000 prod:10304
ii:9750000 prod:11328
ii:9760000 prod:87936
ii:9770000 prod:29824
ii:9780000 prod:74208
ii:9790000 prod:30816
ii:9800000 prod:26336
ii:9810000 prod:54688
ii:9820000 prod:94656
ii:9830000 prod:67456
ii:9840000 prod:58784
ii:9850000 prod:4688
ii:9860000 prod:48256
ii:9870000 prod:80704
ii:9880000 prod:23168
ii:9890000 prod:16736
ii:9900000 prod:34656
ii:9910000 prod:1248
ii:9920000 prod:61376
ii:9930000 prod:70176
ii:9940000 prod:24864
ii:9950000 prod:1248
ii:9960000 prod:46976
ii:9970000 prod:37184
ii:9980000 prod:7328
ii:9990000 prod:33056
ii:10000000 prod:61376
;;;; (* 2 62496) ...
;;;; '(time (find-prod 20 100000 1000000)) ...
;;;; (time (find-prod 20 100000 1000000)) ...
Evaluation took:
  0.0 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
;;;; (assert (= 17664 (time (find-prod 20 100000 1000000)))) ...
Evaluation took:
  0.001 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
;;;; (assert (= 36288 (time (find-prod  9 100000 1000000)))) ...
Evaluation took:
  0.0 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
;;;; (assert (= 36288 (time (find-prod 10 100000 1000000)))) ...
Evaluation took:
  0.0 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
;;;; (assert (= 17664 (time (find-prod 20 100000 1000000)))) ...
Evaluation took:
  0.0 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
;;;; (time (find-prod 20 100000 1000000)) ...
Evaluation took:
  0.0 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
;;;; (time (find-prod 30 100000 1000000)) ...
Evaluation took:
  0.0 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
;;;; (time (find-prod 20 100000 1000000)) ...
Evaluation took:
  0.0 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
;;;; (time (find-prod 30 100000 1000000)) ...
Evaluation took:
  0.0 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
;;;; (time (find-prod 40 100000 1000000)) ...
Evaluation took:
  0.0 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
;;;; (find-prod 5) ...
;;;; (find-prod 25) ...
;;;; (find-prod 25) ...
;;;; (find-prod 5) ...
;;;; (/ 10984 12) ...
;;;; (find-prod 11) ...
;;;; (find-prod 11) ...
;;;; (find-prod 21) ...
;;;; (find-prod 20) ...
;;;; (find-prod 10) ...
;;;; (find-prod 19) ...
;;;; Compile file /home/mortis/personal/projects/project-euler/sr ...
; compiling file "/home/mortis/personal/projects/project-euler/src/cl/problem-160.lisp" (written 02 OCT 2007 10:31:57 PM):

; file: /home/mortis/personal/projects/project-euler/src/cl/problem-160.lisp
; in: DEFUN FIND-PROD
;     (= 0 (MOD PROD 10))
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (20))
;                               (DOUBLE-FLOAT (-10.0d0) (20.0d0))
;                               (SINGLE-FLOAT (-10.0) (20.0))), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

;     (MOD PROD NDIGITS)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a (OR SINGLE-FLOAT DOUBLE-FLOAT INTEGER).
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.
;   The second argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF AND IF AND IF PLUSP 
; ==>
;   (> NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

;     (MOD II PERIOD)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The second argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

;     (= 0 (MOD II PERIOD))
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

;     (MOD II NDIGITS)
; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The second argument is a REAL, not a INTEGER.

; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0)) (RATIONAL 0)), not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                               (DOUBLE-FLOAT (0.0d0))
;                               (RATIONAL 0)), not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.

;     (= 0 NN)
; --> = IF 
; ==>
;   (= SB-C::Y 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

;     (* PROD
;      (LET ((NN (MOD II NDIGITS)))
;        (IF (= 0 NN) 1 NN)))
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a RATIONAL.
;   The second argument is a REAL, not a FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
;   The second argument is a REAL, not a RATIONAL.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a SINGLE-FLOAT.
;   The second argument is a REAL, not a DOUBLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a DOUBLE-FLOAT.
;   The second argument is a REAL, not a SINGLE-FLOAT.
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.
;   The second argument is a REAL, not a INTEGER.

;     (/ PROD 10)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to
;   convert x/2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.

;     (MOD PROD 10)
; --> BLOCK LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (10))
;                               (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                               (SINGLE-FLOAT (-10.0) (10.0))), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-10) (10))
;                               (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                               (SINGLE-FLOAT (-10.0) (10.0))), not a FLOAT.

; --> BLOCK LET REM BLOCK MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-KERNEL::DIVISOR)
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a REAL, not a FLOAT.
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The first argument is a REAL, not a INTEGER.

;     (LOOP FOR II FROM 1 TO MAX-ITERS FOR PROD = 1 THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The second argument is a REAL, not a FIXNUM.

;     (MOD PROD 10)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (OR (RATIONAL (-10) (10))
;                                   (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                                   (SINGLE-FLOAT (-10.0) (10.0))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (SINGLE-FLOAT (0.0) (20.0))
;                            (DOUBLE-FLOAT (0.0d0) (20.0d0)) (RATIONAL (0) (20)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (OR (RATIONAL (-10) (10))
;                                   (DOUBLE-FLOAT (-10.0d0) (10.0d0))
;                                   (SINGLE-FLOAT (-10.0) (10.0))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (SINGLE-FLOAT (0.0) (20.0))
;                            (DOUBLE-FLOAT (0.0d0) (20.0d0)) (RATIONAL (0) (20)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       etc.

;     (MOD PROD NDIGITS)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; ==>
;   (< NUMBER 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF AND IF AND IF PLUSP 
; ==>
;   (> NUMBER 0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a REAL, not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a REAL, not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (MOD II PERIOD)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (LOOP FOR II FROM 1 TO MAX-ITERS FOR PROD = 1 THEN ...)
; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY SB-LOOP::LOOP-REALLY-DESETQ 
; --> SETQ THE 1+ 
; ==>
;   (+ II 1)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (INTEGER 1), not a FIXNUM.
;       The result is a (VALUES (INTEGER 2) &OPTIONAL), not a (VALUES FIXNUM
;                                                                     &REST T).
;       etc.

; --> BLOCK LET LET SB-LOOP::LOOP-BODY TAGBODY WHEN COND IF 
; ==>
;   (> II #:LOOP-LIMIT-0)
; 
; note: forced to do GENERIC-> (cost 10)
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (INTEGER 2), not a FIXNUM.
;       The second argument is a REAL, not a FIXNUM.

;     (MOD II NDIGITS)
; --> BLOCK LET IF AND IF AND IF MINUSP 
; ==>
;   (< SB-KERNEL::DIVISOR 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a REAL, not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a REAL, not a FIXNUM.
;       etc.

; --> BLOCK LET IF 
; ==>
;   (+ REM SB-KERNEL::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0d0 0.0) (SINGLE-FLOAT (0.0))
;                                   (DOUBLE-FLOAT (0.0d0))
;                                   (RATIONAL 0)), not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       etc.

;     (* PROD
;      (LET ((NN (MOD II NDIGITS)))
;        (IF (= 0 NN) 1 NN)))
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline float arithmetic (cost 3) because:
;       The first argument is a REAL, not a SINGLE-FLOAT.
;       The second argument is a REAL, not a SINGLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES SINGLE-FLOAT &REST
;                                                              T).
;       unable to do inline float arithmetic (cost 3) because:
;       The first argument is a REAL, not a DOUBLE-FLOAT.
;       The second argument is a REAL, not a DOUBLE-FLOAT.
;       The result is a (VALUES REAL &OPTIONAL), not a (VALUES DOUBLE-FLOAT &REST
;                                                              T).
;       etc.
; 
; compilation unit finished
;   printed 60 notes

; /home/mortis/personal/projects/project-euler/src/cl/problem-160.fasl written
; compilation finished in 0:00:00
STYLE-WARNING: redefining FIND-PROD in DEFUN
Evaluation took:
  0.0 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
Evaluation took:
  0.0 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
Evaluation took:
  0.0 seconds of real time
  0.0 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  0 bytes consed.
;;;; (find-prod 1000 100000 1000000) ...
;;;; (find-prod 10000 100000 1000000) ...
;;;; (time (find-prod 100000 100000 1000000)) ...
Evaluation took:
  0.084 seconds of real time
  0.084006 seconds of user run time
  0.0 seconds of system run time
  0 calls to %EVAL
  0 page faults and
  6,241,192 bytes consed.
;;;; (time (find-prod 1000000 100000 1000000)) ...
ii:1000000 prod:88576
Evaluation took:
  0.881 seconds of real time
  0.860054 seconds of user run time
  0.0 seconds of system run time
  [Run times include 0.052 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  62,331,640 bytes consed.
;;;; (time (find-prod 10000000 100000 1000000)) ...
ii:1000000 prod:88576
ii:2000000 prod:7776
ii:3000000 prod:66976
ii:4000000 prod:6176
ii:5000000 prod:45376
ii:6000000 prod:24576
ii:7000000 prod:63776
ii:8000000 prod:2976
ii:9000000 prod:42176
ii:10000000 prod:61376
Evaluation took:
  16.845 seconds of real time
  15.260954 seconds of user run time
  0.080005 seconds of system run time
  [Run times include 1.124 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  1,249,641,944 bytes consed.
;;;; (find-prod 10) ...
;;;; (find-prod 10) ...
;;;; (find-prod 100) ...
;;;; (find-prod 100) ...
;;;; (find-prod 9) ...
;;;; (find-prod 99) ...
;;;; (find-prod 19) ...
;;;; (find-prod 20) ...
;;;; (loop for ii from 1 to 100       do       (format t "(find-p ...
(find-prod 1) ; => 1
(find-prod 2) ; => 2
(find-prod 3) ; => 6
(find-prod 4) ; => 24
(find-prod 5) ; => 12
(find-prod 6) ; => 72
(find-prod 7) ; => 504
(find-prod 8) ; => 4032
(find-prod 9) ; => 36288
(find-prod 10) ; => 36288
(find-prod 11) ; => 99168
(find-prod 12) ; => 90016
(find-prod 13) ; => 70208
(find-prod 14) ; => 82912
(find-prod 15) ; => 24368
(find-prod 16) ; => 89888
(find-prod 17) ; => 28096
(find-prod 18) ; => 5728
(find-prod 19) ; => 8832
(find-prod 20) ; => 17664
(find-prod 21) ; => 70944
(find-prod 22) ; => 60768
(find-prod 23) ; => 97664
(find-prod 24) ; => 43936
(find-prod 25) ; => 10984
(find-prod 26) ; => 85584
(find-prod 27) ; => 10768
(find-prod 28) ; => 1504
(find-prod 29) ; => 43616
(find-prod 30) ; => 30848
(find-prod 31) ; => 56288
(find-prod 32) ; => 1216
(find-prod 33) ; => 40128
(find-prod 34) ; => 64352
(find-prod 35) ; => 25232
(find-prod 36) ; => 8352
(find-prod 37) ; => 9024
(find-prod 38) ; => 42912
(find-prod 39) ; => 73568
(find-prod 40) ; => 94272
(find-prod 41) ; => 65152
(find-prod 42) ; => 36384
(find-prod 43) ; => 64512
(find-prod 44) ; => 38528
(find-prod 45) ; => 73376
(find-prod 46) ; => 75296
(find-prod 47) ; => 38912
(find-prod 48) ; => 67776
(find-prod 49) ; => 21024
(find-prod 50) ; => 10512
(find-prod 51) ; => 36112
(find-prod 52) ; => 77824
(find-prod 53) ; => 24672
(find-prod 54) ; => 32288
(find-prod 55) ; => 77584
(find-prod 56) ; => 44704
(find-prod 57) ; => 48128
(find-prod 58) ; => 91424
(find-prod 59) ; => 94016
(find-prod 60) ; => 64096
(find-prod 61) ; => 9856
(find-prod 62) ; => 11072
(find-prod 63) ; => 97536
(find-prod 64) ; => 42304
(find-prod 65) ; => 74976
(find-prod 66) ; => 48416
(find-prod 67) ; => 43872
(find-prod 68) ; => 83296
(find-prod 69) ; => 47424
(find-prod 70) ; => 31968
(find-prod 71) ; => 69728
(find-prod 72) ; => 20416
(find-prod 73) ; => 90368
(find-prod 74) ; => 87232
(find-prod 75) ; => 65424
(find-prod 76) ; => 72224
(find-prod 77) ; => 61248
(find-prod 78) ; => 77344
(find-prod 79) ; => 10176
(find-prod 80) ; => 81408
(find-prod 81) ; => 94048
(find-prod 82) ; => 11936
(find-prod 83) ; => 90688
(find-prod 84) ; => 17792
(find-prod 85) ; => 51232
(find-prod 86) ; => 5952
(find-prod 87) ; => 17824
(find-prod 88) ; => 68512
(find-prod 89) ; => 97568
(find-prod 90) ; => 78112
(find-prod 91) ; => 8192
(find-prod 92) ; => 53664
(find-prod 93) ; => 90752
(find-prod 94) ; => 30688
(find-prod 95) ; => 91536
(find-prod 96) ; => 87456
(find-prod 97) ; => 83232
(find-prod 98) ; => 56736
(find-prod 99) ; => 16864
(find-prod 100) ; => 16864
;;;; (format t "~-10d~&" 10) ...
10
;;;; (format t "'~-10d'~&" 10) ...
'10'
;;;; (format t "'~10d'~&" 10) ...
'        10'
;;;; (loop for ii from 1 to 100       do       (format t "; (find ...
; (find-prod          1) ; =>          1
; (find-prod          2) ; =>          2
; (find-prod          3) ; =>          6
; (find-prod          4) ; =>         24
; (find-prod          5) ; =>         12
; (find-prod          6) ; =>         72
; (find-prod          7) ; =>        504
; (find-prod          8) ; =>       4032
; (find-prod          9) ; =>      36288
; (find-prod         10) ; =>      36288
; (find-prod         11) ; =>      99168
; (find-prod         12) ; =>      90016
; (find-prod         13) ; =>      70208
; (find-prod         14) ; =>      82912
; (find-prod         15) ; =>      24368
; (find-prod         16) ; =>      89888
; (find-prod         17) ; =>      28096
; (find-prod         18) ; =>       5728
; (find-prod         19) ; =>       8832
; (find-prod         20) ; =>      17664
; (find-prod         21) ; =>      70944
; (find-prod         22) ; =>      60768
; (find-prod         23) ; =>      97664
; (find-prod         24) ; =>      43936
; (find-prod         25) ; =>      10984
; (find-prod         26) ; =>      85584
; (find-prod         27) ; =>      10768
; (find-prod         28) ; =>       1504
; (find-prod         29) ; =>      43616
; (find-prod         30) ; =>      30848
; (find-prod         31) ; =>      56288
; (find-prod         32) ; =>       1216
; (find-prod         33) ; =>      40128
; (find-prod         34) ; =>      64352
; (find-prod         35) ; =>      25232
; (find-prod         36) ; =>       8352
; (find-prod         37) ; =>       9024
; (find-prod         38) ; =>      42912
; (find-prod         39) ; =>      73568
; (find-prod         40) ; =>      94272
; (find-prod         41) ; =>      65152
; (find-prod         42) ; =>      36384
; (find-prod         43) ; =>      64512
; (find-prod         44) ; =>      38528
; (find-prod         45) ; =>      73376
; (find-prod         46) ; =>      75296
; (find-prod         47) ; =>      38912
; (find-prod         48) ; =>      67776
; (find-prod         49) ; =>      21024
; (find-prod         50) ; =>      10512
; (find-prod         51) ; =>      36112
; (find-prod         52) ; =>      77824
; (find-prod         53) ; =>      24672
; (find-prod         54) ; =>      32288
; (find-prod         55) ; =>      77584
; (find-prod         56) ; =>      44704
; (find-prod         57) ; =>      48128
; (find-prod         58) ; =>      91424
; (find-prod         59) ; =>      94016
; (find-prod         60) ; =>      64096
; (find-prod         61) ; =>       9856
; (find-prod         62) ; =>      11072
; (find-prod         63) ; =>      97536
; (find-prod         64) ; =>      42304
; (find-prod         65) ; =>      74976
; (find-prod         66) ; =>      48416
; (find-prod         67) ; =>      43872
; (find-prod         68) ; =>      83296
; (find-prod         69) ; =>      47424
; (find-prod         70) ; =>      31968
; (find-prod         71) ; =>      69728
; (find-prod         72) ; =>      20416
; (find-prod         73) ; =>      90368
; (find-prod         74) ; =>      87232
; (find-prod         75) ; =>      65424
; (find-prod         76) ; =>      72224
; (find-prod         77) ; =>      61248
; (find-prod         78) ; =>      77344
; (find-prod         79) ; =>      10176
; (find-prod         80) ; =>      81408
; (find-prod         81) ; =>      94048
; (find-prod         82) ; =>      11936
; (find-prod         83) ; =>      90688
; (find-prod         84) ; =>      17792
; (find-prod         85) ; =>      51232
; (find-prod         86) ; =>       5952
; (find-prod         87) ; =>      17824
; (find-prod         88) ; =>      68512
; (find-prod         89) ; =>      97568
; (find-prod         90) ; =>      78112
; (find-prod         91) ; =>       8192
; (find-prod         92) ; =>      53664
; (find-prod         93) ; =>      90752
; (find-prod         94) ; =>      30688
; (find-prod         95) ; =>      91536
; (find-prod         96) ; =>      87456
; (find-prod         97) ; =>      83232
; (find-prod         98) ; =>      56736
; (find-prod         99) ; =>      16864
; (find-prod        100) ; =>      16864
;;;; (loop for ii from 1000000 to 1000100       do       (format  ...
; (find-prod    1000000) ; =>      88576
; (find-prod    1000001) ; =>      88576
; (find-prod    1000002) ; =>      77152
; (find-prod    1000003) ; =>      31456
; (find-prod    1000004) ; =>      25824
; (find-prod    1000005) ; =>      12912
; (find-prod    1000006) ; =>      77472
; (find-prod    1000007) ; =>      42304
; (find-prod    1000008) ; =>      38432
; (find-prod    1000009) ; =>      45888
; (find-prod    1000010) ; =>      45888
; (find-prod    1000011) ; =>       4768
; (find-prod    1000012) ; =>      57216
; (find-prod    1000013) ; =>      43808
; (find-prod    1000014) ; =>      13312
; (find-prod    1000015) ; =>      19968
; (find-prod    1000016) ; =>      19488
; (find-prod    1000017) ; =>      31296
; (find-prod    1000018) ; =>      63328
; (find-prod    1000019) ; =>       3232
; (find-prod    1000020) ; =>       6464
; (find-prod    1000021) ; =>      35744
; (find-prod    1000022) ; =>      86368
; (find-prod    1000023) ; =>      86464
; (find-prod    1000024) ; =>      75136
; (find-prod    1000025) ; =>      18784
; (find-prod    1000026) ; =>      88384
; (find-prod    1000027) ; =>      86368
; (find-prod    1000028) ; =>      18304
; (find-prod    1000029) ; =>      30816
; (find-prod    1000030) ; =>      92448
; (find-prod    1000031) ; =>      65888
; (find-prod    1000032) ; =>       8416
; (find-prod    1000033) ; =>      77728
; (find-prod    1000034) ; =>      42752
; (find-prod    1000035) ; =>      49632
; (find-prod    1000036) ; =>      86752
; (find-prod    1000037) ; =>       9824
; (find-prod    1000038) ; =>      73312
; (find-prod    1000039) ; =>      59168
; (find-prod    1000040) ; =>      36672
; (find-prod    1000041) ; =>       3552
; (find-prod    1000042) ; =>      49184
; (find-prod    1000043) ; =>      14912
; (find-prod    1000044) ; =>      56128
; (find-prod    1000045) ; =>      52576
; (find-prod    1000046) ; =>      18496
; (find-prod    1000047) ; =>      69312
; (find-prod    1000048) ; =>      26976
; (find-prod    1000049) ; =>      21824
; (find-prod    1000050) ; =>      10912
; (find-prod    1000051) ; =>      56512
; (find-prod    1000052) ; =>      38624
; (find-prod    1000053) ; =>      47072
; (find-prod    1000054) ; =>      41888
; (find-prod    1000055) ; =>      30384
; (find-prod    1000056) ; =>       1504
; (find-prod    1000057) ; =>      85728
; (find-prod    1000058) ; =>      72224
; (find-prod    1000059) ; =>      61216
; (find-prod    1000060) ; =>      67296
; (find-prod    1000061) ; =>       5056
; (find-prod    1000062) ; =>      13472
; (find-prod    1000063) ; =>      48736
; (find-prod    1000064) ; =>      19104
; (find-prod    1000065) ; =>      24176
; (find-prod    1000066) ; =>      95616
; (find-prod    1000067) ; =>       6272
; (find-prod    1000068) ; =>      26496
; (find-prod    1000069) ; =>      28224
; (find-prod    1000070) ; =>      97568
; (find-prod    1000071) ; =>      27328
; (find-prod    1000072) ; =>      67616
; (find-prod    1000073) ; =>      35968
; (find-prod    1000074) ; =>      61632
; (find-prod    1000075) ; =>      46224
; (find-prod    1000076) ; =>      13024
; (find-prod    1000077) ; =>       2848
; (find-prod    1000078) ; =>      22144
; (find-prod    1000079) ; =>      49376
; (find-prod    1000080) ; =>      95008
; (find-prod    1000081) ; =>      95648
; (find-prod    1000082) ; =>      43136
; (find-prod    1000083) ; =>      80288
; (find-prod    1000084) ; =>      44192
; (find-prod    1000085) ; =>      75632
; (find-prod    1000086) ; =>       4352
; (find-prod    1000087) ; =>      78624
; (find-prod    1000088) ; =>      18912
; (find-prod    1000089) ; =>      83168
; (find-prod    1000090) ; =>      48512
; (find-prod    1000091) ; =>      14592
; (find-prod    1000092) ; =>      42464
; (find-prod    1000093) ; =>      49152
; (find-prod    1000094) ; =>      20288
; (find-prod    1000095) ; =>      92736
; (find-prod    1000096) ; =>       2656
; (find-prod    1000097) ; =>      57632
; (find-prod    1000098) ; =>      47936
; (find-prod    1000099) ; =>      45664
; (find-prod    1000100) ; =>      45664
;;;; (lables ((tmp (lambda (ii) 		(format t "; (find-prod ~10d) ; ...
; in: LAMBDA NIL
;     ((TMP
;     (LAMBDA (II)
;       (FORMAT T "; (find-prod ~10d) ; => ~10d~&" II (FIND-PROD II)))))
; 
; caught ERROR:
;   illegal function call

;     (TMP 1000000)
; 
; note: deleting unreachable code
; in: LAMBDA NIL
;     (LABLES
;    ((TMP (LAMBDA (II) (FORMAT T "; (find-prod ~10d) ; => ~10d~&" II #))))
;    (TMP 1000000) (TMP 1100000) (TMP 1200000))
; 
; caught STYLE-WARNING:
;   undefined function: LABLES

;     (TMP 1000000)
; 
; caught STYLE-WARNING:
;   undefined function: TMP

; 
; caught STYLE-WARNING:
;   These functions are undefined:
;     LABLES TMP
; 
; compilation unit finished
;   caught 1 ERROR condition
;   caught 3 STYLE-WARNING conditions
;   printed 1 note
;;;; x ...
;;;; (labels ((tmp (lambda (ii) 		(format t "; (find-prod ~10d) ; ...
; in: LAMBDA NIL
;     (LABELS ((TMP (LAMBDA (II) (FORMAT T "; (find-prod ~10d) ; => ~10d~&" II #))
;              ))
;     (TMP 1000000)
;     (TMP 1100000)
;     (TMP 1200000))
; 
; caught ERROR:
;   Required argument is not a symbol: (II)
; 
; compilation unit finished
;   caught 1 ERROR condition
;;;; (labels ((tmp (ii) 	   (format t "; (find-prod ~10d) ; => ~1 ...
; (find-prod    1000000) ; =>      88576
; (find-prod    1100000) ; =>      45696
; (find-prod    1200000) ; =>      17216
;;;; (* 3 88576) ...
;;;; (* 3 88576) ...
;;;; 265728 ...
;;;; (* 6 88576) ...
;;;; (* 11 88576) ...
;;;; (* 11 88576) ...
;;;; (* 33 88576) ...
;;;; (labels ((tmp (ii) 	   (format t "; (find-prod ~10d) ; => ~1 ...
; (find-prod    1000000) ; =>      88576
; (find-prod    1100000) ; =>      45696
; (find-prod    1200000) ; =>      17216
;;;; (labels ((tmp (ii) 	   (format t "; (find-prod ~10d) ; => ~1 ...
; (find-prod    1000000) ; =>      88576
; (find-prod    2000000) ; =>       7776
; (find-prod    3000000) ; =>      66976
;;;; (labels ((tmp (ii) 	   (format t "; (find-prod ~10d) ; => ~1 ...
; (find-prod    1000000) ; =>      88576
; (find-prod    2000000) ; =>       7776
; (find-prod    3000000) ; =>      66976
; (find-prod    4000000) ; =>       6176
; (find-prod    5000000) ; =>      45376
;;;; (time (find-prod 10000000 100000 1000000)) ...
ii:1000000 prod:88576
ii:2000000 prod:7776
ii:3000000 prod:66976
ii:4000000 prod:6176
ii:5000000 prod:45376
ii:6000000 prod:24576
ii:7000000 prod:63776
ii:8000000 prod:2976
ii:9000000 prod:42176
ii:10000000 prod:61376
Evaluation took:
  16.576 seconds of real time
  14.464904 seconds of user run time
  0.072005 seconds of system run time
  [Run times include 1.229 seconds GC run time.]
  0 calls to %EVAL
  0 page faults and
  1,150,383,264 bytes consed.
;;;; (loop for ii from 1  to 1000       do       (format t "; (fi ...
; (find-prod          1) ; =>          1
; (find-prod          2) ; =>          2
; (find-prod          3) ; =>          6
; (find-prod          4) ; =>         24
; (find-prod          5) ; =>         12
; (find-prod          6) ; =>         72
; (find-prod          7) ; =>        504
; (find-prod          8) ; =>       4032
; (find-prod          9) ; =>      36288
; (find-prod         10) ; =>      36288
; (find-prod         11) ; =>      99168
; (find-prod         12) ; =>      90016
; (find-prod         13) ; =>      70208
; (find-prod         14) ; =>      82912
; (find-prod         15) ; =>      24368
; (find-prod         16) ; =>      89888
; (find-prod         17) ; =>      28096
; (find-prod         18) ; =>       5728
; (find-prod         19) ; =>       8832
; (find-prod         20) ; =>      17664
; (find-prod         21) ; =>      70944
; (find-prod         22) ; =>      60768
; (find-prod         23) ; =>      97664
; (find-prod         24) ; =>      43936
; (find-prod         25) ; =>      10984
; (find-prod         26) ; =>      85584
; (find-prod         27) ; =>      10768
; (find-prod         28) ; =>       1504
; (find-prod         29) ; =>      43616
; (find-prod         30) ; =>      30848
; (find-prod         31) ; =>      56288
; (find-prod         32) ; =>       1216
; (find-prod         33) ; =>      40128
; (find-prod         34) ; =>      64352
; (find-prod         35) ; =>      25232
; (find-prod         36) ; =>       8352
; (find-prod         37) ; =>       9024
; (find-prod         38) ; =>      42912
; (find-prod         39) ; =>      73568
; (find-prod         40) ; =>      94272
; (find-prod         41) ; =>      65152
; (find-prod         42) ; =>      36384
; (find-prod         43) ; =>      64512
; (find-prod         44) ; =>      38528
; (find-prod         45) ; =>      73376
; (find-prod         46) ; =>      75296
; (find-prod         47) ; =>      38912
; (find-prod         48) ; =>      67776
; (find-prod         49) ; =>      21024
; (find-prod         50) ; =>      10512
; (find-prod         51) ; =>      36112
; (find-prod         52) ; =>      77824
; (find-prod         53) ; =>      24672
; (find-prod         54) ; =>      32288
; (find-prod         55) ; =>      77584
; (find-prod         56) ; =>      44704
; (find-prod         57) ; =>      48128
; (find-prod         58) ; =>      91424
; (find-prod         59) ; =>      94016
; (find-prod         60) ; =>      64096
; (find-prod         61) ; =>       9856
; (find-prod         62) ; =>      11072
; (find-prod         63) ; =>      97536
; (find-prod         64) ; =>      42304
; (find-prod         65) ; =>      74976
; (find-prod         66) ; =>      48416
; (find-prod         67) ; =>      43872
; (find-prod         68) ; =>      83296
; (find-prod         69) ; =>      47424
; (find-prod         70) ; =>      31968
; (find-prod         71) ; =>      69728
; (find-prod         72) ; =>      20416
; (find-prod         73) ; =>      90368
; (find-prod         74) ; =>      87232
; (find-prod         75) ; =>      65424
; (find-prod         76) ; =>      72224
; (find-prod         77) ; =>      61248
; (find-prod         78) ; =>      77344
; (find-prod         79) ; =>      10176
; (find-prod         80) ; =>      81408
; (find-prod         81) ; =>      94048
; (find-prod         82) ; =>      11936
; (find-prod         83) ; =>      90688
; (find-prod         84) ; =>      17792
; (find-prod         85) ; =>      51232
; (find-prod         86) ; =>       5952
; (find-prod         87) ; =>      17824
; (find-prod         88) ; =>      68512
; (find-prod         89) ; =>      97568
; (find-prod         90) ; =>      78112
; (find-prod         91) ; =>       8192
; (find-prod         92) ; =>      53664
; (find-prod         93) ; =>      90752
; (find-prod         94) ; =>      30688
; (find-prod         95) ; =>      91536
; (find-prod         96) ; =>      87456
; (find-prod         97) ; =>      83232
; (find-prod         98) ; =>      56736
; (find-prod         99) ; =>      16864
; (find-prod        100) ; =>      16864
; (find-prod        101) ; =>       3264
; (find-prod        102) ; =>      32928
; (find-prod        103) ; =>      91584
; (find-prod        104) ; =>      24736
; (find-prod        105) ; =>      59728
; (find-prod        106) ; =>      31168
; (find-prod        107) ; =>      34976
; (find-prod        108) ; =>      77408
; (find-prod        109) ; =>      37472
; (find-prod        110) ; =>      12192
; (find-prod        111) ; =>      53312
; (find-prod        112) ; =>      70944
; (find-prod        113) ; =>      16672
; (find-prod        114) ; =>        608
; (find-prod        115) ; =>       6992
; (find-prod        116) ; =>      11072
; (find-prod        117) ; =>      95424
; (find-prod        118) ; =>      60032
; (find-prod        119) ; =>      43808
; (find-prod        120) ; =>      25696
; (find-prod        121) ; =>       9216
; (find-prod        122) ; =>      24352
; (find-prod        123) ; =>      95296
; (find-prod        124) ; =>      16704
; (find-prod        125) ; =>       2088
; (find-prod        126) ; =>      63088
; (find-prod        127) ; =>      12176
; (find-prod        128) ; =>      58528
; (find-prod        129) ; =>      50112
; (find-prod        130) ; =>      51456
; (find-prod        131) ; =>      40736
; (find-prod        132) ; =>      77152
; (find-prod        133) ; =>      61216
; (find-prod        134) ; =>       2944
; (find-prod        135) ; =>      39744
; (find-prod        136) ; =>       5184
; (find-prod        137) ; =>      10208
; (find-prod        138) ; =>       8704
; (find-prod        139) ; =>       9856
; (find-prod        140) ; =>      37984
; (find-prod        141) ; =>      55744
; (find-prod        142) ; =>      15648
; (find-prod        143) ; =>      37664
; (find-prod        144) ; =>      23616
; (find-prod        145) ; =>      42432
; (find-prod        146) ; =>      95072
; (find-prod        147) ; =>      75584
; (find-prod        148) ; =>      86432
; (find-prod        149) ; =>      78368
; (find-prod        150) ; =>      17552
; (find-prod        151) ; =>      50352
; (find-prod        152) ; =>      53504
; (find-prod        153) ; =>      86112
; (find-prod        154) ; =>      61248
; (find-prod        155) ; =>      49344
; (find-prod        156) ; =>      97664
; (find-prod        157) ; =>      33248
; (find-prod        158) ; =>      53184
; (find-prod        159) ; =>      56256
; (find-prod        160) ; =>         96
; (find-prod        161) ; =>      15456
; (find-prod        162) ; =>       3872
; (find-prod        163) ; =>      31136
; (find-prod        164) ; =>       6304
; (find-prod        165) ; =>       4016
; (find-prod        166) ; =>      66656
; (find-prod        167) ; =>      31552
; (find-prod        168) ; =>        736
; (find-prod        169) ; =>      24384
; (find-prod        170) ; =>      14528
; (find-prod        171) ; =>      84288
; (find-prod        172) ; =>      97536
; (find-prod        173) ; =>      73728
; (find-prod        174) ; =>      28672
; (find-prod        175) ; =>      50176
; (find-prod        176) ; =>      30976
; (find-prod        177) ; =>      82752
; (find-prod        178) ; =>      29856
; (find-prod        179) ; =>      44224
; (find-prod        180) ; =>      96032
; (find-prod        181) ; =>      81792
; (find-prod        182) ; =>      86144
; (find-prod        183) ; =>      64352
; (find-prod        184) ; =>      40768
; (find-prod        185) ; =>      54208
; (find-prod        186) ; =>      82688
; (find-prod        187) ; =>      62656
; (find-prod        188) ; =>      79328
; (find-prod        189) ; =>      92992
; (find-prod        190) ; =>      66848
; (find-prod        191) ; =>      67968
; (find-prod        192) ; =>      49856
; (find-prod        193) ; =>      22208
; (find-prod        194) ; =>       8352
; (find-prod        195) ; =>      62864
; (find-prod        196) ; =>      21344
; (find-prod        197) ; =>       4768
; (find-prod        198) ; =>      44064
; (find-prod        199) ; =>      68736
; (find-prod        200) ; =>      37472
; (find-prod        201) ; =>      31872
; (find-prod        202) ; =>      38144
; (find-prod        203) ; =>      43232
; (find-prod        204) ; =>      19328
; (find-prod        205) ; =>      96224
; (find-prod        206) ; =>      22144
; (find-prod        207) ; =>      83808
; (find-prod        208) ; =>      32064
; (find-prod        209) ; =>       1376
; (find-prod        210) ; =>      28896
; (find-prod        211) ; =>      97056
; (find-prod        212) ; =>      75872
; (find-prod        213) ; =>      60736
; (find-prod        214) ; =>      97504
; (find-prod        215) ; =>      96336
; (find-prod        216) ; =>       8576
; (find-prod        217) ; =>      60992
; (find-prod        218) ; =>      96256
; (find-prod        219) ; =>      80064
; (find-prod        220) ; =>      61408
; (find-prod        221) ; =>      71168
; (find-prod        222) ; =>      99296
; (find-prod        223) ; =>      43008
; (find-prod        224) ; =>      33792
; (find-prod        225) ; =>      76032
; (find-prod        226) ; =>      83232
; (find-prod        227) ; =>      93664
; (find-prod        228) ; =>      55392
; (find-prod        229) ; =>      84768
; (find-prod        230) ; =>      49664
; (find-prod        231) ; =>      72384
; (find-prod        232) ; =>      93088
; (find-prod        233) ; =>      89504
; (find-prod        234) ; =>      43936
; (find-prod        235) ; =>      32496
; (find-prod        236) ; =>      69056
; (find-prod        237) ; =>      66272
; (find-prod        238) ; =>      72736
; (find-prod        239) ; =>      83904
; (find-prod        240) ; =>      13696
; (find-prod        241) ; =>        736
; (find-prod        242) ; =>      78112
; (find-prod        243) ; =>      81216
; (find-prod        244) ; =>      16704
; (find-prod        245) ; =>       9248
; (find-prod        246) ; =>      75008
; (find-prod        247) ; =>      26976
; (find-prod        248) ; =>      90048
; (find-prod        249) ; =>      21952
; (find-prod        250) ; =>       5488
; (find-prod        251) ; =>      77488
; (find-prod        252) ; =>      26976
; (find-prod        253) ; =>      24928
; (find-prod        254) ; =>      31712
; (find-prod        255) ; =>       8656
; (find-prod        256) ; =>      15936
; (find-prod        257) ; =>      95552
; (find-prod        258) ; =>      52416
; (find-prod        259) ; =>      75744
; (find-prod        260) ; =>      69344
; (find-prod        261) ; =>      98784
; (find-prod        262) ; =>      81408
; (find-prod        263) ; =>      10304
; (find-prod        264) ; =>      20256
; (find-prod        265) ; =>      36784
; (find-prod        266) ; =>      84544
; (find-prod        267) ; =>      73248
; (find-prod        268) ; =>      30464
; (find-prod        269) ; =>      94816
; (find-prod        270) ; =>      60032
; (find-prod        271) ; =>      68672
; (find-prod        272) ; =>      78784
; (find-prod        273) ; =>       8032
; (find-prod        274) ; =>        768
; (find-prod        275) ; =>       2112
; (find-prod        276) ; =>      82912
; (find-prod        277) ; =>      66624
; (find-prod        278) ; =>      21472
; (find-prod        279) ; =>      90688
; (find-prod        280) ; =>      39264
; (find-prod        281) ; =>      33184
; (find-prod        282) ; =>      57888
; (find-prod        283) ; =>      82304
; (find-prod        284) ; =>      74336
; (find-prod        285) ; =>      18576
; (find-prod        286) ; =>      12736
; (find-prod        287) ; =>      55232
; (find-prod        288) ; =>       6816
; (find-prod        289) ; =>      69824
; (find-prod        290) ; =>      24896
; (find-prod        291) ; =>      44736
; (find-prod        292) ; =>      62912
; (find-prod        293) ; =>      33216
; (find-prod        294) ; =>      65504
; (find-prod        295) ; =>      32368
; (find-prod        296) ; =>      80928
; (find-prod        297) ; =>      35616
; (find-prod        298) ; =>      13568
; (find-prod        299) ; =>      56832
; (find-prod        300) ; =>      70496
; (find-prod        301) ; =>      19296
; (find-prod        302) ; =>      27392
; (find-prod        303) ; =>      99776
; (find-prod        304) ; =>      31904
; (find-prod        305) ; =>      73072
; (find-prod        306) ; =>      60032
; (find-prod        307) ; =>      29824
; (find-prod        308) ; =>      85792
; (find-prod        309) ; =>       9728
; (find-prod        310) ; =>       1568
; (find-prod        311) ; =>      87648
; (find-prod        312) ; =>      46176
; (find-prod        313) ; =>      53088
; (find-prod        314) ; =>      69632
; (find-prod        315) ; =>      93408
; (find-prod        316) ; =>      16928
; (find-prod        317) ; =>      66176
; (find-prod        318) ; =>      43968
; (find-prod        319) ; =>      25792
; (find-prod        320) ; =>      25344
; (find-prod        321) ; =>      35424
; (find-prod        322) ; =>       6528
; (find-prod        323) ; =>       8544
; (find-prod        324) ; =>      68256
; (find-prod        325) ; =>      21832
; (find-prod        326) ; =>      17232
; (find-prod        327) ; =>      34864
; (find-prod        328) ; =>      35392
; (find-prod        329) ; =>      43968
; (find-prod        330) ; =>      50944
; (find-prod        331) ; =>      62464
; (find-prod        332) ; =>      38048
; (find-prod        333) ; =>      69984
; (find-prod        334) ; =>      74656
; (find-prod        335) ; =>        976
; (find-prod        336) ; =>      27936
; (find-prod        337) ; =>      14432
; (find-prod        338) ; =>      78016
; (find-prod        339) ; =>      47424
; (find-prod        340) ; =>      12416
; (find-prod        341) ; =>      33856
; (find-prod        342) ; =>      78752
; (find-prod        343) ; =>      11936
; (find-prod        344) ; =>       5984
; (find-prod        345) ; =>       6448
; (find-prod        346) ; =>      31008
; (find-prod        347) ; =>      59776
; (find-prod        348) ; =>       2048
; (find-prod        349) ; =>      14752
; (find-prod        350) ; =>      51632
; (find-prod        351) ; =>      22832
; (find-prod        352) ; =>      36864
; (find-prod        353) ; =>      12992
; (find-prod        354) ; =>      99168
; (find-prod        355) ; =>      20464
; (find-prod        356) ; =>      85184
; (find-prod        357) ; =>      10688
; (find-prod        358) ; =>      26304
; (find-prod        359) ; =>      43136
; (find-prod        360) ; =>      52896
; (find-prod        361) ; =>      95456
; (find-prod        362) ; =>      55072
; (find-prod        363) ; =>      91136
; (find-prod        364) ; =>      73504
; (find-prod        365) ; =>      82896
; (find-prod        366) ; =>      39936
; (find-prod        367) ; =>      56512
; (find-prod        368) ; =>      96416
; (find-prod        369) ; =>      77504
; (find-prod        370) ; =>      67648
; (find-prod        371) ; =>      97408
; (find-prod        372) ; =>      35776
; (find-prod        373) ; =>      44448
; (find-prod        374) ; =>      23552
; (find-prod        375) ; =>       8832
; (find-prod        376) ; =>      20832
; (find-prod        377) ; =>      53664
; (find-prod        378) ; =>      84992
; (find-prod        379) ; =>      11968
; (find-prod        380) ; =>      54784
; (find-prod        381) ; =>      72704
; (find-prod        382) ; =>      72928
; (find-prod        383) ; =>      31424
; (find-prod        384) ; =>      66816
; (find-prod        385) ; =>      72416
; (find-prod        386) ; =>      52576
; (find-prod        387) ; =>      46912
; (find-prod        388) ; =>       1856
; (find-prod        389) ; =>      21984
; (find-prod        390) ; =>      57376
; (find-prod        391) ; =>      34016
; (find-prod        392) ; =>      34272
; (find-prod        393) ; =>      68896
; (find-prod        394) ; =>      45024
; (find-prod        395) ; =>      78448
; (find-prod        396) ; =>      65408
; (find-prod        397) ; =>      66976
; (find-prod        398) ; =>      56448
; (find-prod        399) ; =>      22752
; (find-prod        400) ; =>      91008
; (find-prod        401) ; =>      94208
; (find-prod        402) ; =>      71616
; (find-prod        403) ; =>      61248
; (find-prod        404) ; =>      44192
; (find-prod        405) ; =>      89776
; (find-prod        406) ; =>      49056
; (find-prod        407) ; =>      65792
; (find-prod        408) ; =>      43136
; (find-prod        409) ; =>      42624
; (find-prod        410) ; =>      47584
; (find-prod        411) ; =>      57024
; (find-prod        412) ; =>      93888
; (find-prod        413) ; =>      75744
; (find-prod        414) ; =>      58016
; (find-prod        415) ; =>       7664
; (find-prod        416) ; =>      88224
; (find-prod        417) ; =>      89408
; (find-prod        418) ; =>      72544
; (find-prod        419) ; =>      95936
; (find-prod        420) ; =>      29312
; (find-prod        421) ; =>      40352
; (find-prod        422) ; =>      28544
; (find-prod        423) ; =>      74112
; (find-prod        424) ; =>      23488
; (find-prod        425) ; =>      99824
; (find-prod        426) ; =>      25024
; (find-prod        427) ; =>      85248
; (find-prod        428) ; =>      86144
; (find-prod        429) ; =>      55776
; (find-prod        430) ; =>      98368
; (find-prod        431) ; =>      96608
; (find-prod        432) ; =>      34656
; (find-prod        433) ; =>       6048
; (find-prod        434) ; =>      24832
; (find-prod        435) ; =>      80192
; (find-prod        436) ; =>      63712
; (find-prod        437) ; =>      42144
; (find-prod        438) ; =>      59072
; (find-prod        439) ; =>      32608
; (find-prod        440) ; =>      34752
; (find-prod        441) ; =>      25632
; (find-prod        442) ; =>      29344
; (find-prod        443) ; =>      99392
; (find-prod        444) ; =>      30048
; (find-prod        445) ; =>      37136
; (find-prod        446) ; =>      62656
; (find-prod        447) ; =>       7232
; (find-prod        448) ; =>      39936
; (find-prod        449) ; =>      31264
; (find-prod        450) ; =>      40688
; (find-prod        451) ; =>      50288
; (find-prod        452) ; =>      30176
; (find-prod        453) ; =>      69728
; (find-prod        454) ; =>      56512
; (find-prod        455) ; =>      71296
; (find-prod        456) ; =>      10976
; (find-prod        457) ; =>      16032
; (find-prod        458) ; =>      42656
; (find-prod        459) ; =>      79104
; (find-prod        460) ; =>      38784
; (find-prod        461) ; =>      79424
; (find-prod        462) ; =>      93888
; (find-prod        463) ; =>      70144
; (find-prod        464) ; =>      46816
; (find-prod        465) ; =>      76944
; (find-prod        466) ; =>      55904
; (find-prod        467) ; =>       7168
; (find-prod        468) ; =>      54624
; (find-prod        469) ; =>      18656
; (find-prod        470) ; =>      76832
; (find-prod        471) ; =>      87872
; (find-prod        472) ; =>      75584
; (find-prod        473) ; =>      51232
; (find-prod        474) ; =>      83968
; (find-prod        475) ; =>      98848
; (find-prod        476) ; =>      51648
; (find-prod        477) ; =>      36096
; (find-prod        478) ; =>      53888
; (find-prod        479) ; =>      12352
; (find-prod        480) ; =>      92896
; (find-prod        481) ; =>      82976
; (find-prod        482) ; =>      94432
; (find-prod        483) ; =>      10656
; (find-prod        484) ; =>      57504
; (find-prod        485) ; =>      88944
; (find-prod        486) ; =>      26784
; (find-prod        487) ; =>      43808
; (find-prod        488) ; =>      78304
; (find-prod        489) ; =>      90656
; (find-prod        490) ; =>      42144
; (find-prod        491) ; =>      92704
; (find-prod        492) ; =>      10368
; (find-prod        493) ; =>      11424
; (find-prod        494) ; =>      43456
; (find-prod        495) ; =>      51072
; (find-prod        496) ; =>      31712
; (find-prod        497) ; =>      60864
; (find-prod        498) ; =>      10272
; (find-prod        499) ; =>      25728
; (find-prod        500) ; =>      12864
; (find-prod        501) ; =>      44864
; (find-prod        502) ; =>      21728
; (find-prod        503) ; =>      29184
; (find-prod        504) ; =>       8736
; (find-prod        505) ; =>      41168
; (find-prod        506) ; =>      31008
; (find-prod        507) ; =>      21056
; (find-prod        508) ; =>      96448
; (find-prod        509) ; =>      92032
; (find-prod        510) ; =>      93632
; (find-prod        511) ; =>      45952
; (find-prod        512) ; =>      27424
; (find-prod        513) ; =>      68512
; (find-prod        514) ; =>      15168
; (find-prod        515) ; =>      81152
; (find-prod        516) ; =>      74432
; (find-prod        517) ; =>      81344
; (find-prod        518) ; =>      36192
; (find-prod        519) ; =>      83648
; (find-prod        520) ; =>      49696
; (find-prod        521) ; =>      91616
; (find-prod        522) ; =>      23552
; (find-prod        523) ; =>      17696
; (find-prod        524) ; =>      72704
; (find-prod        525) ; =>      81696
; (find-prod        526) ; =>      72096
; (find-prod        527) ; =>      94592
; (find-prod        528) ; =>      44576
; (find-prod        529) ; =>      80704
; (find-prod        530) ; =>      77312
; (find-prod        531) ; =>      52672
; (find-prod        532) ; =>      21504
; (find-prod        533) ; =>      61632
; (find-prod        534) ; =>      11488
; (find-prod        535) ; =>      14608
; (find-prod        536) ; =>      29888
; (find-prod        537) ; =>      49856
; (find-prod        538) ; =>      22528
; (find-prod        539) ; =>      42592
; (find-prod        540) ; =>      99968
; (find-prod        541) ; =>      82688
; (find-prod        542) ; =>      16896
; (find-prod        543) ; =>      74528
; (find-prod        544) ; =>      43232
; (find-prod        545) ; =>      56144
; (find-prod        546) ; =>      54624
; (find-prod        547) ; =>      79328
; (find-prod        548) ; =>      71744
; (find-prod        549) ; =>      87456
; (find-prod        550) ; =>      81008
; (find-prod        551) ; =>      35408
; (find-prod        552) ; =>      45216
; (find-prod        553) ; =>       4448
; (find-prod        554) ; =>      64192
; (find-prod        555) ; =>      62656
; (find-prod        556) ; =>      36736
; (find-prod        557) ; =>      61952
; (find-prod        558) ; =>      69216
; (find-prod        559) ; =>      91744
; (find-prod        560) ; =>      37664
; (find-prod        561) ; =>      29504
; (find-prod        562) ; =>      81248
; (find-prod        563) ; =>      42624
; (find-prod        564) ; =>      39936
; (find-prod        565) ; =>      56384
; (find-prod        566) ; =>      13344
; (find-prod        567) ; =>      66048
; (find-prod        568) ; =>      15264
; (find-prod        569) ; =>      85216
; (find-prod        570) ; =>      57312
; (find-prod        571) ; =>      25152
; (find-prod        572) ; =>      86944
; (find-prod        573) ; =>      18912
; (find-prod        574) ; =>      55488
; (find-prod        575) ; =>      19056
; (find-prod        576) ; =>      76256
; (find-prod        577) ; =>      99712
; (find-prod        578) ; =>      33536
; (find-prod        579) ; =>      17344
; (find-prod        580) ; =>       5952
; (find-prod        581) ; =>      58112
; (find-prod        582) ; =>      21184
; (find-prod        583) ; =>      50272
; (find-prod        584) ; =>      58848
; (find-prod        585) ; =>      42608
; (find-prod        586) ; =>      68288
; (find-prod        587) ; =>      85056
; (find-prod        588) ; =>      12928
; (find-prod        589) ; =>      14592
; (find-prod        590) ; =>      60928
; (find-prod        591) ; =>       8448
; (find-prod        592) ; =>       1216
; (find-prod        593) ; =>      21088
; (find-prod        594) ; =>      26272
; (find-prod        595) ; =>      63184
; (find-prod        596) ; =>      57664
; (find-prod        597) ; =>      25408
; (find-prod        598) ; =>      93984
; (find-prod        599) ; =>      96416
; (find-prod        600) ; =>      78496
; (find-prod        601) ; =>      76096
; (find-prod        602) ; =>       9792
; (find-prod        603) ; =>       4576
; (find-prod        604) ; =>      63904
; (find-prod        605) ; =>      66192
; (find-prod        606) ; =>      12352
; (find-prod        607) ; =>      97664
; (find-prod        608) ; =>      79712
; (find-prod        609) ; =>      44608
; (find-prod        610) ; =>      21088
; (find-prod        611) ; =>      84768
; (find-prod        612) ; =>      78016
; (find-prod        613) ; =>      23808
; (find-prod        614) ; =>      18112
; (find-prod        615) ; =>      13888
; (find-prod        616) ; =>      55008
; (find-prod        617) ; =>      39936
; (find-prod        618) ; =>      80448
; (find-prod        619) ; =>      97312
; (find-prod        620) ; =>      33344
; (find-prod        621) ; =>       6624
; (find-prod        622) ; =>      20128
; (find-prod        623) ; =>      39744
; (find-prod        624) ; =>        256
; (find-prod        625) ; =>         16
; (find-prod        626) ; =>      10016
; (find-prod        627) ; =>      80032
; (find-prod        628) ; =>      60096
; (find-prod        629) ; =>        384
; (find-prod        630) ; =>      24192
; (find-prod        631) ; =>      65152
; (find-prod        632) ; =>      76064
; (find-prod        633) ; =>      48512
; (find-prod        634) ; =>      56608
; (find-prod        635) ; =>      94608
; (find-prod        636) ; =>      70688
; (find-prod        637) ; =>      28256
; (find-prod        638) ; =>      27328
; (find-prod        639) ; =>      62592
; (find-prod        640) ; =>       5888
; (find-prod        641) ; =>      74208
; (find-prod        642) ; =>      41536
; (find-prod        643) ; =>       7648
; (find-prod        644) ; =>      25312
; (find-prod        645) ; =>      32624
; (find-prod        646) ; =>      75104
; (find-prod        647) ; =>      92288
; (find-prod        648) ; =>       2624
; (find-prod        649) ; =>       2976
; (find-prod        650) ; =>      19344
; (find-prod        651) ; =>      92944
; (find-prod        652) ; =>      99488
; (find-prod        653) ; =>      65664
; (find-prod        654) ; =>      44256
; (find-prod        655) ; =>      98768
; (find-prod        656) ; =>      91808
; (find-prod        657) ; =>      17856
; (find-prod        658) ; =>      49248
; (find-prod        659) ; =>      54432
; (find-prod        660) ; =>      92512
; (find-prod        661) ; =>      50432
; (find-prod        662) ; =>      85984
; (find-prod        663) ; =>       7392
; (find-prod        664) ; =>       8288
; (find-prod        665) ; =>      51152
; (find-prod        666) ; =>      67232
; (find-prod        667) ; =>      43744
; (find-prod        668) ; =>      20992
; (find-prod        669) ; =>      43648
; (find-prod        670) ; =>      24416
; (find-prod        671) ; =>      83136
; (find-prod        672) ; =>      67392
; (find-prod        673) ; =>      54816
; (find-prod        674) ; =>      45984
; (find-prod        675) ; =>      10392
; (find-prod        676) ; =>      24992
; (find-prod        677) ; =>      19584
; (find-prod        678) ; =>      77952
; (find-prod        679) ; =>      29408
; (find-prod        680) ; =>      99744
; (find-prod        681) ; =>      25664
; (find-prod        682) ; =>       2848
; (find-prod        683) ; =>      45184
; (find-prod        684) ; =>       5856
; (find-prod        685) ; =>       1136
; (find-prod        686) ; =>      79296
; (find-prod        687) ; =>      76352
; (find-prod        688) ; =>      30176
; (find-prod        689) ; =>      91264
; (find-prod        690) ; =>      97216
; (find-prod        691) ; =>      76256
; (find-prod        692) ; =>      69152
; (find-prod        693) ; =>      22336
; (find-prod        694) ; =>       1184
; (find-prod        695) ; =>      82288
; (find-prod        696) ; =>      72448
; (find-prod        697) ; =>      96256
; (find-prod        698) ; =>      86688
; (find-prod        699) ; =>      94912
; (find-prod        700) ; =>      64384
; (find-prod        701) ; =>      33184
; (find-prod        702) ; =>      95168
; (find-prod        703) ; =>       3104
; (find-prod        704) ; =>      85216
; (find-prod        705) ; =>       7728
; (find-prod        706) ; =>      55968
; (find-prod        707) ; =>      69376
; (find-prod        708) ; =>      18208
; (find-prod        709) ; =>       9472
; (find-prod        710) ; =>      72512
; (find-prod        711) ; =>      56032
; (find-prod        712) ; =>      94784
; (find-prod        713) ; =>      80992
; (find-prod        714) ; =>      28288
; (find-prod        715) ; =>      22592
; (find-prod        716) ; =>      75872
; (find-prod        717) ; =>        224
; (find-prod        718) ; =>      60832
; (find-prod        719) ; =>      38208
; (find-prod        720) ; =>      50976
; (find-prod        721) ; =>      53696
; (find-prod        722) ; =>      68512
; (find-prod        723) ; =>      34176
; (find-prod        724) ; =>      43424
; (find-prod        725) ; =>      14824
; (find-prod        726) ; =>      62224
; (find-prod        727) ; =>      36848
; (find-prod        728) ; =>      25344
; (find-prod        729) ; =>      75776
; (find-prod        730) ; =>      31648
; (find-prod        731) ; =>      34688
; (find-prod        732) ; =>      91616
; (find-prod        733) ; =>      54528
; (find-prod        734) ; =>      23552
; (find-prod        735) ; =>      31072
; (find-prod        736) ; =>      68992
; (find-prod        737) ; =>      47104
; (find-prod        738) ; =>      62752
; (find-prod        739) ; =>      73728
; (find-prod        740) ; =>      55872
; (find-prod        741) ; =>       1152
; (find-prod        742) ; =>      54784
; (find-prod        743) ; =>       4512
; (find-prod        744) ; =>      56928
; (find-prod        745) ; =>      41136
; (find-prod        746) ; =>      87456
; (find-prod        747) ; =>      29632
; (find-prod        748) ; =>      64736
; (find-prod        749) ; =>      87264
; (find-prod        750) ; =>      65448
; (find-prod        751) ; =>      51448
; (find-prod        752) ; =>      88896
; (find-prod        753) ; =>      38688
; (find-prod        754) ; =>      70752
; (find-prod        755) ; =>      41776
; (find-prod        756) ; =>      82656
; (find-prod        757) ; =>      70592
; (find-prod        758) ; =>       8736
; (find-prod        759) ; =>      30624
; (find-prod        760) ; =>      27424
; (find-prod        761) ; =>      69664
; (find-prod        762) ; =>      83968
; (find-prod        763) ; =>      67584
; (find-prod        764) ; =>      34176
; (find-prod        765) ; =>      14464
; (find-prod        766) ; =>      79424
; (find-prod        767) ; =>      18208
; (find-prod        768) ; =>      83744
; (find-prod        769) ; =>      99136
; (find-prod        770) ; =>      33472
; (find-prod        771) ; =>       6912
; (find-prod        772) ; =>      36064
; (find-prod        773) ; =>      77472
; (find-prod        774) ; =>      63328
; (find-prod        775) ; =>      90792
; (find-prod        776) ; =>      54592
; (find-prod        777) ; =>      17984
; (find-prod        778) ; =>      91552
; (find-prod        779) ; =>      19008
; (find-prod        780) ; =>      82624
; (find-prod        781) ; =>      29344
; (find-prod        782) ; =>      47008
; (find-prod        783) ; =>       7264
; (find-prod        784) ; =>      94976
; (find-prod        785) ; =>      55616
; (find-prod        786) ; =>      14176
; (find-prod        787) ; =>      56512
; (find-prod        788) ; =>      31456
; (find-prod        789) ; =>      18784
; (find-prod        790) ; =>      83936
; (find-prod        791) ; =>      93376
; (find-prod        792) ; =>      53792
; (find-prod        793) ; =>      57056
; (find-prod        794) ; =>       2464
; (find-prod        795) ; =>      95888
; (find-prod        796) ; =>      26848
; (find-prod        797) ; =>      97856
; (find-prod        798) ; =>      89088
; (find-prod        799) ; =>      81312
; (find-prod        800) ; =>      50496
; (find-prod        801) ; =>      47296
; (find-prod        802) ; =>      31392
; (find-prod        803) ; =>       7776
; (find-prod        804) ; =>      51904
; (find-prod        805) ; =>      78272
; (find-prod        806) ; =>      87232
; (find-prod        807) ; =>      96224
; (find-prod        808) ; =>      48992
; (find-prod        809) ; =>      34528
; (find-prod        810) ; =>      96768
; (find-prod        811) ; =>      78848
; (find-prod        812) ; =>      24576
; (find-prod        813) ; =>      80288
; (find-prod        814) ; =>      54432
; (find-prod        815) ; =>      36208
; (find-prod        816) ; =>      45728
; (find-prod        817) ; =>      59776
; (find-prod        818) ; =>      96768
; (find-prod        819) ; =>      52992
; (find-prod        820) ; =>      45344
; (find-prod        821) ; =>      27424
; (find-prod        822) ; =>      42528
; (find-prod        823) ; =>        544
; (find-prod        824) ; =>      48256
; (find-prod        825) ; =>      98112
; (find-prod        826) ; =>      40512
; (find-prod        827) ; =>       3424
; (find-prod        828) ; =>      35072
; (find-prod        829) ; =>      74688
; (find-prod        830) ; =>      99104
; (find-prod        831) ; =>      55424
; (find-prod        832) ; =>      12768
; (find-prod        833) ; =>      35744
; (find-prod        834) ; =>      10496
; (find-prod        835) ; =>      76416
; (find-prod        836) ; =>      83776
; (find-prod        837) ; =>      20512
; (find-prod        838) ; =>      89056
; (find-prod        839) ; =>      17984
; (find-prod        840) ; =>      10656
; (find-prod        841) ; =>      61696
; (find-prod        842) ; =>      48032
; (find-prod        843) ; =>      90976
; (find-prod        844) ; =>      83744
; (find-prod        845) ; =>      76368
; (find-prod        846) ; =>       7328
; (find-prod        847) ; =>       6816
; (find-prod        848) ; =>      79968
; (find-prod        849) ; =>      92832
; (find-prod        850) ; =>      89072
; (find-prod        851) ; =>        272
; (find-prod        852) ; =>      31744
; (find-prod        853) ; =>      77632
; (find-prod        854) ; =>      97728
; (find-prod        855) ; =>      55744
; (find-prod        856) ; =>      16864
; (find-prod        857) ; =>      52448
; (find-prod        858) ; =>        384
; (find-prod        859) ; =>      29856
; (find-prod        860) ; =>      67616
; (find-prod        861) ; =>      17376
; (find-prod        862) ; =>      78112
; (find-prod        863) ; =>      10656
; (find-prod        864) ; =>       6784
; (find-prod        865) ; =>      86816
; (find-prod        866) ; =>      82656
; (find-prod        867) ; =>      62752
; (find-prod        868) ; =>      68736
; (find-prod        869) ; =>      31584
; (find-prod        870) ; =>      47808
; (find-prod        871) ; =>      40768
; (find-prod        872) ; =>      49696
; (find-prod        873) ; =>      84608
; (find-prod        874) ; =>      47392
; (find-prod        875) ; =>      41468
; (find-prod        876) ; =>      25968
; (find-prod        877) ; =>      73936
; (find-prod        878) ; =>      15808
; (find-prod        879) ; =>      95232
; (find-prod        880) ; =>      80416
; (find-prod        881) ; =>      46496
; (find-prod        882) ; =>       9472
; (find-prod        883) ; =>      63776
; (find-prod        884) ; =>      77984
; (find-prod        885) ; =>       1584
; (find-prod        886) ; =>       3424
; (find-prod        887) ; =>      37088
; (find-prod        888) ; =>      34144
; (find-prod        889) ; =>      54016
; (find-prod        890) ; =>       7424
; (find-prod        891) ; =>      14784
; (find-prod        892) ; =>      87328
; (find-prod        893) ; =>      83904
; (find-prod        894) ; =>      10176
; (find-prod        895) ; =>      10752
; (find-prod        896) ; =>      33792
; (find-prod        897) ; =>      11424
; (find-prod        898) ; =>      58752
; (find-prod        899) ; =>      18048
; (find-prod        900) ; =>      62432
; (find-prod        901) ; =>      51232
; (find-prod        902) ; =>      11264
; (find-prod        903) ; =>      71392
; (find-prod        904) ; =>      38368
; (find-prod        905) ; =>      72304
; (find-prod        906) ; =>       7424
; (find-prod        907) ; =>      33568
; (find-prod        908) ; =>      79744
; (find-prod        909) ; =>      87296
; (find-prod        910) ; =>      43936
; (find-prod        911) ; =>      25696
; (find-prod        912) ; =>      34752
; (find-prod        913) ; =>      28576
; (find-prod        914) ; =>      18464
; (find-prod        915) ; =>      89456
; (find-prod        916) ; =>      41696
; (find-prod        917) ; =>      35232
; (find-prod        918) ; =>      42976
; (find-prod        919) ; =>      94944
; (find-prod        920) ; =>      34848
; (find-prod        921) ; =>      95008
; (find-prod        922) ; =>      97376
; (find-prod        923) ; =>      78048
; (find-prod        924) ; =>      16352
; (find-prod        925) ; =>      51256
; (find-prod        926) ; =>      63056
; (find-prod        927) ; =>      52912
; (find-prod        928) ; =>       2336
; (find-prod        929) ; =>      70144
; (find-prod        930) ; =>      23392
; (find-prod        931) ; =>      77952
; (find-prod        932) ; =>      51264
; (find-prod        933) ; =>      29312
; (find-prod        934) ; =>      77408
; (find-prod        935) ; =>      37648
; (find-prod        936) ; =>      38528
; (find-prod        937) ; =>        736
; (find-prod        938) ; =>      90368
; (find-prod        939) ; =>      55552
; (find-prod        940) ; =>      21888
; (find-prod        941) ; =>      96608
; (find-prod        942) ; =>       4736
; (find-prod        943) ; =>      66048
; (find-prod        944) ; =>      49312
; (find-prod        945) ; =>      59984
; (find-prod        946) ; =>      44864
; (find-prod        947) ; =>      86208
; (find-prod        948) ; =>      25184
; (find-prod        949) ; =>      99616
; (find-prod        950) ; =>      46352
; (find-prod        951) ; =>      80752
; (find-prod        952) ; =>      75904
; (find-prod        953) ; =>      36512
; (find-prod        954) ; =>      32448
; (find-prod        955) ; =>      98784
; (find-prod        956) ; =>      37504
; (find-prod        957) ; =>      91328
; (find-prod        958) ; =>      92224
; (find-prod        959) ; =>      42816
; (find-prod        960) ; =>      10336
; (find-prod        961) ; =>      32896
; (find-prod        962) ; =>      45952
; (find-prod        963) ; =>      51776
; (find-prod        964) ; =>      12064
; (find-prod        965) ; =>      64176
; (find-prod        966) ; =>      94016
; (find-prod        967) ; =>      13472
; (find-prod        968) ; =>      40896
; (find-prod        969) ; =>      28224
; (find-prod        970) ; =>      37728
; (find-prod        971) ; =>      33888
; (find-prod        972) ; =>      39136
; (find-prod        973) ; =>      79328
; (find-prod        974) ; =>      65472
; (find-prod        975) ; =>      38352
; (find-prod        976) ; =>      31552
; (find-prod        977) ; =>      26304
; (find-prod        978) ; =>      25312
; (find-prod        979) ; =>      80448
; (find-prod        980) ; =>      83904
; (find-prod        981) ; =>       9824
; (find-prod        982) ; =>      47168
; (find-prod        983) ; =>      66144
; (find-prod        984) ; =>      85696
; (find-prod        985) ; =>      41056
; (find-prod        986) ; =>      81216
; (find-prod        987) ; =>      60192
; (find-prod        988) ; =>      69696
; (find-prod        989) ; =>      29344
; (find-prod        990) ; =>       5056
; (find-prod        991) ; =>      10496
; (find-prod        992) ; =>      12032
; (find-prod        993) ; =>      47776
; (find-prod        994) ; =>      89344
; (find-prod        995) ; =>      89728
; (find-prod        996) ; =>      69088
; (find-prod        997) ; =>      80736
; (find-prod        998) ; =>      74528
; (find-prod        999) ; =>      53472
; (find-prod       1000) ; =>      53472
;;;; (with-open-file (out "/home/mortis/personal/projects/project ...

CL-USER> 3
3
;;;; (/ 2814 1337) ...
;;;; (/ 5124 2814) ...
;;;; (/ 5124 2814) ...
;;;; (/ 2814 1337) ...
;;;; (/ 9743 5124) ...
;;;; (- 2814 1337) ...
;;;; (- 5124 2814) ...
;;;; (- 9743 5124) ...
;;;; (loop for ii in (9 99 999 9999 99999)       do       (format ...
; in: LAMBDA NIL
;     (9 99 999 9999 99999)
; 
; caught ERROR:
;   illegal function call

;     (LET ((II NIL) (#:LOOP-LIST-1797 (9 99 999 9999 99999)))
;     (DECLARE (TYPE LIST #:LOOP-LIST-1797))
;     (SB-LOOP::LOOP-BODY NIL
;                         ((WHEN (ENDP #:LOOP-LIST-1797) (GO SB-LOOP::END-LOOP))
;                          (SB-LOOP::LOOP-REALLY-DESETQ II
;                                                       (CAR #:LOOP-LIST-1797))
;                          NIL
;                          (SB-LOOP::LOOP-REALLY-DESETQ #:LOOP-LIST-1797
;                                                       (CDR #:LOOP-LIST-1797)))
;                         ((FORMAT OUT "; (find-prod ~10d) ; => ~10d~&" II
;                                  (FIND-PROD II)))
;                         ((WHEN (ENDP #:LOOP-LIST-1797) (GO SB-LOOP::END-LOOP))
;                          (SB-LOOP::LOOP-REALLY-DESETQ II
;                                                       (CAR #:LOOP-LIST-1797))
;                          NIL
;                          (SB-LOOP::LOOP-REALLY-DESETQ #:LOOP-LIST-1797
;                                                       (CDR #:LOOP-LIST-1797)))
;                         NIL))
; 
; note: deleting unreachable code

;     (CAR #:LOOP-LIST-1797)
; 
; note: deleting unreachable code

;     (GO SB-LOOP::END-LOOP)
; 
; note: deleting unreachable code

;     (LET ((II NIL) (#:LOOP-LIST-1797 (9 99 999 9999 99999)))
;     (DECLARE (TYPE LIST #:LOOP-LIST-1797))
;     (SB-LOOP::LOOP-BODY NIL
;                         ((WHEN (ENDP #:LOOP-LIST-1797) (GO SB-LOOP::END-LOOP))
;                          (SB-LOOP::LOOP-REALLY-DESETQ II
;                                                       (CAR #:LOOP-LIST-1797))
;                          NIL
;                          (SB-LOOP::LOOP-REALLY-DESETQ #:LOOP-LIST-1797
;                                                       (CDR #:LOOP-LIST-1797)))
;                         ((FORMAT OUT "; (find-prod ~10d) ; => ~10d~&" II
;                                  (FIND-PROD II)))
;                         ((WHEN (ENDP #:LOOP-LIST-1797) (GO SB-LOOP::END-LOOP))
;                          (SB-LOOP::LOOP-REALLY-DESETQ II
;                                                       (CAR #:LOOP-LIST-1797))
;                          NIL
;                          (SB-LOOP::LOOP-REALLY-DESETQ #:LOOP-LIST-1797
;                                                       (CDR #:LOOP-LIST-1797)))
;                         NIL))
; 
; note: deleting unreachable code

; in: LAMBDA NIL
;     (FORMAT OUT "; (find-prod ~10d) ; => ~10d~&" II (FIND-PROD II))
; 
; caught WARNING:
;   undefined variable: OUT

; 
; caught WARNING:
;   This variable is undefined:
;     OUT
; 
; compilation unit finished
;   caught 1 ERROR condition
;   caught 2 WARNING conditions
;   printed 4 notes
;;;; (loop for ii in '(9 99 999 9999 99999)       do       (forma ...

; in: LAMBDA NIL
;     (FORMAT OUT "; (find-prod ~10d) ; => ~10d~&" II (FIND-PROD II))
; 
; caught WARNING:
;   undefined variable: OUT

; 
; caught WARNING:
;   This variable is undefined:
;     OUT
; 
; compilation unit finished
;   caught 2 WARNING conditions
;;;; (loop for ii in '(9 99 999 9999 99999)       do       (forma ...
; (find-prod          9) ; =>      36288
; (find-prod         99) ; =>      16864
; (find-prod        999) ; =>      53472
; (find-prod       9999) ; =>      79008
; (find-prod      99999) ; =>       2496
;;;; (loop for ii in '(9 99 999 9999 99999 999999 9999990)        ...
; (find-prod          9) ; =>      36288
; (find-prod         99) ; =>      16864
; (find-prod        999) ; =>      53472
; (find-prod       9999) ; =>      79008
; (find-prod      99999) ; =>       2496
; (find-prod     999999) ; =>      88576
; (find-prod    9999990) ; =>      83648
;;;; (* 2 36288) ...
;;;; (loop for ii in '(9  		  99 		  999 		  9999 		  99999 		  9 ...
; (find-prod          9) ; =>      36288
; (find-prod         99) ; =>      16864
; (find-prod        999) ; =>      53472
; (find-prod       9999) ; =>      79008
; (find-prod      99999) ; =>       2496
; (find-prod     999999) ; =>      88576
; (find-prod    9999999) ; =>      61376
CL-USER> 3
3
;;;; (loop for ii in '(9  		  90 		  990 		  9990 		  99990 		  9 ...
; (find-prod          9) ; =>      36288
; (find-prod         90) ; =>      78112
; (find-prod        990) ; =>       5056
; (find-prod       9990) ; =>      81184
; (find-prod      99990) ; =>      69408
; (find-prod     999990) ; =>       9248
; (find-prod    9999990) ; =>      83648
;;;; (find-prod 50) ...
;;;; (find-prod 50) ...
;;;; (find-prod 500) ...
;;;; (find-prod 450) ...
;;;; (find-prod 10) ...
; (find-prod   99999999) ; =>      29376
;;;; (find-prod 2) ...
;;;; (find-prod 2) ...
;;;; (find-prod 4) ...
;;;; (find-prod 3) ...
;;;; (find-prod 5);  ...
;;;; 8 ...
;;;; (find-prod 5) ...
;;;; (defun sqrt-2 (num)   (cond ((= num 0) 	 2) 	(t 	 (/ 1 (sqrt ...
;;;; (sqrt-2 1) ...
;;;; (sqrt-2 2) ...
ii:10000000000 prod:883264
ii:20000000000 prod:436544
ii:30000000000 prod:580928
;;;; (defun num-routes (box-size)   (* 2      (apply #'+ 	    (lo ...
;;;; (num-routes 1) ...
;;;; (defun num-routes (box-size)   (* 2      (+        1       ( ...
STYLE-WARNING: redefining NUM-ROUTES in DEFUN
;;;; (num-routes 1) ...
;;;; (num-routes 2) ...
;;;; (num-routes 3) ...
;;;; (num-routes 20) ...
;;;; (num-routes 20) ...
;;;; (num-routes 4) ...
;;;; (num-routes 1) ...
;;;; (num-routes 2) ...
;;;; (num-routes 3) ...
;;;; (num-routes 4) ...
;;;; (num-routes 20) ...
ii:40000000000 prod:423424
ii:50000000000 prod:256256
ii:60000000000 prod:73472
ii:70000000000 prod:425472
;;;; (defun repeat (item times)   (loop for ii from 1 to times 	c ...
;;;; (repeat 'L 20) ...
CL-USER> 3
3
CL-USER> (describe #'remove)
#<FUNCTION REMOVE> is a function.
Its associated name (as in FUNCTION-LAMBDA-EXPRESSION) is REMOVE.
The function's arguments are:  (ITEM SEQUENCE &REST ARGS &KEY FROM-END
                                (TEST #'EQL) (TEST-NOT NIL) (START 0)
                                (END NIL) (COUNT NIL) (KEY NIL))
Function documentation:
  Return a copy of SEQUENCE with elements satisfying the test (default is
   EQL) with ITEM removed.
Its declared argument types are:
  (T SEQUENCE &REST T &KEY (:FROM-END T) (:TEST (OR FUNCTION SYMBOL))
   (:TEST-NOT (OR FUNCTION SYMBOL)) (:START (MOD 536870911))
   (:END (OR NULL (MOD 536870911))) (:COUNT (OR NULL INTEGER))
   (:KEY (OR FUNCTION SYMBOL)))
Its result type is:
  (VALUES (OR (SIMPLE-ARRAY * (*)) (AND SEQUENCE (NOT VECTOR))) &OPTIONAL)
On Wed, Feb 28, 2007 07:48:18 AM EST it was compiled from:
SYS:SRC;CODE;SEQ.LISP
  Created: Tuesday, February 20, 2007 02:37:39 PM EST
; No value
;;;; (remove 1 '(1 2 3)) ...
;;;; (defun all-permutations (items)   (cond ((= 0 (length items) ...
; in: LAMBDA NIL
;     (REMOVE ITEMS)
; 
; caught STYLE-WARNING:
;   The function was called with one argument, but wants at least two.
; 
; compilation unit finished
;   caught 1 STYLE-WARNING condition
;;;; (all-permutations '(a b c)) ...
;;;; (all-permutations '(a b c)) ...
CL-USER> (describe #'remove)
#<FUNCTION REMOVE> is a function.
Its associated name (as in FUNCTION-LAMBDA-EXPRESSION) is REMOVE.
The function's arguments are:  (ITEM SEQUENCE &REST ARGS &KEY FROM-END
                                (TEST #'EQL) (TEST-NOT NIL) (START 0)
                                (END NIL) (COUNT NIL) (KEY NIL))
Function documentation:
  Return a copy of SEQUENCE with elements satisfying the test (default is
   EQL) with ITEM removed.
Its declared argument types are:
  (T SEQUENCE &REST T &KEY (:FROM-END T) (:TEST (OR FUNCTION SYMBOL))
   (:TEST-NOT (OR FUNCTION SYMBOL)) (:START (MOD 536870911))
   (:END (OR NULL (MOD 536870911))) (:COUNT (OR NULL INTEGER))
   (:KEY (OR FUNCTION SYMBOL)))
Its result type is:
  (VALUES (OR (SIMPLE-ARRAY * (*)) (AND SEQUENCE (NOT VECTOR))) &OPTIONAL)
On Wed, Feb 28, 2007 07:48:18 AM EST it was compiled from:
SYS:SRC;CODE;SEQ.LISP
  Created: Tuesday, February 20, 2007 02:37:39 PM EST
; No value
;;;; (defun all-permutations (items)   (cond ((= 0 (length items) ...
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(a b c)) ...
;;;; (all-permutations '(a b c)) ...
;;;; (defun all-permutations (items)   (cond ((= 0 (length items) ...
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(a b c)) ...
;;;; (defun all-permutations (items)   (cond ((= 0 (length items) ...
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(a b c)) ...
consing B onto (C)
consing C onto (B)
consing A onto ((B C))
consing A onto ((C B))
consing A onto (C)
consing C onto (A)
consing B onto ((A C))
consing B onto ((C A))
consing A onto (B)
consing B onto (A)
consing C onto ((A B))
consing C onto ((B A))
;;;; (defun all-permutations (items)   (cond ((= 0 (length items) ...
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(a b c)) ...
consing B onto NIL
consing C onto NIL
consing A onto ((B))
consing A onto ((C))
consing A onto NIL
consing C onto NIL
consing B onto ((A))
consing B onto ((C))
consing A onto NIL
consing B onto NIL
consing C onto ((A))
consing C onto ((B))
;;;; (defun all-permutations (items)   (cond ((= 0 (length items) ...
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(a b c)) ...
consing B onto C
consing C onto B
consing A onto ((B . C))
consing A onto ((C . B))
consing A onto C
consing C onto A
consing B onto ((A . C))
consing B onto ((C . A))
consing A onto B
consing B onto A
consing C onto ((A . B))
consing C onto ((B . A))
;;;; (defun all-permutations (items)   (cond ((= 0 (length items) ...
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(a b c)) ...
consing B onto C
consing C onto B
consing A onto ((B . C))
consing A onto ((C . B))
consing A onto C
consing C onto A
consing B onto ((A . C))
consing B onto ((C . A))
consing A onto B
consing B onto A
consing C onto ((A . B))
consing C onto ((B . A))
;;;; (defun all-permutations (items)   (cond ((= 0 (length items) ...
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(a b c)) ...
consing B onto (C)
consing C onto (B)
consing A onto ((B C))
consing A onto ((C B))
consing A onto (C)
consing C onto (A)
consing B onto ((A C))
consing B onto ((C A))
consing A onto (B)
consing B onto (A)
consing C onto ((A B))
consing C onto ((B A))
;;;; (defun all-permutations (items)   (cond ((= 0 (length items) ...
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(a b c)) ...
consing B onto (C)
consing C onto (B)
consing A onto ((B C))
consing A onto ((C B))
consing A onto (C)
consing C onto (A)
consing B onto ((A C))
consing B onto ((C A))
consing A onto (B)
consing B onto (A)
consing C onto ((A B))
consing C onto ((B A))
;;;; (defun flatten (tree)   (labels ((inner-flatten (acc tree) 	 ...
;;;; (defun all-permutations (items)   (labels ((perms (items) 	  ...
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(a b c)) ...
consing B onto (C)
consing C onto (B)
consing A onto (B C)
consing A onto (C B)
consing A onto (C)
consing C onto (A)
consing B onto (A C)
consing B onto (C A)
consing A onto (B)
consing B onto (A)
consing C onto (A B)
consing C onto (B A)
;;;; (defun all-permutations (items)   (labels ((perms (items) 	  ...
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(a b c)) ...
consing B onto (C)
consing C onto (B)
consing A onto ((B C))
consing A onto ((C B))
consing A onto (C)
consing C onto (A)
consing B onto ((A C))
consing B onto ((C A))
consing A onto (B)
consing B onto (A)
consing C onto ((A B))
consing C onto ((B A))
;;;; (defun all-permutations (items)   (cond ((= 1 (length items) ...

; in: LAMBDA NIL
;     (CURRY #'EQUALP ITEM)
; 
; caught STYLE-WARNING:
;   undefined function: CURRY

; 
; caught STYLE-WARNING:
;   This function is undefined:
;     CURRY
; 
; compilation unit finished
;   caught 2 STYLE-WARNING conditions
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(a b c)) ...
;;;; (all-permutations '(a b c)) ...
;;;; (defun all-permutations (items)   (cond ((= 1 (length items) ...
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(a b c)) ...
;;;; (all-permutations '(L R)) ...
;;;; (all-permutations '(L L R R)) ...
;;;; (defun remove-first (item items)   (labels ((rfirst (acc ite ...
;;;; (rest 'L '(L L R R)) ...
;;;; (remove-first 'L '(L L R R)) ...
;;;; (defun all-permutations (items)   (cond ((= 1 (length items) ...
STYLE-WARNING: redefining ALL-PERMUTATIONS in DEFUN
;;;; (all-permutations '(L L R R)) ...
;;;; (length (all-permutations '(L L R R))) ...
;;;; (loop for perm in (all-permutations '(L L R R))       do     ...
(R L R L)
(R L L R)
(R L R L)
(R L L R)
(R R L L)
(R R L L)
(R L R L)
(R L L R)
(R L R L)
(R L L R)
(R R L L)
(R R L L)
(L L R R)
(L L R R)
(L R R L)
(L R L R)
(L R R L)
(L R L R)
(L L R R)
(L L R R)
(L R R L)
(L R L R)
(L R R L)
(L R L R)
ii:80000000000 prod:970944
;;;; (defun all-distinct-permutations (items)   (list-unique (all ...

; in: LAMBDA NIL
;     (LIST-UNIQUE (ALL-PERMUTATIONS ITEMS))
; 
; caught STYLE-WARNING:
;   undefined function: LIST-UNIQUE

; 
; caught STYLE-WARNING:
;   This function is undefined:
;     LIST-UNIQUE
; 
; compilation unit finished
;   caught 2 STYLE-WARNING conditions
;;;; (loop for perm in (all-distinct-permutations '(L L R R))     ...
;;;; (defun list-unique (things)   (let ((ht (make-hash-table)) 	 ...
;;;; (loop for perm in (all-distinct-permutations '(L L R R))     ...
(R L R L)
(R L L R)
(R L R L)
(R L L R)
(R R L L)
(R R L L)
(R L R L)
(R L L R)
(R L R L)
(R L L R)
(R R L L)
(R R L L)
(L L R R)
(L L R R)
(L R R L)
(L R L R)
(L R R L)
(L R L R)
(L L R R)
(L L R R)
(L R R L)
(L R L R)
(L R R L)
(L R L R)
;;;; (all-distinct-permutations '(L L R R)) ...
;;;; (length (all-distinct-permutations '(L L R R))) ...
;;;; (defun list-unique (things)   (let ((ht (make-hash-table :te ...
STYLE-WARNING: redefining LIST-UNIQUE in DEFUN
;;;; (length (all-distinct-permutations '(L L R R)))  ...
;;;; (length (all-distinct-permutations '(L L L R R R))) ...
;;;; (loop for size from 1 to 5       do       (format "ii:~a len ...
; in: LAMBDA NIL
;     (FORMAT "ii:~a len:~a~&"
;           (LENGTH
;            (ALL-DISTINCT-PERMUTATIONS
;             (APPEND (REPEAT 'L SIZE) (REPEAT 'R SIZE)))))
; 
; note: deleting unreachable code
; 
; caught WARNING:
;   Asserted type (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING FUNCTION)
;   conflicts with derived type (VALUES (MOD 536870911) &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"
; 
; compilation unit finished
;   caught 1 WARNING condition
;   printed 1 note
;;;; (loop for size from 1 to 5       do       (format "ii:~a len ...
; in: LAMBDA NIL
;     (FORMAT "ii:~a len:~a~&"
;           (LENGTH
;            (ALL-DISTINCT-PERMUTATIONS
;             (APPEND (REPEAT 'L SIZE) (REPEAT 'R SIZE)))))
; 
; note: deleting unreachable code
; 
; caught WARNING:
;   Asserted type (OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING FUNCTION)
;   conflicts with derived type (VALUES (MOD 536870911) &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"
; 
; compilation unit finished
;   caught 1 WARNING condition
;   printed 1 note
;;;; (loop for size from 1 to 5       do       (format t "ii:~a l ...
; 
; caught WARNING:
;   Too few arguments (1) to FORMAT "ii:~a len:~a~&": requires at least 2.
;   See also:
;     The ANSI Standard, Section 22.3.10.2
; 
; compilation unit finished
;   caught 1 WARNING condition
ii:2 len:
;;;; (loop for size from 1 to 5       do       (format t "ii:~a l ...

; in: LAMBDA NIL
;     (FORMAT T "ii:~a len:~a~&" II
;           (LENGTH
;            (ALL-DISTINCT-PERMUTATIONS
;             (APPEND (REPEAT 'L SIZE) (REPEAT 'R SIZE)))))
; 
; caught WARNING:
;   undefined variable: II

; 
; caught WARNING:
;   This variable is undefined:
;     II
; 
; compilation unit finished
;   caught 2 WARNING conditions
;;;; (loop for size from 1 to 5       do       (format t "size:~a ...
size:1 len:2
size:2 len:6
size:3 len:20
size:4 len:70

CL-USER> 