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 multiplication 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...
 
class  graph::modulo_node< T, SAFE_MATH >
 An Modulo 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.
 
template<std::floating_point T, bool SAFE_MATH = false>
using graph::shared_modulo = std::shared_ptr< modulo_node< T, SAFE_MATH > >
 Convenience type alias for shared modulo nodes.
 

Functions

template<jit::float_scalar T, bool SAFE_MATH = false>
bool graph::is_constant_combinable (shared_leaf< T, SAFE_MATH > a, shared_leaf< T, SAFE_MATH > b)
 Check if nodes are constant combinable.
 
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_combinable (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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::operator- (shared_leaf< T, SAFE_MATH > a)
 Negate a node.
 
template<jit::float_scalar T, bool SAFE_MATH = false>
shared_subtract< T, SAFE_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::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_MATH > graph::fma_cast (shared_leaf< T, SAFE_MATH > x)
 Cast to a fma node.
 
template<std::floating_point T, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATH > graph::modulo (shared_leaf< T, SAFE_MATH > l, shared_leaf< T, SAFE_MATH > r)
 Build modulo node from two leaves.
 
template<std::floating_point T, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATH > graph::operator% (shared_leaf< T, SAFE_MATH > l, shared_leaf< T, SAFE_MATH > r)
 Build modulo node from two leaves.
 
template<std::floating_point T, std::floating_point L, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATH > graph::operator% (const L l, shared_leaf< T, SAFE_MATH > r)
 Build modulo node from two leaves.
 
template<std::floating_point T, std::floating_point R, bool SAFE_MATH = false>
shared_leaf< T, SAFE_MATH > graph::operator% (shared_leaf< T, SAFE_MATH > l, const R r)
 Build modulo node from two leaves.
 
template<std::floating_point T, bool SAFE_MATH = false>
shared_modulo< T, SAFE_MATH > graph::modulo_cast (shared_leaf< T, SAFE_MATH > x)
 Cast to a modulo node.
 

Detailed Description

Basic arithmetic operations.

Defines basic operators.