/*************************************************************************************************************************************/
/* */
/* A P P R O X I M A T I O N R A T I O N N E L L E D ' U N R E E L */
/* P A R L A M E D I A N T E D E F A R E Y : */
/* */
/* */
/* Author of '$xtc/ApproximationRationnelle.01$c' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20180827162304). */
/* */
/*************************************************************************************************************************************/
#include <stdio.h>
#define N 388423
/* Il est impossible de faire plus de 388423 iterations avec x=0.333333. Au-dela, il y a */
/* debordement des 'long int's... */
#define REEL 0.333333
main()
{
int n;
double x=REEL;
long int BorneInferieure,Nunmerateur__BorneInferieure,Denominateur_BorneInferieure;
long int BorneSuperieure,Nunmerateur__BorneSuperieure,Denominateur_BorneSuperieure;
long int Nunmerateur__MedianteDeFarey;
long int Denominateur_MedianteDeFarey;
BorneInferieure=(int)x;
BorneSuperieure=BorneInferieure+1;
Nunmerateur__BorneInferieure=BorneInferieure;
Denominateur_BorneInferieure=1;
Nunmerateur__BorneSuperieure=BorneSuperieure;
Denominateur_BorneSuperieure=1;
for (n=1 ; n <= N ; n++)
{
Nunmerateur__MedianteDeFarey=Nunmerateur__BorneInferieure+Nunmerateur__BorneSuperieure;
Denominateur_MedianteDeFarey=Denominateur_BorneInferieure+Denominateur_BorneSuperieure;
if (x < (double)Nunmerateur__MedianteDeFarey/(double)Denominateur_MedianteDeFarey)
{
Nunmerateur__BorneSuperieure=Nunmerateur__MedianteDeFarey;
Denominateur_BorneSuperieure=Denominateur_MedianteDeFarey;
}
else
{
Nunmerateur__BorneInferieure=Nunmerateur__MedianteDeFarey;
Denominateur_BorneInferieure=Denominateur_MedianteDeFarey;
}
}
printf("iterations=%d x=%.16f approximation=%.16f = %ld/%ld\n"
,N
,x
,(double)Nunmerateur__MedianteDeFarey/(double)Denominateur_MedianteDeFarey
,Nunmerateur__MedianteDeFarey
,Denominateur_MedianteDeFarey
);
}
Copyright © Jean-François COLONNA, 2021-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2021-2024.