Computes the beta function: \(\displaystyle \mathbf{B}(x, y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)}\) is returned.
Defined in header
#include <eve/module/special.hpp>
{
template< eve::floating_real_value T, eve::floating_real_value U >
auto beta(T x,U y)
noexcept;
template< eve::floating_value T, eve::floating_value U >
auto beta(eve::as_complex_t<T> x, U y)
noexcept;
template< eve::floating_value T, eve::floating_value U >
auto beta(T x, eve::as_complex_t<U> y)
noexcept;
template< eve::floating_value T, eve::floating_value U >
auto beta(eve::as_complex_t<T> x, eve::as_complex_t<U> y)
noexcept;
}
constexpr callable_beta_ beta
Computes the beta function: is returned.
Definition: beta.hpp:66
Definition: all_of.hpp:22
Parameters
x
, y
: strictly positive real floating argument.
x
, y
: real floating or complex arguments.
Return value
- \(\displaystyle \mathbf{B}(x,y) = \int_0^1 t^{x-1}(1-t)^{y-1}\mbox{d}t\)
- The complex \(\displaystyle \mathbb{B}(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)}\) is returned.
Real version
#include <eve/module/special.hpp>
#include <eve/wide.hpp>
#include <iostream>
int main()
{
wide_ft pf = { 0.0f, 1.0f, 4.0f, 2.0f };
wide_ft qf = { 1.0f, 1.0f, 3.0f, 5.0f};
std::cout
<< "---- simd" << '\n'
<< "<- pf = " << pf << '\n'
<< "<- qf = " << qf << '\n'
<<
"-> beta(pf, qf) = " <<
eve::beta(pf, qf) <<
'\n'
;
float xf = 2.0f;
float yf = 10.0f;
std::cout
<< "---- scalar" << '\n'
<< "<- xf = " << xf << '\n'
<< "<- yf = " << yf << '\n'
<<
"-> beta(xf, yf) = " <<
eve::beta(xf, yf) <<
'\n';
return 0;
}
Wrapper for SIMD registers.
Definition: wide.hpp:65
Complex version
#include <eve/module/complex.hpp>
#include <eve/wide.hpp>
#include <iostream>
int main()
{
wide_ft ref1 = { 0.0f, 1.0f, -1.0f, 0.5f};
wide_ft imf1 = { 2.0f , -1.0, -5.0, 0.0};
auto z1 = eve::as_complex_t<wide_ft>(ref1, imf1);
wide_ft ref2 = { 4.0f, 0.0f, -1.0f, -0.5f};
wide_ft imf2 = { -2.0f , 1.0, 3.0, 10.0};
auto z2 = eve::as_complex_t<wide_ft>(ref2, imf2);
std::cout
<< "---- simd" << std::endl
<< "<- z1 = " << z1 << std::endl
<< "<- z2 = " << z2 << std::endl
<<
"-> beta(z1,z2) = " <<
eve::beta(z1,z2) << std::endl;
return 0;
}