Mercurial > hg > octave-nkf
comparison liboctave/CColVector.cc @ 4316:236c10efcde2
[project @ 2003-02-10 21:57:15 by jwe]
author | jwe |
---|---|
date | Mon, 10 Feb 2003 21:57:15 +0000 |
parents | 5719210fff4c |
children | 6f3382e08a52 |
comparison
equal
deleted
inserted
replaced
4315:0a056052bc90 | 4316:236c10efcde2 |
---|---|
76 | 76 |
77 ComplexColumnVector& | 77 ComplexColumnVector& |
78 ComplexColumnVector::insert (const ColumnVector& a, int r) | 78 ComplexColumnVector::insert (const ColumnVector& a, int r) |
79 { | 79 { |
80 int a_len = a.length (); | 80 int a_len = a.length (); |
81 | |
81 if (r < 0 || r + a_len > length ()) | 82 if (r < 0 || r + a_len > length ()) |
82 { | 83 { |
83 (*current_liboctave_error_handler) ("range error for insert"); | 84 (*current_liboctave_error_handler) ("range error for insert"); |
84 return *this; | 85 return *this; |
85 } | 86 } |
86 | 87 |
87 for (int i = 0; i < a_len; i++) | 88 if (a_len > 0) |
88 elem (r+i) = a.elem (i); | 89 { |
90 make_unique (); | |
91 | |
92 for (int i = 0; i < a_len; i++) | |
93 xelem (r+i) = a.elem (i); | |
94 } | |
89 | 95 |
90 return *this; | 96 return *this; |
91 } | 97 } |
92 | 98 |
93 ComplexColumnVector& | 99 ComplexColumnVector& |
94 ComplexColumnVector::insert (const ComplexColumnVector& a, int r) | 100 ComplexColumnVector::insert (const ComplexColumnVector& a, int r) |
95 { | 101 { |
96 int a_len = a.length (); | 102 int a_len = a.length (); |
103 | |
97 if (r < 0 || r + a_len > length ()) | 104 if (r < 0 || r + a_len > length ()) |
98 { | 105 { |
99 (*current_liboctave_error_handler) ("range error for insert"); | 106 (*current_liboctave_error_handler) ("range error for insert"); |
100 return *this; | 107 return *this; |
101 } | 108 } |
102 | 109 |
103 for (int i = 0; i < a_len; i++) | 110 if (a_len > 0) |
104 elem (r+i) = a.elem (i); | 111 { |
112 make_unique (); | |
113 | |
114 for (int i = 0; i < a_len; i++) | |
115 xelem (r+i) = a.elem (i); | |
116 } | |
105 | 117 |
106 return *this; | 118 return *this; |
107 } | 119 } |
108 | 120 |
109 ComplexColumnVector& | 121 ComplexColumnVector& |
110 ComplexColumnVector::fill (double val) | 122 ComplexColumnVector::fill (double val) |
111 { | 123 { |
112 int len = length (); | 124 int len = length (); |
125 | |
113 if (len > 0) | 126 if (len > 0) |
114 for (int i = 0; i < len; i++) | 127 { |
115 elem (i) = val; | 128 make_unique (); |
129 | |
130 for (int i = 0; i < len; i++) | |
131 xelem (i) = val; | |
132 } | |
133 | |
116 return *this; | 134 return *this; |
117 } | 135 } |
118 | 136 |
119 ComplexColumnVector& | 137 ComplexColumnVector& |
120 ComplexColumnVector::fill (const Complex& val) | 138 ComplexColumnVector::fill (const Complex& val) |
121 { | 139 { |
122 int len = length (); | 140 int len = length (); |
141 | |
123 if (len > 0) | 142 if (len > 0) |
124 for (int i = 0; i < len; i++) | 143 { |
125 elem (i) = val; | 144 make_unique (); |
145 | |
146 for (int i = 0; i < len; i++) | |
147 xelem (i) = val; | |
148 } | |
149 | |
150 | |
126 return *this; | 151 return *this; |
127 } | 152 } |
128 | 153 |
129 ComplexColumnVector& | 154 ComplexColumnVector& |
130 ComplexColumnVector::fill (double val, int r1, int r2) | 155 ComplexColumnVector::fill (double val, int r1, int r2) |
131 { | 156 { |
132 int len = length (); | 157 int len = length (); |
158 | |
133 if (r1 < 0 || r2 < 0 || r1 >= len || r2 >= len) | 159 if (r1 < 0 || r2 < 0 || r1 >= len || r2 >= len) |
134 { | 160 { |
135 (*current_liboctave_error_handler) ("range error for fill"); | 161 (*current_liboctave_error_handler) ("range error for fill"); |
136 return *this; | 162 return *this; |
137 } | 163 } |
138 | 164 |
139 if (r1 > r2) { int tmp = r1; r1 = r2; r2 = tmp; } | 165 if (r1 > r2) { int tmp = r1; r1 = r2; r2 = tmp; } |
140 | 166 |
141 for (int i = r1; i <= r2; i++) | 167 if (r2 >= r1) |
142 elem (i) = val; | 168 { |
169 make_unique (); | |
170 | |
171 for (int i = r1; i <= r2; i++) | |
172 xelem (i) = val; | |
173 } | |
143 | 174 |
144 return *this; | 175 return *this; |
145 } | 176 } |
146 | 177 |
147 ComplexColumnVector& | 178 ComplexColumnVector& |
148 ComplexColumnVector::fill (const Complex& val, int r1, int r2) | 179 ComplexColumnVector::fill (const Complex& val, int r1, int r2) |
149 { | 180 { |
150 int len = length (); | 181 int len = length (); |
182 | |
151 if (r1 < 0 || r2 < 0 || r1 >= len || r2 >= len) | 183 if (r1 < 0 || r2 < 0 || r1 >= len || r2 >= len) |
152 { | 184 { |
153 (*current_liboctave_error_handler) ("range error for fill"); | 185 (*current_liboctave_error_handler) ("range error for fill"); |
154 return *this; | 186 return *this; |
155 } | 187 } |
156 | 188 |
157 if (r1 > r2) { int tmp = r1; r1 = r2; r2 = tmp; } | 189 if (r1 > r2) { int tmp = r1; r1 = r2; r2 = tmp; } |
158 | 190 |
159 for (int i = r1; i <= r2; i++) | 191 if (r2 >= r1) |
160 elem (i) = val; | 192 { |
193 make_unique (); | |
194 | |
195 for (int i = r1; i <= r2; i++) | |
196 xelem (i) = val; | |
197 } | |
161 | 198 |
162 return *this; | 199 return *this; |
163 } | 200 } |
164 | 201 |
165 ComplexColumnVector | 202 ComplexColumnVector |
217 int new_r = r2 - r1 + 1; | 254 int new_r = r2 - r1 + 1; |
218 | 255 |
219 ComplexColumnVector result (new_r); | 256 ComplexColumnVector result (new_r); |
220 | 257 |
221 for (int i = 0; i < new_r; i++) | 258 for (int i = 0; i < new_r; i++) |
259 result.elem (i) = elem (r1+i); | |
260 | |
261 return result; | |
262 } | |
263 | |
264 ComplexColumnVector | |
265 ComplexColumnVector::extract_n (int r1, int n) const | |
266 { | |
267 ComplexColumnVector result (n); | |
268 | |
269 for (int i = 0; i < n; i++) | |
222 result.elem (i) = elem (r1+i); | 270 result.elem (i) = elem (r1+i); |
223 | 271 |
224 return result; | 272 return result; |
225 } | 273 } |
226 | 274 |