ホーム | ブログ | C++辞典 | サイトマップ | FAQ | 掲示板 | リンク集
メイン・メニュー
インデックス
プログラミング
その他
Top / <cmath>ヘッダ

<cmath>ヘッダ

 <cmath>ヘッダは、数学関数の宣言といくつかのマクロを定義する。数学関数の多くは、引数として浮動小数点数を受け取り、浮動小数点数を返す。C では、float 型および long double 型に対応した関数は、関数名に 'f' および 'l' の添え字が付けられる*1が、C++ では多重定義される。

マクロ

HUGE_VAL

巨大値

解説
 必ずしも float 型で表現できるとは限らない巨大な値を表すマクロ。数学関数でオーバーフローが発生した場合の返却値に使用される。処理系が無限大をサポートする場合は、HUGE_VAL が無限大として定義されることが多い。

EDOM

定義域エラー

解説
 errno マクロに設定される値の一つ。

ERANGE

範囲エラー

解説
 errno マクロに設定される値の一つ。

関数

acos

逆余弦関数

形式
namespace std {
  float acos(float x);
  double acos(double x);
  long double acos(long double x);
}

引数
  x:  余弦値

返却値
 区間 [0, +π] ラジアンの逆余弦値を返す。

解説
 x の逆余弦を計算する。
 x が区間 [-1, +1] の範囲にない場合は定義域エラーとなり、errnoEDOM が設定される。この場合の返却値処理系定義である。

asin

逆正弦関数

形式
namespace std {
  float asin(float x);
  double asin(double x);
  long double asin(long double x);
}

引数
  x:  正弦値

返却値
 区間 [-π/2, +π/2] ラジアンの逆正弦値を返す。

解説
 x の逆正弦を計算する。
 x が区間 [-1, +1] の範囲にない場合は定義域エラーとなり、errnoEDOM が設定される。この場合の返却値処理系定義である。

atan

逆正接関数

形式
namespace std {
  float atan(float x);
  double atan(double x);
  long double atan(long double x);
}

引数
  x:  正接値

返却値
 区間 [-π/2, +π/2] ラジアンの逆正接値を返す。

atan2

x/y の逆正接

形式
namespace std {
  float atan2(float x, float y);
  double atan2(double x, double y);
  long double atan2(long double x, long double y);
}

引数
  x:  分子
  y:  分母

返却値
 区間 [-π, +π] ラジアンの逆正接値を返す。

解説
 x/y の逆正接を計算する。
 xy の両方が 0 の場合は定義域エラーとなり、errnoERANGE が設定される。この場合の返却値処理系定義である。

ceil

天井関数

形式
namespace std {
  float ceil(float x);
  double ceil(double x);
  long double ceil(long double x);
}

引数
  x:  浮動小数点数

返却値
 x 以上の最小の整数値を浮動小数点数で返す。

cos

余弦関数

形式
namespace std {
  float cos(float x);
  double cos(double x);
  long double cos(long double x);
}

引数
  x:  角度 (ラジアン)

返却値
 cos x を返す。

cosh

双曲線余弦関数

形式
namespace std {
  float cosh(float x);
  double cosh(double x);
  long double cosh(long double x);
}

引数
  x:  浮動小数点数

返却値
 x の双曲線余弦値を返す。ただし、オーバーフローが発生した場合、x と同じ符号で絶対値が HUGE_VAL の値を返す。アンダーフローの場合は 0 を返す。

解説
 cosh x を計算する。オーバーフローが発生した場合は errnoERANGE が設定される。

exp

指数関数

形式
namespace std {
  float exp(float x);
  double exp(double x);
  long double exp(long double x);
}

引数
  x:  浮動小数点数

返却値
 ex 乗を返す。

解説
 x の指数関数を計算する。結果がアンダーフローオーバーフローした場合は範囲エラーとなり、HUGE_VAL を返す。この場合、errnoERANGE が設定される。結果がアンダーフローの場合は 0 を返すが、errnoERANGE が設定されるかどうかは処理系定義である。

fabs

浮動小数点絶対値

形式
namespace std {
  float fabs(float x);
  double fabs(double x);
  long double fabs(long double x);
}

floor

床関数

形式
namespace std {
  float floor(float x);
  double floor(double x);
  long double floor(long double x);
}

引数
  x:  浮動小数点数

返却値
 x 以下の最大の整数を浮動小数点数で返す。

fmod

浮動小数点剰余

形式
namespace std {
  float fmod(float x, float y);
  double fmod(double x, double y);
  long double fmod(long double x, long double y);
}

引数
  x:  被除数
  y:  除数

返却値
 x / y における剰余を返す。

解説
 浮動小数点数の剰余算を行う。y が 0 でない場合、ある整数 n に対して x - ny の値を返す。ただし、その値は x と同じ符号を持ち、絶対値において y より小さい値となる。y が 0 の場合は 0 を返す。

frexp

指数分解

形式
namespace std {
  float frexp(float x, int* n);
  double frexp(double x, int* n);
  long double frexp(long double x, int* n);
}

引数
  x:  浮動小数点数
  n:  2 の指数部の格納先

返却値
 x / (2 の *n 乗) を返す。

