GeoModel - GeoModelCore
FunctionNegation.h
1 //==========================================================================//
2 // Imported from the QAT library (qat.pitt.edu) by the copyright holder //
3 // Joe Boudreau. Software licensed under the terms and conditions of the //
4 // GNU Lesser Public License v3. //
5 //==========================================================================//
6 
7 //--------------------------FunctionNegation--------------------------------//
8 // //
9 // Class FunctionNegation, output of the unary - operator //
10 // //
11 //--------------------------------------------------------------------------//
12 #ifndef FunctionNegation_h
13 #define FunctionNegation_h 1
14 #include "GeoGenericFunctions/AbsFunction.h"
15 
16 // For persistification:
17 class FunctionNegationRecorder;
18 
19 namespace GeoGenfun {
20 
21  class FunctionNegation : public AbsFunction {
22 
23  FUNCTION_OBJECT_DEF(FunctionNegation)
24 
25  public:
26 
27  // Constructor
28  FunctionNegation(const AbsFunction *arg1);
29 
30  // Copy constructor.
31  FunctionNegation(const FunctionNegation &right);
32 
33  // Destructor
34  virtual ~FunctionNegation();
35 
36  // Retreive function value
37  virtual double operator ()(double argument) const override;
38  virtual double operator ()(const Argument & a) const override;
39 
40  // Dimensionality
41  virtual unsigned int dimensionality() const override;
42 
43  // Derivative.
44  virtual Derivative partial (unsigned int) const override;
45 
46  // Does this function have an analytic derivative?
47  virtual bool hasAnalyticDerivative() const override {return true;}
48 
49  private:
50 
51  // It is illegal to assign a FunctionNegation
52  const FunctionNegation & operator=(const FunctionNegation &right);
53 
54  // The function we're negating.
55  const AbsFunction *_arg1;
56 
57  // For persistification:
58  friend class ::FunctionNegationRecorder;
59 
60  };
61 } // namespace GeoGenfun
62 #endif
Definition: Abs.h:15