21#ifndef CCGSL_EIGEN_HERM_HPP
22#define CCGSL_EIGEN_HERM_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_herm( 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__
471 return gsl_eigen_hermv( A.
get(),
eval.get(), evec.
get(), w.
get() ); }
Workspace for Hermitian matrices.
herm_workspace(herm_workspace &&v)
Move constructor.
~herm_workspace()
The destructor only deletes the pointers if count reaches zero.
bool operator<(herm_workspace const &v) const
A container needs to define an ordering for sorting.
herm_workspace(gsl_eigen_herm_workspace *v)
Could construct from a gsl_eigen_herm_workspace.
gsl_eigen_herm_workspace * get() const
Get the gsl_eigen_herm_workspace.
herm_workspace(size_t const n)
The default constructor creates a new herm_workspace with n elements.
bool operator!=(herm_workspace const &v) const
Two herm_workspace are different equal if their elements are not identical.
bool operator>(herm_workspace const &v) const
A container needs to define an ordering for sorting.
herm_workspace()
The default constructor is only really useful for assigning to.
gsl_eigen_herm_workspace * ccgsl_pointer
The shared pointer.
herm_workspace & operator=(herm_workspace &&v)
Move operator.
bool operator>=(herm_workspace const &v) const
A container needs to define an ordering for sorting.
size_t size() const
The size of the workspace.
size_t use_count() const
Find how many herm_workspace objects share this pointer.
herm_workspace(herm_workspace const &v)
The copy constructor.
bool operator==(herm_workspace const &v) const
Two herm_workspace are identically equal if their elements are identical.
size_t * count
The shared reference count.
bool unique() const
Find if this is the only object sharing the gsl_eigen_herm_workspace.
bool operator<=(herm_workspace const &v) const
A container needs to define an ordering for sorting.
bool empty() const
Find if the herm_workspace is empty.
herm_workspace & operator=(herm_workspace const &v)
The assignment operator.
void swap(herm_workspace &v)
Swap two herm_workspace.
Workspace for real hermetric matrices (eigenvectors and eigenvalues)
gsl_eigen_hermv_workspace * ccgsl_pointer
The shared pointer.
void swap(hermv_workspace &v)
Swap two hermv_workspace.
hermv_workspace(hermv_workspace &&v)
Move constructor.
bool operator<(hermv_workspace const &v) const
A container needs to define an ordering for sorting.
hermv_workspace(size_t const n)
The default constructor creates a new hermv_workspace with n elements.
bool operator!=(hermv_workspace const &v) const
Two hermv_workspace are different equal if their elements are not identical.
size_t * count
The shared reference count.
size_t size() const
The size of the workspace.
bool operator>=(hermv_workspace const &v) const
A container needs to define an ordering for sorting.
hermv_workspace(hermv_workspace const &v)
The copy constructor.
bool operator<=(hermv_workspace const &v) const
A container needs to define an ordering for sorting.
hermv_workspace & operator=(hermv_workspace &&v)
Move operator.
bool unique() const
Find if this is the only object sharing the gsl_eigen_hermv_workspace.
gsl_eigen_hermv_workspace * get() const
Get the gsl_eigen_hermv_workspace.
bool operator==(hermv_workspace const &v) const
Two hermv_workspace are identically equal if their elements are identical.
hermv_workspace & operator=(hermv_workspace const &v)
The assignment operator.
hermv_workspace(gsl_eigen_hermv_workspace *v)
Could construct from a gsl_eigen_hermv_workspace.
bool operator>(hermv_workspace const &v) const
A container needs to define an ordering for sorting.
hermv_workspace()
The default constructor is only really useful for assigning to.
size_t use_count() const
Find how many hermv_workspace objects share this pointer.
bool empty() const
Find if the hermv_workspace is empty.
~hermv_workspace()
The destructor only deletes the pointers if count reaches zero.
This class handles matrix_complex objects as shared handles.
gsl_matrix_complex * get()
Get the gsl_matrix_complex.
This class handles vector objects as shared handles.
int eval(double const x, vector &B, workspace &w)
C++ version of gsl_bspline_eval().
int herm(gsl::matrix_complex &A, gsl::vector &eval, herm_workspace &w)
C++ version of gsl_eigen_herm().
int hermv(gsl::matrix_complex &A, gsl::vector &eval, gsl::matrix_complex &evec, hermv_workspace &w)
C++ version of gsl_eigen_hermv().
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++.