Eq2deg
Eq2deg.hpp
Go to the documentation of this file.
1 #ifndef __EQ2DEG_HPP
2 #define __EQ2DEG_HPP
3 
18 // //////////////////////////////////////////////////////////////////////
19 // Import section
20 // //////////////////////////////////////////////////////////////////////
21 // STL
22 #include <vector>
23 
24 #include <Utilities.hpp>
25 
26 class Eq2deg: public Utilities{
27  protected:
28  double m_a, m_b, m_c;
29  double m_delta;
30  std::vector<double> m_rac;
31  public:
39  Eq2deg(const double& iA, const double& iB, const double& iC );
40  virtual ~Eq2deg();
45  virtual void computeDelta();
50  virtual void computeRoots();
57  double getRoot(const int& iRootNumber) const;
58 
64  virtual double getDelta();
69  struct NegativeDeltaException : public std::exception {
70  const char * what () const throw () {
71  return "Invalid coefficients, no real roots";
72  }
73  };
74  private:
80  virtual std::string describe() const;
81 };
82 
83 #endif //__EQ2DEG_HPP
virtual double getDelta()
Get the discriminant.
Definition: Eq2deg.cpp:27
Definition: Utilities.hpp:25
std::vector< double > m_rac
Definition: Eq2deg.hpp:30
const char * what() const
Definition: Eq2deg.hpp:70
virtual ~Eq2deg()
Definition: Eq2deg.cpp:18
double m_c
Definition: Eq2deg.hpp:28
double m_a
Definition: Eq2deg.hpp:28
virtual void computeRoots()
Compute the roots.
Definition: Eq2deg.cpp:32
Definition: Eq2deg.hpp:26
virtual void computeDelta()
compute the discriminant and raise an exception if negative
Definition: Eq2deg.cpp:21
double getRoot(const int &iRootNumber) const
Get the root value by number.
Definition: Eq2deg.cpp:47
Eq2deg(const double &iA, const double &iB, const double &iC)
Construct a new Eq2deg object.
Definition: Eq2deg.cpp:12
double m_delta
Definition: Eq2deg.hpp:29
double m_b
Definition: Eq2deg.hpp:28
Object to handle exception when no reals roots exists.
Definition: Eq2deg.hpp:69