9#include <util/containers/Array.h>
29 for (
int i = 0; i < n; ++i) {
42 for (
int i = 0; i < n; ++i) {
57 for (
int i = 0; i < n; ++i) {
74 for (
int i = 0; i < n; ++i) {
88 for (
int i = 0; i < n; ++i) {
101 for (
int i = 0; i < n; ++i) {
114 for (
int i = 0; i < n; ++i) {
133 for (
int i = 0; i < n; ++i) {
134 a[i][0] = b[i][0] + c[i][0];
135 a[i][1] = b[i][1] + c[i][1];
150 for (
int i = 0; i < n; ++i) {
151 a[i][0] = b[i][0] + c[i];
167 for (
int i = 0; i < n; ++i) {
168 a[i][0] = b[i][0] + c[0];
169 a[i][1] = b[i][1] + c[1];
183 for (
int i = 0; i < n; ++i) {
184 a[i][0] = b[i][0] + c;
202 for (
int i = 0; i < n; ++i) {
203 a[i][0] = b[i][0] - c[i][0];
204 a[i][1] = b[i][1] - c[i][1];
219 for (
int i = 0; i < n; ++i) {
220 a[i][0] = b[i][0] - c[i];
235 for (
int i = 0; i < n; ++i) {
236 a[i][0] = b[i][0] - c[0];
237 a[i][1] = b[i][1] - c[1];
251 for (
int i = 0; i < n; ++i) {
252 a[i][0] = b[i][0] - c;
270 for (
int i = 0; i < n; ++i) {
271 a[i][0] = b[i][0]*c[i][0] - b[i][1]*c[i][1];
272 a[i][1] = b[i][0]*c[i][1] + b[i][1]*c[i][0];
287 for (
int i = 0; i < n; ++i) {
288 a[i][0] = b[i][0]*c[i];
289 a[i][1] = b[i][1]*c[i];
303 for (
int i = 0; i < n; ++i) {
304 a[i][0] = b[i][0]*c[0] - b[i][1]*c[1];
305 a[i][1] = b[i][0]*c[1] + b[i][1]*c[0];
319 for (
int i = 0; i < n; ++i) {
339 for (
int i = 0; i < n; ++i) {
343 a[i][0] = (b[i][0]*cr + b[i][1]*ci)/cSq;
344 a[i][1] = (b[i][1]*cr - b[i][0]*ci)/cSq;
359 for (
int i = 0; i < n; ++i) {
360 a[i][0] = b[i][0] / c[i];
361 a[i][1] = b[i][1] / c[i];
377 double cSq = cr * cr + ci * ci;
378 for (
int i = 0; i < n; ++i) {
379 a[i][0] = (b[i][0]*cr + b[i][1]*ci)/cSq;
380 a[i][1] = (b[i][1]*cr - b[i][0]*ci)/cSq;
394 for (
int i = 0; i < n; ++i) {
395 a[i][0] = b[i][0] / c;
396 a[i][1] = b[i][1] / c;
411 for (
int i = 0; i < n; ++i) {
428 for (
int i = 0; i < n; ++i) {
442 for (
int i = 0; i < n; ++i) {
454 for (
int i = 0; i < n; ++i) {
467 for (
int i = 0; i < n; ++i) {
482 for (
int i = 0; i < n; ++i) {
496 for (
int i = 0; i < n; ++i) {
508 for (
int i = 0; i < n; ++i) {
521 for (
int i = 0; i < n; ++i) {
537 for (
int i = 0; i < n; ++i) {
538 x = a[i][0] * b[i][0] - a[i][1] * b[i][1];
539 y = a[i][0] * b[i][1] + a[i][1] * b[i][0];
553 for (
int i = 0; i < n; ++i) {
567 for (
int i = 0; i < n; ++i) {
568 x = a[i][0] * b[0] - a[i][1] * b[1];
569 y = a[i][0] * b[1] + a[i][1] * b[0];
582 for (
int i = 0; i < n; ++i) {
598 double br, bi, bSq, x, y;
599 for (
int i = 0; i < n; ++i) {
603 x = (a[i][0] * br + a[i][1] * bi)/bSq;
604 y = (a[i][1] * br - a[i][0] * bi)/bSq;
618 for (
int i = 0; i < n; ++i) {
633 double bSq = br*br + bi*bi;
635 for (
int i = 0; i < n; ++i) {
636 x = (a[i][0] * br + a[i][1] * bi) / bSq;
637 y = (a[i][1] * br - a[i][0] * bi) / bSq;
650 for (
int i = 0; i < n; ++i) {
667 for (
int i = 0; i < n; ++i) {
668 rex = std::exp(b[i][0]);
669 a[i][0] = rex * cos(b[i][1]);
670 a[i][1] = rex * sin(b[i][1]);
685 for (
int i = 0; i < n; ++i) {
688 a[i][0] = br * br - bi * bi;
689 a[i][1] = 2.0 * br * bi;
704 for (
int i = 0; i < n; ++i) {
707 a[i] = br * br + bi * bi;
720 for (
int i = 0; i < n; ++i) {
723 sq = br * br + bi * bi;
735 for (
int i = 0; i < n; ++i) {
Array container class template.
int capacity() const
Return allocated size.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
void divEqS(Array< double > &a, double b)
Vector-scalar in-place division, a[i] /= b.
void addEqV(Array< double > &a, Array< double > const &b)
Vector-vector in-place addition, a[i] += b[i] (real).
void divEqV(Array< double > &a, Array< double > const &b)
Vector-vector in-place division, a[i] /= b[i].
void addEqS(Array< double > &a, double b)
Vector-scalar in-place addition, a[i] += b (real).
void sqV(Array< double > &a, Array< double > const &b)
Vector element-wise square, a[i] = b[i]*b[i] (real).
void mulEqV(Array< double > &a, Array< double > const &b)
Vector-vector in-place multiplication, a[i] *= b[i] (real).
void eqV(Array< double > &a, Array< double > const &b, const int beginIdA, const int beginIdB, const int n)
Vector assignment, a[i] = b[i] (real, slice).
void sqAbsV(Array< double > &a, Array< fftw_complex > const &b)
Square of absolute magnitude, a[i] = |b[i]|^2 (complex).
void imag(Array< double > &a, Array< fftw_complex > const &b)
Copy imaginary part of a complex array to a real array.
void sqSqAbsV(Array< double > &a, Array< fftw_complex > const &b)
Fourth power of absolute magnitude, a[i] = |b[i]|^4 (complex).
void mulEqS(Array< double > &a, double b)
Vector-scalar in-place multiplication, a[i] *= b (real).
void subVV(Array< double > &a, Array< double > const &b, Array< double > const &c)
Vector-vector subtraction, a[i] = b[i] - c[i] (real)
void expV(Array< double > &a, Array< double > const &b)
Vector exponentiation, a[i] = exp(b[i]) (real).
void divVS(Array< double > &a, Array< double > const &b, double c)
Vector-scalar division, a[i] = b[i] / c (real).
void eqS(Array< double > &a, double b)
Vector assignment, a[i] = b (real).
void mulVV(Array< double > &a, Array< double > const &b, Array< double > const &c)
Vector-vector multiplication, a[i] = b[i] * c[i] (real).
void subVS(Array< double > &a, Array< double > const &b, double c)
Vector-scalar subtraction, a[i] = b[i] - c (real).
void subEqV(Array< double > &a, Array< double > const &b)
Vector-vector in-place subtraction, a[i] -= b[i] (real).
void addVV(Array< double > &a, Array< double > const &b, Array< double > const &c)
Vector-vector addition, a[i] = b[i] + c[i] (real)
void real(Array< double > &a, Array< fftw_complex > const &b)
Copy real part of a complex array to a real array.
void addVS(Array< double > &a, Array< double > const &b, double c)
Vector-scalar addition, a[i] = b[i] + c (real).
void divEqVc(Array< fftw_complex > &a, Array< double > const &b, double c)
Vector division in-place w/ coeff., a[i] /= (b[i] * c).
void divVV(Array< double > &a, Array< double > const &b, Array< double > const &c)
Vector-vector division, a[i] = b[i] / c[i] (real).
void subEqS(Array< double > &a, double b)
Vector-scalar subtraction in-place, a[i] -= b (real).
void mulVS(Array< double > &a, Array< double > const &b, double c)
Vector-scalar multiplication, a[i] = b[i] * c (real).
Vector operations on GPU or CPU.
PSCF package top-level namespace.