USML
scalar_math.h
1 
6 #ifndef USML_UBLAS_SCALAR_MATH_H
7 #define USML_UBLAS_SCALAR_MATH_H
8 
9 #include <usml/ublas/math_traits.h>
10 
11 namespace usml {
12 namespace ublas {
13 
36  //**********************************************************
37  // limiting functions
38 
43  template<class T1, class T2>
44  struct scalar_max:
45  public scalar_binary_functor<T1, T2> {
46  typedef typename scalar_binary_functor<T1, T2>::argument1_type
48  typedef typename scalar_binary_functor<T1, T2>::argument2_type
50  typedef typename scalar_binary_functor<T1, T2>::result_type
52 
54  return math_traits<result_type>::max(t1,t2) ;
55  }
56  };
57 
62  template<class T1, class T2>
63  struct scalar_min:
64  public scalar_binary_functor<T1, T2> {
65  typedef typename scalar_binary_functor<T1, T2>::argument1_type
67  typedef typename scalar_binary_functor<T1, T2>::argument2_type
69  typedef typename scalar_binary_functor<T1, T2>::result_type
71 
73  return math_traits<result_type>::min(t1,t2) ;
74  }
75  };
76 
81  template<class T>
82  struct scalar_floor:
83  public scalar_unary_functor<T> {
84  typedef typename scalar_unary_functor<T>::argument_type argument_type;
85  typedef typename scalar_unary_functor<T>::result_type result_type;
86 
87  static inline result_type apply(argument_type t) {
89  }
90  };
91 
96  template<class T>
97  struct scalar_ceil:
98  public scalar_unary_functor<T> {
99  typedef typename scalar_unary_functor<T>::argument_type argument_type;
100  typedef typename scalar_unary_functor<T>::result_type result_type;
101 
102  static inline result_type apply(argument_type t) {
104  }
105  };
106 
107  //**********************************************************
108  // conversion functions
109 
114  template<class T>
116  public scalar_real_unary_functor<T> {
117  typedef typename scalar_real_unary_functor<T>::argument_type
119  typedef typename scalar_real_unary_functor<T>::result_type
121 
122  static inline result_type apply(argument_type t) {
124  }
125  };
126 
131  template<class T>
133  public scalar_real_unary_functor<T> {
134  typedef typename scalar_real_unary_functor<T>::argument_type
136  typedef typename scalar_real_unary_functor<T>::result_type
138 
139  static inline result_type apply(argument_type t) {
141  }
142  };
143 
149  template<class T>
151  public scalar_real_unary_functor<T> {
152  typedef typename scalar_real_unary_functor<T>::argument_type
154  typedef typename scalar_real_unary_functor<T>::result_type
156 
157  static inline result_type apply(argument_type t) {
159  }
160  };
161 
167  template<class T>
169  public scalar_real_unary_functor<T> {
170  typedef typename scalar_real_unary_functor<T>::argument_type
172  typedef typename scalar_real_unary_functor<T>::result_type
174 
175  static inline result_type apply(argument_type t) {
177  }
178  };
179 
180  //**********************************************************
181  // algebraic functions
182 
187  template<class T>
188  struct scalar_abs:
189  public scalar_real_unary_functor<T> {
190  typedef typename scalar_real_unary_functor<T>::argument_type
192  typedef typename scalar_real_unary_functor<T>::result_type
194 
195  static inline result_type apply(argument_type t) {
197  }
198  };
199 
204  template<class T>
205  struct scalar_abs2:
206  public scalar_real_unary_functor<T> {
207  typedef typename scalar_real_unary_functor<T>::argument_type
209  typedef typename scalar_real_unary_functor<T>::result_type
211 
212  static inline result_type apply(argument_type t) {
214  }
215  };
216 
221  template<class T>
222  struct scalar_arg:
223  public scalar_real_unary_functor<T> {
224  typedef typename scalar_real_unary_functor<T>::argument_type
226  typedef typename scalar_real_unary_functor<T>::result_type
228 
229  static inline result_type apply(argument_type t) {
231  }
232  };
233 
238  template<class T>
239  struct scalar_sqrt:
240  public scalar_unary_functor<T> {
241  typedef typename scalar_unary_functor<T>::argument_type argument_type;
242  typedef typename scalar_unary_functor<T>::result_type result_type;
243 
244  static inline result_type apply(argument_type t) {
246  }
247  };
248 
253  template<class T1, class T2>
255  public scalar_binary_functor<T1, T2> {
256  typedef typename scalar_binary_functor<T1, T2>::argument1_type
258  typedef typename scalar_binary_functor<T1, T2>::argument2_type
260  typedef typename scalar_binary_functor<T1, T2>::result_type
262 
264  return math_traits<result_type>::copysign(t1,t2) ;
265  }
266  };
267 
268  //**********************************************************
269  // trigonometric functions
270 
275  template<class T>
276  struct scalar_cos:
277  public scalar_unary_functor<T> {
278  typedef typename scalar_unary_functor<T>::argument_type argument_type;
279  typedef typename scalar_unary_functor<T>::result_type result_type;
280 
281  static inline result_type apply(argument_type t) {
283  }
284  };
285 
290  template<class T>
291  struct scalar_cosh:
292  public scalar_unary_functor<T> {
293  typedef typename scalar_unary_functor<T>::argument_type argument_type;
294  typedef typename scalar_unary_functor<T>::result_type result_type;
295 
296  static inline result_type apply(argument_type t) {
298  }
299  };
300 
305  template<class T>
306  struct scalar_sin:
307  public scalar_unary_functor<T> {
308  typedef typename scalar_unary_functor<T>::argument_type argument_type;
309  typedef typename scalar_unary_functor<T>::result_type result_type;
310 
311  static inline result_type apply(argument_type t) {
313  }
314  };
315 
320  template<class T>
321  struct scalar_sinh:
322  public scalar_unary_functor<T> {
323  typedef typename scalar_unary_functor<T>::argument_type argument_type;
324  typedef typename scalar_unary_functor<T>::result_type result_type;
325 
326  static inline result_type apply(argument_type t) {
328  }
329  };
330 
335  template<class T>
336  struct scalar_tan:
337  public scalar_unary_functor<T> {
338  typedef typename scalar_unary_functor<T>::argument_type argument_type;
339  typedef typename scalar_unary_functor<T>::result_type result_type;
340 
341  static inline result_type apply(argument_type t) {
343  }
344  };
345 
350  template<class T>
351  struct scalar_tanh:
352  public scalar_unary_functor<T> {
353  typedef typename scalar_unary_functor<T>::argument_type argument_type;
354  typedef typename scalar_unary_functor<T>::result_type result_type;
355 
356  static inline result_type apply(argument_type t) {
358  }
359  };
360 
361  //**********************************************************
362  // inverse trigonometric functions
363 
368  template<class T>
369  struct scalar_acos:
370  public scalar_unary_functor<T> {
371  typedef typename scalar_unary_functor<T>::argument_type argument_type;
372  typedef typename scalar_unary_functor<T>::result_type result_type;
373 
374  static inline result_type apply(argument_type t) {
376  }
377  };
378 
383  template<class T>
384  struct scalar_acosh:
385  public scalar_unary_functor<T> {
386  typedef typename scalar_unary_functor<T>::argument_type argument_type;
387  typedef typename scalar_unary_functor<T>::result_type result_type;
388 
389  static inline result_type apply(argument_type t) {
391  }
392  };
393 
398  template<class T>
399  struct scalar_asin:
400  public scalar_unary_functor<T> {
401  typedef typename scalar_unary_functor<T>::argument_type argument_type;
402  typedef typename scalar_unary_functor<T>::result_type result_type;
403 
404  static inline result_type apply(argument_type t) {
406  }
407  };
408 
413  template<class T>
414  struct scalar_asinh:
415  public scalar_unary_functor<T> {
416  typedef typename scalar_unary_functor<T>::argument_type argument_type;
417  typedef typename scalar_unary_functor<T>::result_type result_type;
418 
419  static inline result_type apply(argument_type t) {
421  }
422  };
423 
428  template<class T>
429  struct scalar_atan:
430  public scalar_unary_functor<T> {
431  typedef typename scalar_unary_functor<T>::argument_type argument_type;
432  typedef typename scalar_unary_functor<T>::result_type result_type;
433 
434  static inline result_type apply(argument_type t) {
436  }
437  };
438 
443  template<class T1, class T2>
444  struct scalar_atan2:
445  public scalar_binary_functor<T1, T2> {
446  typedef typename scalar_binary_functor<T1, T2>::argument1_type
448  typedef typename scalar_binary_functor<T1, T2>::argument2_type
450  typedef typename scalar_binary_functor<T1, T2>::result_type
452 
454  return math_traits<result_type>::atan2(y,x) ;
455  }
456  };
457 
462  template<class T>
463  struct scalar_atanh:
464  public scalar_unary_functor<T> {
465  typedef typename scalar_unary_functor<T>::argument_type argument_type;
466  typedef typename scalar_unary_functor<T>::result_type result_type;
467 
468  static inline result_type apply(argument_type t) {
470  }
471  };
472 
473  //**********************************************************
474  // exponential functions
475 
480  template<class T>
481  struct scalar_exp:
482  public scalar_unary_functor<T> {
483  typedef typename scalar_unary_functor<T>::argument_type argument_type;
484  typedef typename scalar_unary_functor<T>::result_type result_type;
485 
486  static inline result_type apply(argument_type t) {
488  }
489  };
490 
495  template<class T>
496  struct scalar_log:
497  public scalar_unary_functor<T> {
498  typedef typename scalar_unary_functor<T>::argument_type argument_type;
499  typedef typename scalar_unary_functor<T>::result_type result_type;
500 
501  static inline result_type apply(argument_type t) {
503  }
504  };
505 
510  template<class T>
511  struct scalar_log10:
512  public scalar_unary_functor<T> {
513  typedef typename scalar_unary_functor<T>::argument_type argument_type;
514  typedef typename scalar_unary_functor<T>::result_type result_type;
515 
516  static inline result_type apply(argument_type t) {
518  }
519  };
520 
525  template<class T1, class T2>
526  struct scalar_pow:
527  public scalar_binary_functor<T1, T2> {
528  typedef typename scalar_binary_functor<T1, T2>::argument1_type
530  typedef typename scalar_binary_functor<T1, T2>::argument2_type
532  typedef typename scalar_binary_functor<T1, T2>::result_type
534 
536  return math_traits<result_type>::pow(t1,t2) ;
537  }
538  };
539 
540  //**********************************************************
541  // signal processing functions
542 
548  template<class T>
550  public scalar_real_unary_functor<T> {
551  typedef typename scalar_real_unary_functor<T>::argument_type
553  typedef typename scalar_real_unary_functor<T>::result_type
555 
556  static inline result_type apply(argument_type t) {
558  }
559  };
560 
566  template<class T>
567  struct scalar_asignal {
568  typedef T argument_type;
569  typedef complex<T> result_type ;
570 
571  static inline result_type apply(argument_type t) {
573  return result_type( math_traits<T>::sin(t),
574  math_traits<T>::cos(t) ) ;
575  }
576  };
577 
578 } // end of ublas namespace
579 } // end of usml namespace
580 
581 #endif
static result_type apply(argument_type t)
Definition: scalar_math.h:404
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:387
scalar_real_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:118
static value_type sqrt(const_reference t)
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:100
static result_type apply(argument_type t)
Definition: scalar_math.h:296
static result_type apply(argument_type t)
Definition: scalar_math.h:311
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:294
scalar_real_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:191
static value_type acos(const_reference t)
Definition: scalar_math.h:188
Definition: scalar_math.h:321
scalar_binary_functor< T1, T2 >::result_type result_type
Definition: scalar_math.h:533
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:293
static value_type cos(const_reference t)
scalar_binary_functor< T1, T2 >::result_type result_type
Definition: scalar_math.h:451
scalar_binary_functor< T1, T2 >::argument2_type argument2_type
Definition: scalar_math.h:449
static result_type apply(argument_type t)
Definition: scalar_math.h:229
scalar_binary_functor< T1, T2 >::argument1_type argument1_type
Definition: scalar_math.h:529
Definition: scalar_math.h:254
Definition: scalar_math.h:463
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:514
static result_type apply(argument1_type t1, argument2_type t2)
Definition: scalar_math.h:535
Definition: scalar_math.h:276
Definition: math_traits.h:76
Definition: scalar_math.h:414
Definition: scalar_math.h:351
static value_type asin(const_reference t)
scalar_real_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:153
Definition: scalar_math.h:549
static result_type apply(argument_type t)
Definition: scalar_math.h:175
static result_type apply(argument_type t)
Definition: scalar_math.h:157
Definition: scalar_math.h:44
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:416
static result_type apply(argument_type t)
Definition: scalar_math.h:122
Definition: scalar_math.h:567
scalar_real_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:171
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:372
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:279
static result_type apply(argument_type t)
Definition: scalar_math.h:419
static result_type apply(argument_type t)
Definition: scalar_math.h:486
Definition: scalar_math.h:496
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:431
Definition: scalar_math.h:511
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:371
static value_type atan(const_reference t)
Definition: scalar_math.h:205
static value_type to_degrees(const_reference t)
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:323
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:278
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:432
scalar_binary_functor< T1, T2 >::argument2_type argument2_type
Definition: scalar_math.h:531
scalar_real_unary_functor< T >::result_type result_type
Definition: scalar_math.h:155
static value_type tanh(const_reference t)
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:483
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:242
static result_type apply(argument1_type t1, argument2_type t2)
Definition: scalar_math.h:53
Definition: scalar_math.h:168
Definition: scalar_math.h:399
scalar_binary_functor< T1, T2 >::argument2_type argument2_type
Definition: scalar_math.h:259
static value_type cosh(const_reference t)
scalar_real_unary_functor< T >::result_type result_type
Definition: scalar_math.h:137
Definition: scalar_math.h:222
static value_type atan2(const_reference y, const_reference x)
static value_type sinh(const_reference t)
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:339
scalar_real_unary_functor< T >::result_type result_type
Definition: scalar_math.h:193
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:465
scalar_binary_functor< T1, T2 >::result_type result_type
Definition: scalar_math.h:70
Definition: scalar_math.h:369
static result_type apply(argument_type t)
Definition: scalar_math.h:434
static result_type apply(argument1_type t1, argument2_type t2)
Definition: scalar_math.h:263
static result_type apply(argument_type t)
Definition: scalar_math.h:102
static result_type apply(argument_type t)
Definition: scalar_math.h:356
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:308
Definition: scalar_math.h:336
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:386
Definition: scalar_math.h:444
T argument_type
Definition: scalar_math.h:568
static result_type apply(argument_type t)
Definition: scalar_math.h:556
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:499
scalar_real_unary_functor< T >::result_type result_type
Definition: scalar_math.h:173
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:498
scalar_real_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:135
scalar_real_unary_functor< T >::result_type result_type
Definition: scalar_math.h:227
static result_type apply(argument1_type t1, argument2_type t2)
Definition: scalar_math.h:72
scalar_binary_functor< T1, T2 >::result_type result_type
Definition: scalar_math.h:261
scalar_binary_functor< T1, T2 >::result_type result_type
Definition: scalar_math.h:51
Definition: scalar_math.h:239
static result_type apply(argument1_type y, argument2_type x)
Definition: scalar_math.h:453
Definition: scalar_math.h:150
scalar_real_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:552
static value_type exp(const_reference t)
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:338
Definition: scalar_math.h:115
static result_type apply(argument_type t)
Definition: scalar_math.h:501
static result_type apply(argument_type t)
Definition: scalar_math.h:139
scalar_real_unary_functor< T >::result_type result_type
Definition: scalar_math.h:210
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:353
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:84
static value_type tan(const_reference t)
static value_type asinh(const_reference t)
static value_type to_latitude(const_reference t)
scalar_binary_functor< T1, T2 >::argument1_type argument1_type
Definition: scalar_math.h:66
static result_type apply(argument_type t)
Definition: scalar_math.h:374
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:401
Definition: scalar_math.h:132
static result_type apply(argument_type t)
Definition: scalar_math.h:281
scalar_binary_functor< T1, T2 >::argument2_type argument2_type
Definition: scalar_math.h:49
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:466
static value_type to_radians(const_reference t)
scalar_binary_functor< T1, T2 >::argument2_type argument2_type
Definition: scalar_math.h:68
scalar_real_unary_functor< T >::result_type result_type
Definition: scalar_math.h:120
static value_type pow(const_reference t, int e)
Definition: scalar_math.h:429
static value_type sin(const_reference t)
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:402
static result_type apply(argument_type t)
Definition: scalar_math.h:389
Definition: scalar_math.h:291
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:309
Definition: scalar_math.h:481
complex< T > result_type
Definition: scalar_math.h:569
static result_type apply(argument_type t)
Definition: scalar_math.h:195
static value_type log(const_reference t)
static result_type apply(argument_type t)
Definition: scalar_math.h:341
Definition: scalar_math.h:384
Definition: scalar_math.h:82
scalar_real_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:208
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:241
scalar_binary_functor< T1, T2 >::argument1_type argument1_type
Definition: scalar_math.h:47
static value_type to_colatitude(const_reference t)
static result_type apply(argument_type t)
Definition: scalar_math.h:326
scalar_real_unary_functor< T >::result_type result_type
Definition: scalar_math.h:554
static value_type log10(const_reference t)
static value_type atanh(const_reference t)
Definition: scalar_math.h:526
Definition: scalar_math.h:306
static result_type apply(argument_type t)
Definition: scalar_math.h:212
scalar_real_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:225
Definition: scalar_math.h:63
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:324
scalar_binary_functor< T1, T2 >::argument1_type argument1_type
Definition: scalar_math.h:447
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:417
static result_type apply(argument_type t)
Definition: scalar_math.h:516
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:484
Definition: scalar_math.h:97
static result_type apply(argument_type t)
Definition: scalar_math.h:244
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:85
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:513
static result_type apply(argument_type t)
Definition: scalar_math.h:468
static result_type apply(argument_type t)
Definition: scalar_math.h:87
scalar_unary_functor< T >::argument_type argument_type
Definition: scalar_math.h:99
static value_type acosh(const_reference t)
static result_type apply(argument_type t)
Definition: scalar_math.h:571
scalar_binary_functor< T1, T2 >::argument1_type argument1_type
Definition: scalar_math.h:257
scalar_unary_functor< T >::result_type result_type
Definition: scalar_math.h:354