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

Annotation of /trunk/gadget/doublevector.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (view) (download)

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

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

Powered By FusionForge