21#ifndef CCGSL_EIGEN_GENSYMM_HPP
22#define CCGSL_EIGEN_GENSYMM_HPP
24#include<gsl/gsl_eigen.h>
58 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
107#ifdef __GXX_EXPERIMENTAL_CXX0X__
113 std::swap(
count, v.count );
114 v.ccgsl_pointer =
nullptr;
237#ifdef __GXX_EXPERIMENTAL_CXX0X__
255 return gsl_eigen_gensymm( A.
get(), B.
get(),
eval.get(), w.
get() ); }
277 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
326#ifdef __GXX_EXPERIMENTAL_CXX0X__
332 std::swap(
count, v.count );
333 v.ccgsl_pointer =
nullptr;
456#ifdef __GXX_EXPERIMENTAL_CXX0X__
475 return gsl_eigen_gensymmv( A.
get(), B.
get(),
eval.get(), evec.
get(), w.
get() ); }
Workspace for gensymmetric matrices.
gensymm_workspace(gensymm_workspace &&v)
Move constructor.
gensymm_workspace & operator=(gensymm_workspace &&v)
Move operator.
size_t use_count() const
Find how many gensymm_workspace objects share this pointer.
bool operator!=(gensymm_workspace const &v) const
Two gensymm_workspace are different equal if their elements are not identical.
bool operator<(gensymm_workspace const &v) const
A container needs to define an ordering for sorting.
gensymm_workspace(gsl_eigen_gensymm_workspace *v)
Could construct from a gsl_eigen_gensymm_workspace.
void swap(gensymm_workspace &v)
Swap two gensymm_workspace.
bool empty() const
Find if the gensymm_workspace is empty.
size_t size() const
The size of the workspace.
bool operator>=(gensymm_workspace const &v) const
A container needs to define an ordering for sorting.
gensymm_workspace & operator=(gensymm_workspace const &v)
The assignment operator.
bool unique() const
Find if this is the only object sharing the gsl_eigen_gensymm_workspace.
bool operator>(gensymm_workspace const &v) const
A container needs to define an ordering for sorting.
bool operator==(gensymm_workspace const &v) const
Two gensymm_workspace are identically equal if their elements are identical.
gsl_eigen_gensymm_workspace * get() const
Get the gsl_eigen_gensymm_workspace.
size_t * count
The shared reference count.
bool operator<=(gensymm_workspace const &v) const
A container needs to define an ordering for sorting.
gsl_eigen_gensymm_workspace * ccgsl_pointer
The shared pointer.
gensymm_workspace(size_t const n)
The default constructor creates a new gensymm_workspace with n elements.
gensymm_workspace(gensymm_workspace const &v)
The copy constructor.
gensymm_workspace()
The default constructor is only really useful for assigning to.
~gensymm_workspace()
The destructor only deletes the pointers if count reaches zero.
Workspace for real gensymmetric matrices (eigenvectors and eigenvalues)
gensymmv_workspace & operator=(gensymmv_workspace &&v)
Move operator.
size_t use_count() const
Find how many gensymmv_workspace objects share this pointer.
size_t size() const
The size of the workspace.
bool empty() const
Find if the gensymmv_workspace is empty.
bool unique() const
Find if this is the only object sharing the gsl_eigen_gensymmv_workspace.
bool operator==(gensymmv_workspace const &v) const
Two gensymmv_workspace are identically equal if their elements are identical.
gensymmv_workspace(gensymmv_workspace &&v)
Move constructor.
bool operator<=(gensymmv_workspace const &v) const
A container needs to define an ordering for sorting.
size_t * count
The shared reference count.
gsl_eigen_gensymmv_workspace * get() const
Get the gsl_eigen_gensymmv_workspace.
gensymmv_workspace()
The default constructor is only really useful for assigning to.
bool operator!=(gensymmv_workspace const &v) const
Two gensymmv_workspace are different equal if their elements are not identical.
gensymmv_workspace & operator=(gensymmv_workspace const &v)
The assignment operator.
~gensymmv_workspace()
The destructor only deletes the pointers if count reaches zero.
gensymmv_workspace(gsl_eigen_gensymmv_workspace *v)
Could construct from a gsl_eigen_gensymmv_workspace.
gensymmv_workspace(size_t const n)
The default constructor creates a new gensymmv_workspace with n elements.
void swap(gensymmv_workspace &v)
Swap two gensymmv_workspace.
bool operator>=(gensymmv_workspace const &v) const
A container needs to define an ordering for sorting.
bool operator>(gensymmv_workspace const &v) const
A container needs to define an ordering for sorting.
gsl_eigen_gensymmv_workspace * ccgsl_pointer
The shared pointer.
gensymmv_workspace(gensymmv_workspace const &v)
The copy constructor.
bool operator<(gensymmv_workspace const &v) const
A container needs to define an ordering for sorting.
This class handles matrix objects as shared handles.
gsl_matrix * get()
Get the gsl_matrix.
This class handles vector objects as shared handles.
int eval(double const x, vector &B, workspace &w)
C++ version of gsl_bspline_eval().
int gensymm(gsl::matrix &A, gsl::matrix &B, gsl::vector &eval, gensymm_workspace &w)
C++ version of gsl_eigen_gensymm().
int gensymmv(gsl::matrix &A, gsl::matrix &B, gsl::vector &eval, gsl::matrix &evec, gensymmv_workspace &w)
C++ version of gsl_eigen_gensymmv().
size_t n(workspace const &w)
C++ version of gsl_rstat_n().
The gsl package creates an interface to the GNU Scientific Library for C++.