Complex numbers with CPU and GPU operators. More...
#include <cmath>
#include <cstdlib>
#include <vector>
Classes | |
struct | array< T, N > |
struct | complex |
Complex number (need to define our own because we need operators for gpu code as well) More... | |
Macros | |
#define | __hostanddev__ inline |
Functions | |
template<class T > | |
T | ceildiv (T num, T den) |
Ceiling of a positive integer division, templated over int types. | |
template<class T > | |
T | floorMultiple (T num, T den) |
Return largest multiple of den smaller than num, templated over int types. | |
__hostanddev__ double | real (const complex &c) |
real part | |
__hostanddev__ double | imag (const complex &c) |
imaginary part | |
__hostanddev__ double | norm (const complex &c) |
absolute value squared | |
__hostanddev__ double | abs (const complex &c) |
absolute value | |
__hostanddev__ double | arg (const complex &c) |
argument (phase angle) | |
__hostanddev__ complex | conj (const complex &c) |
complex conjugate | |
__hostanddev__ double | conj (const double &c) |
identity operation provided to ease templating over complex and double | |
__hostanddev__ complex | operator+ (double r, const complex &c) |
__hostanddev__ complex | operator- (double r, const complex &c) |
__hostanddev__ complex | operator* (double r, const complex &c) |
__hostanddev__ complex | cis (double x) |
Compute cis(x) = exp(iota x) = cos(x) + iota sin(x) | |
Complex numbers with CPU and GPU operators.