]>
Commit | Line | Data |
---|---|---|
3820ca8e | 1 | |
2 | CDECK ID>, HWREXT. | |
3 | ||
4 | *CMZ :- -26/04/91 11.11.55 by Bryan Webber | |
5 | ||
6 | *-- Author : David Ward, modified by Bryan Webber | |
7 | ||
8 | C----------------------------------------------------------------------- | |
9 | ||
10 | FUNCTION HWREXT(AM0,B) | |
11 | ||
12 | C----------------------------------------------------------------------- | |
13 | ||
14 | C Random number from dN/d(x**2)=exp(-B*TM) distribution, where | |
15 | ||
16 | C TM = SQRT(X**2+AM0**2). Uses Newton's method to solve F-R=0 | |
17 | ||
18 | C----------------------------------------------------------------------- | |
19 | ||
20 | DOUBLE PRECISION HWREXT,HWR,AM0,B,R,A,F,DF,DAM,AM | |
21 | ||
22 | INTEGER NIT | |
23 | ||
24 | EXTERNAL HWR | |
25 | ||
26 | R=HWR() | |
27 | ||
28 | C --- Starting value | |
29 | ||
30 | AM=AM0-LOG(R)/B | |
31 | ||
32 | DO 1 NIT=1,20 | |
33 | ||
34 | A=EXP(-B*(AM-AM0))/(1.+B*AM0) | |
35 | ||
36 | F=(1.+B*AM)*A-R | |
37 | ||
38 | DF=-B**2*AM*A | |
39 | ||
40 | DAM=-F/DF | |
41 | ||
42 | AM=AM+DAM | |
43 | ||
44 | IF(AM.LT.AM0) AM=AM0+.001 | |
45 | ||
46 | IF(ABS(DAM).LT..001) GOTO 2 | |
47 | ||
48 | 1 CONTINUE | |
49 | ||
50 | CALL HWWARN('HWREXT',1,*2) | |
51 | ||
52 | 2 HWREXT=AM | |
53 | ||
54 | END |