annotate src/xpow.cc @ 5070:1e6f653ef1e3 ss-2-1-61

[project @ 2004-11-06 00:33:38 by jwe]
author jwe
date Sat, 06 Nov 2004 00:33:38 +0000
parents 91a84c9bdadb
children deed800e7bef
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2
2847
8b262e771614 [project @ 1997-03-27 16:18:26 by jwe]
jwe
parents: 2804
diff changeset
3 Copyright (C) 1996, 1997 John W. Eaton
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
4
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
6
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
10 later version.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
11
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
15 for more details.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
16
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
1315
611d403c7f3d [project @ 1995-06-25 19:56:32 by jwe]
jwe
parents: 1192
diff changeset
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
20
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
21 */
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
22
240
a99f28f5e351 [project @ 1993-11-30 20:24:36 by jwe]
jwe
parents: 164
diff changeset
23 #ifdef HAVE_CONFIG_H
1192
b6360f2d4fa6 [project @ 1995-03-30 21:38:35 by jwe]
jwe
parents: 1009
diff changeset
24 #include <config.h>
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
25 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
26
1343
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1321
diff changeset
27 #include <cassert>
1580
0c49e5e8dd5b [project @ 1995-10-19 21:26:43 by jwe]
jwe
parents: 1567
diff changeset
28 #include <climits>
1343
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1321
diff changeset
29
4669
334a27c8f453 [project @ 2003-11-26 07:02:42 by jwe]
jwe
parents: 4543
diff changeset
30 #include "Array-util.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1343
diff changeset
31 #include "CColVector.h"
453
393e95f46b51 [project @ 1994-06-06 00:05:20 by jwe]
jwe
parents: 240
diff changeset
32 #include "CDiagMatrix.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1343
diff changeset
33 #include "CMatrix.h"
453
393e95f46b51 [project @ 1994-06-06 00:05:20 by jwe]
jwe
parents: 240
diff changeset
34 #include "EIG.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1343
diff changeset
35 #include "dDiagMatrix.h"
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1343
diff changeset
36 #include "dMatrix.h"
3585
d9803711e047 [project @ 2000-02-08 04:35:39 by jwe]
jwe
parents: 3178
diff changeset
37 #include "mx-cm-cdm.h"
1651
e846e361a265 [project @ 1995-12-20 06:59:12 by jwe]
jwe
parents: 1580
diff changeset
38 #include "oct-cmplx.h"
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
39 #include "quit.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1343
diff changeset
40
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1343
diff changeset
41 #include "error.h"
4055
7690958e7726 [project @ 2002-08-18 01:56:58 by jwe]
jwe
parents: 3585
diff changeset
42 #include "oct-obj.h"
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
43 #include "utils.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1343
diff changeset
44 #include "xpow.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
45
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
46 static inline int
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
47 xisint (double x)
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
48 {
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
49 return (D_NINT (x) == x
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
50 && ((x >= 0 && x < INT_MAX)
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
51 || (x <= 0 && x > INT_MIN)));
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
52 }
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
53
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
54 // Safer pow functions.
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
55 //
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
56 // op2 \ op1: s m cs cm
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
57 // +-- +---+---+----+----+
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
58 // scalar | | 1 | 5 | 7 | 11 |
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
59 // +---+---+----+----+
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
60 // matrix | 2 | * | 8 | * |
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
61 // +---+---+----+----+
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
62 // complex_scalar | 3 | 6 | 9 | 12 |
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
63 // +---+---+----+----+
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
64 // complex_matrix | 4 | * | 10 | * |
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
65 // +---+---+----+----+
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
66
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
67 // -*- 1 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
68 octave_value
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
69 xpow (double a, double b)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
70 {
2800
9aeba8e006a4 [project @ 1997-03-09 09:50:20 by jwe]
jwe
parents: 2365
diff changeset
71 if (a < 0.0 && static_cast<int> (b) != b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
72 {
4682
994f449a1eba [project @ 2003-12-19 15:37:14 by jwe]
jwe
parents: 4669
diff changeset
73 // XXX FIXME XXX -- avoid apparent GNU libm bug by converting
994f449a1eba [project @ 2003-12-19 15:37:14 by jwe]
jwe
parents: 4669
diff changeset
74 // A and B to complex instead of just A.
994f449a1eba [project @ 2003-12-19 15:37:14 by jwe]
jwe
parents: 4669
diff changeset
75
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
76 Complex atmp (a);
4682
994f449a1eba [project @ 2003-12-19 15:37:14 by jwe]
jwe
parents: 4669
diff changeset
77 Complex btmp (b);
994f449a1eba [project @ 2003-12-19 15:37:14 by jwe]
jwe
parents: 4669
diff changeset
78
994f449a1eba [project @ 2003-12-19 15:37:14 by jwe]
jwe
parents: 4669
diff changeset
79 return pow (atmp, btmp);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
80 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
81 else
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
82 return pow (a, b);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
83 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
84
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
85 // -*- 2 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
86 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
87 xpow (double a, const Matrix& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
88 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
89 octave_value retval;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
90
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
91 int nr = b.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
92 int nc = b.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
93
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
94 if (nr == 0 || nc == 0 || nr != nc)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
95 error ("for x^A, A must be square");
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
96 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
97 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
98 EIG b_eig (b);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
99 ComplexColumnVector lambda (b_eig.eigenvalues ());
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
100 ComplexMatrix Q (b_eig.eigenvectors ());
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
101
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
102 for (int i = 0; i < nr; i++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
103 {
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
104 Complex elt = lambda (i);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
105 if (imag (elt) == 0.0)
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
106 lambda (i) = pow (a, real (elt));
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
107 else
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
108 lambda (i) = pow (a, elt);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
109 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
110 ComplexDiagMatrix D (lambda);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
111
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
112 retval = ComplexMatrix (Q * D * Q.inverse ());
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
113 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
114
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
115 return retval;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
116 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
117
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
118 // -*- 3 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
119 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
120 xpow (double a, const Complex& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
121 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
122 Complex result;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
123 Complex atmp (a);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
124 result = pow (atmp, b);
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
125 return result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
126 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
127
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
128 // -*- 4 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
129 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
130 xpow (double a, const ComplexMatrix& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
131 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
132 octave_value retval;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
133
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
134 int nr = b.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
135 int nc = b.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
136
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
137 if (nr == 0 || nc == 0 || nr != nc)
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
138 error ("for x^A, A must be square");
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
139 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
140 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
141 EIG b_eig (b);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
142 ComplexColumnVector lambda (b_eig.eigenvalues ());
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
143 ComplexMatrix Q (b_eig.eigenvectors ());
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
144
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
145 for (int i = 0; i < nr; i++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
146 {
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
147 Complex elt = lambda (i);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
148 if (imag (elt) == 0.0)
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
149 lambda (i) = pow (a, real (elt));
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
150 else
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
151 lambda (i) = pow (a, elt);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
152 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
153 ComplexDiagMatrix D (lambda);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
154
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
155 retval = ComplexMatrix (Q * D * Q.inverse ());
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
156 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
157
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
158 return retval;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
159 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
160
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
161 // -*- 5 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
162 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
163 xpow (const Matrix& a, double b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
164 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
165 octave_value retval;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
166
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
167 int nr = a.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
168 int nc = a.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
169
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
170 if (nr == 0 || nc == 0 || nr != nc)
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
171 error ("for A^b, A must be square");
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
172 else
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
173 {
2800
9aeba8e006a4 [project @ 1997-03-09 09:50:20 by jwe]
jwe
parents: 2365
diff changeset
174 if (static_cast<int> (b) == b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
175 {
2804
eedc2f3f61f7 [project @ 1997-03-11 04:34:50 by jwe]
jwe
parents: 2800
diff changeset
176 int btmp = static_cast<int> (b);
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
177 if (btmp == 0)
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
178 {
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
179 retval = DiagMatrix (nr, nr, 1.0);
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
180 }
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
181 else
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
182 {
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
183 // Too much copying?
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
184 // XXX FIXME XXX -- we shouldn't do this if the exponent is
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
185 // large...
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
186
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
187 Matrix atmp;
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
188 if (btmp < 0)
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
189 {
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
190 btmp = -btmp;
1655
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
191
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
192 int info;
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
193 double rcond = 0.0;
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
194
1656
5a8ad3d12304 [project @ 1995-12-20 10:58:39 by jwe]
jwe
parents: 1655
diff changeset
195 atmp = a.inverse (info, rcond, 1);
1655
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
196
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
197 if (info == -1)
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
198 warning ("inverse: matrix singular to machine\
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
199 precision, rcond = %g", rcond);
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
200 }
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
201 else
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
202 atmp = a;
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
203
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
204 Matrix result (atmp);
3178
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
205
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
206 btmp--;
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
207
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
208 while (btmp > 0)
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
209 {
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
210 if (btmp & 1)
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
211 result = result * atmp;
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
212
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
213 btmp >>= 1;
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
214
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
215 if (btmp > 0)
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
216 atmp = atmp * atmp;
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
217 }
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
218
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
219 retval = result;
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
220 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
221 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
222 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
223 {
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
224 EIG a_eig (a);
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
225 ComplexColumnVector lambda (a_eig.eigenvalues ());
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
226 ComplexMatrix Q (a_eig.eigenvectors ());
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
227
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
228 for (int i = 0; i < nr; i++)
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
229 lambda (i) = pow (lambda (i), b);
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
230
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
231 ComplexDiagMatrix D (lambda);
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
232
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
233 retval = ComplexMatrix (Q * D * Q.inverse ());
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
234 }
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
235 }
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
236
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
237 return retval;
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
238 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
239
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
240 // -*- 6 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
241 octave_value
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
242 xpow (const Matrix& a, const Complex& b)
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
243 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
244 octave_value retval;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
245
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
246 int nr = a.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
247 int nc = a.cols ();
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
248
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
249 if (nr == 0 || nc == 0 || nr != nc)
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
250 error ("for A^b, A must be square");
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
251 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
252 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
253 EIG a_eig (a);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
254 ComplexColumnVector lambda (a_eig.eigenvalues ());
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
255 ComplexMatrix Q (a_eig.eigenvectors ());
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
256
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
257 for (int i = 0; i < nr; i++)
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
258 lambda (i) = pow (lambda (i), b);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
259
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
260 ComplexDiagMatrix D (lambda);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
261
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
262 retval = ComplexMatrix (Q * D * Q.inverse ());
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
263 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
264
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
265 return retval;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
266 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
267
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
268 // -*- 7 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
269 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
270 xpow (const Complex& a, double b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
271 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
272 Complex result;
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
273
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
274 if (xisint (b))
2800
9aeba8e006a4 [project @ 1997-03-09 09:50:20 by jwe]
jwe
parents: 2365
diff changeset
275 result = pow (a, static_cast<int> (b));
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
276 else
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
277 result = pow (a, b);
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
278
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
279 return result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
280 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
281
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
282 // -*- 8 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
283 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
284 xpow (const Complex& a, const Matrix& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
285 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
286 octave_value retval;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
287
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
288 int nr = b.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
289 int nc = b.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
290
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
291 if (nr == 0 || nc == 0 || nr != nc)
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
292 error ("for x^A, A must be square");
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
293 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
294 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
295 EIG b_eig (b);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
296 ComplexColumnVector lambda (b_eig.eigenvalues ());
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
297 ComplexMatrix Q (b_eig.eigenvectors ());
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
298
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
299 for (int i = 0; i < nr; i++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
300 {
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
301 Complex elt = lambda (i);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
302 if (imag (elt) == 0.0)
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
303 lambda (i) = pow (a, real (elt));
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
304 else
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
305 lambda (i) = pow (a, elt);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
306 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
307 ComplexDiagMatrix D (lambda);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
308
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
309 retval = ComplexMatrix (Q * D * Q.inverse ());
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
310 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
311
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
312 return retval;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
313 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
314
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
315 // -*- 9 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
316 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
317 xpow (const Complex& a, const Complex& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
318 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
319 Complex result;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
320 result = pow (a, b);
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
321 return result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
322 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
323
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
324 // -*- 10 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
325 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
326 xpow (const Complex& a, const ComplexMatrix& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
327 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
328 octave_value retval;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
329
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
330 int nr = b.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
331 int nc = b.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
332
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
333 if (nr == 0 || nc == 0 || nr != nc)
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
334 error ("for x^A, A must be square");
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
335 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
336 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
337 EIG b_eig (b);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
338 ComplexColumnVector lambda (b_eig.eigenvalues ());
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
339 ComplexMatrix Q (b_eig.eigenvectors ());
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
340
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
341 for (int i = 0; i < nr; i++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
342 {
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
343 Complex elt = lambda (i);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
344 if (imag (elt) == 0.0)
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
345 lambda (i) = pow (a, real (elt));
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
346 else
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
347 lambda (i) = pow (a, elt);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
348 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
349 ComplexDiagMatrix D (lambda);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
350
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
351 retval = ComplexMatrix (Q * D * Q.inverse ());
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
352 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
353
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
354 return retval;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
355 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
356
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
357 // -*- 11 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
358 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
359 xpow (const ComplexMatrix& a, double b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
360 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
361 octave_value retval;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
362
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
363 int nr = a.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
364 int nc = a.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
365
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
366 if (nr == 0 || nc == 0 || nr != nc)
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
367 error ("for A^b, A must be square");
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
368 else
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
369 {
2800
9aeba8e006a4 [project @ 1997-03-09 09:50:20 by jwe]
jwe
parents: 2365
diff changeset
370 if (static_cast<int> (b) == b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
371 {
2804
eedc2f3f61f7 [project @ 1997-03-11 04:34:50 by jwe]
jwe
parents: 2800
diff changeset
372 int btmp = static_cast<int> (b);
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
373 if (btmp == 0)
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
374 {
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
375 retval = DiagMatrix (nr, nr, 1.0);
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
376 }
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
377 else
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
378 {
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
379 // Too much copying?
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
380 // XXX FIXME XXX -- we shouldn't do this if the exponent is
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
381 // large...
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
382
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
383 ComplexMatrix atmp;
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
384 if (btmp < 0)
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
385 {
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
386 btmp = -btmp;
1655
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
387
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
388 int info;
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
389 double rcond = 0.0;
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
390
1656
5a8ad3d12304 [project @ 1995-12-20 10:58:39 by jwe]
jwe
parents: 1655
diff changeset
391 atmp = a.inverse (info, rcond, 1);
1655
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
392
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
393 if (info == -1)
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
394 warning ("inverse: matrix singular to machine\
593fff2e7e39 [project @ 1995-12-20 10:50:16 by jwe]
jwe
parents: 1651
diff changeset
395 precision, rcond = %g", rcond);
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
396 }
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
397 else
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
398 atmp = a;
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
399
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
400 ComplexMatrix result (atmp);
3178
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
401
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
402 btmp--;
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
403
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
404 while (btmp > 0)
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
405 {
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
406 if (btmp & 1)
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
407 result = result * atmp;
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
408
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
409 btmp >>= 1;
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
410
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
411 if (btmp > 0)
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
412 atmp = atmp * atmp;
09a3064a3a17 [project @ 1998-06-23 03:46:42 by jwe]
jwe
parents: 3162
diff changeset
413 }
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
414
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
415 retval = result;
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
416 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
417 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
418 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
419 {
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
420 EIG a_eig (a);
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
421 ComplexColumnVector lambda (a_eig.eigenvalues ());
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
422 ComplexMatrix Q (a_eig.eigenvectors ());
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
423
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
424 for (int i = 0; i < nr; i++)
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
425 lambda (i) = pow (lambda (i), b);
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
426
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
427 ComplexDiagMatrix D (lambda);
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
428
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
429 retval = ComplexMatrix (Q * D * Q.inverse ());
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
430 }
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
431 }
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
432
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
433 return retval;
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
434 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
435
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
436 // -*- 12 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
437 octave_value
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
438 xpow (const ComplexMatrix& a, const Complex& b)
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
439 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
440 octave_value retval;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
441
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
442 int nr = a.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
443 int nc = a.cols ();
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
444
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
445 if (nr == 0 || nc == 0 || nr != nc)
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
446 error ("for A^b, A must be square");
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
447 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
448 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
449 EIG a_eig (a);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
450 ComplexColumnVector lambda (a_eig.eigenvalues ());
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
451 ComplexMatrix Q (a_eig.eigenvectors ());
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
452
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
453 for (int i = 0; i < nr; i++)
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
454 lambda (i) = pow (lambda (i), b);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
455
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
456 ComplexDiagMatrix D (lambda);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
457
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
458 retval = ComplexMatrix (Q * D * Q.inverse ());
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
459 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
460
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
461 return retval;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
462 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
463
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
464 // Safer pow functions that work elementwise for matrices.
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
465 //
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
466 // op2 \ op1: s m cs cm
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
467 // +-- +---+---+----+----+
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
468 // scalar | | * | 3 | * | 9 |
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
469 // +---+---+----+----+
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
470 // matrix | 1 | 4 | 7 | 10 |
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
471 // +---+---+----+----+
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
472 // complex_scalar | * | 5 | * | 11 |
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
473 // +---+---+----+----+
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
474 // complex_matrix | 2 | 6 | 8 | 12 |
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
475 // +---+---+----+----+
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
476 //
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
477 // * -> not needed.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
478
3162
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
479 // XXX FIXME XXX -- these functions need to be fixed so that things
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
480 // like
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
481 //
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
482 // a = -1; b = [ 0, 0.5, 1 ]; r = a .^ b
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
483 //
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
484 // and
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
485 //
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
486 // a = -1; b = [ 0, 0.5, 1 ]; for i = 1:3, r(i) = a .^ b(i), end
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
487 //
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
488 // produce identical results. Also, it would be nice if -1^0.5
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
489 // produced a pure imaginary result instead of a complex number with a
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
490 // small real part. But perhaps that's really a problem with the math
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
491 // library...
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
492
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
493 // -*- 1 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
494 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
495 elem_xpow (double a, const Matrix& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
496 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
497 octave_value retval;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
498
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
499 int nr = b.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
500 int nc = b.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
501
3162
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
502 double d1, d2;
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
503
3162
7c96e85c76db [project @ 1998-04-08 18:19:35 by jwe]
jwe
parents: 3125
diff changeset
504 if (a < 0.0 && ! b.all_integers (d1, d2))
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
505 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
506 Complex atmp (a);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
507 ComplexMatrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
508 for (int j = 0; j < nc; j++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
509 for (int i = 0; i < nr; i++)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
510 {
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
511 OCTAVE_QUIT;
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
512 result (i, j) = pow (atmp, b (i, j));
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
513 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
514
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
515 retval = result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
516 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
517 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
518 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
519 Matrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
520 for (int j = 0; j < nc; j++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
521 for (int i = 0; i < nr; i++)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
522 {
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
523 OCTAVE_QUIT;
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
524 result (i, j) = pow (a, b (i, j));
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
525 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
526
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
527 retval = result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
528 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
529
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
530 return retval;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
531 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
532
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
533 // -*- 2 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
534 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
535 elem_xpow (double a, const ComplexMatrix& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
536 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
537 int nr = b.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
538 int nc = b.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
539
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
540 ComplexMatrix result (nr, nc);
3125
dcc6c985d72d [project @ 1998-01-16 05:08:21 by jwe]
jwe
parents: 2847
diff changeset
541 Complex atmp (a);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
542 for (int j = 0; j < nc; j++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
543 for (int i = 0; i < nr; i++)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
544 {
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
545 OCTAVE_QUIT;
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
546 result (i, j) = pow (atmp, b (i, j));
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
547 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
548
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
549 return result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
550 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
551
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
552 // -*- 3 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
553 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
554 elem_xpow (const Matrix& a, double b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
555 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
556 octave_value retval;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
557
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
558 int nr = a.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
559 int nc = a.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
560
2800
9aeba8e006a4 [project @ 1997-03-09 09:50:20 by jwe]
jwe
parents: 2365
diff changeset
561 if (static_cast<int> (b) != b && a.any_element_is_negative ())
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
562 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
563 ComplexMatrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
564 for (int j = 0; j < nc; j++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
565 for (int i = 0; i < nr; i++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
566 {
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
567 OCTAVE_QUIT;
4790
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
568
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
569 // XXX FIXME XXX -- avoid apparent GNU libm bug by
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
570 // converting A and B to complex instead of just A.
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
571
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
572 Complex atmp (a (i, j));
4790
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
573 Complex btmp (b);
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
574
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
575 result (i, j) = pow (atmp, btmp);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
576 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
577
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
578 retval = result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
579 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
580 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
581 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
582 Matrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
583 for (int j = 0; j < nc; j++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
584 for (int i = 0; i < nr; i++)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
585 {
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
586 OCTAVE_QUIT;
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
587 result (i, j) = pow (a (i, j), b);
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
588 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
589
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
590 retval = result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
591 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
592
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
593 return retval;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
594 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
595
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
596 // -*- 4 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
597 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
598 elem_xpow (const Matrix& a, const Matrix& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
599 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
600 octave_value retval;
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
601
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
602 int nr = a.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
603 int nc = a.cols ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
604
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
605 int b_nr = b.rows ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
606 int b_nc = b.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
607
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
608 if (nr != b_nr || nc != b_nc)
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
609 {
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
610 gripe_nonconformant ("operator .^", nr, nc, b_nr, b_nc);
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
611 return octave_value ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
612 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
613
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
614 int convert_to_complex = 0;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
615 for (int j = 0; j < nc; j++)
1321
64819a909ed7 [project @ 1995-08-22 05:39:43 by jwe]
jwe
parents: 1315
diff changeset
616 for (int i = 0; i < nr; i++)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
617 {
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
618 OCTAVE_QUIT;
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
619 double atmp = a (i, j);
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
620 double btmp = b (i, j);
2800
9aeba8e006a4 [project @ 1997-03-09 09:50:20 by jwe]
jwe
parents: 2365
diff changeset
621 if (atmp < 0.0 && static_cast<int> (btmp) != btmp)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
622 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
623 convert_to_complex = 1;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
624 goto done;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
625 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
626 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
627
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
628 done:
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
629
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
630 if (convert_to_complex)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
631 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
632 ComplexMatrix complex_result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
633
1321
64819a909ed7 [project @ 1995-08-22 05:39:43 by jwe]
jwe
parents: 1315
diff changeset
634 for (int j = 0; j < nc; j++)
64819a909ed7 [project @ 1995-08-22 05:39:43 by jwe]
jwe
parents: 1315
diff changeset
635 for (int i = 0; i < nr; i++)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
636 {
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
637 OCTAVE_QUIT;
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
638 Complex atmp (a (i, j));
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
639 Complex btmp (b (i, j));
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
640 complex_result (i, j) = pow (atmp, btmp);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
641 }
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
642
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
643 retval = complex_result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
644 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
645 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
646 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
647 Matrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
648
1321
64819a909ed7 [project @ 1995-08-22 05:39:43 by jwe]
jwe
parents: 1315
diff changeset
649 for (int j = 0; j < nc; j++)
64819a909ed7 [project @ 1995-08-22 05:39:43 by jwe]
jwe
parents: 1315
diff changeset
650 for (int i = 0; i < nr; i++)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
651 {
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
652 OCTAVE_QUIT;
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
653 result (i, j) = pow (a (i, j), b (i, j));
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
654 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
655
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
656 retval = result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
657 }
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
658
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
659 return retval;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
660 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
661
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
662 // -*- 5 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
663 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
664 elem_xpow (const Matrix& a, const Complex& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
665 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
666 int nr = a.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
667 int nc = a.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
668
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
669 ComplexMatrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
670 for (int j = 0; j < nc; j++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
671 for (int i = 0; i < nr; i++)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
672 {
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
673 OCTAVE_QUIT;
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
674 result (i, j) = pow (Complex (a (i, j)), b);
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
675 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
676
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
677 return result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
678 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
679
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
680 // -*- 6 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
681 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
682 elem_xpow (const Matrix& a, const ComplexMatrix& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
683 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
684 int nr = a.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
685 int nc = a.cols ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
686
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
687 int b_nr = b.rows ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
688 int b_nc = b.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
689
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
690 if (nr != b_nr || nc != b_nc)
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
691 {
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
692 gripe_nonconformant ("operator .^", nr, nc, b_nr, b_nc);
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
693 return octave_value ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
694 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
695
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
696 ComplexMatrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
697 for (int j = 0; j < nc; j++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
698 for (int i = 0; i < nr; i++)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
699 {
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
700 OCTAVE_QUIT;
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
701 result (i, j) = pow (Complex (a (i, j)), b (i, j));
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
702 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
703
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
704 return result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
705 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
706
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
707 // -*- 7 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
708 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
709 elem_xpow (const Complex& a, const Matrix& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
710 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
711 int nr = b.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
712 int nc = b.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
713
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
714 ComplexMatrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
715 for (int j = 0; j < nc; j++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
716 for (int i = 0; i < nr; i++)
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
717 {
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
718 OCTAVE_QUIT;
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
719 double btmp = b (i, j);
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
720 if (xisint (btmp))
2800
9aeba8e006a4 [project @ 1997-03-09 09:50:20 by jwe]
jwe
parents: 2365
diff changeset
721 result (i, j) = pow (a, static_cast<int> (btmp));
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
722 else
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
723 result (i, j) = pow (a, btmp);
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
724 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
725
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
726 return result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
727 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
728
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
729 // -*- 8 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
730 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
731 elem_xpow (const Complex& a, const ComplexMatrix& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
732 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
733 int nr = b.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
734 int nc = b.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
735
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
736 ComplexMatrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
737 for (int j = 0; j < nc; j++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
738 for (int i = 0; i < nr; i++)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
739 {
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
740 OCTAVE_QUIT;
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
741 result (i, j) = pow (a, b (i, j));
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
742 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
743
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
744 return result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
745 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
746
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
747 // -*- 9 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
748 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
749 elem_xpow (const ComplexMatrix& a, double b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
750 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
751 int nr = a.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
752 int nc = a.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
753
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
754 ComplexMatrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
755
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
756 if (xisint (b))
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
757 {
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
758 for (int j = 0; j < nc; j++)
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
759 for (int i = 0; i < nr; i++)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
760 {
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
761 OCTAVE_QUIT;
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
762 result (i, j) = pow (a (i, j), static_cast<int> (b));
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
763 }
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
764 }
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
765 else
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
766 {
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
767 for (int j = 0; j < nc; j++)
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
768 for (int i = 0; i < nr; i++)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
769 {
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
770 OCTAVE_QUIT;
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
771 result (i, j) = pow (a (i, j), b);
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
772 }
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
773 }
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
774
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
775 return result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
776 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
777
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
778 // -*- 10 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
779 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
780 elem_xpow (const ComplexMatrix& a, const Matrix& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
781 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
782 int nr = a.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
783 int nc = a.cols ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
784
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
785 int b_nr = b.rows ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
786 int b_nc = b.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
787
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
788 if (nr != b_nr || nc != b_nc)
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
789 {
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
790 gripe_nonconformant ("operator .^", nr, nc, b_nr, b_nc);
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
791 return octave_value ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
792 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
793
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
794 ComplexMatrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
795 for (int j = 0; j < nc; j++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
796 for (int i = 0; i < nr; i++)
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
797 {
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
798 OCTAVE_QUIT;
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
799 double btmp = b (i, j);
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
800 if (xisint (btmp))
2800
9aeba8e006a4 [project @ 1997-03-09 09:50:20 by jwe]
jwe
parents: 2365
diff changeset
801 result (i, j) = pow (a (i, j), static_cast<int> (btmp));
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
802 else
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2086
diff changeset
803 result (i, j) = pow (a (i, j), btmp);
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
804 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
805
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
806 return result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
807 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
808
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
809 // -*- 11 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
810 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
811 elem_xpow (const ComplexMatrix& a, const Complex& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
812 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
813 int nr = a.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
814 int nc = a.cols ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
815
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
816 ComplexMatrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
817 for (int j = 0; j < nc; j++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
818 for (int i = 0; i < nr; i++)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
819 {
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
820 OCTAVE_QUIT;
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
821 result (i, j) = pow (a (i, j), b);
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
822 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
823
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
824 return result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
825 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
826
767
42731861ee09 [project @ 1994-10-05 21:26:54 by jwe]
jwe
parents: 453
diff changeset
827 // -*- 12 -*-
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
828 octave_value
164
e2c950dd96d2 [project @ 1993-10-18 19:32:00 by jwe]
jwe
parents: 1
diff changeset
829 elem_xpow (const ComplexMatrix& a, const ComplexMatrix& b)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
830 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
831 int nr = a.rows ();
2365
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
832 int nc = a.cols ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
833
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
834 int b_nr = b.rows ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
835 int b_nc = b.cols ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
836
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
837 if (nr != b_nr || nc != b_nc)
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
838 {
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
839 gripe_nonconformant ("operator .^", nr, nc, b_nr, b_nc);
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
840 return octave_value ();
7c60f8a6e6a0 [project @ 1996-10-11 23:03:52 by jwe]
jwe
parents: 2305
diff changeset
841 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
842
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
843 ComplexMatrix result (nr, nc);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
844 for (int j = 0; j < nc; j++)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
845 for (int i = 0; i < nr; i++)
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
846 {
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
847 OCTAVE_QUIT;
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
848 result (i, j) = pow (a (i, j), b (i, j));
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 4055
diff changeset
849 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
850
1567
1da33230f424 [project @ 1995-10-18 00:47:12 by jwe]
jwe
parents: 1358
diff changeset
851 return result;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
852 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
853
4543
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
854 // Safer pow functions that work elementwise for N-d arrays.
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
855 //
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
856 // op2 \ op1: s nd cs cnd
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
857 // +-- +---+---+----+----+
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
858 // scalar | | * | 3 | * | 9 |
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
859 // +---+---+----+----+
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
860 // N_d | 1 | 4 | 7 | 10 |
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
861 // +---+---+----+----+
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
862 // complex_scalar | * | 5 | * | 11 |
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
863 // +---+---+----+----+
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
864 // complex_N_d | 2 | 6 | 8 | 12 |
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
865 // +---+---+----+----+
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
866 //
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
867 // * -> not needed.
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
868
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
869 // XXX FIXME XXX -- these functions need to be fixed so that things
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
870 // like
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
871 //
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
872 // a = -1; b = [ 0, 0.5, 1 ]; r = a .^ b
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
873 //
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
874 // and
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
875 //
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
876 // a = -1; b = [ 0, 0.5, 1 ]; for i = 1:3, r(i) = a .^ b(i), end
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
877 //
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
878 // produce identical results. Also, it would be nice if -1^0.5
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
879 // produced a pure imaginary result instead of a complex number with a
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
880 // small real part. But perhaps that's really a problem with the math
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
881 // library...
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
882
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
883 // -*- 1 -*-
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
884 octave_value
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
885 elem_xpow (double a, const NDArray& b)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
886 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
887 octave_value retval;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
888
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
889 double d1, d2;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
890
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
891 if (a < 0.0 && ! b.all_integers (d1, d2))
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
892 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
893 Complex atmp (a);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
894 ComplexNDArray result (b.dims ());
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
895 for (int i = 0; i < b.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
896 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
897 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
898 result(i) = pow (atmp, b(i));
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
899 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
900
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
901 retval = result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
902 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
903 else
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
904 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
905 NDArray result (b.dims ());
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
906 for (int i = 0; i < b.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
907 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
908 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
909 result (i) = pow (a, b(i));
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
910 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
911
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
912 retval = result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
913 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
914
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
915 return retval;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
916 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
917
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
918 // -*- 2 -*-
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
919 octave_value
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
920 elem_xpow (double a, const ComplexNDArray& b)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
921 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
922 ComplexNDArray result (b.dims ());
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
923 Complex atmp (a);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
924 for (int i = 0; i < b.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
925 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
926 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
927 result(i) = pow (atmp, b(i));
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
928 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
929
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
930 return result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
931 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
932
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
933 // -*- 3 -*-
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
934 octave_value
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
935 elem_xpow (const NDArray& a, double b)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
936 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
937 octave_value retval;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
938
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
939 if (static_cast<int> (b) != b && a.any_element_is_negative ())
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
940 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
941 ComplexNDArray result (a.dims ());
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
942
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
943 for (int i = 0; i < a.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
944 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
945 OCTAVE_QUIT;
4790
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
946
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
947 // XXX FIXME XXX -- avoid apparent GNU libm bug by
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
948 // converting A and B to complex instead of just A.
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
949
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
950 Complex atmp (a (i));
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
951 Complex btmp (b);
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
952
91a84c9bdadb [project @ 2004-02-19 20:15:17 by jwe]
jwe
parents: 4682
diff changeset
953 result(i) = pow (atmp, btmp);
4543
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
954 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
955
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
956 retval = result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
957 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
958 else
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
959 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
960 NDArray result (a.dims ());
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
961
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
962 for (int i = 0; i < a.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
963 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
964 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
965 result(i) = pow (a(i), b);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
966 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
967
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
968 retval = result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
969 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
970
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
971 return retval;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
972 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
973
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
974 // -*- 4 -*-
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
975 octave_value
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
976 elem_xpow (const NDArray& a, const NDArray& b)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
977 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
978 octave_value retval;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
979
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
980 dim_vector a_dims = a.dims ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
981 dim_vector b_dims = b.dims ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
982
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
983 if (a_dims != b_dims)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
984 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
985 gripe_nonconformant ("operator .^", a_dims, b_dims);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
986 return octave_value ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
987 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
988
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
989 int len = a.length ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
990
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
991 bool convert_to_complex = false;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
992
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
993 for (int i = 0; i < len; i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
994 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
995 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
996 double atmp = a(i);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
997 double btmp = b(i);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
998 if (atmp < 0.0 && static_cast<int> (btmp) != btmp)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
999 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1000 convert_to_complex = true;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1001 goto done;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1002 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1003 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1004
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1005 done:
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1006
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1007 if (convert_to_complex)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1008 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1009 ComplexNDArray complex_result (a_dims);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1010
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1011 for (int i = 0; i < len; i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1012 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1013 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1014 Complex atmp (a(i));
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1015 Complex btmp (b(i));
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1016 complex_result(i) = pow (atmp, btmp);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1017 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1018
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1019 retval = complex_result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1020 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1021 else
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1022 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1023 NDArray result (a_dims);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1024
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1025 for (int i = 0; i < len; i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1026 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1027 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1028 result(i) = pow (a(i), b(i));
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1029 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1030
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1031 retval = result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1032 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1033
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1034 return retval;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1035 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1036
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1037 // -*- 5 -*-
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1038 octave_value
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1039 elem_xpow (const NDArray& a, const Complex& b)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1040 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1041 ComplexNDArray result (a.dims ());
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1042
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1043 for (int i = 0; i < a.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1044 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1045 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1046 result(i) = pow (Complex (a(i)), b);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1047 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1048
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1049 return result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1050 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1051
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1052 // -*- 6 -*-
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1053 octave_value
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1054 elem_xpow (const NDArray& a, const ComplexNDArray& b)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1055 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1056 dim_vector a_dims = a.dims ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1057 dim_vector b_dims = b.dims ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1058
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1059 if (a_dims != b_dims)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1060 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1061 gripe_nonconformant ("operator .^", a_dims, b_dims);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1062 return octave_value ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1063 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1064
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1065 ComplexNDArray result (a_dims);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1066 for (int i = 0; i < a.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1067 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1068 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1069 result(i) = pow (Complex (a(i)), b(i));
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1070 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1071
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1072 return result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1073 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1074
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1075 // -*- 7 -*-
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1076 octave_value
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1077 elem_xpow (const Complex& a, const NDArray& b)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1078 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1079 ComplexNDArray result (b.dims ());
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1080 for (int i = 0; i < b.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1081 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1082 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1083 double btmp = b(i);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1084 if (xisint (btmp))
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1085 result(i) = pow (a, static_cast<int> (btmp));
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1086 else
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1087 result(i) = pow (a, btmp);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1088 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1089
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1090 return result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1091 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1092
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1093 // -*- 8 -*-
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1094 octave_value
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1095 elem_xpow (const Complex& a, const ComplexNDArray& b)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1096 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1097 ComplexNDArray result (b.dims ());
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1098 for (int i = 0; i < b.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1099 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1100 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1101 result(i) = pow (a, b(i));
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1102 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1103
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1104 return result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1105 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1106
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1107 // -*- 9 -*-
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1108 octave_value
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1109 elem_xpow (const ComplexNDArray& a, double b)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1110 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1111 ComplexNDArray result (a.dims ());
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1112
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1113 if (xisint (b))
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1114 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1115 for (int i = 0; i < a.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1116 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1117 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1118 result(i) = pow (a(i), static_cast<int> (b));
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1119 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1120 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1121 else
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1122 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1123 for (int i = 0; i < a.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1124 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1125 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1126 result(i) = pow (a(i), b);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1127 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1128 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1129
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1130 return result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1131 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1132
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1133 // -*- 10 -*-
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1134 octave_value
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1135 elem_xpow (const ComplexNDArray& a, const NDArray& b)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1136 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1137 dim_vector a_dims = a.dims ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1138 dim_vector b_dims = b.dims ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1139
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1140 if (a_dims != b_dims)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1141 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1142 gripe_nonconformant ("operator .^", a_dims, b_dims);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1143 return octave_value ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1144 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1145
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1146 ComplexNDArray result (a_dims);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1147 for (int i = 0; i < a.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1148 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1149 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1150 double btmp = b(i);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1151 if (xisint (btmp))
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1152 result(i) = pow (a(i), static_cast<int> (btmp));
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1153 else
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1154 result(i) = pow (a(i), btmp);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1155 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1156
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1157 return result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1158 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1159
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1160 // -*- 11 -*-
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1161 octave_value
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1162 elem_xpow (const ComplexNDArray& a, const Complex& b)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1163 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1164 ComplexNDArray result (a.dims ());
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1165 for (int i = 0; i < a.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1166 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1167 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1168 result(i) = pow (a(i), b);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1169 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1170
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1171 return result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1172 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1173
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1174 // -*- 12 -*-
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1175 octave_value
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1176 elem_xpow (const ComplexNDArray& a, const ComplexNDArray& b)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1177 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1178 dim_vector a_dims = a.dims ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1179 dim_vector b_dims = b.dims ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1180
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1181 if (a_dims != b_dims)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1182 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1183 gripe_nonconformant ("operator .^", a_dims, b_dims);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1184 return octave_value ();
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1185 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1186
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1187 ComplexNDArray result (a_dims);
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1188 for (int i = 0; i < a.length (); i++)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1189 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1190 OCTAVE_QUIT;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1191 result(i) = pow (a(i), b(i));
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1192 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1193
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1194 return result;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1195 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4153
diff changeset
1196
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1197 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1198 ;;; Local Variables: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1199 ;;; mode: C++ ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1200 ;;; End: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1201 */