| 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 | / |
| 53 | X0, BLOCK 3 |
| 54 | Y, BLOCK 3 |
| 55 | CNT, BLOCK 1 |
| 56 | / |
| 57 | / |
| 58 | CPAGE 4 |
| 59 | SQER, 6321 /"SQRT" ERROR FROM LOC XXXXX |
| 60 | 2224 |
| 61 | SQRT, 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 |
| 70 | IN, 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 |
| 82 | POS, SZA /IF Y=0 THEN ROOT=0 |
| 83 | JMP NONZ |
| 84 | RETRN SQRT |
| 85 | NONZ, 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 |
| 102 | INIT, 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 |