GNU Octave  3.8.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
op-s-m.cc
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 1996-2013 John W. Eaton
4 
5 This file is part of Octave.
6 
7 Octave is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 3 of the License, or (at your
10 option) any later version.
11 
12 Octave is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with Octave; see the file COPYING. If not, see
19 <http://www.gnu.org/licenses/>.
20 
21 */
22 
23 #ifdef HAVE_CONFIG_H
24 #include <config.h>
25 #endif
26 
27 #include "gripes.h"
28 #include "oct-obj.h"
29 #include "ov.h"
30 #include "ov-scalar.h"
31 #include "ov-float.h"
32 #include "ov-re-mat.h"
33 #include "ov-flt-re-mat.h"
34 #include "ov-typeinfo.h"
35 #include "ops.h"
36 #include "xdiv.h"
37 #include "xpow.h"
38 
39 // scalar by matrix ops.
40 
41 DEFNDBINOP_OP (add, scalar, matrix, scalar, array, +)
42 DEFNDBINOP_OP (sub, scalar, matrix, scalar, array, -)
43 DEFNDBINOP_OP (mul, scalar, matrix, scalar, array, *)
44 
45 DEFBINOP (div, scalar, matrix)
46 {
48 
49  Matrix m1 = v1.matrix_value ();
50  Matrix m2 = v2.matrix_value ();
51  MatrixType typ = v2.matrix_type ();
52 
53  Matrix ret = xdiv (m1, m2, typ);
54 
55  v2.matrix_type (typ);
56  return ret;
57 }
58 
60 
61 DEFBINOP (ldiv, scalar, matrix)
62 {
64 
65  double d = v1.double_value ();
66 
67  if (d == 0.0)
69 
70  return octave_value (v2.array_value () / d);
71 }
72 
73 DEFNDBINOP_FN (lt, scalar, matrix, scalar, array, mx_el_lt)
74 DEFNDBINOP_FN (le, scalar, matrix, scalar, array, mx_el_le)
75 DEFNDBINOP_FN (eq, scalar, matrix, scalar, array, mx_el_eq)
76 DEFNDBINOP_FN (ge, scalar, matrix, scalar, array, mx_el_ge)
77 DEFNDBINOP_FN (gt, scalar, matrix, scalar, array, mx_el_gt)
78 DEFNDBINOP_FN (ne, scalar, matrix, scalar, array, mx_el_ne)
79 
80 DEFNDBINOP_OP (el_mul, scalar, matrix, scalar, array, *)
81 DEFNDBINOP_FN (el_div, scalar, matrix, scalar, array, x_el_div)
82 DEFNDBINOP_FN (el_pow, scalar, matrix, scalar, array, elem_xpow)
83 
84 DEFBINOP (el_ldiv, scalar, matrix)
85 {
87 
88  double d = v1.double_value ();
89 
90  if (d == 0.0)
92 
93  return octave_value (v2.array_value () / d);
94 }
95 
96 DEFNDBINOP_FN (el_and, scalar, matrix, scalar, array, mx_el_and)
97 DEFNDBINOP_FN (el_or, scalar, matrix, scalar, array, mx_el_or)
98 
99 DEFNDCATOP_FN (s_m, scalar, matrix, array, array, concat)
100 
101 DEFCONV (matrix_conv, scalar, matrix)
102 {
103  CAST_CONV_ARG (const octave_scalar&);
104 
105  return new octave_matrix (v.matrix_value ());
106 }
107 
108 void
110 {
129 
131 
134 
136 }