Everything
7.4.8 <mathf.h>

各種の数値計算を行います。

<mathf.h>ではANSI規格規定外の単精度形式の数学関数の宣言とマクロの定義をしています。

各関数はfloat型の実引数を受け取り、float型の値を返します。

 

以下の定数(マクロ)はすべて処理系定義です。

種別

定義名

説明

定数

(マクロ)

EDOM

関数に入力するパラメータの値が関数内で定義している値の範囲を超える時、errnoに設定する値です。

ERANGE

関数の計算結果がfloat型の値として表せない時、あるいはオーバフロー/アンダフローとなった時、errnoに設定する値です。

HUGE_VALF

HUGE_VAL

HUGE_VALL

関数の計算結果がオーバフローした時に、関数のリターン値として返す値です。

関数

acosf

浮動小数点値の逆余弦を計算します。

asinf

浮動小数点値の逆正弦を計算します。

atanf

浮動小数点値の逆正接を計算します。

atan2f

浮動小数点値どうしを除算した結果の値の逆正接を計算します。

cosf

浮動小数点値のラジアン値の余弦を計算します。

sinf

浮動小数点値のラジアン値の正弦を計算します。

tanf

浮動小数点値のラジアン値の正接を計算します。

coshf

浮動小数点値の双曲線余弦を計算します。

sinhf

浮動小数点値の双曲線正弦を計算します。

tanhf

浮動小数点値の双曲線正接を計算します。

expf

浮動小数点値の指数関数を計算します。

frexpf

浮動小数点値を[0.5, 1.0)の値と2のべき乗の積に分解します。

ldexpf

浮動小数点値と2のべき乗の乗算を計算します。

logf

浮動小数点値の自然対数を計算します。

log10f

浮動小数点値の10を底とする対数を計算します。

modff

浮動小数点値を整数部分と小数部分に分解します。

powf

浮動小数点値のべき乗を計算します。

sqrtf

浮動小数点値の正の平方根を計算します。

ceilf

浮動小数点値の小数点以下を切り上げた整数値を求めます。

fabsf

浮動小数点値の絶対値を計算します。

floorf

浮動小数点値の小数点以下を切り捨てた整数値を求めます。

fmodf

浮動小数点値どうしを除算した結果の余りを計算します。

 

エラーが発生した時の動作を以下に説明します。

 

(1)

定義域エラー

関数に入力するパラメータの値が関数内で定義している値の範囲を超えている時、定義域エラーが発生します。この時errnoにはEDOMの値が設定されます。また、関数のリターン値は、処理系定義です。

(2)

範囲エラー

関数における計算結果がfloat型の値として表せない時には範囲エラーが発生します。この時、errnoにはERANGEの値が設定されます。また、計算結果がオーバフローの時は、正しく計算が行われた時と同様の符号の値をリターン値として返します。逆に計算結果がアンダフローの時は、0をリターン値として返します。

注 1.

<mathf.h>の関数の呼び出しによって定義域エラーが発生する可能性がある場合は、結果の値をそのまま用いるのは危険です。必ずerrnoをチェックしてから用いてください。

          .
          .
          .
          1  x=asinf(a);
          2  if (errno==EDOM)
          3  printf("error\n");
          4  else
          5  printf("result is : %f\n",x);
          .
          .
          .

 

1行目で、asinf関数を使って逆正弦値を求めます。このとき、実引数aの値が、asinf関数の定義域[-1.0,1.0]の範囲を超えていると、errnoに値EDOMが設定されます。2行目で定義域エラーが生じたかどうかの判定をします。定義域エラーが生じれば、3行目で、errorを出力します。定義域エラーが生じなければ5行目で、逆正弦値を出力します。

注 2.

範囲エラーが発生するかどうかは、コンパイラによって定まる、浮動小数点型の内部表現形式によって異なります。例えば無限大を値として表現できる内部表現形式を採用している場合、範囲エラーの生じないように<mathf.h>のライブラリ関数を実現することができます。

 

処理系定義仕様

 

項目

コンパイラの仕様

1

数学関数の入力実引数が範囲を超えたときの数学関数が返す値

非数を返します。非数の形式は4.1.5 (5) 浮動小数点型の仕様を参照してください

2

数学関数でアンダフローエラーが発生したときマクロ「ERANGE」の値が「errno」に設定されるかどうか

errnoにERANGEを設定する関数については、「10.5.6 C標準ライブラリ関数のエラーメッセージ」を参照してください。上記以外は設定しません。

3

fmodf関数で第2実引数の値が0の場合、範囲エラーとなるかどうか

範囲エラーとなります。

fmodの戻り値の詳細は、7.4.7 <math.h> fmod / fmodf / fmodlを参照してください。