TRIQS/nda 1.3.0
Multi-dimensional array library for C++
Loading...
Searching...
No Matches
operation.hpp File Reference
#include "./expression.hpp"
#include "./utils.hpp"
#include "../macros.hpp"
#include <functional>
#include <type_traits>
#include <utility>

Detailed Description

Provides operations for the clef library.

Definition in file operation.hpp.

Go to the source code of this file.

Classes

struct  nda::clef::operation< tags::divides >
 Specialization of nda::clef::operation for nda::clef::tags::divides. More...
 
struct  nda::clef::operation< tags::eq >
 Specialization of nda::clef::operation for nda::clef::tags::eq. More...
 
struct  nda::clef::operation< tags::function >
 Specialization of nda::clef::operation for nda::clef::tags::function. More...
 
struct  nda::clef::operation< tags::geq >
 Specialization of nda::clef::operation for nda::clef::tags::geq. More...
 
struct  nda::clef::operation< tags::greater >
 Specialization of nda::clef::operation for nda::clef::tags::greater. More...
 
struct  nda::clef::operation< tags::if_else >
 Specialization of nda::clef::operation for nda::clef::tags::if_else. More...
 
struct  nda::clef::operation< tags::leq >
 Specialization of nda::clef::operation for nda::clef::tags::leq. More...
 
struct  nda::clef::operation< tags::less >
 Specialization of nda::clef::operation for nda::clef::tags::less. More...
 
struct  nda::clef::operation< tags::loginot >
 Specialization of nda::clef::operation for nda::clef::tags::loginot. More...
 
struct  nda::clef::operation< tags::minus >
 Specialization of nda::clef::operation for nda::clef::tags::minus. More...
 
struct  nda::clef::operation< tags::multiplies >
 Specialization of nda::clef::operation for nda::clef::tags::multiplies. More...
 
struct  nda::clef::operation< tags::negate >
 Specialization of nda::clef::operation for nda::clef::tags::negate. More...
 
struct  nda::clef::operation< tags::plus >
 Specialization of nda::clef::operation for nda::clef::tags::plus. More...
 
struct  nda::clef::operation< tags::subscript >
 Specialization of nda::clef::operation for nda::clef::tags::subscript. More...
 
struct  nda::clef::operation< tags::terminal >
 Specialization of nda::clef::operation for nda::clef::tags::terminal. More...
 
struct  nda::clef::operation< tags::unaryplus >
 Specialization of nda::clef::operation for nda::clef::tags::unaryplus. More...
 
struct  nda::clef::tags::divides
 Tag for binary / expressions. More...
 
struct  nda::clef::tags::eq
 Tag for binary == expressions. More...
 
struct  nda::clef::tags::geq
 Tag for binary >= expressions. More...
 
struct  nda::clef::tags::greater
 Tag for binary > expressions. More...
 
struct  nda::clef::tags::leq
 Tag for binary <= expressions. More...
 
struct  nda::clef::tags::less
 Tag for binary < expressions. More...
 
struct  nda::clef::tags::loginot
 Tag for unary ! expressions. More...
 
struct  nda::clef::tags::minus
 Tag for binary - expressions. More...
 
struct  nda::clef::tags::multiplies
 Tag for binary * expressions. More...
 
struct  nda::clef::tags::negate
 Tag for unary - expressions. More...
 
struct  nda::clef::tags::plus
 Tag for binary + expressions. More...
 
struct  nda::clef::tags::unaryplus
 Tag for unary + expressions. More...
 

Functions

template<typename C , typename A , typename B >
__inline__ auto nda::clef::if_else (C &&c, A &&a, B &&b)
 Create a lazy ternary (if-else) expression.
 
template<typename Tag , typename... Args>
__inline__ decltype(auto) nda::clef::op_dispatch (std::false_type, Args &&...args)
 Dispatch operations containing only non-lazy operands.
 
template<typename Tag , typename... Args>
__inline__ auto nda::clef::op_dispatch (std::true_type, Args &&...args)
 Dispatch operations containing at least one lazy operand.
 
template<typename L >
requires (is_any_lazy<L>)
__inline__ auto nda::clef::operator! (L &&l)
 Implementation of the lazy unary ! operation.
 
template<typename L , typename R >
requires (is_any_lazy<L, R>)
__inline__ auto nda::clef::operator* (L &&l, R &&r)
 Implementation of the lazy binary * operation.
 
template<typename L >
requires (is_any_lazy<L>)
__inline__ auto nda::clef::operator+ (L &&l)
 Implementation of the lazy unary + operation.
 
template<typename L , typename R >
requires (is_any_lazy<L, R>)
__inline__ auto nda::clef::operator+ (L &&l, R &&r)
 Implementation of the lazy binary + operation.
 
template<typename L >
requires (is_any_lazy<L>)
__inline__ auto nda::clef::operator- (L &&l)
 Implementation of the lazy unary - operation.
 
template<typename L , typename R >
requires (is_any_lazy<L, R>)
__inline__ auto nda::clef::operator- (L &&l, R &&r)
 Implementation of the lazy binary - operation.
 
template<typename L , typename R >
requires (is_any_lazy<L, R>)
__inline__ auto nda::clef::operator/ (L &&l, R &&r)
 Implementation of the lazy binary / operation.
 
template<typename L , typename R >
requires (is_any_lazy<L, R>)
__inline__ auto nda::clef::operator< (L &&l, R &&r)
 Implementation of the lazy binary < operation.
 
template<typename L , typename R >
requires (is_any_lazy<L, R>)
__inline__ auto nda::clef::operator<= (L &&l, R &&r)
 Implementation of the lazy binary <= operation.
 
template<typename L , typename R >
requires (is_any_lazy<L, R>)
__inline__ auto nda::clef::operator== (L &&l, R &&r)
 Implementation of the lazy binary == operation.
 
template<typename L , typename R >
requires (is_any_lazy<L, R>)
__inline__ auto nda::clef::operator> (L &&l, R &&r)
 Implementation of the lazy binary > operation.
 
template<typename L , typename R >
requires (is_any_lazy<L, R>)
__inline__ auto nda::clef::operator>= (L &&l, R &&r)
 Implementation of the lazy binary >= operation.