SymEngine C++ API
symengine
derivative.h
Go to the documentation of this file.
1
7
#ifndef SYMENGINE_DERIVATIVE_H
8
#define SYMENGINE_DERIVATIVE_H
9
10
#include <
symengine/basic.h
>
11
#include <
symengine/visitor.h
>
12
13
namespace
SymEngine
14
{
15
17
SYMENGINE_EXPORT
18
RCP<const Basic> diff(
const
RCP<const Basic> &arg,
const
RCP<const Symbol> &x,
19
bool
cache =
true
);
20
22
SYMENGINE_EXPORT
23
RCP<const Basic> sdiff(
const
RCP<const Basic> &arg,
const
RCP<const Basic> &x,
24
bool
cache =
true
);
25
26
class
SYMENGINE_EXPORT
DiffVisitor
:
public
BaseVisitor
<DiffVisitor>
27
{
28
protected
:
29
const
RCP<const Symbol> x;
30
RCP<const Basic> result_;
31
umap_basic_basic visited;
32
bool
cache;
33
34
public
:
35
DiffVisitor
(
const
RCP<const Symbol> &x,
bool
cache =
true
)
36
: x(x), cache(cache)
37
{
38
}
39
// Uncomment the following define in order to debug the methods:
40
#define debug_methods
41
#ifndef debug_methods
42
void
bvisit(
const
Basic
&
self
);
43
#else
44
// Here we do not have a 'Basic' fallback, but rather must implement all
45
// virtual methods explicitly (if we miss one, the code will not compile).
46
// This is useful to check that we have implemented all methods that we
47
// wanted.
48
void
bvisit(
const
UnivariateSeries
&
self
);
49
void
bvisit(
const
Max
&
self
);
50
void
bvisit(
const
Min
&
self
);
51
#endif
52
void
bvisit(
const
Number
&
self
);
53
void
bvisit(
const
Constant
&
self
);
54
void
bvisit(
const
Symbol
&
self
);
55
void
bvisit(
const
Log
&
self
);
56
void
bvisit(
const
Abs
&
self
);
57
void
bvisit(
const
ASech
&
self
);
58
void
bvisit(
const
ACoth
&
self
);
59
void
bvisit(
const
ATanh
&
self
);
60
void
bvisit(
const
ACosh
&
self
);
61
void
bvisit(
const
ACsch
&
self
);
62
void
bvisit(
const
ASinh
&
self
);
63
void
bvisit(
const
Coth
&
self
);
64
void
bvisit(
const
Tanh
&
self
);
65
void
bvisit(
const
Sech
&
self
);
66
void
bvisit(
const
Cosh
&
self
);
67
void
bvisit(
const
Csch
&
self
);
68
void
bvisit(
const
Sinh
&
self
);
69
void
bvisit(
const
Subs
&
self
);
70
void
bvisit(
const
Derivative
&
self
);
71
void
bvisit(
const
OneArgFunction
&
self
);
72
void
bvisit(
const
MultiArgFunction
&
self
);
73
void
bvisit(
const
TwoArgFunction
&
self
);
74
void
bvisit(
const
PolyGamma
&
self
);
75
void
bvisit(
const
UpperGamma
&
self
);
76
void
bvisit(
const
LowerGamma
&
self
);
77
void
bvisit(
const
Zeta
&
self
);
78
void
bvisit(
const
LambertW
&
self
);
79
void
bvisit(
const
Add
&
self
);
80
void
bvisit(
const
Mul
&
self
);
81
void
bvisit(
const
Pow
&
self
);
82
void
bvisit(
const
Sin
&
self
);
83
void
bvisit(
const
Cos
&
self
);
84
void
bvisit(
const
Tan
&
self
);
85
void
bvisit(
const
Cot
&
self
);
86
void
bvisit(
const
Csc
&
self
);
87
void
bvisit(
const
Sec
&
self
);
88
void
bvisit(
const
ASin
&
self
);
89
void
bvisit(
const
ACos
&
self
);
90
void
bvisit(
const
ASec
&
self
);
91
void
bvisit(
const
ACsc
&
self
);
92
void
bvisit(
const
ATan
&
self
);
93
void
bvisit(
const
ACot
&
self
);
94
void
bvisit(
const
ATan2
&
self
);
95
void
bvisit(
const
Erf
&
self
);
96
void
bvisit(
const
Erfc
&
self
);
97
void
bvisit(
const
Gamma
&
self
);
98
void
bvisit(
const
LogGamma
&
self
);
99
void
bvisit(
const
UnevaluatedExpr
&
self
);
100
void
bvisit(
const
UIntPoly
&
self
);
101
void
bvisit(
const
URatPoly
&
self
);
102
#ifdef HAVE_SYMENGINE_PIRANHA
103
void
bvisit(
const
UIntPolyPiranha &
self
);
104
void
bvisit(
const
URatPolyPiranha &
self
);
105
#endif
106
#ifdef HAVE_SYMENGINE_FLINT
107
void
bvisit(
const
UIntPolyFlint &
self
);
108
void
bvisit(
const
URatPolyFlint &
self
);
109
#endif
110
void
bvisit(
const
UExprPoly
&
self
);
111
void
bvisit(
const
MIntPoly
&
self
);
112
void
bvisit(
const
MExprPoly
&
self
);
113
void
bvisit(
const
FunctionWrapper
&
self
);
114
void
bvisit(
const
Beta
&
self
);
115
void
bvisit(
const
Set
&
self
);
116
void
bvisit(
const
Tuple
&
self
);
117
void
bvisit(
const
IdentityMatrix
&
self
);
118
void
bvisit(
const
ZeroMatrix
&
self
);
119
void
bvisit(
const
MatrixSymbol
&
self
);
120
void
bvisit(
const
DiagonalMatrix
&
self
);
121
void
bvisit(
const
ImmutableDenseMatrix
&
self
);
122
void
bvisit(
const
MatrixAdd
&
self
);
123
void
bvisit(
const
HadamardProduct
&
self
);
124
void
bvisit(
const
MatrixMul
&
self
);
125
void
bvisit(
const
ConjugateMatrix
&
self
);
126
void
bvisit(
const
Transpose
&
self
);
127
void
bvisit(
const
Trace
&
self
);
128
void
bvisit(
const
Boolean
&
self
);
129
void
bvisit(
const
GaloisField
&
self
);
130
void
bvisit(
const
Piecewise
&
self
);
131
const
RCP<const Basic> &apply(
const
Basic
&b);
132
const
RCP<const Basic> &apply(
const
RCP<const Basic> &b);
133
};
134
135
}
// namespace SymEngine
136
137
#endif
// SYMENGINE_DERIVATIVE_H
basic.h
The base class for SymEngine.
SymEngine::ACos
Definition:
functions.h:426
SymEngine::ACosh
Definition:
functions.h:931
SymEngine::ACot
Definition:
functions.h:490
SymEngine::ACoth
Definition:
functions.h:963
SymEngine::ACsc
Definition:
functions.h:458
SymEngine::ACsch
Definition:
functions.h:915
SymEngine::ASec
Definition:
functions.h:442
SymEngine::ASech
Definition:
functions.h:979
SymEngine::ASin
Definition:
functions.h:410
SymEngine::ASinh
Definition:
functions.h:899
SymEngine::ATan2
Definition:
functions.h:506
SymEngine::ATan
Definition:
functions.h:474
SymEngine::ATanh
Definition:
functions.h:947
SymEngine::Abs
Definition:
functions.h:1251
SymEngine::Add
The base class for representing addition in symbolic expressions.
Definition:
add.h:27
SymEngine::BaseVisitor
Definition:
visitor.h:48
SymEngine::Basic
The lowest unit of symbolic representation.
Definition:
basic.h:97
SymEngine::Beta
Definition:
functions.h:1181
SymEngine::Boolean
Definition:
logic.h:19
SymEngine::ConjugateMatrix
Definition:
conjugate_matrix.h:11
SymEngine::Constant
Definition:
constants.h:19
SymEngine::Cos
Definition:
functions.h:334
SymEngine::Cosh
Definition:
functions.h:835
SymEngine::Cot
Definition:
functions.h:365
SymEngine::Coth
Definition:
functions.h:883
SymEngine::Csc
Definition:
functions.h:380
SymEngine::Csch
Definition:
functions.h:819
SymEngine::Derivative
Definition:
functions.h:695
SymEngine::DiagonalMatrix
Definition:
diagonal_matrix.h:11
SymEngine::DiffVisitor
Definition:
derivative.h:27
SymEngine::Erf
Definition:
functions.h:1042
SymEngine::Erfc
Definition:
functions.h:1067
SymEngine::FunctionWrapper
Definition:
functions.h:680
SymEngine::GaloisField
Definition:
fields.h:549
SymEngine::Gamma
Definition:
functions.h:1092
SymEngine::HadamardProduct
Definition:
hadamard_product.h:11
SymEngine::IdentityMatrix
Definition:
identity_matrix.h:11
SymEngine::ImmutableDenseMatrix
Definition:
immutable_dense_matrix.h:12
SymEngine::LambertW
Definition:
functions.h:555
SymEngine::LogGamma
Definition:
functions.h:1157
SymEngine::Log
Definition:
functions.h:534
SymEngine::LowerGamma
Definition:
functions.h:1117
SymEngine::MExprPoly
Definition:
msymenginepoly.h:457
SymEngine::MIntPoly
Definition:
msymenginepoly.h:442
SymEngine::MatrixAdd
Definition:
matrix_add.h:12
SymEngine::MatrixMul
Definition:
matrix_mul.h:13
SymEngine::MatrixSymbol
Definition:
matrix_symbol.h:11
SymEngine::Max
Definition:
functions.h:1268
SymEngine::Min
Definition:
functions.h:1283
SymEngine::Mul
Definition:
mul.h:74
SymEngine::MultiArgFunction
Definition:
functions.h:144
SymEngine::Number
Definition:
number.h:19
SymEngine::OneArgFunction
Definition:
functions.h:22
SymEngine::Piecewise
Definition:
logic.h:84
SymEngine::PolyGamma
Definition:
functions.h:1214
SymEngine::Pow
Definition:
pow.h:18
SymEngine::Sec
Definition:
functions.h:395
SymEngine::Sech
Definition:
functions.h:851
SymEngine::Set
Definition:
sets.h:26
SymEngine::Sin
Definition:
functions.h:318
SymEngine::Sinh
Definition:
functions.h:803
SymEngine::Subs
Definition:
functions.h:747
SymEngine::Symbol
Definition:
symbol.h:15
SymEngine::Tan
Definition:
functions.h:350
SymEngine::Tanh
Definition:
functions.h:867
SymEngine::Trace
Definition:
trace.h:11
SymEngine::Transpose
Definition:
transpose.h:11
SymEngine::Tuple
Definition:
tuple.h:10
SymEngine::TwoArgBasic
Definition:
functions.h:74
SymEngine::UExprPoly
Definition:
uexprpoly.h:162
SymEngine::UIntPoly
Definition:
uintpoly.h:117
SymEngine::URatPoly
Definition:
uratpoly.h:41
SymEngine::UnevaluatedExpr
Definition:
functions.h:1301
SymEngine::UnivariateSeries
UnivariateSeries Class.
Definition:
series_generic.h:18
SymEngine::UpperGamma
Definition:
functions.h:1137
SymEngine::ZeroMatrix
Definition:
zero_matrix.h:11
SymEngine::Zeta
Definition:
functions.h:575
SymEngine
Main namespace for SymEngine package.
Definition:
add.cpp:19
visitor.h