software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / ATAN.SB
diff --git a/sw/os8/v3d/sources/system/dectapes/dectape3/ATAN.SB b/sw/os8/v3d/sources/system/dectapes/dectape3/ATAN.SB
new file mode 100644 (file)
index 0000000..eab3420
--- /dev/null
@@ -0,0 +1,151 @@
+/ARCTANGENT ROUTINE                       OS8 FORTRAN II LIBRARY
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/COPYRIGHT  (C)  1974,1977 BY DIGITAL EQUIPMENT CORPORATION
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
+/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
+/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
+/FOR ANY ERRORS THAT MAY APPEAR IN THIS MANUAL.
+/
+/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
+/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
+/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
+/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
+/
+/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
+/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
+/DIGITAL.
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/
+\f/     VERSION 11A
+/      VERSION NUMBER IS AVAILABLE AT ENTRY POINTS
+       ENTRY   ATAN
+
+ATAN,  BLOCK   1
+       11
+       TAD     ATAN
+       DCA     L4
+       TAD     ATAN#
+       DCA     L4#
+       INC     ATAN#
+       INC     ATAN#
+       CALL    1,IFAD
+L4,    ARG     0
+       CLL
+       TAD     ACH
+       SNA
+       JMP     EXIT
+       SPA
+       TAD     (4000
+       DCA     ACH             /TAKE ABSVAL OF ARGUMENT
+       RAR
+       DCA     SIGN            /AND REMEMBER SIGN
+       TAD     ACH
+       TAD     (-2014
+       SPA CLA
+       JMP     LSTN45          /IF ARG>1,
+       JMS     INVRS           /INVERT ARG - SUBTRACT RESULT FROM PI/2
+       CLA CMA
+LSTN45,        DCA     L4#             /L4# IS THE "PI/2-RESULT" SWITCH
+       TAD     ACH
+       TAD     (-1774          /THIS IS AN APPROXIMATE TEST TO SEE
+       SPA CLA                 /IF THE NEW ARG IS <2-SQRT(3)
+       JMP     LSTN15          /IF IT IS,
+       CALL    1,FAD           /PERFORM A "DIFFERENCE OF TANGENTS"
+       ARG     SQRT3           /TRANSFORMATION TO SUBTRACT PI/6
+       TAD     (20
+       JMS     INVRS           /FROM THE RESULT. THE ARG IS TRANSFORMED
+       CALL    0,CHS           /INTO SQRT(3)-4/(ARG+SQRT(3))
+       CALL    1,FAD
+SQT3,  ARG     SQRT3
+       CLA CMA
+LSTN15,        DCA     INVRS           /USE INVRS AS A SWITCH TO INDICATE THIS
+       CALL    1,STO           /TRANSFORMATION OCCURRED
+       ARG     T
+       TAD     (-4
+       DCA     L4
+       TAD     SQT3#
+       DCA     L3#
+ATLOOP,        INC     L3#             /NOW PERFORM A STANDARD TAYLOR SERIES
+       INC     L3#             /EXPANSION (WITH TRUNCATED COEFFICIENTS)
+       INC     L3#
+       CALL    1,FAD           /CONVERGENCE WILL BE GOOD SINCE WE
+L3,    ARG     SQRT3           /HAVE MADE THE ARGUMENT BE <.3
+       JMS     FMPT
+       JMS     FMPT
+       ISZ     L4
+       JMP     ATLOOP
+       JMS     FMPT
+       CALL    1,FAD
+       ARG     T               /FINISH UP THE SERIES
+       ISZ     INVRS
+       JMP     NOPI6
+       CALL    1,FAD           /ADD PI/6 IF NECESSARY
+       ARG     PIOVR6
+NOPI6, ISZ     L4#
+       JMP     NOPI2
+       CALL    0,CHS           /SUBTRACT FROM PI/2 IF NECESSARY
+       CALL    1,FAD
+       ARG     PIOVR2
+NOPI2, TAD     SIGN
+       TAD     ACH             /SET SIGN OF RESULT = SIGN OF ARGUMENT
+       DCA     ACH
+EXIT,  RETRN   ATAN
+
+INVRS, 0               /INVERSION SUBROUTINE
+       TAD     (2014   /ENTERED WITH AC=0 OR 20
+       DCA     L4      /AC=0 MEANS 1/FAC, AC=20 MEANS 4/FAC
+       CALL    1,STO
+       ARG     T
+       TAD     L4
+       DCA     ACH     /ACM AND ACL WERE CLEARED BY STORE
+       CALL    1,FDV
+       ARG     T
+       JMP I   INVRS
+
+FMPT,  0               /SUBROUTINE TO MULTIPLY BY T
+       CALL    1,FMP   /SAVES A FEW MEASLY LOCATIONS
+       ARG     T
+       JMP I   FMPT
+
+SIGN,  0               /CELL FOR HOLDING SIGN OF ARG
+T,     BLOCK   3       /FLOATING TEMPORARY
+
+       PAGE
+
+PIOVR6,        2004;1405;2216  /PI/6
+PIOVR2,        2016;2207;7325
+SQRT3, 2016;7331;7272  /SQRT(3)
+/THE NEXT 4 NUMBERS MUST IMMEDIATELY FOLLOW SQRT3
+       1756;0462;4562  /APPROXIMATELY 1/9
+       5764;4221;3403  /APPROXIMATELY -1/7
+       1766;3141;6672  /APPROXIMATELY 1/5
+       5775;2525;2337  /APPROXIMATELY -1/3
+
+       END
+\f