added runge kutta example
[physik/computational_physics.git] / general.c
1 /* general functions */
2
3 double fak(int l) {
4         double result=1;
5         while(l--) result*=l;
6         return result;
7 }
8
9 double fak2(int l) {
10         double result=1;
11         while(l>0) {
12                 result*=l;
13                 l-=2;
14         }
15         return result;
16 }
17
18 double absolute_value(double l) {
19         return l<0?-l:l;
20 }
21
22 #define __A 48271
23 #define __Q 44488
24 #define __R 3399
25 #define __M ((2<<31)-1)
26 #define NRAND_MAX 
27
28 /* global variable -- I_{k+1} dedpends on I_{k} */
29 static int idum=123456;
30
31 int my_rand(int max) {
32         int h;
33         h=idum/__Q;
34         idum=__A*(idum-h*__Q)-h*__R;
35         if(idum<0) idum+=__M;
36         return(idum*(max/__M));
37 }
38
39 int my_srand(int seed) {
40         printf("debug: seed = %d\n",seed);
41         return(idum=seed);
42 }
43
44 double my_nrand(void) {
45         int h;
46         h=idum/__Q;
47         idum=__A*(idum-h*__Q)-h*__R;
48         if(idum<0) idum+=__M;
49         return(1.0*idum/__M);
50 }