mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-04-13 12:42:20 +00:00
Upgrade to QWT 6.0.1, but still uses a locally patched copy since support for 8 axes has not been included, despite it being a relatively simple patch. Fixes #634. Fixes #567.
84 lines
1.8 KiB
C++
84 lines
1.8 KiB
C++
#ifndef _COMPLEX_NUMBER_H_
|
|
#define _COMPLEX_NUMBER_H_
|
|
|
|
#include <math.h>
|
|
|
|
class ComplexNumber
|
|
{
|
|
public:
|
|
ComplexNumber() ;
|
|
ComplexNumber(double r, double i = 0.0);
|
|
|
|
double real() const;
|
|
double imag() const;
|
|
|
|
friend ComplexNumber operator*(
|
|
const ComplexNumber &, const ComplexNumber &);
|
|
|
|
friend ComplexNumber operator+(
|
|
const ComplexNumber &, const ComplexNumber &);
|
|
|
|
friend ComplexNumber operator-(
|
|
const ComplexNumber &, const ComplexNumber &);
|
|
friend ComplexNumber operator/(
|
|
const ComplexNumber &, const ComplexNumber &);
|
|
|
|
private:
|
|
double d_real;
|
|
double d_imag;
|
|
};
|
|
|
|
inline ComplexNumber::ComplexNumber():
|
|
d_real(0.0),
|
|
d_imag(-0.0)
|
|
{
|
|
}
|
|
|
|
inline ComplexNumber::ComplexNumber(double re, double im):
|
|
d_real(re),
|
|
d_imag(im)
|
|
{
|
|
}
|
|
|
|
inline double ComplexNumber::real() const
|
|
{
|
|
return d_real;
|
|
}
|
|
|
|
inline double ComplexNumber::imag() const
|
|
{
|
|
return d_imag;
|
|
}
|
|
|
|
inline ComplexNumber operator+(
|
|
const ComplexNumber &x1, const ComplexNumber &x2)
|
|
{
|
|
return ComplexNumber(x1.d_real + x2.d_real, x1.d_imag + x2.d_imag);
|
|
}
|
|
|
|
inline ComplexNumber operator-(
|
|
const ComplexNumber &x1, const ComplexNumber &x2)
|
|
{
|
|
return ComplexNumber(x1.d_real - x2.d_real, x1.d_imag - x2.d_imag);
|
|
}
|
|
|
|
inline ComplexNumber operator*(
|
|
const ComplexNumber &x1, const ComplexNumber &x2)
|
|
{
|
|
return ComplexNumber(x1.d_real * x2.d_real - x1.d_imag * x2.d_imag,
|
|
x1.d_real * x2.d_imag + x2.d_real * x1.d_imag);
|
|
}
|
|
|
|
inline ComplexNumber operator/(
|
|
const ComplexNumber &x1, const ComplexNumber &x2)
|
|
{
|
|
double denom = x2.d_real * x2.d_real + x2.d_imag * x2.d_imag;
|
|
|
|
return ComplexNumber(
|
|
(x1.d_real * x2.d_real + x1.d_imag * x2.d_imag) / denom,
|
|
(x1.d_imag * x2.d_real - x2.d_imag * x1.d_real) / denom
|
|
);
|
|
}
|
|
|
|
#endif
|