gslcpp
Modern-C++ Wrapper for GSL
Public Types | Public Member Functions | List of all members
gsl::v_iface< T, N, S > Struct Template Reference

Interface for every kind of vector. More...

#include <v-iface.hpp>

Inheritance diagram for gsl::v_iface< T, N, S >:
[legend]
Collaboration diagram for gsl::v_iface< T, N, S >:
[legend]

Public Types

enum  { SIZE = N }
 
using E = T
 Element-type needed by gsl::v_iterator<v_iface>.
 
using iterator = v_iterator< v_iface >
 Type of iterator that points to mutable element.
 
using const_iterator = v_iterator< v_iface const >
 Type of iterator that points to immutable element.
 

Public Member Functions

iterator begin ()
 Iterator that points to first element. More...
 
iterator end ()
 Iterator that points to element just past last element. More...
 
const_iterator begin () const
 Iterator that points to first element. More...
 
const_iterator end () const
 Iterator that points to element just past last element. More...
 
size_t size () const
 Size of vector. More...
 
T * data ()
 Pointer to first element in vector. More...
 
const T * data () const
 Pointer to first element in immutable vector. More...
 
get (size_t i) const
 Read element with bounds-checking. More...
 
void set (size_t i, T const &x)
 Write element with bounds-checking. More...
 
const T & operator[] (size_t i) const
 Read element without bounds-checking. More...
 
T & operator[] (size_t i)
 Write element without bounds-checking. More...
 
T * ptr (size_t i)
 Retrieve pointer to ith element with bounds-checking. More...
 
const T * ptr (size_t i) const
 Retrieve pointer to ith element with bounds-checking. More...
 
void set_all (T const &x)
 Set every element. More...
 
void set_zero ()
 Set every element to zero.
 
int set_basis (size_t i)
 Set element at offset i to unity and every other element to zero. More...
 
int fwrite (FILE *f) const
 Write non-portable binary-image of vector to file. More...
 
int fread (FILE *f)
 Read non-portable binary-image of vector from file. More...
 
int fprintf (FILE *flp, char const *fmt) const
 Write ASCII-formatted representation of vector to file. More...
 
int fscanf (FILE *f)
 Read ASCII-formatted representation of vector from file. More...
 
v_iface< element_t< T >, N, v_viewreal ()
 View of real-part of complex vector. More...
 
v_iface< element_t< T > const, N, v_viewreal () const
 View of real-part of complex vector. More...
 
v_iface< element_t< T >, N, v_viewimag ()
 View of imaginary-part of complex vector. More...
 
v_iface< element_t< T > const, N, v_viewimag () const
 View of imaginary-part of complex vector. More...
 
v_iface< T, N, v_viewsubvector (size_t n, size_t i=0, size_t s=1)
 View of subvector of vector. More...
 
v_iface< T const, N, v_viewsubvector (size_t n, size_t i=0, size_t s=1) const
 View of subvector of vector. More...
 
v_iface< T, N, v_viewview ()
 View of vector. More...
 
v_iface< T const, N, v_viewview () const
 View of vector. More...
 
int swap_elements (size_t i, size_t j)
 Swap elements within this vector. More...
 
int reverse ()
 Reverse order of elements. More...
 
template<size_t ON, template< typename, size_t > class OV>
int add (v_iface< T, ON, OV > const &b)
 Add contents of b into this vector in place. More...
 
template<size_t ON, template< typename, size_t > class OV>
int sub (v_iface< T, ON, OV > const &b)
 Subtract contents of b from this vector in place. More...
 
template<size_t ON, template< typename, size_t > class OV>
int mul (v_iface< T, ON, OV > const &b)
 Multiply contents of b into this vector in place. More...
 
template<size_t ON, template< typename, size_t > class OV>
int div (v_iface< T, ON, OV > const &b)
 Divide contents of b into this vector in place. More...
 
template<size_t ON, template< typename, size_t > class OV>
v_ifaceoperator+= (v_iface< T, ON, OV > const &b)
 Add contents of b into this vector in place. More...
 
template<size_t ON, template< typename, size_t > class OV>
v_ifaceoperator-= (v_iface< T, ON, OV > const &b)
 Subtract contents of b from this vector in place. More...
 
template<size_t ON, template< typename, size_t > class OV>
v_ifaceoperator*= (v_iface< T, ON, OV > const &b)
 Multiply contents of b into this vector in place. More...
 
template<size_t ON, template< typename, size_t > class OV>
v_ifaceoperator/= (v_iface< T, ON, OV > const &b)
 Divide contents of b into this vector in place. More...
 
