annotate src/minmax.cc @ 1342:61bb2bdee11e

[project @ 1995-09-04 00:19:22 by jwe]
author jwe
date Mon, 04 Sep 1995 00:24:09 +0000
parents 611d403c7f3d
children 19c10b8657d5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
1 // f-minmax.cc -*- C++ -*-
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
2 /*
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
3
1009
dfe01093f657 [project @ 1995-01-04 04:05:12 by jwe]
jwe
parents: 891
diff changeset
4 Copyright (C) 1994, 1995 John W. Eaton
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
5
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
6 This file is part of Octave.
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
7
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
8 Octave is free software; you can redistribute it and/or modify it
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
10 Free Software Foundation; either version 2, or (at your option) any
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
11 later version.
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
12
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
13 Octave is distributed in the hope that it will be useful, but WITHOUT
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
16 for more details.
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
17
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
19 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
20 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
21
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
22 */
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
23
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
24 #ifdef HAVE_CONFIG_H
1192
b6360f2d4fa6 [project @ 1995-03-30 21:38:35 by jwe]
jwe
parents: 1009
diff changeset
25 #include <config.h>
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
26 #endif
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
27
1342
61bb2bdee11e [project @ 1995-09-04 00:19:22 by jwe]
jwe
parents: 1315
diff changeset
28 #include <cmath>
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
29
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
30 #include "tree-const.h"
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
31 #include "error.h"
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 712
diff changeset
32 #include "gripes.h"
544
20fbad23ae51 [project @ 1994-07-22 05:04:44 by jwe]
jwe
parents: 519
diff changeset
33 #include "help.h"
519
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
34 #include "defun-dld.h"
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
35
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
36 #ifndef MAX
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
37 #define MAX(a,b) ((a) > (b) ? (a) : (b))
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
38 #endif
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
39
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
40 #ifndef MIN
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
41 #define MIN(a,b) ((a) < (b) ? (a) : (b))
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
42 #endif
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
43
891
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
44 // XXX FIXME XXX -- it would be nice to share code among the min/max
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
45 // functions below.
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
46
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
47 static Matrix
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
48 min (double d, const Matrix& m)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
49 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
50 int nr = m.rows ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
51 int nc = m.columns ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
52
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
53 Matrix result (nr, nc);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
54
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
55 for (int j = 0; j < nc; j++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
56 for (int i = 0; i < nr; i++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
57 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
58 double m_elem = m.elem (i, j);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
59 result.elem (i, j) = MIN (d, m_elem);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
60 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
61
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
62 return result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
63 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
64
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
65 static Matrix
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
66 min (const Matrix& m, double d)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
67 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
68 int nr = m.rows ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
69 int nc = m.columns ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
70
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
71 Matrix result (nr, nc);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
72
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
73 for (int j = 0; j < nc; j++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
74 for (int i = 0; i < nr; i++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
75 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
76 double m_elem = m.elem (i, j);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
77 result.elem (i, j) = MIN (m_elem, d);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
78 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
79
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
80 return result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
81 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
82
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
83 static ComplexMatrix
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
84 min (const Complex& c, const ComplexMatrix& m)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
85 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
86 int nr = m.rows ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
87 int nc = m.columns ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
88
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
89 ComplexMatrix result (nr, nc);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
90
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
91 double abs_c = abs (c);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
92
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
93 for (int j = 0; j < nc; j++)
891
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
94 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
95 for (int i = 0; i < nr; i++)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
96 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
97 double abs_m_elem = abs (m.elem (i, j));
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
98 if (abs_c < abs_m_elem)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
99 result.elem (i, j) = c;
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
100 else
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
101 result.elem (i, j) = m.elem (i, j);
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
102 }
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
103 }
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
104
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
105 return result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
106 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
107
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
108 static ComplexMatrix
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
109 min (const ComplexMatrix& m, const Complex& c)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
110 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
111 int nr = m.rows ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
112 int nc = m.columns ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
113
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
114 ComplexMatrix result (nr, nc);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
115
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
116 double abs_c = abs (c);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
117
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
118 for (int j = 0; j < nc; j++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
119 for (int i = 0; i < nr; i++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
120 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
121 double abs_m_elem = abs (m.elem (i, j));
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
122 if (abs_m_elem < abs_c)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
123 result.elem (i, j) = m.elem (i, j);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
124 else
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
125 result.elem (i, j) = c;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
126 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
127
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
128 return result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
129 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
130
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
131 static Matrix
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
132 min (const Matrix& a, const Matrix& b)
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
133 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
134 int nr = a.rows ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
135 int nc = a.columns ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
136 if (nr != b.rows () || nc != b.columns ())
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
137 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
138 error ("two-arg min expecting args of same size");
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
139 return Matrix ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
140 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
141
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
142 Matrix result (nr, nc);
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
143
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
144 for (int j = 0; j < nc; j++)
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
145 for (int i = 0; i < nr; i++)
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
146 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
147 double a_elem = a.elem (i, j);
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
148 double b_elem = b.elem (i, j);
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
149 result.elem (i, j) = MIN (a_elem, b_elem);
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
150 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
151
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
152 return result;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
153 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
154
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
155 static ComplexMatrix
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
156 min (const ComplexMatrix& a, const ComplexMatrix& b)
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
157 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
158 int nr = a.rows ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
159 int nc = a.columns ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
160 if (nr != b.rows () || nc != b.columns ())
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
161 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
162 error ("two-arg min expecting args of same size");
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
163 return ComplexMatrix ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
164 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
165
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
166 ComplexMatrix result (nr, nc);
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
167
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
168 for (int j = 0; j < nc; j++)
891
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
169 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
170 int columns_are_real_only = 1;
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
171 for (int i = 0; i < nr; i++)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
172 if (imag (a.elem (i, j)) != 0.0 && imag (b.elem (i, j)) != 0.0)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
173 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
174 columns_are_real_only = 0;
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
175 break;
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
176 }
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
177
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
178 if (columns_are_real_only)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
179 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
180 for (int i = 0; i < nr; i++)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
181 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
182 double a_elem = real (a.elem (i, j));
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
183 double b_elem = real (b.elem (i, j));
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
184 if (a_elem < b_elem)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
185 result.elem (i, j) = a_elem;
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
186 else
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
187 result.elem (i, j) = b_elem;
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
188 }
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
189 }
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
190 else
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
191 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
192 for (int i = 0; i < nr; i++)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
193 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
194 double abs_a_elem = abs (a.elem (i, j));
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
195 double abs_b_elem = abs (b.elem (i, j));
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
196 if (abs_a_elem < abs_b_elem)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
197 result.elem (i, j) = a.elem (i, j);
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
198 else
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
199 result.elem (i, j) = b.elem (i, j);
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
200 }
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
201 }
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
202 }
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
203
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
204 return result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
205 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
206
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
207 static Matrix
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
208 max (double d, const Matrix& m)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
209 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
210 int nr = m.rows ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
211 int nc = m.columns ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
212
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
213 Matrix result (nr, nc);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
214
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
215 for (int j = 0; j < nc; j++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
216 for (int i = 0; i < nr; i++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
217 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
218 double m_elem = m.elem (i, j);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
219 result.elem (i, j) = MAX (d, m_elem);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
220 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
221
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
222 return result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
223 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
224
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
225 static Matrix
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
226 max (const Matrix& m, double d)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
227 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
228 int nr = m.rows ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
229 int nc = m.columns ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
230
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
231 Matrix result (nr, nc);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
232
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
233 for (int j = 0; j < nc; j++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
234 for (int i = 0; i < nr; i++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
235 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
236 double m_elem = m.elem (i, j);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
237 result.elem (i, j) = MAX (m_elem, d);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
238 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
239
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
240 return result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
241 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
242
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
243 static ComplexMatrix
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
244 max (const Complex& c, const ComplexMatrix& m)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
245 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
246 int nr = m.rows ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
247 int nc = m.columns ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
248
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
249 ComplexMatrix result (nr, nc);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
250
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
251 double abs_c = abs (c);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
252
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
253 for (int j = 0; j < nc; j++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
254 for (int i = 0; i < nr; i++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
255 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
256 double abs_m_elem = abs (m.elem (i, j));
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
257 if (abs_c > abs_m_elem)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
258 result.elem (i, j) = c;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
259 else
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
260 result.elem (i, j) = m.elem (i, j);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
261 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
262
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
263 return result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
264 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
265
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
266 static ComplexMatrix
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
267 max (const ComplexMatrix& m, const Complex& c)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
268 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
269 int nr = m.rows ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
270 int nc = m.columns ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
271
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
272 ComplexMatrix result (nr, nc);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
273
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
274 double abs_c = abs (c);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
275
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
276 for (int j = 0; j < nc; j++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
277 for (int i = 0; i < nr; i++)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
278 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
279 double abs_m_elem = abs (m.elem (i, j));
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
280 if (abs_m_elem > abs_c)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
281 result.elem (i, j) = m.elem (i, j);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
282 else
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
283 result.elem (i, j) = c;
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
284 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
285
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
286 return result;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
287 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
288
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
289 static Matrix
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
290 max (const Matrix& a, const Matrix& b)
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
291 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
292 int nr = a.rows ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
293 int nc = a.columns ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
294 if (nr != b.rows () || nc != b.columns ())
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
295 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
296 error ("two-arg max expecting args of same size");
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
297 return Matrix ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
298 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
299
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
300 Matrix result (nr, nc);
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
301
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
302 for (int j = 0; j < nc; j++)
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
303 for (int i = 0; i < nr; i++)
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
304 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
305 double a_elem = a.elem (i, j);
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
306 double b_elem = b.elem (i, j);
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
307 result.elem (i, j) = MAX (a_elem, b_elem);
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
308 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
309
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
310 return result;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
311 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
312
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
313 static ComplexMatrix
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
314 max (const ComplexMatrix& a, const ComplexMatrix& b)
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
315 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
316 int nr = a.rows ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
317 int nc = a.columns ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
318 if (nr != b.rows () || nc != b.columns ())
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
319 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
320 error ("two-arg max expecting args of same size");
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
321 return ComplexMatrix ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
322 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
323
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
324 ComplexMatrix result (nr, nc);
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
325
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
326 for (int j = 0; j < nc; j++)
891
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
327 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
328 int columns_are_real_only = 1;
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
329 for (int i = 0; i < nr; i++)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
330 if (imag (a.elem (i, j)) != 0.0 && imag (b.elem (i, j)) != 0.0)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
331 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
332 columns_are_real_only = 0;
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
333 break;
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
334 }
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
335
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
336 if (columns_are_real_only)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
337 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
338 for (int i = 0; i < nr; i++)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
339 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
340 double a_elem = real (a.elem (i, j));
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
341 double b_elem = real (b.elem (i, j));
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
342 if (a_elem > b_elem)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
343 result.elem (i, j) = a_elem;
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
344 else
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
345 result.elem (i, j) = b_elem;
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
346 }
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
347 }
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
348 else
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
349 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
350 for (int i = 0; i < nr; i++)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
351 {
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
352 double abs_a_elem = abs (a.elem (i, j));
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
353 double abs_b_elem = abs (b.elem (i, j));
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
354 if (abs_a_elem > abs_b_elem)
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
355 result.elem (i, j) = a.elem (i, j);
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
356 else
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
357 result.elem (i, j) = b.elem (i, j);
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
358 }
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
359 }
9e6bdfdfcf86 [project @ 1994-11-08 20:59:39 by jwe]
jwe
parents: 839
diff changeset
360 }
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
361
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
362 return result;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
363 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
364
701
0a81458ef677 [project @ 1994-09-15 02:23:24 by jwe]
jwe
parents: 636
diff changeset
365 DEFUN_DLD_BUILTIN ("min", Fmin, Smin, 3, 2,
519
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
366 "min (X): minimum value(s) of a vector (matrix)")
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
367 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
368 Octave_object retval;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
369
519
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
370 int nargin = args.length ();
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
371
712
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
372 if (nargin < 1 || nargin > 2 || nargout > 2)
519
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
373 {
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
374 print_usage ("min");
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
375 return retval;
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
376 }
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
377
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
378 tree_constant arg1;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
379 tree_constant arg2;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
380
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
381 switch (nargin)
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
382 {
712
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
383 case 2:
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
384 arg2 = args(1);
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
385 // Fall through...
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 712
diff changeset
386
712
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
387 case 1:
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
388 arg1 = args(0);
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
389 break;
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 712
diff changeset
390
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
391 default:
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
392 panic_impossible ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
393 break;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
394 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
395
712
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
396 if (nargin == 1 && (nargout == 1 || nargout == 0))
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
397 {
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
398 if (arg1.is_real_scalar ())
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
399 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
400 retval(0) = arg1.double_value ();
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
401 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
402 else if (arg1.is_complex_scalar ())
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
403 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
404 retval(0) = arg1.complex_value ();
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
405 }
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
406 else if (arg1.is_real_type ())
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
407 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
408 Matrix m = arg1.matrix_value ();
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
409
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
410 if (! error_state)
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
411 {
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
412 if (m.rows () == 1)
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
413 retval(0) = m.row_min ();
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
414 else
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
415 retval(0) = tree_constant (m.column_min (), 0);
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
416 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
417 }
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
418 else if (arg1.is_complex_type ())
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
419 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
420 ComplexMatrix m = arg1.complex_matrix_value ();
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
421
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
422 if (! error_state)
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
423 {
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
424 if (m.rows () == 1)
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
425 retval(0) = m.row_min ();
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
426 else
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
427 retval(0) = tree_constant (m.column_min (), 0);
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
428 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
429 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
430 else
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
431 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
432 gripe_wrong_type_arg ("min", arg1);
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
433 return retval;
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
434 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
435 }
712
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
436 else if (nargin == 1 && nargout == 2)
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
437 {
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
438 if (arg1.is_real_scalar ())
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
439 {
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
440 retval(1) = 1;
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
441 retval(0) = arg1.double_value ();
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
442 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
443 else if (arg1.is_complex_scalar ())
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
444 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
445 retval(1) = 1;
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
446 retval(0) = arg1.complex_value ();
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
447 }
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
448 else if (arg1.is_real_type ())
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
449 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
450 Matrix m = arg1.matrix_value ();
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
451
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
452 if (! error_state)
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
453 {
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
454 if (m.rows () == 1)
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
455 {
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
456 retval(1) = m.row_min_loc ();
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
457 retval(0) = m.row_min ();
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
458 }
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
459 else
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
460 {
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
461 retval(1) = tree_constant (m.column_min_loc (), 0);
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
462 retval(0) = tree_constant (m.column_min (), 0);
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
463 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
464 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
465 }
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
466 else if (arg1.is_complex_type ())
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
467 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
468 ComplexMatrix m = arg1.complex_matrix_value ();
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
469
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
470 if (! error_state)
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
471 {
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
472 if (m.rows () == 1)
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
473 {
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
474 retval(1) = m.row_min_loc ();
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
475 retval(0) = m.row_min ();
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
476 }
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
477 else
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
478 {
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
479 retval(1) = tree_constant (m.column_min_loc (), 0);
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
480 retval(0) = tree_constant (m.column_min (), 0);
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
481 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
482 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
483 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
484 else
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
485 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
486 gripe_wrong_type_arg ("min", arg1);
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
487 return retval;
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
488 }
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
489 }
712
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
490 else if (nargin == 2)
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
491 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
492 int arg1_is_scalar = arg1.is_scalar_type ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
493 int arg2_is_scalar = arg2.is_scalar_type ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
494
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
495 int arg1_is_complex = arg1.is_complex_type ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
496 int arg2_is_complex = arg2.is_complex_type ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
497
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
498 if (arg1_is_scalar)
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
499 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
500 if (arg1_is_complex || arg2_is_complex)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
501 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
502 Complex c1 = arg1.complex_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
503 ComplexMatrix m2 = arg2.complex_matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
504 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
505 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
506 ComplexMatrix result = min (c1, m2);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
507 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
508 retval(0) = result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
509 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
510 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
511 else
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
512 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
513 double d1 = arg1.double_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
514 Matrix m2 = arg2.matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
515
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
516 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
517 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
518 Matrix result = min (d1, m2);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
519 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
520 retval(0) = result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
521 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
522 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
523 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
524 else if (arg2_is_scalar)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
525 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
526 if (arg1_is_complex || arg2_is_complex)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
527 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
528 ComplexMatrix m1 = arg1.complex_matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
529
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
530 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
531 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
532 Complex c2 = arg2.complex_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
533 ComplexMatrix result = min (m1, c2);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
534 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
535 retval(0) = result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
536 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
537 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
538 else
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
539 {
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
540 Matrix m1 = arg1.matrix_value ();
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
541
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
542 if (! error_state)
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
543 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
544 double d2 = arg2.double_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
545 Matrix result = min (m1, d2);
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
546 if (! error_state)
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
547 retval(0) = result;
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
548 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
549 }
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
550 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
551 else
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
552 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
553 if (arg1_is_complex || arg2_is_complex)
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
554 {
636
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
555 ComplexMatrix m1 = arg1.complex_matrix_value ();
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
556
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
557 if (! error_state)
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
558 {
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
559 ComplexMatrix m2 = arg2.complex_matrix_value ();
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
560
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
561 if (! error_state)
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
562 {
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
563 ComplexMatrix result = min (m1, m2);
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
564 if (! error_state)
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
565 retval(0) = result;
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
566 }
fae2bd91c027 [project @ 1994-08-23 18:39:50 by jwe]
jwe
parents: 620
diff changeset
567 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
568 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
569 else
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
570 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
571 Matrix m1 = arg1.matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
572
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
573 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
574 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
575 Matrix m2 = arg2.matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
576
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
577 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
578 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
579 Matrix result = min (m1, m2);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
580 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
581 retval(0) = result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
582 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
583 }
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
584 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
585 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
586 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
587 else
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
588 panic_impossible ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
589
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
590 return retval;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
591 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
592
701
0a81458ef677 [project @ 1994-09-15 02:23:24 by jwe]
jwe
parents: 636
diff changeset
593 DEFUN_DLD_BUILTIN ("max", Fmax, Smax, 3, 2,
519
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
594 "max (X): maximum value(s) of a vector (matrix)")
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
595 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
596 Octave_object retval;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
597
519
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
598 int nargin = args.length ();
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
599
712
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
600 if (nargin < 1 || nargin > 2 || nargout > 2)
519
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
601 {
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
602 print_usage ("max");
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
603 return retval;
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
604 }
b9284136189a [project @ 1994-07-19 14:40:20 by jwe]
jwe
parents: 515
diff changeset
605
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
606 tree_constant arg1;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
607 tree_constant arg2;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
608
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
609 switch (nargin)
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
610 {
712
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
611 case 2:
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
612 arg2 = args(1);
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
613 // Fall through...
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 712
diff changeset
614
712
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
615 case 1:
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
616 arg1 = args(0);
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
617 break;
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 712
diff changeset
618
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
619 default:
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
620 panic_impossible ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
621 break;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
622 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
623
712
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
624 if (nargin == 1 && (nargout == 1 || nargout == 0))
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
625 {
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
626 if (arg1.is_real_scalar ())
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
627 {
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
628 retval(0) = arg1.double_value ();
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
629 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
630 else if (arg1.is_complex_scalar ())
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
631 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
632 retval(0) = arg1.complex_value ();
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
633 }
785
efdb7d3eddd8 [project @ 1994-10-10 19:35:30 by jwe]
jwe
parents: 777
diff changeset
634 else if (arg1.is_real_type ())
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
635 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
636 Matrix m = arg1.matrix_value ();
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
637
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
638 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
639 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
640 if (m.rows () == 1)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
641 retval(0) = m.row_max ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
642 else
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
643 retval(0) = tree_constant (m.column_max (), 0);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
644 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
645 }
785
efdb7d3eddd8 [project @ 1994-10-10 19:35:30 by jwe]
jwe
parents: 777
diff changeset
646 else if (arg1.is_complex_type ())
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
647 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
648 ComplexMatrix m = arg1.complex_matrix_value ();
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
649
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
650 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
651 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
652 if (m.rows () == 1)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
653 retval(0) = m.row_max ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
654 else
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
655 retval(0) = tree_constant (m.column_max (), 0);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
656 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
657 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
658 else
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
659 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
660 gripe_wrong_type_arg ("max", arg1);
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
661 return retval;
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
662 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
663 }
712
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
664 else if (nargin == 1 && nargout == 2)
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
665 {
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
666 if (arg1.is_real_scalar ())
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
667 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
668 retval(1) = 1;
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
669 retval(0) = arg1.double_value ();
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
670 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
671 else if (arg1.is_complex_scalar ())
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
672 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
673 retval(1) = 1;
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
674 retval(0) = arg1.complex_value ();
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
675 }
785
efdb7d3eddd8 [project @ 1994-10-10 19:35:30 by jwe]
jwe
parents: 777
diff changeset
676 else if (arg1.is_real_type ())
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
677 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
678 Matrix m = arg1.matrix_value ();
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
679
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
680 if (! error_state)
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
681 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
682 if (m.rows () == 1)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
683 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
684 retval(1) = m.row_max_loc ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
685 retval(0) = m.row_max ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
686 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
687 else
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
688 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
689 retval(1) = tree_constant (m.column_max_loc (), 0);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
690 retval(0) = tree_constant (m.column_max (), 0);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
691 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
692 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
693 }
785
efdb7d3eddd8 [project @ 1994-10-10 19:35:30 by jwe]
jwe
parents: 777
diff changeset
694 else if (arg1.is_complex_type ())
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
695 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
696 ComplexMatrix m = arg1.complex_matrix_value ();
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
697
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
698 if (! error_state)
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
699 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
700 if (m.rows () == 1)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
701 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
702 retval(1) = m.row_max_loc ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
703 retval(0) = m.row_max ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
704 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
705 else
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
706 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
707 retval(1) = tree_constant (m.column_max_loc (), 0);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
708 retval(0) = tree_constant (m.column_max (), 0);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
709 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
710 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
711 }
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
712 else
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
713 {
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
714 gripe_wrong_type_arg ("max", arg1);
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
715 return retval;
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
716 }
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
717 }
712
36ba0576bd1b [project @ 1994-09-19 14:18:15 by jwe]
jwe
parents: 701
diff changeset
718 else if (nargin == 2)
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
719 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
720 int arg1_is_scalar = arg1.is_scalar_type ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
721 int arg2_is_scalar = arg2.is_scalar_type ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
722
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
723 int arg1_is_complex = arg1.is_complex_type ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
724 int arg2_is_complex = arg2.is_complex_type ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
725
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
726 if (arg1_is_scalar)
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
727 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
728 if (arg1_is_complex || arg2_is_complex)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
729 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
730 Complex c1 = arg1.complex_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
731 ComplexMatrix m2 = arg2.complex_matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
732 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
733 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
734 ComplexMatrix result = max (c1, m2);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
735 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
736 retval(0) = result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
737 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
738 }
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
739 else
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
740 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
741 double d1 = arg1.double_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
742 Matrix m2 = arg2.matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
743
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
744 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
745 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
746 Matrix result = max (d1, m2);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
747 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
748 retval(0) = result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
749 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
750 }
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
751 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
752 else if (arg2_is_scalar)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
753 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
754 if (arg1_is_complex || arg2_is_complex)
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
755 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
756 ComplexMatrix m1 = arg1.complex_matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
757
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
758 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
759 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
760 Complex c2 = arg2.complex_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
761 ComplexMatrix result = max (m1, c2);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
762 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
763 retval(0) = result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
764 }
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
765 }
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
766 else
620
8e4e7e5f307e [project @ 1994-08-16 04:36:32 by jwe]
jwe
parents: 544
diff changeset
767 {
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
768 Matrix m1 = arg1.matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
769
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
770 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
771 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
772 double d2 = arg2.double_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
773 Matrix result = max (m1, d2);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
774 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
775 retval(0) = result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
776 }
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
777 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
778 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
779 else
839
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
780 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
781 if (arg1_is_complex || arg2_is_complex)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
782 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
783 ComplexMatrix m1 = arg1.complex_matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
784
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
785 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
786 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
787 ComplexMatrix m2 = arg2.complex_matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
788
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
789 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
790 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
791 ComplexMatrix result = max (m1, m2);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
792 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
793 retval(0) = result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
794 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
795 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
796 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
797 else
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
798 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
799 Matrix m1 = arg1.matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
800
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
801 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
802 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
803 Matrix m2 = arg2.matrix_value ();
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
804
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
805 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
806 {
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
807 Matrix result = max (m1, m2);
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
808 if (! error_state)
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
809 retval(0) = result;
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
810 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
811 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
812 }
b8530da02bb7 [project @ 1994-10-19 21:44:00 by jwe]
jwe
parents: 785
diff changeset
813 }
515
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
814 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
815 else
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
816 panic_impossible ();
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
817
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
818 return retval;
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
819 }
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
820
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
821 /*
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
822 ;;; Local Variables: ***
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
823 ;;; mode: C++ ***
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
824 ;;; page-delimiter: "^/\\*" ***
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
825 ;;; End: ***
e078f05f4aac [project @ 1994-07-13 02:31:31 by jwe]
jwe
parents:
diff changeset
826 */