解説
 x を正規化分数と 2 の整数累乗に分割する。2 の整数累乗における指数は *n に格納される。
 区間 [0.5, 1) または 0 の任意の数を y とするとき、x = y・(2 の *n 乗) となるような y を返す。x が 0 の場合は 0 を返し、*n には 0 が格納される。

ldexp

指数合成

形式
namespace std {
  float ldexp(float x, int n);
  double ldexp(double x, int n);
  long double ldexp(long double x, int n);
}

引数
  x:  仮数部
  n:  2 の指数部

返却値
 x・(2 の n 乗) を返す。

解説
 x・2² を計算する。結果がオーバーフローした場合、絶対値が HUGE_VAL で数学的に正しい値の符号を持つ値を返す。この場合、errnoERANGE が設定される。結果がアンダーフローの場合は 0 を返すが、errnoERANGE が設定されるかどうかは処理系定義である。

log

自然対数

形式
namespace std {
  float log(float x);
  double log(double x);
  long double log(long double x);
}

引数
  x:  真数

返却値
 x の自然対数を返す。

解説
 ネイピア数 e を底とする x の対数を計算する。
 x が負の場合は定義域エラーとなり、errnoEDOM が設定される。定義域エラーの場合の返却値処理系定義である。x が 0 の場合は範囲エラーとなり、0 を返す。範囲エラーの場合、errnoERANGE が設定されるかどうかは処理系定義である。

log10

常用対数

形式
namespace std {
  float log10(float x);
  double log10(double x);
  long double log10(long double x);
}

引数
  x:  真数

返却値
 x の常用対数を返す。

解説
 10 を底とする x の対数を計算する。
 x が負の場合は定義域エラーとなり、errnoEDOM が設定される。定義域エラーの場合の返却値処理系定義である。x が 0 の場合は範囲エラーとなり、0 を返す。範囲エラーの場合、errnoERANGE が設定されるかどうかは処理系定義である。

modf

小数点分離

形式
namespace std {
  float modf(float x, float* iptr);
  double modf(double x, double* iptr);
  long double modf(long double x, long double* iptr);
}

引数
  x:  浮動小数点数
  iptr:  整数部の格納先

返却値
 x の小数部を符号付きで返す。

解説
 x の整数部と小数部を分離する。小数部は、*iptrdouble 型として格納する。

pow

累乗関数

形式
namespace std {
  float pow(float x, float y);
  double pow(double x, double y);
  long double pow(long double x, long double y);
}

引数
  x:  底
  y:  指数

返却値
 xy 乗を返す。

解説
 xy 乗を計算する。
 以下のいずれかの条件を満たす場合は定義域エラーとなり、返却値処理系定義となり、errnoEDOM が設定される。

  • x == 0 かつ y <= 0
  • x < 0 かつ y が整数値でない。

 結果の絶対値が大きすぎる場合は範囲エラーとなり、絶対値が HUGE_VAL で数学的に正しい符号を持つ値を返し、errnoERANGE が設定される。結果の絶対値が小さすぎる場合は 0 を返すが、errnoERANGE が設定されるかどうかは処理系定義である。

sin

正弦関数

形式
namespace std {
  float sin(float x);
  double sin(double x);
  long double sin(long double x);
}

引数
  x:  角度 (ラジアン)

返却値
 sin x を返す。

sinh

双曲線正弦関数

形式
namespace std {
  float sinh(float x);
  double sinh(double x);
  long double sinh(long double x);
}

引数
  x:  浮動小数点数

返却値
 x の双曲線正弦値を返す。ただし、オーバーフローが発生した場合、x と同じ符号で絶対値が HUGE_VAL の値を返す。アンダーフローの場合は 0 を返す。

解説
 sinh x を計算する。オーバーフローが発生した場合は errnoERANGE が設定される。

sqrt

平方根

形式
namespace std {
  float sqrt(float x);
  double sqrt(double x);
  long double sqrt(long double x);
}

引数
  x:  数値 (x ≧ 0)

返却値
  x の平方根を返す。

解説
 正の平方根を計算する。x が負の場合、errnoEDOM が設定される。その場合の返却値処理系定義

tan

正接関数

形式
namespace std {
  float tan(float x);
  double tan(double x);
  long double tan(long double x);
}

引数
  x:  角度 (ラジアン)

返却値
 tan x を返す。

tanh

双曲線正接関数

形式
namespace std {
  float tanh(float x);
  double tanh(double x);
  long double tanh(long double x);
}

引数
  x:  浮動小数点数

返却値
 x の双曲線正接値を返す。ただし、オーバーフローが発生した場合、x と同じ符号で絶対値が HUGE_VAL の値を返す。アンダーフローの場合は 0 を返す。

解説
 tanh x を計算する。オーバーフローが発生した場合は errnoERANGE が設定される。


*1 例えば、fabs の float 版は fabsf、long double 版は fabsl である。

トップ   編集 差分 バックアップ 添付 複製 名前変更   一覧 単語検索   ヘルプ   最終更新のRSS
Counter: 50832, today: 4, yesterday: 0
Last-modified: Tue, 06 Dec 2005 12:16:11 JST (4392d)
 ホーム | プロフィール | メール | ログイン | 管理
Copyright © 2005-2009 by TAKAGI Nobuhisa