Mercurial > octave
diff src/OPERATORS/op-s-sm.cc @ 6221:8e0f1eda266b
[project @ 2007-01-03 17:23:33 by jwe]
author | jwe |
---|---|
date | Wed, 03 Jan 2007 17:23:34 +0000 |
parents | 6b9cec830d72 |
children | 93c65f2a5668 |
line wrap: on
line diff
--- a/src/OPERATORS/op-s-sm.cc Sat Dec 30 17:29:35 2006 +0000 +++ b/src/OPERATORS/op-s-sm.cc Wed Jan 03 17:23:34 2007 +0000 @@ -46,13 +46,24 @@ { CAST_BINOP_ARGS (const octave_scalar&, const octave_sparse_matrix&); - MatrixType typ = v2.matrix_type (); - Matrix m1 = Matrix (1, 1, v1.double_value ()); - SparseMatrix m2 = v2.sparse_matrix_value (); - Matrix ret = xdiv (m1, m2, typ); - v2.matrix_type (typ); + if (v2.rows() == 1 && v2.columns() == 1) + { + double d = v2.scalar_value (); + + if (d == 0.0) + gripe_divide_by_zero (); - return ret; + return octave_value (v1.scalar_value () / d); + } + else + { + MatrixType typ = v2.matrix_type (); + Matrix m1 = Matrix (1, 1, v1.double_value ()); + SparseMatrix m2 = v2.sparse_matrix_value (); + Matrix ret = xdiv (m1, m2, typ); + v2.matrix_type (typ); + return ret; + } } DEFBINOP (pow, scalar, sparse_matrix)