/*************************************************************************************************************************************/
/* */
/* T E S T D E S P R O B L E M E S S U R L A N O T I O N D E M U L T I P L E S */
/* D E N O M B R E S F L O T T A N T S : */
/* */
/* */
/* Author of '$xtc/multiple.01$c' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, AAAAMMJJhhmmss). */
/* */
/*************************************************************************************************************************************/
#include "INCLUDES.01.I"
/* Introduit le 20051116101731... */
extern double fmod();
#define fREST(a,b) \
mod(a,b)
#define fMULD(a,b) \
muld(a,b)
#define fARRI(x) \
fMULD(x,epsilon)
#define FACTEUR \
2
double mod(x,y)
/* Fonction se substituant a 'fmod(...)'. */
double x,y;
{
double ax=ABSO(x),ay=ABSO(y);
double r1,r2,dr1;
double r;
r1=fmod(ax,ay);
dr1=FACTEUR*r1;
r2=fmod(FACTEUR*ax,ay);
if (r2 == dr1)
{
r=r1;
}
else
{
r=ay-r1;
}
if (x<0)
{
r=-r;
}
else
{
}
return(r);
}
double muld(x,y)
double x,y;
{
double ax=ABSO(x),ay=ABSO(y);
double r;
double z;
r=fREST(ax,ay);
if (x>=0)
{
z=x+r;
}
else
{
z=x-r;
}
return(z);
}
main()
{
int k;
double maille=0.1000000000000000;
double epsilon=1.0e-8;
double x=0;
for (k=-8 ; k<=8 ; k=k+1)
{
double x=k*maille;
double y,z;
int a,b;
z=fREST(x,maille);
y=fMULD(x,maille);
printf("\n coordonnee=%+.17f noeud=%+.17f",x,y);
y=fARRI(y);
printf(" arrondi=%+.17f",y);
}
}