1
1
//
2
2
// Created by Abd-El-Aziz Zayed on 2022-08-26.
3
3
//
4
+
4
5
#ifndef CAS_CONSTANT_H
5
6
#define CAS_CONSTANT_H
6
7
9
10
10
11
CAS_NAMESPACE
11
12
12
- class Const : public Expression {
13
+ class Const : public Expr {
13
14
public:
14
15
explicit Const (double value);
15
-
16
- explicit Const () : Const(0.0 ){};
17
-
16
+ Const () = delete ;
18
17
~Const () override = default ;
19
18
20
19
double evaluate (const VariableMap& variables) override ;
21
20
22
- bool _equals (Expression* expression) override ;
21
+ bool _equals (ExprPtr expression) override ;
23
22
24
- Const* clone () override ;
23
+ ExprPtr clone () override ;
25
24
26
- Const* _derivative (char var) override ;
25
+ ExprPtr _derivative (char var) override ;
27
26
28
- Const* simplified () override ;
27
+ ExprPtr simplified () override ;
29
28
30
29
std::string latex () override ;
31
30
@@ -35,17 +34,18 @@ class Const : public Expression {
35
34
36
35
double getValue () const { return value; }
37
36
38
- static Const* PI () { return new Const{ math::PI} ; }
37
+ static ConstPtr PI () { return n ( math::PI) ; }
39
38
40
- static Const* E () { return new Const{ math::E} ; }
39
+ static ConstPtr E () { return n ( math::E) ; }
41
40
42
- static Const* PHI () { return new Const{ math::PHI} ; }
41
+ static ConstPtr PHI () { return n ( math::PHI) ; }
43
42
44
- static Const* zero () { return new Const ; }
43
+ static ConstPtr zero () { return n ( 0.0 ) ; }
45
44
46
- static Const* one () { return new Const{ 1.0 } ; }
45
+ static ConstPtr one () { return n ( 1.0 ) ; }
47
46
48
- static Const* n (double value) { return new Const{value}; }
47
+ static ConstPtr n (double value) { return std::make_shared<Const>(value); }
48
+ static ConstPtr from (double value) { return n (value); }
49
49
50
50
static bool floatingsEqual (double a, double b) {
51
51
double max = std::max (1.0 , std::max (std::fabs (a), std::fabs (b)));
0 commit comments