NEURON
matrixmap.h
Go to the documentation of this file.
1 #ifndef matrixmap_h
2 #define matrixmap_h
3 
4 // this defines things needed by ocmatrix
5 #include <OS/list.h>
6 
7 #include "ocmatrix.h"
8 #include "nrnoc2iv.h"
9 
10 class MatrixMap {
11  public:
12  MatrixMap(Matrix*);
13  MatrixMap(Matrix&);
14  ~MatrixMap();
15 
16  void alloc(int, int, Node**, int*);
17  void mmfree();
18  void add(double fac);
19 
20  // passthroughs for accessing m_
21  inline void mulv(Vect& in, Vect& out) {
22  m_.mulv(in, out);
23  };
24  inline void mulv(Vect* in, Vect* out) {
25  m_.mulv(in, out);
26  };
27  inline void mulm(Matrix* in, Matrix* out) {
28  m_.mulm(in, out);
29  };
30  inline void muls(double a, Matrix* out) {
31  m_.muls(a, out);
32  };
33  inline void add(Matrix* a, Matrix* out) {
34  m_.add(a, out);
35  };
36  inline void getrow(int r, Vect* out) {
37  m_.getrow(r, out);
38  };
39  inline void getcol(int c, Vect* out) {
40  m_.getcol(c, out);
41  };
42  inline double& operator()(int i, int j) {
43  return m_(i, j);
44  };
45  inline int nrow() {
46  return m_.nrow();
47  };
48  inline int ncol() {
49  return m_.ncol();
50  };
51  inline double* mep(int i, int j) {
52  return m_.mep(i, j);
53  };
54  inline void getdiag(int d, Vect* out) {
55  m_.getdiag(d, out);
56  }
57  inline void setrow(int r, Vect* in) {
58  m_.setrow(r, in);
59  }
60  inline void setcol(int c, Vect* in) {
61  m_.setcol(c, in);
62  }
63  inline void setdiag(int d, Vect* in) {
64  m_.setdiag(d, in);
65  }
66  inline void setrow(int r, double in) {
67  m_.setrow(r, in);
68  }
69  inline void setcol(int c, double in) {
70  m_.setcol(c, in);
71  }
72  inline void setdiag(int d, double in) {
73  m_.setdiag(d, in);
74  }
75  inline void zero() {
76  m_.zero();
77  }
78  inline void ident() {
79  m_.ident();
80  }
81  inline void exp(Matrix* out) {
82  m_.exp(out);
83  }
84  inline void pow(int p, Matrix* out) {
85  m_.pow(p, out);
86  }
87  inline void inverse(Matrix* out) {
88  m_.inverse(out);
89  }
90  inline void solv(Vect* vin, Vect* vout, bool use_lu) {
91  m_.solv(vin, vout, use_lu);
92  }
93  inline void copy(Matrix* out) {
94  m_.copy(out);
95  }
96  inline void bcopy(Matrix* mout, int i0, int j0, int n0, int m0, int i1, int j1) {
97  m_.bcopy(mout, i0, j0, n0, m0, i1, j1);
98  }
99  inline void transpose(Matrix* out) {
100  m_.transpose(out);
101  }
102  inline void symmeigen(Matrix* mout, Vect* vout) {
103  m_.symmeigen(mout, vout);
104  }
105  inline void svd1(Matrix* u, Matrix* v, Vect* d) {
106  m_.svd1(u, v, d);
107  }
108  inline double det(int* e) {
109  return m_.det(e);
110  }
111  inline int sprowlen(int a) {
112  return m_.sprowlen(a);
113  }
114  inline double spgetrowval(int i, int jindx, int* j) {
115  return m_.spgetrowval(i, jindx, j);
116  }
117 
118 
119  private:
121 
122  // the map
123  int plen_;
124  double** pm_;
125  double** ptree_;
126 };
127 
128 #endif
void add(double fac)
Definition: matrixmap.cpp:33
void svd1(Matrix *u, Matrix *v, Vect *d)
Definition: matrixmap.h:105
void mmfree()
Definition: matrixmap.cpp:25
void ident()
Definition: matrixmap.h:78
void muls(double a, Matrix *out)
Definition: matrixmap.h:30
void getdiag(int d, Vect *out)
Definition: matrixmap.h:54
int plen_
Definition: matrixmap.h:123
void alloc(int, int, Node **, int *)
Definition: matrixmap.cpp:40
void inverse(Matrix *out)
Definition: matrixmap.h:87
double ** ptree_
Definition: matrixmap.h:125
void solv(Vect *vin, Vect *vout, bool use_lu)
Definition: matrixmap.h:90
void bcopy(Matrix *mout, int i0, int j0, int n0, int m0, int i1, int j1)
Definition: matrixmap.h:96
double ** pm_
Definition: matrixmap.h:124
void setrow(int r, double in)
Definition: matrixmap.h:66
int nrow()
Definition: matrixmap.h:45
void setcol(int c, double in)
Definition: matrixmap.h:69
void exp(Matrix *out)
Definition: matrixmap.h:81
void getrow(int r, Vect *out)
Definition: matrixmap.h:36
void copy(Matrix *out)
Definition: matrixmap.h:93
void getcol(int c, Vect *out)
Definition: matrixmap.h:39
void pow(int p, Matrix *out)
Definition: matrixmap.h:84
double * mep(int i, int j)
Definition: matrixmap.h:51
void setdiag(int d, Vect *in)
Definition: matrixmap.h:63
void mulm(Matrix *in, Matrix *out)
Definition: matrixmap.h:27
MatrixMap(Matrix *)
Definition: matrixmap.cpp:15
void mulv(Vect &in, Vect &out)
Definition: matrixmap.h:21
void transpose(Matrix *out)
Definition: matrixmap.h:99
int sprowlen(int a)
Definition: matrixmap.h:111
void setdiag(int d, double in)
Definition: matrixmap.h:72
Matrix & m_
Definition: matrixmap.h:120
double det(int *e)
Definition: matrixmap.h:108
void add(Matrix *a, Matrix *out)
Definition: matrixmap.h:33
void mulv(Vect *in, Vect *out)
Definition: matrixmap.h:24
int ncol()
Definition: matrixmap.h:48
void setrow(int r, Vect *in)
Definition: matrixmap.h:57
void zero()
Definition: matrixmap.h:75
void symmeigen(Matrix *mout, Vect *vout)
Definition: matrixmap.h:102
void setcol(int c, Vect *in)
Definition: matrixmap.h:60
double spgetrowval(int i, int jindx, int *j)
Definition: matrixmap.h:114
double & operator()(int i, int j)
Definition: matrixmap.h:42
#define c
#define Vect
Definition: ivocvect.h:14
#define v
Definition: md1redef.h:4
#define i
Definition: md1redef.h:12
size_t p
size_t j
#define e
Definition: passive0.cpp:22
MatrixPtr Matrix
Definition: sputils.c:601
Definition: section.h:133