/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D E V A L E U R S C O R R E S P O N D A N T A */
/* L A D Y N A M I Q U E D E V E R H U L S T : */
/* */
/* */
/* Definition : */
/* */
/* Cette commande genere une suite de */
/* nombres 'X' tel que : */
/* */
/* X = D */
/* 0 */
/* */
/* 2 */
/* X = (R+1).X - R.X */
/* n n-1 n-1 */
/* */
/* ou 'D' designe la valeur de depart... */
/* */
/* */
/* Note sur la sensibilite aux erreurs d'arrondi : */
/* */
/* Le 20161219101525, je note un phenomene */
/* curieux sur '$LACT19' et sur '$LACT1A'. A */
/* partir de "derniere=2264", les resultats */
/* divergent : */
/* */
/* */
/* numero_d_image : LACT19 : LACT1A : */
/* */
/* 2259 +1.2474053760322 +1.2474053760322 /.\ */
/* 2260 +0.32156098766686 +0.32156098766686 | */
/* 2261 +0.97603954429958 +0.97603954429958 | */
/* 2262 +1.0461986010887 +1.0461986010887 | */
/* 2263 +0.90119986559487 +0.90119986559487 <- identiques, */
/* */
/* 2264 +1.1683158691349 +1.1683158691348 <- differents. */
/* 2265 +0.57837756632243 +0.57837756632247 | */
/* 2266 +1.3099484376146 +1.3099484376146 | */
/* 2267 +0.091899022831792 +0.091899022831718 | */
/* 2268 +0.34225980013485 +0.3422598001346 \./ */
/* */
/* On notera que les resultats precedents obtenus */
/* sur '$LACT1A' sont les memes, que '$xci/valeurs_chao$X' */
/* soit celui de '$LACT19' (via un 'reference') ou */
/* bien ait ete recompile sur '$LACT1A'... Cela montre */
/* que la difference ne vient pas des options de '$Cc', */
/* mais des processeurs eux-memes... */
/* */
/* On notera le 20161219114418 que les tests precedents */
/* ont ete refaits sur toutes les MACHINEs de type '$CMAP28' ; */
/* les resultats obtenus ont toujours ete ceux de '$LACT19'... */
/* */
/* On notera le 20161219172254 que '$LACT1A' donne les */
/* resultats de '$LACT19' a quatre conditions : */
/* */
/* 1-Supprimer l'option 'v $Fcompilers mfpmath=387', */
/* 2-Recompiler 'v $xbg/GooF_fonct$K', */
/* 3-Recompiler 'v $xci/valeurs_chao$K', */
/* 4-Activer l'option "GooF=FAUX" dans 'v $xci/valeurs_chao$K GooF'. */
/* */
/* Tout cela est bien mysterieux, meme si l'option 'v $Fcompilers mfpmath=387' */
/* semble jouer un role important, voire essentiel... */
/* */
/* Cette anomalie avec '$LACT1A' s'est vue aussi avec */
/* beaucoup d'autres programmes et en particulier ceux */
/* de '$xrs' ('v $xiirs/EPIC.31.diff' par exemple) ou */
/* encore ceux de '$xrc'... */
/* */
/* */
/* Author of '$xci/valeurs_chao$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 19990401095828). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N T E R F A C E ' listG ' : */
/* */
/* */
/* :Debut_listG: */
/* :Fin_listG: */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */
/* */
/*************************************************************************************************************************************/
#define PRAGMA_CPP_____AUTORISER_LE_GooF
/* Ceci est essentiel puisque l'on souhaite etudier l'influence de la syntaxe sur les */
/* resultats obtenus. Ceci a ete introduit le 20040420232207. */
@define PRAGMA_CL_____MODULE_NON_OPTIMISABLE
/* Ceci est essentiel puisque l'on souhaite etudier l'influence de la syntaxe sur les */
/* resultats obtenus. Ceci manquait et a ete introduit le 20021102092724. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F I C H I E R S D ' I N C L U D E S : */
/* */
/*************************************************************************************************************************************/
#include INCLUDES_MINI
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#include xci/sequence.01.I"
#define DEPHASAGE_INITIAL \
ZERO \
/* Nombre de valeurs aleatoires a generer initialement en aveugle de facon a se dephaser */ \
/* dans la liste des valeurs aleatoires generees (introduit le 20021102093904). */
#define TAUX_DE_CROISSANCE \
GRO3(FU) \
/* Taux de croissance 'R' ; une valeur superieure a 2.57 donne un comportement chaotique. */
#define X_DE_DEPART \
FDU \
/* Definition de la variable 'x' de depart... */
#define UTILISER_LA_FORME_NATURELLE \
VRAI
#define TESTER_L_ASSOCIATIVITE \
VRAI
#define GENERALISER_LA_FORME \
FAUX
/* Choix de la forme a utiliser pour le calcul. La generalisation a ete introduite le */
/* 20190104103807... */
#include xci/valeurs.01.I"
#define COMPATIBILITE_20040420 \
FAUX \
/* Permet de proceder a des generations compatibles a celles qui furent effectues */ \
/* anterieurement au 20040420232207. Le 'GooF' est active par defaut... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
#include xci/valeurs.02.I"
#define GENERATION_DE_LA_VALEUR_CHAOTIQUE_COURANTE(valeur_aleatoire) \
Bblock \
Test(IL_FAUT(generaliser_la_forme)) \
/* Test introduit le 20190104103807... */ \
Bblock \
EGAL(X_courant \
,HORNER_1_09(X_courant \
,polynome_a9 \
,polynome_a8 \
,polynome_a7 \
,polynome_a6 \
,polynome_a5 \
,polynome_a4 \
,polynome_a3 \
,polynome_a2 \
,polynome_a1 \
,polynome_a0 \
) \
); \
/* La generalisation introduite le 20190104103807 utilise un polynome du neuvieme degre */ \
/* initialise par la forme "naturelle"... */ \
/* */ \
/* ATTENTION : on notera qu'evidemment la programmation de la forme "naturelle" (ci-dessous) */ \
/* et de la forme "generalisee par defaut" (ci-dessus) differant, les resultats alors */ \
/* produits divergent rapidement ainsi qu'on le voit ici : */ \
/* */ \
/* forme "naturelle" : forme "generalisee" : */ \
/* */ \
/* +0.5 +0.5 */ \
/* +1.25 +1.25 */ \
/* +0.3125 +0.3125 */ \
/* +0.95703125 +0.95703125 */ \
/* +1.0803985595703 +1.0803985595703 */ \
/* +0.81981109571643 +0.81981109571643 */ \
/* +1.2629736848864 +1.2629736848864 */ \
/* +0.26658715339901 +0.26658715339901 */ \
/* +0.85314248252388 +0.85314248252389 <-- divergence... */ \
/* +1.2290136436345 +1.2290136436345 */ \
/* +0.38463096581879 +0.3846309658188 */ \
/* +1.0947009236751 +1.0947009236751 */ \
/* +0.78369335781513 +0.78369335781507 */ \
/* +1.2922475940099 +1.2922475940099 */ \
/* +0.15927884336664 +0.15927884336647 */ \
/* +0.56100612363391 +0.5610061236334 */ \
/* +1.2998408822714 +1.2998408822711 */ \
/* +0.13060457141332 +0.13060457141455 */ \
/* +0.47124562343111 +0.47124562343507 */ \
/* +1.2187651809155 +1.2187651809202 */ \
/* +0.41889502502597 +0.41889502501061 */ \
/* +1.1491609741294 +1.1491609741065 */ \
/* +0.63493106313163 +0.63493106319773 */ \
/* +1.3303118877381 +1.3303118877507 */ \
/* +0.012058394980346 +0.012058394930226 */ \
/* +0.047797365252877 +0.047797365056023 */ \
/* +0.18433569663616 +0.1843356959052 */ \
/* +0.63540383938162 +0.63540383726623 */ \
/* +1.3304012402238 +1.330401239827 */ \
/* +0.011702580928245 +0.011702582508461 */ \
/* +0.046399472511833 +0.046399478721743 */ \
/* */ \
Eblock \
ATes \
Bblock \
Test(IL_FAUT(utiliser_la_forme_naturelle)) \
Bblock \
EGAL(X_courant \
,SOUS(MUL2(ADD2(taux_de_croissance,FU),X_courant) \
,MUL2(taux_de_croissance,MUL2(X_courant,X_courant)) \
) \
); \
/* Calcul de la suite 'X' suivant : */ \
/* */ \
/* X = ((R+1).X) - (R.(X.X)) */ \
/* */ \
Eblock \
ATes \
Bblock \
Test(IL_FAUT(tester_l_associativite)) \
Bblock \
EGAL(X_courant \
,SOUS(MUL2(ADD2(taux_de_croissance,FU),X_courant) \
,MUL2(MUL2(taux_de_croissance,X_courant),X_courant) \
) \
); \
/* Calcul de la suite 'X' suivant : */ \
/* */ \
/* X = ((R+1).X) - ((R.X).X) */ \
/* */ \
Eblock \
ATes \
Bblock \
EGAL(X_courant \
,SOUS(ADD2(MUL2(taux_de_croissance,X_courant),X_courant) \
,MUL2(taux_de_croissance,MUL2(X_courant,X_courant)) \
) \
); \
/* Calcul de la suite 'X' suivant : */ \
/* */ \
/* X = (R.X) + X - (R.(X.X)) */ \
/* */ \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ETes \
Eblock
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D E V A L E U R S C O R R E S P O N D A N T A */
/* L A D Y N A M I Q U E D E V E R H U L S T : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(Int,INIT(premiere_image,PREMIERE_IMAGE));
/* Numero de la premiere image, */
DEFV(Int,INIT(derniere_image,DERNIERE_IMAGE));
/* Numero de la derniere image. */
DEFV(Int,INIT(numero_d_image,UNDEF));
/* Numero de l'image courante. */
DEFV(Int,INIT(pas_des_images,PAS_DES_IMAGES));
/* Pas de passage d'un numero d'image a une autre. */
DEFV(Positive,INIT(dephasage_initial,DEPHASAGE_INITIAL));
/* Nombre de valeurs aleatoires a generer initialement en aveugle de facon a se dephaser */
/* dans la liste des valeurs aleatoires generees (introduit le 20021102093904). */
DEFV(Float,INIT(taux_de_croissance,TAUX_DE_CROISSANCE));
/* Taux de croissance 'R' ; une valeur superieure a 2.57 donne un comportement chaotique. */
DEFV(Float,INIT(X_de_depart,X_DE_DEPART));
/* Definition de la variable 'x' d'arrivee et de depart... */
DEFV(Float,INIT(X_courant,FLOT__UNDEF));
/* Definition de la variable 'x' de depart... */
DEFV(Logical,INIT(utiliser_la_forme_naturelle,UTILISER_LA_FORME_NATURELLE));
DEFV(Logical,INIT(tester_l_associativite,TESTER_L_ASSOCIATIVITE));
/* Choix de la forme a utiliser pour le calcul. */
DEFV(Logical,INIT(generaliser_la_forme,GENERALISER_LA_FORME));
DEFV(Float,INIT(polynome_a0,FZERO));
DEFV(Float,INIT(polynome_a1,ADD2(TAUX_DE_CROISSANCE,FU)));
DEFV(Float,INIT(polynome_a2,NEGA(TAUX_DE_CROISSANCE)));
DEFV(Float,INIT(polynome_a3,FZERO));
DEFV(Float,INIT(polynome_a4,FZERO));
DEFV(Float,INIT(polynome_a5,FZERO));
DEFV(Float,INIT(polynome_a6,FZERO));
DEFV(Float,INIT(polynome_a7,FZERO));
DEFV(Float,INIT(polynome_a8,FZERO));
DEFV(Float,INIT(polynome_a9,FZERO));
/* Definition du polynome de generalisation de la forme (introduit le 20190104103807). */
/* Il est du neuvieme degre et est initialise par la forme "naturelle"... */
#include xci/valeurs.03.I"
DEFV(Logical,INIT(compatibilite_20040420,COMPATIBILITE_20040420));
/* Permet de proceder a des generations compatibles a celles qui furent effectues */
/* anterieurement au 20040420232207. Le 'GooF' est active par defaut... */
/*..............................................................................................................................*/
GET_ARGUMENTS_(nombre_d_arguments
,BLOC(GET_ARGUMENT_L("GooF_____compatibilite_20040420=""compatibilite_20040420=",compatibilite_20040420);
GET_ARGUMENT_N("GooF=",compatibilite_20040420);
/* Cet argument a ete introduit le 20161219165911 afin de rendre plus comprehensible */
/* l'argument "compatibilite_20040420="... */
GET_ARGUMENT_I("premiere=""p=""D=",premiere_image);
GET_ARGUMENT_I("derniere=""d=""A=",derniere_image);
GET_ARGUMENT_I("pas=",pas_des_images);
GET_ARGUMENT_I("dephasage=",dephasage_initial);
GET_ARGUMENT_F("taux=""r=""R=",taux_de_croissance);
GET_ARGUMENT_F("Xd=""XD=""X0=",X_de_depart);
GET_ARGUMENT_L("naturelle=""naturel=",utiliser_la_forme_naturelle);
GET_ARGUMENT_L("associativite=",tester_l_associativite);
GET_ARGUMENT_L("generaliser=""gen=",generaliser_la_forme);
GET_ARGUMENT_F("a0=",polynome_a0);
GET_ARGUMENT_F("a1=",polynome_a1);
GET_ARGUMENT_F("a2=",polynome_a2);
GET_ARGUMENT_F("a3=",polynome_a3);
GET_ARGUMENT_F("a4=",polynome_a4);
GET_ARGUMENT_F("a5=",polynome_a5);
GET_ARGUMENT_F("a6=",polynome_a6);
GET_ARGUMENT_F("a7=",polynome_a7);
GET_ARGUMENT_F("a8=",polynome_a8);
GET_ARGUMENT_F("a9=",polynome_a9);
/* Ces arguments ont ete introduits le 20190104103807... */
PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1;
/* Cette procedure fut introduite le 20061226185714... */
)
);
Test(IFLE(premiere_image,derniere_image))
Bblock
EGAL(X_courant,X_de_depart);
/* Initialisation de la suite... */
Repe(dephasage_initial)
Bblock
USs_GooF______CONDITIONNEL(NOTL(compatibilite_20040420)
,BLOC(
Bblock
GENERATION_DE_LA_VALEUR_CHAOTIQUE_COURANTE(X_courant);
/* On saute eventuellement les 'dephasage_initial' premieres valeurs aleatoires (avec */
/* 'GooF' par defaut...). */
Eblock
)
);
Eblock
ERep
DoIn(numero_d_image,premiere_image,derniere_image,pas_des_images)
Bblock
Test(IFEQ(numero_d_image,premiere_image))
Bblock
Eblock
ATes
Bblock
USs_GooF______CONDITIONNEL(NOTL(compatibilite_20040420)
,BLOC(
Bblock
GENERATION_DE_LA_VALEUR_CHAOTIQUE_COURANTE(X_courant);
/* Calcul des elements attendus de la suite (avec 'GooF' par defaut...). */
Eblock
)
);
Eblock
ETes
CAL2(Prin2(Cara(chain_Aconcaten5(INTRODUCTION_FORMAT,valeurs_signees,".*",format_d_edition,"\n"))
,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales)
,MULTIPLE_DE(ENTIER_FLOTTANT(X_courant))
)
);
/* Et enfin, edition de la valeur "chaotique" courante. */
Eblock
EDoI
Eblock
ATes
Bblock
PRINT_ERREUR("la relation d'ordre stricte ('premier < dernier') n'est pas respectee");
Eblock
ETes
RETU_Commande;
Eblock
ECommande