software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / SQRT.SB
diff --git a/sw/os8/v3d/sources/system/dectapes/dectape3/SQRT.SB b/sw/os8/v3d/sources/system/dectapes/dectape3/SQRT.SB
new file mode 100644 (file)
index 0000000..0bb2701
--- /dev/null
@@ -0,0 +1,117 @@
+/SQUARE ROOT SUBROUTINE                          OS8 FORTRAN II LIBRARY 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 4A
+/      VERSION NUMBER IS AVAILABLE AT ENTRY POINTS
+       ENTRY   SQRT
+/
+/      SQUARE ROOT ROUTINE
+/      IF X0 IS AN APPROXIMATION FOR Y**(1/2)
+/      THEN (X0+(Y/X0))/2 IS A BETTER APPROXIMATION
+/
+X0,    BLOCK   3
+Y,     BLOCK   3
+CNT,   BLOCK   1
+/
+/
+       CPAGE   4
+SQER,  6321                 /"SQRT" ERROR FROM LOC XXXXX
+       2224
+SQRT,  BLOCK   1
+       4            /ENTRY POINT
+       TAD I   SQRT
+       DCA     IN
+       INC     SQRT#
+       TAD I   SQRT
+       DCA     IN#
+       ISZ     SQRT#
+       CALL    1,FAD
+IN,    ARG     0
+       CALL    1,STO        /Y=ARGUMENT
+       ARG     Y
+       CALL    1,FAD
+       ARG     Y
+       TAD     ACH          /IF Y NEGATIVE THEN ERROR
+       SMA
+       JMP     POS
+       CALL    1,ERROR
+       ARG     SQER
+       CLA CLL CMA RAR
+       AND     ACH
+POS,   SZA                  /IF Y=0 THEN ROOT=0
+       JMP     NONZ
+       RETRN   SQRT
+NONZ,  RAR CLL              /FORM INITIAL APPROXIMATION
+       TAD     (1004
+       DCA     ACH
+       TAD     ACM
+       RAR
+       DCA     ACM
+       TAD     ACL
+       RAR
+       DCA     ACL
+       TAD     ACH
+       AND     (4
+       SNA CLA
+       TAD     (2
+       TAD     ACH
+       DCA     ACH
+       TAD     (-3          /DO 3 ITERATIONS
+       DCA     CNT
+INIT,  CALL    1,STO
+       ARG     X0
+       CALL    1,FAD
+       ARG     Y
+       CALL    1,FDV        /Y/X0
+       ARG     X0
+       CALL    1,FAD        /(Y/X0)+X0
+       ARG     X0
+       TAD     ACH          /((Y/X0)+X0)/2
+       TAD     (7770
+       DCA     ACH
+       ISZ     CNT
+       JMP     INIT
+       RETRN   SQRT
+       END
+\f