48#include <gsl/gsl_vector.h>
49#include <gsl/gsl_blas.h>
52namespace Geom {
namespace NL {
62 return *gsl_vector_const_ptr(
m_vector, i);
76 for (
size_t i = 0; i <
size(); ++i )
78 if ( (*
this)[i] <= 0 )
return false;
85 for (
size_t i = 0; i <
size(); ++i )
87 if ( (*
this)[i] >= 0 )
return false;
94 for (
size_t i = 0; i <
size(); ++i )
96 if ( (*
this)[i] < 0 )
return false;
113 return gsl_vector_max_index(
m_vector);
118 return gsl_vector_min_index(
m_vector);
126 std::string
str()
const;
142 if (v1.
size() != v2.
size())
return false;
144 for (
size_t i = 0; i < v1.
size(); ++i)
146 if (v1[i] != v2[i])
return false;
151template<
class charT >
153std::basic_ostream<charT> &
154operator<< (std::basic_ostream<charT> & os,
const BaseVectorImpl & _vector)
156 if (_vector.size() == 0 )
return os;
157 os <<
"[" << _vector[0];
158 for (
unsigned int i = 1; i < _vector.size(); ++i)
160 os <<
", " << _vector[i];
169 std::ostringstream oss;
199 using base_type::operator[];
203 return *gsl_vector_ptr(
m_vector, i);
215 gsl_vector_swap_elements(
m_vector, i, j);
231 gsl_vector_add_constant(
m_vector, x);
252using detail::operator==;
253using detail::operator<<;
467 = gsl_vector_view_array(_vector +
offset, n);
473 = gsl_vector_view_array_with_stride(_vector +
offset,
stride, n);
506 m_vector_view = gsl_vector_view_array(&(_vector[0]), _vector.size());
detail::BaseVectorImpl base_type
ConstVectorView(const std::vector< double > &_vector)
gsl_vector_const_view m_vector_view
ConstVectorView(gsl_vector_const_view _gsl_vector_view)
ConstVectorView(const base_type &_vector, size_t n, size_t offset=0)
ConstVectorView(const base_type &_vector, size_t n, size_t offset, size_t stride)
ConstVectorView(const double *_vector, size_t n, size_t offset=0)
ConstVectorView(const base_type &_vector)
ConstVectorView(const ConstVectorView &_vector)
ConstVectorView(const double *_vector, size_t n, size_t offset, size_t stride)
VectorView(double *_vector, size_t n, size_t offset=0, size_t stride=1)
VectorView & operator-=(base_type::base_type const &_vector)
VectorView & operator=(base_type::base_type const &_vector)
VectorView & operator+=(base_type::base_type const &_vector)
friend void swap_view(VectorView &v1, VectorView &v2)
VectorView(Vector &_vector)
VectorView & scale(double x)
gsl_vector_view m_vector_view
detail::VectorImpl base_type
VectorView(gsl_vector_view _gsl_vector_view)
VectorView(std::vector< double > &_vector)
VectorView & operator=(VectorView const &_vector)
VectorView & translate(double x)
VectorView(const VectorView &_vector)
VectorView(base_type &_vector, size_t n, size_t offset=0, size_t stride=1)
Vector(base_type::base_type const &_vector)
Vector & operator-=(base_type::base_type const &_vector)
Vector(size_t n, double x)
Vector & operator=(Vector const &_vector)
Vector & operator+=(base_type::base_type const &_vector)
friend void swap_any(Vector &v1, Vector &v2)
Vector(size_t n, size_t i)
Vector & translate(double x)
Vector(Vector const &_vector)
friend void swap(Vector &v1, Vector &v2)
Vector & operator=(base_type::base_type const &_vector)
detail::VectorImpl base_type
bool is_non_negative() const
const gsl_vector * get_gsl_vector() const
virtual ~BaseVectorImpl()
double const & operator[](size_t i) const
gsl_vector * get_gsl_vector()
double & operator[](size_t i)
VectorImpl & operator+=(base_type const &_vector)
void swap_elements(size_t i, size_t j)
VectorImpl & scale(double x)
VectorImpl & operator-=(base_type const &_vector)
VectorImpl & translate(double x)
double dot(BaseVectorImpl const &v1, BaseVectorImpl const &v2)
const VectorView & const_vector_view_cast(const ConstVectorView &view)
void swap_any(Matrix &m1, Matrix &m2)
void swap(Matrix &m1, Matrix &m2)
void swap_view(MatrixView &m1, MatrixView &m2)
Various utility functions.