GNU Octave
3.8.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
liboctave
cruft
amos
xzlog.f
Go to the documentation of this file.
1
SUBROUTINE
xzlog
(AR, AI, BR, BI, IERR)
2
C***BEGIN PROLOGUE XZLOG
3
C***REFER TO ZBESH,ZBESI,ZBESJ,ZBESK,ZBESY,ZAIRY,ZBIRY
4
C
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 XZABS
8
C***END PROLOGUE XZLOG
9
DOUBLE PRECISION
ar, ai, br, bi, zm, dtheta, dpi, dhpi
10
DOUBLE PRECISION
xzabs
11
DATA
dpi , dhpi / 3.141592653589793238462643383
d
+0,
12
1 1.570796326794896619231321696
d
+0/
13
C
14
ierr
=0
15
IF
(ar.EQ.0.0
d
+0) go to 10
16
IF
(ai.EQ.0.0
d
+0) go to 20
17
dtheta = datan(ai/ar)
18
IF
(dtheta.LE.0.0
d
+0) go to 40
19
IF
(ar.LT.0.0
d
+0) dtheta = dtheta - dpi
20
go to 50
21
10
IF
(ai.EQ.0.0
d
+0) go to 60
22
bi = dhpi
23
br = dlog(dabs(ai))
24
IF
(ai.LT.0.0
d
+0) bi = -bi
25
RETURN
26
20
IF
(ar.GT.0.0
d
+0) go to 30
27
br = dlog(dabs(ar))
28
bi = dpi
29
RETURN
30
30 br = dlog(ar)
31
bi = 0.0
d
+0
32
RETURN
33
40
IF
(ar.LT.0.0
d
+0) dtheta = dtheta + dpi
34
50 zm =
xzabs
(ar,ai)
35
br = dlog(zm)
36
bi = dtheta
37
RETURN
38
60
CONTINUE
39
ierr
=1
40
RETURN
41
END
Generated on Mon Dec 30 2013 03:04:45 for GNU Octave by
1.8.1.2