template<size_t ON, template< typename, size_t > class OV>
v_ifaceoperator= (v_iface< T, ON, OV > const &b)
 Copy contents of b into this vector. More...
 
v_ifaceoperator= (v_iface const &b)
 Copy contents of b into this vector. More...
 
 v_iface (v_iface &&)=default
 Enable move-constructor in gsl::v_stor to work.
 
int scale (T const &x)
 Multiply scalar into this vector in place. More...
 
v_ifaceoperator*= (T const &x)
 Multiply scalar into this vector in place. More...
 
int add_constant (T const &x)
 Add constant into each element of this vector in place. More...
 
v_ifaceoperator+= (T const &x)
 Add constant into each element of this vector in place. More...
 
sum () const
 Sum of elements. More...
 
max () const
 Greatest value of any element. More...
 
min () const
 Least value of any element. More...
 
void minmax (T &min, T &max) const
 Greatest value and least value of any element. More...
 
size_t max_index () const
 Offset of greatest value. More...
 
size_t min_index () const
 Offset of least value. More...
 
void minmax_index (size_t &imin, size_t &imax) const
 Offset of least value and offset of greatest value. More...
 
bool isnull () const
 True only if every element have zero value. More...
 
bool ispos () const
 True only if every element be positive. More...
 
bool isneg () const
 True only if every element be negative. More...
 
bool isnonneg () const
 True only if every element be non-negative. More...
 

Detailed Description

template<typename T, size_t N, template< typename, size_t > class S>
struct gsl::v_iface< T, N, S >

Interface for every kind of vector.

Template Parameters
TType of each element in vector.
NCompile-time number of elements (0 means set at run-time).
SType specifying interface to storage of elements.

Definition at line 62 of file v-iface.hpp.

Member Enumeration Documentation

◆ anonymous enum

template<typename T , size_t N, template< typename, size_t > class S>
anonymous enum
Enumerator
SIZE 

Size at compile-time.

Definition at line 70 of file v-iface.hpp.

70 { SIZE= N };

Member Function Documentation

◆ add()

template<typename T , size_t N, template< typename, size_t > class S>
template<size_t ON, template< typename, size_t > class OV>
int gsl::v_iface< T, N, S >::add ( v_iface< T, ON, OV > const &  b)
inline

Add contents of b into this vector in place.

Template Parameters
ONCompile-time number of elements in b.
OVType of interface to storage for b.
Parameters
bVector whose contents should be added into this.
Returns
TBD: GSL's documentation does not specify.

Definition at line 247 of file v-iface.hpp.

247  {
248  static_assert(N == ON || N == 0 || ON == 0);
249  return w_add(v(), b.v());
250  }

◆ add_constant()

template<typename T , size_t N, template< typename, size_t > class S>
int gsl::v_iface< T, N, S >::add_constant ( T const &  x)
inline

Add constant into each element of this vector in place.

Parameters
xConstant to add into this vector.
Returns
TBD: GSL's documentation does not specify.

Definition at line 372 of file v-iface.hpp.

372 { return w_add_constant(v(), x); }

◆ begin() [1/2]

template<typename T , size_t N, template< typename, size_t > class S>
iterator gsl::v_iface< T, N, S >::begin ( )
inline

Iterator that points to first element.

Returns
Iterator that points to first element.

Definition at line 83 of file v-iface.hpp.

83 { return iterator(*this, 0); }

◆ begin() [2/2]

template<typename T , size_t N, template< typename, size_t > class S>
const_iterator gsl::v_iface< T, N, S >::begin ( ) const
inline

Iterator that points to first element.

Returns
Iterator that points to first element.

Definition at line 91 of file v-iface.hpp.

91 { return const_iterator(*this, 0); }

◆ data() [1/2]

template<typename T , size_t N, template< typename, size_t > class S>
T* gsl::v_iface< T, N, S >::data ( )
inline

Pointer to first element in vector.

  • Be careful to check v()->stride in case data be not contiguous.
    Returns
    Pointer to first element.

Definition at line 104 of file v-iface.hpp.

104 { return (T *)v()->data; /* Cast for complex. */ }

◆ data() [2/2]

template<typename T , size_t N, template< typename, size_t > class S>
const T* gsl::v_iface< T, N, S >::data ( ) const
inline

Pointer to first element in immutable vector.

  • Be careful to check v()->stride in case data be not contiguous.
    Returns
    Pointer to first immutable element.

Definition at line 109 of file v-iface.hpp.

