1#ifndef PSCF_MATH_COMPLEX_H
2#define PSCF_MATH_COMPLEX_H
25 template <
typename CT,
typename RT>
35 template <
typename CT,
typename RT>
47 template <
typename CT,
typename RT>
57 template <
typename CT,
typename RT>
70 template <
typename CT>
71 void conj(CT& z, CT
const& a);
80 template <
typename CT>
94 template <
typename CT,
typename RT>
95 void assign(CT& z, RT
const& a, RT
const& b);
105 template <
typename CT,
typename RT>
116 template <
typename CT>
127 template <
typename CT,
typename RT>
128 void assign(CT & z, std::complex<RT>
const& a);
138 template <
typename CT,
typename RT>
139 void assign(std::complex<RT> & z, CT
const& a);
152 template <
typename CT>
153 void add(CT& z, CT
const& a, CT
const& b);
164 template <
typename CT,
typename RT>
165 void add(CT& z, CT
const& a, RT
const& b);
175 template <
typename CT>
186 template <
typename CT,
typename RT>
200 template <
typename CT>
201 void sub(CT& z, CT
const& a, CT
const& b);
212 template <
typename CT,
typename RT>
213 void sub(CT& z, CT
const& a, RT
const& b);
223 template <
typename CT>
234 template <
typename CT,
typename RT>
247 template <
typename CT,
typename RT>
261 template <
typename CT>
262 void mul(CT& z, CT
const& a, CT
const& b);
273 template <
typename CT,
typename RT>
274 void mul(CT& z, CT
const& a, RT
const& b);
284 template <
typename CT>
295 template <
typename CT,
typename RT>
306 template <
typename CT>
320 template <
typename CT>
321 void div(CT& z, CT
const& a, CT
const& b);
332 template <
typename CT,
typename RT>
333 void div(CT& z, CT
const& a, RT
const& b);
343 template <
typename CT>
354 template <
typename CT,
typename RT>
364 std::istream&
operator >> (std::istream& is, CT & z);
373 std::ostream&
operator << (std::ostream& os, CT
const & z);
void div(CT &z, CT const &a, CT const &b)
Division of two complex numbers, z = a / b .
void square(CT &z, CT const &a)
Compute complex square of a complex number, z = a * a.
void conj(CT &z, CT const &a)
Compute complex conjugate, z = a^*.
void divEq(CT &a, CT const &b)
In place division of two complex number, a /= b.
void subEq(CT &a, CT const &b)
In place subtraction of two complex numbers, a -= b.
RT imag(CT const &a)
Return the imaginary part of a complex number.
RT abs(CT const &a)
Return absolute magnitude of a complex number.
void mulEq(CT &a, CT const &b)
In place multiplication of two complex number, a *= b.
RT absSq(CT const &a)
Return square of absolute magnitude of a complex number.
void assign(CT &z, RT const &a, RT const &b)
Create a complex number from real and imaginary parts, z = a + ib.
void addEq(CT &a, CT const &b)
In place addition of complex numbers, a += b.
RT absSqDiff(CT const &a, CT const &b)
Return square of the absolute magnitude of a complex difference.
RT real(CT const &a)
Return the real part of a complex number.
void add(CT &z, CT const &a, CT const &b)
Addition of two complex numbers, z = a + b.
void sub(CT &z, CT const &a, CT const &b)
Subtraction of two complex numbers, z = a - b.
void mul(CT &z, CT const &a, CT const &b)
Multiplication of two complex numbers, z = a * b.
PSCF package top-level namespace.
std::istream & operator>>(std::istream &in, Pair< Data > &pair)
Input a Pair from an istream.
std::ostream & operator<<(std::ostream &out, const Pair< Data > &pair)
Output a Pair to an ostream, without line breaks.