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)