109  {
110  return (T const *)v()->data; /* Cast for complex. */
111  }

◆ div()

template<typename T , size_t N, template< typename, size_t > class S>
template<size_t ON, template< typename, size_t > class OV>
int gsl::v_iface< T, N, S >::div ( v_iface< T, ON, OV > const &  b)
inline

Divide contents of b into this vector in place.

Template Parameters
ONCompile-time number of elements in b.
OVType of interface to storage for b.
Parameters
bVector whose contents should be divided into this.
Returns
TBD: GSL's documentation does not specify.

Definition at line 280 of file v-iface.hpp.

280  {
281  static_assert(N == ON || N == 0 || ON == 0);
282  return w_div(v(), b.v());
283  }

◆ end() [1/2]

template<typename T , size_t N, template< typename, size_t > class S>
iterator gsl::v_iface< T, N, S >::end ( )
inline

Iterator that points to element just past last element.

Returns
Iterator that points to element just past last element.

Definition at line 87 of file v-iface.hpp.

87 { return iterator(*this, size()); }

◆ end() [2/2]

template<typename T , size_t N, template< typename, size_t > class S>
const_iterator gsl::v_iface< T, N, S >::end ( ) const
inline

Iterator that points to element just past last element.

Returns
Iterator that points to element just past last element.

Definition at line 95 of file v-iface.hpp.

95 { return const_iterator(*this, size()); }

◆ fprintf()

template<typename T , size_t N, template< typename, size_t > class S>
int gsl::v_iface< T, N, S >::fprintf ( FILE *  flp,
char const *  fmt 
) const
inline

Write ASCII-formatted representation of vector to file.

Parameters
flpPointer to structure for buffered interface.
fmtprintf()-style format-string.
Returns
Zero only on success.

Definition at line 171 of file v-iface.hpp.

171  {
172  return w_fprintf(flp, v(), fmt);
173  }

◆ fread()

template<typename T , size_t N, template< typename, size_t > class S>
int gsl::v_iface< T, N, S >::fread ( FILE *  f)
inline

Read non-portable binary-image of vector from file.

Parameters
fPointer to structure for buffered interface.
Returns
Zero only on success.

Definition at line 165 of file v-iface.hpp.

165 { return w_fread(f, v()); };

◆ fscanf()

template<typename T , size_t N, template< typename, size_t > class S>
int gsl::v_iface< T, N, S >::fscanf ( FILE *  f)
inline

Read ASCII-formatted representation of vector from file.

Parameters
fPointer to structure for buffered interface.
Returns
Zero only on success.

Definition at line 178 of file v-iface.hpp.

178 { return w_fscanf(f, v()); }

◆ fwrite()

template<typename T , size_t N, template< typename, size_t > class S>
int gsl::v_iface< T, N, S >::fwrite ( FILE *  f) const
inline

Write non-portable binary-image of vector to file.

Parameters
fPointer to structure for buffered interface.
Returns
Zero only on success.

Definition at line 160 of file v-iface.hpp.

160 { return w_fwrite(f, v()); }

◆ get()

template<typename T , size_t N, template< typename, size_t > class S>
T gsl::v_iface< T, N, S >::get ( size_t  i) const
inline

Read element with bounds-checking.

Parameters
iOffset of element.
Returns
Value of element.

Definition at line 116 of file v-iface.hpp.

116 { return w_get(v(), i); }

◆ imag() [1/2]

template<typename T , size_t N, template< typename, size_t > class S>
v_iface<element_t<T>, N, v_view> gsl::v_iface< T, N, S >::imag ( )
inline

View of imaginary-part of complex vector.

Returns
View of imaginary-part of complex vector.

Definition at line 190 of file v-iface.hpp.

190 { return w_imag(v()); }

◆ imag() [2/2]

template<typename T , size_t N, template< typename, size_t > class S>
v_iface<element_t<T> const, N, v_view> gsl::v_iface< T, N, S >::imag ( ) const
inline

View of imaginary-part of complex vector.

Returns
View of imaginary-part of complex vector.

Definition at line 194 of file v-iface.hpp.

194 { return w_imag(v()); }

◆ isneg()

template<typename T , size_t N, template< typename, size_t > class S>
bool gsl::v_iface< T, N, S >::isneg ( ) const
inline

True only if every element be negative.

Returns
True only if every element be negative.

Definition at line 424 of file v-iface.hpp.

424 { return w_isneg(v()); }

◆ isnonneg()

template<typename T , size_t N, template< typename, size_t > class S>
bool gsl::v_iface< T, N, S >::isnonneg ( ) const
inline

