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-cx-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_cx_mat_h)
25 #define octave_ov_cx_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 #include "str-vec.h"
36 
37 #include "error.h"
38 #include "oct-stream.h"
39 #include "ov-base.h"
40 #include "ov-base-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 // Complex matrix values.
50 
51 class
54 {
55 public:
56 
59 
62 
65 
68 
71 
74 
77 
80 
83 
85 
86  octave_base_value *clone (void) const
87  { return new octave_complex_matrix (*this); }
89  { return new octave_complex_matrix (); }
90 
91  type_conv_info numeric_demotion_function (void) const;
92 
93  octave_base_value *try_narrowing_conversion (void);
94 
95  builtin_type_t builtin_type (void) const { return btyp_complex; }
96 
97  bool is_complex_matrix (void) const { return true; }
98 
99  bool is_complex_type (void) const { return true; }
100 
101  bool is_double_type (void) const { return true; }
102 
103  bool is_float_type (void) const { return true; }
104 
105  double double_value (bool = false) const;
106 
107  float float_value (bool = false) const;
108 
109  double scalar_value (bool frc_str_conv = false) const
110  { return double_value (frc_str_conv); }
111 
112  float float_scalar_value (bool frc_str_conv = false) const
113  { return float_value (frc_str_conv); }
114 
115  NDArray array_value (bool = false) const;
116 
117  Matrix matrix_value (bool = false) const;
118 
119  FloatMatrix float_matrix_value (bool = false) const;
120 
121  Complex complex_value (bool = false) const;
122 
123  FloatComplex float_complex_value (bool = false) const;
124 
125  ComplexMatrix complex_matrix_value (bool = false) const;
126 
127  FloatComplexMatrix float_complex_matrix_value (bool = false) const;
128 
129  ComplexNDArray complex_array_value (bool = false) const { return matrix; }
130 
131  FloatComplexNDArray float_complex_array_value (bool = false) const;
132 
133  boolNDArray bool_array_value (bool warn = false) const;
134 
135  charNDArray char_array_value (bool frc_str_conv = false) const;
136 
137  SparseMatrix sparse_matrix_value (bool = false) const;
138 
139  SparseComplexMatrix sparse_complex_matrix_value (bool = false) const;
140 
141  octave_value as_double (void) const;
142  octave_value as_single (void) const;
143 
144  octave_value diag (octave_idx_type k = 0) const;
145 
147 
148  void increment (void) { matrix += Complex (1.0); }
149 
150  void decrement (void) { matrix -= Complex (1.0); }
151 
152  void changesign (void) { matrix.changesign (); }
153 
154  bool save_ascii (std::ostream& os);
155 
156  bool load_ascii (std::istream& is);
157 
158  bool save_binary (std::ostream& os, bool& save_as_floats);
159 
160  bool load_binary (std::istream& is, bool swap,
162 
163  bool save_hdf5 (octave_hdf5_id loc_id, const char *name, bool save_as_floats);
164 
165  bool load_hdf5 (octave_hdf5_id loc_id, const char *name);
166 
167  int write (octave_stream& os, int block_size,
168  oct_data_conv::data_type output_type, int skip,
170  {
171  // Yes, for compatibility, we drop the imaginary part here.
172  return os.write (matrix_value (true), block_size, output_type,
173  skip, flt_fmt);
174  }
175 
176  void print_raw (std::ostream& os, bool pr_as_read_syntax = false) const;
177 
178  mxArray *as_mxArray (void) const;
179 
180  octave_value map (unary_mapper_t umap) const;
181 
182 private:
183 
185 };
186 
187 #endif
void decrement(void)
Definition: ov-cx-mat.h:150
bool is_complex_type(void) const
Definition: ov-cx-mat.h:99
bool is_float_type(void) const
Definition: ov-cx-mat.h:103
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
for large enough k
Definition: lu.cc:606
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
octave_base_value * clone(void) const
Definition: ov-cx-mat.h:86
ComplexNDArray complex_array_value(bool=false) const
Definition: ov-cx-mat.h:129
octave::mach_info::float_format flt_fmt
Definition: load-save.cc:723
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
builtin_type_t
Definition: ov-base.h:61
octave_complex_matrix(const ComplexMatrix &m, const MatrixType &t)
Definition: ov-cx-mat.h:66
octave_complex_matrix(const ComplexRowVector &v)
Definition: ov-cx-mat.h:75
F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_REAL const F77_REAL F77_REAL &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_DBLE F77_DBLE &F77_RET_T const F77_REAL F77_REAL &F77_RET_T F77_REAL F77_REAL &F77_RET_T F77_DBLE F77_DBLE &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE * d
octave_base_value * empty_clone(void) const
Definition: ov-cx-mat.h:88
octave_complex_matrix(const Array< Complex > &m)
Definition: ov-cx-mat.h:69
bool swap
Definition: load-save.cc:725
~octave_complex_matrix(void)
Definition: ov-cx-mat.h:84
builtin_type_t builtin_type(void) const
Definition: ov-cx-mat.h:95
#define DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
Definition: ov-base.h:148
octave_complex_matrix(const ComplexMatrix &m)
Definition: ov-cx-mat.h:63
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
bool is_double_type(void) const
Definition: ov-cx-mat.h:101
#define OCTINTERP_API
Definition: mexproto.h:69
nd deftypefn *octave_map m
Definition: ov-struct.cc:2058
bool save_as_floats
Definition: load-save.cc:1581
void increment(void)
Definition: ov-cx-mat.h:148
int64_t octave_hdf5_id
bool is_complex_matrix(void) const
Definition: ov-cx-mat.h:97
float float_scalar_value(bool frc_str_conv=false) const
Definition: ov-cx-mat.h:112
Definition: dMatrix.h:37
void changesign(void)
Definition: ov-cx-mat.h:152
double scalar_value(bool frc_str_conv=false) const
Definition: ov-cx-mat.h:109
octave_complex_matrix(const ComplexColumnVector &v)
Definition: ov-cx-mat.h:78
octave_complex_matrix(void)
Definition: ov-cx-mat.h:57
octave_map map(dims)
std::complex< float > FloatComplex
Definition: oct-cmplx.h:32
octave_complex_matrix(const octave_complex_matrix &cm)
Definition: ov-cx-mat.h:81
std::complex< double > Complex
Definition: oct-cmplx.h:31
write the output to stdout if nargout is
Definition: load-save.cc:1576
octave_complex_matrix(const ComplexNDArray &m)
Definition: ov-cx-mat.h:60
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-cx-mat.h:167
octave_complex_matrix(const ComplexDiagMatrix &d)
Definition: ov-cx-mat.h:72