fmatvec  0.0.0
fmatvec::AST::Operation Class Reference

A vertex of the AST representing an operation. More...

#include <ast.h>

Inheritance diagram for fmatvec::AST::Operation:
[legend]

Classes

struct  CacheKeyComp
 
struct  OpMap
 

Public Types

enum  Operator {
  Plus , Minus , Mult , Div ,
  Pow , Log , Sqrt , Neg ,
  Sin , Cos , Tan , Sinh ,
  Cosh , Tanh , ASin , ACos ,
  ATan , ATan2 , ASinh , ACosh ,
  ATanh , Exp , Sign , Heaviside ,
  Abs , Min , Max , Condition
}
 Defined operations.
 

Public Member Functions

SymbolicExpression parDer (const IndependentVariable &x) const override
 Generate a new AST being the partial derivate of this AST with respect to the variable x. More...
 
Operator getOp () const
 
const std::vector< SymbolicExpression > & getChilds () const
 
std::vector< ByteCode >::iterator dumpByteCode (std::vector< ByteCode > &byteCode, std::map< const Vertex *, std::vector< AST::ByteCode >::iterator > &existingVertex) const override
 
void walkVertex (const std::function< void(const std::shared_ptr< const Vertex > &)> &func) const override
 
- Public Member Functions inherited from fmatvec::AST::Vertex
virtual SymbolicExpression parDer (const IndependentVariable &x) const =0
 Generate a new AST being the partial derivate of this AST with respect to the variable x. More...
 
virtual bool isConstantInt () const
 Rreturn true if this Vertex is a constant integer. More...
 
bool isZero () const
 
bool isOne () const
 
virtual std::vector< ByteCode >::iterator dumpByteCode (std::vector< ByteCode > &byteCode, std::map< const Vertex *, std::vector< AST::ByteCode >::iterator > &existingVertex) const =0
 
virtual void walkVertex (const std::function< void(const std::shared_ptr< const Vertex > &)> &func) const =0
 

Static Public Member Functions

static SymbolicExpression create (Operator op_, const std::vector< SymbolicExpression > &child_)
 

Private Types

using CacheKey = std::pair< Operator, std::vector< std::weak_ptr< const Vertex > > >
 

Private Member Functions

 Operation (Operator op_, const std::vector< SymbolicExpression > &child_)
 
bool equal (const SymbolicExpression &b, MapIVSE &m) const override
 

Private Attributes

friend SymbolicExpression
 
Operator op
 
std::vector< SymbolicExpressionchild
 

Static Private Attributes

static std::map< CacheKey, std::weak_ptr< const Operation >, CacheKeyCompcache
 
static const std::map< Operator, OpMapopMap
 

Friends

SymbolicExpression fmatvec::AST::substScalar (const SymbolicExpression &se, const IndependentVariable &a, const SymbolicExpression &b)
 
boost::spirit::qi::rule< boost::spirit::istream_iterator, SymbolicExpression()> & fmatvec::getBoostSpiritQiRule ()
 
boost::spirit::karma::rule< std::ostream_iterator< char >, SymbolicExpression()> & fmatvec::getBoostSpiritKarmaRule ()
 

Additional Inherited Members

- Protected Types inherited from fmatvec::AST::Vertex
using MapIVSE = std::map< IndependentVariable, SymbolicExpression, LessIV >
 
virtual bool equal (const SymbolicExpression &b, MapIVSE &m) const =0
 

Detailed Description

A vertex of the AST representing an operation.

Member Function Documentation

◆ dumpByteCode()

std::vector< ByteCode >::iterator fmatvec::AST::Operation::dumpByteCode ( std::vector< ByteCode > &  byteCode,
std::map< const Vertex *, std::vector< AST::ByteCode >::iterator > &  existingVertex 
) const
overridevirtual

Implements fmatvec::AST::Vertex.

◆ equal()

bool fmatvec::AST::Operation::equal ( const SymbolicExpression b,
MapIVSE &  m 
) const
overrideprivatevirtual

Implements fmatvec::AST::Vertex.

◆ parDer()

SymbolicExpression fmatvec::AST::Operation::parDer ( const IndependentVariable x) const
overridevirtual

Generate a new AST being the partial derivate of this AST with respect to the variable x.

Implements fmatvec::AST::Vertex.

◆ walkVertex()

void fmatvec::AST::Operation::walkVertex ( const std::function< void(const std::shared_ptr< const Vertex > &)> &  func) const
overridevirtual

Implements fmatvec::AST::Vertex.


The documentation for this class was generated from the following files: