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
ov-bool-mat.h
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 1996-2017 John W. Eaton
4 Copyright (C) 2009-2010 VZLU Prague
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 (octave_ov_bool_mat_h)
25 #define octave_ov_bool_mat_h 1
26 
27 #include "octave-config.h"
28 
29 #include <cstdlib>
30 
31 #include <iosfwd>
32 #include <string>
33 
34 #include "mx-base.h"
35 
36 #include "error.h"
37 #include "oct-stream.h"
38 #include "ov-base.h"
39 #include "ov-base-mat.h"
40 #include "ov-re-mat.h"
41 #include "ov-typeinfo.h"
42 
43 #include "MatrixType.h"
44 
45 class octave_value_list;
46 
47 class tree_walker;
48 
49 // Character matrix values.
50 
51 class
53 {
54 public:
55 
58 
60  : octave_base_matrix<boolNDArray> (bnda) { }
61 
63  : octave_base_matrix<boolNDArray> (bnda) { }
64 
67 
69  : octave_base_matrix<boolNDArray> (bm, t) { }
70 
71  octave_bool_matrix (const boolNDArray& bm, const idx_vector& cache)
73  {
74  set_idx_cache (cache);
75  }
76 
79 
81 
82  octave_base_value *clone (void) const
83  { return new octave_bool_matrix (*this); }
84 
86  { return new octave_bool_matrix (); }
87 
88  type_conv_info numeric_conversion_function (void) const;
89 
90  octave_base_value *try_narrowing_conversion (void);
91 
92  idx_vector index_vector (bool /* require_integers */ = false) const
93  {
94  return idx_cache ? *idx_cache : set_idx_cache (idx_vector (matrix));
95  }
96 
97  builtin_type_t builtin_type (void) const { return btyp_bool; }
98 
99  bool is_bool_matrix (void) const { return true; }
100 
101  bool is_bool_type (void) const { return true; }
102 
103  bool is_real_type (void) const { return true; }
104 
105  bool is_numeric_type (void) const { return false; }
106 
108  int8_array_value (void) const { return int8NDArray (matrix); }
109 
111  int16_array_value (void) const { return int16NDArray (matrix); }
112 
114  int32_array_value (void) const { return int32NDArray (matrix); }
115 
117  int64_array_value (void) const { return int64NDArray (matrix); }
118 
120  uint8_array_value (void) const { return uint8NDArray (matrix); }
121 
123  uint16_array_value (void) const { return uint16NDArray (matrix); }
124 
126  uint32_array_value (void) const { return uint32NDArray (matrix); }
127 
129  uint64_array_value (void) const { return uint64NDArray (matrix); }
130 
131  double double_value (bool = false) const;
132 
133  float float_value (bool = false) const;
134 
135  double scalar_value (bool frc_str_conv = false) const
136  { return double_value (frc_str_conv); }
137 
138  Matrix matrix_value (bool = false) const
139  { return Matrix (boolMatrix (matrix)); }
140 
141  FloatMatrix float_matrix_value (bool = false) const
142  { return FloatMatrix (boolMatrix (matrix)); }
143 
144  NDArray array_value (bool = false) const
145  { return NDArray (matrix); }
146 
147  FloatNDArray float_array_value (bool = false) const
148  { return FloatNDArray (matrix); }
149 
150  Complex complex_value (bool = false) const;
151 
152  FloatComplex float_complex_value (bool = false) const;
153 
154  ComplexMatrix complex_matrix_value (bool = false) const
155  { return ComplexMatrix (boolMatrix (matrix)); }
156 
158  { return FloatComplexMatrix (boolMatrix (matrix)); }
159 
160  ComplexNDArray complex_array_value (bool = false) const
161  { return ComplexNDArray (matrix); }
162 
164  { return FloatComplexNDArray (matrix); }
165 
167  char_array_value (bool = false) const
168  {
169  charNDArray retval (dims ());
170 
171  octave_idx_type nel = numel ();
172 
173  for (octave_idx_type i = 0; i < nel; i++)
174  retval(i) = static_cast<char>(matrix(i));
175 
176  return retval;
177  }
178 
179  boolMatrix bool_matrix_value (bool = false) const
180  { return boolMatrix (matrix); }
181 
182  boolNDArray bool_array_value (bool = false) const
183  { return matrix; }
184 
185  SparseMatrix sparse_matrix_value (bool = false) const
186  { return SparseMatrix (Matrix (boolMatrix (matrix))); }
187 
190 
192  { return SparseBoolMatrix (boolMatrix (matrix)); }
193 
194  octave_value convert_to_str_internal (bool pad, bool force, char type) const;
195 
196  octave_value as_double (void) const;
197  octave_value as_single (void) const;
198 
199  octave_value as_int8 (void) const;
200  octave_value as_int16 (void) const;
201  octave_value as_int32 (void) const;
202  octave_value as_int64 (void) const;
203 
204  octave_value as_uint8 (void) const;
205  octave_value as_uint16 (void) const;
206  octave_value as_uint32 (void) const;
207  octave_value as_uint64 (void) const;
208 
209  // Use matrix_ref here to clear index cache.
210  void invert (void) { matrix_ref ().invert (); }
211 
212  void print_raw (std::ostream& os, bool pr_as_read_syntax = false) const;
213 
214  bool save_ascii (std::ostream& os);
215 
216  bool load_ascii (std::istream& is);
217 
218  bool save_binary (std::ostream& os, bool& save_as_floats);
219 
220  bool load_binary (std::istream& is, bool swap,
222 
223  bool save_hdf5 (octave_hdf5_id loc_id, const char *name, bool save_as_floats);
224 
225  bool load_hdf5 (octave_hdf5_id loc_id, const char *name);
226 
227  int write (octave_stream& os, int block_size,
228  oct_data_conv::data_type output_type, int skip,
230  { return os.write (matrix, block_size, output_type, skip, flt_fmt); }
231 
232  // Unsafe. This function exists to support the MEX interface.
233  // You should not use it anywhere else.
234  void *mex_get_data (void) const { return matrix.mex_get_data (); }
235 
236  mxArray *as_mxArray (void) const;
237 
238  // Mapper functions are converted to double for treatment
240  {
241  octave_matrix m (array_value ());
242  return m.map (umap);
243  }
244 
245 protected:
246 
248 };
249 
250 #endif
builtin_type_t builtin_type(void) const
Definition: ov-bool-mat.h:97
SparseMatrix sparse_matrix_value(bool=false) const
Definition: ov-bool-mat.h:185
uint16NDArray uint16_array_value(void) const
Definition: ov-bool-mat.h:123
intNDArray< octave_int64 > int64NDArray
Definition: int64NDArray.h:33
int write(octave_stream &os, int block_size, oct_data_conv::data_type output_type, int skip, octave::mach_info::float_format flt_fmt) const
Definition: ov-bool-mat.h:227
octave_idx_type write(const octave_value &data, octave_idx_type block_size, oct_data_conv::data_type output_type, octave_idx_type skip, octave::mach_info::float_format flt_fmt)
Definition: oct-stream.cc:6647
intNDArray< octave_uint32 > uint32NDArray
Definition: uint32NDArray.h:33
bool is_bool_matrix(void) const
Definition: ov-bool-mat.h:99
intNDArray< octave_uint8 > uint8NDArray
Definition: uint8NDArray.h:33
intNDArray< octave_uint16 > uint16NDArray
Definition: uint16NDArray.h:33
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
int16NDArray int16_array_value(void) const
Definition: ov-bool-mat.h:111
octave_base_value * empty_clone(void) const
Definition: ov-bool-mat.h:85
octave::mach_info::float_format flt_fmt
Definition: load-save.cc:723
FloatMatrix float_matrix_value(bool=false) const
Definition: ov-bool-mat.h:141
OCTAVE_EXPORT octave_value_list return the number of command line arguments passed to Octave If called with the optional argument the function t
Definition: ov-usr-fcn.cc:935
int32NDArray int32_array_value(void) const
Definition: ov-bool-mat.h:114
intNDArray< octave_int16 > int16NDArray
Definition: int16NDArray.h:33
FloatNDArray float_array_value(bool=false) const
Definition: ov-bool-mat.h:147
builtin_type_t
Definition: ov-base.h:61
double scalar_value(bool frc_str_conv=false) const
Definition: ov-bool-mat.h:135
octave_bool_matrix(void)
Definition: ov-bool-mat.h:56
SparseComplexMatrix sparse_complex_matrix_value(bool=false) const
Definition: ov-bool-mat.h:188
bool is_numeric_type(void) const
Definition: ov-bool-mat.h:105
bool is_real_type(void) const
Definition: ov-bool-mat.h:103
bool swap
Definition: load-save.cc:725
octave_value map(unary_mapper_t umap) const
Definition: ov-re-mat.cc:899
#define DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
Definition: ov-base.h:148
OCTAVE_EXPORT octave_value_list any number nd example oindent prints the prompt xample Pick a any number!nd example oindent and waits for the user to enter a value The string entered by the user is evaluated as an so it may be a literal a variable name
Definition: input.cc:871
octave_bool_matrix(const boolNDArray &bm, const idx_vector &cache)
Definition: ov-bool-mat.h:71
uint32NDArray uint32_array_value(void) const
Definition: ov-bool-mat.h:126
intNDArray< octave_int8 > int8NDArray
Definition: int8NDArray.h:33
void * mex_get_data(void) const
Definition: ov-bool-mat.h:234
octave_bool_matrix(const octave_bool_matrix &bm)
Definition: ov-bool-mat.h:77
nd deftypefn *octave_map m
Definition: ov-struct.cc:2058
octave_bool_matrix(const boolMatrix &bm)
Definition: ov-bool-mat.h:65
~octave_bool_matrix(void)
Definition: ov-bool-mat.h:80
octave_bool_matrix(const Array< bool > &bnda)
Definition: ov-bool-mat.h:62
bool save_as_floats
Definition: load-save.cc:1581
octave_value retval
Definition: data.cc:6294
int64_t octave_hdf5_id
idx type
Definition: ov.cc:3129
Definition: dMatrix.h:37
the exceeded dimensions are set to if fewer subscripts than dimensions are the exceeding dimensions are merged into the final requested dimension For consider the following dims
Definition: sub2ind.cc:255
ComplexNDArray complex_array_value(bool=false) const
Definition: ov-bool-mat.h:160
charNDArray char_array_value(bool=false) const
Definition: ov-bool-mat.h:167
octave_base_value * clone(void) const
Definition: ov-bool-mat.h:82
int64NDArray int64_array_value(void) const
Definition: ov-bool-mat.h:117
intNDArray< octave_int32 > int32NDArray
Definition: int32NDArray.h:33
T::size_type numel(const T &str)
Definition: oct-string.cc:61
FloatComplexMatrix float_complex_matrix_value(bool=false) const
Definition: ov-bool-mat.h:157
octave_bool_matrix(const boolMatrix &bm, const MatrixType &t)
Definition: ov-bool-mat.h:68
=val(i)}if ode{val(i)}occurs in table i
Definition: lookup.cc:239
NDArray array_value(bool=false) const
Definition: ov-bool-mat.h:144
void invert(void)
Definition: ov-bool-mat.h:210
uint64NDArray uint64_array_value(void) const
Definition: ov-bool-mat.h:129
uint8NDArray uint8_array_value(void) const
Definition: ov-bool-mat.h:120
SparseBoolMatrix sparse_bool_matrix_value(bool=false) const
Definition: ov-bool-mat.h:191
std::complex< float > FloatComplex
Definition: oct-cmplx.h:32
boolMatrix bool_matrix_value(bool=false) const
Definition: ov-bool-mat.h:179
std::complex< double > Complex
Definition: oct-cmplx.h:31
ComplexMatrix complex_matrix_value(bool=false) const
Definition: ov-bool-mat.h:154
octave_bool_matrix(const boolNDArray &bnda)
Definition: ov-bool-mat.h:59
int8NDArray int8_array_value(void) const
Definition: ov-bool-mat.h:108
write the output to stdout if nargout is
Definition: load-save.cc:1576
idx_vector index_vector(bool=false) const
Definition: ov-bool-mat.h:92
octave_value map(unary_mapper_t umap) const
Definition: ov-bool-mat.h:239
Matrix matrix_value(bool=false) const
Definition: ov-bool-mat.h:138
bool is_bool_type(void) const
Definition: ov-bool-mat.h:101
FloatComplexNDArray float_complex_array_value(bool=false) const
Definition: ov-bool-mat.h:163
boolNDArray bool_array_value(bool=false) const
Definition: ov-bool-mat.h:182
intNDArray< octave_uint64 > uint64NDArray
Definition: uint64NDArray.h:33