True only if every element be non-negative.

Returns
True only if every element be non-negative.

Definition at line 428 of file v-iface.hpp.

428 { return w_isnonneg(v()); }

◆ isnull()

template<typename T , size_t N, template< typename, size_t > class S>
bool gsl::v_iface< T, N, S >::isnull ( ) const
inline

True only if every element have zero value.

Returns
True only if every element be zero.

Definition at line 416 of file v-iface.hpp.

416 { return w_isnull(v()); }

◆ ispos()

template<typename T , size_t N, template< typename, size_t > class S>
bool gsl::v_iface< T, N, S >::ispos ( ) const
inline

True only if every element be positive.

Returns
True only if every element be positive.

Definition at line 420 of file v-iface.hpp.

420 { return w_ispos(v()); }

◆ max()

template<typename T , size_t N, template< typename, size_t > class S>
T gsl::v_iface< T, N, S >::max ( ) const
inline

Greatest value of any element.

Returns
Greatest value of any element.

Definition at line 388 of file v-iface.hpp.

388 { return w_max(v()); }

◆ max_index()

template<typename T , size_t N, template< typename, size_t > class S>
size_t gsl::v_iface< T, N, S >::max_index ( ) const
inline

Offset of greatest value.

Returns
Offset of greatest value.

Definition at line 401 of file v-iface.hpp.

401 { return w_max_index(v()); }

◆ min()

template<typename T , size_t N, template< typename, size_t > class S>
T gsl::v_iface< T, N, S >::min ( ) const
inline

Least value of any element.

Returns
Least value of any element.

Definition at line 392 of file v-iface.hpp.

392 { return w_min(v()); }

◆ min_index()

template<typename T , size_t N, template< typename, size_t > class S>
size_t gsl::v_iface< T, N, S >::min_index ( ) const
inline

Offset of least value.

Returns
Offset of least value.

Definition at line 405 of file v-iface.hpp.

405 { return w_min_index(v()); }

◆ minmax()

template<typename T , size_t N, template< typename, size_t > class S>
void gsl::v_iface< T, N, S >::minmax ( T &  min,
T &  max 
) const
inline

Greatest value and least value of any element.

Parameters
minOn return, least value.
maxOn return, greatest value.

Definition at line 397 of file v-iface.hpp.

397 { w_minmax(v(), &min, &max); }

◆ minmax_index()

template<typename T , size_t N, template< typename, size_t > class S>
void gsl::v_iface< T, N, S >::minmax_index ( size_t &  imin,
size_t &  imax 
) const
inline

Offset of least value and offset of greatest value.

Parameters
iminOn return, offset of least value.
imaxOn return, offset of greatest value.

Definition at line 410 of file v-iface.hpp.

410  {
411  w_minmax_index(v(), &imin, &imax);
412  }

◆ mul()

template<typename T , size_t N, template< typename, size_t > class S>
template<size_t ON, template< typename, size_t > class OV>
int gsl::v_iface< T, N, S >::mul ( v_iface< T, ON, OV > const &  b)
inline

Multiply contents of b into this vector in place.

Template Parameters
ONCompile-time number of elements in b.
OVType of interface to storage for b.
Parameters
bVector whose contents should be multiplied into this.
Returns
TBD: GSL's documentation does not specify.

Definition at line 269 of file v-iface.hpp.

269  {
270  static_assert(N == ON || N == 0 || ON == 0);
271  return w_mul(v(), b.v());
272  }

◆ operator*=() [1/2]

template<typename T , size_t N, template< typename, size_t > class S>
v_iface& gsl::v_iface< T, N, S >::operator*= ( T const &  x)
inline

Multiply scalar into this vector in place.

Parameters
xScalar to multiply into this.
Returns
Reference to this vector after modification.

Definition at line 364 of file v-iface.hpp.

364  {
365  scale(x);
366  return *this;
367  }

◆ operator*=() [2/2]

template<typename T , size_t N, template< typename, size_t > class S>
template<size_t ON, template< typename, size_t > class OV>
v_iface& gsl::v_iface< T, N, S >::operator*= ( v_iface< T, ON, OV > const &  b)
inline

Multiply contents of b into this vector in place.

Template Parameters
ONCompile-time number of elements in b.
OVType of interface to storage for b.
Parameters
bVector whose contents should be multiplied into this.
Returns
Reference to this vector after modification.

Definition at line 315 of file v-iface.hpp.

315  {
316  static_assert(N == ON || N == 0 || ON == 0);
317  mul(b);
318  return *this;
319  }

