49 lines
1.0 KiB
Common Lisp
49 lines
1.0 KiB
Common Lisp
; Compute e to 192 digits
|
|
|
|
(setq digits 200)
|
|
(setq high digits)
|
|
(setq count 0)
|
|
(setq x 0)
|
|
(setq n (- high 1))
|
|
|
|
(defmacro m-ignore (fun &body body)
|
|
"ignores the return value of a function"
|
|
`(progn (,fun ,@body)
|
|
(values)))
|
|
|
|
(defun rune() (prog ()
|
|
_nextn_
|
|
(setf (aref a n) 1)
|
|
(cond ((plusp n)
|
|
(setq n (sub1 n))
|
|
(go _nextn_))
|
|
)
|
|
|
|
(setf (aref a 1) 2)
|
|
(setf (aref a 0) 0)
|
|
|
|
_nexthigh_
|
|
(setq high (sub1 high))
|
|
(setq n high)
|
|
_nextn2_
|
|
(setf (aref a n) (mod x n))
|
|
(setq x (+ (* 10 (aref a (sub1 n))) (truncate (/ x n))))
|
|
(cond ((> n 1)
|
|
(setq n (sub1 n))
|
|
(go _nextn2_))
|
|
)
|
|
(princ x)
|
|
(cond ((> high 9)
|
|
(go _nexthigh_))
|
|
)
|
|
(return "")
|
|
))
|
|
|
|
(setq a (make-array digits :initial-element 0 ))
|
|
(setq startTime (time))
|
|
(clear-screen)
|
|
(rune)
|
|
(princ "elapsed hundredths of a second: ") (- (time) startTime) (TERPRI)
|
|
|
|
(system)
|