E.V.E
v2023.02.15
Loading...
Searching...
No Matches
◆
bessel_j
auto eve::bessel_j =
eve::functor
<bessel_j_t>
inline
constexpr
#include <eve/functions.hpp>
Callable Signatures
namespace
eve
{
// Regular overload
constexpr
auto
bessel_j
(
value
auto
n,
floating_value
auto
z)
noexcept
;
// 1
// Semantic modifier
constexpr
auto
bessel_j
[cylindrical](
value
auto
n,
floating_value
auto
z)
noexcept
;
// 1
constexpr
auto
bessel_j
[spherical](
value
auto
n,
floating_value
auto
z)
noexcept
;
// 2
// Lanes masking
constexpr
auto
bessel_j
[
conditional_expr
auto
c](
/*any previous overload*/
)
noexcept
;
// 3
constexpr
auto
bessel_j
[
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_j
constexpr auto bessel_j
Computes the spherical or cylindrical Bessel functions of the first kind,.
Definition
bessel_j.hpp:85
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 \(J_n\)(z) (cylindrical).
returns \(j_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: Bessel Function of the First Kind
Wolfram MathWorld: Spherical Bessel Function of the First Kind
Wikipedia: Bessel function
DLMF: 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_j(wu, wdf) = "
<<
eve::bessel_j
(wu, wdf) <<
"\n"
;
std::cout <<
"-> bessel_j[ignore_last(2)](wu, wdf)= "
<<
eve::bessel_j
[
eve::ignore_last
(2)](wu, wdf) <<
"\n"
;
std::cout <<
"-> bessel_j[wu != 2u](wu, wdf) = "
<<
eve::bessel_j
[wu != 2u](wu, wdf) <<
"\n"
;
std::cout <<
"-> bessel_j(m, wd) = "
<<
eve::bessel_j
(m, wd) <<
"\n"
;
std::cout <<
"-> bessel_j[spherical](m, wd) = "
<<
eve::bessel_j
[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