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 
Max(int x,int y)10 inline int Max(int x, int y) { return (x > y) ? x : y; }
Min(int x,int y)11 inline int Min(int x, int y) { return (x < y) ? x : y; }
Abs(int x)12 inline int Abs(int x) { return x >= 0 ? x : -x; }
13 
Limit(int v,int max,int min)14 inline int Limit(int v, int max, int min)
15 {
16 	return v > max ? max : (v < min ? min : v);
17 }
18 
BSwap(unsigned int a)19 inline unsigned int BSwap(unsigned int a)
20 {
21 	return (a >> 24) | ((a >> 8) & 0xff00) | ((a << 8) & 0xff0000) | (a << 24);
22 }
23 
NtoBCD(unsigned int a)24 inline unsigned int NtoBCD(unsigned int a)
25 {
26 	return ((a / 10) << 4) + (a % 10);
27 }
28 
BCDtoN(unsigned int v)29 inline unsigned int BCDtoN(unsigned int v)
30 {
31 	return (v >> 4) * 10 + (v & 15);
32 }
33 
34 
35 template<class T>
gcd(T x,T y)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>
bessel0(T x)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 
70