◆ operator+=() [1/2]

template<typename T , size_t N, template< typename, size_t > class S>
v_iface& gsl::v_iface< T, N, S >::operator+= ( T const &  x)
inline

Add constant into each element of this vector in place.

Parameters
xConstant to add into this vector.
Returns
Reference to this vector after modification.

Definition at line 377 of file v-iface.hpp.

377  {
378  add_constant(x);
379  return *this;
380  }

◆ operator+=() [2/2]

template<typename T , size_t N, template< typename, size_t > class S>
template<size_t ON, template< typename, size_t > class OV>
v_iface& gsl::v_iface< T, N, S >::operator+= ( v_iface< T, ON, OV > const &  b)
inline

Add contents of b into this vector in place.

Template Parameters
ONCompile-time number of elements in b.
OVType of interface to storage for b.
Parameters
bVector whose contents should be added into this.
Returns
Reference to this vector after modification.

Definition at line 291 of file v-iface.hpp.

291  {
292  static_assert(N == ON || N == 0 || ON == 0);
293  add(b);
294  return *this;
295  }

◆ operator-=()

template<typename T , size_t N, template< typename, size_t > class S>
template<size_t ON, template< typename, size_t > class OV>
v_iface& gsl::v_iface< T, N, S >::operator-= ( v_iface< T, ON, OV > const &  b)
inline

Subtract contents of b from this vector in place.

Template Parameters
ONCompile-time number of elements in b.
OVType of interface to storage for b.
Parameters
bVector whose contents should be subtracted from this.
Returns
Reference to this vector after modification.

Definition at line 303 of file v-iface.hpp.

303  {
304  static_assert(N == ON || N == 0 || ON == 0);
305  sub(b);
306  return *this;
307  }

◆ operator/=()

template<typename T , size_t N, template< typename, size_t > class S>
template<size_t ON, template< typename, size_t > class OV>
v_iface& gsl::v_iface< T, N, S >::operator/= ( v_iface< T, ON, OV > const &  b)
inline

Divide contents of b into this vector in place.

Template Parameters
ONCompile-time number of elements in b.
OVType of interface to storage for b.
Parameters
bVector whose contents should be divided into this.
Returns
Reference to this vector after modification.

Definition at line 327 of file v-iface.hpp.

327  {
328  static_assert(N == ON || N == 0 || ON == 0);
329  div(b);
330  return *this;
331  }

◆ operator=() [1/2]

template<typename T , size_t N, template< typename, size_t > class S>
v_iface& gsl::v_iface< T, N, S >::operator= ( v_iface< T, N, S > const &  b)
inline

Copy contents of b into this vector.

Parameters
bReference to vector whose data will be copied.
Returns
Reference to this instance after assignment.

Definition at line 348 of file v-iface.hpp.

348  {
349  memcpy(*this, b);
350  return *this;
351  }

◆ operator=() [2/2]

template<typename T , size_t N, template< typename, size_t > class S>
template<size_t ON, template< typename, size_t > class OV>
v_iface& gsl::v_iface< T, N, S >::operator= ( v_iface< T, ON, OV > const &  b)
inline

Copy contents of b into this vector.

Template Parameters
ONCompile-time number of elements in b.
OVType of interface to storage for b.
Parameters
bReference to vector whose data will be copied.
Returns
Reference to this instance after assignment.

Definition at line 339 of file v-iface.hpp.

339  {
340  static_assert(N == ON || N == 0 || ON == 0);
341  memcpy(*this, b);
342  return *this;
343  }

◆ operator[]() [1/2]

template<typename T , size_t N, template< typename, size_t > class S>
T& gsl::v_iface< T, N, S >::operator[] ( size_t  i)
inline

Write element without bounds-checking.

Parameters
iOffset of element.
Returns
Reference to mutable element.

Definition at line 131 of file v-iface.hpp.

131 { return data()[i * v()->stride]; }

◆ operator[]() [2/2]

template<typename T , size_t N, template< typename, size_t > class S>
const T& gsl::v_iface< T, N, S >::operator[] ( size_t  i) const
inline

Read element without bounds-checking.

Parameters
iOffset of element.
Returns
Reference to immutable element.

Definition at line 126 of file v-iface.hpp.

126 { return data()[i * v()->stride]; }

◆ ptr() [1/2]

template<typename T , size_t N, template< typename, size_t > class S>
T* gsl::v_iface< T, N, S >::ptr ( size_t  i)
inline

Retrieve pointer to ith element with bounds-checking.

