Mathematical functions
Operations and functions of xtensor are not evaluated until they are assigned.
In the following, e1, e2 and e3 can be arbitrary tensor expressions.
The results of operations and functions are assigned to xt::xarray in the examples,
but that could be any other container (or even views). To keep an unevaluated
operator / function, assign to an auto variable:
auto res = e1 + e2;
See Expressions and lazy evaluation for more details on unevaluated expressions.
Basic functions
xt::xarray<double> res0 = xt::abs(e1);
xt::xarray<double> res1 = xt::fabs(e1);
xt::xarray<double> res2 = xt::fmod(e1, e2);
xt::xarray<double> res3 = xt::remainder(e1, e2);
xt::xarray<double> res4 = xt::fma(e1, e2, e3);
xt::xarray<double> res5 = xt::maximum(e1, e2);
xt::xarray<double> res6 = xt::minimum(e2, e2);
xt::xarray<double> res7 = xt::fmax(e1, e2);
xt::xarray<double> res8 = xt::fmin(e1, e2);
xt::xarray<double> res9 = xt::fdim(e1, e2);
xt::xarray<double> res10 = xt::clip(e1, e2, e3);
xt::xarray<double> res11 = xt::sign(e1);
Exponential functions
xt::xarray<double> res0 = xt::exp(e1);
xt::xarray<double> res2 = xt::exp2(e1);
xt::xarray<double> res3 = xt::expm1(e1);
xt::xarray<double> res4 = xt::log(e1);
xt::xarray<double> res5 = xt::log2(e1);
xt::xarray<double> res6 = xt::log10(e1);
xt::xarray<double> res7 = xt::log1p(e1);
Power functions
xt::xarray<double> res0 = xt::pow(e1, e2);
xt::xarray<double> res1 = xt::sqrt(e1);
xt::xarray<double> res2 = xt::cbrt(e1);
xt::xarray<double> res3 = xt::hypot(e1, e2);
Trigonometric functions
xt::xarray<double> res0 = xt::cos(e1);
xt::xarray<double> res1 = xt::sin(e1);
xt::xarray<double> res2 = xt::tan(e1);
xt::xarray<double> res3 = xt::acos(e2);
xt::xarray<double> res4 = xt::asin(e2);
xt::xarray<double> res5 = xt::atan(e2);
xt::xarray<double> res6 = xt::atan2(e2, e3);
Hyperbolic functions
xt::xarray<double> res0 = xt::cosh(e1);
xt::xarray<double> res1 = xt::sinh(e1);
xt::xarray<double> res2 = xt::tanh(e1);
xt::xarray<double> res3 = xt::acosh(e2);
xt::xarray<double> res4 = xt::asinh(e2);
xt::xarray<double> res5 = xt::atanh(e2);
Error and gamma functions
xt::xarray<double> res0 = xt::erf(e1);
xt::xarray<double> res1 = xt::erfc(e1);
xt::xarray<double> res2 = xt::tgamma(e1);
xt::xarray<double> res3 = xt::lgamma(e1);
Nearest integer operations
xt::xarray<double> res0 = xt::ceil(e1);
xt::xarray<double> res1 = xt::floor(e1);
xt::xarray<double> res2 = xt::trunc(e1);
xt::xarray<double> res3 = xt::round(e1);
xt::xarray<double> res4 = xt::nearbyint(e1);
xt::xarray<double> res5 = xt::rint(e1);
Classification functions
xt::xarray<double> res0 = xt::isfinite(e1);
xt::xarray<double> res1 = xt::isinf(e1);
xt::xarray<double> res2 = xt::isnan(e1);
xt::xarray<double> res3 = xt::isclose(e1, e2);
bool res4 = xt::allclose(e1, e2);