E.V.E
v2022.03.00

◆ digamma

eve::digamma = {}
inlineconstexpr

Computes the Digamma function i.e. the logarithmic derivative of the \(\Gamma\) function.

Defined in header

#include <eve/module/special.hpp>

Callable Signatures

namespace eve
{
template< eve::floating_real_value T >
T digamma(T x) noexcept;
}
constexpr callable_digamma_ digamma
Computes the Digamma function i.e. the logarithmic derivative of the function.
Definition: digamma.hpp:56
Definition: all_of.hpp:22

Parameters

x: real or complex argument.

Return value

The value of the Digamma function: \(\frac{\Gamma'(x)}{\Gamma(x)}\) is returned.

Example

Real version

#include <eve/module/special.hpp>
#include <eve/wide.hpp>
#include <iostream>
int main()
{
wide_ft pd = {0.5, -1.5, 0.1, -1.0, 19.0, 25.0, 21.5, 10000.0};
std::cout << "---- simd" << '\n'
<< "<- pd = " << pd << '\n'
<< "-> digamma(pd) = " << eve::digamma(pd) << '\n';
double xd = -1.0;
std::cout << "---- scalar" << '\n'
<< "<- xd = " << xd << '\n'
<< "-> digamma(xd) = " << eve::digamma(xd) << '\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 ref = { 0.0f, 1.0f, -1.0f, 0.5f};
wide_ft imf = { 2.0f , -1.0, -5.0, 0.0};
auto z = eve::as_complex_t<wide_ft>(ref, imf);
std::cout
<< "---- simd" << std::endl
<< "<- z = " << z << std::endl
<< "-> digamma(z) = " << eve::digamma(z) << std::endl;
return 0;
}