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]