* * $Id: strh064.F,v 1.1.1.1 1996/04/01 15:02:08 mclareni Exp $ * * $Log: strh064.F,v $ * Revision 1.1.1.1 1996/04/01 15:02:08 mclareni * Mathlib gen * * #include "gen/pilot.h" #if !defined(CERNLIB_DOUBLE) FUNCTION RSTRH0(X) #endif #if defined(CERNLIB_DOUBLE) FUNCTION DSTRH0(X) #include "gen/imp64.inc" #endif DIMENSION C1(0:15),C2(0:25),C3(0:16),C4(0:22) PARAMETER (Z1 = 1, R8 = Z1/8, R32 = Z1/32, CS = 3*Z1/10) PARAMETER (PI = 3.14159 26535 89793 24D0) PARAMETER (C0 = 2/PI, CC = 2/(3*PI)) DATA N1,N2,N3,N4 /15,25,16,22/ DATA C1( 0) / 1.00215 84560 99119 81D0/ DATA C1( 1) /-1.63969 29268 13091 47D0/ DATA C1( 2) / 1.50236 93961 82928 19D0/ DATA C1( 3) /-0.72485 11530 21218 72D0/ DATA C1( 4) / 0.18955 32737 10931 36D0/ DATA C1( 5) /-0.03067 05202 29880 00D0/ DATA C1( 6) / 0.00337 56144 73751 94D0/ DATA C1( 7) /-0.00026 96501 43126 02D0/ DATA C1( 8) / 0.00001 63746 16926 12D0/ DATA C1( 9) /-0.00000 07824 44085 08D0/ DATA C1(10) / 0.00000 00302 15931 88D0/ DATA C1(11) /-0.00000 00009 63266 45D0/ DATA C1(12) / 0.00000 00000 25793 37D0/ DATA C1(13) /-0.00000 00000 00588 54D0/ DATA C1(14) / 0.00000 00000 00011 58D0/ DATA C1(15) /-0.00000 00000 00000 20D0/ DATA C2( 0) / 0.99283 72757 64239 43D0/ DATA C2( 1) /-0.00696 89128 11386 25D0/ DATA C2( 2) / 0.00018 20510 37870 37D0/ DATA C2( 3) /-0.00001 06325 82528 44D0/ DATA C2( 4) / 0.00000 09819 82942 87D0/ DATA C2( 5) /-0.00000 01225 06454 45D0/ DATA C2( 6) / 0.00000 00189 40833 12D0/ DATA C2( 7) /-0.00000 00034 43582 26D0/ DATA C2( 8) / 0.00000 00007 11191 02D0/ DATA C2( 9) /-0.00000 00001 62887 44D0/ DATA C2(10) / 0.00000 00000 40656 81D0/ DATA C2(11) /-0.00000 00000 10915 05D0/ DATA C2(12) / 0.00000 00000 03120 05D0/ DATA C2(13) /-0.00000 00000 00942 02D0/ DATA C2(14) / 0.00000 00000 00298 48D0/ DATA C2(15) /-0.00000 00000 00098 72D0/ DATA C2(16) / 0.00000 00000 00033 94D0/ DATA C2(17) /-0.00000 00000 00012 08D0/ DATA C2(18) / 0.00000 00000 00004 44D0/ DATA C2(19) /-0.00000 00000 00001 68D0/ DATA C2(20) / 0.00000 00000 00000 65D0/ DATA C2(21) /-0.00000 00000 00000 26D0/ DATA C2(22) / 0.00000 00000 00000 11D0/ DATA C2(23) /-0.00000 00000 00000 04D0/ DATA C2(24) / 0.00000 00000 00000 02D0/ DATA C2(25) /-0.00000 00000 00000 01D0/ DATA C3( 0) / 0.55788 91446 48160 50D0/ DATA C3( 1) /-0.11188 32572 65698 16D0/ DATA C3( 2) /-0.16337 95812 52009 39D0/ DATA C3( 3) / 0.32256 93207 24059 02D0/ DATA C3( 4) /-0.14581 63236 72442 42D0/ DATA C3( 5) / 0.03292 67739 93740 35D0/ DATA C3( 6) /-0.00460 37214 20935 73D0/ DATA C3( 7) / 0.00044 34706 16331 40D0/ DATA C3( 8) /-0.00003 14209 95293 41D0/ DATA C3( 9) / 0.00000 17123 71993 80D0/ DATA C3(10) /-0.00000 00741 69870 05D0/ DATA C3(11) / 0.00000 00026 18376 71D0/ DATA C3(12) /-0.00000 00000 76858 39D0/ DATA C3(13) / 0.00000 00000 01906 70D0/ DATA C3(14) /-0.00000 00000 00040 52D0/ DATA C3(15) / 0.00000 00000 00000 75D0/ DATA C3(16) /-0.00000 00000 00000 01D0/ DATA C4( 0) / 1.00757 64729 38656 41D0/ DATA C4( 1) / 0.00750 31605 12482 57D0/ DATA C4( 2) /-0.00007 04393 32645 19D0/ DATA C4( 3) / 0.00000 26620 53933 82D0/ DATA C4( 4) /-0.00000 01884 11577 53D0/ DATA C4( 5) / 0.00000 00194 90149 58D0/ DATA C4( 6) /-0.00000 00026 12619 90D0/ DATA C4( 7) / 0.00000 00004 23626 90D0/ DATA C4( 8) /-0.00000 00000 79551 56D0/ DATA C4( 9) / 0.00000 00000 16799 73D0/ DATA C4(10) /-0.00000 00000 03907 20D0/ DATA C4(11) / 0.00000 00000 00985 43D0/ DATA C4(12) /-0.00000 00000 00266 36D0/ DATA C4(13) / 0.00000 00000 00076 45D0/ DATA C4(14) /-0.00000 00000 00023 13D0/ DATA C4(15) / 0.00000 00000 00007 33D0/ DATA C4(16) /-0.00000 00000 00002 42D0/ DATA C4(17) / 0.00000 00000 00000 83D0/ DATA C4(18) /-0.00000 00000 00000 30D0/ DATA C4(19) / 0.00000 00000 00000 11D0/ DATA C4(20) /-0.00000 00000 00000 04D0/ DATA C4(21) / 0.00000 00000 00000 02D0/ DATA C4(22) /-0.00000 00000 00000 01D0/ V=ABS(X) IF(V .LT. 8) THEN Y=R8*V H=2*Y**2-1 ALFA=H+H B1=0 B2=0 DO 1 I = N1,0,-1 B0=C1(I)+ALFA*B1-B2 B2=B1 1 B1=B0 H=Y*(B0-H*B2) ELSE R=1/V H=128*R**2-1 ALFA=H+H B1=0 B2=0 DO 2 I = N2,0,-1 B0=C2(I)+ALFA*B1-B2 B2=B1 2 B1=B0 #if defined(CERNLIB_DOUBLE) H=DBESY0(V)+C0*R*(B0-H*B2) #endif #if !defined(CERNLIB_DOUBLE) H= BESY0(V)+C0*R*(B0-H*B2) #endif END IF IF(X .LT. 0) H=-H GO TO 9 #if defined(CERNLIB_DOUBLE) ENTRY DSTRH1(X) #endif #if !defined(CERNLIB_DOUBLE) ENTRY RSTRH1(X) #endif V=ABS(X) IF(V .EQ. 0) THEN H=0 ELSEIF(V .LE. CS) THEN Y=V**2 R=1 H=1 DO 5 N = 1,INT(-8/LOG10(V)) H=-H*Y/((2*N+1)*(2*N+3)) 5 R=R+H H=CC*Y*R ELSE IF(V .LT. 8) THEN H=R32*V**2-1 ALFA=H+H B1=0 B2=0 DO 3 I = N3,0,-1 B0=C3(I)+ALFA*B1-B2 B2=B1 3 B1=B0 H=B0-H*B2 ELSE H=128/V**2-1 ALFA=H+H B1=0 B2=0 DO 4 I = N4,0,-1 B0=C4(I)+ALFA*B1-B2 B2=B1 4 B1=B0 #if defined(CERNLIB_DOUBLE) H=DBESY1(V)+C0*(B0-H*B2) #endif #if !defined(CERNLIB_DOUBLE) H= BESY1(V)+C0*(B0-H*B2) #endif END IF #if !defined(CERNLIB_DOUBLE) 9 RSTRH0=H #endif #if defined(CERNLIB_DOUBLE) 9 DSTRH0=H #endif RETURN END