Expressions

C++ classes, functions and namespaces to handle mathematical expressions.

tags

Namespace tags

xsimd::expr_base

Class expr_base

xsimd::cst_expr_impl

Class cst_expr_base

xsimd::batch_expr_impl

Class batch_expr_impl

xsimd::unary_op_expr_impl

Class unary_op_expr_impl

xsimd::binary_op_expr_impl

Class binary_op_expr_impl

xsimd::eval_visitor

Class eval_visitor

Namespaces

namespace tags

Namespace containing all known tags.

struct add_tag
#include <xsimd_fallback.hpp>

Tag for the “add” operation.

struct batch_tag
#include <xsimd_fallback.hpp>

Tag for batch values.

struct cst_tag
#include <xsimd_fallback.hpp>

Tag for constant values.

struct div_tag
#include <xsimd_fallback.hpp>

Tag for the “division” operation.

struct logical_and_tag
#include <xsimd_fallback.hpp>

Tag for the “logical and” operation.

struct logical_not_tag
#include <xsimd_fallback.hpp>

Tag for the “logical not” operation.

struct logical_or_tag
#include <xsimd_fallback.hpp>

Tag for the “logical or” operation.

struct logical_xor_tag
#include <xsimd_fallback.hpp>

Tag for the “logical xor” operation.

struct mul_tag
#include <xsimd_fallback.hpp>

Tag for the “multiplication” operation.

struct negate_tag
#include <xsimd_fallback.hpp>

Tag for the “negate” operation.

struct sub_tag
#include <xsimd_fallback.hpp>

Tag for the “subtraction” operation.

Classes

template<typename derived_t>
class expr_base

Base class for all expressions.

Template Parameters
  • derived_t: CRTP derived type

template<typename T>
class cst_expr_impl : public xsimd::expr_base<cst_expr_impl<T>>

Expression class encapsulating an arithmetic value.

Template Parameters
  • T: Underlying arithmetic type

Public Functions

constexpr cst_expr_impl(T val)

Constructor.

template<typename visitor_t>
constexpr auto operator()(visitor_t visitor) const

Call operator for visitor access.

template<typename T, std::size_t N>
class batch_expr_impl : public xsimd::expr_base<batch_expr_impl<T, N>>

Expression class encapsulating a batch<T, N> value.

Template Parameters
  • T: Underlying arithmetic type

  • N: Number of values within a batch

Public Functions

constexpr batch_expr_impl(const batch<T, N> &b)

Constructor.

template<typename visitor_t>
constexpr auto operator()(visitor_t visitor) const

Call operator for visitor access.

template<typename T, typename tag_type>
class unary_op_expr_impl : public xsimd::expr_base<unary_op_expr_impl<T, tag_type>>

Expression class encapsulating an unary expression.

Template Parameters
  • T: Type of the RHS

  • tag_type: Tag class for that expression

Public Functions

constexpr unary_op_expr_impl(T rhs)

Constructor.

template<typename visitor_t>
constexpr auto operator()(visitor_t visitor) const

Call operator for visitor access.

template<typename T, typename U, typename tag_type>
class binary_op_expr_impl : public xsimd::expr_base<binary_op_expr_impl<T, U, tag_type>>

Expression class encapsulating a binary operators.

Template Parameters
  • T: Type of the LHS

  • U: Type of the RHS

  • tag_type: Tag class for that expression

Public Functions

constexpr binary_op_expr_impl(T lhs, U rhs)

Constructor.

template<typename visitor_t>
constexpr auto operator()(visitor_t visitor) const

Call operator for visitor access.

class eval_visitor

Expression evaluator class.

Visitor class to evaluate an expression given an index

Public Functions

constexpr eval_visitor(std::size_t idx)

Constructor.

Parameters
  • idx: Index of value within expression

template<typename T>
constexpr auto operator()(tags::cst_tag, T c)

Call operator for constant values.

template<typename T>
constexpr auto operator()(tags::batch_tag, T &b)

Call operator for batch values.

template<typename T>
constexpr auto operator()(tags::logical_not_tag, T rhs)

Call operator for logical not operations.

template<typename T, typename U>
constexpr auto operator()(tags::logical_and_tag, T lhs, U rhs)

Call operator for logical and operations.

template<typename T, typename U>
constexpr auto operator()(tags::logical_or_tag, T lhs, U rhs)

Call operator for logical or operations.

template<typename T, typename U>
constexpr auto operator()(tags::logical_xor_tag, T lhs, U rhs)

Call operator for logical xor operations.

template<typename T>
constexpr auto operator()(tags::negate_tag, T rhs)

Call operator for negation operations.

template<typename T, typename U>
constexpr auto operator()(tags::add_tag, T lhs, U rhs)

Call operator for addition operations.

template<typename T, typename U>
constexpr auto operator()(tags::sub_tag, T lhs, U rhs)

Call operator for subtraction operations.

template<typename T, typename U>
constexpr auto operator()(tags::mul_tag, T lhs, U rhs)

Call operator for multiplication operations.

template<typename T, typename U>
constexpr auto operator()(tags::div_tag, T lhs, U rhs)

Call operator for division operations.