|
|
BSD 4.3reno
/*
* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* @(#)r_mod.c 5.4 11/3/86
*/
#ifndef tahoe
float flt_retval;
float r_mod(x,y)
float *x, *y;
{
double floor(), quotient = *x / *y;
if (quotient >= 0.0)
quotient = floor(quotient);
else
quotient = -floor(-quotient);
flt_retval = *x - (*y) * quotient ;
return(flt_retval);
}
#else tahoe
/* THIS IS BASED ON THE TAHOE REPR. FOR FLOATING POINT */
#include <tahoemath/FP.h>
double r_mod(x,y)
float *x, *y;
{
double floor(), quotient = *x / *y;
if (quotient >= 0.0)
quotient = floor(quotient);
else {
*(unsigned long *)"ient ^= SIGN_BIT;
quotient = floor(quotient);
if (quotient != 0)
*(unsigned long *)"ient ^= SIGN_BIT;
}
return(*x - (*y) * quotient );
}
#endif tahoe
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.