| 36 |  | * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005). | 
| 37 |  | * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006). | 
| 38 |  | * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008). | 
| 39 | < | * [4]  Vardeman & Gezelter, in progress (2009). | 
| 39 | > | * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010). | 
| 40 | > | * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). | 
| 41 |  | */ | 
| 42 |  |  | 
| 43 |  | /** | 
| 133 |  | * @see #vector::dot | 
| 134 |  | */ | 
| 135 |  | template<typename Real> | 
| 136 | < | Vector3<Real> cross( const Vector3<Real>& v1, const Vector3<Real>& v2 ) { | 
| 136 | > | inline Vector3<Real> cross( const Vector3<Real>& v1, const Vector3<Real>& v2 ) { | 
| 137 |  | Vector3<Real> result; | 
| 138 |  |  | 
| 139 |  | result.x() = v1.y() * v2.z() - v1.z() * v2.y(); | 
| 143 |  | return result; | 
| 144 |  | } | 
| 145 |  |  | 
| 146 | + |  | 
| 147 | + | /** | 
| 148 | + | * Returns the linear indexing for integer vectors. Compare to | 
| 149 | + | * Rapaport's VLinear | 
| 150 | + | * | 
| 151 | + | * @param p first vector | 
| 152 | + | * @param s second vector | 
| 153 | + | */ | 
| 154 | + | template<typename Real> | 
| 155 | + | inline Real Vlinear( const Vector3<Real>& p, const Vector3<Real>& s ) { | 
| 156 | + | return (p.z() * s.y() + p.y()) * s.x() + p.x(); | 
| 157 | + | } | 
| 158 | + |  | 
| 159 |  | typedef Vector3<int> Vector3i; | 
| 160 |  |  | 
| 161 |  | typedef Vector3<RealType> Vector3d; | 
| 163 |  | const Vector3d V3Zero(0.0 , 0.0, 0.0); | 
| 164 |  | const Vector3d V3X( 1.0, 0.0, 0.0 ) ; | 
| 165 |  | const Vector3d V3Y( 0.0, 1.0, 0.0 ) ; | 
| 166 | < | const Vector3d V3Z ( 0.0, 0.0, 1.0 ) ; | 
| 167 | < |  | 
| 166 | > | const Vector3d V3Z ( 0.0, 0.0, 1.0 ) ; | 
| 167 | > |  | 
| 168 |  | } | 
| 169 |  |  | 
| 170 |  | #endif |