Mercurial > octave-nkf
comparison liboctave/dNDArray.cc @ 5073:e71be9c548f2
[project @ 2004-11-09 18:31:25 by jwe]
author | jwe |
---|---|
date | Tue, 09 Nov 2004 18:31:26 +0000 |
parents | 954cc2ba6a49 |
children | e35b034d3523 |
comparison
equal
deleted
inserted
replaced
5072:97b62f0c1bee | 5073:e71be9c548f2 |
---|---|
791 | 791 |
792 return result; | 792 return result; |
793 } | 793 } |
794 | 794 |
795 NDArray | 795 NDArray |
796 concat (const NDArray& ra, const NDArray& rb, const Array<int>& ra_idx) | 796 NDArray::concat (const NDArray& rb, const Array<int>& ra_idx) |
797 { | 797 { |
798 NDArray retval (ra); | 798 if (rb.numel () > 0) |
799 insert (rb, ra_idx); | |
800 return *this; | |
801 } | |
802 | |
803 ComplexNDArray | |
804 NDArray::concat (const ComplexNDArray& rb, const Array<int>& ra_idx) | |
805 { | |
806 ComplexNDArray retval (*this); | |
799 if (rb.numel () > 0) | 807 if (rb.numel () > 0) |
800 retval.insert (rb, ra_idx); | 808 retval.insert (rb, ra_idx); |
809 return retval; | |
810 } | |
811 | |
812 charNDArray | |
813 NDArray::concat (const charNDArray& rb, const Array<int>& ra_idx) | |
814 { | |
815 charNDArray retval (dims ()); | |
816 int nel = numel (); | |
817 | |
818 for (int i = 0; i < nel; i++) | |
819 { | |
820 double d = elem (i); | |
821 | |
822 if (xisnan (d)) | |
823 { | |
824 (*current_liboctave_error_handler) | |
825 ("invalid conversion from NaN to character"); | |
826 return retval; | |
827 } | |
828 else | |
829 { | |
830 int ival = NINT (d); | |
831 | |
832 if (ival < 0 || ival > UCHAR_MAX) | |
833 // XXX FIXME XXX -- is there something | |
834 // better we could do? Should we warn the user? | |
835 ival = 0; | |
836 | |
837 retval.elem (i) = static_cast<char>(ival); | |
838 } | |
839 } | |
840 | |
841 if (rb.numel () == 0) | |
842 return retval; | |
843 | |
844 retval.insert (rb, ra_idx); | |
801 return retval; | 845 return retval; |
802 } | 846 } |
803 | 847 |
804 NDArray | 848 NDArray |
805 real (const ComplexNDArray& a) | 849 real (const ComplexNDArray& a) |