OSDN Git Service

a156572d1a70c7587793c54527140592a1e19623
[csp-qt/common_source_project-fm7.git] / source / src / vm / fmgen / misc.h
1 // ---------------------------------------------------------------------------
2 //      misc.h
3 //      Copyright (C) cisc 1998, 1999.
4 // ---------------------------------------------------------------------------
5 //      $Id: misc.h,v 1.5 2002/05/31 09:45:20 cisc Exp $
6
7 #ifndef MISC_H
8 #define MISC_H
9
10 inline int Max(int x, int y) { return (x > y) ? x : y; }
11 inline int Min(int x, int y) { return (x < y) ? x : y; }
12 inline int Abs(int x) { return x >= 0 ? x : -x; }
13
14 inline int Limit(int v, int max, int min) 
15
16         return v > max ? max : (v < min ? min : v); 
17 }
18
19 inline unsigned int BSwap(unsigned int a)
20 {
21         return (a >> 24) | ((a >> 8) & 0xff00) | ((a << 8) & 0xff0000) | (a << 24);
22 }
23
24 inline unsigned int NtoBCD(unsigned int a)
25 {
26         return ((a / 10) << 4) + (a % 10);
27 }
28
29 inline unsigned int BCDtoN(unsigned int v)
30 {
31         return (v >> 4) * 10 + (v & 15);
32 }
33
34
35 template<class T>
36 inline T gcd(T x, T y)
37 {
38         T t;
39         while (y)
40         {
41                 t = x % y;
42                 x = y;
43                 y = t;
44         }
45         return x;
46 }
47
48
49 template<class T>
50 T bessel0(T x)
51 {
52         T p, r, s;
53
54         r = 1.0;
55         s = 1.0;
56         p = (x / 2.0) / s;
57
58         while (p > 1.0E-10)
59         {
60                 r += p * p;
61                 s += 1.0;
62                 p *= (x / 2.0) / s;
63         }
64         return r;
65 }
66
67
68 #endif // MISC_H
69