home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 509.lha / ATS_v2.0 / my_complex.h < prev    next >
C/C++ Source or Header  |  1991-05-06  |  3KB  |  168 lines

  1. /* @(#) complex.h 1.5 5/29/86 13:19:05 */
  2. /*ident    "@(#)cfront:incl/complex.h    1.5"*/
  3. #include <stream.h>
  4. #include <errno.h>
  5.  
  6. overload cos;
  7. overload cosh;
  8. overload exp;
  9. overload log;
  10. overload pow;
  11. overload sin;
  12. overload sinh;
  13. overload sqrt;
  14. overload abs;
  15. overload tan;
  16. overload tanh;
  17. overload sec;
  18. overload csc;
  19. overload cot;
  20. overload sech;
  21. overload csch;
  22. overload coth;
  23. overload expt;
  24. overload asin;
  25. overload acos;
  26. overload atan;
  27. overload asinh;
  28. overload acosh;
  29. overload atanh;
  30.  
  31.  
  32. #include <math.h>
  33. inline double abs(double d) { return fabs(d); }
  34.  
  35. class complex {
  36.     double    re, im;
  37. public:
  38.     complex(double r = 0, double i = 0)    { re=r; im=i; }
  39.          
  40.     friend    double    real(const complex&);
  41.     friend    double    imag(const complex&);
  42.  
  43.     friend    double    abs(complex);
  44.     friend  double  norm(complex);
  45.     friend  double    arg(complex);
  46.     friend  complex conj(complex);
  47.     friend  complex cos(complex);
  48.     friend  complex cosh(complex);
  49.     friend    complex exp(complex);
  50.     friend  complex log(complex);
  51.     friend  complex pow(double, complex);
  52.     friend    complex pow(complex, int);
  53.     friend    complex pow(complex, double);
  54.     friend    complex pow(complex, complex);
  55.     friend  complex    polar(double, double = 0);
  56.     friend  complex sin(complex);
  57.     friend  complex sinh(complex);
  58.     friend    complex sqrt(complex);
  59.  
  60.     friend    complex    operator+(complex, complex);
  61.     friend    complex    operator-(complex);
  62.     friend    complex operator-(complex, complex);
  63.     friend    complex operator*(complex, complex);
  64.     friend     complex operator/(complex, complex);
  65.     friend     int    operator==(complex, complex);
  66.     friend     int    operator!=(complex, complex);
  67.     
  68.     void operator+=(complex);
  69.     void operator-=(complex);
  70.     void operator*=(complex);
  71.     void operator/=(complex);
  72. };
  73.  
  74. ostream& operator<<(ostream&, complex);
  75. istream& operator>>(istream&, complex&);
  76.  
  77. extern int errno;
  78.  
  79. inline double real(complex& a)
  80. {
  81.     return a.re;
  82. }
  83.  
  84. inline double imag(complex& a)
  85. {
  86.     return a.im;
  87. }
  88.  
  89. inline complex operator+(complex a1, complex a2) 
  90. {
  91.     return complex(a1.re+a2.re, a1.im+a2.im);
  92. }
  93.  
  94. inline complex operator-(complex a1,complex a2) 
  95. {
  96.     return complex(a1.re-a2.re, a1.im-a2.im);
  97. }
  98.  
  99. inline complex operator-(complex a) 
  100. {
  101.     return complex(-a.re, -a.im);
  102. }
  103.  
  104. inline complex conj(complex a) 
  105. {
  106.     return complex(a.re, -a.im);
  107. }
  108.  
  109. inline int operator==(complex a, complex b) 
  110. {
  111.     return (a.re==b.re && a.im==b.im);
  112. }
  113.  
  114. inline int operator!=(complex a, complex b)
  115. {
  116.     return (a.re!=b.re || a.im!=b.im);
  117. }
  118.  
  119. inline void complex.operator+=(complex a)
  120. {
  121.     re += a.re;
  122.     im += a.im;
  123. }
  124.  
  125. inline void complex.operator-=(complex a)
  126. {
  127.     re -= a.re;
  128.     im -= a.im;
  129. }
  130.  
  131.  
  132. static const complex complex_zero(0,0);
  133.  
  134. class c_exception
  135. {
  136.     int    type;
  137.     char    *name;
  138.     complex    arg1;
  139.     complex    arg2;
  140.     complex    retval;
  141. public:
  142.  
  143.     c_exception( char *n, complex a1, complex a2 = complex_zero )
  144.         { name = n; arg1 = a1; arg2 = a2; type = 0; retval = 0; }
  145.  
  146.     friend int complex_error( c_exception& );
  147.  
  148.     friend complex exp( complex );
  149.     friend complex sinh( complex );
  150.     friend complex cosh( complex );
  151.     friend complex log( complex );    
  152.     friend complex tan ( complex );    
  153.     friend complex tanh ( complex );    
  154.     friend complex sec ( complex );    
  155.     friend complex csc ( complex );    
  156.     friend complex cot ( complex );    
  157.     friend complex sech ( complex );    
  158.     friend complex csch ( complex );    
  159.     friend complex expt ( complex ,complex);    
  160.     friend complex asin ( complex );    
  161.     friend complex acos ( complex );    
  162.     friend complex atan ( complex );    
  163.     friend complex asinh ( complex );    
  164.     friend complex acosh ( complex );    
  165.     friend complex atanh ( complex );    
  166.     
  167. };
  168.