16 May 1999 14:10:25 -0400

Related articles |
---|

Rounding with Div and Mod operators william.rayer@virgin.net (William Rayer) (1999-05-09) |

Re: Rounding with Div and Mod operators wclodius@aol.com (1999-05-16) |

Re: Rounding with Div and Mod operators ucapjab@ucl.ac.uk (Jonathan Barker) (1999-05-16) |

Re: Rounding with Div and Mod operators nr@labrador.cs.virginia.edu (Norman Ramsey) (1999-05-16) |

Re: Rounding with Div and Mod operators guerby@acm.org (Laurent Guerby) (1999-05-16) |

Re: Rounding with Div and Mod operators anton@mips.complang.tuwien.ac.at (1999-05-16) |

Re: Rounding with Div and Mod operators Scott.Daniels@Acm.Org (Scott.David.Daniels) (1999-05-16) |

Re: Rounding with Div and Mod operators cdg@nullstone.com (Christopher Glaeser) (1999-05-16) |

[12 later articles] |

From: | wclodius@aol.com (Wclodius) |

Newsgroups: | comp.compilers |

Date: | 16 May 1999 14:10:25 -0400 |

Organization: | AOL http://www.aol.com |

References: | 99-05-039 |

Keywords: | arithmetic, design |

<< Subject: Rounding with Div and Mod operators

From: "William Rayer" <william.rayer@virgin.net>

Date: Sun, May 9, 1999 4:47 PM

I'm writing a compiler for a new language which is to include the

integer division and integer remainder operators (div and mod). I have

some questions about the way these operators do rounding with negative

operands and would appreciate any feedback.

<snip>

[This has been debated at length over the years, and I've found the

argument to be similar to the byte order argument in that there are

advantages and disadvantages to both, but none strong enough to tip

the scales firmly in favor of one or the other. For what it's worth,

Fortran 90 uses round toward zero. -John]

>>

Precisely because there are arguments either way I would urge against

providing a single solution. For a new language design I would urge

the inclusion of two pairs of operators, e.g., div0 with mod0 and

divinf with modinf. Even Fortran 90 directly provides both options for

the remainder, with the MOD function providing the remainder under

rounding to zero and MODULO the remainder under rounding to minus

infinity, and indirectly provides other options for division by

conversion to REAL and application of ROUND, FLOOR, CEILING, etc.

If providing both pairs of operators is viewed as undesirable for

other reasons, and efficiency is a concern, then Fortran's rules are,

for better or worse, the preferred choice. At least partly because

efficient performance of Fortran has been of importance, and the other

dominant language in performance testing, C, has not defined its

rounding for negative values, virtually all processor are more

efficient rounding towards zero than rounding towards minus

infinity. As a result C9x will define its rounding to be compatible

with Fortran's.

William B. Clodius

Post a followup to this message

Return to the
comp.compilers page.

Search the
comp.compilers archives again.