/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D ' U N E P R O G R E S S I O N G E O M E T R I Q U E G E N E R A L I S E E : */
/* */
/* */
/* Definition : */
/* */
/* Cette commande genere une suite de */
/* nombres 'X' tel que : */
/* */
/* X = D */
/* 0 */
/* */
/* X = R.X */
/* n n-1 */
/* */
/* ou 'D' designe la valeur de depart... */
/* */
/* On notera qu'une option permet de */
/* passer d'une progression geometrique */
/* a une progression arithmetique.... */
/* */
/* */
/* Author of '$xci/valeurs_ProgressionGeometrique$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20180708102504). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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
#define GENERER_LES_GET_ARGUMENTS_DE_CONTROLE_DE_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 PROGRESSION_GEOMETRIQUE \
VRAI \
/* Est-ce un progression geometrique ('VRAI') ou arithmetique ('FAUX') ? */
#define RAISON \
GRO3(FRA4(FU))
#define RAISON_DE_LA_RAISON \
FU
/* Definition des deux raisons. La "raison de la raison" a ete introduite suite a la */
/* creation de 'v $xci/valeurs_ProgressionArithmetique$K RAISON_DE_LA_RAISON'... */
#define X_DE_DEPART \
FDU \
/* Definition de la variable 'x' de depart... */
#include xci/valeurs.01.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
#include xci/valeurs.02.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D ' U N E P R O G R E S S I O N G E O M E T R I Q U E G E N E R A L I S E E : */
/* */
/*************************************************************************************************************************************/
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(Logical,INIT(progression_geometrique,PROGRESSION_GEOMETRIQUE));
/* Est-ce un progression geometrique ('VRAI') ou arithmetique ('FAUX') ? */
DEFV(Float,INIT(raison,RAISON));
DEFV(Float,INIT(raison_de_la_raison,RAISON_DE_LA_RAISON));
/* Definition des deux raisons. La "raison de la raison" a ete introduite suite a la */
/* creation de 'v $xci/valeurs_ProgressionArithmetique$K RAISON_DE_LA_RAISON'... */
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... */
#include xci/valeurs.03.I"
/*..............................................................................................................................*/
GET_ARGUMENTS_(nombre_d_arguments
,BLOC(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_L("progression_geometrique=""pg=",progression_geometrique);
GET_ARGUMENT_N("progression_arithmetique=""pa=",progression_geometrique);
/* On notera le 20181007113103 qu'une autre facon de calculer une progression */
/* arithmetique est d'utiliser les arguments suivants : */
/* */
/* arithmetique_etendue=VRAI */
/* GooF=VRAI */
/* pxMUL2_MUL2=0 */
/* pxADD2_MUL2=1 */
/* */
/* Et alors, on peut essayer d'autres ponderations du type "px????_MUL2=...". */
GET_ARGUMENT_F("raison=""r=""R=",raison);
GET_ARGUMENT_F("raison_raison=""rr=""RR=",raison_de_la_raison);
/* Argument introduit le 20250218110422... */
GET_ARGUMENT_F("u0=""U0=""Xd=""XD=""X0=",X_de_depart);
PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1;
)
);
Test(IFLE(premiere_image,derniere_image))
Bblock
EGAL(X_courant,X_de_depart);
/* Initialisation de la suite... */
Test(IL_FAUT(progression_geometrique))
Bblock
/* Cas d'une progression geometrique... */
Eblock
ATes
Bblock
/* Cas d'une progression arithmetique : */
EGAL(si_le_GooF_est_activable_utiliser_l_arithmetique_etendue_au_lieu_de_l_arithmetique_de_base,VRAI);
EGAL(FfxMUL2_____ponderation_de_MUL2,FZERO);
EGAL(FfxMUL2_____ponderation_de_ADD2,FU);
/* Je rappelle le 20180818103400 (en completant le 20181007114543) que les quatre */
/* "forcages" ci-dessus equivalent a : */
/* */
/* arithmetique_etendue=VRAI */
/* pxMUL2_MUL2=0 */
/* pxADD2_MUL2=1 */
/* */
/* Et alors, on peut essayer d'autres ponderations du type "px????_MUL2=...". */
Eblock
ETes
DoIn(numero_d_image,premiere_image,derniere_image,pas_des_images)
Bblock
Test(IFEQ(numero_d_image,premiere_image))
Bblock
Eblock
ATes
Bblock
EGAL(X_courant,FfxMUL2(raison,X_courant));
/* Calcul des elements attendus de la suite suivant : */
/* */
/* X = R.X */
/* n+1 n */
/* */
/* par defaut... */
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 courante. */
EGAL(raison,MUL2(raison_de_la_raison,raison));
/* Possibilite introduite le 20250218110422, les valeurs par defaut garantissant la */
/* compatibilite anterieure... */
Eblock
EDoI
Eblock
ATes
Bblock
PRINT_ERREUR("la relation d'ordre stricte ('premier < dernier') n'est pas respectee");
Eblock
ETes
RETU_Commande;
Eblock
ECommande