home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / CTECHAPP.ZIP / CLASSES.ZIP / COMPLEX.HPP < prev    next >
C/C++ Source or Header  |  1990-02-11  |  3KB  |  96 lines

  1. //  Header:     Complex
  2. //  Version:    2.20
  3. //
  4. //  Language:   C++ 2.0
  5. //  Environ:    Any
  6. //
  7. //  Purpose:    Provides the class "Complex" for C++ programs. The majority
  8. //              of the class is implemented inline for efficiency. Only
  9. //              the division, power, and i/o methods are actual functions.
  10. //
  11. //  Written by: Scott Robert Ladd
  12.  
  13. #if !defined(__COMPLEX_HPP)
  14. #define __COMPLEX_HPP 1
  15.  
  16. class Complex
  17.     {
  18.     private:
  19.         double Real; // Real part
  20.         double Imag; // Imaginary part
  21.  
  22.         static void (* ErrorHandler)();
  23.  
  24.     public:
  25.         // constructors
  26.         Complex (void);
  27.         Complex (const Complex & c);
  28.         Complex (const double & r, const double & i);
  29.         Complex (const double & r);
  30.  
  31.         // method to set error handler function
  32.         static void SetErrorHandler(void (* userHandler)());
  33.  
  34.         // value extraction methods
  35.         friend double real(const Complex & c);
  36.         friend double imag(const Complex & c);
  37.  
  38.         // assignment methods
  39.         void operator = (const Complex & c);
  40.  
  41.         // utility methods
  42.         friend double abs(const Complex & c);
  43.         friend double norm(const Complex & c);
  44.         friend double arg(const Complex & c);
  45.  
  46.         // unary minus method
  47.         Complex operator - ();
  48.  
  49.         // calculation methods
  50.         friend Complex operator + (const Complex & c1, const Complex & c2);
  51.         friend Complex operator - (const Complex & c1, const Complex & c2);
  52.         friend Complex operator * (const Complex & c1, const Complex & c2);
  53.         friend Complex operator / (const Complex & c1, const Complex & c2);
  54.  
  55.         Complex operator += (const Complex & c);
  56.         Complex operator -= (const Complex & c);
  57.         Complex operator *= (const Complex & c);
  58.         Complex operator /= (const Complex & c);
  59.  
  60.         // comparison methods
  61.         friend int operator == (const Complex & c1, const Complex & c2);
  62.         friend int operator != (const Complex & c1, const Complex & c2);
  63.  
  64.         friend int operator <  (const Complex & c1, const Complex & c2);
  65.         friend int operator <= (const Complex & c1, const Complex & c2);
  66.  
  67.         friend int operator >  (const Complex & c1, const Complex & c2);
  68.         friend int operator >= (const Complex & c1, const Complex & c2);
  69.  
  70.         // polar coordinate methods
  71.         friend Complex polar(const double radius, const double theta = 0.0);
  72.         friend Complex conj(const Complex & c);
  73.  
  74.         // trigonometric methods
  75.         friend Complex cos(const Complex & c);
  76.         friend Complex sin(const Complex & c);
  77.         friend Complex tan(const Complex & c);
  78.  
  79.         friend Complex cosh(const Complex & c);
  80.         friend Complex sinh(const Complex & c);
  81.         friend Complex tanh(const Complex & c);
  82.  
  83.         // logarithmic methods
  84.         friend Complex exp(const Complex & c);
  85.         friend Complex log(const Complex & c);
  86.  
  87.         // "power" methods
  88.         friend Complex pow(const Complex & c, const Complex & power);
  89.         friend Complex sqrt(const Complex & c);
  90.  
  91.         // output method
  92.         int Print() const;
  93.     };
  94.  
  95. #endif
  96.