software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / SQRT.SB
CommitLineData
7af5ad59
PH
1/SQUARE ROOT SUBROUTINE OS8 FORTRAN II LIBRARY LIBRARY
2/
3/
4/
5/
6/
7/
8/
9/
10/
11/COPYRIGHT (C) 1974,1977 BY DIGITAL EQUIPMENT CORPORATION
12/
13/
14/
15/
16/
17/
18/
19/
20/
21/
22/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24/CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25/FOR ANY ERRORS THAT MAY APPEAR IN THIS MANUAL.
26/
27/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
31/
32/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
34/DIGITAL.
35/
36/
37/
38/
39/
40/
41/
42/
43/
44/
45\f/ VERSION 4A
46/ VERSION NUMBER IS AVAILABLE AT ENTRY POINTS
47 ENTRY SQRT
48/
49/ SQUARE ROOT ROUTINE
50/ IF X0 IS AN APPROXIMATION FOR Y**(1/2)
51/ THEN (X0+(Y/X0))/2 IS A BETTER APPROXIMATION
52/
53X0, BLOCK 3
54Y, BLOCK 3
55CNT, BLOCK 1
56/
57/
58 CPAGE 4
59SQER, 6321 /"SQRT" ERROR FROM LOC XXXXX
60 2224
61SQRT, BLOCK 1
62 4 /ENTRY POINT
63 TAD I SQRT
64 DCA IN
65 INC SQRT#
66 TAD I SQRT
67 DCA IN#
68 ISZ SQRT#
69 CALL 1,FAD
70IN, ARG 0
71 CALL 1,STO /Y=ARGUMENT
72 ARG Y
73 CALL 1,FAD
74 ARG Y
75 TAD ACH /IF Y NEGATIVE THEN ERROR
76 SMA
77 JMP POS
78 CALL 1,ERROR
79 ARG SQER
80 CLA CLL CMA RAR
81 AND ACH
82POS, SZA /IF Y=0 THEN ROOT=0
83 JMP NONZ
84 RETRN SQRT
85NONZ, RAR CLL /FORM INITIAL APPROXIMATION
86 TAD (1004
87 DCA ACH
88 TAD ACM
89 RAR
90 DCA ACM
91 TAD ACL
92 RAR
93 DCA ACL
94 TAD ACH
95 AND (4
96 SNA CLA
97 TAD (2
98 TAD ACH
99 DCA ACH
100 TAD (-3 /DO 3 ITERATIONS
101 DCA CNT
102INIT, CALL 1,STO
103 ARG X0
104 CALL 1,FAD
105 ARG Y
106 CALL 1,FDV /Y/X0
107 ARG X0
108 CALL 1,FAD /(Y/X0)+X0
109 ARG X0
110 TAD ACH /((Y/X0)+X0)/2
111 TAD (7770
112 DCA ACH
113 ISZ CNT
114 JMP INIT
115 RETRN SQRT
116 END
117\f