E.V.E
v2023.02.15
Loading...
Searching...
No Matches
◆
bessel_k
auto eve::bessel_k =
eve::functor
<bessel_k_t>
inline
constexpr
#include <eve/functions.hpp>
Callable Signatures
namespace
eve
{
// Regular overload
constexpr
auto
bessel_k
(
value
auto
n,
floating_value
auto
z)
noexcept
;
// 1
// Semantic modifier
constexpr
auto
bessel_k
[cylindrical](
value
auto
n,
floating_value
auto
z)
noexcept
;
// 1
constexpr
auto
bessel_k
[spherical](
value
auto
n,
floating_value
auto
z)
noexcept
;
// 2
// Lanes masking
constexpr
auto
bessel_k
[
conditional_expr
auto
c](
/*any previous overload*/
)
noexcept
;
// 3
constexpr
auto
bessel_k
[
logical_value
auto
m](
/*any previous overload*/
)
noexcept
;
// 3
}
eve::conditional_expr
Specifies that a type is a Conditional Expression.
Definition
conditional.hpp:28
eve::floating_value
The concept floating_value<T> is satisfied if and only if T satisfies eve::value and the element type...
Definition
value.hpp:116
eve::logical_value
The concept logical_value<T> is satisfied if and only if T satisfies eve::value and the element type ...
Definition
value.hpp:132
eve::value
The concept value<T> is satisfied if and only if T satisfies either eve::scalar_value or eve::simd_va...
Definition
value.hpp:34
eve::bessel_k
constexpr auto bessel_k
Computes the modified spherical or cylindrical Bessel functions of the second kind,...
Definition
bessel_k.hpp:84
eve
EVE Main Namespace.
Definition
abi.hpp:18
Parameters
n
: order (integral or floating)
z
: Value to process.
m
:
Logical value
masking the operation.
Return value
returns \(Y_n\)(z) (cylindrical).
returns \(y_n\)(z) (spherical).
The operation is performed conditionally
.
Note
if n is not integral nor flint negative z entries produce NaN outputs as the correct result is not real. You may want to use
KYOSU
to avoid this behavior and produce complex outputs (that are not available in
EVE
).
External references
Wolfram MathWorld: Modified Bessel Function of the second Kind
Wolfram MathWorld: Modified Spherical Bessel Function of the second Kind
Wikipedia: Bessel function
DLMF: Modified Bessel functions
Example
// revision 1
#include <eve/module/bessel.hpp>
#include <iostream>
eve::wide<double>
wdf([](
auto
i,
auto
c)->
double
{
return
2*(i-c/2);});
eve::wide<std::uint64_t>
wu([](
auto
i,
auto
)->std::uint64_t{
return
2*i;});
eve::wide
wd{0.5, 1.5, 0.1, 1.0, 19.0, 0.0, 0.0, 10000.0};
eve::wide
m{0.5, -1.0, 1.5, -2.0, 2.5, -2.6, 3.2, -12.0};
int
main()
{
std::cout <<
"<- wdf = "
<< wdf <<
"\n"
;
std::cout <<
"<- wu = "
<< wu <<
"\n"
;
std::cout <<
"<- m = "
<< m <<
"\n"
;
std::cout <<
"<- wd = "
<< wd <<
"\n"
;
std::cout <<
"-> bessel_k(wu, wdf) = "
<<
eve::bessel_k
(wu, wdf) <<
"\n"
;
std::cout <<
"-> bessel_k[ignore_last(2)](wu, wdf)= "
<<
eve::bessel_k
[
eve::ignore_last
(2)](wu, wdf) <<
"\n"
;
std::cout <<
"-> bessel_k[wu != 2u](wu, wdf) = "
<<
eve::bessel_k
[wu != 2u](wu, wdf) <<
"\n"
;
std::cout <<
"-> bessel_k(m, wd) = "
<<
eve::bessel_k
(m, wd) <<
"\n"
;
std::cout <<
"-> bessel_k[spherical](m, wd) = "
<<
eve::bessel_k
[eve::spherical](m, wd) <<
"\n"
;
}
eve::ignore_last
Conditional expression ignoring the k last lanes from a eve::simd_value.
Definition
conditional.hpp:332
eve::wide
Wrapper for SIMD registers.
Definition
wide.hpp:86
eve