* * $Id: gamma128.F,v 1.1.1.1 1996/04/01 15:01:54 mclareni Exp $ * * $Log: gamma128.F,v $ * Revision 1.1.1.1 1996/04/01 15:01:54 mclareni * Mathlib gen * * #include "gen/pilot.h" #if defined(CERNLIB_QUAD) #if !defined(CERNLIB_DOUBLE) FUNCTION DGAMMA(X) #endif #if defined(CERNLIB_DOUBLE) FUNCTION QGAMMA(X) #endif #include "gen/imp128.inc" CHARACTER NAME*(*) CHARACTER*80 ERRTXT #if !defined(CERNLIB_DOUBLE) PARAMETER (NAME = 'DGAMMA') DIMENSION C(0:26) DATA C( 0) / 3.65738 77250 83382 43849 88068 52039D0/ DATA C( 1) / 1.95754 34566 61268 26928 33742 32877D0/ DATA C( 2) / 0.33829 71138 26160 38915 58510 72725D0/ DATA C( 3) / 0.04208 95127 65575 49198 51083 97028D0/ DATA C( 4) / 0.00428 76504 82129 08770 04289 08116D0/ DATA C( 5) / 0.00036 52121 69294 61767 02198 21538D0/ DATA C( 6) / 0.00002 74006 42226 42200 27170 66599D0/ DATA C( 7) / 0.00000 18124 02333 65124 44603 04653D0/ DATA C( 8) / 0.00000 01096 57758 65997 06993 06003D0/ DATA C( 9) / 0.00000 00059 87184 04552 00046 94981D0/ DATA C(10) / 0.00000 00003 07690 80535 24777 70970D0/ DATA C(11) / 0.00000 00000 14317 93029 61915 76369D0/ DATA C(12) / 0.00000 00000 00651 08773 34803 70077D0/ DATA C(13) / 0.00000 00000 00025 95849 89822 27998D0/ DATA C(14) / 0.00000 00000 00001 10789 38922 59522D0/ DATA C(15) / 0.00000 00000 00000 03547 43620 16354D0/ DATA C(16) / 0.00000 00000 00000 00168 86075 02335D0/ DATA C(17) / 0.00000 00000 00000 00002 73543 57562D0/ DATA C(18) / 0.00000 00000 00000 00000 30297 74054D0/ DATA C(19) /-0.00000 00000 00000 00000 00571 22030D0/ DATA C(20) / 0.00000 00000 00000 00000 00090 76859D0/ DATA C(21) /-0.00000 00000 00000 00000 00005 04522D0/ DATA C(22) / 0.00000 00000 00000 00000 00000 40496D0/ DATA C(23) /-0.00000 00000 00000 00000 00000 02792D0/ DATA C(24) / 0.00000 00000 00000 00000 00000 00204D0/ DATA C(25) /-0.00000 00000 00000 00000 00000 00015D0/ DATA C(26) / 0.00000 00000 00000 00000 00000 00001D0/ #endif #if defined(CERNLIB_DOUBLE) PARAMETER (NAME = 'QGAMMA') DIMENSION C(0:27) DATA C( 0) / 3.65738 77250 83382 43849 88068 52039 34Q0/ DATA C( 1) / 1.95754 34566 61268 26928 33742 32876 84Q0/ DATA C( 2) / 0.33829 71138 26160 38915 58510 72725 40Q0/ DATA C( 3) / 0.04208 95127 65575 49198 51083 97027 90Q0/ DATA C( 4) / 0.00428 76504 82129 08770 04289 08116 23Q0/ DATA C( 5) / 0.00036 52121 69294 61767 02198 21538 33Q0/ DATA C( 6) / 0.00002 74006 42226 42200 27170 66598 98Q0/ DATA C( 7) / 0.00000 18124 02333 65124 44603 04653 06Q0/ DATA C( 8) / 0.00000 01096 57758 65997 06993 06002 52Q0/ DATA C( 9) / 0.00000 00059 87184 04552 00046 94980 50Q0/ DATA C(10) / 0.00000 00003 07690 80535 24777 70969 71Q0/ DATA C(11) / 0.00000 00000 14317 93029 61915 76369 12Q0/ DATA C(12) / 0.00000 00000 00651 08773 34803 70076 65Q0/ DATA C(13) / 0.00000 00000 00025 95849 89822 27997 94Q0/ DATA C(14) / 0.00000 00000 00001 10789 38922 59521 65Q0/ DATA C(15) / 0.00000 00000 00000 03547 43620 16353 80Q0/ DATA C(16) / 0.00000 00000 00000 00168 86075 02335 19Q0/ DATA C(17) / 0.00000 00000 00000 00002 73543 57561 54Q0/ DATA C(18) / 0.00000 00000 00000 00000 30297 74054 44Q0/ DATA C(19) /-0.00000 00000 00000 00000 00571 22030 32Q0/ DATA C(20) / 0.00000 00000 00000 00000 00090 76858 53Q0/ DATA C(21) /-0.00000 00000 00000 00000 00005 04522 44Q0/ DATA C(22) / 0.00000 00000 00000 00000 00000 40496 46Q0/ DATA C(23) /-0.00000 00000 00000 00000 00000 02791 84Q0/ DATA C(24) / 0.00000 00000 00000 00000 00000 00203 70Q0/ DATA C(25) /-0.00000 00000 00000 00000 00000 00014 54Q0/ DATA C(26) / 0.00000 00000 00000 00000 00000 00001 06Q0/ DATA C(27) /-0.00000 00000 00000 00000 00000 00000 07Q0/ #endif U=X IF(U .LE. 0) THEN H=0 WRITE(ERRTXT,101) U CALL MTLPRT(NAME,'C302.1',ERRTXT) GO TO 9 ENDIF F=1 IF(U .LT. 3) THEN DO 1 I = 1,INT(4-U) F=F/U 1 U=U+1 ELSE DO 2 I = 1,INT(U-3) U=U-1 2 F=F*U END IF H=U+U-7 ALFA=H+H B1=0 B2=0 #if !defined(CERNLIB_DOUBLE) DO 3 I = 26,0,-1 #endif #if defined(CERNLIB_DOUBLE) DO 3 I = 27,0,-1 #endif B0=C(I)+ALFA*B1-B2 B2=B1 3 B1=B0 H=F*(B0-H*B2) #if !defined(CERNLIB_DOUBLE) 9 DGAMMA=H #endif #if defined(CERNLIB_DOUBLE) 9 QGAMMA=H #endif RETURN 101 FORMAT('ARGUMENT IS NEGATIVE = ',1P,E15.1) END #endif