comparison armadillo-3.900.4/include/armadillo_bits/op_dot_bones.hpp @ 49:1ec0e2823891

Switch to using subrepo copies of qm-dsp, nnls-chroma, vamp-plugin-sdk; update Armadillo version; assume build without external BLAS/LAPACK
author Chris Cannam
date Thu, 13 Jun 2013 10:25:24 +0100
parents
children
comparison
equal deleted inserted replaced
48:69251e11a913 49:1ec0e2823891
1 // Copyright (C) 2008-2013 NICTA (www.nicta.com.au)
2 // Copyright (C) 2008-2013 Conrad Sanderson
3 //
4 // This Source Code Form is subject to the terms of the Mozilla Public
5 // License, v. 2.0. If a copy of the MPL was not distributed with this
6 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
8
9 //! \addtogroup op_dot
10 //! @{
11
12 //! \brief
13 //! dot product operation
14
15 class op_dot
16 {
17 public:
18
19 template<typename eT>
20 arma_hot arma_pure arma_inline static
21 typename arma_not_cx<eT>::result
22 direct_dot_arma(const uword n_elem, const eT* const A, const eT* const B);
23
24 template<typename eT>
25 arma_hot arma_pure inline static
26 typename arma_cx_only<eT>::result
27 direct_dot_arma(const uword n_elem, const eT* const A, const eT* const B);
28
29 template<typename eT>
30 arma_hot arma_pure inline static typename arma_real_only<eT>::result
31 direct_dot(const uword n_elem, const eT* const A, const eT* const B);
32
33 template<typename eT>
34 arma_hot arma_pure inline static typename arma_cx_only<eT>::result
35 direct_dot(const uword n_elem, const eT* const A, const eT* const B);
36
37 template<typename eT>
38 arma_hot arma_pure inline static typename arma_integral_only<eT>::result
39 direct_dot(const uword n_elem, const eT* const A, const eT* const B);
40
41
42 template<typename eT>
43 arma_hot arma_pure inline static eT direct_dot(const uword n_elem, const eT* const A, const eT* const B, const eT* C);
44
45 template<typename T1, typename T2>
46 arma_hot inline static typename T1::elem_type apply(const T1& X, const T2& Y);
47
48 template<typename T1, typename T2>
49 arma_hot inline static typename arma_not_cx<typename T1::elem_type>::result apply_proxy(const Proxy<T1>& PA, const Proxy<T2>& PB);
50
51 template<typename T1, typename T2>
52 arma_hot inline static typename arma_cx_only<typename T1::elem_type>::result apply_proxy(const Proxy<T1>& PA, const Proxy<T2>& PB);
53
54 template<typename eT, typename TA>
55 arma_hot inline static eT dot_and_copy_row(eT* out, const TA& A, const uword row, const eT* B_mem, const uword N);
56 };
57
58
59
60 //! \brief
61 //! normalised dot product operation
62
63 class op_norm_dot
64 {
65 public:
66
67 template<typename T1, typename T2>
68 arma_hot inline static typename T1::elem_type apply (const T1& X, const T2& Y);
69
70 template<typename T1, typename T2>
71 arma_hot inline static typename T1::elem_type apply_unwrap(const T1& X, const T2& Y);
72 };
73
74
75
76 //! \brief
77 //! complex conjugate dot product operation
78
79 class op_cdot
80 {
81 public:
82
83 template<typename eT>
84 arma_hot inline static eT direct_cdot_arma(const uword n_elem, const eT* const A, const eT* const B);
85
86 template<typename eT>
87 arma_hot inline static eT direct_cdot(const uword n_elem, const eT* const A, const eT* const B);
88
89 template<typename T1, typename T2>
90 arma_hot inline static typename T1::elem_type apply (const T1& X, const T2& Y);
91
92 template<typename T1, typename T2>
93 arma_hot inline static typename T1::elem_type apply_unwrap(const T1& X, const T2& Y);
94
95 template<typename T1, typename T2>
96 arma_hot inline static typename T1::elem_type apply_proxy (const T1& X, const T2& Y);
97 };
98
99
100
101 //! @}