Add files from zip
This commit is contained in:
87
examples/bode/ComplexNumber.h
Normal file
87
examples/bode/ComplexNumber.h
Normal file
@@ -0,0 +1,87 @@
|
||||
/*****************************************************************************
|
||||
* Qwt Examples
|
||||
* Copyright (C) 1997 Josef Wilgen
|
||||
* Copyright (C) 2002 Uwe Rathmann
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the Qwt License, Version 1.0
|
||||
*****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
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 m_real;
|
||||
double m_imag;
|
||||
};
|
||||
|
||||
inline ComplexNumber::ComplexNumber()
|
||||
: m_real( 0.0 )
|
||||
, m_imag( -0.0 )
|
||||
{
|
||||
}
|
||||
|
||||
inline ComplexNumber::ComplexNumber( double re, double im )
|
||||
: m_real( re )
|
||||
, m_imag( im )
|
||||
{
|
||||
}
|
||||
|
||||
inline double ComplexNumber::real() const
|
||||
{
|
||||
return m_real;
|
||||
}
|
||||
|
||||
inline double ComplexNumber::imag() const
|
||||
{
|
||||
return m_imag;
|
||||
}
|
||||
|
||||
inline ComplexNumber operator+(
|
||||
const ComplexNumber& x1, const ComplexNumber& x2 )
|
||||
{
|
||||
return ComplexNumber( x1.m_real + x2.m_real, x1.m_imag + x2.m_imag );
|
||||
}
|
||||
|
||||
inline ComplexNumber operator-(
|
||||
const ComplexNumber& x1, const ComplexNumber& x2 )
|
||||
{
|
||||
return ComplexNumber( x1.m_real - x2.m_real, x1.m_imag - x2.m_imag );
|
||||
}
|
||||
|
||||
inline ComplexNumber operator*(
|
||||
const ComplexNumber& x1, const ComplexNumber& x2 )
|
||||
{
|
||||
return ComplexNumber( x1.m_real * x2.m_real - x1.m_imag * x2.m_imag,
|
||||
x1.m_real * x2.m_imag + x2.m_real * x1.m_imag );
|
||||
}
|
||||
|
||||
inline ComplexNumber operator/(
|
||||
const ComplexNumber& x1, const ComplexNumber& x2 )
|
||||
{
|
||||
double denom = x2.m_real * x2.m_real + x2.m_imag * x2.m_imag;
|
||||
|
||||
return ComplexNumber(
|
||||
( x1.m_real * x2.m_real + x1.m_imag * x2.m_imag ) / denom,
|
||||
( x1.m_imag * x2.m_real - x2.m_imag * x1.m_real ) / denom
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user