This could be useful if stride unknown.

Parameters
iOffset of element.
Returns
Pointer to mutable element.

Definition at line 137 of file v-iface.hpp.

137 { return w_ptr(v(), i); }

◆ ptr() [2/2]

template<typename T , size_t N, template< typename, size_t > class S>
const T* gsl::v_iface< T, N, S >::ptr ( size_t  i) const
inline

Retrieve pointer to ith element with bounds-checking.

This could be useful if stride unknown.

Parameters
iOffset of element.
Returns
Pointer to immutable element.

Definition at line 143 of file v-iface.hpp.

143 { return w_ptr(v(), i); }

◆ real() [1/2]

template<typename T , size_t N, template< typename, size_t > class S>
v_iface<element_t<T>, N, v_view> gsl::v_iface< T, N, S >::real ( )
inline

View of real-part of complex vector.

Returns
View of real-part of complex vector.

Definition at line 182 of file v-iface.hpp.

182 { return w_real(v()); }

◆ real() [2/2]

template<typename T , size_t N, template< typename, size_t > class S>
v_iface<element_t<T> const, N, v_view> gsl::v_iface< T, N, S >::real ( ) const
inline

View of real-part of complex vector.

Returns
View of real-part of complex vector.

Definition at line 186 of file v-iface.hpp.

186 { return w_real(v()); }

◆ reverse()

template<typename T , size_t N, template< typename, size_t > class S>
int gsl::v_iface< T, N, S >::reverse ( )
inline

Reverse order of elements.

Returns
TBD: GSL's documentation does not specify.

Definition at line 239 of file v-iface.hpp.

239 { return w_reverse(v()); }

◆ scale()

template<typename T , size_t N, template< typename, size_t > class S>
int gsl::v_iface< T, N, S >::scale ( T const &  x)
inline

Multiply scalar into this vector in place.

Parameters
xScalar to multiply into this.
Returns
TBD: GSL's documentation does not specify.

Definition at line 359 of file v-iface.hpp.

359 { return w_scale(v(), x); }

◆ set()

template<typename T , size_t N, template< typename, size_t > class S>
void gsl::v_iface< T, N, S >::set ( size_t  i,
T const &  x 
)
inline

Write element with bounds-checking.

Parameters
iOffset of element.
xNew value for element.

Definition at line 121 of file v-iface.hpp.

121 { w_set(v(), i, x); }

◆ set_all()

template<typename T , size_t N, template< typename, size_t > class S>
void gsl::v_iface< T, N, S >::set_all ( T const &  x)
inline

Set every element.

Parameters
xValue to which each element should be set.

Definition at line 147 of file v-iface.hpp.

147 { w_set_all(v(), x); }

◆ set_basis()

template<typename T , size_t N, template< typename, size_t > class S>
int gsl::v_iface< T, N, S >::set_basis ( size_t  i)
inline

Set element at offset i to unity and every other element to zero.

Parameters
iOffset of element set to unity.
Returns
TBD: GSL's documentation does not specify.

Definition at line 155 of file v-iface.hpp.

155 { return w_set_basis(v(), i); }

◆ size()

template<typename T , size_t N, template< typename, size_t > class S>
size_t gsl::v_iface< T, N, S >::size ( ) const
inline

Size of vector.

Returns
Size of vector.

Definition at line 99 of file v-iface.hpp.

99 { return v()->size; }

◆ sub()

template<typename T , size_t N, template< typename, size_t > class S>
template<size_t ON, template< typename, size_t > class OV>
int gsl::v_iface< T, N, S >::sub ( v_iface< T, ON, OV > const &  b)
inline

Subtract contents of b from this vector in place.

Template Parameters
ONCompile-time number of elements in b.
OVType of interface to storage for b.
Parameters
bVector whose contents should be subtracted from this.
Returns
TBD: GSL's documentation does not specify.

Definition at line 258 of file v-iface.hpp.

258  {
259  static_assert(N == ON || N == 0 || ON == 0);
260  return w_sub(v(), b.v());
261  }

◆ subvector() [1/2]

template<typename T , size_t N, template< typename, size_t > class S>
v_iface<T, N, v_view> gsl::v_iface< T, N, S >::subvector ( size_t  n,
size_t  i = 0,
size_t  s = 1 
)
inline

View of subvector of vector.

Arguments are reordered from those given to gsl_vector_subvector_with_stride(). Putting initial offset and stride at end allows each to have good default (0 for initial offset and 1 for stride).

Parameters
nNumber of elements in view.
iOffset in vector of first element in view.
sStride of view relative to vector.
Returns
View of subvector.

