APFEL 4.8.0
A PDF evolution library in C++
Loading...
Searching...
No Matches
matrix.h
Go to the documentation of this file.
1//
2// APFEL++ 2017
3//
4// Author: Valerio Bertone: valerio.bertone@cern.ch
5//
6
7#pragma once
8
9#include <vector>
10#include <array>
11#include <stddef.h>
12#include <cstddef>
13
14namespace apfel
15{
21 template<typename T>
22 class matrix
23 {
24 public:
31 matrix(size_t const& row = 0, size_t const& col = 0, std::vector<T> const& d = {});
32
37 matrix(matrix<T> const& m);
38
45 void resize(size_t const& row, size_t const& col, T const& v = 0);
46
52 void set(T const& v);
53
59 size_t const& size(size_t const& dim) const { return _size[dim]; }
60
65 std::array<size_t, 2> const& size() const { return _size; }
66
71 std::vector<T> const& data() const { return _data; }
72
77 T& operator () (size_t const& i, size_t const& j) { return _data[i * _size[1] + j]; }
78 T const& operator () (size_t const& i, size_t const& j) const { return _data[i * _size[1] + j]; }
82 matrix<T>& operator *= (double const& f);
83 matrix<T>& operator /= (double const& f);
86 private:
87 std::array<size_t, 2> _size;
88 std::vector<T> _data;
89 };
90
95 template<class T>
97 template<class T>
99 template<class T>
100 matrix<T> operator * (double const& s, matrix<T> rhs);
101 template<class T>
102 matrix<T> operator * (matrix<T> lhs, double const& s);
103 template<class T>
104 matrix<T> operator / (matrix<T> lhs, double const& s);
105 template<class T>
108}
The matrix class is a simple implementation of 2d arrays based on a continous memory allocation....
Definition matrix.h:23
std::vector< T > const & data() const
Returns the vector of data.
Definition matrix.h:71
matrix< T > & operator=(matrix< T > const &m)
std::array< size_t, 2 > _size
The dimension pair.
Definition matrix.h:87
matrix(size_t const &row=0, size_t const &col=0, std::vector< T > const &d={})
The matrix constructor.
matrix< T > & operator-=(matrix< T > const &m)
matrix< T > & operator+=(matrix< T > const &m)
T & operator()(size_t const &i, size_t const &j)
Definition matrix.h:77
matrix< T > & operator/=(double const &f)
std::array< size_t, 2 > const & size() const
Returns the pair of sizes.
Definition matrix.h:65
void set(T const &v)
Function that sets all entries of the matrix to the input value.
matrix(matrix< T > const &m)
The matrix copy constructor.
void resize(size_t const &row, size_t const &col, T const &v=0)
Function that resizes object and set default value.
size_t const & size(size_t const &dim) const
Returns the (row,col) size pair.
Definition matrix.h:59
std::vector< T > _data
The data array.
Definition matrix.h:88
matrix< T > & operator*=(double const &f)
Namespace for all APFEL++ functions and classes.
Definition alphaqcd.h:14
Distribution operator/(Distribution lhs, double const &s)
Distribution/Scalar.
Distribution operator*(double const &s, Distribution rhs)
Scalar*Distribution.
Distribution operator+(Distribution lhs, Distribution const &rhs)
Distribution+Distribution.
Distribution operator-(Distribution lhs, Distribution const &rhs)
Distribution-Distribution.