labunix's blog

labunixのラボUnix

clispとgcl/sbclでネイピア数、tan(e)、アークタンジェント/アークコサインによる円周率の計算

■clispとgcl/sbclでネイピア数、tan(e)、アークタンジェント/アークコサインによる円周率の計算
 以下でgcl/sbclを使えるようにしたが、やはりclispの方が良い。
 早くstableに戻って欲しいものだ。

 AWSでLISP(gcl/sbcl)が使えるようにする。
 http://labunix.hateblo.jp/entry/20151015/1444854641

■ネイピア数

 clispでtan(e)とネイピア数の計算(1000)
 http://labunix.hateblo.jp/entry/2012/07/22/194906

$ echo 'echo "(exp 1.0L0)" | lisp | tail -3;echo' | awk '{print $0";"$0}' | \
    awk '{sub(/lisp/,"sbcl")}{sub(/lisp/,"gcl")}{print $0}' | sh
* 
2.718281828459045d0
* 
2.718281828459045

>

$ echo "(exp 1.0L0)" | clisp -q
[1]> 
2.7182818284590452354L0

■tan(e)の計算

$ echo 'echo "(tan (exp 1.0L0))" | lisp | tail -3;echo' | awk '{print $0";"$0}' | \
    awk '{sub(/lisp/,"sbcl")}{sub(/lisp/,"gcl")}{print $0}' | sh
* 
-0.4505495340698077d0
* 
-0.4505495340698077

>

$ echo "(tan (exp 1.0L0))" | clisp -q
[1]> 
-0.45054953406980749562L0

■アークタンジェントによる円周率の計算

 三角関数の逆関数で円周率 clisp
 http://d.hatena.ne.jp/labunix/20120101

$ echo 'echo "(* 4 (atan 1.0L0))" | lisp | tail -3;echo' | awk '{print $0";"$0}' | \
    awk '{sub(/lisp/,"sbcl")}{sub(/lisp/,"gcl")}{print $0}' | sh
* 
3.141592653589793d0
* 
3.141592653589793

>

$ echo "(* 4 (atan 1.0L0))" | clisp -q
[1]> 
3.141592653589793238L0

■アークコサインによる円周率の計算

$ echo "(acos -1.0L0))" | gcl | tail -3 ;echo
3.141592653589793

>

$ echo "(acos -1)" | sbcl | tail -3 ;echo
* 
3.1415927
* 

$ echo "(acos -1.0L0)" | clisp -q
[1]> 
3.1415926535897932385L0

■SBCLはもうダメっぽい。

$ echo "(acos -1.0L0))(quit)" | sbcl | tail -3 ;echo

debugger invoked on a SB-INT:SIMPLE-READER-ERROR in thread
#<THREAD "main thread" RUNNING {10039CE593}>:
  unmatched close parenthesis

    Stream: #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN* {10001C21C3}>

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.

(SB-INT:SIMPLE-READER-ERROR #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN* {10001C21C3}> "unmatched close parenthesis")
0] (quit)
; in: LAMBDA (#:G669)
;     (QUIT)
; 
; caught STYLE-WARNING:
;   SB-EXT:QUIT has been deprecated as of SBCL 1.0.56.55. Use SB-EXT:EXIT or
;   SB-THREAD:ABORT-THREAD instead.
;   
;   In future SBCL versions SB-EXT:QUIT will signal a full warning at compile-time.
; 
; compilation unit finished
;   caught 1 STYLE-WARNING condition
* 
3.141592653589793d0
*