Definition at line 204 of file v-iface.hpp.

204  {
205  return w_subvector(v(), i, s, n);
206  }

◆ subvector() [2/2]

template<typename T , size_t N, template< typename, size_t > class S>
v_iface<T const, N, v_view> gsl::v_iface< T, N, S >::subvector ( size_t  n,
size_t  i = 0,
size_t  s = 1 
) const
inline

View of subvector of vector.

Arguments are reordered from those given to gsl_vector_subvector_with_stride(). Putting initial offset and stride at end allows each to have good default (0 for initial offset and 1 for stride).

Parameters
nNumber of elements in view.
iOffset in vector of first element in view.
sStride of view relative to vector.
Returns
View of subvector.

Definition at line 217 of file v-iface.hpp.

217  {
218  return w_subvector(v(), i, s, n);
219  }

◆ sum()

template<typename T , size_t N, template< typename, size_t > class S>
T gsl::v_iface< T, N, S >::sum ( ) const
inline

Sum of elements.

Returns
Sum of elements.

Definition at line 384 of file v-iface.hpp.

384 { return w_sum(v()); }

◆ swap_elements()

template<typename T , size_t N, template< typename, size_t > class S>
int gsl::v_iface< T, N, S >::swap_elements ( size_t  i,
size_t  j 
)
inline

Swap elements within this vector.

Parameters
iOffset of one element.
jOffset of other element.
Returns
TBD: GSL's documentation does not specify.

Definition at line 235 of file v-iface.hpp.

235 { return w_swap_elements(v(), i, j); }

◆ view() [1/2]

template<typename T , size_t N, template< typename, size_t > class S>
v_iface<T, N, v_view> gsl::v_iface< T, N, S >::view ( )
inline

View of vector.

Returns
View of vector.

Definition at line 223 of file v-iface.hpp.

223 { return w_subvector(v(), 0, 1, size()); }

◆ view() [2/2]

template<typename T , size_t N, template< typename, size_t > class S>
v_iface<T const, N, v_view> gsl::v_iface< T, N, S >::view ( ) const
inline

View of vector.

Returns
View of vector.

Definition at line 227 of file v-iface.hpp.

227  {
228  return w_subvector(v(), 0, 1, size());
229  }

