Almkvist-Giullera formula for pi: Difference between revisions
Content added Content deleted
m (domain check for ilog()) |
(→{{header|Common Lisp}}: Add implementation.) |
||
Line 164: | Line 164: | ||
3.1415926535897932384626433832795028841971693993751058209749445923078164 |
3.1415926535897932384626433832795028841971693993751058209749445923078164 |
||
</pre> |
</pre> |
||
=={{header|Common Lisp}}== |
|||
{{libheader|computable-reals}} |
|||
{{trans|Raku}} |
|||
<lang lisp>(ql:quickload :computable-reals :silent t) |
|||
(use-package :computable-reals) |
|||
(setq *print-prec* 70) |
|||
(defparameter *iterations* 53) |
|||
; factorial using computable-reals multiplication op to keep precision |
|||
(defun !r (n) |
|||
(let ((p 1)) |
|||
(loop for i from 2 to n doing (setq p (*r p i))) |
|||
p)) |
|||
; the nth integer term |
|||
(defun integral (n) |
|||
(/r (*r 32 (!r (*r 6 n)) (+r (*r 532 n n) (*r 126 n) 9)) (*r 3 (expt-r (!r n) 6)))) |
|||
; the nth term of the series |
|||
(defun a-g (n) |
|||
(/r (integral n) (expt-r 10 (+r (*r 6 n) 3)))) |
|||
; the sum of the first n terms |
|||
(defun a-g-sigma (n) |
|||
(let ((s 0)) |
|||
(loop for i from 0 to n doing (setq s (+r s (a-g i)))) |
|||
s)) |
|||
; the approximation to pi after n terms |
|||
(defun a-g-pi (n) |
|||
(sqrt-r (/r 1 (a-g-sigma n)))) |
|||
(loop for i from 0 to 9 doing |
|||
(format t "~&~a. ~44d ~3d " i (integral i) (- 3 (* 6 (1+ i)))) |
|||
(finish-output *standard-output*) |
|||
(print-r (a-g i) 50 nil)) |
|||
(format t "~%~%Pi after ~a iterations: " *iterations*) |
|||
(print-r (a-g-pi *iterations*) *print-prec*)</lang> |
|||
{{Out}} |
|||
<pre>0. 96 -3 +0.09600000000000000000000000000000000000000000000000... |
|||
1. 5122560 -9 +0.00512256000000000000000000000000000000000000000000... |
|||
2. 190722470400 -15 +0.00019072247040000000000000000000000000000000000000... |
|||
3. 7574824857600000 -21 +0.00000757482485760000000000000000000000000000000000... |
|||
4. 312546150372456000000 -27 +0.00000031254615037245600000000000000000000000000000... |
|||
5. 13207874703225491420651520 -33 +0.00000001320787470322549142065152000000000000000000... |
|||
6. 567273919793089083292259942400 -39 +0.00000000056727391979308908329225994240000000000000... |
|||
7. 24650600248172987140112763715584000 -45 +0.00000000002465060024817298714011276371558400000000... |
|||
8. 1080657854354639453670407474439566400000 -51 +0.00000000000108065785435463945367040747443956640000... |
|||
9. 47701779391594966287470570490839978880000000 -57 +0.00000000000004770177939159496628747057049083997888... |
|||
Pi after 53 iterations: |
|||
+3.1415926535897932384626433832795028841971693993751058209749445923078164... |
|||
</pre> |
|||
=={{header|Erlang}}== |
=={{header|Erlang}}== |