C and C++


LANG.ARITH.FMULOFLOW : Float Multiplication Overflow

要旨

A multiplication expression where:

プロパティ

クラス名 Float Multiplication Overflow
日本語クラス名 Float Multiplication Overflow
クラス分類 信頼性 (reliability)
ニーモニック LANG.ARITH.FMULOFLOW
カテゴリー
MisraC2023 MisraC2023:D.4.15 Evaluation of floating-point expressions shall not lead to the undetected generation of infinities and NaNs
Misra2012 Misra2012:D.4.15 Evaluation of floating-point expressions shall not lead to the undetected generation of infinities and NaNs
MisraC++2023 MisraC++2023:0.3.1 Floating-point arithmetic should be used appropriately
CWE CWE:682 Incorrect Calculation
CERT-C CERT-C:FLP00-C Understand the limitations of floating-point numbers
JSF++ JSF++:203 Evaluation of expressions shall not lead to overflow/underflow (unless required algorithmically and then should be heavily documented).
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっています。チェックを有効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += allow class="Float Multiplication Overflow"

/* Behavior described in comments is based on a system where the
 * maximum representable finite float is
 * 3.40282346638528859811704183484516925e+38F
 */

#define MYFLT 4e+37F

float floatfn(void);

float fmuloflow(void){
    return 1000 * MYFLT; /* 'Float Multiplication Overflow' warning issued here */
}

float fmuloflow_ok(void){
    return  2 * MYFLT;             /* ok: product is representable as float */
}

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。