Macros.h 1.53 KB
Newer Older
Jan Zapletal's avatar
Jan Zapletal committed
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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
/*!
 * @file    Macros.h
 * @author  Jan Zapletal
 * @date    July 16, 2013
 *
 */

#ifndef MACROS_H
#define	MACROS_H

#define EPS (0.000000000001)

#define PI_FACT ( (SCVT) 0.07957747154594766788 )

#define DOT3( a, b ) ( a[ 0 ] * b[ 0 ] + a[ 1 ] * b[ 1 ] + a[ 2 ] * b[ 2 ] )

#define NORM3( a ) (std::sqrt(DOT3(a,a)))

#define DIST3( a, b ) ( std::sqrt( ( a[ 0 ] - b[ 0 ] ) * ( a[ 0 ] - b[ 0 ] ) + \
( a[ 1 ] - b[ 1 ] ) * ( a[ 1 ] - b[ 1 ] ) + \
( a[ 2 ] - b[ 2 ] ) * ( a[ 2 ] - b[ 2 ] ) ) )

#define DIST3SQ( a, b ) ( ( a[ 0 ] - b[ 0 ] ) * ( a[ 0 ] - b[ 0 ] ) + \
( a[ 1 ] - b[ 1 ] ) * ( a[ 1 ] - b[ 1 ] ) + \
( a[ 2 ] - b[ 2 ] ) * ( a[ 2 ] - b[ 2 ] ) )

#define BUFFER_SIZE (40)

namespace bem4i {

template<class LO, class SC>
struct GetType {

};

template<>
struct GetType<int, std::complex<double> > {

  double eps = 1e-12;
  typedef double SCVT;

};

template<>
struct GetType<int, std::complex<float> > {

  float eps = 1e-7;
  typedef float SCVT;

};

template<>
struct GetType<int, double> {

  double eps = 1e-12;
  typedef double SCVT;

};

template<>
struct GetType<int, float> {

  double eps = 1e-7;
  typedef float SCVT;

};

template<>
struct GetType<long, std::complex<double> > {

  double eps = 1e-12;
  typedef double SCVT;

};

template<>
struct GetType<long, std::complex<float> > {

  float eps = 1e-7;
  typedef float SCVT;

};

template<>
struct GetType<long, double> {

  double eps = 1e-12;
  typedef double SCVT;

};

template<>
struct GetType<long, float> {

  double eps = 1e-7;
  typedef float SCVT;

};

}

#endif	/* MACROS_H */