comparison main/fixed/src/fixedNDArray.cc @ 9481:d84d2fea3c90 octave-forge

Re-enable compilation of fixed package
author jordigh
date Wed, 22 Feb 2012 22:07:33 +0000
parents 0924c374b60d
children
comparison
equal deleted inserted replaced
9480:954f2f00d782 9481:d84d2fea3c90
43 43
44 #include "fixed-inline.cc" 44 #include "fixed-inline.cc"
45 45
46 // Fixed Point NDArray class. 46 // Fixed Point NDArray class.
47 47
48 FixedNDArray::FixedNDArray (const MArrayN<int> &is, const MArrayN<int> &ds) 48 FixedNDArray::FixedNDArray (const MArray<int> &is, const MArray<int> &ds)
49 : MArrayN<FixedPoint> (is.dims()) 49 : MArray<FixedPoint> (is.dims())
50 { 50 {
51 if (dims () != ds.dims ()) { 51 if (dims () != ds.dims ()) {
52 (*current_liboctave_error_handler) ("NDArray size mismatch"); 52 (*current_liboctave_error_handler) ("NDArray size mismatch");
53 return; 53 return;
54 } 54 }
57 elem (i) = FixedPoint((unsigned int)is(i), (unsigned int)ds(i)); 57 elem (i) = FixedPoint((unsigned int)is(i), (unsigned int)ds(i));
58 } 58 }
59 59
60 60
61 FixedNDArray::FixedNDArray (const NDArray &is, const NDArray &ds) 61 FixedNDArray::FixedNDArray (const NDArray &is, const NDArray &ds)
62 : MArrayN<FixedPoint> (is.dims()) 62 : MArray<FixedPoint> (is.dims())
63 { 63 {
64 if (dims () != ds.dims ()) { 64 if (dims () != ds.dims ()) {
65 (*current_liboctave_error_handler) ("NDArray size mismatch"); 65 (*current_liboctave_error_handler) ("NDArray size mismatch");
66 return; 66 return;
67 } 67 }
68 68
69 for (int i = 0; i < nelem (); i++) 69 for (int i = 0; i < nelem (); i++)
70 elem (i) = FixedPoint((unsigned int)is(i), (unsigned int)ds(i)); 70 elem (i) = FixedPoint((unsigned int)is(i), (unsigned int)ds(i));
71 } 71 }
72 72
73 FixedNDArray::FixedNDArray (const MArrayN<int> &is, const MArrayN<int> &ds, 73 FixedNDArray::FixedNDArray (const MArray<int> &is, const MArray<int> &ds,
74 const FixedNDArray& a) 74 const FixedNDArray& a)
75 : MArrayN<FixedPoint> (a.dims()) 75 : MArray<FixedPoint> (a.dims())
76 { 76 {
77 if ((dims () != is.dims ()) || (dims () != ds.dims ())) { 77 if ((dims () != is.dims ()) || (dims () != ds.dims ())) {
78 (*current_liboctave_error_handler) ("NDArray size mismatch"); 78 (*current_liboctave_error_handler) ("NDArray size mismatch");
79 return; 79 return;
80 } 80 }
84 a.elem (i)); 84 a.elem (i));
85 } 85 }
86 86
87 FixedNDArray::FixedNDArray (const NDArray &is, const NDArray &ds, 87 FixedNDArray::FixedNDArray (const NDArray &is, const NDArray &ds,
88 const FixedNDArray& a) 88 const FixedNDArray& a)
89 : MArrayN<FixedPoint> (a.dims()) 89 : MArray<FixedPoint> (a.dims())
90 { 90 {
91 if ((dims () != is.dims ()) || (dims () != ds.dims ())) { 91 if ((dims () != is.dims ()) || (dims () != ds.dims ())) {
92 (*current_liboctave_error_handler) ("NDArray size mismatch"); 92 (*current_liboctave_error_handler) ("NDArray size mismatch");
93 return; 93 return;
94 } 94 }
98 a.elem (i)); 98 a.elem (i));
99 } 99 }
100 100
101 FixedNDArray::FixedNDArray (unsigned int is, unsigned int ds, 101 FixedNDArray::FixedNDArray (unsigned int is, unsigned int ds,
102 const FixedNDArray& a) 102 const FixedNDArray& a)
103 : MArrayN<FixedPoint> (a.dims()) 103 : MArray<FixedPoint> (a.dims())
104 { 104 {
105 for (int i = 0; i < nelem (); i++) 105 for (int i = 0; i < nelem (); i++)
106 elem (i) = FixedPoint(is, ds, a.elem (i)); 106 elem (i) = FixedPoint(is, ds, a.elem (i));
107 } 107 }
108 108
109 FixedNDArray::FixedNDArray (const MArrayN<int> &is, 109 FixedNDArray::FixedNDArray (const MArray<int> &is,
110 const MArrayN<int> &ds, 110 const MArray<int> &ds,
111 const NDArray& a) 111 const NDArray& a)
112 : MArrayN<FixedPoint> (a.dims()) 112 : MArray<FixedPoint> (a.dims())
113 { 113 {
114 if ((dims () != is.dims ()) || (dims () != ds.dims ())) { 114 if ((dims () != is.dims ()) || (dims () != ds.dims ())) {
115 (*current_liboctave_error_handler) ("NDArray size mismatch"); 115 (*current_liboctave_error_handler) ("NDArray size mismatch");
116 return; 116 return;
117 } 117 }
121 a.elem (i)); 121 a.elem (i));
122 } 122 }
123 123
124 FixedNDArray::FixedNDArray (const NDArray &is, const NDArray &ds, 124 FixedNDArray::FixedNDArray (const NDArray &is, const NDArray &ds,
125 const NDArray& a) 125 const NDArray& a)
126 : MArrayN<FixedPoint> (a.dims()) 126 : MArray<FixedPoint> (a.dims())
127 { 127 {
128 if ((dims () != is.dims ()) || (dims () != ds.dims ())) { 128 if ((dims () != is.dims ()) || (dims () != ds.dims ())) {
129 (*current_liboctave_error_handler) ("NDArray size mismatch"); 129 (*current_liboctave_error_handler) ("NDArray size mismatch");
130 return; 130 return;
131 } 131 }
135 a.elem (i)); 135 a.elem (i));
136 } 136 }
137 137
138 FixedNDArray::FixedNDArray (unsigned int is, unsigned int ds, 138 FixedNDArray::FixedNDArray (unsigned int is, unsigned int ds,
139 const NDArray& a) 139 const NDArray& a)
140 : MArrayN<FixedPoint> (a.dims()) 140 : MArray<FixedPoint> (a.dims())
141 { 141 {
142 for (int i = 0; i < nelem (); i++) 142 for (int i = 0; i < nelem (); i++)
143 elem (i) = FixedPoint(is, ds, a.elem (i)); 143 elem (i) = FixedPoint(is, ds, a.elem (i));
144 } 144 }
145 145
146 FixedNDArray::FixedNDArray (unsigned int is, unsigned int ds, 146 FixedNDArray::FixedNDArray (unsigned int is, unsigned int ds,
147 const NDArray& a, const NDArray& b) 147 const NDArray& a, const NDArray& b)
148 : MArrayN<FixedPoint> (a.dims()) 148 : MArray<FixedPoint> (a.dims())
149 { 149 {
150 if (dims() != b.dims()) { 150 if (dims() != b.dims()) {
151 (*current_liboctave_error_handler) ("NDArray size mismatch"); 151 (*current_liboctave_error_handler) ("NDArray size mismatch");
152 return; 152 return;
153 } 153 }
155 for (int i = 0; i < nelem (); i++) 155 for (int i = 0; i < nelem (); i++)
156 elem (i) = FixedPoint(is, ds, (unsigned int)a.elem (i), 156 elem (i) = FixedPoint(is, ds, (unsigned int)a.elem (i),
157 (unsigned int)b.elem (i)); 157 (unsigned int)b.elem (i));
158 } 158 }
159 159
160 FixedNDArray::FixedNDArray (const MArrayN<int> &is, const MArrayN<int> &ds, 160 FixedNDArray::FixedNDArray (const MArray<int> &is, const MArray<int> &ds,
161 const NDArray& a, const NDArray& b) 161 const NDArray& a, const NDArray& b)
162 : MArrayN<FixedPoint> (a.dims()) 162 : MArray<FixedPoint> (a.dims())
163 { 163 {
164 if ((dims() != b.dims()) || (dims() != is.dims()) || 164 if ((dims() != b.dims()) || (dims() != is.dims()) ||
165 (dims() != ds.dims())) { 165 (dims() != ds.dims())) {
166 (*current_liboctave_error_handler) ("NDArray size mismatch"); 166 (*current_liboctave_error_handler) ("NDArray size mismatch");
167 return; 167 return;
173 (unsigned int)b.elem (i)); 173 (unsigned int)b.elem (i));
174 } 174 }
175 175
176 FixedNDArray::FixedNDArray (const NDArray &is, const NDArray &ds, 176 FixedNDArray::FixedNDArray (const NDArray &is, const NDArray &ds,
177 const NDArray& a, const NDArray& b) 177 const NDArray& a, const NDArray& b)
178 : MArrayN<FixedPoint> (a.dims()) 178 : MArray<FixedPoint> (a.dims())
179 { 179 {
180 if ((dims() != b.dims()) || (dims() != is.dims()) || 180 if ((dims() != b.dims()) || (dims() != is.dims()) ||
181 (dims() != ds.dims())) { 181 (dims() != ds.dims())) {
182 (*current_liboctave_error_handler) ("NDArray size mismatch"); 182 (*current_liboctave_error_handler) ("NDArray size mismatch");
183 return; 183 return;
187 elem (i) = FixedPoint((unsigned int)is(i), (unsigned int)ds(i), 187 elem (i) = FixedPoint((unsigned int)is(i), (unsigned int)ds(i),
188 (unsigned int)a.elem (i), 188 (unsigned int)a.elem (i),
189 (unsigned int)b.elem (i)); 189 (unsigned int)b.elem (i));
190 } 190 }
191 191
192 FixedNDArray::FixedNDArray (const MArrayN<int> &a) 192 FixedNDArray::FixedNDArray (const MArray<int> &a)
193 : MArrayN<FixedPoint> (a.dims()) 193 : MArray<FixedPoint> (a.dims())
194 { 194 {
195 for (octave_idx_type i = 0; i < nelem (); i++) 195 for (octave_idx_type i = 0; i < nelem (); i++)
196 elem (i) = FixedPoint(a.elem (i)); 196 elem (i) = FixedPoint(a.elem (i));
197 } 197 }
198 198
199 FixedNDArray::FixedNDArray (const NDArray &a) 199 FixedNDArray::FixedNDArray (const NDArray &a)
200 : MArrayN<FixedPoint> (a.dims()) 200 : MArray<FixedPoint> (a.dims())
201 { 201 {
202 for (octave_idx_type i = 0; i < nelem (); i++) 202 for (octave_idx_type i = 0; i < nelem (); i++)
203 elem (i) = FixedPoint(a.elem (i)); 203 elem (i) = FixedPoint(a.elem (i));
204 } 204 }
205 205
357 // other operations. 357 // other operations.
358 358
359 boolNDArray 359 boolNDArray
360 FixedNDArray::all (octave_idx_type dim) const 360 FixedNDArray::all (octave_idx_type dim) const
361 { 361 {
362 return do_mx_red_op<boolNDArray> (*this, dim, mx_inline_all); 362 return do_mx_red_op<bool, FixedPoint> (*this, dim, mx_inline_all);
363 } 363 }
364 364
365 boolNDArray 365 boolNDArray
366 FixedNDArray::any (octave_idx_type dim) const 366 FixedNDArray::any (octave_idx_type dim) const
367 { 367 {
368 return do_mx_red_op<boolNDArray> (*this, dim, mx_inline_any); 368 return do_mx_red_op<bool, FixedPoint> (*this, dim, mx_inline_any);
369 } 369 }
370 370
371 FixedNDArray 371 FixedNDArray
372 FixedNDArray::cumprod (octave_idx_type dim) const 372 FixedNDArray::cumprod (octave_idx_type dim) const
373 { 373 {
374 return do_mx_cum_op<FixedNDArray> (*this, dim, mx_inline_cumprod); 374 return do_mx_cum_op<FixedPoint, FixedPoint> (*this, dim, mx_inline_cumprod);
375 } 375 }
376 376
377 FixedNDArray 377 FixedNDArray
378 FixedNDArray::cumsum (octave_idx_type dim) const 378 FixedNDArray::cumsum (octave_idx_type dim) const
379 { 379 {
380 return do_mx_cum_op<FixedNDArray> (*this, dim, mx_inline_cumsum); 380 return do_mx_cum_op<FixedPoint, FixedPoint> (*this, dim, mx_inline_cumsum);
381 } 381 }
382 382
383 FixedNDArray 383 FixedNDArray
384 FixedNDArray::prod (octave_idx_type dim) const 384 FixedNDArray::prod (octave_idx_type dim) const
385 { 385 {
386 return do_mx_red_op<FixedNDArray> (*this, dim, mx_inline_prod); 386 return do_mx_red_op<FixedPoint, FixedPoint> (*this, dim, mx_inline_prod);
387 } 387 }
388 388
389 FixedNDArray 389 FixedNDArray
390 FixedNDArray::sum (octave_idx_type dim) const 390 FixedNDArray::sum (octave_idx_type dim) const
391 { 391 {
392 return do_mx_red_op<FixedNDArray> (*this, dim, mx_inline_sum); 392 return do_mx_red_op<FixedPoint, FixedPoint> (*this, dim, mx_inline_sum);
393 } 393 }
394 394
395 FixedNDArray 395 FixedNDArray
396 FixedNDArray::sumsq (octave_idx_type dim) const 396 FixedNDArray::sumsq (octave_idx_type dim) const
397 { 397 {
398 return do_mx_red_op<FixedNDArray> (*this, dim, mx_inline_sumsq); 398 return do_mx_red_op<FixedPoint, FixedPoint> (*this, dim, mx_inline_sumsq);
399 } 399 }
400 400
401 FixedNDArray 401 FixedNDArray
402 FixedNDArray::max (octave_idx_type dim) const 402 FixedNDArray::max (octave_idx_type dim) const
403 { 403 {
404 return do_mx_minmax_op<FixedNDArray> (*this, dim, mx_inline_max); 404 return do_mx_minmax_op<FixedPoint> (*this, dim, mx_inline_max);
405 } 405 }
406 406
407 FixedNDArray 407 FixedNDArray
408 FixedNDArray::max (ArrayN<octave_idx_type>& idx_arg, octave_idx_type dim) const 408 FixedNDArray::max (Array<octave_idx_type>& idx_arg, octave_idx_type dim) const
409 { 409 {
410 return do_mx_minmax_op<FixedNDArray> (*this, idx_arg, dim, mx_inline_max); 410 return do_mx_minmax_op<FixedPoint> (*this, idx_arg, dim, mx_inline_max);
411 } 411 }
412 412
413 FixedNDArray 413 FixedNDArray
414 FixedNDArray::min (octave_idx_type dim) const 414 FixedNDArray::min (octave_idx_type dim) const
415 { 415 {
416 return do_mx_minmax_op<FixedNDArray> (*this, dim, mx_inline_min); 416 return do_mx_minmax_op<FixedPoint> (*this, dim, mx_inline_min);
417 } 417 }
418 418
419 FixedNDArray 419 FixedNDArray
420 FixedNDArray::min (ArrayN<octave_idx_type>& idx_arg, octave_idx_type dim) const 420 FixedNDArray::min (Array<octave_idx_type>& idx_arg, octave_idx_type dim) const
421 { 421 {
422 return do_mx_minmax_op<FixedNDArray> (*this, idx_arg, dim, mx_inline_min); 422 return do_mx_minmax_op<FixedPoint> (*this, idx_arg, dim, mx_inline_min);
423 } 423 }
424 424
425 FixedNDArray 425 FixedNDArray
426 FixedNDArray::abs (void) const 426 FixedNDArray::abs (void) const
427 { 427 {
443 octave_idx_type nd = ndims (); 443 octave_idx_type nd = ndims ();
444 444
445 switch (nd) 445 switch (nd)
446 { 446 {
447 case 1: 447 case 1:
448 retval = FixedMatrix (Array2<FixedPoint> (*this, dimensions(0), 1)); 448 retval = FixedMatrix (Array<FixedPoint> (*this, dim_vector (dimensions(0), 1)));
449 break; 449 break;
450 450
451 case 2: 451 case 2:
452 retval = FixedMatrix (Array2<FixedPoint> (*this, dimensions(0), 452 retval = FixedMatrix (Array<FixedPoint> (*this, dim_vector (dimensions(0),
453 dimensions(1))); 453 dimensions(1))));
454 break; 454 break;
455 455
456 default: 456 default:
457 (*current_liboctave_error_handler) 457 (*current_liboctave_error_handler)
458 ("invalid conversion of FixedNDArray to FixedMatrix"); 458 ("invalid conversion of FixedNDArray to FixedMatrix");
525 return retval; 525 return retval;
526 } 526 }
527 527
528 FixedNDArray elem_pow (const FixedNDArray &a, const FixedPoint &b) 528 FixedNDArray elem_pow (const FixedNDArray &a, const FixedPoint &b)
529 { 529 {
530 return elem_pow (a, FixedNDArray(dim_vector (1), b)); 530 return elem_pow (a, FixedNDArray(dim_vector (1, 1), b));
531 } 531 }
532 532
533 FixedNDArray elem_pow (const FixedPoint &a, const FixedNDArray &b) 533 FixedNDArray elem_pow (const FixedPoint &a, const FixedNDArray &b)
534 { 534 {
535 return elem_pow (FixedNDArray(dim_vector (1), a), b); 535 return elem_pow (FixedNDArray(dim_vector (1, 1), a), b);
536 } 536 }
537 537
538 FixedNDArray atan2 (const FixedNDArray &x, const FixedNDArray &y) 538 FixedNDArray atan2 (const FixedNDArray &x, const FixedNDArray &y)
539 { 539 {
540 FixedNDArray retval; 540 FixedNDArray retval;
756 } 756 }
757 757
758 return result; 758 return result;
759 } 759 }
760 760
761 NDS_CMP_OPS(FixedNDArray, , FixedPoint, ) 761 NDS_CMP_OPS(FixedNDArray, FixedPoint)
762 NDS_BOOL_OPS(FixedNDArray, FixedPoint, FixedPoint()) 762 NDS_BOOL_OPS(FixedNDArray, FixedPoint)
763 763
764 SND_CMP_OPS(FixedPoint, , FixedNDArray, ) 764 SND_CMP_OPS(FixedPoint, FixedNDArray)
765 SND_BOOL_OPS(FixedPoint, FixedNDArray, FixedPoint()) 765 SND_BOOL_OPS(FixedPoint, FixedNDArray)
766 766
767 NDND_CMP_OPS(FixedNDArray, , FixedNDArray, ) 767 NDND_CMP_OPS(FixedNDArray, FixedNDArray)
768 NDND_BOOL_OPS(FixedNDArray, FixedNDArray, FixedPoint()) 768 NDND_BOOL_OPS(FixedNDArray, FixedNDArray)
769 769
770 /* 770 /*
771 ;;; Local Variables: *** 771 ;;; Local Variables: ***
772 ;;; mode: C++ *** 772 ;;; mode: C++ ***
773 ;;; End: *** 773 ;;; End: ***