21#ifndef CCGSL_EIGEN_NONSYMM_HPP
22#define CCGSL_EIGEN_NONSYMM_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__
253 return gsl_eigen_nonsymm( A.
get(),
eval.get(), w.
get() ); }
275 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
324#ifdef __GXX_EXPERIMENTAL_CXX0X__
330 std::swap(
count, v.count );
331 v.ccgsl_pointer =
nullptr;
454#ifdef __GXX_EXPERIMENTAL_CXX0X__
472 return gsl_eigen_nonsymmv( A.
get(),
eval.get(), evec.
get(), w.
get() ); }
480 gsl_eigen_nonsymm_params( compute_t, balance, w.
get() ); }
494 return gsl_eigen_nonsymm_Z( A.
get(),
eval.get(), Z.
get(), w.
get() ); }
509 return gsl_eigen_nonsymmv_Z( A.
get(),
eval.get(), evec.
get(), Z.
get(), w.
get() ); }
Workspace for nonsymmetric matrices.
nonsymm_workspace(gsl_eigen_nonsymm_workspace *v)
Could construct from a gsl_eigen_nonsymm_workspace.
nonsymm_workspace(nonsymm_workspace const &v)
The copy constructor.
size_t size() const
The size of the workspace.
nonsymm_workspace & operator=(nonsymm_workspace const &v)
The assignment operator.
bool operator<=(nonsymm_workspace const &v) const
A container needs to define an ordering for sorting.
gsl_eigen_nonsymm_workspace * get() const
Get the gsl_eigen_nonsymm_workspace.
bool operator<(nonsymm_workspace const &v) const
A container needs to define an ordering for sorting.
nonsymm_workspace()
The default constructor is only really useful for assigning to.
bool operator==(nonsymm_workspace const &v) const
Two nonsymm_workspace are identically equal if their elements are identical.
bool operator>=(nonsymm_workspace const &v) const
A container needs to define an ordering for sorting.
bool empty() const
Find if the nonsymm_workspace is empty.
nonsymm_workspace & operator=(nonsymm_workspace &&v)
Move operator.
nonsymm_workspace(nonsymm_workspace &&v)
Move constructor.
size_t * count
The shared reference count.
~nonsymm_workspace()
The destructor only deletes the pointers if count reaches zero.
nonsymm_workspace(size_t const n)
The default constructor creates a new nonsymm_workspace with n elements.
bool operator>(nonsymm_workspace const &v) const
A container needs to define an ordering for sorting.
gsl_eigen_nonsymm_workspace * ccgsl_pointer
The shared pointer.
bool operator!=(nonsymm_workspace const &v) const
Two nonsymm_workspace are different equal if their elements are not identical.
size_t use_count() const
Find how many nonsymm_workspace objects share this pointer.
void swap(nonsymm_workspace &v)
Swap two nonsymm_workspace.
bool unique() const
Find if this is the only object sharing the gsl_eigen_nonsymm_workspace.
Workspace for real nonsymmetric matrices (eigenvectors and eigenvalues)
bool operator<(nonsymmv_workspace const &v) const
A container needs to define an ordering for sorting.
gsl_eigen_nonsymmv_workspace * ccgsl_pointer
The shared pointer.
bool operator>(nonsymmv_workspace const &v) const
A container needs to define an ordering for sorting.
nonsymmv_workspace(nonsymmv_workspace &&v)
Move constructor.
gsl_eigen_nonsymmv_workspace * get() const
Get the gsl_eigen_nonsymmv_workspace.
size_t use_count() const
Find how many nonsymmv_workspace objects share this pointer.
nonsymmv_workspace(gsl_eigen_nonsymmv_workspace *v)
Could construct from a gsl_eigen_nonsymmv_workspace.
bool operator==(nonsymmv_workspace const &v) const
Two nonsymmv_workspace are identically equal if their elements are identical.
size_t * count
The shared reference count.
bool operator>=(nonsymmv_workspace const &v) const
A container needs to define an ordering for sorting.
bool unique() const
Find if this is the only object sharing the gsl_eigen_nonsymmv_workspace.
nonsymmv_workspace & operator=(nonsymmv_workspace &&v)
Move operator.
~nonsymmv_workspace()
The destructor only deletes the pointers if count reaches zero.
size_t size() const
The size of the workspace.
nonsymmv_workspace(nonsymmv_workspace const &v)
The copy constructor.
bool operator!=(nonsymmv_workspace const &v) const
Two nonsymmv_workspace are different equal if their elements are not identical.
void swap(nonsymmv_workspace &v)
Swap two nonsymmv_workspace.
nonsymmv_workspace(size_t const n)
The default constructor creates a new nonsymmv_workspace with n elements.
nonsymmv_workspace & operator=(nonsymmv_workspace const &v)
The assignment operator.
bool empty() const
Find if the nonsymmv_workspace is empty.
bool operator<=(nonsymmv_workspace const &v) const
A container needs to define an ordering for sorting.
nonsymmv_workspace()
The default constructor is only really useful for assigning to.
This class handles matrix_complex objects as shared handles.
gsl_matrix_complex * get()
Get the gsl_matrix_complex.
This class handles matrix objects as shared handles.
gsl_matrix * get()
Get the gsl_matrix.
This class handles vector_complex objects as shared handles.
int eval(double const x, vector &B, workspace &w)
C++ version of gsl_bspline_eval().
int nonsymm_Z(gsl::matrix &A, gsl::vector_complex &eval, gsl::matrix &Z, nonsymm_workspace &w)
C++ version of gsl_eigen_nonsymm_Z().
int nonsymmv(gsl::matrix &A, gsl::vector_complex &eval, gsl::matrix_complex &evec, nonsymmv_workspace &w)
C++ version of gsl_eigen_nonsymmv().
void nonsymm_params(int const compute_t, int const balance, nonsymm_workspace &w)
C++ version of gsl_eigen_nonsymm_params().
int nonsymmv_Z(gsl::matrix &A, gsl::vector_complex &eval, gsl::matrix_complex &evec, gsl::matrix &Z, nonsymmv_workspace &w)
C++ version of gsl_eigen_nonsymmv_Z().
int nonsymm(gsl::matrix &A, gsl::vector_complex &eval, nonsymm_workspace &w)
C++ version of gsl_eigen_nonsymm().
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++.