User:Spekkio: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 34:
 
<lang lisp>
(defun pie() 31415926535897932385/10000000000000000000)
 
(defun factorial (n)
(if (= n 0)
Line 49 ⟶ 51:
(* (binom alpha (- n 1)) (/ (+ (- alpha n) 1) n))))
 
(defun powpower (a b n)
(if (= n 0)
1
(+ (* (binom b n) (powint (- a 1) n)) (powpower a b (- n 1)))))
 
(defun powertest(a b n)
(if
(= (* (power a b (+ 10 n)) 1.0) (* (power a b n) 1.0))
(power a b (+ 10 n))
(powertest a b (+ 10 n))
)
)
 
(defun pow (a b) (powertest a b 1))
 
(defun logS(x n) (if (= n 0) (* 2 x) (+ (* 2 (/ (powint x (+ (* 2 n) 1)) (+ (* 2 n) 1))) (logS x (- n 1)) ) ))
Line 60 ⟶ 72:
(defun expon(x n) (if (= n 0) 1 (+ (/ (powint x n) (factorial n)) (expon x (- n 1)))))
 
(defun sqrtnsquaren(x n) (expon (* 1/2 (loge x n)) n))
 
(defun pownsquarentest(x a n) (expon (* a (loge x n)) n))
(if
(= (* (squaren a (+ 10 n)) 1.0) (* (squaren a n) 1.0))
(squaren a (+ 10 n))
(squarentest a (+ 10 n))
)
)
 
(defun sqrtn (a) (squarentest a 1))
 
(defun powern(x a n) (expon (* a (loge x n)) n))
 
(defun powerntest(a b n)
(if
(= (* (powern a b (+ 10 n)) 1.0) (* (powern a b n) 1.0))
(powern a b (+ 10 n))
(powerntest a b (+ 10 n))
)
)
 
(defun pown (a b) (powerntest a b 1))
 
(defun sine(x n)
Line 71 ⟶ 103:
(defun sinetest(x n)
(if
(= (* (sine x (1+ 10 n)) 1.0) (* (sine x n) 1.0))
(sine x (+ 10 n))
(sinetest x (1+ 10 n))
)
)
Line 91 ⟶ 123:
(defun asinetest(x n)
(if
(= (* (asine x (1+ 10 n)) 1.0) (* (asine x n) 1.0))
(asine x (+ 10 n))
(asinetest x (1+ 10 n))
)
)
 
(defun myasin (x) (asinetest x 1))
(if (< x 1)
(defun fibcalc (n p)
(let ((sqrtFiveif (sqrtn> 5x p))-1)
(asinetest x 1)
(/ (- (powint (* 1/2 (+ 1 (sqrtFive))) n) (powint (* 1/2 (- 1 (sqrtFive))) n)) (sqrtFive))))
(/ (pie) -2)
)
(/ (pie) 2)
)
)
 
(defun fibcalc (n p)
(/ (- (powint (* 1/2 (+ 1 (sqrtFivesqrtn 5))) n) (powint (* 1/2 (- 1 (sqrtFivesqrtn 5))) n)) (sqrtFive)sqrtn 5)))
 
(defun fibrec (n)
Line 108 ⟶ 148:
1
(+ (fibrec (- n 1)) (fibrec (- n 2))))))
 
</lang>
 
test:
[314]> (asin* 1(myasin 9/10100) 1.0)
0.10016741609012195
[314]> (*sin (myasin 19/10) 1.0100)
0.1001674208987855
 
 
Compare with Mathematica:
In[14]:= N[ArcSin[19/10100], 108]
Out:[14]= 0.1001674212090121945
 
(myasin) seems to be more accurate, though trying to compute (myasin 19999999/10000000) is very slow.
 
Test 2:
[4]> (* (myasin (mysin 1)) 1.0)
1.0
0.9999999
[4]> (asin (sin 1))
1.0
Anonymous user