21#ifndef GSLPP_MATRIX_HH
22#define GSLPP_MATRIX_HH
26#include <gsl/gsl_matrix.h>
38 m_current(begin ? m->data : m->data + m->size1 * m->tda),
40 m_row_jump(m->tda - m->size2)
66 if (m_current_column == m_matrix->size2) {
67 m_current += m_row_jump;
87 size_t m_current_column;
100 m_current(begin ? m->data : m->data + m->size1 * m->tda),
102 m_row_jump(m->tda - m->size2)
107 m_matrix(other.m_matrix),
108 m_current(other.m_current),
109 m_current_column(other.m_current_column),
110 m_row_jump(other.m_row_jump)
136 if (m_current_column == m_matrix->size2) {
137 m_current += m_row_jump;
138 m_current_column = 0;
154 const gsl_matrix *m_matrix;
155 const double *m_current;
156 size_t m_current_column;
185 Matrix(
size_t rows,
size_t columns,
bool clean);
193 Matrix(
size_t rows,
size_t columns,
double init);
202 Matrix(
size_t rows,
size_t columns,
const double *init);
252 void reset(
size_t rows,
size_t columns,
bool clean);
260 void reset(
size_t rows,
size_t columns,
double init);
281 void set(
size_t i,
size_t j,
double x);
290 double operator ()(
size_t i,
size_t j)
const;
295 operator gsl_matrix *();
300 operator const gsl_matrix *()
const;
418 gsl_matrix_sub(*
this, rhs);
429 gsl_matrix_add(*
this, rhs);
440 gsl_matrix_scale(*
this, rhs);
449 gsl_matrix *m_matrix;
450 const gsl_matrix *m_const_matrix;
488class iterator_traits<
gsl::const_matrix_iterator >
499class iterator_traits<
gsl::matrix_iterator >
bool operator!=(const C2DImage &a, const C2DImage &b)
EXPORT_2D C2DFVectorfield & operator+=(C2DFVectorfield &a, const C2DFVectorfield &b)
bool operator==(const CAttribute &a, const CAttribute &b)
const_matrix_iterator begin() const
double dot_row(int r, const Vector &v) const
Matrix row_covariance() const
Matrix transposed() const
const_matrix_iterator const_iterator
VectorView get_column(int c)
void set_row(int r, const Vector &row)
void reset(size_t rows, size_t columns, double init)
ConstVectorView get_column(int c) const
VectorView get_row(int r)
Matrix column_covariance() const
Matrix(size_t rows, size_t columns, const double *init)
const_matrix_iterator end() const
void set_column(int c, const Vector &col)
Matrix(const gsl_matrix *m)
void print(std::ostream &os) const
double dot_column(int c, const Vector &col) const
Matrix(const Matrix &other)
ConstVectorView get_row(int r) const
void reset(size_t rows, size_t columns, bool clean)
Matrix(size_t rows, size_t columns, bool clean)
void set(size_t i, size_t j, double x)
Matrix(size_t rows, size_t columns, double init)
const_matrix_iterator(const gsl_matrix *m, bool begin)
const_matrix_iterator(const const_matrix_iterator &other)=default
const_matrix_iterator(const matrix_iterator &other)
matrix_iterator(const matrix_iterator &other)=default
matrix_iterator(gsl_matrix *m, bool begin)
forward_iterator_tag iterator_category
forward_iterator_tag iterator_category
bool EXPORT_GSL operator==(const matrix_iterator &lhs, const matrix_iterator &rhs)
bool EXPORT_GSL operator!=(const matrix_iterator &lhs, const matrix_iterator &rhs)
vector_iterator operator-(const vector_iterator &it, int dist)
vector_iterator operator+(const vector_iterator &it, int dist)
Matrix EXPORT_GSL operator*(const Matrix &lhs, const Matrix &rhs)
std::ostream & operator<<(std::ostream &os, const Matrix &m)
void EXPORT_GSL matrix_inv_sqrt(Matrix &m)
F operator*(const typename TSparseSolver< F >::A_mult_x &A, const F &x)