annotate liboctave/RowVector.cc @ 1535:5f3f07b6db89

[project @ 1995-10-05 05:38:26 by jwe]
author jwe
date Thu, 05 Oct 1995 05:38:26 +0000
parents 1d3dbdfd0d19
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1 // RowVector manipulations. -*- C++ -*-
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
3
296
3c23b8ea9099 [project @ 1994-01-17 02:49:15 by jwe]
jwe
parents: 286
diff changeset
4 Copyright (C) 1992, 1993, 1994 John W. Eaton
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
5
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
6 This file is part of Octave.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
7
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
8 Octave is free software; you can redistribute it and/or modify it
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
10 Free Software Foundation; either version 2, or (at your option) any
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
11 later version.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
12
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
13 Octave is distributed in the hope that it will be useful, but WITHOUT
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
16 for more details.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
17
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
19 along with Octave; see the file COPYING. If not, write to the Free
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
20 Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
21
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
22 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
23
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
24 #ifdef HAVE_CONFIG_H
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
25 #include "config.h"
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
26 #endif
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
27
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
28 #include "Matrix.h"
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
29 #include "mx-inlines.cc"
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
30 #include "lo-error.h"
231
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
31 #include "f77-uscore.h"
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
32
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
33 // Fortran functions we call.
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
34
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
35 extern "C"
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
36 {
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
37 int F77_FCN (dgemv) (const char*, const int*, const int*,
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
38 const double*, const double*, const int*,
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
39 const double*, const int*, const double*,
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
40 double*, const int*, long);
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
41
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
42 double F77_FCN (ddot) (const int*, const double*, const int*,
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
43 const double*, const int*);
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
44
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
45 /*
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
46 * f2c translates complex*16 as
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
47 *
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
48 * typedef struct { doublereal re, im; } doublecomplex;
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
49 *
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
50 * and Complex.h from libg++ uses
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
51 *
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
52 * protected:
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
53 * double re;
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
54 * double im;
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
55 *
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
56 * as the only data members, so this should work (fingers crossed that
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
57 * things don't change).
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
58 */
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
59
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
60 int F77_FCN (zgemv) (const char*, const int*, const int*,
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
61 const Complex*, const Complex*, const int*,
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
62 const Complex*, const int*, const Complex*,
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
63 Complex*, const int*, long);
9a6ecd8b50bc [project @ 1993-11-16 10:37:07 by jwe]
jwe
parents: 227
diff changeset
64 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
65
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
66 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
67 * Row Vector class.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
68 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
69
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
70 #if 0
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
71 RowVector&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
72 RowVector::resize (int n)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
73 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
74 if (n < 0)
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
75 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
76 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
77 ("can't resize to negative dimension");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
78 return *this;
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
79 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
80
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
81 double *new_data = (double *) NULL;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
82 if (n > 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
83 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
84 new_data = new double [n];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
85 int min_len = len < n ? len : n;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
86
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
87 for (int i = 0; i < min_len; i++)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
88 new_data[i] = data[i];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
89 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
90
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
91 delete [] data;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
92 len = n;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
93 data = new_data;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
94
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
95 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
96 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
97
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
98 RowVector&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
99 RowVector::resize (int n, double val)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
100 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
101 int old_len = len;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
102 resize (n);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
103 for (int i = old_len; i < len; i++)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
104 data[i] = val;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
105
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
106 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
107 }
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
108 #endif
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
109
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
110 int
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
111 RowVector::operator == (const RowVector& a) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
112 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
113 int len = length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
114 if (len != a.length ())
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
115 return 0;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
116 return equal (data (), a.data (), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
117 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
118
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
119 int
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
120 RowVector::operator != (const RowVector& a) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
121 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
122 return !(*this == a);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
123 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
124
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
125 RowVector&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
126 RowVector::insert (const RowVector& a, int c)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
127 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
128 int a_len = a.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
129 if (c < 0 || c + a_len - 1 > length ())
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
130 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
131 (*current_liboctave_error_handler) ("range error for insert");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
132 return *this;
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
133 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
134
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
135 for (int i = 0; i < a_len; i++)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
136 elem (c+i) = a.elem (i);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
137
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
138 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
139 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
140
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
141 RowVector&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
142 RowVector::fill (double val)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
143 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
144 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
145 if (len > 0)
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
146 for (int i = 0; i < len; i++)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
147 elem (i) = val;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
148 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
149 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
150
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
151 RowVector&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
152 RowVector::fill (double val, int c1, int c2)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
153 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
154 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
155 if (c1 < 0 || c2 < 0 || c1 >= len || c2 >= len)
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
156 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
157 (*current_liboctave_error_handler) ("range error for fill");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
158 return *this;
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
159 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
160
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
161 if (c1 > c2) { int tmp = c1; c1 = c2; c2 = tmp; }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
162
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
163 for (int i = c1; i <= c2; i++)
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
164 elem (i) = val;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
165
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
166 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
167 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
168
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
169 RowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
170 RowVector::append (const RowVector& a) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
171 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
172 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
173 int nc_insert = len;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
174 RowVector retval (len + a.length ());
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
175 retval.insert (*this, 0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
176 retval.insert (a, nc_insert);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
177 return retval;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
178 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
179
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
180 ColumnVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
181 RowVector::transpose (void) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
182 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
183 int len = length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
184 return ColumnVector (dup (data (), len), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
185 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
186
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
187 RowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
188 RowVector::extract (int c1, int c2) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
189 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
190 if (c1 > c2) { int tmp = c1; c1 = c2; c2 = tmp; }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
191
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
192 int new_c = c2 - c1 + 1;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
193
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
194 RowVector result (new_c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
195
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
196 for (int i = 0; i < new_c; i++)
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
197 result.elem (i) = elem (c1+i);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
198
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
199 return result;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
200 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
201
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
202 // row vector by row vector -> row vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
203
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
204 RowVector&
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
205 RowVector::operator += (const RowVector& a)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
206 {
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
207 int len = length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
208 if (len != a.length ())
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
209 {
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
210 (*current_liboctave_error_handler)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
211 ("nonconformant vector += operation attempted");
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
212 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
213 }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
214
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
215 if (len == 0)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
216 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
217
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
218 double *d = fortran_vec (); // Ensures only one reference to my privates!
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
219
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
220 add2 (d, a.data (), len);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
221 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
222 }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
223
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
224 RowVector&
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
225 RowVector::operator -= (const RowVector& a)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
226 {
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
227 int len = length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
228 if (len != a.length ())
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
229 {
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
230 (*current_liboctave_error_handler)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
231 ("nonconformant vector -= operation attempted");
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
232 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
233 }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
234
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
235 if (len == 0)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
236 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
237
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
238 double *d = fortran_vec (); // Ensures only one reference to my privates!
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
239
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
240 subtract2 (d, a.data (), len);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
241 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
242 }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
243
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
244 // row vector by scalar -> row vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
245
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
246 ComplexRowVector
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
247 operator + (const RowVector& v, const Complex& s)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
248 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
249 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
250 return ComplexRowVector (add (v.data (), len, s), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
251 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
252
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
253 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
254 operator - (const RowVector& v, const Complex& s)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
255 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
256 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
257 return ComplexRowVector (subtract (v.data (), len, s), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
258 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
259
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
260 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
261 operator * (const RowVector& v, const Complex& s)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
262 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
263 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
264 return ComplexRowVector (multiply (v.data (), len, s), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
265 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
266
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
267 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
268 operator / (const RowVector& v, const Complex& s)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
269 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
270 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
271 return ComplexRowVector (divide (v.data (), len, s), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
272 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
273
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
274 // scalar by row vector -> row vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
275
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
276 ComplexRowVector
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
277 operator + (const Complex& s, const RowVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
278 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
279 return ComplexRowVector ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
280 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
281
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
282 ComplexRowVector
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
283 operator - (const Complex& s, const RowVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
284 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
285 return ComplexRowVector ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
286 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
287
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
288 ComplexRowVector
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
289 operator * (const Complex& s, const RowVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
290 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
291 return ComplexRowVector ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
292 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
293
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
294 ComplexRowVector
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
295 operator / (const Complex& s, const RowVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
296 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
297 return ComplexRowVector ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
298 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
299
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
300 // row vector by column vector -> scalar
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
301
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
302 double
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
303 operator * (const RowVector& v, const ColumnVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
304 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
305 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
306 if (len != a.length ())
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
307 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
308 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
309 ("nonconformant vector multiplication attempted");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
310 return 0.0;
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
311 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
312
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
313 int i_one = 1;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
314 return F77_FCN (ddot) (&len, v.data (), &i_one, a.data (), &i_one);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
315 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
316
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
317 Complex
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
318 operator * (const RowVector& v, const ComplexColumnVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
319 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
320 ComplexRowVector tmp (v);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
321 return tmp * a;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
322 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
323
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
324 // row vector by matrix -> row vector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
325
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
326 RowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
327 operator * (const RowVector& v, const Matrix& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
328 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
329 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
330 if (a.rows () != len)
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
331 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
332 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
333 ("nonconformant vector multiplication attempted");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
334 return RowVector ();
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
335 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
336
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
337 if (len == 0 || a.cols () == 0)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
338 return RowVector (0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
339
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
340 // Transpose A to form A'*x == (x'*A)'
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
341
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
342 int a_nr = a.rows ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
343 int a_nc = a.cols ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
344
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
345 char trans = 'T';
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
346 int ld = a_nr;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
347 double alpha = 1.0;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
348 double beta = 0.0;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
349 int i_one = 1;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
350
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
351 double *y = new double [len];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
352
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
353 F77_FCN (dgemv) (&trans, &a_nc, &a_nr, &alpha, a.data (), &ld,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
354 v.data (), &i_one, &beta, y, &i_one, 1L);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
355
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
356 return RowVector (y, len);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
357 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
358
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
359 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
360 operator * (const RowVector& v, const ComplexMatrix& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
361 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
362 ComplexRowVector tmp (v);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
363 return tmp * a;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
364 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
365
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
366 // row vector by row vector -> row vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
367
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
368 ComplexRowVector
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
369 operator + (const RowVector& v, const ComplexRowVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
370 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
371 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
372 if (len != a.length ())
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
373 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
374 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
375 ("nonconformant vector addition attempted");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
376 return ComplexRowVector ();
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
377 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
378
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
379 if (len == 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
380 return ComplexRowVector (0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
381
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
382 return ComplexRowVector (add (v.data (), a.data (), len), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
383 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
384
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
385 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
386 operator - (const RowVector& v, const ComplexRowVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
387 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
388 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
389 if (len != a.length ())
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
390 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
391 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
392 ("nonconformant vector subtraction attempted");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
393 return ComplexRowVector ();
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
394 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
395
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
396 if (len == 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
397 return ComplexRowVector (0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
398
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
399 return ComplexRowVector (subtract (v.data (), a.data (), len), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
400 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
401
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
402 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
403 product (const RowVector& v, const ComplexRowVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
404 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
405 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
406 if (len != a.length ())
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
407 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
408 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
409 ("nonconformant vector product attempted");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
410 return ComplexRowVector ();
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
411 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
412
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
413 if (len == 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
414 return ComplexRowVector (0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
415
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
416 return ComplexRowVector (multiply (v.data (), a.data (), len), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
417 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
418
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
419 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
420 quotient (const RowVector& v, const ComplexRowVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
421 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
422 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
423 if (len != a.length ())
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
424 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
425 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
426 ("nonconformant vector quotient attempted");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
427 return ComplexRowVector ();
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
428 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
429
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
430 if (len == 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
431 return ComplexRowVector (0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
432
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
433 return ComplexRowVector (divide (v.data (), a.data (), len), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
434 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
435
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
436 // other operations
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
437
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
438 RowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
439 map (d_d_Mapper f, const RowVector& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
440 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
441 RowVector b (a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
442 b.map (f);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
443 return b;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
444 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
445
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
446 void
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
447 RowVector::map (d_d_Mapper f)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
448 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
449 for (int i = 0; i < length (); i++)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
450 elem (i) = f (elem (i));
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
451 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
452
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
453 double
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
454 RowVector::min (void) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
455 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
456 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
457 if (len == 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
458 return 0;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
459
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
460 double res = elem (0);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
461
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
462 for (int i = 1; i < len; i++)
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
463 if (elem (i) < res)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
464 res = elem (i);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
465
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
466 return res;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
467 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
468
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
469 double
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
470 RowVector::max (void) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
471 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
472 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
473 if (len == 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
474 return 0;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
475
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
476 double res = elem (0);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
477
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
478 for (int i = 1; i < len; i++)
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
479 if (elem (i) > res)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
480 res = elem (i);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
481
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
482 return res;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
483 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
484
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
485 ostream&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
486 operator << (ostream& os, const RowVector& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
487 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
488 // int field_width = os.precision () + 7;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
489 for (int i = 0; i < a.length (); i++)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
490 os << " " /* setw (field_width) */ << a.elem (i);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
491 return os;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
492 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
493
377
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
494 istream&
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
495 operator >> (istream& is, RowVector& a)
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
496 {
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
497 int len = a.length();
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
498
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
499 if (len < 1)
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
500 is.clear (ios::badbit);
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
501 else
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
502 {
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
503 double tmp;
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
504 for (int i = 0; i < len; i++)
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
505 {
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
506 is >> tmp;
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
507 if (is)
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
508 a.elem (i) = tmp;
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
509 else
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
510 break;
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
511 }
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
512 }
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
513 }
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
514
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
515 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
516 * Complex Row Vector class
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
517 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
518
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
519 ComplexRowVector::ComplexRowVector (const RowVector& a)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
520 : Array<Complex> (a.length ())
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
521 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
522 for (int i = 0; i < length (); i++)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
523 elem (i) = a.elem (i);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
524 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
525
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
526 #if 0
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
527 ComplexRowVector&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
528 ComplexRowVector::resize (int n)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
529 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
530 if (n < 0)
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
531 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
532 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
533 ("can't resize to negative dimension");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
534 return *this;
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
535 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
536
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
537 Complex *new_data = (Complex *) NULL;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
538 if (n > 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
539 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
540 new_data = new Complex [n];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
541 int min_len = len < n ? len : n;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
542
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
543 for (int i = 0; i < min_len; i++)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
544 new_data[i] = data[i];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
545 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
546
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
547 delete [] data;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
548 len = n;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
549 data = new_data;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
550
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
551 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
552 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
553
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
554 ComplexRowVector&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
555 ComplexRowVector::resize (int n, double val)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
556 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
557 int old_len = len;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
558 resize (n);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
559 for (int i = old_len; i < len; i++)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
560 data[i] = val;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
561
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
562 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
563 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
564
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
565 ComplexRowVector&
161
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 69
diff changeset
566 ComplexRowVector::resize (int n, const Complex& val)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
567 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
568 int old_len = len;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
569 resize (n);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
570 for (int i = old_len; i < len; i++)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
571 data[i] = val;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
572
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
573 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
574 }
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
575 #endif
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
576
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
577 int
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
578 ComplexRowVector::operator == (const ComplexRowVector& a) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
579 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
580 int len = length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
581 if (len != a.length ())
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
582 return 0;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
583 return equal (data (), a.data (), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
584 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
585
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
586 int
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
587 ComplexRowVector::operator != (const ComplexRowVector& a) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
588 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
589 return !(*this == a);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
590 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
591
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
592 // destructive insert/delete/reorder operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
593
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
594 ComplexRowVector&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
595 ComplexRowVector::insert (const RowVector& a, int c)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
596 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
597 int a_len = a.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
598 if (c < 0 || c + a_len - 1 > length ())
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
599 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
600 (*current_liboctave_error_handler) ("range error for insert");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
601 return *this;
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
602 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
603
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
604 for (int i = 0; i < a_len; i++)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
605 elem (c+i) = a.elem (i);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
606
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
607 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
608 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
609
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
610 ComplexRowVector&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
611 ComplexRowVector::insert (const ComplexRowVector& a, int c)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
612 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
613 int a_len = a.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
614 if (c < 0 || c + a_len - 1 > length ())
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
615 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
616 (*current_liboctave_error_handler) ("range error for insert");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
617 return *this;
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
618 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
619
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
620 for (int i = 0; i < a_len; i++)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
621 elem (c+i) = a.elem (i);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
622
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
623 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
624 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
625
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
626 ComplexRowVector&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
627 ComplexRowVector::fill (double val)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
628 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
629 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
630 if (len > 0)
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
631 for (int i = 0; i < len; i++)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
632 elem (i) = val;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
633 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
634 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
635
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
636 ComplexRowVector&
161
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 69
diff changeset
637 ComplexRowVector::fill (const Complex& val)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
638 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
639 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
640 if (len > 0)
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
641 for (int i = 0; i < len; i++)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
642 elem (i) = val;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
643 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
644 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
645
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
646 ComplexRowVector&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
647 ComplexRowVector::fill (double val, int c1, int c2)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
648 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
649 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
650 if (c1 < 0 || c2 < 0 || c1 >= len || c2 >= len)
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
651 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
652 (*current_liboctave_error_handler) ("range error for fill");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
653 return *this;
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
654 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
655
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
656 if (c1 > c2) { int tmp = c1; c1 = c2; c2 = tmp; }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
657
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
658 for (int i = c1; i <= c2; i++)
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
659 elem (i) = val;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
660
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
661 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
662 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
663
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
664 ComplexRowVector&
161
21b599370728 [project @ 1993-10-16 17:20:32 by jwe]
jwe
parents: 69
diff changeset
665 ComplexRowVector::fill (const Complex& val, int c1, int c2)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
666 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
667 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
668 if (c1 < 0 || c2 < 0 || c1 >= len || c2 >= len)
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
669 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
670 (*current_liboctave_error_handler) ("range error for fill");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
671 return *this;
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
672 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
673
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
674 if (c1 > c2) { int tmp = c1; c1 = c2; c2 = tmp; }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
675
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
676 for (int i = c1; i <= c2; i++)
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
677 elem (i) = val;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
678
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
679 return *this;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
680 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
681
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
682 ComplexRowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
683 ComplexRowVector::append (const RowVector& a) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
684 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
685 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
686 int nc_insert = len;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
687 ComplexRowVector retval (len + a.length ());
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
688 retval.insert (*this, 0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
689 retval.insert (a, nc_insert);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
690 return retval;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
691 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
692
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
693 ComplexRowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
694 ComplexRowVector::append (const ComplexRowVector& a) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
695 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
696 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
697 int nc_insert = len;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
698 ComplexRowVector retval (len + a.length ());
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
699 retval.insert (*this, 0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
700 retval.insert (a, nc_insert);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
701 return retval;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
702 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
703
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
704 ComplexColumnVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
705 ComplexRowVector::hermitian (void) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
706 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
707 int len = length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
708 return ComplexColumnVector (conj_dup (data (), len), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
709 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
710
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
711 ComplexColumnVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
712 ComplexRowVector::transpose (void) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
713 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
714 int len = length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
715 return ComplexColumnVector (dup (data (), len), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
716 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
717
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
718 RowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
719 real (const ComplexRowVector& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
720 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
721 int a_len = a.length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
722 RowVector retval;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
723 if (a_len > 0)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
724 retval = RowVector (real_dup (a.data (), a_len), a_len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
725 return retval;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
726 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
727
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
728 RowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
729 imag (const ComplexRowVector& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
730 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
731 int a_len = a.length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
732 RowVector retval;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
733 if (a_len > 0)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
734 retval = RowVector (imag_dup (a.data (), a_len), a_len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
735 return retval;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
736 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
737
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
738 ComplexRowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
739 conj (const ComplexRowVector& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
740 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
741 int a_len = a.length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
742 ComplexRowVector retval;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
743 if (a_len > 0)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
744 retval = ComplexRowVector (conj_dup (a.data (), a_len), a_len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
745 return retval;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
746 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
747
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
748 // resize is the destructive equivalent for this one
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
749
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
750 ComplexRowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
751 ComplexRowVector::extract (int c1, int c2) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
752 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
753 if (c1 > c2) { int tmp = c1; c1 = c2; c2 = tmp; }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
754
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
755 int new_c = c2 - c1 + 1;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
756
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
757 ComplexRowVector result (new_c);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
758
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
759 for (int i = 0; i < new_c; i++)
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
760 result.elem (i) = elem (c1+i);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
761
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
762 return result;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
763 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
764
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
765 // row vector by row vector -> row vector operations
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
766
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
767 ComplexRowVector&
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
768 ComplexRowVector::operator += (const RowVector& a)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
769 {
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
770 int len = length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
771 if (len != a.length ())
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
772 {
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
773 (*current_liboctave_error_handler)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
774 ("nonconformant vector += operation attempted");
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
775 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
776 }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
777
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
778 if (len == 0)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
779 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
780
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
781 Complex *d = fortran_vec (); // Ensures only one reference to my privates!
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
782
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
783 add2 (d, a.data (), len);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
784 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
785 }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
786
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
787 ComplexRowVector&
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
788 ComplexRowVector::operator -= (const RowVector& a)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
789 {
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
790 int len = length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
791 if (len != a.length ())
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
792 {
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
793 (*current_liboctave_error_handler)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
794 ("nonconformant vector -= operation attempted");
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
795 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
796 }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
797
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
798 if (len == 0)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
799 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
800
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
801 Complex *d = fortran_vec (); // Ensures only one reference to my privates!
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
802
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
803 subtract2 (d, a.data (), len);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
804 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
805 }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
806
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
807 ComplexRowVector&
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
808 ComplexRowVector::operator += (const ComplexRowVector& a)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
809 {
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
810 int len = length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
811 if (len != a.length ())
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
812 {
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
813 (*current_liboctave_error_handler)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
814 ("nonconformant vector += operation attempted");
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
815 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
816 }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
817
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
818 if (len == 0)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
819 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
820
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
821 Complex *d = fortran_vec (); // Ensures only one reference to my privates!
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
822
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
823 add2 (d, a.data (), len);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
824 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
825 }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
826
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
827 ComplexRowVector&
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
828 ComplexRowVector::operator -= (const ComplexRowVector& a)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
829 {
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
830 int len = length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
831 if (len != a.length ())
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
832 {
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
833 (*current_liboctave_error_handler)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
834 ("nonconformant vector -= operation attempted");
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
835 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
836 }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
837
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
838 if (len == 0)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
839 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
840
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
841 Complex *d = fortran_vec (); // Ensures only one reference to my privates!
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
842
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
843 subtract2 (d, a.data (), len);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
844 return *this;
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
845 }
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
846
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
847 // row vector by scalar -> row vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
848
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
849 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
850 operator + (const ComplexRowVector& v, double s)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
851 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
852 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
853 return ComplexRowVector (add (v.data (), len, s), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
854 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
855
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
856 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
857 operator - (const ComplexRowVector& v, double s)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
858 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
859 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
860 return ComplexRowVector (subtract (v.data (), len, s), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
861 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
862
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
863 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
864 operator * (const ComplexRowVector& v, double s)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
865 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
866 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
867 return ComplexRowVector (multiply (v.data (), len, s), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
868 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
869
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
870 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
871 operator / (const ComplexRowVector& v, double s)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
872 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
873 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
874 return ComplexRowVector (divide (v.data (), len, s), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
875 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
876
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
877 // scalar by row vector -> row vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
878
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
879 ComplexRowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
880 operator + (double s, const ComplexRowVector& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
881 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
882 int a_len = a.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
883 return ComplexRowVector (add (a.data (), a_len, s), a_len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
884 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
885
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
886 ComplexRowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
887 operator - (double s, const ComplexRowVector& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
888 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
889 int a_len = a.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
890 return ComplexRowVector (subtract (s, a.data (), a_len), a_len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
891 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
892
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
893 ComplexRowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
894 operator * (double s, const ComplexRowVector& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
895 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
896 int a_len = a.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
897 return ComplexRowVector (multiply (a.data (), a_len, s), a_len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
898 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
899
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
900 ComplexRowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
901 operator / (double s, const ComplexRowVector& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
902 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
903 int a_len = a.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
904 return ComplexRowVector (divide (s, a.data (), a_len), a_len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
905 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
906
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
907 // row vector by column vector -> scalar
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
908
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
909 Complex
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
910 operator * (const ComplexRowVector& v, const ColumnVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
911 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
912 ComplexColumnVector tmp (a);
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
913 return v * tmp;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
914 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
915
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
916 Complex
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
917 operator * (const ComplexRowVector& v, const ComplexColumnVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
918 {
286
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
919 int len = v.length ();
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
920 if (len != a.length ())
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
921 {
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
922 (*current_liboctave_error_handler)
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
923 ("nonconformant vector multiplication attempted");
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
924 return 0.0;
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
925 }
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
926
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
927 Complex retval (0.0, 0.0);
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
928
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
929 for (int i = 0; i < len; i++)
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
930 retval += v.elem (i) * a.elem (i);
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
931
9c74d7d76f3d [project @ 1994-01-12 22:14:18 by jwe]
jwe
parents: 238
diff changeset
932 return retval;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
933 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
934
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
935 // row vector by matrix -> row vector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
936
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
937 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
938 operator * (const ComplexRowVector& v, const ComplexMatrix& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
939 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
940 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
941 if (a.rows () != len)
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
942 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
943 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
944 ("nonconformant vector multiplication attempted");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
945 return ComplexRowVector ();
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
946 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
947
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
948 if (len == 0 || a.cols () == 0)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
949 return ComplexRowVector (0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
950
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
951 // Transpose A to form A'*x == (x'*A)'
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
952
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
953 int a_nr = a.rows ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
954 int a_nc = a.cols ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
955
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
956 char trans = 'T';
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
957 int ld = a_nr;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
958 Complex alpha (1.0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
959 Complex beta (0.0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
960 int i_one = 1;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
961
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
962 Complex *y = new Complex [len];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
963
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
964 F77_FCN (zgemv) (&trans, &a_nc, &a_nr, &alpha, a.data (), &ld,
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
965 v.data (), &i_one, &beta, y, &i_one, 1L);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
966
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
967 return ComplexRowVector (y, len);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
968 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
969
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
970 // row vector by row vector -> row vector operations
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
971
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
972 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
973 operator + (const ComplexRowVector& v, const RowVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
974 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
975 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
976 if (len != a.length ())
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
977 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
978 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
979 ("nonconformant vector addition attempted");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
980 return ComplexRowVector ();
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
981 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
982
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
983 if (len == 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
984 return ComplexRowVector (0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
985
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
986 return ComplexRowVector (add (v.data (), a.data (), len), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
987 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
988
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
989 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
990 operator - (const ComplexRowVector& v, const RowVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
991 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
992 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
993 if (len != a.length ())
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
994 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
995 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
996 ("nonconformant vector subtraction attempted");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
997 return ComplexRowVector ();
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
998 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
999
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1000 if (len == 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1001 return ComplexRowVector (0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1002
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1003 return ComplexRowVector (subtract (v.data (), a.data (), len), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1004 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1005
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1006 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1007 product (const ComplexRowVector& v, const RowVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1008 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1009 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1010 if (len != a.length ())
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
1011 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
1012 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
1013 ("nonconformant vector product attempted");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
1014 return ComplexRowVector ();
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
1015 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1016
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1017 if (len == 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1018 return ComplexRowVector (0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1019
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1020 return ComplexRowVector (multiply (v.data (), a.data (), len), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1021 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1022
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1023 ComplexRowVector
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1024 quotient (const ComplexRowVector& v, const RowVector& a)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1025 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1026 int len = v.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1027 if (len != a.length ())
227
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
1028 {
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
1029 (*current_liboctave_error_handler)
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
1030 ("nonconformant vector quotient attempted");
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
1031 return ComplexRowVector ();
1a48a1b91489 [project @ 1993-11-15 10:10:35 by jwe]
jwe
parents: 161
diff changeset
1032 }
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1033
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1034 if (len == 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1035 return ComplexRowVector (0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1036
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1037 return ComplexRowVector (divide (v.data (), a.data (), len), len);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1038 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1039
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1040 // other operations
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1041
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1042 ComplexRowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1043 map (c_c_Mapper f, const ComplexRowVector& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1044 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1045 ComplexRowVector b (a);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1046 b.map (f);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1047 return b;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1048 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1049
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1050 RowVector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1051 map (d_c_Mapper f, const ComplexRowVector& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1052 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1053 int a_len = a.length ();
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1054 RowVector b (a_len);
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1055 for (int i = 0; i < a_len; i++)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1056 b.elem (i) = f (a.elem (i));
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1057 return b;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1058 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1059
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1060 void
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1061 ComplexRowVector::map (c_c_Mapper f)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1062 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1063 for (int i = 0; i < length (); i++)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1064 elem (i) = f (elem (i));
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1065 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1066
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1067 Complex
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1068 ComplexRowVector::min (void) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1069 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1070 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1071 if (len == 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1072 return Complex (0.0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1073
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1074 Complex res = elem (0);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1075 double absres = abs (res);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1076
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1077 for (int i = 1; i < len; i++)
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1078 if (abs (elem (i)) < absres)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1079 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1080 res = elem (i);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1081 absres = abs (res);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1082 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1083
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1084 return res;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1085 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1086
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1087 Complex
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1088 ComplexRowVector::max (void) const
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1089 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1090 int len = length ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1091 if (len == 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1092 return Complex (0.0);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1093
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1094 Complex res = elem (0);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1095 double absres = abs (res);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1096
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1097 for (int i = 1; i < len; i++)
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1098 if (abs (elem (i)) > absres)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1099 {
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1100 res = elem (i);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1101 absres = abs (res);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1102 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1103
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1104 return res;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1105 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1106
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1107 // i/o
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1108
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1109 ostream&
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1110 operator << (ostream& os, const ComplexRowVector& a)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1111 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1112 // int field_width = os.precision () + 7;
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1113 for (int i = 0; i < a.length (); i++)
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 231
diff changeset
1114 os << " " /* setw (field_width) */ << a.elem (i);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1115 return os;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1116 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1117
377
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1118 istream&
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1119 operator >> (istream& is, ComplexRowVector& a)
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1120 {
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1121 int len = a.length();
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1122
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1123 if (len < 1)
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1124 is.clear (ios::badbit);
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1125 else
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1126 {
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1127 Complex tmp;
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1128 for (int i = 0; i < len; i++)
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1129 {
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1130 is >> tmp;
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1131 if (is)
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1132 a.elem (i) = tmp;
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1133 else
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1134 break;
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1135 }
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1136 }
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1137 }
1d3dbdfd0d19 [project @ 1994-03-03 20:13:03 by jwe]
jwe
parents: 296
diff changeset
1138
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1139 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1140 ;;; Local Variables: ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1141 ;;; mode: C++ ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1142 ;;; page-delimiter: "^/\\*" ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1143 ;;; End: ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1144 */