GeoModel - GeoModelCore
FunctionQuotient.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 //--------------------------FunctionQuotient--------------------------------//
8 // //
9 // FunctionProduct, result of multiplication of two functions. //
10 // //
11 //--------------------------------------------------------------------------//
12 #ifndef FunctionQuotient_h
13 #define FunctionQuotient_h 1
14 #include "GeoGenericFunctions/AbsFunction.h"
15 
16 // For persistification:
17 class FunctionQuotientRecorder;
18 
19 namespace GeoGenfun {
20 
21  class FunctionQuotient : public AbsFunction {
22 
23  FUNCTION_OBJECT_DEF(FunctionQuotient)
24 
25  public:
26 
27  // Constructor
28  FunctionQuotient(const AbsFunction *arg1, const AbsFunction *arg2);
29 
30  // Copy constructor
31  FunctionQuotient(const FunctionQuotient &right);
32 
33  // Destructor
34  virtual ~FunctionQuotient();
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 FunctionQuotient
52  const FunctionQuotient & operator=(const FunctionQuotient &right);
53 
54  const AbsFunction *_arg1;
55  const AbsFunction *_arg2;
56 
57  // For persistification:
58  friend class ::FunctionQuotientRecorder;
59 
60  };
61 } // namespace GeoGenfun
62 #endif
Definition: Abs.h:15