#include <core/scalar.h>#include <vector>#include <cstdio>Go to the source code of this file.
Classes | |
| class | vector3< scalar > |
| Generic 3-vector. More... | |
Macros | |
| #define | LOOP3(code) { for(int k=0; k<3; k++) { code } } |
Functions | |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > | operator+ (scalar s, const vector3< scalar > &a) |
| __hostanddev__ vector3< int > | operator+ (int s, const vector3< int > &a) |
| __hostanddev__ vector3< int > | operator+ (const vector3< int > &a, int s) |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > | operator+ (const vector3< scalar > &a, int s) |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > | operator+ (int s, const vector3< scalar > &a) |
| __hostanddev__ vector3 | operator+ (vector3<> a, vector3< int > b) |
| __hostanddev__ vector3 | operator+ (vector3< int > a, vector3<> b) |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > & | operator*= (vector3< scalar > &a, scalar s) |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > & | operator*= (vector3< scalar > &a, double s) |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > & | operator*= (vector3< scalar > &a, int s) |
| __hostanddev__ vector3 & | operator*= (vector3<> &a, double s) |
| __hostanddev__ vector3 & | operator*= (vector3<> &a, int s) |
| __hostanddev__ vector3< int > & | operator*= (vector3< int > &a, int s) |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > | operator* (scalar s, const vector3< scalar > &a) |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > | operator* (double s, const vector3< scalar > &a) |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > | operator* (const vector3< scalar > &a, double s) |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > | operator* (int s, const vector3< scalar > &a) |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > | operator* (const vector3< scalar > &a, int s) |
| __hostanddev__ vector3 | operator* (double s, const vector3<> &a) |
| __hostanddev__ vector3 | operator* (const vector3<> &a, double s) |
| __hostanddev__ vector3 | operator* (double s, const vector3< int > &a) |
| __hostanddev__ vector3 | operator* (const vector3< int > &a, double s) |
| __hostanddev__ vector3< complex > | operator* (complex s, const vector3<> &a) |
| __hostanddev__ vector3< complex > | operator* (const vector3<> &a, complex s) |
| __hostanddev__ vector3< complex > | operator* (complex s, const vector3< int > &a) |
| __hostanddev__ vector3< complex > | operator* (const vector3< int > &a, complex s) |
| template<typename scalar > | |
| __hostanddev__ scalar | dot (const vector3< scalar > &a, const vector3< scalar > &b) |
| template<typename scalar > | |
| __hostanddev__ scalar | dot (const vector3< double > &a, const vector3< scalar > &b) |
| template<typename scalar > | |
| __hostanddev__ scalar | dot (const vector3< int > &a, const vector3< scalar > &b) |
| template<typename scalar > | |
| __hostanddev__ scalar | dot (const vector3< scalar > &a, const vector3< double > &b) |
| template<typename scalar > | |
| __hostanddev__ scalar | dot (const vector3< scalar > &a, const vector3< int > &b) |
| __hostanddev__ double | dot (const vector3< double > &a, const vector3< double > &b) |
| __hostanddev__ double | dot (const vector3< int > &a, const vector3< double > &b) |
| __hostanddev__ double | dot (const vector3< double > &a, const vector3< int > &b) |
| __hostanddev__ int | dot (const vector3< int > &a, const vector3< int > &b) |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > | cross (const vector3< scalar > &a, const vector3< scalar > &b) |
| cross product | |
| template<typename scalar > | |
| __hostanddev__ scalar | box (const vector3< scalar > &a, const vector3< scalar > &b, const vector3< scalar > &c) |
| box product / triple product | |
| __hostanddev__ vector3< int > | round (const vector3<> &v, double *err=0) |
| Round vector3<> to vector3<int> (and optionally retrieve error) | |
| __hostanddev__ double | circDistanceSquared (const vector3<> &a, const vector3<> &b) |
| template<typename T > | |
| T | gcd (T x, T y) |
| GCD of integers, templated over integer types. | |
| template<typename T > | |
| vector3< T > | gcdReduce (const vector3< T > &d) |
| Reduce an integer vector by its gcd. | |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > | loadVector (const vector3< const scalar * > &vArr, int i) |
| Load vector from a constant vector field. | |
| template<typename scalar > | |
| __hostanddev__ vector3< scalar > | loadVector (const vector3< scalar * > &vArr, int i) |
| Load vector from a vector field. | |
| template<typename scalar > | |
| __hostanddev__ void | storeVector (const vector3< scalar > &v, vector3< scalar * > &vArr, int i) |
| Store vector to a vector field. | |
| template<typename scalar > | |
| __hostanddev__ void | accumVector (const vector3< scalar > &v, vector3< scalar * > &vArr, int i) |
| Accumulate vector onto a vector field. | |
3-vector and fields there of
Return squared distance between a and b, interpreted as coordinates on a unit S1xS1xS1 embedded in R^6 i.e. sum of squares of distances between each coordinate put on a circle. This is useful for checking distances in a periodic cell safely.