Graph Framework
Loading...
Searching...
No Matches
arithmetic.hpp File Reference

Basic arithmetic operations. More...

#include "node.hpp"

Go to the source code of this file.

Classes

class  graph::add_node< T, SAFE_MATH >
 An addition node. More...
 
class  graph::subtract_node< T, SAFE_MATH >
 A subtraction node. More...
 
class  graph::multiply_node< T, SAFE_MATH >
 A multiplcation node. More...
 
class  graph::divide_node< T, SAFE_MATH >
 A division node. More...
 
class  graph::fma_node< T, SAFE_MATH >
 A fused multiply add node. More...
 

Namespaces

namespace  graph
 Name space for graph nodes.
 

Typedefs

template<jit::float_scalar T, bool SAFE_MATH = false>
using graph::shared_add = std::shared_ptr< add_node< T, SAFE_MATH > >
 Convenience type alias for shared add nodes.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
using graph::shared_subtract = std::shared_ptr< subtract_node< T, SAFE_MATH > >
 Convenience type alias for shared subtract nodes.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
using graph::shared_multiply = std::shared_ptr< multiply_node< T, SAFE_MATH > >
 Convenience type alias for shared multiply nodes.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
using graph::shared_divide = std::shared_ptr< divide_node< T, SAFE_MATH > >
 Convenience type alias for shared divide nodes.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
using graph::shared_fma = std::shared_ptr< fma_node< T, SAFE_MATH > >
 Convenience type alias for shared add nodes.
 

Functions

template<jit::float_scalar T, bool SAFE_MATH = false>
bool graph::is_constant_combineable (shared_leaf< T, SAFE_MATH > a, shared_leaf< T, SAFE_MATH > b)
 Check if nodes are constant combineable.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
bool graph::is_constant_promotable (shared_leaf< T, SAFE_MATH > a, shared_leaf< T, SAFE_MATH > b)
 Check if the constants are promotable.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
bool graph::is_variable_combineable (shared_leaf< T, SAFE_MATH > a, shared_leaf< T, SAFE_MATH > b)
 Check if the variable is combinable.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
bool graph::is_variable_promotable (shared_leaf< T, SAFE_MATH > a, shared_leaf< T, SAFE_MATH > b)
 Check if the variable is variable is promotable.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
bool graph::is_greater_exponent (shared_leaf< T, SAFE_MATH > a, shared_leaf< T, SAFE_MATH > b)
 Check if the exponent is greater than the other.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::add (shared_leaf< T, SAFE_MATH > l, shared_leaf< T, SAFE_MATH > r)
 Build add node from two leaves.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator+ (shared_leaf< T, SAFE_MATH > l, shared_leaf< T, SAFE_MATH > r)
 Build add node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar L, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator+ (const L l, shared_leaf< T, SAFE_MATH > r)
 Build add node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar R, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator+ (shared_leaf< T, SAFE_MATH > l, const R r)
 Build add node from two leaves.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_add< T, SAFE_MATHgraph::add_cast (shared_leaf< T, SAFE_MATH > x)
 Cast to a add node.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::subtract (shared_leaf< T, SAFE_MATH > l, shared_leaf< T, SAFE_MATH > r)
 Build subtract node from two leaves.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator- (shared_leaf< T, SAFE_MATH > l, shared_leaf< T, SAFE_MATH > r)
 Build subtract node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar L, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator- (const L l, shared_leaf< T, SAFE_MATH > r)
 Build subtract node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar R, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator- (shared_leaf< T, SAFE_MATH > l, const R r)
 Build subtract node from two leaves.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator- (shared_leaf< T, SAFE_MATH > a)
 Negate a node.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_subtract< T, SAFE_MATHgraph::subtract_cast (shared_leaf< T, SAFE_MATH > x)
 Cast to a subtract node.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::multiply (shared_leaf< T, SAFE_MATH > l, shared_leaf< T, SAFE_MATH > r)
 Build multiply node from two leaves.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator* (shared_leaf< T, SAFE_MATH > l, shared_leaf< T, SAFE_MATH > r)
 Build multiply node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar L, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator* (const L l, shared_leaf< T, SAFE_MATH > r)
 Build multiply node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar R, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator* (shared_leaf< T, SAFE_MATH > l, const R r)
 Build multiply node from two leaves.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_multiply< T, SAFE_MATHgraph::multiply_cast (shared_leaf< T, SAFE_MATH > x)
 Cast to a multiply node.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::divide (shared_leaf< T, SAFE_MATH > l, shared_leaf< T, SAFE_MATH > r)
 Build divide node from two leaves.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator/ (shared_leaf< T, SAFE_MATH > l, shared_leaf< T, SAFE_MATH > r)
 Build divide node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar L, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator/ (const L l, shared_leaf< T, SAFE_MATH > r)
 Build divide node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar R, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::operator/ (shared_leaf< T, SAFE_MATH > l, const R r)
 Build multiply node from two leaves.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_divide< T, SAFE_MATHgraph::divide_cast (shared_leaf< T, SAFE_MATH > x)
 Cast to a divide node.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::fma (shared_leaf< T, SAFE_MATH > l, shared_leaf< T, SAFE_MATH > m, shared_leaf< T, SAFE_MATH > r)
 Build fused multiply add node.
 
template<jit::float_scalar T, jit::float_scalar L, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::fma (const L l, shared_leaf< T, SAFE_MATH > m, shared_leaf< T, SAFE_MATH > r)
 Build divide node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar M, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::fma (shared_leaf< T, SAFE_MATH > l, const M m, shared_leaf< T, SAFE_MATH > r)
 Build divide node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar R, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::fma (shared_leaf< T, SAFE_MATH > l, shared_leaf< T, SAFE_MATH > m, const R r)
 Build multiply node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar L, jit::float_scalar M, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::fma (const L l, const M m, shared_leaf< T, SAFE_MATH > r)
 Build divide node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar M, jit::float_scalar R, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::fma (shared_leaf< T, SAFE_MATH > l, const M m, const R r)
 Build divide node from two leaves.
 
template<jit::float_scalar T, jit::float_scalar L, jit::float_scalar R, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATHgraph::fma (const L l, shared_leaf< T, SAFE_MATH > m, const R r)
 Build multiply node from two leaves.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_fma< T, SAFE_MATHgraph::fma_cast (shared_leaf< T, SAFE_MATH > x)
 Cast to a fma node.
 

Detailed Description

Basic arithmetic operations.

Defines basic operators.