File: DSQRT.LS of Disk: V50/Source/Source-Listing-RALF-1
(Source file text) 


RALF V50A    8-APR-92    PAGE 1

            /D=DSQRT(D) DOUBLE PREC. SQUARE ROOT
            /
            /
            / VERSION 50A 07.04.20
            /
            /
                    SECT    DSQRT
00000 1030          JA      #DSQRT
00001 0057  
                    DPCHK
00002 0423          TEXT    +DSQRT +
00003 2122  
00004 2440  
            /
00005 1100  DSQXR,  SETX    XRDSQ
00006 0016  
00007 1110          SETB    BPDSQ
00010 0013  
00011 1030          JA      .+3
00012 0014  
00013 0000  BPDSQ,  F 0.0
00014 0000  
00015 0000  
00016 0000  XRDSQ,  F 0.0
00017 0000  
00020 0000  
00021 0000  DARSAV, F 0.0
00022 0000  
00023 0000  
00024 0000          F 0.0
00025 0000  
00026 0000  
00027 0002  DSQ2,   F 2.0
00030 2000  
00031 0000  
00032 0000          F 0.0
00033 0000  
00034 0000  
00035 0000  SNGL,   F 0.0
00036 0000  
00037 0000  
00040 0000          F 0.0
00041 0000  
00042 0000  
                    ORG 10*3+BPDSQ
00043 0040          FNOP
00044 1030          JA      DSQXR
00045 0005  
            /
00046 0000          0
00047 1030  DSQRTN, JA      .
00050 0047  
00051 0000  DSQ1,   F 0.0
00052 0000  
00053 0000  
00054 0000          F 0.0
RALF V50A    8-APR-92    PAGE 1-1

00055 0000  
00056 0000  
            /PICK UP ARGUMENTS
                    BASE    0
00057 0006  #DSQRT, STARTD
00060 0210          FLDA    10*3
00061 6400          FSTA    DSQRTN
00062 0047  
00063 0200          FLDA    0
00064 1100          SETX    XRDSQ
00065 0016  
00066 1110          SETB    BPDSQ
00067 0013  
                    BASE    BPDSQ
00070 0101          LDX     1,1
00071 0001  
00072 6200          FSTA    BPDSQ
00073 0610          FLDA%   BPDSQ,1 /ADDR OF X
00074 6200          FSTA    BPDSQ
            /
            /DO GENERAL TESTS ON THE ARGUMENT
            /
00075 0050          STARTE
00076 0600          FLDA%   BPDSQ
00077 1000          JEQ     DSQRTN  /RETURN IF 0
00100 0047  
00101 1050          JLT     DSQER   /<0 ERROR
00102 0132  
00103 6202          FSTA    DARSAV  /SAVE DOUBLE
00104 0005          STARTF          /F MODE + ROUND
00105 6206          FSTA    SNGL    /SAVE
            /
            /GET INITIAL APPROXIMATION BY CALLING
            /SINGLE PRECISION ROUTINE
            /
                    EXTERN  SQRT
00106 1130          JSR     SQRT
00107 0000  
00110 1030          JA      .+4
00111 0114  
00112 1030          JA      SNGL
00113 0035  
00114 6206          FSTA    SNGL    /FIRST APPROX
00115 0050          STARTE          /BACK TO E
            /
            /TAKE N ITERATIONS OF
            /X(K+1)=1/2(X(K)+X/X(K))
            /
00116 0100          LDX     -3,0    /3 TIMES
00117 7775  
00120 0202  DSIT,   FLDA    DARSAV  /GET X
00121 3206          FDIV    SNGL    /X(K)
00122 1206          FADD    SNGL    /X(K)
00123 3204          FDIV    DSQ2    /DIVIDE BY 2
00124 6206          FSTA    SNGL    /X(K+1)
00125 2100          JXN     DSIT,0+ /ITERATE
RALF V50A    8-APR-92    PAGE 1-2

00126 0120  
00127 0206          FLDA    SNGL    /GET ANSWER
00130 1030          JA      DSQRTN  /RETURN
00131 0047  
                    EXTERN  #ARGER
00132 4000  DSQER,  TRAP4   #ARGER
00133 0000  
RALF V50A    8-APR-92    PAGE 2

            
RALF V50A    8-APR-92    PAGE 2-1

NO ERRORS 
14 SYMBOLS, NO ABS REFS 

 #      C 00000   #ARGER X 00000   #DSQRT   00057   #MAIN  S 00000  
 BPDSQ    00013   DARSAV   00021   DSIT     00120   DSQER    00132  
 DSQRT  S 00134   DSQRTN   00047   DSQXR    00005   DSQ1     00051  
 DSQ2     00027   SNGL     00035   SQRT   X 00000   XRDSQ    00016