GNU Octave  4.2.1
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-bm-b.cc
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 2001-2017 Cai Jianming
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 #if defined (HAVE_CONFIG_H)
24 # include "config.h"
25 #endif
26 
27 #include "errwarn.h"
28 #include "ovl.h"
29 #include "ov.h"
30 #include "ov-bool.h"
31 #include "ov-bool-mat.h"
32 #include "ov-scalar.h"
33 #include "ov-float.h"
34 #include "ov-re-mat.h"
35 #include "ov-flt-re-mat.h"
36 #include "ov-str-mat.h"
37 #include "ov-int8.h"
38 #include "ov-int16.h"
39 #include "ov-int32.h"
40 #include "ov-int64.h"
41 #include "ov-uint8.h"
42 #include "ov-uint16.h"
43 #include "ov-uint32.h"
44 #include "ov-uint64.h"
45 #include "ov-typeinfo.h"
46 #include "ops.h"
47 #include "xdiv.h"
48 #include "xpow.h"
49 
50 // bool matrix by bool ops.
51 
52 DEFNDBINOP_FN (el_and, bool_matrix, bool, bool_array, bool, mx_el_and)
53 DEFNDBINOP_FN (el_or, bool_matrix, bool, bool_array, bool, mx_el_or)
54 
55 DEFNDBINOP_FN (el_not_and, bool_matrix, bool, bool_array, bool, mx_el_not_and)
56 DEFNDBINOP_FN (el_not_or, bool_matrix, bool, bool_array, bool, mx_el_not_or)
57 
58 DEFNDCATOP_FN (bm_b, bool_matrix, bool, bool_array, bool_array, concat)
59 DEFNDCATOP_FN (bm_s, bool_matrix, scalar, array, array, concat)
60 DEFNDCATOP_FN (m_b, matrix, bool, array, array, concat)
61 DEFNDCATOP_FN (bm_f, bool_matrix, float_scalar, float_array, float_array,
63 DEFNDCATOP_FN (fm_b, float_matrix, bool, float_array, float_array, concat)
64 
65 DEFNDASSIGNOP_FN (assign, bool_matrix, bool, bool_array, assign)
66 
67 static octave_value
69  const octave_value_list& idx,
70  const octave_base_value& a2)
71 {
72  octave_bool_matrix& v1 = dynamic_cast<octave_bool_matrix&> (a1);
73 
74  // FIXME: perhaps add a warning for this conversion
75  // if the values are not all 0 or 1?
76 
77  boolNDArray v2 = a2.bool_array_value (true);
78 
79  v1.assign (idx, v2);
80 
81  return octave_value ();
82 }
83 
84 void
86 {
89  INSTALL_BINOP (op_el_not_and, octave_bool_matrix, octave_bool, el_not_and);
90  INSTALL_BINOP (op_el_not_or, octave_bool_matrix, octave_bool, el_not_or);
91 
97 
98  INSTALL_ASSIGNOP (op_asn_eq, octave_bool_matrix, octave_bool, assign);
99 
101  conv_and_assign);
102 
103  INSTALL_ASSIGNOP (op_asn_eq, octave_bool_matrix, octave_int8_scalar,
104  conv_and_assign);
105  INSTALL_ASSIGNOP (op_asn_eq, octave_bool_matrix, octave_int16_scalar,
106  conv_and_assign);
107  INSTALL_ASSIGNOP (op_asn_eq, octave_bool_matrix, octave_int32_scalar,
108  conv_and_assign);
109  INSTALL_ASSIGNOP (op_asn_eq, octave_bool_matrix, octave_int64_scalar,
110  conv_and_assign);
111 
112  INSTALL_ASSIGNOP (op_asn_eq, octave_bool_matrix, octave_uint8_scalar,
113  conv_and_assign);
114  INSTALL_ASSIGNOP (op_asn_eq, octave_bool_matrix, octave_uint16_scalar,
115  conv_and_assign);
116  INSTALL_ASSIGNOP (op_asn_eq, octave_bool_matrix, octave_uint32_scalar,
117  conv_and_assign);
118  INSTALL_ASSIGNOP (op_asn_eq, octave_bool_matrix, octave_uint64_scalar,
119  conv_and_assign);
120 }
nd group nd example oindent but is performed more efficiently If only and it is a scalar
Definition: data.cc:5342
void assign(const octave_value_list &idx, const MT &rhs)
Definition: ov-base-mat.cc:214
boolNDArray mx_el_not_or(const boolNDArray &m1, const boolNDArray &m2)
Definition: boolNDArray.cc:136
boolNDArray mx_el_not_and(const boolNDArray &m1, const boolNDArray &m2)
Definition: boolNDArray.cc:136
the sparsity preserving column transformation such that that defines the pivoting threshold can be given in which case it defines the then the first element defines the pivoting tolerance for the unsymmetric the values defined such that for full matrix
Definition: lu.cc:138
ComplexNDArray concat(NDArray &ra, ComplexNDArray &rb, const Array< octave_idx_type > &ra_idx)
Definition: CNDArray.cc:655
#define DEFNDBINOP_FN(name, t1, t2, e1, e2, f)
Definition: ops.h:294
#define INSTALL_ASSIGNOP(op, t1, t2, f)
Definition: ops.h:57
const octave_base_value & a2
octave_value op_el_or(const octave_value &a1, const octave_value &a2)
Definition: ov.h:1534
#define INSTALL_BINOP(op, t1, t2, f)
Definition: ops.h:48
then the function must return scalars which will be concatenated into the return array(s).If code
Definition: cellfun.cc:398
octave_value op_el_and(const octave_value &a1, const octave_value &a2)
Definition: ov.h:1533
#define INSTALL_CATOP(t1, t2, f)
Definition: ops.h:53
const octave_char_matrix & v2
boolMatrix mx_el_or(const boolMatrix &m1, const boolMatrix &m2)
Definition: boolMatrix.cc:87
#define DEFNDASSIGNOP_FN(name, t1, t2, e, f)
Definition: ops.h:105
static octave_value oct_assignop_conv_and_assign(octave_base_value &a1, const octave_value_list &idx, const octave_base_value &a2)
Definition: op-bm-b.cc:68
boolMatrix mx_el_and(const boolMatrix &m1, const boolMatrix &m2)
Definition: boolMatrix.cc:87
#define DEFNDCATOP_FN(name, t1, t2, e1, e2, f)
Definition: ops.h:341
void install_bm_b_ops(void)
Definition: op-bm-b.cc:85
virtual boolNDArray bool_array_value(bool=false) const
Definition: ov-base.cc:653
return octave_value(v1.char_array_value().concat(v2.char_array_value(), ra_idx),((a1.is_sq_string()||a2.is_sq_string())? '\'': '"'))