以下 Tutorial Chapter 2 に従います。

対話的操作

ヘルプ

数値計算


1 + 5/2

(1 + (5/2 * 3)) / (1/7 + 7/9)^2

^ -- 指数演算子

1234^123

100!

fact, ! -- 階乗

isprime(123456789)

TRUE|FALSE -- 真偽値

isprime -- 素数判定
           Miller-Rabin test (確率的素数判定法の一種)
           FALSE -> 確実に合成数
           TRUE -> 素数、もしくは(「ランダム」に選んだ10個の底に対する)強偽素数
           ref. numlib::proveprime

あまり長い桁の数値を扱うと…

a := 2^(2^13)+1
length(a)
isprime(a)

b := 2^(2^17)+1
length(b)
isprime(b)
タスクマネージャーでプロセスを見てみる

ifactor -- 素因数分解

ifactor(123456789)
3^2 * 3607 * 3803

a := 2^(2^5)+1; length(a); ifactor(a)

b := 2^(2^7)+1
length(b)
ifactor(b)
"Session" -> "STOP Kernel"

sqrt -- 平方根

sqrt(56)
sqrt(14)^4


limit -- 極限値を求める
infinity -- 正の無限大
exp -- 指数関数
ln -- 自然対数
E -- 自然対数の底

limit((1 + 1/n)^n, n = infinity)
ln(1/exp(1))


float -- 浮動小数点形式への変換(近似値計算)
DIGITS -- 浮動小数点形式への有効桁数(初期値は10)

float(sqrt(56))
DIGITS; float(67473/6728)

DIGITS := 100; float(67473/6728); DIGITS := 10

(1 * (5/2 * 3)) / (1/7 + 7/9)^2    <- 1
(1.0 * (5/2 * 3)) / (1/7 + 7/9)^2  <- 1.0


2/3 * sin(2); 0.6666666 * sin(2)


float(2/3 * sin(2)); 0.6666666 * float(sin(2)) <- ≠

sqrt(56.0); sin(3.14)

cos(PI); ln(E)

DIGITS := 100; float(PI); float(E); DIGITS := 10

Excecise 2.2: