~ubuntu-branches/ubuntu/wily/julia/wily

« back to all changes in this revision

Viewing changes to deps/openlibm/slatec/clnrel.f

  • Committer: Package Import Robot
  • Author(s): Sébastien Villemot
  • Date: 2013-01-16 12:29:42 UTC
  • mfrom: (1.1.2)
  • Revision ID: package-import@ubuntu.com-20130116122942-x86e42akjq31repw
Tags: 0.0.0+20130107.gitd9656f41-1
* New upstream snashot
* No longer try to rebuild helpdb.jl.
   + debian/rules: remove helpdb.jl from build-arch rule
   + debian/control: move back python-sphinx to Build-Depends-Indep
* debian/copyright: reflect upstream changes
* Add Build-Conflicts on libatlas3-base (makes linalg tests fail)
* debian/rules: replace obsolete USE_DEBIAN makeflag by a list of
  USE_SYSTEM_* flags
* debian/rules: on non-x86 systems, use libm instead of openlibm
* dpkg-buildflags.patch: remove patch, applied upstream
* Refreshed other patches

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
*DECK CLNREL
 
2
      COMPLEX FUNCTION CLNREL (Z)
 
3
C***BEGIN PROLOGUE  CLNREL
 
4
C***PURPOSE  Evaluate ln(1+X) accurate in the sense of relative error.
 
5
C***LIBRARY   SLATEC (FNLIB)
 
6
C***CATEGORY  C4B
 
7
C***TYPE      COMPLEX (ALNREL-S, DLNREL-D, CLNREL-C)
 
8
C***KEYWORDS  ELEMENTARY FUNCTIONS, FNLIB, LOGARITHM
 
9
C***AUTHOR  Fullerton, W., (LANL)
 
10
C***DESCRIPTION
 
11
C
 
12
C CLNREL(Z) = LOG(1+Z) with relative error accuracy near Z = 0.
 
13
C Let   RHO = ABS(Z)  and
 
14
C       R**2 = ABS(1+Z)**2 = (1+X)**2 + Y**2 = 1 + 2*X + RHO**2 .
 
15
C Now if RHO is small we may evaluate CLNREL(Z) accurately by
 
16
C       LOG(1+Z) = CMPLX  (LOG(R), CARG(1+Z))
 
17
C                 = CMPLX  (0.5*LOG(R**2), CARG(1+Z))
 
18
C                 = CMPLX  (0.5*ALNREL(2*X+RHO**2), CARG(1+Z))
 
19
C
 
20
C***REFERENCES  (NONE)
 
21
C***ROUTINES CALLED  ALNREL, CARG, R1MACH, XERMSG
 
22
C***REVISION HISTORY  (YYMMDD)
 
23
C   770401  DATE WRITTEN
 
24
C   890531  Changed all specific intrinsics to generic.  (WRB)
 
25
C   890531  REVISION DATE from Version 3.2
 
26
C   891214  Prologue converted to Version 4.0 format.  (BAB)
 
27
C   900315  CALLs to XERROR changed to CALLs to XERMSG.  (THJ)
 
28
C***END PROLOGUE  CLNREL
 
29
      COMPLEX Z
 
30
      SAVE SQEPS
 
31
      DATA SQEPS /0.0/
 
32
C***FIRST EXECUTABLE STATEMENT  CLNREL
 
33
      IF (SQEPS.EQ.0.) SQEPS = SQRT (R1MACH(4))
 
34
C
 
35
      IF (ABS(1.+Z) .LT. SQEPS) CALL XERMSG ('SLATEC', 'CLNREL',
 
36
     +   'ANSWER LT HALF PRECISION BECAUSE Z TOO NEAR -1', 1, 1)
 
37
C
 
38
      RHO = ABS(Z)
 
39
      IF (RHO.GT.0.375) CLNREL = LOG (1.0+Z)
 
40
      IF (RHO.GT.0.375) RETURN
 
41
C
 
42
      X = REAL(Z)
 
43
      CLNREL = CMPLX (0.5*ALNREL(2.*X+RHO**2), CARG(1.0+Z))
 
44
C
 
45
      RETURN
 
46
      END