#include <eve/module/core.hpp>
#include <iostream>
#include <iomanip>
#include <cfenv>
#include <vector>
int main()
{
eve::wide wf0{1.0f, 1.0f, 2.0f, 3.0f, -1.0f, -2.0f, -3.0f, -4.0f};
std::cout << std::setprecision(15) << "<- wf0 = " << wf0 << "\n";
std::cout << "<- wf1 = " << wf1 << "\n";
std::cout << "<- wi0 = " << wi0 << "\n";
std::cout << "<- wi1 = " << wi1 << "\n";
std::cout << "<- wu0 = " << wu0 << "\n";
std::cout << "<- wu1 = " << wu1 << "\n";
std::cout <<
"-> sum_of_squares[wf0 != 0](wf0, wf1) = " <<
eve::sum_of_squares[wf0 != 0](wf0, wf1) <<
"\n";
std::cout << std::setprecision(16);
std::cout <<
"-> sum_of_squares(1.0f, sqteps_2, sqteps_2, sqteps_2, sqteps_2) = " <<
eve::sum_of_squares(1.0f, sqteps_2, sqteps_2, sqteps_2, sqteps_2) <<
"\n";
std::cout <<
"-> sum_of_squares[kahan](1.0f, sqteps_2, sqteps_2, sqteps_2, sqteps_2) = " <<
eve::sum_of_squares[eve::kahan](1.0f, sqteps_2, sqteps_2, sqteps_2, sqteps_2) <<
"// float result\n";
std::cout <<
"-> sum_of_squares[widen](1.0f, sqteps_2, sqteps_2, sqteps_2, sqteps_2) = " <<
eve::sum_of_squares[
eve::widen](1.0f, sqteps_2, sqteps_2, sqteps_2, sqteps_2) <<
"// double result\n";
auto tup =
kumi::tuple{1.0f, sqteps_2, sqteps_2, sqteps_2, sqteps_2};
std::cout <<
"-> sum_of_squares[kahan](tup) = " <<
eve::sum_of_squares[eve::kahan](tup) <<
"\n";
float o = 1.0f;
float m = (v/3)*2;
std::cout << "<- o = " << o << "\n";
std::cout << "-> i = " << i << "\n";
std::cout << "-> n = " << n << "\n";
std::cout << "-> m = " << m << "\n";
std::cout << "-> v = " << v << "\n";
}
constexpr auto nan
Computes the IEEE quiet NaN constant.
Definition nan.hpp:67
constexpr auto eps
Computes a constant to the machine epsilon.
Definition eps.hpp:74
constexpr auto valmax
Computes the greatest representable value.
Definition valmax.hpp:67
constexpr auto inf
Computes the infinity ieee value.
Definition inf.hpp:67
constexpr auto sqrteps
Computes the square root of the machine epsilon.
Definition sqrteps.hpp:72
constexpr auto zero
Computes the constant 0.
Definition zero.hpp:78
constexpr auto strict
Turns the guarantee of lower or upper into a strict inequality.
Definition core.hpp:105
constexpr auto widen
Computes the result in the upgraded element type.
Definition core.hpp:106
constexpr auto lower
Guarantees a result no greater than the exact mathematical one.
Definition core.hpp:103
constexpr auto upper
Guarantees a result no smaller than the exact mathematical one.
Definition core.hpp:102
Lightweight type-wrapper.
Definition as.hpp:29
Conditional expression ignoring the k last lanes from a eve::simd_value.
Definition conditional.hpp:361
Wrapper for SIMD registers.
Definition wide.hpp:94