GNU Octave  9.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
dRowVector.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (C) 1994-2024 The Octave Project Developers
4 //
5 // See the file COPYRIGHT.md in the top-level directory of this
6 // distribution or <https://octave.org/copyright/>.
7 //
8 // This file is part of Octave.
9 //
10 // Octave is free software: you can redistribute it and/or modify it
11 // under the terms of the GNU General Public License as published by
12 // the Free Software Foundation, either version 3 of the License, or
13 // (at your option) any later version.
14 //
15 // Octave is distributed in the hope that it will be useful, but
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 // GNU General Public License for more details.
19 //
20 // You should have received a copy of the GNU General Public License
21 // along with Octave; see the file COPYING. If not, see
22 // <https://www.gnu.org/licenses/>.
23 //
24 ////////////////////////////////////////////////////////////////////////
25 
26 #if ! defined (octave_dRowVector_h)
27 #define octave_dRowVector_h 1
28 
29 #include "octave-config.h"
30 
31 #include "MArray.h"
32 #include "mx-defs.h"
33 
34 class
37 {
38 public:
39 
40  RowVector () : MArray<double> (dim_vector (1, 0)) { }
41 
43  : MArray<double> (dim_vector (1, n)) { }
44 
45  explicit RowVector (const dim_vector& dv) : MArray<double> (dv.as_row ()) { }
46 
47  RowVector (octave_idx_type n, double val)
48  : MArray<double> (dim_vector (1, n), val) { }
49 
50  RowVector (const RowVector& a) : MArray<double> (a) { }
51 
52  RowVector (const MArray<double>& a) : MArray<double> (a.as_row ()) { }
53 
54  RowVector (const Array<double>& a) : MArray<double> (a.as_row ()) { }
55 
56  RowVector& operator = (const RowVector& a)
57  {
59  return *this;
60  }
61 
62  ~RowVector () = default;
63 
64  OCTAVE_API bool operator == (const RowVector& a) const;
65  OCTAVE_API bool operator != (const RowVector& a) const;
66 
67  // destructive insert/delete/reorder operations
68 
69  OCTAVE_API RowVector& insert (const RowVector& a, octave_idx_type c);
70 
71  OCTAVE_API RowVector& fill (double val);
72  OCTAVE_API RowVector& fill (double val, octave_idx_type c1, octave_idx_type c2);
73 
74  OCTAVE_API RowVector append (const RowVector& a) const;
75 
76  OCTAVE_API ColumnVector transpose () const;
77 
78  friend OCTAVE_API RowVector real (const ComplexRowVector& a);
79  friend OCTAVE_API RowVector imag (const ComplexRowVector& a);
80 
81  // resize is the destructive equivalent for this one
82 
83  OCTAVE_API RowVector extract (octave_idx_type c1, octave_idx_type c2) const;
84 
86 
87  // row vector by matrix -> row vector
88 
89  friend OCTAVE_API RowVector operator * (const RowVector& a, const Matrix& b);
90 
91  // other operations
92 
93  OCTAVE_API double min () const;
94  OCTAVE_API double max () const;
95 
96  // i/o
97 
98  friend OCTAVE_API std::ostream& operator << (std::ostream& os,
99  const RowVector& a);
100  friend OCTAVE_API std::istream& operator >> (std::istream& is, RowVector& a);
101 
102  void resize (octave_idx_type n, const double& rfv = 0)
103  {
104  Array<double>::resize (dim_vector (1, n), rfv);
105  }
106 
108  { Array<double>::clear (1, n); }
109 
110 };
111 
112 // row vector by column vector -> scalar
113 
114 OCTAVE_API double operator * (const RowVector& a, const ColumnVector& b);
115 
117  const ComplexColumnVector& b);
118 
119 // other operations
120 
121 OCTAVE_API RowVector linspace (double x1, double x2, octave_idx_type n);
122 
124 
125 #endif
template std::ostream & operator<<(std::ostream &, const Array< bool > &)
#define MARRAY_FORWARD_DEFS(B, R, T)
Definition: MArray.h:130
std::istream & operator>>(std::istream &is, SparseBoolMatrix &a)
Definition: boolSparse.cc:279
charNDArray max(char d, const charNDArray &m)
Definition: chNDArray.cc:230
charNDArray min(char d, const charNDArray &m)
Definition: chNDArray.cc:207
void clear()
Definition: Array-base.cc:109
void resize(const dim_vector &dv, const T &rfv)
Size of the specified dimension.
Definition: Array-base.cc:1023
MArray< T > & operator=(const MArray< T > &a)
Definition: MArray.h:81
Definition: dMatrix.h:42
RowVector(const Array< double > &a)
Definition: dRowVector.h:54
RowVector(const RowVector &a)
Definition: dRowVector.h:50
~RowVector()=default
RowVector(const dim_vector &dv)
Definition: dRowVector.h:45
void clear(octave_idx_type n)
Definition: dRowVector.h:107
RowVector(octave_idx_type n, double val)
Definition: dRowVector.h:47
RowVector(octave_idx_type n)
Definition: dRowVector.h:42
void resize(octave_idx_type n, const double &rfv=0)
Definition: dRowVector.h:102
RowVector(const MArray< double > &a)
Definition: dRowVector.h:52
Vector representing the dimensions (size) of an Array.
Definition: dim-vector.h:94
ColumnVector real(const ComplexColumnVector &a)
Definition: dColVector.cc:137
ColumnVector imag(const ComplexColumnVector &a)
Definition: dColVector.cc:143
RowVector linspace(double x1, double x2, octave_idx_type n)
Definition: dRowVector.cc:271
double operator*(const RowVector &a, const ColumnVector &b)
Definition: dRowVector.cc:330
bool operator!=(const dim_vector &a, const dim_vector &b)
Definition: dim-vector.h:536
bool operator==(const dim_vector &a, const dim_vector &b)
Definition: dim-vector.h:520
#define OCTAVE_API
Definition: main.cc:55
octave_idx_type n
Definition: mx-inlines.cc:761
std::complex< double > Complex
Definition: oct-cmplx.h:33