19 #ifndef _libint2_src_lib_libint_vector_h_ 20 #define _libint2_src_lib_libint_vector_h_ 24 #if defined(__cplusplus) 28 #include <libint2/type_traits.h> 43 template <
size_t N,
typename T>
57 std::fill_n(&(d[0]), N, a);
64 std::copy(&a[0], &a[0]+N, &d[0]);
68 for(
size_t i=0; i<N; ++i)
74 for(
size_t i=0; i<N; ++i)
80 for(
size_t i=0; i<N; ++i)
85 operator double()
const {
92 template <
size_t N,
typename T>
95 for(
size_t i=0; i<N; ++i)
100 template <
size_t N,
typename T>
103 for(
size_t i=0; i<N; ++i)
108 template <
size_t N,
typename T>
114 for (
size_t i = 0; i < N; ++i)
120 template <
size_t N,
typename T>
126 for (
size_t i = 0; i < N; ++i)
132 template <
size_t N,
typename T>
135 for(
size_t i=0; i<N; ++i)
136 c.d[i] = a.d[i] * b.d[i];
140 template <
size_t N,
typename T>
143 for(
size_t i=0; i<N; ++i)
144 c.d[i] = a.d[i] + b.d[i];
148 template <
size_t N,
typename T>
151 for(
size_t i=0; i<N; ++i)
152 c.d[i] = a.d[i] - b.d[i];
156 template <
size_t N,
typename T>
159 for(
size_t i=0; i<N; ++i)
160 c.d[i] = a.d[i] / b.d[i];
171 template <
size_t N,
typename T>
173 static const bool value =
true;
176 template <
size_t N,
typename T>
178 typedef T value_type;
179 static const size_t extent = N;
184 #include "vector_x86.h" 185 #include "vector_ppc.h" Vector(T a)
Initializes all elements to the same value.
Definition: vector.h:56
Definition: type_traits.h:30
Defaults definitions for various parameters assumed by Libint.
Definition: algebra.cc:23
SafePtr< CTimeEntity< typename ProductType< T, U >::result > > operator*(const SafePtr< CTimeEntity< T > > &A, const SafePtr< CTimeEntity< U > > &B)
Creates product A*B.
Definition: entity.h:277
Vector(T(&a)[N])
creates a vector of values initialized by an ordinary static-sized array
Definition: vector.h:63
Vector<N,T> is used by vectorized Libint library as fixed-length vectors amenable for SIMD-style para...
Definition: vector.h:44
Definition: type_traits.h:25
Vector()
creates a vector of default-initialized values.
Definition: vector.h:51