Log In | Get Help   
Home My Page Projects Code Snippets Project Openings Mareframe
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files
[mareframe] Annotation of /trunk/gadget/matrix.cc
[mareframe] / trunk / gadget / matrix.cc Repository:
ViewVC logotype

Annotation of /trunk/gadget/matrix.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (view) (download)

1 : ulcessvp 2 #include "matrix.h"
2 :     #include "mathfunc.h"
3 :     #include "gadget.h"
4 :    
5 :     //TODO usar mallock
6 :     Matrix::Matrix(int nr, int nc, double value) {
7 :    
8 :     m = new double[nr * nc];
9 :    
10 :     nrow = nr;
11 :     ncol = nc;
12 :     int i, j;
13 :     for (i = 0; i < nr; i++) {
14 :     for (j = 0; j < nc; j++)
15 :     m[i*ncol+j] = value;
16 :     }
17 :     }
18 :    
19 :     //Matrix::Matrix(const DoubleMatrix& initial) : nrow(initial.nrow) {
20 :     // int i;
21 :     // if (nrow >= 0) {
22 :     //// v = new DoubleVector*[nrow];
23 :     //// for (i = 0; i < nrow; i++)
24 :     //// v[i] = new DoubleVector(initial[i]);
25 :     // v = new double[nrow][initial.Ncol(0)];
26 :     // int i,j;
27 :     //
28 :     // for (i = 0; i < nrow; i++)
29 :     // for (j = 0; j < initial.Ncol(0); j++)
30 :     // v[i][j] = initial[i][j];
31 :     // } else {
32 :     // v = 0;
33 :     // nrow = 0;
34 :     // }
35 :     //}
36 :    
37 :     Matrix::~Matrix() {
38 :     int i;
39 :     if (m != 0) {
40 :     delete[] m;
41 :     m = 0;
42 :     ncol = nrow = 0;
43 :     }
44 :     }
45 :    
46 :     void Matrix::AddRows(int add, int length, double value) {
47 :     if (add <= 0)
48 :     return;
49 :    
50 :     int i, j;
51 :     if (m == 0) {
52 :     nrow = add;
53 :     ncol = length;
54 :     m = new double[nrow*ncol];
55 :     for (i = 0; i < nrow; i++) {
56 :     for (j = 0; j < length; j++)
57 :     m[i*ncol+j] = value;
58 :     }
59 :    
60 :     } else {
61 :     int aux = nrow + add;
62 :     double* vnew = new double[aux*length];
63 :     for (i = 0; i < nrow; i++)
64 :     for (j = 0; j < length; j++)
65 :     vnew[i*ncol+j] = m[i*ncol+j];
66 :    
67 :     for (i = nrow; i < nrow + add; i++) {
68 :     for (j = 0; j < length; j++)
69 :     vnew[i*ncol+j] = value;
70 :     }
71 :     delete[] m;
72 :     m = vnew;
73 :     nrow = aux;
74 :     }
75 :     }
76 :    
77 :     //void Matrix::Delete(int pos) {
78 :     // delete v[pos];
79 :     // int i;
80 :     // if (nrow > 1) {
81 :     // DoubleVector** vnew = new DoubleVector*[nrow - 1];
82 :     // for (i = 0; i < pos; i++)
83 :     // vnew[i] = v[i];
84 :     // for (i = pos; i < nrow - 1; i++)
85 :     // vnew[i] = v[i + 1];
86 :     // delete[] v;
87 :     // v = vnew;
88 :     // nrow--;
89 :     // } else {
90 :     // delete[] v;
91 :     // v = 0;
92 :     // nrow = 0;
93 :     // }
94 :     //}
95 :    
96 :     //Matrix& Matrix::operator = (const Matrix& d) {
97 :     // int i;
98 :     // if (v != 0) {
99 :     // for (i = 0; i < nrow; i++)
100 :     // delete v[i];
101 :     // delete[] v;
102 :     // }
103 :     //
104 :     // nrow = d.nrow;
105 :     // if (nrow > 0) {
106 :     // v = new double*[nrow];
107 :     // for (i = 0; i < nrow; i++)
108 :     // v[i] = new double(*d[i]);
109 :     //
110 :     // } else
111 :     // v = 0;
112 :     //
113 :     // return *this;
114 :     //}
115 :    
116 :     void Matrix::Reset() {
117 :     if (nrow > 0) {
118 :     int i;
119 :     delete[] m;
120 :     m = 0;
121 :     nrow = 0;
122 :     ncol = 0;
123 :     }
124 :     }
125 :    
126 :     void Matrix::Print(ofstream& outfile) const {
127 :     int i, j;
128 :     for (i = 0; i < nrow; i++) {
129 :     outfile << TAB;
130 :     for (j = 0; j < ncol; j++)
131 :     outfile << setw(smallwidth) << setprecision(smallprecision)
132 :     << m[i*ncol+j] << sep;
133 :     outfile << endl;
134 :     }
135 :     }
136 :    
137 :     void Matrix::setToZero() {
138 :     int i, j;
139 :     // **v = {0};
140 :     for (i = 0; i < nrow; i++)
141 :     for (j = 0; j < ncol; j++)
142 :     m[i*ncol+j] = 0;
143 :     // (*v[i]).setToZero();
144 :     }

root@forge.cesga.es
ViewVC Help
Powered by ViewVC 1.0.0  

Powered By FusionForge