; SUBROUTINE FLINTP.MAC ; FLOATING POINT INTERPOLATION FUNCTION ; IF Y = F(X) AND FOR X1 AND X2 A CORRESPONDING ; Y1 AND Y2 ARE KNOWN, THEN GIVEN X0 BETWEEN ; X1 AND X2, Y0 WILL BE CALCULATED BY ; LINEAR INTERPOLATION. ; FORTRAN CALL: ; Y0 = FLINTP(X1,X2,Y1,Y2,X0) ; ; DEFINE FLOATING REGISTERS: AC0=%0 AC1=%1 AC2=%2 AC3=%3 .TITLE FLINTP .CSECT .GLOBL FLINTP ; IF THE CONDITION OF THE FP STATUS REGISTER IS UNKNOWN ; THE FOLLOWING COMMANDS SHOULD BE THE FIRST TWO IN THE ; SUBROUTINE: ; SETI ; SETF FLINTP: LDF @12(R5),AC3 ;X0 IN AC3 LDF @4(R5),AC2 ;X2 IN AC2 SUBF @2(R5),AC3 ;X0-X1 IN AC3 SUBF @2(R5),AC2 ;X2-X1 IN AC2 DIVF AC2,AC3 ;(X0-X1)/(X2-X1) IN AC3 LDF @10(R5),AC1 ;Y2 IN AC1 LDF @6(R5),AC0 ;Y1 IN AC0 SUBF AC0,AC1 ;Y2-Y1 IN AC1 MULF AC3,AC1 ;(X0-X1)(Y2-Y1)/(X2-X1) IN AC1 ADDF AC1,AC0 ;ANSWER IN AC0 STF AC0,-(SP) ;PUT IT ON STACK MOV (SP)+,R0 ;AND POP TO MOV (SP)+,R1 ;REGISTERS RTS PC ;DONE .END