Previous: Introduction to Numbers, Up: Numbers [Contents][Index]
exprの中のすべての数や数の関数を多倍長浮動小数点に変換します。
戻り値の多倍長浮動小数点の有効桁数は、
グローバル変数fpprec
によって規定されます。
float2bf
がfalse
の場合、
浮動小数点が多倍長浮動小数点に変換される時
(精度が落ちることを意味するので)警告メッセージが出力されます。
もしexprが多倍長浮動小数点数ならtrue
を、そうでなければfalse
を返します。
デフォルト値: false
bftorat
は多倍長浮動小数点の有理数への変換を制御します。
bftorat
がfalse
の時、
ratepsilon
が変換を制御するのに使われます。
(これは比較的小さな有理数になります。)
bftorat
がtrue
の時、
生成された有理数は多倍長浮動小数点を正確に表します。
デフォルト値: true
bftrunc
は、非ゼロの多倍長浮動小数点数の中のずるずる続くゼロを表示しないようにします。
例えば、もしbftrunc
がfalse
なら、
bfloat (1)
は1.000000000000000B0
と表示されます。
そうでなければ、これは、1.0B0
と表示されます。
もしexprが偶数ならtrue
を返します。
他の場合にはfalse
を返します。
exprの中の整数、有理数、多倍長浮動小数点を浮動小数点に変換します。
float
はevflag
でもあり、
非整数有理数と多倍長浮動小数点を浮動小数点に変換します。
デフォルト値: true
float2bf
がfalse
の場合、
浮動小数点が多倍長浮動小数点に変換される時、
(これは精度の無駄使いとなるかもしれないので、)
警告メッセージが表示されます。
デフォルト値はtrue
です。
もしexprが浮動小数点なら
true
を返し、そうでないなら
false
を返します。
デフォルト値: 16
fpprec
は多倍長浮動小数点上の代数のための有効桁数です。
fpprec
は通常の浮動小数点上の計算に影響を与えません。
bfloat
とfpprintprec
も参照してください。
デフォルト値: 0
fpprintprec
は、通常の浮動小数点もしくは多倍長浮動小数点を表示する時の
表示する桁数です。
通常の浮動小数点に関しては、
fpprintprec
が2から16までの値を持つ時、
表示されるディジット数はfpprintprec
に等しいです。
そうでなければ、fpprintprec
は0もしくは16より大きく、
表示されるディジット数は16です。
多倍長浮動小数点に関しては、
fpprintprec
が2からfpprec
までの値を持つ時、
表示される桁数は、fpprintprec
に等しいです。
そうでなければ、fpprintprec
は、0もしくはfpprec
より大きく、
表示される桁数はfpprec
に等しいです。
fpprintprec
は1にはできません。
もしexprが整数リテラルなら true
を、
そうでないなら false
を返します。
もし引数がシンボルならたとえ引数が宣言された整数でも、
integerp
は false
を返します。
例:
(%i1) integerp (0); (%o1) true (%i2) integerp (1); (%o2) true (%i3) integerp (-17); (%o3) true (%i4) integerp (0.0); (%o4) false (%i5) integerp (1.0); (%o5) false (%i6) integerp (%pi); (%o6) false (%i7) integerp (n); (%o7) false (%i8) declare (n, integer); (%o8) done (%i9) integerp (n); (%o9) false
デフォルト値: false
m1pbranch
は -1
のべき乗の主枝です。
(-1)^(1/3)
(すなわち、「奇」の有理指数)や
(-1)^(1/4)
(すなわち、「偶」の有理指数)
のような量は以下のように扱われます:
domain:real (-1)^(1/3): -1 (-1)^(1/4): (-1)^(1/4) domain:complex m1pbranch:false m1pbranch:true (-1)^(1/3) 1/2+%i*sqrt(3)/2 (-1)^(1/4) sqrt(2)/2+%i*sqrt(2)/2
n >= 0
かつ nが整数の時だけtrue
を返します。
もしexprが文字リテラルか、有理数か、浮動小数点数か、多倍長浮動小数点なら
true
を、
そうでなければ false
を返します。
もし引数がシンボルなら、
たとえ引数が%pi
や%i
のようなシンボリックな数でも、また、
even
, odd
, integer
, rational
, irrational
,
real
, imaginary
, complex
のいずれかに宣言されていても、
numberp
は false
を返します。
例:
(%i1) numberp (42); (%o1) true (%i2) numberp (-13/19); (%o2) true (%i3) numberp (3.14159); (%o3) true (%i4) numberp (-1729b-4); (%o4) true (%i5) map (numberp, [%e, %pi, %i, %phi, inf, minf]); (%o5) [false, false, false, false, false, false] (%i6) declare (a, even, b, odd, c, integer, d, rational, e, irrational, f, real, g, imaginary, h, complex); (%o6) done (%i7) map (numberp, [a, b, c, d, e, f, g, h]); (%o7) [false, false, false, false, false, false, false, false]
numer
は数値の引数を持つ(指数関数を含む)いくつかの数学関数を
浮動小数点に評価するようにします。
数値が与えられたexpr
の中の変数を値に置き換えるようにします。
それは float
スイッチをオンにもします。
%enumer
も参照してください。
例:
(%i1) [sqrt(2), sin(1), 1/(1+sqrt(3))]; 1 (%o1) [sqrt(2), sin(1), -----------] sqrt(3) + 1 (%i2) [sqrt(2), sin(1), 1/(1+sqrt(3))],numer; (%o2) [1.414213562373095, .8414709848078965, .3660254037844387]
デフォルト値: false
オプション変数numer_pbranch
は
負の整数、有理数、または浮動小数点数のべきの数値評価を制御します。
numer_pbranch
がtrue
でかつ、指数が浮動小数点数であるか
オプション変数numer
もtrue
の時、
Maximaは主枝を使って数値結果を評価します。
そうでなければ、式整理されたが未評価の結果が返されます。
例:
(%i1) (-2)^0.75; (%o1) (-2)^0.75 (%i2) (-2)^0.75,numer_pbranch:true; (%o2) 1.189207115002721*%i-1.189207115002721 (%i3) (-2)^(3/4); (%o3) (-1)^(3/4)*2^(3/4) (%i4) (-2)^(3/4),numer; (%o4) 1.681792830507429*(-1)^0.75 (%i5) (-2)^(3/4),numer,numer_pbranch:true; (%o5) 1.189207115002721*%i-1.189207115002721
変数x_1
, …, x_n
を
expr_1
, …, expr_n
に等しい数値を持つ変数だと宣言します。
もし numer
フラグが true
なら、
変数が現れる任意の式にて、数値は評価され、変数に代入されます。
ev
も参照してください。
式expr_1
, …, expr_n
は、任意の式を取り得ます。数値である必要はありません。
もしもexpが奇数であればtrue
を返し、
それ以外ではfalse
を返します。
デフォルト値: 2.0e-8
ratepsilon
は浮動小数点数を有理数に変換する際に使われる許容誤差です。
Maximaの式exprの中の倍精度浮動小数点やビッグフローすべてを同値の有理数に変換します。
もし浮動小数点の2値表現に詳しくなれば、rationalize (0.1)
が1/10に等しくないことに
驚くかもしれません。
この振る舞いはMaximaに特別なわけではありません。―1/10は2値の循環小数表現を持ちます。
(%i1) rationalize (0.5); 1 (%o1) - 2 (%i2) rationalize (0.1); 1 (%o2) -- 10 (%i3) fpprec : 5$ (%i4) rationalize (0.1b0); 209715 (%o4) ------- 2097152 (%i5) fpprec : 20$ (%i6) rationalize (0.1b0); 236118324143482260685 (%o6) ---------------------- 2361183241434822606848 (%i7) rationalize (sin (0.1*x + 5.6)); x 28 (%o7) sin(-- + --) 10 5
使用例:
(%i1) unitfrac(r) := block([uf : [], q], if not(ratnump(r)) then error("The input to 'unitfrac' must be a rational number"), while r # 0 do ( uf : cons(q : 1/ceiling(1/r), uf), r : r - q), reverse(uf))$
(%o1) unitfrac(r) := block([uf : [], q], if not ratnump(r) then error("The input to 'unitfrac' must be a rational number"), 1 while r # 0 do (uf : cons(q : ----------, uf), r : r - q), 1 ceiling(-) r reverse(uf)) (%i2) unitfrac (9/10); 1 1 1 (%o2) [-, -, --] 2 3 15 (%i3) apply ("+", %); 9 (%o3) -- 10 (%i4) unitfrac (-9/10); 1 (%o4) [- 1, --] 10 (%i5) apply ("+", %); 9 (%o5) - -- 10 (%i6) unitfrac (36/37); 1 1 1 1 1 (%o6) [-, -, -, --, ----] 2 3 8 69 6808 (%i7) apply ("+", %); 36 (%o7) -- 37
もしexprが整数リテラルもしくは整数リテラルの比なら true
を返し、
そうでなければ false
を返します。
Previous: Introduction to Numbers, Up: Numbers [Contents][Index]