21#ifndef _libint2_src_bin_libint_boostutil_h_
22#define _libint2_src_bin_libint_boostutil_h_
24#include <boost/tuple/tuple.hpp>
29template <
typename T,
int N>
34 for (
int i = 0; i < N; ++i) data_[i] = T();
37 for (
int i = 0; i < N; ++i) data_[i] = a.data_[i];
41 for (
int i = 0; i < N; ++i) data_[i] += a.data_[i];
45 for (
int i = 0; i < N; ++i) data_[i] -= a.data_[i];
52 for (
int i = 0; i < N; ++i) result += abs(data_[i]);
56 T& operator[](
int i) {
57 assert(i >= 0 && i < N);
60 const T& operator[](
int i)
const {
61 assert(i >= 0 && i < N);
69template <
typename T,
int N>
70VectorN<T, N> operator+(
const VectorN<T, N>& a,
const VectorN<T, N>& b) {
71 VectorN<T, N> result(a);
75template <
typename T,
int N>
76VectorN<T, N> operator-(
const VectorN<T, N>& a,
const VectorN<T, N>& b) {
77 VectorN<T, N> result(a);
82template <
typename T,
int N>
83inline VectorN<T, N> unit_vector(
int i) {
84 assert(i >= 0 && i < N);
91typedef VectorN<int, 3> IntVec3;
92inline IntVec3 unit_intvec3(
int i) {
return unit_vector<int, 3>(i); }
95 for (
int xyz = 0; xyz < 3; ++xyz)
96 if (a[xyz] < 0)
return true;
vector of N elements of type T
Definition vectorn.h:30
VectorN()
Default is vector of zeroes.
Definition vectorn.h:33
T norm1() const
1-norm
Definition vectorn.h:50
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:94