Boost 1.53.0から、多倍長演算ライブラリであるBoost.Multiprecisionが入りました。 このライブラリは、整数と浮動小数点数をサポートしていますが、今回は整数の方を紹介します。 以下は、多倍長整数で階乗を求める例です。 #include <iostream> #include <boost/multiprecision/cpp_int.hpp> using namespace boost::multiprecision; int main() { // 128ビット整数 int128_t v = 1; // 20の階乗を求める for (unsigned i = 1; i <= 20; ++i) v *= i; std::cout << v << std::endl; // 任意精度整数 cpp_int u = 1; // 100の階乗を求める for (unsig
実行しているのは次のコードです.fld でメモリにある80ビットの浮動小数を スタックにつみます. (a) の fsub 命令でスタックの上部の2つの数値を取り出して 減算し, 結果をスタックに戻します. (b) の fsubp 命令では fsub の後にスタック をポップ(スタックトップを空にした後,ポインタをインクリメント)します. (c) の例では, fcompp で大きさを比較した結果を C0, C2, C3 の条件コードに設定 してスタックを2回ポップしています. 比較に使った数値が不用の場合です. Num16 dt 16.0 Num4 dt 4.0 fld tword[Num16] fld tword[Num4] fsub st1, st0 ; (a) ; または fsubp st1,st0 (b) ; または fcompp st1,st0 (c) 使いやすいのは (b) の方
当サイトの一部ページには、アフィリエイト・アドセンス・アソシエイト・プロモーション広告を掲載しています。 Amazonのアソシエイトとして、Security Akademeiaは適格販売により収入を得ています。 広告配信等の詳細については、プライバシーポリシーページに掲載しています。 消費者庁が、2023年10月1日から施行する景品表示法の規制対象(通称:ステマ規制)にならないよう、配慮して記事を作成しています。もし問題のある表現がありましたら、問い合わせページよりご連絡ください。 参考:令和5年10月1日からステルスマーケティングは景品表示法違反となります。 | 消費者庁 FANZA同人誌 10円セール第4弾Amazon 人気の漫画本が実質ほぼ半額FANZA同人誌 10円セール第3弾年賀状のお年玉商品の当選発表Amazonポイントアップセール8日はメルカードの日 実質300円分タダでゲッ
なお,浮動小数点形式の定数リテラルのサフィックス“F”(または“f”),“L”(または“l”)は, “F”はfloat型,“L”はlong double型を示すことになっている. double型のサフィックスはないようだけど,これはリテラルはFかLで指定して, double型にはキャストしながら代入されていくのでOKという意味なんだろう. 参考:Intel x86系CPUの浮動小数点演算中間結果 Intel x86系CPUの場合,double型としては64ビットなのだけど, 演算の中間結果は80ビット(拡張精度)の浮動小数点レジスタスタックに保持していて,精度が高くなっているかもしれない. たとえばVisual C++のデフォルトがこの実装になっていて,演算中は80ビットの拡張精度になる. Visual C++の場合はたいへん複雑なことになっていて, MSDNによると,古い16ビット版Vi
浮動小数点演算ではまった話 浮動小数点演算のありがちな問題ではまりました。 いろいろ調べているうちに x86 特有のちょっとおもしろい 現象に遭遇したので紹介したいと思います。 パーセンテージの計算 簡単な C のプログラムでパーセンテージを計算しようと思い、 次のようなコードを書きました。 int x, y; ... int a = (double)x / y * 100; int a = x * 100 / y としないのは、 x が大きい場合に x * 100 が オーバーフローを起こす (INT_MAX を越える) ためです。 このコードは一見、期待通りに動いていたのですが、 しばらく使っていると、手元の環境では x = 53, y = 100 のときに a は 53 ではなく 52 になることに気づきました。 これは次の理由によります。 式の最初の (double)53 / 10
An Interview with the Old Man of Floating-Point Intel was about to spring a real surprise on the world:- one chip with MOST of the essentials of a math library. We wanted to put ALL of it on one chip but we had only 40,000 transistors. それまでは仕様もバラバラで、ソフトウェアで実装される事も多かったようなものを、仕様を統一したうえでハードウェア実装してみせたんだからすごい。それでいて gradual underflow のようにソフトウェアに配慮した設計もちゃんと盛り込まれているんですな。いやはや。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く