Main Page
Modules
Namespaces
Classes
Files
File List
File Members
include
armadillo_bits
fn_kron.hpp
Go to the documentation of this file.
1
// Copyright (C) 2009-2010 NICTA (www.nicta.com.au)
2
// Copyright (C) 2009-2010 Conrad Sanderson
3
// Copyright (C) 2009-2010 Dimitrios Bouzas
4
//
5
// This file is part of the Armadillo C++ library.
6
// It is provided without any warranty of fitness
7
// for any purpose. You can redistribute this file
8
// and/or modify it under the terms of the GNU
9
// Lesser General Public License (LGPL) as published
10
// by the Free Software Foundation, either version 3
11
// of the License or (at your option) any later version.
12
// (see http://www.opensource.org/licenses for more info)
13
14
17
18
19
23
template
<
typename
T1,
typename
T2>
24
arma_inline
25
const
Glue<T1,T2,glue_kron>
26
kron
(
const
Base<typename T1::elem_type,T1>
& A,
const
Base<typename T1::elem_type,T2>
& B)
27
{
28
arma_extra_debug_sigprint
();
29
30
return
Glue<T1, T2, glue_kron>
(A.
get_ref
(), B.
get_ref
());
31
}
32
33
34
38
template
<
typename
T,
typename
T1,
typename
T2>
39
inline
40
Mat<typename eT_promoter<T1,T2>::eT
>
41
kron
(
const
Base
<std::complex<T>,T1>& X,
const
Base<T,T2>
& Y)
42
{
43
arma_extra_debug_sigprint
();
44
45
typedef
typename
std::complex<T> eT1;
46
47
promote_type<eT1,T>::check
();
48
49
const
unwrap<T1>
tmp1(X.get_ref());
50
const
unwrap<T2>
tmp2(Y.
get_ref
());
51
52
const
Mat<eT1>
& A = tmp1.M;
53
const
Mat<T >
& B = tmp2.M;
54
55
Mat<eT1>
out;
56
57
glue_kron::direct_kron
(out, A, B);
58
59
return
out;
60
}
61
62
63
67
template
<
typename
T,
typename
T1,
typename
T2>
68
inline
69
Mat<typename eT_promoter<T1,T2>::eT
>
70
kron
(
const
Base<T,T1>
& X,
const
Base
<std::complex<T>,T2>& Y)
71
{
72
arma_extra_debug_sigprint
();
73
74
typedef
typename
std::complex<T> eT2;
75
76
promote_type<T,eT2>::check
();
77
78
const
unwrap<T1>
tmp1(X.
get_ref
());
79
const
unwrap<T2>
tmp2(Y.get_ref());
80
81
const
Mat<T >
& A = tmp1.M;
82
const
Mat<eT2>
& B = tmp2.M;
83
84
Mat<eT2>
out;
85
86
glue_kron::direct_kron
(out, A, B);
87
88
return
out;
89
}
90
91
92
kron
arma_inline const Glue< T1, T2, glue_kron > kron(const Base< typename T1::elem_type, T1 > &A, const Base< typename T1::elem_type, T2 > &B)
kronecker product of two matrices, with the matrices having the same element type ...
Definition:
fn_kron.hpp:26
Base
Definition:
Base_bones.hpp:25
promote_type::check
static void check()
Definition:
promote_type.hpp:199
Base::get_ref
arma_inline const derived & get_ref() const
Definition:
Base_meat.hpp:22
glue_kron::direct_kron
static void direct_kron(Mat< eT > &out, const Mat< eT > &A, const Mat< eT > &B)
both input matrices have the same element type
Definition:
glue_kron_meat.hpp:25
arma_extra_debug_sigprint
#define arma_extra_debug_sigprint
Definition:
debug.hpp:1116
Mat
Dense matrix class.
Definition:
forward_bones.hpp:19
arma_inline
#define arma_inline
Definition:
compiler_setup.hpp:19
unwrap
Definition:
unwrap.hpp:20
Glue
Definition:
forward_bones.hpp:92
armadillo_matrix
Author(s):
autogenerated on Fri Apr 16 2021 02:31:57