問題タブ [underflow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
535 参照

c# - C# Math.Max 型の処理

ushort のオーバーフロー/アンダーフローを防ぐコードを書いていました。その前に私は試します:

次に、実際のコードを書きますが、これが「失敗」することを期待しています (アンダーフローを検出できません)。

興味深いことに、エラー (CS0266) により、ビルドできません。ushort Max(ushort, ushort)C# はオーバーロードを使用することを期待していますが、オーバーロードを使用しint Max(int, int)ており、ushort値が自動的に変換されintます。もちろん、結果を明示的にキャストすると、ushortこれは正常に機能します。

これは、アンダーフローが発生する可能性があることをC#が検出しているのでint、比較を行うために使用していると思いますか?

0 投票する
1 に答える
364 参照

c - C の "if" 条件でのアンダーフローの処理 - ブール値の使用

問題があります。アルゴリズムのアンダーフローの問題で立ち往生しています。私は基本的にベジエ曲線からパスを設計していますが、これに対処するには、2 つのベクトル間の角度と時計と反時計の方向を 1 から別のベクトルに取得するために、いくつかのベクトル乗算 (クロス積と内積) を使用する必要がありました。 . 問題は、パスが直線の場合、制御変数の 1 つにアンダーフローの問題があり、基本的に実行がブロックされ、エラーが発生することです。

コードは次のとおりです。

ご覧のとおり、エラーを回避するために if 条件をいくつか入れましたが、十分ではありませんでした。実際、問題はおそらくdir=dx1 * dy2 - dx2 * dy1;. これは、x 軸または y 軸に沿った移動が小さすぎてフロートにならない場合です。友人がブール値の使用を提案しましたが、方法がわかりません。定義するboolean dir;と、値が小さすぎる場合は0になり、そうでない場合は1と見なされます。その場合、方向の検出に現在使用しているのと同じ手順を使用できます。

何か提案や別の解決策はありますか? 前もってありがとうネッド

0 投票する
6 に答える
580 参照

c++ - ダブルの高性能加算と乗算のための定数の形式

アンダーフローを防ぐために、ループ内のdouble型の結果にいくつかの定数を効率的に追加または乗算する必要があります。たとえば、intがある場合、コンパイラはビットシフトを使用するため、2の累乗で乗算すると高速になります。double効率的な足し算と掛け算のための定数の形式はありますか?

編集:私の質問を理解している人はあまりいないようです、私の怠惰についてお詫びします。コードを追加します。がintの場合a、これ(2の累乗を掛ける)はより効率的です

1024をたとえば1023に置き換えた場合よりも。intに追加したい場合に最適なものはわかりませんが、それは私の興味ではありません。aダブルの場合に興味があります。効率的に加算してdoubleに乗算できる定数の形式(たとえば、2の累乗)は何ですか?定数は任意であり、アンダーフローを防ぐのに十分な大きさである必要があります。

これはおそらくCとC++だけに制限されているわけではありませんが、より適切なタグはわかりません。

0 投票する
1 に答える
2304 参照

numpy - NumPy を使用した同時確率のアンダーフローの回避

単純な設定で独立変数の同時確率を推定する問題に直面しています。現在、100 個の確率変数の配列があり、アンダーフローの問題に陥ることなくそれらの同時確率を取得したいと考えています。numpyでこの目標を達成する方法はありますか? もし可能なら?

そうでない場合は、NumPy ルーチン (logaddexp) の役割を詳しく説明してください。このような状況で役立つかもしれないと思ったからです。

0 投票する
1 に答える
492 参照

c++ - 擬似コード コード (オーバーフロー/アンダーフロー) を使用した C++ の支援

私は学校での C++ の 4 週目にかろうじて入ったばかりで、正しい方向に導かれることを期待していました。

そして、これが課題が私たちに求めていることです。

メインを変更して、try/catch 部分を無限ループにします。try ブロックでは、長さと幅を尋ねます。cin が失敗した場合は戻り、そうでない場合は領域を出力し、その領域の mysqrt を出力します。プログラムに hw3pr2.cpp という名前を付けます。(たとえば、"end" という単語など、正しくフォーマットされていない int を入力すると、cin は失敗することを思い出してください。)

コードの読み方は理解していますが、開始するのに苦労しており、これまでのところ「スコープ」と混同されていますが、これまでのところ正しくコンパイルされていますが、Range Error: 10 が引き続き表示されます。クラスエリアが間違っていますか?

誰かが私を正しい方向に向けてもらえますか? ありがとうございました!

0 投票する
2 に答える
5594 参照

python - Pythonの非常に小さい数の指数

Pythonで-1200の指数を計算しようとしています(これは例です。特に-1200は必要ありませんが、-1200前後の数値のコレクションは必要ありません)。

アンダーフローが発生しています。この問題を回避するにはどうすればよいですか?

助けてくれてありがとう:)