The documentation for this struct was generated from the following file:
gsl::w_min
auto w_min(w_vector< double const > *v)
Minimum value in vector v.
Definition: min.hpp:15
gsl::w_get
auto w_get(w_vector< double const > *v, size_t i)
Return ith element of vector v with bounds-checking.
Definition: get.hpp:16
gsl::v_iface::add
int add(v_iface< T, ON, OV > const &b)
Add contents of b into this vector in place.
Definition: v-iface.hpp:247
gsl::w_minmax_index
void w_minmax_index(w_vector< double const > *v, size_t *min, size_t *max)
Return indices of minimum and maximum values in vector v.
Definition: minmax-index.hpp:17
gsl::w_minmax
void w_minmax(w_vector< double const > *v, double *min, double *max)
Return minimum and maximum values in vector v.
Definition: minmax.hpp:16
gsl::v_iface::iterator
v_iterator< v_iface > iterator
Type of iterator that points to mutable element.
Definition: v-iface.hpp:76
gsl::w_div
int w_div(w_vector< double > *u, w_vector< double const > *v)
Perform the logical operation u = u/v element by element.
Definition: div.hpp:16
gsl::w_max_index
auto w_max_index(w_vector< double const > *v)
Index of maximum value in vector v.
Definition: max-index.hpp:16
gsl::w_add
int w_add(w_vector< double > *u, w_vector< double const > *v)
Element by element, accumulate v into u.
Definition: add.hpp:17
gsl::v_iface::sub
int sub(v_iface< T, ON, OV > const &b)
Subtract contents of b from this vector in place.
Definition: v-iface.hpp:258
gsl::w_real
auto w_real(w_vector< double > *v)
Real part (identity-view) of real vector.
Definition: real.hpp:14
gsl::w_sub
int w_sub(w_vector< double > *u, w_vector< double const > *v)
For vectors u and v, obtain effect u = u - v.
Definition: sub.hpp:16
gsl::w_set_all
void w_set_all(w_vector< double > *v, double const &x)
Set every element of vector v to same value x.
Definition: set-all.hpp:15
gsl::w_reverse
int w_reverse(w_vector< double > *v)
Reverse order of elements in vector v.
Definition: reverse.hpp:15
gsl::w_min_index
auto w_min_index(w_vector< double const > *v)
Index of minimum value in vector v.
Definition: min-index.hpp:16
gsl::w_fwrite
int w_fwrite(FILE *f, w_vector< double const > *v)
Write elements of vector v to stream f in binary format.
Definition: fwrite.hpp:16
gsl::w_scale
int w_scale(w_vector< double > *u, double const &v)
For vector u and scalar v, produce effect of u = u * v.
Definition: scale.hpp:16
gsl::v_iface::max
T max() const
Greatest value of any element.
Definition: v-iface.hpp:388
gsl::w_max
auto w_max(w_vector< double const > *v)
Maximum value in vector v.
Definition: max.hpp:15
gsl::v_iface::const_iterator
v_iterator< v_iface const > const_iterator
Type of iterator that points to immutable element.
Definition: v-iface.hpp:79
gsl::w_ispos
bool w_ispos(w_vector< double const > *v)
True only if every element in vector v be positive.
Definition: ispos.hpp:15
gsl::v_iface::min
T min() const
Least value of any element.
Definition: v-iface.hpp:392
gsl::v_iface::size
size_t size() const
Size of vector.
Definition: v-iface.hpp:99
gsl::w_subvector
auto w_subvector(w_vector< double > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:18
gsl::v_iface::data
T * data()
Pointer to first element in vector.
Definition: v-iface.hpp:104
gsl::v_iface::div
int div(v_iface< T, ON, OV > const &b)
Divide contents of b into this vector in place.
Definition: v-iface.hpp:280
gsl::w_mul
int w_mul(w_vector< double > *u, w_vector< double const > *v)
For vectors u and v, produce, element by element, u = u * v.
Definition: mul.hpp:16
gsl::v_iface::scale
int scale(T const &x)
Multiply scalar into this vector in place.
Definition: v-iface.hpp:359
gsl::w_add_constant
int w_add_constant(w_vector< double > *u, double const &v)
Add same constant to every element in place.
Definition: add-constant.hpp:17
gsl::w_fprintf
int w_fprintf(FILE *f, w_vector< double const > *v, char const *fmt)
Write elements of v line by line to stream f via specifier fmt.
Definition: fprintf.hpp:17
gsl::w_isneg
bool w_isneg(w_vector< double const > *v)
True only if every element of vector v be negative.
Definition: isneg.hpp:15
gsl::v_iface::SIZE
@ SIZE
Size at compile-time.
Definition: v-iface.hpp:70
gsl::w_set_basis
int w_set_basis(w_vector< double > *v, size_t i)
Make basis-vector by setting every element in v to zero except for ith element, which is set to unity...
Definition: set-basis.hpp:19
gsl::v_iface::add_constant
int add_constant(T const &x)
Add constant into each element of this vector in place.
Definition: v-iface.hpp:372
gsl::w_swap_elements
int w_swap_elements(w_vector< double > *v, size_t i, size_t j)
Exchange ith and jth elements in vector v.
Definition: swap-elements.hpp:17
gsl::w_fread
int w_fread(FILE *f, w_vector< double > *v)
Read into v from stream f in binary format.
Definition: fread.hpp:21
gsl::w_sum
auto w_sum(w_vector< double const > *v)
Sum of elements in vector v.
Definition: sum.hpp:17
gsl::v_iface::mul
int mul(v_iface< T, ON, OV > const &b)
Multiply contents of b into this vector in place.
Definition: v-iface.hpp:269
gsl::w_set
void w_set(w_vector< double > *v, size_t i, double const &x)
Set to x the value of ith element of vector v.
Definition: set.hpp:16
gsl::w_ptr
auto * w_ptr(w_vector< double > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:16
gsl::w_isnonneg
bool w_isnonneg(w_vector< double const > *v)
True only if every element of vector v be non-negative.
Definition: isnonneg.hpp:15
gsl::w_fscanf
int w_fscanf(FILE *f, w_vector< double > *v)
Read formatted data from stream f into vector v.
Definition: fscanf.hpp:21
gsl::w_imag
auto w_imag(w_vector< complex< double >> *u)
Imaginary-part of complex vector.
Definition: imag.hpp:15
gsl::memcpy
int memcpy(v_iface< T1, N1, V1 > &dst, v_iface< T2, N2, V2 > const &src)
Copy data from src, whose length must be same as that of dst.
Definition: v-iface.hpp:576
gsl::w_isnull
bool w_isnull(w_vector< double const > *v)
True only if every element in vector v be zero.
Definition: isnull.hpp:15