annotate src/DLD-FUNCTIONS/kron.cc @ 14360:97883071e8e4

doc: Correct off-by-1 spacings in all .cc docstrings * __makeinfo__.m: Only remove space at beginning of new line for docstrings from scripts/ directory where this is the convention. * besselj.cc, betainc.cc, cellfun.cc, dot.cc, fftw.cc, filter.cc, find.cc, gammainc.cc, gcd.cc, givens.cc, hex2num.cc, kron.cc, lu.cc, max.cc, qr.cc, quadcc.cc, qz.cc, regexp.cc, strfind.cc, sub2ind.cc, syl.cc, time.cc, typecast.cc, urlwrite.cc, data.cc, dirfns.cc, file-io.cc, help.cc, load-path.cc, mappers.cc, oct-parse.yy, ov-base.cc, ov-cell.cc, ov-struct.cc, ov.cc, pr-output.cc, pt-mat.cc, strfns.cc, syscalls.cc, variables.cc: Improve appearance of docstring spacing of @example code.
author Rik <octave@nomad.inbox5.com>
date Mon, 13 Feb 2012 07:42:56 -0800
parents 72c96de7a403
children 60e5cf354d80
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
1 /*
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
2
14138
72c96de7a403 maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents: 13929
diff changeset
3 Copyright (C) 2002-2012 John W. Eaton
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
4
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
6
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6678
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6678
diff changeset
10 option) any later version.
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
11
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
15 for more details.
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
16
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6678
diff changeset
18 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6678
diff changeset
19 <http://www.gnu.org/licenses/>.
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
20
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
21 */
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
22
3911
8389e78e67d4 [project @ 2002-04-28 02:15:38 by jwe]
jwe
parents: 3910
diff changeset
23 // Author: Paul Kienzle <pkienzle@users.sf.net>
8389e78e67d4 [project @ 2002-04-28 02:15:38 by jwe]
jwe
parents: 3910
diff changeset
24
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
25 #ifdef HAVE_CONFIG_H
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
26 #include <config.h>
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
27 #endif
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
28
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
29 #include "dMatrix.h"
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
30 #include "fMatrix.h"
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
31 #include "CMatrix.h"
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
32 #include "fCMatrix.h"
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
33
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
34 #include "dSparse.h"
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
35 #include "CSparse.h"
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
36
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
37 #include "dDiagMatrix.h"
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
38 #include "fDiagMatrix.h"
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
39 #include "CDiagMatrix.h"
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
40 #include "fCDiagMatrix.h"
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
41
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
42 #include "PermMatrix.h"
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
43
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
44 #include "mx-inlines.cc"
4153
6b96ce9f5743 [project @ 2002-11-06 20:38:49 by jwe]
jwe
parents: 3911
diff changeset
45 #include "quit.h"
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
46
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
47 #include "defun-dld.h"
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
48 #include "error.h"
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
49 #include "oct-obj.h"
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
50
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
51 template <class R, class T>
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
52 static MArray<T>
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
53 kron (const MArray<R>& a, const MArray<T>& b)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
54 {
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
55 assert (a.ndims () == 2);
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
56 assert (b.ndims () == 2);
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
57
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
58 octave_idx_type nra = a.rows (), nrb = b.rows ();
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
59 octave_idx_type nca = a.cols (), ncb = b.cols ();
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
60
11570
57632dea2446 attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents: 11553
diff changeset
61 MArray<T> c (dim_vector (nra*nrb, nca*ncb));
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
62 T *cv = c.fortran_vec ();
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
63
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
64 for (octave_idx_type ja = 0; ja < nca; ja++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
65 for (octave_idx_type jb = 0; jb < ncb; jb++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
66 for (octave_idx_type ia = 0; ia < nra; ia++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
67 {
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
68 octave_quit ();
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
69 mx_inline_mul (nrb, cv, a(ia, ja), b.data () + nrb*jb);
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
70 cv += nrb;
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
71 }
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7455
diff changeset
72
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
73 return c;
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
74 }
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
75
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
76 template <class R, class T>
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
77 static MArray<T>
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
78 kron (const MDiagArray2<R>& a, const MArray<T>& b)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
79 {
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
80 assert (b.ndims () == 2);
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
81
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
82 octave_idx_type nra = a.rows (), nrb = b.rows (), dla = a.diag_length ();
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
83 octave_idx_type nca = a.cols (), ncb = b.cols ();
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7455
diff changeset
84
11570
57632dea2446 attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents: 11553
diff changeset
85 MArray<T> c (dim_vector (nra*nrb, nca*ncb), T());
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
86
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
87 for (octave_idx_type ja = 0; ja < dla; ja++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
88 for (octave_idx_type jb = 0; jb < ncb; jb++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
89 {
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
90 octave_quit ();
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
91 mx_inline_mul (nrb, &c.xelem(ja*nrb, ja*ncb + jb), a.dgelem (ja), b.data () + nrb*jb);
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
92 }
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
93
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
94 return c;
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
95 }
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
96
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
97 template <class T>
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
98 static MSparse<T>
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
99 kron (const MSparse<T>& A, const MSparse<T>& B)
7455
fe332ce262b5 eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
100 {
fe332ce262b5 eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
101 octave_idx_type idx = 0;
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11570
diff changeset
102 MSparse<T> C (A.rows () * B.rows (), A.columns () * B.columns (),
10527
b4d2080b6df7 Replace nzmax by nnz as needed
David Bateman <dbateman@free.fr>
parents: 10461
diff changeset
103 A.nnz () * B.nnz ());
7455
fe332ce262b5 eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
104
fe332ce262b5 eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
105 C.cidx (0) = 0;
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 Aj = 0; Aj < A.columns (); Aj++)
fe332ce262b5 eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
108 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
109 {
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
110 octave_quit ();
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 9209
diff changeset
111 for (octave_idx_type Ai = A.cidx (Aj); Ai < A.cidx (Aj+1); Ai++)
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 9209
diff changeset
112 {
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 9209
diff changeset
113 octave_idx_type Ci = A.ridx(Ai) * B.rows ();
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 9209
diff changeset
114 const T v = A.data (Ai);
7455
fe332ce262b5 eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
115
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 9209
diff changeset
116 for (octave_idx_type Bi = B.cidx (Bj); Bi < B.cidx (Bj+1); Bi++)
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 9209
diff changeset
117 {
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 9209
diff changeset
118 C.data (idx) = v * B.data (Bi);
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 9209
diff changeset
119 C.ridx (idx++) = Ci + B.ridx (Bi);
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 9209
diff changeset
120 }
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 9209
diff changeset
121 }
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 9209
diff changeset
122 C.cidx (Aj * B.columns () + Bj + 1) = idx;
7455
fe332ce262b5 eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
123 }
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
124
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
125 return C;
7455
fe332ce262b5 eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
126 }
fe332ce262b5 eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
127
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
128 static PermMatrix
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
129 kron (const PermMatrix& a, const PermMatrix& b)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
130 {
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
131 octave_idx_type na = a.rows (), nb = b.rows ();
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
132 const octave_idx_type *pa = a.data (), *pb = b.data ();
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
133 PermMatrix c(na*nb); // Row permutation.
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
134 octave_idx_type *pc = c.fortran_vec ();
7455
fe332ce262b5 eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
135
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
136 bool cola = a.is_col_perm (), colb = b.is_col_perm ();
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
137 if (cola && colb)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
138 {
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
139 for (octave_idx_type i = 0; i < na; i++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
140 for (octave_idx_type j = 0; j < nb; j++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
141 pc[pa[i]*nb+pb[j]] = i*nb+j;
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
142 }
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
143 else if (cola)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
144 {
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
145 for (octave_idx_type i = 0; i < na; i++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
146 for (octave_idx_type j = 0; j < nb; j++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
147 pc[pa[i]*nb+j] = i*nb+pb[j];
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
148 }
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
149 else if (colb)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
150 {
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
151 for (octave_idx_type i = 0; i < na; i++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
152 for (octave_idx_type j = 0; j < nb; j++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
153 pc[i*nb+pb[j]] = pa[i]*nb+j;
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
154 }
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
155 else
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
156 {
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
157 for (octave_idx_type i = 0; i < na; i++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
158 for (octave_idx_type j = 0; j < nb; j++)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
159 pc[i*nb+j] = pa[i]*nb+pb[j];
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
160 }
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
161
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
162 return c;
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
163 }
7455
fe332ce262b5 eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
164
fe332ce262b5 eliminate spkron.cc; dispatch in kron
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
165
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
166 template <class MTA, class MTB>
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
167 octave_value
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
168 do_kron (const octave_value& a, const octave_value& b)
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
169 {
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
170 MTA am = octave_value_extract<MTA> (a);
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
171 MTB bm = octave_value_extract<MTB> (b);
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
172 return octave_value (kron (am, bm));
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
173 }
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
174
13748
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
175 octave_value
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
176 dispatch_kron (const octave_value& a, const octave_value& b)
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
177 {
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
178 octave_value retval;
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
179 if (a.is_perm_matrix () && b.is_perm_matrix ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
180 retval = do_kron<PermMatrix, PermMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
181 else if (a.is_diag_matrix ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
182 {
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
183 if (b.is_diag_matrix () && a.rows () == a.columns ()
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
184 && b.rows () == b.columns ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
185 {
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
186 octave_value_list tmp;
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
187 tmp(0) = a.diag ();
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
188 tmp(1) = b.diag ();
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
189 tmp = dispatch_kron (tmp, 1);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
190 if (tmp.length () == 1)
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
191 retval = tmp(0).diag ();
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
192 }
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
193 else if (a.is_single_type () || b.is_single_type ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
194 {
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
195 if (a.is_complex_type ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
196 retval = do_kron<FloatComplexDiagMatrix, FloatComplexMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
197 else if (b.is_complex_type ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
198 retval = do_kron<FloatDiagMatrix, FloatComplexMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
199 else
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
200 retval = do_kron<FloatDiagMatrix, FloatMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
201 }
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
202 else
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
203 {
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
204 if (a.is_complex_type ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
205 retval = do_kron<ComplexDiagMatrix, ComplexMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
206 else if (b.is_complex_type ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
207 retval = do_kron<DiagMatrix, ComplexMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
208 else
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
209 retval = do_kron<DiagMatrix, Matrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
210 }
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
211 }
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
212 else if (a.is_sparse_type () || b.is_sparse_type ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
213 {
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
214 if (a.is_complex_type () || b.is_complex_type ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
215 retval = do_kron<SparseComplexMatrix, SparseComplexMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
216 else
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
217 retval = do_kron<SparseMatrix, SparseMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
218 }
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
219 else if (a.is_single_type () || b.is_single_type ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
220 {
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
221 if (a.is_complex_type ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
222 retval = do_kron<FloatComplexMatrix, FloatComplexMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
223 else if (b.is_complex_type ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
224 retval = do_kron<FloatMatrix, FloatComplexMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
225 else
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
226 retval = do_kron<FloatMatrix, FloatMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
227 }
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
228 else
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
229 {
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
230 if (a.is_complex_type ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
231 retval = do_kron<ComplexMatrix, ComplexMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
232 else if (b.is_complex_type ())
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
233 retval = do_kron<Matrix, ComplexMatrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
234 else
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
235 retval = do_kron<Matrix, Matrix> (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
236 }
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
237 return retval;
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
238 }
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
239
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
240
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
241 DEFUN_DLD (kron, args, , "-*- texinfo -*-\n\
13929
9cae456085c2 Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents: 13748
diff changeset
242 @deftypefn {Loadable Function} {} kron (@var{A}, @var{B})\n\
13748
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
243 @deftypefnx {Loadable Function} {} kron (@var{A1}, @var{A2}, @dots{})\n\
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
244 Form the Kronecker product of two or more matrices, defined block by \n\
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
245 block as\n\
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
246 \n\
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
247 @example\n\
14360
97883071e8e4 doc: Correct off-by-1 spacings in all .cc docstrings
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
248 x = [ a(i,j)*b ]\n\
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
249 @end example\n\
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
250 \n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10527
diff changeset
251 For example:\n\
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
252 \n\
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
253 @example\n\
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
254 @group\n\
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
255 kron (1:4, ones (3, 1))\n\
14360
97883071e8e4 doc: Correct off-by-1 spacings in all .cc docstrings
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
256 @result{} 1 2 3 4\n\
97883071e8e4 doc: Correct off-by-1 spacings in all .cc docstrings
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
257 1 2 3 4\n\
97883071e8e4 doc: Correct off-by-1 spacings in all .cc docstrings
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
258 1 2 3 4\n\
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
259 @end group\n\
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
260 @end example\n\
13748
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
261 \n\
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
262 If there are more than two input arguments @var{A1}, @var{A2}, @dots{}, \n\
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
263 @var{An} the Kronecker product is computed as\n\
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
264 \n\
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
265 @example\n\
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
266 kron (kron (@var{A1}, @var{A2}), @dots{}, @var{An})\n\
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
267 @end example\n\
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
268 \n\
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
269 @noindent\n\
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
270 Since the Kronecker product is associative, this is well-defined.\n\
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
271 @end deftypefn")
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
272 {
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
273 octave_value retval;
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
274
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
275 int nargin = args.length ();
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
276
13748
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
277 if (nargin >= 2)
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
278 {
10461
81067c72361f optimize kron
Jaroslav Hajek <highegg@gmail.com>
parents: 10350
diff changeset
279 octave_value a = args(0), b = args(1);
13748
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
280 retval = dispatch_kron (a, b);
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
281 for (octave_idx_type i = 2; i < nargin; i++)
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
282 retval = dispatch_kron (retval, args(i));
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
283 }
13748
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
284 else
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
285 print_usage ();
3910
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
286
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
287 return retval;
79a90a0f0eff [project @ 2002-04-25 05:36:52 by jwe]
jwe
parents:
diff changeset
288 }
12790
5ecdb60ddf0f codesprint: Write two tests for kron.cc
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11586
diff changeset
289
13748
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
290
12790
5ecdb60ddf0f codesprint: Write two tests for kron.cc
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11586
diff changeset
291 /*
5ecdb60ddf0f codesprint: Write two tests for kron.cc
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11586
diff changeset
292
5ecdb60ddf0f codesprint: Write two tests for kron.cc
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11586
diff changeset
293 %!test
5ecdb60ddf0f codesprint: Write two tests for kron.cc
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11586
diff changeset
294 %! x = ones(2);
5ecdb60ddf0f codesprint: Write two tests for kron.cc
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11586
diff changeset
295 %! assert( kron (x, x), ones (4));
5ecdb60ddf0f codesprint: Write two tests for kron.cc
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11586
diff changeset
296
13748
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
297 %!shared x, y, z
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
298 %! x = [1, 2];
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
299 %! y = [-1, -2];
12790
5ecdb60ddf0f codesprint: Write two tests for kron.cc
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11586
diff changeset
300 %! z = [1, 2, 3, 4; 1, 2, 3, 4; 1, 2, 3, 4];
13748
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
301 %!assert (kron (1:4, ones (3, 1)), z)
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
302 %!assert (kron (x, y, z), kron (kron (x, y), z))
77857d6fe074 Allow more than two input arguments for the kron function, plus some cleanup.
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12790
diff changeset
303 %!assert (kron (x, y, z), kron (x, kron (y, z)))
12790
5ecdb60ddf0f codesprint: Write two tests for kron.cc
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11586
diff changeset
304
5ecdb60ddf0f codesprint: Write two tests for kron.cc
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11586
diff changeset
305 */