Chris@49
|
1 // Copyright (C) 2009-2012 NICTA (www.nicta.com.au)
|
Chris@49
|
2 // Copyright (C) 2009-2012 Conrad Sanderson
|
Chris@49
|
3 //
|
Chris@49
|
4 // This Source Code Form is subject to the terms of the Mozilla Public
|
Chris@49
|
5 // License, v. 2.0. If a copy of the MPL was not distributed with this
|
Chris@49
|
6 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
Chris@49
|
7
|
Chris@49
|
8
|
Chris@49
|
9 //! \addtogroup fn_var
|
Chris@49
|
10 //! @{
|
Chris@49
|
11
|
Chris@49
|
12
|
Chris@49
|
13
|
Chris@49
|
14 template<typename T1>
|
Chris@49
|
15 inline
|
Chris@49
|
16 const mtOp<typename T1::pod_type, T1, op_var>
|
Chris@49
|
17 var
|
Chris@49
|
18 (
|
Chris@49
|
19 const T1& X,
|
Chris@49
|
20 const uword norm_type = 0,
|
Chris@49
|
21 const uword dim = 0,
|
Chris@49
|
22 const typename enable_if< is_arma_type<T1>::value == true >::result* junk1 = 0,
|
Chris@49
|
23 const typename enable_if< resolves_to_vector<T1>::value == false >::result* junk2 = 0
|
Chris@49
|
24 )
|
Chris@49
|
25 {
|
Chris@49
|
26 arma_extra_debug_sigprint();
|
Chris@49
|
27 arma_ignore(junk1);
|
Chris@49
|
28 arma_ignore(junk2);
|
Chris@49
|
29
|
Chris@49
|
30 return mtOp<typename T1::pod_type, T1, op_var>(X, norm_type, dim);
|
Chris@49
|
31 }
|
Chris@49
|
32
|
Chris@49
|
33
|
Chris@49
|
34
|
Chris@49
|
35 template<typename T1>
|
Chris@49
|
36 inline
|
Chris@49
|
37 const mtOp<typename T1::pod_type, T1, op_var>
|
Chris@49
|
38 var
|
Chris@49
|
39 (
|
Chris@49
|
40 const T1& X,
|
Chris@49
|
41 const uword norm_type,
|
Chris@49
|
42 const uword dim,
|
Chris@49
|
43 const typename enable_if<resolves_to_vector<T1>::value == true>::result* junk = 0
|
Chris@49
|
44 )
|
Chris@49
|
45 {
|
Chris@49
|
46 arma_extra_debug_sigprint();
|
Chris@49
|
47 arma_ignore(junk);
|
Chris@49
|
48
|
Chris@49
|
49 return mtOp<typename T1::pod_type, T1, op_var>(X, norm_type, dim);
|
Chris@49
|
50 }
|
Chris@49
|
51
|
Chris@49
|
52
|
Chris@49
|
53
|
Chris@49
|
54 template<typename T1>
|
Chris@49
|
55 inline
|
Chris@49
|
56 arma_warn_unused
|
Chris@49
|
57 typename T1::pod_type
|
Chris@49
|
58 var
|
Chris@49
|
59 (
|
Chris@49
|
60 const T1& X,
|
Chris@49
|
61 const uword norm_type = 0,
|
Chris@49
|
62 const arma_empty_class junk1 = arma_empty_class(),
|
Chris@49
|
63 const typename enable_if<resolves_to_vector<T1>::value == true>::result* junk2 = 0
|
Chris@49
|
64 )
|
Chris@49
|
65 {
|
Chris@49
|
66 arma_extra_debug_sigprint();
|
Chris@49
|
67 arma_ignore(junk1);
|
Chris@49
|
68 arma_ignore(junk2);
|
Chris@49
|
69
|
Chris@49
|
70 return op_var::var_vec( X, norm_type );
|
Chris@49
|
71 }
|
Chris@49
|
72
|
Chris@49
|
73
|
Chris@49
|
74
|
Chris@49
|
75 template<typename T>
|
Chris@49
|
76 arma_inline
|
Chris@49
|
77 arma_warn_unused
|
Chris@49
|
78 const typename arma_scalar_only<T>::result
|
Chris@49
|
79 var(const T&)
|
Chris@49
|
80 {
|
Chris@49
|
81 return T(0);
|
Chris@49
|
82 }
|
Chris@49
|
83
|
Chris@49
|
84
|
Chris@49
|
85
|
Chris@49
|
86 template<typename T1>
|
Chris@49
|
87 inline
|
Chris@49
|
88 const mtSpOp<typename T1::pod_type, T1, spop_var>
|
Chris@49
|
89 var
|
Chris@49
|
90 (
|
Chris@49
|
91 const T1& X,
|
Chris@49
|
92 const uword norm_type = 0,
|
Chris@49
|
93 const uword dim = 0,
|
Chris@49
|
94 const typename enable_if< is_arma_sparse_type<T1>::value == true >::result* junk1 = 0,
|
Chris@49
|
95 const typename enable_if< resolves_to_sparse_vector<T1>::value == false >::result* junk2 = 0
|
Chris@49
|
96 )
|
Chris@49
|
97 {
|
Chris@49
|
98 arma_extra_debug_sigprint();
|
Chris@49
|
99 arma_ignore(junk1);
|
Chris@49
|
100 arma_ignore(junk2);
|
Chris@49
|
101
|
Chris@49
|
102 return mtSpOp<typename T1::pod_type, T1, spop_var>(X, norm_type, dim);
|
Chris@49
|
103 }
|
Chris@49
|
104
|
Chris@49
|
105
|
Chris@49
|
106
|
Chris@49
|
107 template<typename T1>
|
Chris@49
|
108 inline
|
Chris@49
|
109 const mtSpOp<typename T1::pod_type, T1, spop_var>
|
Chris@49
|
110 var
|
Chris@49
|
111 (
|
Chris@49
|
112 const T1& X,
|
Chris@49
|
113 const uword norm_type,
|
Chris@49
|
114 const uword dim = 0,
|
Chris@49
|
115 const typename enable_if<resolves_to_sparse_vector<T1>::value == true>::result* junk1 = 0
|
Chris@49
|
116 )
|
Chris@49
|
117 {
|
Chris@49
|
118 arma_extra_debug_sigprint();
|
Chris@49
|
119 arma_ignore(junk1);
|
Chris@49
|
120
|
Chris@49
|
121 return mtSpOp<typename T1::pod_type, T1, spop_var>(X, norm_type, dim);
|
Chris@49
|
122 }
|
Chris@49
|
123
|
Chris@49
|
124
|
Chris@49
|
125
|
Chris@49
|
126 template<typename T1>
|
Chris@49
|
127 inline
|
Chris@49
|
128 typename T1::pod_type
|
Chris@49
|
129 var
|
Chris@49
|
130 (
|
Chris@49
|
131 const T1& X,
|
Chris@49
|
132 const uword norm_type = 0,
|
Chris@49
|
133 const arma_empty_class junk1 = arma_empty_class(),
|
Chris@49
|
134 const typename enable_if<resolves_to_sparse_vector<T1>::value == true>::result* junk2 = 0
|
Chris@49
|
135 )
|
Chris@49
|
136 {
|
Chris@49
|
137 arma_extra_debug_sigprint();
|
Chris@49
|
138 arma_ignore(junk1);
|
Chris@49
|
139 arma_ignore(junk2);
|
Chris@49
|
140
|
Chris@49
|
141 return spop_var::var_vec(X, norm_type);
|
Chris@49
|
142 }
|
Chris@49
|
143
|
Chris@49
|
144
|
Chris@49
|
145
|
Chris@49
|
146 //! @}
|