File: CARITH.RA of Tape: Sources/Fortran/os8-f4-3
(Source file text)
/COMPLEX ARITHMETIC ROUTINES / (A+BI)+-*/(C+DI) / / VERSION 40A 23-MAY-80 WVDM / / DPCHK SECT #CAD JA . FSTA #CARG /SAVE SECOND ARG STARTF FLDA #CARG /STARTF ROUNDS FADD #CAC /A:=A+C FSTA #CAC FLDA #CARG+3 FADD #CAC+3 /B:=B+D FSTA #CAC+3 STARTE JA #CAD ENTRY #CSB #CSB, JA . FSTA #CARG STARTF FLDA #CAC /STARTF ROUNDS FSUB #CARG FSTA #CAC /A:=A-C FLDA #CAC+3 FSUB #CARG+3 /B:=B-D FSTA #CAC+3 STARTE JA #CSB ENTRY #CNG #CNG, JA . STARTF FLDA #CAC FNEG FSTA #CAC /A:=-A FLDA #CAC+3 FNEG FSTA #CAC+3 /B:=-B STARTE JA #CNG ENTRY #CEQ #CEQ, JA . JSA #CSB /CAC:=CAC-CARG STARTF FLDA #CAC JNE NOTEQ FLDA #CAC+3 JNE NOTEQ FLDA ONE JA #CEQ NOTEQ, FCLA JA #CEQ ONE, F 1.0 ENTRY #CML #CML, JA . FSTA #CARG STARTF FLDA #CARG /STARTF ROUNDS FMUL #CAC /T1:=A*C FSTA TEMP1 FLDA #CARG+3 FMUL #CAC+3 /T2:=B*D FSTA TEMP2 FLDA #CARG FMUL #CAC+3 /B:=B*C FSTA #CAC+3 FLDA #CAC FMUL #CARG+3 /A*D FADD #CAC+3 /B:=A*D+B*C FSTA #CAC+3 FLDA TEMP1 FSUB TEMP2 /A:=A*C-B*D FSTA #CAC STARTE JA #CML ENTRY #CDV #CDV, JA . FSTA #CARG STARTF FLDA #CARG /STARTF ROUNDS FMUL #CAC+3 /T1:=B*C FSTA TEMP1 FLDA #CARG+3 FMUL #CAC /T2:=A*D FSTA TEMP2 FLDA #CARG FMUL #CAC /A:=A*C FSTA #CAC FLDA #CAC+3 FMUL #CARG+3 /B*D FADD #CAC /A:=A*C+B*D FSTA #CAC FLDA #CARG FMUL #CARG /C:=C*C FSTA #CARG FLDA #CARG+3 FMUL #CARG+3 /D*D FADD #CARG /C:=C*C+D*D FSTA #CARG FLDA TEMP1 FSUB TEMP2 /B*C-A*D FDIV #CARG /B:=(B*C-A*D)/(C*C+D*D) FSTA #CAC+3 FLDA #CAC FDIV #CARG /A:=(A*C+B*D)/(C*C+D*D) FSTA #CAC STARTE JA #CDV TEMP1, 0;0;0 TEMP2, 0;0;0 #CARG, 0;0;0 0;0;0 ENTRY #CAC #CAC, 0;0;0 0;0;0 END