len@elxsi.UUCP (Len Mills) (12/01/88)
In article <1034@l.cc.purdue.edu> cik@l.cc.purdue.edu (Herman Rubin) writes: >> |In article <1032@l.cc.purdue.edu> cik@l.cc.purdue.edu (Herman Rubin) writes: >> |... >> |> suppose we want to >> |>divide a by b, obtaining an integer result i and a remainder c. I know >> |>of no machine with this instruction, and this is not that unusual an >> |>instruction to demand. It is cheap in hardware, and extremely expensive >> |>in software--at least 4 instructions. >I do not know if I made it clear in my initial posting, but the problem >arises if the types of a, b, and c are floating. Not that the quote from >my paper specifically has i an integer. If I understand correctly, what you are looking for is a Floating Point Remainder instruction. The ELXSI 6400 series include the FREM instructions for the various IEEE floating point formats. The behavior of these instructions is: Divide Rz by Ry to produce (for non-zero quotients) a new value in Rx which consists of the low-order 64 bits of the rounded two's complement integer quotient, and replacing Rz by the remainder in floating-point form. The remainder is defined to be Rz - (( Rz/Ry rounded to the nearest integer) * Ry), such that -0.5 * abs (divisor) <= remainder <= +0.5 * abs (divisor). Of course, the RISCyness of this design is open to debate (:-). -- Len Mills ... {uunet,ucbvax!sun,lll-lcc!lll-tis,altos86,bridge2}!elxsi!len