PageRenderTime 910ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/Examples/octave/operator/example.h

#
C++ Header | 35 lines | 31 code | 3 blank | 1 comment | 0 complexity | c2bb9614533296fa70da20cf50d10c4c MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. /* File : example.h */
  2. #include <math.h>
  3. class ComplexVal {
  4. private:
  5. double rpart, ipart;
  6. public:
  7. ComplexVal(double r = 0, double i = 0) : rpart(r), ipart(i) { }
  8. ComplexVal(const ComplexVal &c) : rpart(c.rpart), ipart(c.ipart) { }
  9. ComplexVal &operator=(const ComplexVal &c) {
  10. rpart = c.rpart;
  11. ipart = c.ipart;
  12. return *this;
  13. }
  14. ComplexVal operator+(const ComplexVal &c) const {
  15. return ComplexVal(rpart+c.rpart, ipart+c.ipart);
  16. }
  17. ComplexVal operator-(const ComplexVal &c) const {
  18. return ComplexVal(rpart-c.rpart, ipart-c.ipart);
  19. }
  20. ComplexVal operator*(const ComplexVal &c) const {
  21. return ComplexVal(rpart*c.rpart - ipart*c.ipart,
  22. rpart*c.ipart + c.rpart*ipart);
  23. }
  24. ComplexVal operator-() const {
  25. return ComplexVal(-rpart, -ipart);
  26. }
  27. double re() const { return rpart; }
  28. double im() const { return ipart; }
  29. };
  30. ComplexVal operator*(const double &s, const ComplexVal &c) {
  31. return ComplexVal(s*c.re(), s*c.im());
  32. }