/FLOATING INTEGER FUNCTIONS FOR USE WITH FORTRAN /"FLINT" IS SIMPLE TRUNCATION (DROPS ALL AFTER . ) /"GRINT" IS GREATEST INTEGER FUNCTION /"ROUND" ROUNDS TO THE NEAREST (+ OR -) INTEGER /MAY '73 OPDEF TADI 1400 /---------- ENTRY FLINT FLINT, BLOCK 2 JMS FETCHX /GET THE ARGUMENT ^ADD, JMS ADD0 /INTEGERIZE IT RETRN FLINT /---------- ENTRY GRINT GRINT, BLOCK 2 TAD GRINT DCA FLINT TAD GRINT# DCA FLINT# JMS FETCHX /GET THE ARG. TAD X1 /IS THE NUMBER NEGATIVE? SMA CLA JMP ^ADD /NO, SO PROCEED WITH FLINT CALL 1, FAD /YES, SO ADD -0.9999999 ARG ALMOS1 JMP ^ADD /---------- ENTRY ROUND ROUND, BLOCK 2 TAD ROUND DCA FLINT TAD ROUND# DCA FLINT# JMS FETCHX TAD X1 SPA CLA CLL CML RAR /4000, I.E. " - " TAD HALF1 DCA HALF CALL 1, FAD ARG HALF / 0.5 * SGN(X) JMP ^ADD /---------- FETCHX, 0 TAD FLINT DCA CDF1 CDF1, 0 /WILL HOLD DATA FIELD OF CALL TADI FLINT# DCA CDFX INC FLINT# TADI FLINT# DCA ADRSX INC FLINT# CDFX, 0 /WILL HOLD DATA FIELD OF ARG. TADI ADRSX DCA X1 INC ADRSX TADI ADRSX DCA X2 INC ADRSX TADI ADRSX DCA X3 DCA ACH DCA ACM DCA ACL JMP I FETCHX ADD0, 0 CALL 1, FAD ARG X1 CALL 1, FAD ARG ZERO JMP I ADD0 ZERO, 2330 /THIS FORCES E.G. 1.5 TO ROTATE 0 / 26 PLACES TO THE RIGHT, SO THAT 0 / THE NON-INTEGER BITS ARE LOST. ALMOS1, 6007 /ABT. -0.9999999 7777 7776 HALF1, 2004 HALF, 0 /WILL BE 2004 OR 6004 0 0 X1, 0 X2, 0 X3, 0 ADRSX, 0 /ADDRESS OF ARG., IN ITS OWN FIELD END