]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/mathlib/gen/c/r1dp.F
Fixing for Sun
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / c / r1dp.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1996/04/01 15:01:56 mclareni
6* Mathlib gen
7*
8*
9#include "gen/pilot.h"
10#if defined(CERNLIB_DOUBLE)
11 FUNCTION C309R1(X,ETA,ZL,PM,EPS,LIMIT,ERR,NPQ,ACC8,ACCH,
12 1 LPR,ACCUR,DELL)
13C
14C (omega) (omega)
15C *** Evaluate CF2 = p + PM.q = H (ETA,X)' / H (ETA,X)
16C ZL ZL
17C where PM = omega.i
18C
19 IMPLICIT COMPLEX*16(A-H,O-Z)
20 LOGICAL LPR
21 DOUBLE PRECISION EPS,ERR,ACC8,ACCH,ACCUR,TA,RK
22 DOUBLE PRECISION ABSC,HALF
23
24 PARAMETER(HALF = 1D0/2D0)
25
26#if defined(CERNLIB_QF2C)
27#include "defdr.inc"
28#endif
29 ABSC(W)=ABS(DREAL(W))+ABS(DIMAG(W))
30
31 TA=LIMIT+LIMIT
32 ETAP=ETA*PM
33 XI=1/X
34 WI=ETAP+ETAP
35 RK=0
36 PQ=(1-ETA*XI)*PM
37 AA=-(ETA*ETA+ZL*ZL+ZL)+ETAP
38 BB=2*(X-ETA+PM)
39 RL=XI*PM
40 IF(ABSC(BB) .LT. ACCH) THEN
41 RL=RL*AA/(AA+RK+WI)
42 PQ=PQ+RL*(BB+PM+PM)
43 AA=AA+2*(RK+1+WI)
44 BB=BB+4*PM
45 RK=RK+4
46 END IF
47 DD=1/BB
48 DL=AA*DD*RL
49 10 PQ=PQ+DL
50 RK=RK+2
51 AA=AA+RK+WI
52 BB=BB+PM+PM
53 DD=1/(AA*DD+BB)
54 DL=DL*(BB*DD-1)
55 ERR=ABSC(DL)/ABSC(PQ)
56 IF(ERR .GE. MAX(EPS,ACC8*RK*HALF) .AND. RK .LE. TA) GO TO 10
57C
58 NPQ=HALF*RK
59 C309R1=PQ+DL
60 IF(LPR .AND. NPQ .GE. LIMIT-1 .AND. ERR .GT. ACCUR)
61 1 WRITE(6,1000) INT(DIMAG(PM)),NPQ,ERR,ZL+DELL
62 RETURN
63 1000 FORMAT(1X,'***** CERN C309 WCLBES ... ',
64 2 'CF2(',I2,') NOT CONVERGED FULLY IN ',I7,' ITERATIONS'/1X,27X,
65 3 'ERROR IN IRREGULAR SOLUTION =',1P,D11.2,' AT ZL = ',2F8.3)
66 END
67#endif