C99 standard compliance for static const initialisers.
[qpms.git] / amos / zlog.f
blob403d8be074d3449856da5da9fb25fa806768514d
1 SUBROUTINE AZLOG(AR, AI, BR, BI, IERR)
2 C***BEGIN PROLOGUE AZLOG
3 C***REFER TO ZBESH,ZBESI,ZBESJ,ZBESK,ZBESY,ZAIRY,ZBIRY
5 C DOUBLE PRECISION COMPLEX LOGARITHM B=CLOG(A)
6 C IERR=0,NORMAL RETURN IERR=1, Z=CMPLX(0.0,0.0)
7 C***ROUTINES CALLED AZABS
8 C***END PROLOGUE AZLOG
9 DOUBLE PRECISION AR, AI, BR, BI, ZM, DTHETA, DPI, DHPI
10 DOUBLE PRECISION AZABS
11 DATA DPI , DHPI / 3.141592653589793238462643383D+0,
12 1 1.570796326794896619231321696D+0/
14 IERR=0
15 IF (AR.EQ.0.0D+0) GO TO 10
16 IF (AI.EQ.0.0D+0) GO TO 20
17 DTHETA = DATAN(AI/AR)
18 IF (DTHETA.LE.0.0D+0) GO TO 40
19 IF (AR.LT.0.0D+0) DTHETA = DTHETA - DPI
20 GO TO 50
21 10 IF (AI.EQ.0.0D+0) GO TO 60
22 BI = DHPI
23 BR = DLOG(DABS(AI))
24 IF (AI.LT.0.0D+0) BI = -BI
25 RETURN
26 20 IF (AR.GT.0.0D+0) GO TO 30
27 BR = DLOG(DABS(AR))
28 BI = DPI
29 RETURN
30 30 BR = DLOG(AR)
31 BI = 0.0D+0
32 RETURN
33 40 IF (AR.LT.0.0D+0) DTHETA = DTHETA + DPI
34 50 ZM = AZABS(AR,AI)
35 BR = DLOG(ZM)
36 BI = DTHETA
37 RETURN
38 60 CONTINUE
39 IERR=1
40 RETURN
41 END