20#ifndef CCGSL_SPLINALG_HPP
21#define CCGSL_SPLINALG_HPP
24#include<gsl/gsl_splinalg.h>
41 gsl_splinalg_itersolve_type
const*&
gmres = gsl_splinalg_itersolve_gmres;
57 explicit itersolve( gsl_splinalg_itersolve_type
const* T,
size_t const n,
61 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
112#ifdef __GXX_EXPERIMENTAL_CXX0X__
118 std::swap(
count, v.count );
119 v.ccgsl_pointer =
nullptr;
127 itersolve( std::move( v ) ).swap( *
this );
237#ifdef __GXX_EXPERIMENTAL_CXX0X__
257 return gsl_splinalg_itersolve_iterate( A.
get(),
b.get(), tol, x.
get(),
get() ); }
Workspace for sparse iterative solvers.
itersolve(gsl_splinalg_itersolve_type const *T, size_t const n, size_t const m=0)
The default constructor creates a new itersolve with n elements.
bool operator>=(itersolve const &v) const
A container needs to define an ordering for sorting.
char const * itersolve_name() const
C++ version of gsl_splinalg_itersolve_name().
itersolve(itersolve const &v)
The copy constructor.
itersolve & operator=(itersolve const &v)
The assignment operator.
int itersolve_iterate(spmatrix const &A, vector const &b, double const tol, vector &x)
C++ version of gsl_splinalg_itersolve_iterate().
~itersolve()
The destructor only deletes the pointers if count reaches zero.
gsl_splinalg_itersolve * get() const
Get the gsl_splinalg_itersolve_itersolve.
bool unique() const
Find if this is the only object sharing the gsl_splinalg_itersolve_itersolve.
bool empty() const
Find if the itersolve is empty.
size_t use_count() const
Find how many itersolve objects share this pointer.
gsl_splinalg_itersolve * ccgsl_pointer
The shared pointer.
itersolve(gsl_splinalg_itersolve *v)
Could construct from a gsl_splinalg_itersolve_itersolve.
bool operator<(itersolve const &v) const
A container needs to define an ordering for sorting.
size_t * count
The shared reference count.
bool operator==(itersolve const &v) const
Two itersolve are identically equal if their elements are identical.
gsl_splinalg_itersolve_type const *& gmres
This is a type that can be passed to itersolve()
itersolve & operator=(itersolve &&v)
Move operator.
itersolve()
The default constructor is only really useful for assigning to.
itersolve(itersolve &&v)
Move constructor.
bool operator<=(itersolve const &v) const
A container needs to define an ordering for sorting.
bool operator>(itersolve const &v) const
A container needs to define an ordering for sorting.
bool operator!=(itersolve const &v) const
Two itersolve are different if their elements are not identical.
void swap(itersolve &v)
Swap two itersolve objects.
double itersolve_normr() const
C++ version of gsl_splinalg_itersolve_normr().
This class handles sparse matrix objects as shared handles.
double get(size_t const i, size_t const j) const
C++ version of gsl_spmatrix_get().
This class handles vector objects as shared handles.
gsl_vector * get()
Get the gsl_vector.
size_t n(workspace const &w)
C++ version of gsl_rstat_n().
double b(int order, double qq)
C++ version of gsl_sf_mathieu_b().
The gsl package creates an interface to the GNU Scientific Library for C++.