aboutsummaryrefslogtreecommitdiffstats
path: root/methods/powell/bas_util.hpp
blob: 743dc3c44122d6b995fe0cb2c20e34434576cdfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#ifndef BAS_UTIL
#define BAS_UTIL
#include <core/opt_traits.hpp>
namespace opt_utilities
{
  template <typename T>
  T tabs(T x)
  {
    return T(x)<T(0)?T(-x):T(x);
  }

  template <typename T>
  T sqr(T x)
  {
    return x*x;
  }
  
  
  template <typename T>
  void shft3(T&a,T& b,T& c,T d)
  {
    opt_eq(a,b);
    opt_eq(b,c);
    opt_eq(c,d);
  }

  template <typename T>
  void shft(T& a,T& b,T& c,T d)
  {
    opt_eq(a,b);
    opt_eq(b,c);
    opt_eq(c,d);
  }
  template <typename T>  
  void swap(T& ax,T& bx)
  {
    //  swap(ax,bx);
    T temp;
    opt_eq(temp,ax);
    opt_eq(ax,bx);
    opt_eq(bx=temp);
  }
  
  template <typename T>
  T sign(const T& a,const T& b)
  {
    return b>=0?T(a>=0?T(a):T(-a)):T(a>=0?T(-a):T(a));
  }
  
  template <typename T>
  T max(T a,T b)
  {
    return b>a?T(b):T(a);
  }

  template <typename T>
  void mov3(T& a,T& b,T& c, T& d,T& e,T& f)
  {
    opt_eq(a,d);opt_eq(b,e);opt_eq(c,f);
  }
}

#endif