21#ifndef CCGSL_EIGEN_GEN_HPP
22#define CCGSL_EIGEN_GEN_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__
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__
484 inline void gen_params(
int const compute_s,
int const compute_t,
int const balance,
486 gsl_eigen_gen_params( compute_s, compute_t, balance, w.
get() ); }
void swap(gen_workspace &v)
Swap two gen_workspace.
size_t size() const
The size of the workspace.
bool operator<=(gen_workspace const &v) const
A container needs to define an ordering for sorting.
gsl_eigen_gen_workspace * ccgsl_pointer
The shared pointer.
gen_workspace(size_t const n)
The default constructor creates a new gen_workspace with n elements.
bool operator==(gen_workspace const &v) const
Two gen_workspace are identically equal if their elements are identical.
bool operator<(gen_workspace const &v) const
A container needs to define an ordering for sorting.
gen_workspace & operator=(gen_workspace &&v)
Move operator.
gsl_eigen_gen_workspace * get() const
Get the gsl_eigen_gen_workspace.
size_t * count
The shared reference count.
gen_workspace(gsl_eigen_gen_workspace *v)
Could construct from a gsl_eigen_gen_workspace.
gen_workspace & operator=(gen_workspace const &v)
The assignment operator.
gen_workspace()
The default constructor is only really useful for assigning to.
size_t use_count() const
Find how many gen_workspace objects share this pointer.
gen_workspace(gen_workspace const &v)
The copy constructor.
~gen_workspace()
The destructor only deletes the pointers if count reaches zero.
bool operator!=(gen_workspace const &v) const
Two gen_workspace are different equal if their elements are not identical.
bool empty() const
Find if the gen_workspace is empty.
bool unique() const
Find if this is the only object sharing the gsl_eigen_gen_workspace.
bool operator>(gen_workspace const &v) const
A container needs to define an ordering for sorting.
gen_workspace(gen_workspace &&v)
Move constructor.
bool operator>=(gen_workspace const &v) const
A container needs to define an ordering for sorting.
Workspace for real genetric matrices (eigenvectors and eigenvalues)
genv_workspace(size_t const n)
The default constructor creates a new genv_workspace with n elements.
bool operator!=(genv_workspace const &v) const
Two genv_workspace are different equal if their elements are not identical.
gsl_eigen_genv_workspace * ccgsl_pointer
The shared pointer.
void swap(genv_workspace &v)
Swap two genv_workspace.
bool empty() const
Find if the genv_workspace is empty.
size_t use_count() const
Find how many genv_workspace objects share this pointer.
genv_workspace(genv_workspace const &v)
The copy constructor.
genv_workspace()
The default constructor is only really useful for assigning to.
genv_workspace & operator=(genv_workspace const &v)
The assignment operator.
bool operator<(genv_workspace const &v) const
A container needs to define an ordering for sorting.
genv_workspace(genv_workspace &&v)
Move constructor.
bool operator>(genv_workspace const &v) const
A container needs to define an ordering for sorting.
bool operator<=(genv_workspace const &v) const
A container needs to define an ordering for sorting.
size_t size() const
The size of the workspace.
~genv_workspace()
The destructor only deletes the pointers if count reaches zero.
genv_workspace(gsl_eigen_genv_workspace *v)
Could construct from a gsl_eigen_genv_workspace.
size_t * count
The shared reference count.
genv_workspace & operator=(genv_workspace &&v)
Move operator.
gsl_eigen_genv_workspace * get() const
Get the gsl_eigen_genv_workspace.
bool operator>=(genv_workspace const &v) const
A container needs to define an ordering for sorting.
bool operator==(genv_workspace const &v) const
Two genv_workspace are identically equal if their elements are identical.
bool unique() const
Find if this is the only object sharing the gsl_eigen_genv_workspace.
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.
gsl_vector_complex * get()
Get the gsl_vector_complex.
This class handles vector objects as shared handles.
int gen_QZ(gsl::matrix &A, gsl::matrix &B, gsl::vector_complex &alpha, gsl::vector &beta, gsl::matrix &Q, gsl::matrix &Z, gen_workspace &w)
C++ version of gsl_eigen_gen_QZ().
int genv_QZ(gsl::matrix &A, gsl::matrix &B, gsl::vector_complex &alpha, gsl::vector &beta, gsl::matrix_complex &evec, gsl::matrix &Q, gsl::matrix &Z, genv_workspace &w)
C++ version of gsl_eigen_genv_QZ().
void gen_params(int const compute_s, int const compute_t, int const balance, gen_workspace &w)
C++ version of gsl_eigen_gen_params().
int genv(gsl::matrix &A, gsl::matrix &B, gsl::vector_complex &alpha, gsl::vector &beta, gsl::matrix_complex &evec, genv_workspace &w)
C++ version of gsl_eigen_genv().
int gen(gsl::matrix &A, gsl::matrix &B, gsl::vector_complex &alpha, gsl::vector &beta, gen_workspace &w)
C++ version of gsl_eigen_gen().
double beta(rng const &r, double const a, double const b)
C++ version of gsl_ran_beta().
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++.