ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:08 2020 Source File: \s2etanh.asm 1 | *************************************************** S2I00010 2 | * * S2I00020 3 | * SUBROUTINE NAME- * S2I00030 4 | * FULL NAME- EXTENDED PRECISION FLOATING- * S2I00040 5 | * POINT HYPERBOLIC TANGENT FUNCTION. * S2I00050 6 | * CODE NAME- ETNH/ETANH * S2I00060 7 | * PURPOSE- THIS SUBPROGRAM COMPUTES THE HYPER- * S2I00070 8 | * BOLIC TANGENT OF AN EXTENDED PRECISION * S2I00080 9 | * FLOATING-POINT NUMBER. * S2I00090 10 | * METHOD-SEE IBM 1130 SUBROUTINE LIBRARY MANUAL.* S2I00100 11 | * CAPABILITIES AND LIMITATIONS- SEE IBM 1130 * S2I00110 12 | * SUBROUTINE LIBRARY MANUAL. * S2I00120 13 | * SPECIAL FEATURES- N/A * S2I00130 14 | * ADDITIONAL INFORMATION- * S2I00140 15 | * ESTIMATED EXECUTION TIME- SEE IBM 1130 * S2I00150 16 | * SUBROUTINE LIBRARY MANUAL * S2I00160 17 | * * S2I00170 18 | *************************************************** S2I00180 CALL ETANH -V1. 20 | EPR S2I00200 21 | ENT ETANH STANDARD FORTRAN NAME S2I00210 22 | ENT ETNH S2I00220 0000 0000 23 | ETANH DC 0 FORTRAN ENTRY S2I00230 0001 051C*58D7 24 | LIBF EGETP GET PARAMETER S2I00240 0002 0000 25 | ETNH DC 0 USER ENTRY S2I00250 0003 C37D 26 | LD 3 125 ADD ONE TO EXPONENT TO S2I00260 0004 801C 27 | A ONE DOUBLE X. S2I00270 0005 D37D 28 | STO 3 125 S2I00280 0006 901C 29 | S EXK CHK IF ARGUMENT GT 32 S2I00290 0007 4C30 0018R 30 | BSC L OUT1,-Z BR TOO LARGE....TANH=+1 S2I00300 0009 C37E 31 | LD 3 126 S2I00310 000A 4818 32 | BSC +- RESTORE EXPONENT TO ZERO IF S2I00320 000B D37D 33 | STO 3 125 MANTISSA IS ZERO. S2I00330 000C 059D*7540 34 | CALL EXPN OTHERWISE COMPUTE E**2X S2I00340 000E 0504*4100 35 | LIBF EADD (E**2X)+1 S2I00350 000F 0024R 36 | DC FLONE S2I00360 0010 058A*3580 37 | LIBF ESTO STORE IN Z S2I00370 0011 002AR 38 | DC Z S2I00380 0012 0504*4100 39 | LIBF EADD COMPUTE (E**2X)-1 S2I00390 0013 0027R 40 | DC MIN2 -2 =(E**2X)-1 S2I00400 0014 0510*9940 41 | LIBF EDIV TANH(X)=((E**2X)-1)/ S2I00410 0015 002AR 42 | DC Z ((E**2X)+1) S2I00420 0016 4C80 0002R 43 | BSC I ETNH EXIT S2I00430 0018 C37E 44 | OUT1 LD 3 126 GET THE SIGN BIT FROM THE S2I00440 0019 18A0 45 | SRT 32 MANTISSA.TANH(X)=+1 IF X S2I00450 001A 109F 46 | SLT 31 GT 32.TANH(X)=-1,X LT -32. S2I00460 001B E809 47 | OR FLONE+1 SET SIGN ON CONSTANT OF 1 S2I00470 001C DB7E 48 | STD 3 126 S2I00480 001D C004 49 | LD EXP1 GET PROPER EXPONENT S2I00490 001E D37D 50 | STO 3 125 S2I00500 001F 4C80 0002R 51 | BSC I ETNH EXIT S2I00510 52 | * S2I00520 53 | *CONSTANTS AREA S2I00530 54 | * S2I00540 0021 0001 55 | ONE DC 1 SINGLE WORD ONE S2I00550 0022 0081 56 | EXP1 DC 129 EXPONENT OF CON ONE S2I00560 0023 0085 57 | EXK DC 128+5 RANGE CHK CON S2I00570 0024 0081 4000 0000 58 | FLONE XFLC 1.0 EXTENDED PREC FLT PT ONE S2I00580 0027 0082 C000 0000 59 | MIN2 XFLC -2.0 EXTENDED PREC FLT PT -2 S2I00590 002A 0000 0000 0000 60 | Z XFLC 0.0 STORE DIVISOR S2I00600 002D 61 | END S2I00610 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced ETANH 0000R 23 ETNH 0002R 25 43 51 EXK 0023R 57 29 EXP1 0022R 56 49 FLONE 0024R 58 36 47 MIN2 0027R 59 40 ONE 0021R 55 27 OUT1 0018R 44 30 Z 002AR 60 38 42