MADNESS 0.10.1
|
A simple, fixed dimension vector. More...
#include <vector.h>
Public Types | |
using | arrayT = std::array< T, N > |
The underlying array type. | |
using | const_iterator = typename arrayT::const_iterator |
Const iterator type. | |
using | const_reference = typename arrayT::const_reference |
Const reference type. | |
using | const_reverse_iterator = typename arrayT::const_reverse_iterator |
Const reverse iterator type. | |
using | difference_type = typename arrayT::difference_type |
Difference type. | |
using | iterator = typename arrayT::iterator |
Iterator type. | |
using | reference = typename arrayT::reference |
Reference type. | |
using | reverse_iterator = typename arrayT::reverse_iterator |
Reverse iterator type. | |
using | size_type = typename arrayT::size_type |
Size type. | |
using | value_type = typename arrayT::value_type |
The data value type. | |
Public Member Functions | |
constexpr | Vector ()=default |
Default constructor; does not initialize vector contents. | |
template<typename Q > | |
constexpr | Vector (const Q(&t)[N]) |
Construct from a C-style array of the same dimension. | |
template<typename Q > | |
constexpr | Vector (const std::array< Q, N > &t) |
Construct from a std::array of equal length. | |
template<typename Q , typename A > | |
constexpr | Vector (const std::vector< Q, A > &t) |
Construct from an STL vector of equal or greater length. | |
template<typename Q > | |
constexpr | Vector (const Vector< Q, N > &other) |
Copy constructor is deep (because Vector is POD). | |
constexpr | Vector (const Vector< T, N > &other) |
Copy constructor is deep (because Vector is POD). | |
template<typename Q > | |
constexpr | Vector (Q t) |
Initialize all elements to value t . | |
constexpr | Vector (std::initializer_list< T > list) |
List initialization constructor (deep copy because Vector is POD). | |
constexpr reference | at (size_type i) |
Access element i of the Vector with bounds checking. | |
constexpr const_reference | at (size_type i) const |
Access element i of the Vector with bounds checking. | |
constexpr reference | back () |
Access the last element. | |
constexpr const_reference | back () const |
Access the last element. | |
constexpr iterator | begin () |
Iterator starting at the first element. | |
constexpr const_iterator | begin () const |
Const iterator starting at the first element. | |
constexpr T * | data () |
Direct access to the underlying array. | |
constexpr const T * | data () const |
Direct access to the underlying array. | |
constexpr bool | empty () const |
Check if the Vector is empty. | |
constexpr iterator | end () |
Iterator to the end (past the last element). | |
constexpr const_iterator | end () const |
Const iterator to the end (past the last element). | |
constexpr void | fill (const T &t) |
Fill the Vector with the specified value. | |
constexpr reference | front () |
Access the first element. | |
constexpr const_reference | front () const |
Access the first element. | |
constexpr hashT | hash () const |
Support for MADNESS hashing. | |
constexpr size_type | max_size () const |
Get the maximum size of the Vector . | |
constexpr T | normf () const |
Calculate the 2-norm of the vector elements. | |
constexpr | operator std::array< T, N > () |
Type conversion to a std::array . | |
template<typename Q > | |
constexpr Vector< T, N > & | operator*= (Q q) |
In-place, element-wise multiplcation by a scalar. | |
template<typename Q > | |
constexpr Vector< T, N > & | operator+= (const Vector< Q, N > &q) |
In-place, element-wise addition of another Vector . | |
template<typename Q > | |
constexpr Vector< T, N > & | operator-= (const Vector< Q, N > &q) |
In-place, element-wise subtraction of another Vector . | |
template<typename Q , typename A > | |
constexpr Vector< T, N > & | operator= (const std::vector< Q, A > &other) |
Assignment is deep (because Vector is POD). | |
constexpr Vector< T, N > & | operator= (const T &t) |
Fill from a scalar value. | |
template<typename Q > | |
constexpr Vector< T, N > & | operator= (const Vector< Q, N > &other) |
Assignment is deep (because Vector is POD). | |
constexpr Vector< T, N > & | operator= (const Vector< T, N > &other) |
Assignment is deep (because a Vector is POD). | |
constexpr Vector< T, N > & | operator= (std::initializer_list< T > list) |
List initialization assignment (deep copy because Vector is POD). | |
constexpr reference | operator[] (size_type i) |
Access element i of the Vector . | |
constexpr const_reference | operator[] (size_type i) const |
Access element i of the Vector . | |
constexpr reverse_iterator | rbegin () |
Reverse iterator starting at the last element. | |
constexpr const_reverse_iterator | rbegin () const |
Const reverse iterator starting at the last element. | |
constexpr reverse_iterator | rend () |
Reverse iterator to the beginning (before the first element). | |
constexpr const_reverse_iterator | rend () const |
Const reverse iterator to the beginning (before the first element). | |
template<typename Archive > | |
constexpr void | serialize (Archive &ar) |
Support for MADNESS serialization. | |
constexpr size_type | size () const |
Accessor for the number of elements in the Vector . | |
constexpr void | swap (Vector< T, N > &other) |
Swap the contents with another Vector . | |
Static Public Attributes | |
static constexpr size_type | static_size = N |
The size of the Vector . | |
Private Attributes | |
arrayT | data_ |
The underlying array. | |
Friends | |
template<typename Q , std::size_t M> | |
class | Vector |
constexpr bool | operator!= (const Vector< T, N > &l, const Vector< T, N > &r) |
Check if any element is not equal to its partner in the other Vector . | |
constexpr bool | operator< (const Vector< T, N > &l, const Vector< T, N > &r) |
Compare l and r lexicographically. | |
std::ostream & | operator<< (std::ostream &s, const Vector< T, N > &v) |
Output a Vector to stream. | |
constexpr bool | operator<= (const Vector< T, N > &l, const Vector< T, N > &r) |
Compare l and r lexicographically. | |
constexpr bool | operator== (const Vector< T, N > &l, const Vector< T, N > &r) |
Check if each element is equal to its partner in the other Vector . | |
constexpr bool | operator> (const Vector< T, N > &l, const Vector< T, N > &r) |
Compare l and r lexicographically. | |
constexpr bool | operator>= (const Vector< T, N > &l, const Vector< T, N > &r) |
Compare l and r lexicographically. | |
A simple, fixed dimension vector.
This class eliminates memory allocation cost, is just POD (it can be copied easily and allocated on the stack), and the known dimension permits aggressive compiler optimizations.
Provides additional mathematical and I/O operations.
T | The type of data stored in the vector. |
N | The size of the vector. |
The underlying array type.
using madness::Vector< T, N >::const_iterator = typename arrayT::const_iterator |
Const iterator type.
using madness::Vector< T, N >::const_reference = typename arrayT::const_reference |
Const reference type.
using madness::Vector< T, N >::const_reverse_iterator = typename arrayT::const_reverse_iterator |
Const reverse iterator type.
using madness::Vector< T, N >::difference_type = typename arrayT::difference_type |
Difference type.
using madness::Vector< T, N >::iterator = typename arrayT::iterator |
Iterator type.
using madness::Vector< T, N >::reference = typename arrayT::reference |
Reference type.
using madness::Vector< T, N >::reverse_iterator = typename arrayT::reverse_iterator |
Reverse iterator type.
using madness::Vector< T, N >::size_type = typename arrayT::size_type |
Size type.
using madness::Vector< T, N >::value_type = typename arrayT::value_type |
The data value type.
|
constexprdefault |
Default constructor; does not initialize vector contents.
|
inlineexplicitconstexpr |
Initialize all elements to value t
.
Q | The type of t . |
[in] | t | The value used to initialized the Vector . |
References madness::Vector< T, N >::fill().
|
inlineexplicitconstexpr |
Construct from a C-style array of the same dimension.
Q | The type of data in t . |
[in] | t | The C-style array. |
References madness::Vector< T, N >::data_, and N.
|
inlineexplicitconstexpr |
Construct from an STL vector of equal or greater length.
Q | Type of data stored in the std::vector . |
A | Allocator type for the std::vector . |
[in] | t | The std::vector . |
References madness::Vector< T, N >::operator=().
|
inlineexplicitconstexpr |
Construct from a std::array
of equal length.
Q | Type of data stored in the original std::array . |
[in] | t | The std::array . |
References madness::Vector< T, N >::data_.
Copy constructor is deep (because Vector
is POD).
[in] | other | The Vector to copy. |
References madness::Vector< T, N >::data_, MADNESS_PRAGMA_GCC, madness::nonlinear_vector_solver(), and madness::pop().
Copy constructor is deep (because Vector
is POD).
Q | Type of the Vector to copy. |
[in] | other | The Vector to copy. |
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
List initialization constructor (deep copy because Vector
is POD).
This constructor allows initialization using, e.g.,
MadnessException | if the list does not contain exactly N elements. |
[in] | list | The initializer list; elements are copied to the Vector . |
References madness::Vector< T, N >::data_, MADNESS_ASSERT, and N.
|
inlineconstexpr |
Access element i
of the Vector
with bounds checking.
[in] | i | The index. |
i
. References madness::Vector< T, N >::data_.
Referenced by madness::ScalingFunctionFunctor< NDIM, std::enable_if_t< std::greater{}(NDIM, 1)> >::special_points().
|
inlineconstexpr |
Access element i
of the Vector
with bounds checking.
[in] | i | The index. |
i
. References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Access the last element.
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Access the last element.
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Iterator starting at the first element.
References madness::Vector< T, N >::data_.
Referenced by main().
|
inlineconstexpr |
Const iterator starting at the first element.
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Direct access to the underlying array.
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Direct access to the underlying array.
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Check if the Vector
is empty.
Vector
is empty; false otherwise. This should be false unless N == 0
. References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Iterator to the end (past the last element).
References madness::Vector< T, N >::data_.
Referenced by madness::trajectory< NDIM >::line2().
|
inlineconstexpr |
Const iterator to the end (past the last element).
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Fill the Vector
with the specified value.
[in] | t | The value used to fill the Vector . |
References madness::Vector< T, N >::data_, and N.
Referenced by madness::Vector< T, N >::Vector(), madness::cartesian_grid< NDIM >::initialize(), madness::Vector< T, N >::operator=(), test_arithmetic(), and test_lowrank_function().
|
inlineconstexpr |
Access the first element.
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Access the first element.
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Support for MADNESS hashing.
References madness::Vector< T, N >::data_, and madness::hash_value().
|
inlineconstexpr |
Get the maximum size of the Vector
.
N
. References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Calculate the 2-norm of the vector elements.
References d, madness::Vector< T, N >::data_, N, madness::nonlinear_vector_solver(), and T().
Referenced by madness::Diamagnetic_potential_factor::Diamagnetic_potential_factor(), madness::Diamagnetic_potential_factor::apply_potential(), madness::Diamagnetic_potential_factor::compute_nabla_R_div_R(), madness::Diamagnetic_potential_factor::compute_R_times_T_commutator_scalar_term_numerically(), madness::Diamagnetic_potential_factor::compute_U2(), madness::NuclearCorrelationFactor::dsmoothed_unitvec(), madness::Diamagnetic_potential_factor::factor_with_phase(), ExactSpinor::Fvalue(), Ansatz0::make_guess(), make_Hv(), madness::Molecule::nuclear_attraction_potential_second_derivative(), sgl_guess::operator()(), madness::R_times_arg_div_R::operator()(), ncf::operator()(), madness::NuclearCorrelationFactor::R_functor::operator()(), madness::NuclearCorrelationFactor::U1_functor::operator()(), madness::NuclearCorrelationFactor::U1_atomic_functor::operator()(), madness::NuclearCorrelationFactor::U1_dot_U1_functor::operator()(), madness::NuclearCorrelationFactor::U2_functor::operator()(), madness::NuclearCorrelationFactor::U3_functor::operator()(), madness::NuclearCorrelationFactor::U2_atomic_functor::operator()(), madness::NuclearCorrelationFactor::U3_atomic_functor::operator()(), madness::NuclearCorrelationFactor::square_times_V_functor::operator()(), madness::NuclearCorrelationFactor::square_times_V_derivative_functor::operator()(), madness::NuclearCorrelationFactor::RX_functor::operator()(), madness::NuclearCorrelationFactor::U1X_functor::operator()(), madness::NuclearCorrelationFactor::U2X_functor::operator()(), madness::NuclearCorrelationFactor::U3X_functor::operator()(), madness::Znemo::s_orbital::operator()(), madness::Znemo::p_orbital::operator()(), madness::spherical_box< NDIM >::operator()(), ExactSpinor::psivalue(), madness::Polynomial< N >::Sp(), test_add(), test_conversion(), test_inner(), test_Kcommutator(), and madness::unitvec().
|
inlineconstexpr |
Type conversion to a std::array
.
std::array
.
|
inlineconstexpr |
In-place, element-wise multiplcation by a scalar.
Q | Type of the scalar. |
[in] | q | The scalar. |
References madness::Vector< T, N >::data_, N, and q().
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
Assignment is deep (because Vector
is POD).
Make sure the size of other
is at least N
.
Q | The type of data in the std::vector . |
A | The allocator type for the std::vector . |
[in] | other | The std::vector to copy. |
Vector
. References madness::Vector< T, N >::data_, MADNESS_ASSERT, and N.
|
inlineconstexpr |
Fill from a scalar value.
[in] | t | The scalar to use for filling. |
Vector
. References madness::Vector< T, N >::fill().
|
inlineconstexpr |
Assignment is deep (because Vector
is POD).
Q | The type of the Vector to copy. |
[in] | other | The Vector to copy. |
Vector
. References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Assignment is deep (because a Vector
is POD).
[in] | other | The Vector to copy. |
Vector
. References madness::Vector< T, N >::data_.
Referenced by madness::Vector< T, N >::Vector().
|
inlineconstexpr |
List initialization assignment (deep copy because Vector
is POD).
This assignment operator allows initialization using, e.g.,
MadnessException | if the list does not contain exactly N elements. |
[in] | list | The initializer list; elements are copied to the Vector . |
References madness::Vector< T, N >::data_, MADNESS_ASSERT, and N.
|
inlineconstexpr |
Access element i
of the Vector
.
Bounds checking is not performed.
[in] | i | The index. |
i
. References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Access element i
of the Vector
.
Bounds checking is not performed.
[in] | i | The index. |
i
. References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Reverse iterator starting at the last element.
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Const reverse iterator starting at the last element.
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Reverse iterator to the beginning (before the first element).
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Const reverse iterator to the beginning (before the first element).
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Support for MADNESS serialization.
Archive | The archive type. |
[in,out] | ar | The archive. |
References madness::Vector< T, N >::data_.
|
inlineconstexpr |
Accessor for the number of elements in the Vector
.
References madness::Vector< T, N >::data_.
Referenced by madness::LRFunctorF12< T, NDIM, LDIM >::norm2(), madness::PlotParameters::origin(), and updatex().
Swap the contents with another Vector
.
[in] | other | The other vector. |
References madness::Vector< T, N >::data_.
Referenced by madness::swap().
The underlying array.
Referenced by madness::Vector< T, N >::Vector(), madness::Vector< T, N >::Vector(), madness::Vector< T, N >::Vector(), madness::Vector< T, N >::Vector(), madness::Vector< T, N >::Vector(), madness::Vector< T, N >::at(), madness::Vector< T, N >::at(), madness::Vector< T, N >::back(), madness::Vector< T, N >::back(), madness::Vector< T, N >::begin(), madness::Vector< T, N >::begin(), madness::Vector< T, N >::data(), madness::Vector< T, N >::data(), madness::Vector< T, N >::empty(), madness::Vector< T, N >::end(), madness::Vector< T, N >::end(), madness::Vector< T, N >::fill(), madness::Vector< T, N >::front(), madness::Vector< T, N >::front(), madness::Vector< T, N >::hash(), madness::Vector< T, N >::max_size(), madness::Vector< T, N >::normf(), madness::Vector< double, NDIM >::operator std::array< double, N >(), madness::Vector< T, N >::operator*=(), madness::Vector< T, N >::operator+=(), madness::Vector< T, N >::operator-=(), madness::Vector< T, N >::operator=(), madness::Vector< T, N >::operator=(), madness::Vector< T, N >::operator=(), madness::Vector< T, N >::operator=(), madness::Vector< T, N >::operator[](), madness::Vector< T, N >::operator[](), madness::Vector< T, N >::rbegin(), madness::Vector< T, N >::rbegin(), madness::Vector< T, N >::rend(), madness::Vector< T, N >::rend(), madness::Vector< T, N >::serialize(), madness::Vector< T, N >::size(), and madness::Vector< T, N >::swap().
|
inlinestaticconstexpr |
The size of the Vector
.