Mercurial > hg > octave-lyh
annotate src/DLD-FUNCTIONS/kron.cc @ 8920:eb63fbe60fab
update copyright notices
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Sat, 07 Mar 2009 10:41:27 -0500 |
parents | 82be108cc558 |
children | 923c7cb7f13f |
rev | line source |
---|---|
3910 | 1 /* |
2 | |
8920 | 3 Copyright (C) 2002, 2005, 2006, 2007, 2008 John W. Eaton |
3910 | 4 |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
7016 | 9 Free Software Foundation; either version 3 of the License, or (at your |
10 option) any later version. | |
3910 | 11 |
12 Octave is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | |
3910 | 20 |
21 */ | |
22 | |
3911 | 23 // Author: Paul Kienzle <pkienzle@users.sf.net> |
24 | |
3910 | 25 #ifdef HAVE_CONFIG_H |
26 #include <config.h> | |
27 #endif | |
28 | |
29 #include "dMatrix.h" | |
30 #include "CMatrix.h" | |
4153 | 31 #include "quit.h" |
3910 | 32 |
33 #include "defun-dld.h" | |
34 #include "error.h" | |
35 #include "oct-obj.h" | |
36 | |
37 #if !defined (CXX_NEW_FRIEND_TEMPLATE_DECL) | |
38 extern void | |
39 kron (const Array2<double>&, const Array2<double>&, Array2<double>&); | |
40 | |
41 extern void | |
42 kron (const Array2<Complex>&, const Array2<Complex>&, Array2<Complex>&); | |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
43 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
44 extern void |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
45 kron (const Array2<float>&, const Array2<float>&, Array2<float>&); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
46 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
47 extern void |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
48 kron (const Array2<FlaotComplex>&, const Array2<FloatComplex>&, |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
49 Array2<FloatComplex>&); |
3910 | 50 #endif |
51 | |
52 template <class T> | |
53 void | |
54 kron (const Array2<T>& A, const Array2<T>& B, Array2<T>& C) | |
55 { | |
56 C.resize (A.rows () * B.rows (), A.columns () * B.columns ()); | |
57 | |
5275 | 58 octave_idx_type Ac, Ar, Cc, Cr; |
3910 | 59 |
60 for (Ac = Cc = 0; Ac < A.columns (); Ac++, Cc += B.columns ()) | |
61 for (Ar = Cr = 0; Ar < A.rows (); Ar++, Cr += B.rows ()) | |
62 { | |
63 const T v = A (Ar, Ac); | |
5275 | 64 for (octave_idx_type Bc = 0; Bc < B.columns (); Bc++) |
65 for (octave_idx_type Br = 0; Br < B.rows (); Br++) | |
4153 | 66 { |
67 OCTAVE_QUIT; | |
68 C.xelem (Cr+Br, Cc+Bc) = v * B.elem (Br, Bc); | |
69 } | |
3910 | 70 } |
71 } | |
72 | |
73 template void | |
74 kron (const Array2<double>&, const Array2<double>&, Array2<double>&); | |
75 | |
76 template void | |
77 kron (const Array2<Complex>&, const Array2<Complex>&, Array2<Complex>&); | |
78 | |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
79 template void |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
80 kron (const Array2<float>&, const Array2<float>&, Array2<float>&); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
81 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
82 template void |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
83 kron (const Array2<FloatComplex>&, const Array2<FloatComplex>&, |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
84 Array2<FloatComplex>&); |
7455
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
85 |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
86 #if !defined (CXX_NEW_FRIEND_TEMPLATE_DECL) |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
87 extern void |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
88 kron (const Sparse<double>&, const Sparse<double>&, Sparse<double>&); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
89 |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
90 extern void |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
91 kron (const Sparse<Complex>&, const Sparse<Complex>&, Sparse<Complex>&); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
92 #endif |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
93 |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
94 template <class T> |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
95 void |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
96 kron (const Sparse<T>& A, const Sparse<T>& B, Sparse<T>& C) |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
97 { |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
98 octave_idx_type idx = 0; |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
99 C = Sparse<T> (A.rows () * B.rows (), A.columns () * B.columns (), |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
100 A.nzmax () * B.nzmax ()); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
101 |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
102 C.cidx (0) = 0; |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
103 |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
104 for (octave_idx_type Aj = 0; Aj < A.columns (); Aj++) |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
105 for (octave_idx_type Bj = 0; Bj < B.columns (); Bj++) |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
106 { |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
107 for (octave_idx_type Ai = A.cidx (Aj); Ai < A.cidx (Aj+1); Ai++) |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
108 { |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
109 octave_idx_type Ci = A.ridx(Ai) * B.rows (); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
110 const T v = A.data (Ai); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
111 |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
112 for (octave_idx_type Bi = B.cidx (Bj); Bi < B.cidx (Bj+1); Bi++) |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
113 { |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
114 OCTAVE_QUIT; |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
115 C.data (idx) = v * B.data (Bi); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
116 C.ridx (idx++) = Ci + B.ridx (Bi); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
117 } |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
118 } |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
119 C.cidx (Aj * B.columns () + Bj + 1) = idx; |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
120 } |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
121 } |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
122 |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
123 template void |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
124 kron (const Sparse<double>&, const Sparse<double>&, Sparse<double>&); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
125 |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
126 template void |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
127 kron (const Sparse<Complex>&, const Sparse<Complex>&, Sparse<Complex>&); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
128 |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
129 |
3910 | 130 DEFUN_DLD (kron, args, nargout, "-*- texinfo -*-\n\ |
6678 | 131 @deftypefn {Loadable Function} {} kron (@var{a}, @var{b})\n\ |
3910 | 132 Form the kronecker product of two matrices, defined block by block as\n\ |
133 \n\ | |
134 @example\n\ | |
135 x = [a(i, j) b]\n\ | |
136 @end example\n\ | |
137 \n\ | |
138 For example,\n\ | |
139 \n\ | |
140 @example\n\ | |
141 @group\n\ | |
142 kron (1:4, ones (3, 1))\n\ | |
143 @result{} 1 2 3 4\n\ | |
144 1 2 3 4\n\ | |
145 1 2 3 4\n\ | |
146 @end group\n\ | |
147 @end example\n\ | |
148 @end deftypefn") | |
149 { | |
150 octave_value_list retval; | |
151 | |
152 int nargin = args.length (); | |
153 | |
154 if (nargin != 2 || nargout > 1) | |
155 { | |
5823 | 156 print_usage (); |
3910 | 157 } |
7455
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
158 else if (args(0).is_sparse_type () || args(1).is_sparse_type ()) |
3910 | 159 { |
7455
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
160 if (args(0).is_complex_type () || args(1).is_complex_type ()) |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
161 { |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
162 SparseComplexMatrix a (args(0).sparse_complex_matrix_value()); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
163 SparseComplexMatrix b (args(1).sparse_complex_matrix_value()); |
3910 | 164 |
7455
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
165 if (! error_state) |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
166 { |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
167 SparseComplexMatrix c; |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
168 kron (a, b, c); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
169 retval(0) = c; |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
170 } |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
171 } |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
172 else |
3910 | 173 { |
7455
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
174 SparseMatrix a (args(0).sparse_matrix_value ()); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
175 SparseMatrix b (args(1).sparse_matrix_value ()); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
176 |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
177 if (! error_state) |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
178 { |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
179 SparseMatrix c; |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
180 kron (a, b, c); |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
181 retval (0) = c; |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
182 } |
3910 | 183 } |
184 } | |
7455
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
185 else |
3910 | 186 { |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
187 if (args(0).is_single_type () || args(1).is_single_type ()) |
7455
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
188 { |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
189 if (args(0).is_complex_type () || args(1).is_complex_type ()) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
190 { |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
191 FloatComplexMatrix a (args(0).float_complex_matrix_value()); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
192 FloatComplexMatrix b (args(1).float_complex_matrix_value()); |
3910 | 193 |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
194 if (! error_state) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
195 { |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
196 FloatComplexMatrix c; |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
197 kron (a, b, c); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
198 retval(0) = c; |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
199 } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
200 } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
201 else |
7455
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
202 { |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
203 FloatMatrix a (args(0).float_matrix_value ()); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
204 FloatMatrix b (args(1).float_matrix_value ()); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
205 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
206 if (! error_state) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
207 { |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
208 FloatMatrix c; |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
209 kron (a, b, c); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
210 retval (0) = c; |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
211 } |
7455
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
212 } |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
213 } |
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
214 else |
3910 | 215 { |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
216 if (args(0).is_complex_type () || args(1).is_complex_type ()) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
217 { |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
218 ComplexMatrix a (args(0).complex_matrix_value()); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
219 ComplexMatrix b (args(1).complex_matrix_value()); |
7455
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
220 |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
221 if (! error_state) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
222 { |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
223 ComplexMatrix c; |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
224 kron (a, b, c); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
225 retval(0) = c; |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
226 } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
227 } |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
228 else |
7455
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
229 { |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
230 Matrix a (args(0).matrix_value ()); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
231 Matrix b (args(1).matrix_value ()); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
232 |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
233 if (! error_state) |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
234 { |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
235 Matrix c; |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
236 kron (a, b, c); |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
237 retval (0) = c; |
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7455
diff
changeset
|
238 } |
7455
fe332ce262b5
eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
239 } |
3910 | 240 } |
241 } | |
242 | |
243 return retval; | |
244 } |