21#ifndef CCGSL_EIGEN_SYMM_HPP
22#define CCGSL_EIGEN_SYMM_HPP
24#include<gsl/gsl_eigen.h>
57 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
106#ifdef __GXX_EXPERIMENTAL_CXX0X__
112 std::swap(
count, v.count );
113 v.ccgsl_pointer =
nullptr;
236#ifdef __GXX_EXPERIMENTAL_CXX0X__
252 return gsl_eigen_symm( A.
get(),
eval.get(), w.
get() ); }
274 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
323#ifdef __GXX_EXPERIMENTAL_CXX0X__
329 std::swap(
count, v.count );
330 v.ccgsl_pointer =
nullptr;
453#ifdef __GXX_EXPERIMENTAL_CXX0X__
470 return gsl_eigen_symmv( A.
get(),
eval.get(), evec.
get(), w.
get() ); }
Workspace for real symmetric matrices.
bool operator!=(symm_workspace const &v) const
Two symm_workspace are different equal if their elements are not identical.
bool empty() const
Find if the symm_workspace is empty.
symm_workspace(symm_workspace const &v)
The copy constructor.
bool operator==(symm_workspace const &v) const
Two symm_workspace are identically equal if their elements are identical.
symm_workspace & operator=(symm_workspace &&v)
Move operator.
gsl_eigen_symm_workspace * get() const
Get the gsl_eigen_symm_workspace.
bool operator<(symm_workspace const &v) const
A container needs to define an ordering for sorting.
void swap(symm_workspace &v)
Swap two symm_workspace.
size_t * count
The shared reference count.
gsl_eigen_symm_workspace * ccgsl_pointer
The shared pointer.
symm_workspace(gsl_eigen_symm_workspace *v)
Could construct from a gsl_eigen_symm_workspace.
size_t size() const
The size of the workspace.
symm_workspace & operator=(symm_workspace const &v)
The assignment operator.
symm_workspace()
The default constructor is only really useful for assigning to.
symm_workspace(symm_workspace &&v)
Move constructor.
size_t use_count() const
Find how many symm_workspace objects share this pointer.
bool operator>(symm_workspace const &v) const
A container needs to define an ordering for sorting.
bool operator<=(symm_workspace const &v) const
A container needs to define an ordering for sorting.
bool operator>=(symm_workspace const &v) const
A container needs to define an ordering for sorting.
~symm_workspace()
The destructor only deletes the pointers if count reaches zero.
symm_workspace(size_t const n)
The default constructor creates a new symm_workspace with n elements.
bool unique() const
Find if this is the only object sharing the gsl_eigen_symm_workspace.
Workspace for real symmetric matrices (eigenvectors and eigenvalues)
size_t use_count() const
Find how many symmv_workspace objects share this pointer.
bool operator!=(symmv_workspace const &v) const
Two symmv_workspace are different equal if their elements are not identical.
gsl_eigen_symmv_workspace * ccgsl_pointer
The shared pointer.
symmv_workspace(gsl_eigen_symmv_workspace *v)
Could construct from a gsl_eigen_symmv_workspace.
bool operator<=(symmv_workspace const &v) const
A container needs to define an ordering for sorting.
symmv_workspace(symmv_workspace const &v)
The copy constructor.
bool operator==(symmv_workspace const &v) const
Two symmv_workspace are identically equal if their elements are identical.
symmv_workspace(symmv_workspace &&v)
Move constructor.
size_t * count
The shared reference count.
size_t size() const
The size of the workspace.
gsl_eigen_symmv_workspace * get() const
Get the gsl_eigen_symmv_workspace.
~symmv_workspace()
The destructor only deletes the pointers if count reaches zero.
symmv_workspace()
The default constructor is only really useful for assigning to.
bool empty() const
Find if the symmv_workspace is empty.
bool unique() const
Find if this is the only object sharing the gsl_eigen_symmv_workspace.
symmv_workspace(size_t const n)
The default constructor creates a new symmv_workspace with n elements.
bool operator>=(symmv_workspace const &v) const
A container needs to define an ordering for sorting.
symmv_workspace & operator=(symmv_workspace &&v)
Move operator.
symmv_workspace & operator=(symmv_workspace const &v)
The assignment operator.
void swap(symmv_workspace &v)
Swap two symmv_workspace.
bool operator<(symmv_workspace const &v) const
A container needs to define an ordering for sorting.
bool operator>(symmv_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 symm(gsl::matrix &A, gsl::vector &eval, symm_workspace &w)
C++ version of gsl_eigen_symm().
int symmv(gsl::matrix &A, gsl::vector &eval, gsl::matrix &evec, symmv_workspace &w)
C++ version of gsl_eigen_symmv().
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++.