21 #ifndef _libint2_src_bin_libint_boostutil_h_ 22 #define _libint2_src_bin_libint_boostutil_h_ 24 #include <boost/tuple/tuple.hpp> 29 template <
typename T,
int N>
33 VectorN() {
for(
int i=0; i<N; ++i) data_[i] = T(); }
34 VectorN(
const VectorN& a) {
for(
int i=0; i<N; ++i) data_[i] = a.data_[i]; }
37 for(
int i=0; i<N; ++i)
38 data_[i] += a.data_[i];
42 for(
int i=0; i<N; ++i)
43 data_[i] -= a.data_[i];
48 T
norm1()
const { T result(0);
for(
int i=0; i<N; ++i) result += abs(data_[i]);
return result; }
50 T& operator[](
int i) {
54 const T& operator[](
int i)
const {
62 template<
typename T,
int N>
63 VectorN<T,N> operator+(
const VectorN<T,N>& a,
64 const VectorN<T,N>& b) {
65 VectorN<T,N> result(a);
69 template<
typename T,
int N>
70 VectorN<T,N> operator-(
const VectorN<T,N>& a,
71 const VectorN<T,N>& b) {
72 VectorN<T,N> result(a);
77 template <
typename T,
int N>
78 inline VectorN<T,N> unit_vector(
int i) {
79 assert(i >= 0 && i < N);
86 typedef VectorN<int,3> IntVec3;
87 inline IntVec3 unit_intvec3(
int i) {
88 return unit_vector<int,3>(i);
92 for(
int xyz=0; xyz<3; ++xyz)
Defaults definitions for various parameters assumed by Libint.
Definition: algebra.cc:24
bool ltzero(const IntVec3 &a)
return true if has elements < 0
Definition: vectorn.h:91
T norm1() const
1-norm
Definition: vectorn.h:48
vector of N elements of type T
Definition: vectorn.h:30
VectorN()
Default is vector of zeroes.
Definition: vectorn.h:33