E.V.E  0.1-beta

◆ factorial

eve::factorial = {}
inlineconstexpr

Callable object computing unsigned integral factorial \(\displaystyle n! = \prod_{i=1}^n i\).

Required header: #include <eve/function/factorial.hpp>

Members Functions

Member Effect
operator() unsigned integral factorial

auto operator()( unsigned_value auto n ) const noexcept;
Definition: value.hpp:63

Parameters

n: unsigned value.

Return value

The result [element type](eve::element_type) is always double to try to avoid overflow and its cardinal is the same as the entry in case of an simd call.

Warning
this function will overflow as soon as the input is greater than 171

Supported decorators

no decorators are supported

Example

See it live on Compiler Explorer

#include <eve/function/factorial.hpp>
#include <eve/wide.hpp>
#include <iostream>
#include <iomanip>
int main()
{
w32_t pi32 = {93, 25, 32, 180, 1, 2, 3, 4};
std::cout << "---- simd" << std::setprecision(17) << '\n'
<< " <- pi32 = " << pi32 << '\n'
<< " -> factorial(pi32) = " << eve::factorial(pi32) << '\n';
std::uint32_t xi = 18;
std::cout << "---- scalar" << '\n'
<< " xi = " << xi << '\n'
<< " -> factorial(xi) = " << eve::factorial(xi) << '\n';
return 0;
}
constexpr callable_factorial_ factorial
Callable object computing unsigned integral factorial .
Definition: factorial.hpp:63
Wrapper for SIMD registers.
Definition: wide.hpp:65