Mercurial > octave
comparison src/ov-re-mat.cc @ 11586:12df7854fa7c
strip trailing whitespace from source files
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 20 Jan 2011 17:24:59 -0500 |
parents | fd0a3ac60b0e |
children | ce07cb58ff61 |
comparison
equal
deleted
inserted
replaced
11585:1473d0cf86d2 | 11586:12df7854fa7c |
---|---|
228 else if (warn && matrix.any_element_not_one_or_zero ()) | 228 else if (warn && matrix.any_element_not_one_or_zero ()) |
229 gripe_logical_conversion (); | 229 gripe_logical_conversion (); |
230 | 230 |
231 return boolNDArray (matrix); | 231 return boolNDArray (matrix); |
232 } | 232 } |
233 | 233 |
234 charNDArray | 234 charNDArray |
235 octave_matrix::char_array_value (bool) const | 235 octave_matrix::char_array_value (bool) const |
236 { | 236 { |
237 charNDArray retval (dims ()); | 237 charNDArray retval (dims ()); |
238 | 238 |
239 octave_idx_type nel = numel (); | 239 octave_idx_type nel = numel (); |
240 | 240 |
241 for (octave_idx_type i = 0; i < nel; i++) | 241 for (octave_idx_type i = 0; i < nel; i++) |
242 retval.elem (i) = static_cast<char>(matrix.elem (i)); | 242 retval.elem (i) = static_cast<char>(matrix.elem (i)); |
243 | 243 |
244 return retval; | 244 return retval; |
245 } | 245 } |
246 | 246 |
247 SparseMatrix | 247 SparseMatrix |
248 octave_matrix::sparse_matrix_value (bool) const | 248 octave_matrix::sparse_matrix_value (bool) const |
249 { | 249 { |
250 return SparseMatrix (matrix.matrix_value ()); | 250 return SparseMatrix (matrix.matrix_value ()); |
251 } | 251 } |
252 | 252 |
253 SparseComplexMatrix | 253 SparseComplexMatrix |
254 octave_matrix::sparse_complex_matrix_value (bool) const | 254 octave_matrix::sparse_complex_matrix_value (bool) const |
255 { | 255 { |
256 // FIXME Need a SparseComplexMatrix (Matrix) constructor to make | 256 // FIXME Need a SparseComplexMatrix (Matrix) constructor to make |
257 // this function more efficient. Then this should become | 257 // this function more efficient. Then this should become |
258 // return SparseComplexMatrix (matrix.matrix_value ()); | 258 // return SparseComplexMatrix (matrix.matrix_value ()); |
261 | 261 |
262 octave_value | 262 octave_value |
263 octave_matrix::diag (octave_idx_type k) const | 263 octave_matrix::diag (octave_idx_type k) const |
264 { | 264 { |
265 octave_value retval; | 265 octave_value retval; |
266 if (k == 0 && matrix.ndims () == 2 | 266 if (k == 0 && matrix.ndims () == 2 |
267 && (matrix.rows () == 1 || matrix.columns () == 1)) | 267 && (matrix.rows () == 1 || matrix.columns () == 1)) |
268 retval = DiagMatrix (DiagArray2<double> (matrix)); | 268 retval = DiagMatrix (DiagArray2<double> (matrix)); |
269 else | 269 else |
270 retval = octave_base_matrix<NDArray>::diag (k); | 270 retval = octave_base_matrix<NDArray>::diag (k); |
271 | 271 |
272 return retval; | 272 return retval; |
273 } | 273 } |
274 | 274 |
275 // We override these two functions to allow reshaping both | 275 // We override these two functions to allow reshaping both |
276 // the matrix and the index cache. | 276 // the matrix and the index cache. |
277 octave_value | 277 octave_value |
278 octave_matrix::reshape (const dim_vector& new_dims) const | 278 octave_matrix::reshape (const dim_vector& new_dims) const |
279 { | 279 { |
280 if (idx_cache) | 280 if (idx_cache) |
281 { | 281 { |
282 return new octave_matrix (matrix.reshape (new_dims), | 282 return new octave_matrix (matrix.reshape (new_dims), |
285 } | 285 } |
286 else | 286 else |
287 return octave_base_matrix<NDArray>::reshape (new_dims); | 287 return octave_base_matrix<NDArray>::reshape (new_dims); |
288 } | 288 } |
289 | 289 |
290 octave_value | 290 octave_value |
291 octave_matrix::squeeze (void) const | 291 octave_matrix::squeeze (void) const |
292 { | 292 { |
293 if (idx_cache) | 293 if (idx_cache) |
294 { | 294 { |
295 return new octave_matrix (matrix.squeeze (), | 295 return new octave_matrix (matrix.squeeze (), |
298 } | 298 } |
299 else | 299 else |
300 return octave_base_matrix<NDArray>::squeeze (); | 300 return octave_base_matrix<NDArray>::squeeze (); |
301 } | 301 } |
302 | 302 |
303 octave_value | 303 octave_value |
304 octave_matrix::sort (octave_idx_type dim, sortmode mode) const | 304 octave_matrix::sort (octave_idx_type dim, sortmode mode) const |
305 { | 305 { |
306 if (idx_cache) | 306 if (idx_cache) |
307 { | 307 { |
308 // This is a valid index matrix, so sort via integers because it's | 308 // This is a valid index matrix, so sort via integers because it's |
311 } | 311 } |
312 else | 312 else |
313 return octave_base_matrix<NDArray>::sort (dim, mode); | 313 return octave_base_matrix<NDArray>::sort (dim, mode); |
314 } | 314 } |
315 | 315 |
316 octave_value | 316 octave_value |
317 octave_matrix::sort (Array<octave_idx_type> &sidx, octave_idx_type dim, | 317 octave_matrix::sort (Array<octave_idx_type> &sidx, octave_idx_type dim, |
318 sortmode mode) const | 318 sortmode mode) const |
319 { | 319 { |
320 if (idx_cache) | 320 if (idx_cache) |
321 { | 321 { |
325 } | 325 } |
326 else | 326 else |
327 return octave_base_matrix<NDArray>::sort (sidx, dim, mode); | 327 return octave_base_matrix<NDArray>::sort (sidx, dim, mode); |
328 } | 328 } |
329 | 329 |
330 sortmode | 330 sortmode |
331 octave_matrix::is_sorted (sortmode mode) const | 331 octave_matrix::is_sorted (sortmode mode) const |
332 { | 332 { |
333 if (idx_cache) | 333 if (idx_cache) |
334 { | 334 { |
335 // This is a valid index matrix, so check via integers because it's | 335 // This is a valid index matrix, so check via integers because it's |
337 return idx_cache->as_array ().is_sorted (mode); | 337 return idx_cache->as_array ().is_sorted (mode); |
338 } | 338 } |
339 else | 339 else |
340 return octave_base_matrix<NDArray>::is_sorted (mode); | 340 return octave_base_matrix<NDArray>::is_sorted (mode); |
341 } | 341 } |
342 Array<octave_idx_type> | 342 Array<octave_idx_type> |
343 octave_matrix::sort_rows_idx (sortmode mode) const | 343 octave_matrix::sort_rows_idx (sortmode mode) const |
344 { | 344 { |
345 if (idx_cache) | 345 if (idx_cache) |
346 { | 346 { |
347 // This is a valid index matrix, so sort via integers because it's | 347 // This is a valid index matrix, so sort via integers because it's |
350 } | 350 } |
351 else | 351 else |
352 return octave_base_matrix<NDArray>::sort_rows_idx (mode); | 352 return octave_base_matrix<NDArray>::sort_rows_idx (mode); |
353 } | 353 } |
354 | 354 |
355 sortmode | 355 sortmode |
356 octave_matrix::is_sorted_rows (sortmode mode) const | 356 octave_matrix::is_sorted_rows (sortmode mode) const |
357 { | 357 { |
358 if (idx_cache) | 358 if (idx_cache) |
359 { | 359 { |
360 // This is a valid index matrix, so check via integers because it's | 360 // This is a valid index matrix, so check via integers because it's |
412 retval = octave_value (chm, type); | 412 retval = octave_value (chm, type); |
413 | 413 |
414 return retval; | 414 return retval; |
415 } | 415 } |
416 | 416 |
417 bool | 417 bool |
418 octave_matrix::save_ascii (std::ostream& os) | 418 octave_matrix::save_ascii (std::ostream& os) |
419 { | 419 { |
420 dim_vector d = dims (); | 420 dim_vector d = dims (); |
421 | 421 |
422 if (d.length () > 2) | 422 if (d.length () > 2) |
430 | 430 |
431 os << "\n" << tmp; | 431 os << "\n" << tmp; |
432 } | 432 } |
433 else | 433 else |
434 { | 434 { |
435 // Keep this case, rather than use generic code above for backward | 435 // Keep this case, rather than use generic code above for backward |
436 // compatiability. Makes load_ascii much more complex!! | 436 // compatiability. Makes load_ascii much more complex!! |
437 os << "# rows: " << rows () << "\n" | 437 os << "# rows: " << rows () << "\n" |
438 << "# columns: " << columns () << "\n"; | 438 << "# columns: " << columns () << "\n"; |
439 | 439 |
440 os << matrix_value (); | 440 os << matrix_value (); |
441 } | 441 } |
442 | 442 |
443 return true; | 443 return true; |
444 } | 444 } |
445 | 445 |
446 bool | 446 bool |
447 octave_matrix::load_ascii (std::istream& is) | 447 octave_matrix::load_ascii (std::istream& is) |
448 { | 448 { |
449 bool success = true; | 449 bool success = true; |
450 | 450 |
451 string_vector keywords(2); | 451 string_vector keywords(2); |
518 else if (nr == 0 || nc == 0) | 518 else if (nr == 0 || nc == 0) |
519 matrix = Matrix (nr, nc); | 519 matrix = Matrix (nr, nc); |
520 else | 520 else |
521 panic_impossible (); | 521 panic_impossible (); |
522 } | 522 } |
523 else | 523 else |
524 { | 524 { |
525 error ("load: failed to extract number of rows and columns"); | 525 error ("load: failed to extract number of rows and columns"); |
526 success = false; | 526 success = false; |
527 } | 527 } |
528 } | 528 } |
536 } | 536 } |
537 | 537 |
538 return success; | 538 return success; |
539 } | 539 } |
540 | 540 |
541 bool | 541 bool |
542 octave_matrix::save_binary (std::ostream& os, bool& save_as_floats) | 542 octave_matrix::save_binary (std::ostream& os, bool& save_as_floats) |
543 { | 543 { |
544 | 544 |
545 dim_vector d = dims (); | 545 dim_vector d = dims (); |
546 if (d.length() < 1) | 546 if (d.length() < 1) |
578 write_doubles (os, mtmp, st, d.numel ()); | 578 write_doubles (os, mtmp, st, d.numel ()); |
579 | 579 |
580 return true; | 580 return true; |
581 } | 581 } |
582 | 582 |
583 bool | 583 bool |
584 octave_matrix::load_binary (std::istream& is, bool swap, | 584 octave_matrix::load_binary (std::istream& is, bool swap, |
585 oct_mach_info::float_format fmt) | 585 oct_mach_info::float_format fmt) |
586 { | 586 { |
587 char tmp; | 587 char tmp; |
588 int32_t mdims; | 588 int32_t mdims; |
667 OCTAVE_LOCAL_BUFFER (hsize_t, hdims, rank); | 667 OCTAVE_LOCAL_BUFFER (hsize_t, hdims, rank); |
668 | 668 |
669 // Octave uses column-major, while HDF5 uses row-major ordering | 669 // Octave uses column-major, while HDF5 uses row-major ordering |
670 for (int i = 0; i < rank; i++) | 670 for (int i = 0; i < rank; i++) |
671 hdims[i] = dv (rank-i-1); | 671 hdims[i] = dv (rank-i-1); |
672 | 672 |
673 space_hid = H5Screate_simple (rank, hdims, 0); | 673 space_hid = H5Screate_simple (rank, hdims, 0); |
674 | 674 |
675 if (space_hid < 0) return false; | 675 if (space_hid < 0) return false; |
676 | 676 |
677 hid_t save_type_hid = H5T_NATIVE_DOUBLE; | 677 hid_t save_type_hid = H5T_NATIVE_DOUBLE; |
695 if (m.all_integers (max_val, min_val)) | 695 if (m.all_integers (max_val, min_val)) |
696 save_type_hid | 696 save_type_hid |
697 = save_type_to_hdf5 (get_save_type (max_val, min_val)); | 697 = save_type_to_hdf5 (get_save_type (max_val, min_val)); |
698 } | 698 } |
699 #endif /* HAVE_HDF5_INT2FLOAT_CONVERSIONS */ | 699 #endif /* HAVE_HDF5_INT2FLOAT_CONVERSIONS */ |
700 | 700 |
701 #if HAVE_HDF5_18 | 701 #if HAVE_HDF5_18 |
702 data_hid = H5Dcreate (loc_id, name, save_type_hid, space_hid, | 702 data_hid = H5Dcreate (loc_id, name, save_type_hid, space_hid, |
703 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); | 703 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); |
704 #else | 704 #else |
705 data_hid = H5Dcreate (loc_id, name, save_type_hid, space_hid, | 705 data_hid = H5Dcreate (loc_id, name, save_type_hid, space_hid, |
706 H5P_DEFAULT); | 706 H5P_DEFAULT); |
707 #endif | 707 #endif |
708 if (data_hid < 0) | 708 if (data_hid < 0) |
709 { | 709 { |
710 H5Sclose (space_hid); | 710 H5Sclose (space_hid); |
739 hid_t data_hid = H5Dopen (loc_id, name); | 739 hid_t data_hid = H5Dopen (loc_id, name); |
740 #endif | 740 #endif |
741 hid_t space_id = H5Dget_space (data_hid); | 741 hid_t space_id = H5Dget_space (data_hid); |
742 | 742 |
743 hsize_t rank = H5Sget_simple_extent_ndims (space_id); | 743 hsize_t rank = H5Sget_simple_extent_ndims (space_id); |
744 | 744 |
745 if (rank < 1) | 745 if (rank < 1) |
746 { | 746 { |
747 H5Sclose (space_id); | 747 H5Sclose (space_id); |
748 H5Dclose (data_hid); | 748 H5Dclose (data_hid); |
749 return false; | 749 return false; |
768 dv(j) = hdims[i]; | 768 dv(j) = hdims[i]; |
769 } | 769 } |
770 | 770 |
771 NDArray m (dv); | 771 NDArray m (dv); |
772 double *re = m.fortran_vec (); | 772 double *re = m.fortran_vec (); |
773 if (H5Dread (data_hid, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, | 773 if (H5Dread (data_hid, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, |
774 H5P_DEFAULT, re) >= 0) | 774 H5P_DEFAULT, re) >= 0) |
775 { | 775 { |
776 retval = true; | 776 retval = true; |
777 matrix = m; | 777 matrix = m; |
778 } | 778 } |
779 | 779 |