Mercurial > octave
diff src/ov-intx.h @ 6214:4685a6a76229
[project @ 2006-12-08 22:15:03 by jwe]
author | jwe |
---|---|
date | Fri, 08 Dec 2006 22:15:04 +0000 |
parents | 67b1a61a85ce |
children | a6cc01dd09f9 |
line wrap: on
line diff
--- a/src/ov-intx.h Fri Dec 08 22:05:59 2006 +0000 +++ b/src/ov-intx.h Fri Dec 08 22:15:04 2006 +0000 @@ -105,13 +105,50 @@ double scalar_value (bool = false) const { return double_value (); } + Matrix + matrix_value (bool = false) const + { + Matrix retval; + dim_vector dv = dims (); + if (dv.length () > 2) + error ("invalid conversion of %s to Matrix", type_name().c_str ()); + else + { + retval = Matrix (dv(0), dv(1)); + double *vec = retval.fortran_vec (); + octave_idx_type nel = matrix.numel (); + for (octave_idx_type i = 0; i < nel; i++) + vec[i] = double (matrix(i)); + } + return retval; + } + + ComplexMatrix + complex_matrix_value (bool = false) const + { + ComplexMatrix retval; + dim_vector dv = dims(); + if (dv.length () > 2) + error ("invalid conversion of %s to Matrix", type_name().c_str ()); + else + { + retval = ComplexMatrix (dv(0), dv(1)); + Complex *vec = retval.fortran_vec (); + octave_idx_type nel = matrix.numel (); + for (octave_idx_type i = 0; i < nel; i++) + vec[i] = Complex (double (matrix(i))); + } + return retval; + } + NDArray array_value (bool = false) const { NDArray retval (matrix.dims ()); - int nel = matrix.numel (); - for (int i = 0; i < nel; i++) - retval(i) = double (matrix(i)); + double *vec = retval.fortran_vec (); + octave_idx_type nel = matrix.numel (); + for (octave_idx_type i = 0; i < nel; i++) + vec[i] = double (matrix(i)); return retval; } @@ -119,9 +156,10 @@ complex_array_value (bool = false) const { ComplexNDArray retval (matrix.dims ()); - int nel = matrix.numel (); - for (int i = 0; i < nel; i++) - retval(i) = Complex (double (matrix(i))); + Complex *vec = retval.fortran_vec (); + octave_idx_type nel = matrix.numel (); + for (octave_idx_type i = 0; i < nel; i++) + vec[i] = Complex (double (matrix(i))); return retval; } @@ -135,8 +173,9 @@ if (warn && matrix.any_element_not_one_or_zero ()) gripe_logical_conversion (); + bool *vec = retval.fortran_vec (); for (octave_idx_type i = 0; i < nel; i++) - retval(i) = static_cast<bool>(matrix(i)); + vec[i] = static_cast<bool> (matrix(i)); return retval; } @@ -148,8 +187,9 @@ octave_idx_type nel = numel (); + char *vec = retval.fortran_vec (); for (octave_idx_type i = 0; i < nel; i++) - retval(i) = static_cast<char>(matrix(i)); + vec[i] = static_cast<char> (matrix(i)); return retval; } @@ -317,6 +357,24 @@ double scalar_value (bool = false) const { return double (scalar); } + + Matrix + matrix_value (bool = false) const + { + Matrix retval (1, 1); + retval(0,0) = double (scalar); + return retval; + } + + ComplexMatrix + complex_matrix_value (bool = false) const + { + ComplexMatrix retval (1, 1); + retval(0,0) = Complex (double (scalar)); + return retval; + } + + NDArray array_value (bool = false) const { @@ -341,7 +399,7 @@ if (warn && scalar != 0.0 && scalar != 1.0) gripe_logical_conversion (); - retval(0) = static_cast<bool>(scalar); + retval(0) = static_cast<bool> (scalar); return retval; } @@ -350,7 +408,7 @@ char_array_value (bool = false) const { charNDArray retval (dim_vector (1, 1)); - retval(0) = static_cast<char>(scalar); + retval(0) = static_cast<char> (scalar); return retval; }