std::beta, std::betaf, std::betal
From cppreference.com
< cpp | experimental | special functions
| double beta( double x, double y ); float betaf( float x, float y ); |
(1) | |
| Promoted beta( Arithmetic x, Arithmetic y ); |
(2) | |
2) (1) でカバーされていない、算術型のすべての引数の組み合わせに対するオーバーロードまたは関数テンプレートのセットです。整数型の引数がある場合、それは double にキャストされます。long double の引数がある場合、戻り値の型
Promoted も long double になります。それ以外の場合、戻り値の型は常に double です。すべての特殊関数と同様に、beta が <cmath> で利用可能であることは、実装によって __STDCPP_MATH_SPEC_FUNCS__ が 201003L 以上の値に定義されており、かつユーザーが標準ライブラリヘッダーをインクルードする前に __STDCPP_WANT_MATH_SPEC_FUNCS__ を定義している場合にのみ保証されます。
目次 |
[編集] Parameters
| x, y | - | 浮動小数点型または整数型の値 |
[編集] Return value
エラーが発生しない場合、x と y のベータ関数の値、すなわち ∫10tx-1
(1 - t)(y-1)
dt、または等価的に
| Γ(x)Γ(y) |
| Γ(x + y) |
[編集] Error handling
math_errhandling で指定されたとおりにエラーが報告される場合があります。
- 引数に NaN が含まれる場合、NaN が返され、ドメインエラーは報告されません。
- この関数は、x と y の両方がゼロより大きい場合にのみ定義されていることが要求され、それ以外の場合はドメインエラーを報告することが許可されています。
[編集] Notes
TR 29124 をサポートしないが TR 19768 をサポートする実装では、この関数はヘッダー tr1/cmath および名前空間 std::tr1 で提供されます。
この関数の実装は、boost.math でも利用可能です。
beta(x, y) は beta(y, x) と等しくなります。
x と y が正の整数である場合、beta(x, y) は| (x - 1)!(y - 1)! |
| (x + y - 1)! |
⎜
⎝n
k⎞
⎟
⎠=
| 1 |
| (n + 1)Β(n - k + 1, k + 1) |
[編集] Example
(gcc 6.0で示されたとおりに動作します)
このコードを実行
#define __STDCPP_WANT_MATH_SPEC_FUNCS__ 1 #include <cmath> #include <iomanip> #include <iostream> #include <string> double binom(int n, int k) { return 1 / ((n + 1) * std::beta(n - k + 1, k + 1)); } int main() { std::cout << "Pascal's triangle:\n"; for (int n = 1; n < 10; ++n) { std::cout << std::string(20 - n * 2, ' '); for (int k = 1; k < n; ++k) std::cout << std::setw(3) << binom(n, k) << ' '; std::cout << '\n'; } }
出力
Pascal's triangle:
2
3 3
4 6 4
5 10 10 5
6 15 20 15 6
7 21 35 35 21 7
8 28 56 70 56 28 8
9 36 84 126 126 84 36 9[編集] See also
| (C++11)(C++11)(C++11) |
ガンマ関数 (関数) |
[編集] External links
Weisstein, Eric W. "Beta Function." MathWorld--A Wolfram Web Resource より。