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
CNDArray.h
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 2003-2017 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 #if ! defined (octave_CNDArray_h)
24 #define octave_CNDArray_h 1
25 
26 #include "octave-config.h"
27 
28 #include "MArray.h"
29 
30 #include "mx-defs.h"
31 #include "mx-op-decl.h"
32 #include "bsxfun-decl.h"
33 
34 class
35 OCTAVE_API
37 {
38 public:
39 
40  ComplexNDArray (void) : MArray<Complex> () { }
41 
42  ComplexNDArray (const dim_vector& dv) : MArray<Complex> (dv) { }
43 
45  : MArray<Complex> (dv, val) { }
46 
48 
49  template <typename U>
50  ComplexNDArray (const MArray<U>& a) : MArray<Complex> (a) { }
51 
52  template <typename U>
53  ComplexNDArray (const Array<U>& a) : MArray<Complex> (a) { }
54 
55  ComplexNDArray (const charNDArray&);
56 
58  {
60  return *this;
61  }
62 
63  // unary operations
64 
65  boolNDArray operator ! (void) const;
66 
67  // FIXME: this is not quite the right thing.
68 
69  bool any_element_is_nan (void) const;
70  bool any_element_is_inf_or_nan (void) const;
71  bool all_elements_are_real (void) const;
72  bool all_integers (double& max_val, double& min_val) const;
73  bool too_large_for_float (void) const;
74 
75  boolNDArray all (int dim = -1) const;
76  boolNDArray any (int dim = -1) const;
77 
78  ComplexNDArray cumprod (int dim = -1) const;
79  ComplexNDArray cumsum (int dim = -1) const;
80  ComplexNDArray prod (int dim = -1) const;
81  ComplexNDArray sum (int dim = -1) const;
82  ComplexNDArray xsum (int dim = -1) const;
83  ComplexNDArray sumsq (int dim = -1) const;
86  ComplexNDArray concat (const NDArray& rb,
88 
89  ComplexNDArray max (int dim = -1) const;
90  ComplexNDArray max (Array<octave_idx_type>& index, int dim = -1) const;
91  ComplexNDArray min (int dim = -1) const;
92  ComplexNDArray min (Array<octave_idx_type>& index, int dim = -1) const;
93 
94  ComplexNDArray cummax (int dim = -1) const;
95  ComplexNDArray cummax (Array<octave_idx_type>& index, int dim = -1) const;
96  ComplexNDArray cummin (int dim = -1) const;
97  ComplexNDArray cummin (Array<octave_idx_type>& index, int dim = -1) const;
98 
99  ComplexNDArray diff (octave_idx_type order = 1, int dim = -1) const;
100 
101  ComplexNDArray& insert (const NDArray& a,
107 
108  NDArray abs (void) const;
109  boolNDArray isnan (void) const;
110  boolNDArray isinf (void) const;
111  boolNDArray isfinite (void) const;
112 
113  friend OCTAVE_API ComplexNDArray conj (const ComplexNDArray& a);
114 
115  ComplexNDArray fourier (int dim = 1) const;
116  ComplexNDArray ifourier (int dim = 1) const;
117 
118  ComplexNDArray fourier2d (void) const;
119  ComplexNDArray ifourier2d (void) const;
120 
121  ComplexNDArray fourierNd (void) const;
122  ComplexNDArray ifourierNd (void) const;
123 
124  ComplexNDArray squeeze (void) const { return MArray<Complex>::squeeze (); }
125 
127  const dim_vector& dimensions,
128  int start_dimension = 0);
129 
131  const dim_vector& dimensions);
132 
133  // i/o
134 
135  friend OCTAVE_API std::ostream& operator << (std::ostream& os,
136  const ComplexNDArray& a);
137  friend OCTAVE_API std::istream& operator >> (std::istream& is,
138  ComplexNDArray& a);
139 
140  // bool all_elements_are_real (void) const;
141  // bool all_integers (double& max_val, double& min_val) const;
142 
143  ComplexNDArray diag (octave_idx_type k = 0) const;
144 
146 
148  {
150  return *this;
151  }
152 
153 };
154 
155 extern OCTAVE_API ComplexNDArray conj (const ComplexNDArray& a);
156 
157 MINMAX_DECLS (ComplexNDArray, Complex, OCTAVE_API)
158 
160 NDS_BOOL_OP_DECLS (ComplexNDArray, Complex, OCTAVE_API)
161 
162 SND_CMP_OP_DECLS (Complex, ComplexNDArray, OCTAVE_API)
163 SND_BOOL_OP_DECLS (Complex, ComplexNDArray, OCTAVE_API)
164 
165 NDND_CMP_OP_DECLS (ComplexNDArray, ComplexNDArray, OCTAVE_API)
166 NDND_BOOL_OP_DECLS (ComplexNDArray, ComplexNDArray, OCTAVE_API)
167 
168 MARRAY_FORWARD_DEFS (MArray, ComplexNDArray, Complex)
169 
170 extern OCTAVE_API ComplexNDArray& operator *= (ComplexNDArray& a, double s);
171 extern OCTAVE_API ComplexNDArray& operator /= (ComplexNDArray& a, double s);
172 
173 BSXFUN_STDOP_DECLS (ComplexNDArray, OCTAVE_API)
174 BSXFUN_STDREL_DECLS (ComplexNDArray, OCTAVE_API)
175 
176 BSXFUN_OP_DECL (pow, ComplexNDArray, OCTAVE_API)
177 
178 #endif
dim_vector dimensions
Definition: Array.h:214
octave_idx_type compute_index(octave_idx_type n, const dim_vector &dims)
Definition: Array-util.cc:176
ComplexMatrix ifourier(void) const
Definition: CMatrix.cc:1009
bool all_integers(double &max_val, double &min_val) const
Definition: CNDArray.cc:526
OCTAVE_API ComplexNDArray min(Complex d, const ComplexNDArray &m)
Definition: CNDArray.cc:868
ComplexNDArray(const ComplexNDArray &a)
Definition: CNDArray.h:47
const octave_base_value const Array< octave_idx_type > & ra_idx
bool any_element_is_nan(void) const
Definition: CNDArray.cc:502
std::istream & operator>>(std::istream &is, SparseBoolMatrix &a)
Definition: boolSparse.cc:279
MArray squeeze(void) const
Definition: MArray.h:101
#define BSXFUN_STDREL_DECLS(ARRAY, API)
Definition: bsxfun-decl.h:53
identity matrix If supplied two scalar respectively For allows like xample val
Definition: data.cc:5068
#define NDND_CMP_OP_DECLS(ND1, ND2, API)
Definition: mx-op-decl.h:218
bool isnan(double x)
Definition: lo-mappers.cc:347
for large enough k
Definition: lu.cc:606
#define SND_BOOL_OP_DECLS(S, ND, API)
Definition: mx-op-decl.h:199
ComplexNDArray concat(NDArray &ra, ComplexNDArray &rb, const Array< octave_idx_type > &ra_idx)
Definition: CNDArray.cc:655
#define NDND_BOOL_OP_DECLS(ND1, ND2, API)
Definition: mx-op-decl.h:226
ComplexNDArray ifourierNd(void) const
Definition: CNDArray.cc:175
s
Definition: file-io.cc:2682
#define MARRAY_FORWARD_DEFS(B, R, T)
Definition: MArray.h:126
#define NDS_BOOL_OP_DECLS(ND, S, API)
Definition: mx-op-decl.h:172
void changesign(void)
Definition: MArray.cc:204
ComplexMatrix prod(int dim=-1) const
Definition: CMatrix.cc:2856
bool too_large_for_float(void) const
Definition: CNDArray.cc:577
#define NDS_CMP_OP_DECLS(ND, S, API)
Definition: mx-op-decl.h:164
calling an anonymous function involves an overhead quite comparable to the overhead of an m file function Passing a handle to a built in function is because the interpreter is not involved in the internal loop For a
Definition: cellfun.cc:398
#define SND_CMP_OP_DECLS(S, ND, API)
Definition: mx-op-decl.h:191
ComplexMatrix cumprod(int dim=-1) const
Definition: CMatrix.cc:2844
bool all_elements_are_real(void) const
Definition: CNDArray.cc:516
ComplexMatrix cumsum(int dim=-1) const
Definition: CMatrix.cc:2850
void increment_index(Array< octave_idx_type > &ra_idx, const dim_vector &dimensions, int start_dimension)
Definition: Array-util.cc:59
nd deftypefn *octave_map m
Definition: ov-struct.cc:2058
ComplexNDArray(const MArray< U > &a)
Definition: CNDArray.h:50
boolMatrix all(int dim=-1) const
Definition: CMatrix.cc:2832
ComplexNDArray cummin(int dim=-1) const
Definition: CNDArray.cc:703
octave_int< T > pow(const octave_int< T > &a, const octave_int< T > &b)
ComplexNDArray & changesign(void)
Definition: CNDArray.h:147
ComplexNDArray squeeze(void) const
Definition: CNDArray.h:124
ComplexMatrix fourier(void) const
Definition: CMatrix.cc:980
ComplexNDArray & operator=(const ComplexNDArray &a)
Definition: CNDArray.h:57
ComplexNDArray xsum(int dim=-1) const
Definition: CNDArray.cc:619
ComplexMatrix sumsq(int dim=-1) const
Definition: CMatrix.cc:2868
bool any_element_is_inf_or_nan(void) const
Definition: CNDArray.cc:508
the sparsity preserving column transformation such that that defines the pivoting threshold can be given in which case it defines the c
Definition: lu.cc:138
ComplexMatrix & insert(const Matrix &a, octave_idx_type r, octave_idx_type c)
Definition: CMatrix.cc:198
bool isinf(double x)
Definition: lo-mappers.cc:387
ComplexNDArray fourierNd(void) const
Definition: CNDArray.cc:160
N Dimensional Array with copy-on-write semantics.
Definition: Array.h:126
ComplexNDArray(void)
Definition: CNDArray.h:40
OCTAVE_EXPORT octave_value_list return the value of the option it must match the dimension of the state and the relative tolerance must also be a vector of the same length tem it must match the dimension of the state and the absolute tolerance must also be a vector of the same length The local error test applied at each integration step is xample roup abs(local error in x(i))<
OCTAVE_API ComplexNDArray max(Complex d, const ComplexNDArray &m)
Definition: CNDArray.cc:868
boolNDArray isfinite(void) const
Definition: CNDArray.cc:733
template OCTAVE_API std::ostream & operator<<(std::ostream &, const Array< bool > &)
ComplexMatrix sum(int dim=-1) const
Definition: CMatrix.cc:2862
ComplexNDArray diff(octave_idx_type order=1, int dim=-1) const
Definition: CNDArray.cc:631
ComplexMatrix ifourier2d(void) const
Definition: CMatrix.cc:1052
ComplexNDArray(const dim_vector &dv, const Complex &val)
Definition: CNDArray.h:44
#define BSXFUN_STDOP_DECLS(ARRAY, API)
Definition: bsxfun-decl.h:38
ComplexMatrix diag(octave_idx_type k=0) const
Definition: CMatrix.cc:2880
octave_value operator!(const octave_value &a)
Definition: ov.h:1484
std::complex< double > Complex
Definition: oct-cmplx.h:31
write the output to stdout if nargout is
Definition: load-save.cc:1576
#define MINMAX_DECLS(T, S, API)
Definition: mx-op-decl.h:288
Vector representing the dimensions (size) of an Array.
Definition: dim-vector.h:87
the second is matched to the second specifier and placed in the second column and so forth If there are more words than specifiers then the process is repeated until all words have been processed or the limit imposed by any(non-whitespace) text in the format that is not one of these specifiers is considered a literal.If there is a literal between two format specifiers then that same literal must appear in the input stream between the matching words.The following specifiers are valid
Definition: file-io.cc:1491
dim_vector dv
Definition: sub2ind.cc:263
ComplexNDArray cummax(int dim=-1) const
Definition: CNDArray.cc:691
ComplexNDArray(const dim_vector &dv)
Definition: CNDArray.h:42
MArray< T > & operator=(const MArray< T > &a)
Definition: MArray.h:85
#define BSXFUN_OP_DECL(OP, ARRAY, API)
Definition: bsxfun-decl.h:29
Array< Complex > index(const idx_vector &i) const
Indexing without resizing.
ComplexMatrix fourier2d(void) const
Definition: CMatrix.cc:1038
ComplexNDArray(const Array< U > &a)
Definition: CNDArray.h:53
OCTAVE_API ComplexNDArray conj(const ComplexNDArray &a)
Definition: CNDArray.cc:739