39 r1 = r0 + 0.5*r0*(1.0 - x*r0*r0);
44 r2 = r1 + 0.5*r1*(1.0 - x*r1*r1);
53 rx = rx + rx*(1.0 - x*rx);
54 rx = rx + rx*(1.0 - x*rx);
60 #define namd_rsqrt(x) (1.0 / sqrt (x))
61 #define namd_reciprocal(x) (1.0 / x)
69 inline Vector(
void) :
x(-99999),
y(-99999),
z(-99999) { ; }
75 :
x(newx),
y(newy),
z(newz) { ; }
78 :
x(newv),
y(newv),
z(newv) { ; }
86 :(
NAMD_die(
"Vector reference out of bounds."),
x);
128 return v1.
x == v2.
x && v1.
y == v2.
y && v1.
z == v2.
z;
132 return v1.
x != v2.
x || v1.
y != v2.
y || v1.
z != v2.
z;
151 return v1.
x * v2.
x + v1.
y * v2.
y + v1.
z * v2.
z;
192 v1.
x*v2.
y-v2.
x*v1.
y );
200 k*(v2.
x*v1.
z-v1.
x*v2.
z),
201 k*(v1.
x*v2.
y-v2.
x*v1.
y) );
207 k*(v2.
x*v1.
z-v1.
x*v2.
z),
208 k*(v1.
x*v2.
y-v2.
x*v1.
y) );
223 return x*v2.
x +
y*v2.
y +
z*v2.
z;
232 int i=sscanf(s,
"%lf%99[ \t,]%lf%99[ \t,]%lf%99s",
233 a, tmp, a+1, tmp, a+2, tmp);
234 if (i != 5)
return FALSE;
246 else if (*t !=
' ' && *t !=
'\t') {
250 if (i == 0 || i == 2) {
251 x = a[0];
y = a[1];
z = a[2];
272 :
Vector (newx, newy, newz) {
pad = 0.0; }
284 #ifdef TEST_VECTOR_CLASS
291 std::cout << v1 <<
" " << v2 <<
" " << v3 <<
" " << v4 <<
'\n';
292 std::cout << v1*v2 <<
" " << v3-v1-2*v2 <<
" "<< v2 * v3 <<
" "<< v3*v2 <<
'\n';
294 std::cout << v4 <<
" " << v3*5.0 - v2/4.0 <<
'\n';
295 std::cout << v4[0] <<
" " << v4[1] <<
" " << v4[2] <<
'\n';
298 std::cout <<
cross(v1, v2) <<
'\n';
299 std::cout << v1 <<
'\n';
301 std::cout << v1 <<
'\n';
303 std::cout << v1 <<
'\n';
307 std::cout << v2 <<
'\n';
308 std::cout << v2.
dot(v1) <<
'\n';
309 std::cout << v1.length() <<
'\n';
312 std::cout << v1 <<
'\n';
void operator/=(const BigReal &v2)
Vector & operator=(const BigReal &v2)
friend Vector cross(const Real &k, const Vector &v1, const Vector &v2)
friend int operator==(const Vector &v1, const Vector &v2)
friend BigReal operator*(const Vector &v1, const Vector &v2)
AlignVector(const FloatVector &v)
__device__ __forceinline__ float3 cross(const float3 v1, const float3 v2)
friend int operator!=(const Vector &v1, const Vector &v2)
AlignVector(BigReal newx, BigReal newy, BigReal newz)
AlignVector(const Vector &v)
BigReal length(void) const
friend Vector cross(const Vector &v1, const Vector &v2)
void operator-=(const Vector &v2)
friend Vector operator/(const Vector &v1, const BigReal &f)
BigReal dot(const Vector &v2)
Vector(const FloatVector &v)
friend Vector operator*(const Vector &v1, const BigReal &f)
friend Vector operator-(const Vector &v1, const Vector &v2)
void NAMD_die(const char *err_msg)
friend Vector operator-(const Vector &v1)
friend Vector operator*(const BigReal &f, const Vector &v1)
BigReal length2(void) const
BigReal & operator[](int i)
void cross(const Vector &v2)
int main(int argc, char *argv[])
friend Vector operator+(const Vector &v1, const Vector &v2)
void operator+=(const Vector &v2)
Vector(BigReal newx, BigReal newy, BigReal newz)
friend Vector cross(const BigReal &k, const Vector &v1, const Vector &v2)
#define namd_reciprocal(x)
void operator*=(const BigReal &v2)
AlignVector(BigReal newv)