1#ifndef PSCF_MATH_COMPLEX_H
2#define PSCF_MATH_COMPLEX_H
55 template <
typename CT,
typename RT>
65 template <
typename CT,
typename RT>
77 template <
typename CT,
typename RT>
87 template <
typename CT,
typename RT>
100 template <
typename CT>
101 void conj(CT & z, CT
const& a);
110 template <
typename CT>
124 template <
typename CT,
typename RT>
125 void assign(CT & z, RT
const& a, RT
const& b);
135 template <
typename CT,
typename RT>
146 template <
typename CT>
157 template <
typename CT,
typename RT>
158 void assign(CT & z, std::complex<RT>
const& a);
168 template <
typename CT,
typename RT>
169 void assign(std::complex<RT> & z, CT
const& a);
182 template <
typename CT>
183 void add(CT & z, CT
const& a, CT
const& b);
194 template <
typename CT,
typename RT>
195 void add(CT & z, CT
const& a, RT
const& b);
205 template <
typename CT>
216 template <
typename CT,
typename RT>
230 template <
typename CT>
231 void sub(CT & z, CT
const& a, CT
const& b);
242 template <
typename CT,
typename RT>
243 void sub(CT & z, CT
const& a, RT
const& b);
253 template <
typename CT>
264 template <
typename CT,
typename RT>
277 template <
typename CT,
typename RT>
291 template <
typename CT>
292 void mul(CT & z, CT
const& a, CT
const& b);
303 template <
typename CT,
typename RT>
304 void mul(CT & z, CT
const& a, RT
const& b);
314 template <
typename CT>
325 template <
typename CT,
typename RT>
336 template <
typename CT>
350 template <
typename CT>
351 void div(CT & z, CT
const& a, CT
const& b);
362 template <
typename CT,
typename RT>
363 void div(CT & z, CT
const& a, RT
const& b);
373 template <
typename CT>
384 template <
typename CT,
typename RT>
394 std::istream&
operator >> (std::istream& is, CT & z);
403 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.