* * $Id: dclaus64.F,v 1.2 1996/04/02 16:23:45 mclareni Exp $ * * $Log: dclaus64.F,v $ * Revision 1.2 1996/04/02 16:23:45 mclareni * More precise dclaus64 (C326), test added and C344 removed from TESTALL * * Revision 1.1.1.1 1996/04/01 15:02:03 mclareni * Mathlib gen * * #include "gen/pilot.h" #if defined(CERNLIB_DOUBLE) FUNCTION DCLAUS(X) IMPLICIT DOUBLE PRECISION (A-H,O-Z) #endif #if !defined(CERNLIB_DOUBLE) FUNCTION RCLAUS(X) #include "gen/imp64.inc" #endif DIMENSION A(0:8),B(0:13) PARAMETER (R1 = 1, HF =R1/2) PARAMETER (PI = 3.14159 26535 89793 24D0) PARAMETER (PI2 = 2*PI, PIH = PI/2, RPIH = 2/PI) DATA A( 0) / 0.02795 28319 73575 6613D0/ DATA A( 1) / 0.00017 63088 74389 8116D0/ DATA A( 2) / 0.00000 12662 74146 1157D0/ DATA A( 3) / 0.00000 00117 17181 8134D0/ DATA A( 4) / 0.00000 00001 23006 4129D0/ DATA A( 5) / 0.00000 00000 01395 2729D0/ DATA A( 6) / 0.00000 00000 00016 6908D0/ DATA A( 7) / 0.00000 00000 00000 2076D0/ DATA A( 8) / 0.00000 00000 00000 0027D0/ DATA B( 0) / 0.63909 70888 57265 341D0/ DATA B( 1) /-0.05498 05693 01851 716D0/ DATA B( 2) /-0.00096 12619 45950 606D0/ DATA B( 3) /-0.00003 20546 86822 550D0/ DATA B( 4) /-0.00000 13294 61695 426D0/ DATA B( 5) /-0.00000 00620 93601 824D0/ DATA B( 6) /-0.00000 00031 29600 656D0/ DATA B( 7) /-0.00000 00001 66351 954D0/ DATA B( 8) /-0.00000 00000 09196 527D0/ DATA B( 9) /-0.00000 00000 00524 004D0/ DATA B(10) /-0.00000 00000 00030 580D0/ DATA B(11) /-0.00000 00000 00001 820D0/ DATA B(12) /-0.00000 00000 00000 110D0/ DATA B(13) /-0.00000 00000 00000 007D0/ V=MOD(ABS(X),PI2) S=SIGN(R1,X) IF(V .GT. PI) THEN V=PI2-V S=-S ENDIF IF(V .EQ. 0 .OR. V .EQ. PI) THEN H=0 ELSEIF(V .LT. PIH) THEN U=RPIH*V H=2*U**2-1 ALFA=H+H B1=0 B2=0 DO 1 I = 8,0,-1 B0=A(I)+ALFA*B1-B2 B2=B1 1 B1=B0 H=V*(1-LOG(V)+HF*V**2*(B0-H*B2)) ELSE U=RPIH*V-2 H=2*U**2-1 ALFA=H+H B1=0 B2=0 DO 2 I = 13,0,-1 B0=B(I)+ALFA*B1-B2 B2=B1 2 B1=B0 H=(PI-V)*(B0-H*B2) ENDIF DCLAUS=S*H RETURN END