limes 3.1.0
Composable Calculus Expressions for C++20
Loading...
Searching...
No Matches
analysis.hpp File Reference
#include <cstddef>
#include <cstdint>
#include <type_traits>
+ Include dependency graph for analysis.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  limes::expr::variable_set< E, typename >
 
struct  limes::expr::variable_set< Var< N, T > >
 Var<N, T>: Variable N depends on dimension N. More...
 
struct  limes::expr::variable_set< Binary< Op, L, R > >
 Binary<Op, L, R>: Union of both children's dependencies. More...
 
struct  limes::expr::variable_set< Unary< Op, E > >
 Unary<Op, E>: Same dependencies as child. More...
 
struct  limes::expr::variable_set< UnaryFunc< Tag, E > >
 UnaryFunc<Tag, E>: Same dependencies as child. More...
 
struct  limes::expr::variable_set< ExprBound< E > >
 ExprBound<E>: Same dependencies as the expression. More...
 
struct  limes::expr::variable_set< Integral< E, Dim, Lo, Hi > >
 
struct  limes::expr::variable_set< BoundExpr< E, Dim, BoundValue > >
 BoundExpr: Remove the bound dimension, keep remaining dependencies. More...
 
struct  limes::expr::is_separable< E, D1, D2 >
 

Namespaces

namespace  limes
 
namespace  limes::expr
 Expression layer for composable calculus.
 
namespace  limes::expr::detail
 

Functions

template<std::size_t D1, std::size_t D2, typename E >
constexpr auto limes::expr::separate (E const &expr)
 

Variables

template<typename E >
constexpr std::uint64_t limes::expr::variable_set_v = variable_set<E>::value
 Helper variable template for cleaner syntax.
 
template<typename E , std::size_t Dim>
constexpr bool limes::expr::depends_on_v = (variable_set<E>::value & (1ULL << Dim)) != 0
 Check if an expression depends on a specific dimension.
 
template<typename E , std::uint64_t Mask>
constexpr bool limes::expr::depends_on_any_v = (variable_set<E>::value & Mask) != 0
 Check if an expression depends on any of the given dimensions (mask)
 
template<typename E , std::uint64_t Mask>
constexpr bool limes::expr::depends_on_all_v = (variable_set<E>::value & Mask) == Mask
 Check if an expression depends on all of the given dimensions (mask)
 
template<typename E >
constexpr bool limes::expr::is_constant_v = (variable_set<E>::value == 0)
 Check if an expression is constant (depends on no variables)
 
template<typename E >
constexpr std::size_t limes::expr::dependency_count_v
 Count the number of dimensions an expression depends on.
 
template<typename E >
constexpr std::size_t limes::expr::max_dimension_v
 Get the maximum dimension index an expression depends on (0 if constant)
 
template<typename E , std::uint64_t AllowedMask>
constexpr bool limes::expr::detail::depends_only_on_v = (variable_set<E>::value & ~AllowedMask) == 0
 Helper to check if an expression depends only on certain dimensions.
 
template<typename E , std::size_t D1, std::size_t D2>
constexpr bool limes::expr::detail::single_child_separable_v
 
template<typename E , std::size_t D1, std::size_t D2>
constexpr bool limes::expr::is_separable_v = is_separable<E, D1, D2>::value