div.c

Go to the documentation of this file.
00001 /*
00002  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
00003  * See the copyright notice in the ACK home directory, in the file "Copyright".
00004  */
00005 /* $Header: /opt/proj/minix/cvsroot/src/lib/ansi/div.c,v 1.1.1.1 2005/04/21 14:56:04 beng Exp $ */
00006 
00007 #include        <stdlib.h>
00008 
00009 static int tmp = -1;
00010 
00011 div_t
00012 div(register int numer, register int denom)
00013 {
00014         div_t r;
00015 
00016         /* The assignment of tmp should not be optimized !! */
00017         if (tmp == -1) {
00018                 tmp = (tmp / 2 == 0);
00019         }
00020         if (numer == 0) {
00021                 r.quot = numer / denom;         /* might trap if denom == 0 */
00022                 r.rem = numer % denom;
00023         } else if ( !tmp && ((numer < 0) != (denom < 0))) {
00024                 r.quot = (numer / denom) + 1;
00025                 r.rem = numer - (numer / denom + 1) * denom;
00026         } else {
00027                 r.quot = numer / denom;
00028                 r.rem = numer % denom;
00029         }
00030         return r;
00031 }

Generated on Fri Apr 14 22:57:25 2006 for minix by  doxygen 1.4.6