max@0
|
1 // Copyright (C) 2009-2010 NICTA (www.nicta.com.au)
|
max@0
|
2 // Copyright (C) 2009-2010 Conrad Sanderson
|
max@0
|
3 //
|
max@0
|
4 // This file is part of the Armadillo C++ library.
|
max@0
|
5 // It is provided without any warranty of fitness
|
max@0
|
6 // for any purpose. You can redistribute this file
|
max@0
|
7 // and/or modify it under the terms of the GNU
|
max@0
|
8 // Lesser General Public License (LGPL) as published
|
max@0
|
9 // by the Free Software Foundation, either version 3
|
max@0
|
10 // of the License or (at your option) any later version.
|
max@0
|
11 // (see http://www.opensource.org/licenses for more info)
|
max@0
|
12
|
max@0
|
13
|
max@0
|
14 //! \addtogroup fn_trig
|
max@0
|
15 //! @{
|
max@0
|
16
|
max@0
|
17 //
|
max@0
|
18 // trigonometric functions:
|
max@0
|
19 // cos family: cos, acos, cosh, acosh
|
max@0
|
20 // sin family: sin, asin, sinh, asinh
|
max@0
|
21 // tan family: tan, atan, tanh, atanh
|
max@0
|
22
|
max@0
|
23
|
max@0
|
24 //
|
max@0
|
25 // cos
|
max@0
|
26
|
max@0
|
27 template<typename T1>
|
max@0
|
28 arma_inline
|
max@0
|
29 const eOp<T1, eop_cos>
|
max@0
|
30 cos(const Base<typename T1::elem_type,T1>& A)
|
max@0
|
31 {
|
max@0
|
32 arma_extra_debug_sigprint();
|
max@0
|
33
|
max@0
|
34 return eOp<T1, eop_cos>(A.get_ref());
|
max@0
|
35 }
|
max@0
|
36
|
max@0
|
37
|
max@0
|
38
|
max@0
|
39 template<typename T1>
|
max@0
|
40 arma_inline
|
max@0
|
41 const eOpCube<T1, eop_cos>
|
max@0
|
42 cos(const BaseCube<typename T1::elem_type,T1>& A)
|
max@0
|
43 {
|
max@0
|
44 arma_extra_debug_sigprint();
|
max@0
|
45
|
max@0
|
46 return eOpCube<T1, eop_cos>(A.get_ref());
|
max@0
|
47 }
|
max@0
|
48
|
max@0
|
49
|
max@0
|
50
|
max@0
|
51 //
|
max@0
|
52 // acos
|
max@0
|
53
|
max@0
|
54 template<typename T1>
|
max@0
|
55 arma_inline
|
max@0
|
56 const eOp<T1, eop_acos>
|
max@0
|
57 acos(const Base<typename T1::elem_type,T1>& A)
|
max@0
|
58 {
|
max@0
|
59 arma_extra_debug_sigprint();
|
max@0
|
60
|
max@0
|
61 return eOp<T1, eop_acos>(A.get_ref());
|
max@0
|
62 }
|
max@0
|
63
|
max@0
|
64
|
max@0
|
65
|
max@0
|
66 template<typename T1>
|
max@0
|
67 arma_inline
|
max@0
|
68 const eOpCube<T1, eop_acos>
|
max@0
|
69 acos(const BaseCube<typename T1::elem_type,T1>& A)
|
max@0
|
70 {
|
max@0
|
71 arma_extra_debug_sigprint();
|
max@0
|
72
|
max@0
|
73 return eOpCube<T1, eop_acos>(A.get_ref());
|
max@0
|
74 }
|
max@0
|
75
|
max@0
|
76
|
max@0
|
77
|
max@0
|
78 //
|
max@0
|
79 // cosh
|
max@0
|
80
|
max@0
|
81 template<typename T1>
|
max@0
|
82 arma_inline
|
max@0
|
83 const eOp<T1, eop_cosh>
|
max@0
|
84 cosh(const Base<typename T1::elem_type,T1>& A)
|
max@0
|
85 {
|
max@0
|
86 arma_extra_debug_sigprint();
|
max@0
|
87
|
max@0
|
88 return eOp<T1, eop_cosh>(A.get_ref());
|
max@0
|
89 }
|
max@0
|
90
|
max@0
|
91
|
max@0
|
92
|
max@0
|
93 template<typename T1>
|
max@0
|
94 arma_inline
|
max@0
|
95 const eOpCube<T1, eop_cosh>
|
max@0
|
96 cosh(const BaseCube<typename T1::elem_type,T1>& A)
|
max@0
|
97 {
|
max@0
|
98 arma_extra_debug_sigprint();
|
max@0
|
99
|
max@0
|
100 return eOpCube<T1, eop_cosh>(A.get_ref());
|
max@0
|
101 }
|
max@0
|
102
|
max@0
|
103
|
max@0
|
104
|
max@0
|
105 //
|
max@0
|
106 // acosh
|
max@0
|
107
|
max@0
|
108 template<typename T1>
|
max@0
|
109 arma_inline
|
max@0
|
110 const eOp<T1, eop_acosh>
|
max@0
|
111 acosh(const Base<typename T1::elem_type,T1>& A)
|
max@0
|
112 {
|
max@0
|
113 arma_extra_debug_sigprint();
|
max@0
|
114
|
max@0
|
115 return eOp<T1, eop_acosh>(A.get_ref());
|
max@0
|
116 }
|
max@0
|
117
|
max@0
|
118
|
max@0
|
119
|
max@0
|
120 template<typename T1>
|
max@0
|
121 arma_inline
|
max@0
|
122 const eOpCube<T1, eop_acosh>
|
max@0
|
123 acosh(const BaseCube<typename T1::elem_type,T1>& A)
|
max@0
|
124 {
|
max@0
|
125 arma_extra_debug_sigprint();
|
max@0
|
126
|
max@0
|
127 return eOpCube<T1, eop_acosh>(A.get_ref());
|
max@0
|
128 }
|
max@0
|
129
|
max@0
|
130
|
max@0
|
131
|
max@0
|
132 //
|
max@0
|
133 // sin
|
max@0
|
134
|
max@0
|
135 template<typename T1>
|
max@0
|
136 arma_inline
|
max@0
|
137 const eOp<T1, eop_sin>
|
max@0
|
138 sin(const Base<typename T1::elem_type,T1>& A)
|
max@0
|
139 {
|
max@0
|
140 arma_extra_debug_sigprint();
|
max@0
|
141
|
max@0
|
142 return eOp<T1, eop_sin>(A.get_ref());
|
max@0
|
143 }
|
max@0
|
144
|
max@0
|
145
|
max@0
|
146
|
max@0
|
147 template<typename T1>
|
max@0
|
148 arma_inline
|
max@0
|
149 const eOpCube<T1, eop_sin>
|
max@0
|
150 sin(const BaseCube<typename T1::elem_type,T1>& A)
|
max@0
|
151 {
|
max@0
|
152 arma_extra_debug_sigprint();
|
max@0
|
153
|
max@0
|
154 return eOpCube<T1, eop_sin>(A.get_ref());
|
max@0
|
155 }
|
max@0
|
156
|
max@0
|
157
|
max@0
|
158
|
max@0
|
159 //
|
max@0
|
160 // asin
|
max@0
|
161
|
max@0
|
162 template<typename T1>
|
max@0
|
163 arma_inline
|
max@0
|
164 const eOp<T1, eop_asin>
|
max@0
|
165 asin(const Base<typename T1::elem_type,T1>& A)
|
max@0
|
166 {
|
max@0
|
167 arma_extra_debug_sigprint();
|
max@0
|
168
|
max@0
|
169 return eOp<T1, eop_asin>(A.get_ref());
|
max@0
|
170 }
|
max@0
|
171
|
max@0
|
172
|
max@0
|
173
|
max@0
|
174 template<typename T1>
|
max@0
|
175 arma_inline
|
max@0
|
176 const eOpCube<T1, eop_asin>
|
max@0
|
177 asin(const BaseCube<typename T1::elem_type,T1>& A)
|
max@0
|
178 {
|
max@0
|
179 arma_extra_debug_sigprint();
|
max@0
|
180
|
max@0
|
181 return eOpCube<T1, eop_asin>(A.get_ref());
|
max@0
|
182 }
|
max@0
|
183
|
max@0
|
184
|
max@0
|
185
|
max@0
|
186 //
|
max@0
|
187 // sinh
|
max@0
|
188
|
max@0
|
189 template<typename T1>
|
max@0
|
190 arma_inline
|
max@0
|
191 const eOp<T1, eop_sinh>
|
max@0
|
192 sinh(const Base<typename T1::elem_type,T1>& A)
|
max@0
|
193 {
|
max@0
|
194 arma_extra_debug_sigprint();
|
max@0
|
195
|
max@0
|
196 return eOp<T1, eop_sinh>(A.get_ref());
|
max@0
|
197 }
|
max@0
|
198
|
max@0
|
199
|
max@0
|
200
|
max@0
|
201 template<typename T1>
|
max@0
|
202 arma_inline
|
max@0
|
203 const eOpCube<T1, eop_sinh>
|
max@0
|
204 sinh(const BaseCube<typename T1::elem_type,T1>& A)
|
max@0
|
205 {
|
max@0
|
206 arma_extra_debug_sigprint();
|
max@0
|
207
|
max@0
|
208 return eOpCube<T1, eop_sinh>(A.get_ref());
|
max@0
|
209 }
|
max@0
|
210
|
max@0
|
211
|
max@0
|
212
|
max@0
|
213 //
|
max@0
|
214 // asinh
|
max@0
|
215
|
max@0
|
216 template<typename T1>
|
max@0
|
217 arma_inline
|
max@0
|
218 const eOp<T1, eop_asinh>
|
max@0
|
219 asinh(const Base<typename T1::elem_type,T1>& A)
|
max@0
|
220 {
|
max@0
|
221 arma_extra_debug_sigprint();
|
max@0
|
222
|
max@0
|
223 return eOp<T1, eop_asinh>(A.get_ref());
|
max@0
|
224 }
|
max@0
|
225
|
max@0
|
226
|
max@0
|
227
|
max@0
|
228 template<typename T1>
|
max@0
|
229 arma_inline
|
max@0
|
230 const eOpCube<T1, eop_asinh>
|
max@0
|
231 asinh(const BaseCube<typename T1::elem_type,T1>& A)
|
max@0
|
232 {
|
max@0
|
233 arma_extra_debug_sigprint();
|
max@0
|
234
|
max@0
|
235 return eOpCube<T1, eop_asinh>(A.get_ref());
|
max@0
|
236 }
|
max@0
|
237
|
max@0
|
238
|
max@0
|
239
|
max@0
|
240 //
|
max@0
|
241 // tan
|
max@0
|
242
|
max@0
|
243 template<typename T1>
|
max@0
|
244 arma_inline
|
max@0
|
245 const eOp<T1, eop_tan>
|
max@0
|
246 tan(const Base<typename T1::elem_type,T1>& A)
|
max@0
|
247 {
|
max@0
|
248 arma_extra_debug_sigprint();
|
max@0
|
249
|
max@0
|
250 return eOp<T1, eop_tan>(A.get_ref());
|
max@0
|
251 }
|
max@0
|
252
|
max@0
|
253
|
max@0
|
254
|
max@0
|
255 template<typename T1>
|
max@0
|
256 arma_inline
|
max@0
|
257 const eOpCube<T1, eop_tan>
|
max@0
|
258 tan(const BaseCube<typename T1::elem_type,T1>& A)
|
max@0
|
259 {
|
max@0
|
260 arma_extra_debug_sigprint();
|
max@0
|
261
|
max@0
|
262 return eOpCube<T1, eop_tan>(A.get_ref());
|
max@0
|
263 }
|
max@0
|
264
|
max@0
|
265
|
max@0
|
266
|
max@0
|
267 //
|
max@0
|
268 // atan
|
max@0
|
269
|
max@0
|
270 template<typename T1>
|
max@0
|
271 arma_inline
|
max@0
|
272 const eOp<T1, eop_atan>
|
max@0
|
273 atan(const Base<typename T1::elem_type,T1>& A)
|
max@0
|
274 {
|
max@0
|
275 arma_extra_debug_sigprint();
|
max@0
|
276
|
max@0
|
277 return eOp<T1, eop_atan>(A.get_ref());
|
max@0
|
278 }
|
max@0
|
279
|
max@0
|
280
|
max@0
|
281
|
max@0
|
282 template<typename T1>
|
max@0
|
283 arma_inline
|
max@0
|
284 const eOpCube<T1, eop_atan>
|
max@0
|
285 atan(const BaseCube<typename T1::elem_type,T1>& A)
|
max@0
|
286 {
|
max@0
|
287 arma_extra_debug_sigprint();
|
max@0
|
288
|
max@0
|
289 return eOpCube<T1, eop_atan>(A.get_ref());
|
max@0
|
290 }
|
max@0
|
291
|
max@0
|
292
|
max@0
|
293
|
max@0
|
294 //
|
max@0
|
295 // tanh
|
max@0
|
296
|
max@0
|
297 template<typename T1>
|
max@0
|
298 arma_inline
|
max@0
|
299 const eOp<T1, eop_tanh>
|
max@0
|
300 tanh(const Base<typename T1::elem_type,T1>& A)
|
max@0
|
301 {
|
max@0
|
302 arma_extra_debug_sigprint();
|
max@0
|
303
|
max@0
|
304 return eOp<T1, eop_tanh>(A.get_ref());
|
max@0
|
305 }
|
max@0
|
306
|
max@0
|
307
|
max@0
|
308
|
max@0
|
309 template<typename T1>
|
max@0
|
310 arma_inline
|
max@0
|
311 const eOpCube<T1, eop_tanh>
|
max@0
|
312 tanh(const BaseCube<typename T1::elem_type,T1>& A)
|
max@0
|
313 {
|
max@0
|
314 arma_extra_debug_sigprint();
|
max@0
|
315
|
max@0
|
316 return eOpCube<T1, eop_tanh>(A.get_ref());
|
max@0
|
317 }
|
max@0
|
318
|
max@0
|
319
|
max@0
|
320
|
max@0
|
321 //
|
max@0
|
322 // atanh
|
max@0
|
323
|
max@0
|
324 template<typename T1>
|
max@0
|
325 arma_inline
|
max@0
|
326 const eOp<T1, eop_atanh>
|
max@0
|
327 atanh(const Base<typename T1::elem_type,T1>& A)
|
max@0
|
328 {
|
max@0
|
329 arma_extra_debug_sigprint();
|
max@0
|
330
|
max@0
|
331 return eOp<T1, eop_atanh>(A.get_ref());
|
max@0
|
332 }
|
max@0
|
333
|
max@0
|
334
|
max@0
|
335
|
max@0
|
336 template<typename T1>
|
max@0
|
337 arma_inline
|
max@0
|
338 const eOpCube<T1, eop_atanh>
|
max@0
|
339 atanh(const BaseCube<typename T1::elem_type,T1>& A)
|
max@0
|
340 {
|
max@0
|
341 arma_extra_debug_sigprint();
|
max@0
|
342
|
max@0
|
343 return eOpCube<T1, eop_atanh>(A.get_ref());
|
max@0
|
344 }
|
max@0
|
345
|
max@0
|
346
|
max@0
|
347
|
max@0
|
348 //! @}
|