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/doublematrix.cc
[mareframe] / trunk / gadget / doublematrix.cc Repository:
ViewVC logotype

Annotation of /trunk/gadget/doublematrix.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (view) (download)

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

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

Powered By FusionForge