Here is a function which can work out the PI value.
(define (item n)
(cond ((= n 0) 1)
((> n 0)
(let ((r (/ 1 (+ 1 (* 2 n)))))
(if (> (remainder n 2) 0)
(- 0 r)
r)))))
(define (add-items n)
(let loop ((val 0) (n n))
(if (< n 0) val
(loop (+ val (item n)) (- n 1)))))
(define (pi-val n)
(* 4 (add-items n)))
(exact->inexact (pi-val 10000)) => 3.141615......
The version of C programming language is following.
#include <stdio.h>
#include <stdlib.h>
double item(int n){
double r = 0.0;
if (n <=0)
return 1.0;
else{
r = 1.0 / ((2 * n) + 1);
if ((n % 2) != 0)
return -r;
else
return r;
}
}
double add_items(int n){
double s = 0.0;
for(; n >=0; n--)
s += item(n);
return s;
}
int main(int argc, char ** argv){
int n;
n = atoi(argv[1]);
fprintf(stderr, "PI value: %f/n", 4.0 * add_items(n));
return 0;
}