39 "Allocation of GSL_vector of size " + std::to_string(
size)
57 vec = gsl_vector_alloc(other.
size());
61 "Allocation of GSL_vector of size " + std::to_string(other.
size())
65 gsl_vector_memcpy(
vec, other.
vec);
70 move_assign(std::move(other));
75 if (list.size() == 0) {
79 vec = gsl_vector_alloc(list.size());
83 "Allocation of GSL_vector of size " + std::to_string(list.size())
87 std::copy(list.begin(), list.end(), gsl_vector_ptr(
vec, 0));
102 if (other ==
nullptr) {
103 gsl_vector_free(
vec);
109 if (
size() != other->size) {
110 gsl_vector_free(
vec);
111 vec = gsl_vector_alloc(other->size);
113 if (
vec ==
nullptr) {
115 "Allocation of GSL_vector of size " + std::to_string(other->size)
120 gsl_vector_memcpy(
vec, other);
140 gsl_vector_free(vec);
141 move_assign(std::move(rhs));
149 return *gsl_vector_ptr(
vec, n);
154 return gsl_vector_get(
vec, n);
171 if (
vec ==
nullptr) {
203 if (vec !=
nullptr) {
204 gsl_vector_set_all(vec, value);
212 for (std::size_t i = 0; i < vec.
size(); i++) {
214 if (i < vec.size() - 1) {
232 if (
vec ==
nullptr) {
234 "GSL_vector::operator[]: index " + std::to_string(n)
235 +
" out of range for vector of size 0.");
240 "GSL_vector::operator[]: index " + std::to_string(n)
241 +
" out of range for vector of size " + std::to_string(
size()) +
".");
248 return gsl_vector_ptr(v.
raw(), 0);
257 double* last = gsl_vector_ptr(v.
raw(), v.
size() - 1);
267 return gsl_vector_const_ptr(v.
raw(), 0);
276 const double* last = gsl_vector_const_ptr(v.
raw(), v.
size() - 1);
292 for (std::size_t i = 0; i < v.
size(); i++) {
293 if (!std::isfinite(v[i])) {
void assign(const gsl_vector *)
assign from gsl_vector
void set_all(double) noexcept
set all elemets to same value
double & operator[](std::size_t)
element read/write access
const gsl_vector * raw() const noexcept
get raw pointer
void range_check(std::size_t) const
bool empty() const noexcept
check if empty
gsl::owner< gsl_vector > * release() noexcept
release raw pointer from this object
void move_assign(GSL_vector &&) noexcept
move assign
double & operator()(std::size_t)
element read/write access w/ range check
std::size_t size() const noexcept
number of elements
GSL_vector & operator=(const GSL_vector &)
gsl::owner< gsl_vector > * vec
raw gsl_vector
double * end(GSL_vector &v)
iterator to end of GSL_vector
double * begin(GSL_vector &v)
iterator to begin of GSL_vector
bool is_finite(const gsl_vector *x)
Returns true if GSL vector contains only finite elements, false otherwise.
const double * cbegin(const GSL_vector &v)
const iterator to begin of GSL_vector
std::ostream & operator<<(std::ostream &ostr, const Dynamic_array_view< ElementType > &av)
const double * cend(const GSL_vector &v)
const iterator to end of GSL_vector