浮動小数点数を分解したい場合は、最初に浮動小数点数を確認しましょう。 say z: 34.1
ビッグフロートのパーツには、lispを使用してアクセスできます。また、ビット数は?fpprec
でアクセスできます。
したがって?second(z)*2^(?third(z)-?fpprec)
はあなたを与える:
4799148352916685/140737488355328
とbfloat(%)
は、あなたが得られます。
3.41b1.
をあなたは整数としてのzの仮数をしたい場合は、?second(z)
を見て今、私は確信して何もありませんよベース10で達成しようとしているのですが、Maxima はベース10の内部算術演算を行いません。
より多くのビット数が必要な場合は、 ?fpprec
にリンクされているfpprec、 を設定することができます。 fpprecは "基数10の近似値"です。 したがって、fpprecは最初は16 ?fpprec
に対応して56.
です。 FPPREC:100 は ?print(z)
、あなたはフロート表現の周りdiddlingしている場合、あなたは、たとえば、次のように入力して舌足らずのいずれかを見ることができます を知っているから恩恵を受ける可能性がある335
の?fpprec
に対応Lispのprint関数を使って内部フォームを出力します。
トレース機能を使用して、自分の機能やシステム機能をトレースすることもできます。
trace(append,rnd,integrate);
あなたがマシンフロートを使用したい場合は、私は最後の行のために、あなたが使用することをお勧め、
をnに30 1スルーステップ-1 DOから:
あなたがこれを行うことを検討可能性が例えば
Ibwd:append([[n-1,rnd(1/(2.0*n- 1.0)-a*last(first(Ibwd)),d)]],Ibwd);
小数点に注意してください。しかし、それでも十分ではありません。 は、atan(10)のような正確な構造体を挿入するためです。これらを丸めたり、ログ を計算しようとするのはおそらくあなたがしたいことではありません。私はMaximaが最初は別のことを考えていたとしても、ログには負であると判明したいくらかの乱雑な表現が与えられているので、Maximaは不幸だと思う。それは、適切な共通のlisp複素数オブジェクトを返すことを喜んで受け入れているlispログプログラムに番号を渡します。残念ながら、Maximaのほとんどは、LISP HAD COMPLEX NUMBERSより前に書かれていました。
このように、(log -0.5)= #C(-0.6931472 3.1415927)
の結果は、他のMaximaにはまったく予期しないものです。 Maximaには複素数のための独自の形式があります。 3+4*%i
。
特に、Maximaディスプレイプログラムは、共通のlispの複素数形式よりも前のものであり、その処理方法がわかりません。
エラー(スタックオーバーフロー!!!)は、一般的なlisp複素数を表示しようとしているディスプレイプログラムからのものです。
これをすべて修正するには?まあ、あなたはあなたが本当に望むものを計算するようにあなたのプログラムを変更しようとする可能性があります。この場合、おそらくこのエラーは発生しません。 Maximaの表示プログラムも修正する必要があります。また、負の数のログの簡略化には不幸なことがあると思われますが、明らかにそうではありません。
これは元のポスターの情報が多すぎるかもしれませんが、おそらく上記の段落が助けて1つ以上の場所でMaximaを改善する可能性があります。
まあ、問題は丸め機能であるという結論に達しました。何が問題なの? – Anne