0 投票する
1 に答える
4095 参照

algorithm - HMM のフォワード アルゴリズムでのアンダーフロー

HMM のフォワード アルゴリズムを実装して、特定の HMM が特定の観測シーケンスを放出する確率を計算しています。アルゴリズムがアンダーフローに対して堅牢であることを望みます。フォワードアルゴリズムには確率の乗算と加算が必要なため、対数空間では作業できません。アンダーフローを回避する最善の方法は何ですか?

私はこれについていくつかの情報源を読みましたが、私が得た最良の提案は、各時間ステップで確率をスケーリングすることです。アルゴリズムの終わりまでに、(観測シーケンスの) 必要な正確な確率は残されません。また、私が間違っていない限り、上記の参考文献で提案されているように各時間ステップで確率をスケーリングすると、2 つの異なる HMM から得られた特定の観測シーケンスの確率の意味のある比較を行うことはできません (どのシーケンスを出力する可能性が高くなります)。助言がありますか?

0 投票する
0 に答える
3455 参照

algorithm - HMM Forward-Algorithm によるアンダーフローの処理

隠れマルコフ モデル (HMM) のフォワード アルゴリズムを実装しようとしていますが、アルファ テーブルを埋めるときにアンダーフローの問題に直面しています。ここのセクション 6 で説明した方法を使用してアルファ値を正規化しましたが、最終的なアルファ値 (観測シーケンスの確率) の結果の合計は常に 1 に等しくなります。実際の確率を取得するために正規化を「元に戻す」にはどうすればよいですか? 私の実装は、セクション 7.2 hereと非常によく似ています。

この同じ質問に対する最近の回答がありましたが、最後のいくつかの手順を理解できませんでした。より詳細な説明を期待しています。ありがとう!

更新:最近の回答をようやく理解したと思いますが、私の理解が正しいことを確認していただければ幸いです。これが私がしたことです(c [k]は係数です):

0 投票する
1 に答える
149 参照

iphone - NSDecimalNumber 10^-65 の 2 乗がアンダーフロー例外ではなく 10^126 になるのはなぜですか?

コードは次のとおりです。

プログラムがアンダーフロー例外で終了することを期待していましたが、そうではありませんでした。さらに、NSLog を取得すると、number3 が巨大な数として得られます。「test」を 64 未満に変更すると、正しい出力 (つまり、10^(-2*test)) が得られます。ここで何が起こっているか知っている人はいますか?つまり、回避するのは非常に簡単ですが、何かが欠けていない限り (かなり可能性があります)、NSDecimalNumber クラスのエラーのようです。

0 投票する
1 に答える
9414 参照

c++ - doubleが負の値にオーバーフローする可能性はありますか?

こんにちは私はg++コンパイラを使用していて、(私が思うに)doublesのアンダーフローを経験しています。これは可能ですか?もしそうなら、動作はどのように定義されますか

共分散行列(51x51)のcsv形式をここにアップロードしました:http://pastebin.com/r0fx1qsx

これは、行列式を計算するために使用しているコードです(c ++ではブーストが必要です)(その後、long doubleに切り替えて、効果がありませんでした):

データに対して与えられた結果はです-3.59916e-183

次のmatlabコードを実行すると:

ご覧のとおり、1つは(わずかに)ポジティブですが、もう1つは(わずかに)ネガティブです