Expressions¶
abs
function¶
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
expression_function<fn::abs, E1> abs(E1 &&x)
Returns template expression that returns the absolute value of x.
Source code
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
KFR_FUNCTION expression_function<fn::abs, E1> abs(E1&& x)
{
return { fn::abs(), std::forward<E1>(x) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L302
absmax
function¶
template <typename E1, typename E2,
KFR_ACCEPT_EXPRESSIONS(E1, E2)>
expression_function<fn::absmax, E1, E2> absmax(E1 &&x,
E2 &&y)
Returns the greater in magnitude of two values. Accepts and returns expressions.
Source code
template <typename E1, typename E2, KFR_ACCEPT_EXPRESSIONS(E1, E2)>
KFR_FUNCTION expression_function<fn::absmax, E1, E2> absmax(E1&& x, E2&& y)
{
return { fn::absmax(), std::forward<E1>(x), std::forward<E2>(y) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L338
absmin
function¶
template <typename E1, typename E2,
KFR_ACCEPT_EXPRESSIONS(E1, E2)>
expression_function<fn::absmin, E1, E2> absmin(E1 &&x,
E2 &&y)
Returns the smaller in magnitude of two values. Accepts and returns expressions.
Source code
template <typename E1, typename E2, KFR_ACCEPT_EXPRESSIONS(E1, E2)>
KFR_FUNCTION expression_function<fn::absmin, E1, E2> absmin(E1&& x, E2&& y)
{
return { fn::absmin(), std::forward<E1>(x), std::forward<E2>(y) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L329
add
function¶
template <typename... E, KFR_ACCEPT_EXPRESSIONS(E...)>
expression_function<fn::add, E...> add(E &&...x)
Returns template expression that returns sum of all the arguments passed to a function.
Source code
template <typename... E, KFR_ACCEPT_EXPRESSIONS(E...)>
KFR_INTRINSIC expression_function<fn::add, E...> add(E&&... x)
{
return { fn::add(), std::forward<E>(x)... };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L52
adjacent
function¶
template <typename Fn, typename E1>
expression_adjacent<Fn, E1> adjacent(Fn &&fn, E1 &&e1)
Returns template expression that returns the result of calling \(fn(x_i, x_{i-1})\)
Source code
template <typename Fn, typename E1>
KFR_INTRINSIC expression_adjacent<Fn, E1> adjacent(Fn&& fn, E1&& e1)
{
return { std::forward<Fn>(fn), std::forward<E1>(e1) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/basic_expressions.hpp#L995
cconj
function¶
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
expression_function<fn::cconj, E1> cconj(E1 &&x)
Returns template expression that returns the complex conjugate of the complex number x
Source code
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
KFR_FUNCTION expression_function<fn::cconj, E1> cconj(E1&& x)
{
return { fn::cconj(), std::forward<E1>(x) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L277
clamp
function¶
template <typename E1, typename E2, typename E3,
KFR_ACCEPT_EXPRESSIONS(E1, E2, E3)>
expression_function<fn::clamp, E1, E2, E3>
clamp(E1 &&x, E2 &&lo, E3 &&hi)
Creates an expression that returns the first argument clamped to a range [lo, hi]
Source code
template <typename E1, typename E2, typename E3, KFR_ACCEPT_EXPRESSIONS(E1, E2, E3)>
KFR_FUNCTION expression_function<fn::clamp, E1, E2, E3> clamp(E1&& x, E2&& lo, E3&& hi)
{
return { fn::clamp(), std::forward<E1>(x), std::forward<E2>(lo), std::forward<E3>(hi) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L400
template <typename E1, typename E2,
KFR_ACCEPT_EXPRESSIONS(E1, E2)>
expression_function<fn::clamp, E1, E2> clamp(E1 &&x,
E2 &&hi)
Creates an expression that returns the first argument clamped to a range [0, hi]
Source code
template <typename E1, typename E2, KFR_ACCEPT_EXPRESSIONS(E1, E2)>
KFR_FUNCTION expression_function<fn::clamp, E1, E2> clamp(E1&& x, E2&& hi)
{
return { fn::clamp(), std::forward<E1>(x), std::forward<E2>(hi) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L407
complex
complex
class¶
template <typename> complex
Represents the complex numbers. If KFR_STD_COMPLEX is defined, then kfr::complex is an alias for std::complex.
Source code
template <typename>
struct complex
https://github.com/kfrlib/kfr/blob//include/kfr/base/expression.hpp#L56
cub
function¶
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
expression_function<fn::cub, E1> cub(E1 &&x)
Returns template expression that returns cube of x.
Source code
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
KFR_INTRINSIC expression_function<fn::cub, E1> cub(E1&& x)
{
return { fn::cub(), std::forward<E1>(x) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L180
dimensions
function¶
template <index_t Dims, typename E1>
expression_dimensions<Dims, E1> dimensions(E1 &&e1)
Returns template expression with gien number of dimensions
Source code
template <index_t Dims, typename E1>
KFR_INTRINSIC expression_dimensions<Dims, E1> dimensions(E1&& e1)
{
static_assert(Dims >= expression_dims<E1>, "Number of dimensions must be greater or equal");
return { std::forward<E1>(e1) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/basic_expressions.hpp#L1069
floor
function¶
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
expression_function<fn::floor, E1> floor(E1 &&x)
Returns the largest integer value not greater than x. Accepts and returns expressions.
Source code
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
KFR_FUNCTION expression_function<fn::floor, E1> floor(E1&& x)
{
return { fn::floor(), std::forward<E1>(x) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L345
imag
function¶
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
expression_function<fn::imag, E1> imag(E1 &&x)
Returns the imaginary part of the complex value
Source code
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
KFR_INTRINSIC expression_function<fn::imag, E1> imag(E1&& x)
{
return { fn::imag{}, std::forward<E1>(x) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L270
linspace
function¶
template <typename T = void, bool precise = false, bool truncated = false, typename T1, typename T2,
typename Tout = or_type<T, ftype<std::common_type_t<T1, T2>>>>
expression_linspace<Tout, truncated> linspace(T1 start, T2 stop, size_t size,
bool endpoint = false, cbool_t<truncated> =
Returns evenly spaced numbers over a specified interval.
start The starting value of the sequence
stop The end value of the sequence. if endpoint
is false
, the last value is excluded
size Number of samples to generate
endpoint If true
, stop
is the last sample. Otherwise, it is not included
@tparam truncated If true
, linspace returns exactly size elements, otherwise, returns infinite sequence
@tparam precise No longer used since KFR5, calculations are always precise
Source code
template <typename T = void, bool precise = false, bool truncated = false, typename T1, typename T2,
typename Tout = or_type<T, ftype<std::common_type_t<T1, T2>>>>
KFR_INTRINSIC expression_linspace<Tout, truncated> linspace(T1 start, T2 stop, size_t size,
bool endpoint = false, cbool_t<truncated> = {})
{
return { static_cast<Tout>(start), static_cast<Tout>(stop), size, endpoint };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/basic_expressions.hpp#L738
make_complex
function¶
template <typename E1, typename E2,
KFR_ACCEPT_EXPRESSIONS(E1, E2)>
expression_function<fn::make_complex, E1, E2>
make_complex(E1 &&re, E2 &&im)
Constructs complex value from real and imaginary parts
Source code
template <typename E1, typename E2, KFR_ACCEPT_EXPRESSIONS(E1, E2)>
KFR_INTRINSIC expression_function<fn::make_complex, E1, E2> make_complex(E1&& re, E2&& im)
{
return { fn::make_complex{}, std::forward<E1>(re), std::forward<E2>(im) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L220
max
function¶
template <typename E1, typename E2,
KFR_ACCEPT_EXPRESSIONS(E1, E2)>
expression_function<fn::max, E1, E2> max(E1 &&x, E2 &&y)
Returns the greater of two values. Accepts and returns expressions.
Source code
template <typename E1, typename E2, KFR_ACCEPT_EXPRESSIONS(E1, E2)>
KFR_FUNCTION expression_function<fn::max, E1, E2> max(E1&& x, E2&& y)
{
return { fn::max(), std::forward<E1>(x), std::forward<E2>(y) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L320
min
function¶
template <typename E1, typename E2,
KFR_ACCEPT_EXPRESSIONS(E1, E2)>
expression_function<fn::min, E1, E2> min(E1 &&x, E2 &&y)
Returns the smaller of two values. Accepts and returns expressions.
Source code
template <typename E1, typename E2, KFR_ACCEPT_EXPRESSIONS(E1, E2)>
KFR_FUNCTION expression_function<fn::min, E1, E2> min(E1&& x, E2&& y)
{
return { fn::min(), std::forward<E1>(x), std::forward<E2>(y) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L311
mul
function¶
template <typename... E, KFR_ACCEPT_EXPRESSIONS(E...)>
expression_function<fn::mul, E...> mul(E &&...x)
Returns template expression that returns product of all the arguments passed to a function.
Source code
template <typename... E, KFR_ACCEPT_EXPRESSIONS(E...)>
KFR_INTRINSIC expression_function<fn::mul, E...> mul(E&&... x)
{
return { fn::mul(), std::forward<E>(x)... };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L67
real
function¶
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
expression_function<fn::real, E1> real(E1 &&x)
Returns the real part of the complex value
Source code
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
KFR_INTRINSIC expression_function<fn::real, E1> real(E1&& x)
{
return { fn::real{}, std::forward<E1>(x) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L263
rebind
function¶
template <typename Fn, typename... OldArgs,
typename... NewArgs>
expression_function<Fn, NewArgs...>
rebind(const expression_function<Fn, OldArgs...> &e,
NewArgs &&...args)
Construct a new expression using the same function as in e
and new arguments
e an expression
args new arguments for the function
Source code
template <typename Fn, typename... OldArgs, typename... NewArgs>
KFR_FUNCTION expression_function<Fn, NewArgs...> rebind(const expression_function<Fn, OldArgs...>& e,
NewArgs&&... args)
{
return expression_function<Fn, NewArgs...>(Fn{ e.fn }, std::forward<NewArgs>(args)...);
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/expression.hpp#L872
satadd
function¶
template <typename E1, typename E2,
KFR_ACCEPT_EXPRESSIONS(E1, E2)>
expression_function<fn::satadd, E1, E2> satadd(E1 &&x,
E2 &&y)
Creates an expression that adds two arguments using saturation
Source code
template <typename E1, typename E2, KFR_ACCEPT_EXPRESSIONS(E1, E2)>
KFR_INTRINSIC expression_function<fn::satadd, E1, E2> satadd(E1&& x, E2&& y)
{
return { fn::satadd(), std::forward<E1>(x), std::forward<E2>(y) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L414
satsub
function¶
template <typename E1, typename E2,
KFR_ACCEPT_EXPRESSIONS(E1, E2)>
expression_function<fn::satsub, E1, E2> satsub(E1 &&x,
E2 &&y)
Creates an expression that subtracts two arguments using saturation
Source code
template <typename E1, typename E2, KFR_ACCEPT_EXPRESSIONS(E1, E2)>
KFR_INTRINSIC expression_function<fn::satsub, E1, E2> satsub(E1&& x, E2&& y)
{
return { fn::satsub(), std::forward<E1>(x), std::forward<E2>(y) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L421
select
function¶
template <typename E1, typename E2, typename E3,
KFR_ACCEPT_EXPRESSIONS(E1, E2, E3)>
expression_function<fn::select, E1, E2, E3>
select(E1 &&m, E2 &&x, E3 &&y)
Returns template expression that returns x if m is true, otherwise return y. Order of the arguments is same as in ternary operator.
Source code
template <typename E1, typename E2, typename E3, KFR_ACCEPT_EXPRESSIONS(E1, E2, E3)>
KFR_FUNCTION expression_function<fn::select, E1, E2, E3> select(E1&& m, E2&& x, E3&& y)
{
return { fn::select(), std::forward<E1>(m), std::forward<E2>(x), std::forward<E3>(y) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L293
sink
function¶
template <size_t width = 0, index_t Axis = infinite_size,
typename E,
typename Traits = expression_traits<E>>
const E &sink(E &&expr)
Read the expression expr
through the whole range.
expr the input expression
@return the input expression is returned
Source code
template <size_t width = 0, index_t Axis = infinite_size, typename E, typename Traits = expression_traits<E>>
KFR_FUNCTION const E& sink(E&& expr)
{
static_assert(!Traits::get_shape().has_infinity());
process<width, Axis>(expression_discard<expression_value_type<E>, expression_dims<E>>{}, expr);
return expr;
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/expression.hpp#L854
sqr
function¶
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
expression_function<fn::sqr, E1> sqr(E1 &&x)
Returns template expression that returns square of x.
Source code
template <typename E1, KFR_ACCEPT_EXPRESSIONS(E1)>
KFR_INTRINSIC expression_function<fn::sqr, E1> sqr(E1&& x)
{
return { fn::sqr(), std::forward<E1>(x) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/simd_expressions.hpp#L171
symmlinspace
function¶
template <typename T, bool precise = false, bool truncated = false, typename Tout = ftype<T>>
expression_linspace<Tout, truncated> symmlinspace(T symsize, size_t size,
cbool_t<truncated> =
Returns evenly spaced numbers over a specified interval.
symsize The sequence will have interval [-symsize..symsize]
size Number of samples to generate
@tparam truncated If true
, linspace returns exactly size elements, otherwise, returns infinite sequence
@tparam precise No longer used since KFR5, calculations are always precise
Source code
template <typename T, bool precise = false, bool truncated = false, typename Tout = ftype<T>>
KFR_INTRINSIC expression_linspace<Tout, truncated> symmlinspace(T symsize, size_t size,
cbool_t<truncated> = {})
{
return { symmetric_linspace, static_cast<Tout>(symsize), size, true };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/basic_expressions.hpp#L752
trace
function¶
template <typename E1> expression_trace<E1> trace(E1 &&e1)
Returns template expression that prints all processed values for debug
Source code
template <typename E1>
KFR_INTRINSIC expression_trace<E1> trace(E1&& e1)
{
return { std::forward<E1>(e1) };
}
https://github.com/kfrlib/kfr/blob//include/kfr/base/basic_expressions.hpp#L1024
Auto-generated from sources, Revision , https://github.com/kfrlib/kfr/blob//include/kfr/