* * $Id: cosint.F,v 1.1.1.1 1996/02/15 17:49:09 mclareni Exp $ * * $Log: cosint.F,v $ * Revision 1.1.1.1 1996/02/15 17:49:09 mclareni * Kernlib * * #include "kernnum/pilot.h" REAL FUNCTION COSINT(RX) REAL RX CHARACTER*6 ENAME LOGICAL MFLAG,RFLAG #if defined(CERNLIB_NUMHIPRE) REAL ZERO,ONE,TWO,EIGHT,CE,X,Y,R,H,ALFA,D REAL DCOSIN,B0,B1,B2,PP,QQ,C(0:13),P(0:22),Q(0:19) #endif #if defined(CERNLIB_NUMLOPRE) DOUBLE PRECISION ZERO,ONE,TWO,EIGHT,CE,X,Y,R,H,ALFA,D DOUBLE PRECISION DCOSIN,B0,B1,B2,PP,QQ,C(0:13),P(0:22),Q(0:19) DOUBLE PRECISION DX #endif DATA ZERO /0.0D0/, ONE /1.0D0/, TWO /2.0D0/ DATA EIGHT /8.0D0/, CE /0.57721 56649 0153D0/ DATA C( 0) /+1.94054 91464 836D0/ DATA C( 1) /+0.94134 09132 865D0/ DATA C( 2) /-0.57984 50342 930D0/ DATA C( 3) /+0.30915 72011 159D0/ DATA C( 4) /-0.09161 01792 208D0/ DATA C( 5) /+0.01644 37407 515D0/ DATA C( 6) /-0.00197 13091 952D0/ DATA C( 7) /+0.00016 92538 851D0/ DATA C( 8) /-0.00001 09393 296D0/ DATA C( 9) /+0.00000 05522 386D0/ DATA C(10) /-0.00000 00223 995D0/ DATA C(11) /+0.00000 00007 465D0/ DATA C(12) /-0.00000 00000 208D0/ DATA C(13) /+0.00000 00000 005D0/ DATA P( 0) /+0.96074 78397 5204D0/ DATA P( 1) /-0.03711 38962 1240D0/ DATA P( 2) /+0.00194 14398 8899D0/ DATA P( 3) /-0.00017 16598 8425D0/ DATA P( 4) /+0.00002 11263 7753D0/ DATA P( 5) /-0.00000 32716 3257D0/ DATA P( 6) /+0.00000 06006 9212D0/ DATA P( 7) /-0.00000 01258 6794D0/ DATA P( 8) /+0.00000 00293 2563D0/ DATA P( 9) /-0.00000 00074 5696D0/ DATA P(10) /+0.00000 00020 4105D0/ DATA P(11) /-0.00000 00005 9502D0/ DATA P(12) /+0.00000 00001 8323D0/ DATA P(13) /-0.00000 00000 5921D0/ DATA P(14) /+0.00000 00000 1997D0/ DATA P(15) /-0.00000 00000 0700D0/ DATA P(16) /+0.00000 00000 0254D0/ DATA P(17) /-0.00000 00000 0095D0/ DATA P(18) /+0.00000 00000 0037D0/ DATA P(19) /-0.00000 00000 0014D0/ DATA P(20) /+0.00000 00000 0006D0/ DATA P(21) /-0.00000 00000 0002D0/ DATA P(22) /+0.00000 00000 0001D0/ DATA Q( 0) /+0.98604 06569 6238D0/ DATA Q( 1) /-0.01347 17382 0830D0/ DATA Q( 2) /+0.00045 32928 4117D0/ DATA Q( 3) /-0.00003 06728 8652D0/ DATA Q( 4) /+0.00000 31319 9198D0/ DATA Q( 5) /-0.00000 04211 0196D0/ DATA Q( 6) /+0.00000 00690 7245D0/ DATA Q( 7) /-0.00000 00131 8321D0/ DATA Q( 8) /+0.00000 00028 3697D0/ DATA Q( 9) /-0.00000 00006 7329D0/ DATA Q(10) /+0.00000 00001 7340D0/ DATA Q(11) /-0.00000 00000 4787D0/ DATA Q(12) /+0.00000 00000 1403D0/ DATA Q(13) /-0.00000 00000 0433D0/ DATA Q(14) /+0.00000 00000 0140D0/ DATA Q(15) /-0.00000 00000 0047D0/ DATA Q(16) /+0.00000 00000 0017D0/ DATA Q(17) /-0.00000 00000 0006D0/ DATA Q(18) /+0.00000 00000 0002D0/ DATA Q(19) /-0.00000 00000 0001D0/ #if defined(CERNLIB_NUMHIPRE) ROUND(D) = D #endif #if defined(CERNLIB_NUMLOPRE) ROUND(D) = SNGL(D+(D-DBLE(SNGL(D)))) #endif ENAME='COSINT' X=RX #if defined(CERNLIB_NUMLOPRE) GOTO 9 ENTRY DCOSIN(DX) ENAME='DCOSIN' X=DX #endif 9 IF(X .EQ. ZERO) THEN CALL KERMTR('C336.1',LGFILE,MFLAG,RFLAG) IF(MFLAG) THEN IF(LGFILE .EQ. 0) THEN WRITE(*,100) ENAME ELSE WRITE(LGFILE,100) ENAME ENDIF ENDIF IF(.NOT.RFLAG) CALL ABEND IF(ENAME .EQ. 'COSINT') THEN COSINT=ZERO ELSE DCOSIN=ZERO ENDIF RETURN ENDIF IF(ABS(X) .LE. EIGHT) THEN Y=X/EIGHT H=TWO*Y**2-ONE ALFA=-TWO*H B1=ZERO B2=ZERO DO 1 I = 13,0,-1 B0=C(I)-ALFA*B1-B2 B2=B1 1 B1=B0 B1=CE+LOG(ABS(X))-B0+H*B2 ELSE R=ONE/X Y=EIGHT*R H=TWO*Y**2-ONE ALFA=-TWO*H B1=ZERO B2=ZERO DO 2 I = 22,0,-1 B0=P(I)-ALFA*B1-B2 B2=B1 2 B1=B0 PP=B0-H*B2 B1=ZERO B2=ZERO DO 3 I = 19,0,-1 B0=Q(I)-ALFA*B1-B2 B2=B1 3 B1=B0 QQ=B0-H*B2 B1=R*(QQ*SIN(X)-R*PP*COS(X)) ENDIF IF(ENAME .EQ. 'COSINT') THEN COSINT=ROUND(B1) ELSE DCOSIN=B1 ENDIF RETURN 100 FORMAT(7X,A6,' ... ARGUMENT ZERO') END