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-sbm-bm.cc
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 2004-2017 David Bateman
4 Copyright (C) 1998-2004 Andy Adler
5 
6 This file is part of Octave.
7 
8 Octave is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published by the
10 Free Software Foundation; either version 3 of the License, or (at your
11 option) any later version.
12 
13 Octave is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 for more details.
17 
18 You should have received a copy of the GNU General Public License
19 along with Octave; see the file COPYING. If not, see
20 <http://www.gnu.org/licenses/>.
21 
22 */
23 
24 #if defined (HAVE_CONFIG_H)
25 # include "config.h"
26 #endif
27 
28 #include "errwarn.h"
29 #include "ovl.h"
30 #include "ov.h"
31 #include "ov-typeinfo.h"
32 #include "ov-bool-mat.h"
33 #include "boolMatrix.h"
34 #include "ov-int8.h"
35 #include "ov-int16.h"
36 #include "ov-int32.h"
37 #include "ov-int64.h"
38 #include "ov-uint8.h"
39 #include "ov-uint16.h"
40 #include "ov-uint32.h"
41 #include "ov-uint64.h"
42 #include "ov-range.h"
43 #include "ov-scalar.h"
44 #include "ov-str-mat.h"
45 #include "ops.h"
46 #include "ov-null-mat.h"
47 #include "ov-re-sparse.h"
48 #include "ov-bool-sparse.h"
49 #include "smx-bm-sbm.h"
50 #include "smx-sbm-bm.h"
51 
52 // sparse bool matrix by bool matrix ops.
53 
54 DEFBINOP_FN (eq, sparse_bool_matrix, bool_matrix, mx_el_eq)
55 DEFBINOP_FN (ne, sparse_bool_matrix, bool_matrix, mx_el_ne)
56 
57 DEFBINOP_FN (el_and, sparse_bool_matrix, bool_matrix, mx_el_and)
58 DEFBINOP_FN (el_or, sparse_bool_matrix, bool_matrix, mx_el_or)
59 
60 DEFCATOP (sbm_bm, sparse_bool_matrix, bool_matrix)
61 {
62  octave_sparse_bool_matrix& v1 = dynamic_cast<octave_sparse_bool_matrix&> (a1);
63  const octave_bool_matrix& v2 = dynamic_cast<const octave_bool_matrix&> (a2);
64 
67 }
68 
69 DEFCATOP (sbm_m, sparse_bool_matrix, matrix)
70 {
71  octave_sparse_bool_matrix& v1 = dynamic_cast<octave_sparse_bool_matrix&> (a1);
72  const octave_matrix& v2 = dynamic_cast<const octave_matrix&> (a2);
73 
76 }
77 
78 DEFCATOP (sm_bm, sparse_matrix, bool_matrix)
79 {
80  octave_sparse_matrix& v1 = dynamic_cast<octave_sparse_matrix&> (a1);
81  const octave_bool_matrix& v2 = dynamic_cast<const octave_bool_matrix&> (a2);
82 
85 }
86 
87 DEFASSIGNOP (assign, sparse_bool_matrix, bool_matrix)
88 {
89  octave_sparse_bool_matrix& v1 = dynamic_cast<octave_sparse_bool_matrix&> (a1);
90  const octave_bool_matrix& v2 = dynamic_cast<const octave_bool_matrix&> (a2);
91 
92  v1.assign (idx, SparseBoolMatrix (v2.bool_matrix_value ()));
93  return octave_value ();
94 }
95 
96 DEFNULLASSIGNOP_FN (null_assign, sparse_bool_matrix, delete_elements)
97 
98 static octave_value
100  const octave_value_list& idx,
101  const octave_base_value& a2)
102 {
103  octave_sparse_bool_matrix& v1 = dynamic_cast<octave_sparse_bool_matrix&> (a1);
104 
105  // FIXME: perhaps add a warning for this conversion if the values
106  // are not all 0 or 1?
107 
108  SparseBoolMatrix v2 (a2.bool_array_value ());
109 
110  v1.assign (idx, v2);
111 
112  return octave_value ();
113 }
114 
115 void
117 {
120 
122  el_and);
124  el_or);
125 
129 
131  octave_bool_matrix, assign);
132 
134  conv_and_assign);
136  octave_char_matrix_str, conv_and_assign);
138  octave_char_matrix_sq_str, conv_and_assign);
139 
141  conv_and_assign);
142 
144  conv_and_assign);
145 
146  INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_int8_matrix,
147  conv_and_assign);
148  INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_int16_matrix,
149  conv_and_assign);
150  INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_int32_matrix,
151  conv_and_assign);
152  INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_int64_matrix,
153  conv_and_assign);
154 
155  INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_uint8_matrix,
156  conv_and_assign);
157  INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_uint16_matrix,
158  conv_and_assign);
159  INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_uint32_matrix,
160  conv_and_assign);
161  INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_uint64_matrix,
162  conv_and_assign);
163 
165  null_assign);
167  null_assign);
169  null_assign);
170 }
SparseMatrix sparse_matrix_value(bool=false) const
Definition: ov-re-sparse.h:127
const octave_base_value const Array< octave_idx_type > & ra_idx
octave_value op_eq(const octave_value &a1, const octave_value &a2)
Definition: ov.h:1524
SparseMatrix sparse_matrix_value(bool=false) const
#define DEFNULLASSIGNOP_FN(name, t, f)
Definition: ops.h:93
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
SparseBoolMatrix sparse_bool_matrix_value(bool=false) const
Matrix matrix_value(bool=false) const
Definition: ov-re-mat.cc:141
#define INSTALL_ASSIGNOP(op, t1, t2, f)
Definition: ops.h:57
static octave_value oct_assignop_conv_and_assign(octave_base_value &a1, const octave_value_list &idx, const octave_base_value &a2)
Definition: op-sbm-bm.cc:99
const octave_base_value & a2
void assign(const octave_value_list &idx, const T &rhs)
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
#define DEFASSIGNOP(name, t1, t2)
Definition: ops.h:74
octave_value op_el_and(const octave_value &a1, const octave_value &a2)
Definition: ov.h:1533
void install_sbm_bm_ops(void)
Definition: op-sbm-bm.cc:116
double tmp
Definition: data.cc:6300
boolMatrix mx_el_ne(const boolMatrix &m1, const boolMatrix &m2)
Definition: boolMatrix.cc:90
#define INSTALL_CATOP(t1, t2, f)
Definition: ops.h:53
#define DEFCATOP(name, t1, t2)
Definition: ops.h:321
const octave_char_matrix & v2
boolMatrix mx_el_or(const boolMatrix &m1, const boolMatrix &m2)
Definition: boolMatrix.cc:87
octave_value op_ne(const octave_value &a1, const octave_value &a2)
Definition: ov.h:1527
boolMatrix mx_el_and(const boolMatrix &m1, const boolMatrix &m2)
Definition: boolMatrix.cc:87
#define DEFBINOP_FN(name, t1, t2, f)
Definition: ops.h:283
boolMatrix bool_matrix_value(bool=false) const
Definition: ov-bool-mat.h:179
boolMatrix mx_el_eq(const boolMatrix &m1, const boolMatrix &m2)
Definition: boolMatrix.cc:90
return octave_value(v1.char_array_value().concat(v2.char_array_value(), ra_idx),((a1.is_sq_string()||a2.is_sq_string())? '\'': '"'))
Matrix matrix_value(bool=false) const
Definition: ov-bool-mat.h:138