/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E T U D E   D E   L A   C O M P L E X I T E   S T R U C T U R E L L E                                                      */
/*        D E   P A V E S   D E   P O I N T S   P S E U D O - A L E A T O I R E S   N O I R   O U   B L A N C  :                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrC/ObjetComplexe.P____1$vv$c' :                                                                               */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 20130722183657).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#ifdef    COMMENTS
#         undef     COMMENTS
#else
#endif

#define   COMMENTS  "Paves identiques de points pseudo-aleatoires type 'drand48(...)' (format octet) -noir ou blanc-"

#define   DEFINE_01 "-DPAVE_X=16 -DPAVE_Y=16"
#define   DEFINE_02 "-DPAVE_X=32 -DPAVE_Y=32"
#define   DEFINE_03 "-DPAVE_X=48 -DPAVE_Y=48"
#define   DEFINE_04 "-DPAVE_X=64 -DPAVE_Y=64"
#define   DEFINE_05 "-DPAVE_X=80 -DPAVE_Y=80"
#define   DEFINE_06 "-DPAVE_X=96 -DPAVE_Y=96"
#define   DEFINE_07 "-DPAVE_X=112 -DPAVE_Y=112"
#define   DEFINE_08 "-DPAVE_X=128 -DPAVE_Y=128"
#define   DEFINE_09 "-DPAVE_X=144 -DPAVE_Y=144"
#define   DEFINE_10 "-DPAVE_X=160 -DPAVE_Y=160"
#define   DEFINE_11 "-DPAVE_X=176 -DPAVE_Y=176"
#define   DEFINE_12 "-DPAVE_X=192 -DPAVE_Y=192"
#define   DEFINE_13 "-DPAVE_X=208 -DPAVE_Y=208"
#define   DEFINE_14 "-DPAVE_X=224 -DPAVE_Y=224"
#define   DEFINE_15 "-DPAVE_X=240 -DPAVE_Y=240"
#define   DEFINE_16 "-DPAVE_X=256 -DPAVE_Y=256"
                                        /* Les seuils ont ete obtenus par :                                                          */
                                        /*                                                                                           */
                                        /*                  set       PrEmIeRe=1                                                     */
                                        /*                  set       DeRnIeRe=16                                                    */
                                        /*                  set       vD_=16                                                         */
                                        /*                  set       PaS_v___=16                                                    */
                                        /*                  @         vA_ = ( $DeRnIeRe - $PrEmIeRe ) * $PaS_v___ + $vD_             */
                                        /*                                                                                           */
                                        /*                  $xci/valeurs_inte$X                                                   \  */
                                        /*                                      p=$PrEmIeRe d=$DeRnIeRe                           \  */
                                        /*                                      lineaire=VRAI                                     \  */
                                        /*                                      vD=$vD_ vA=$vA_                                   \  */
                                        /*                                      entier=VRAI epsilon=0.1 signe="$K_VIDE"              */
                                        /*                                                                                           */
                                        /* On notera qu'il est mieux que le pas '$PaS_v___' soit un multiple de 4 afin que           */
                                        /* l'on puisse utiliser 'v $xiirC/.OBJC.21.1.$U .xci.reduction_16.X' sans probleme lors      */
                                        /* de la reduction d'un facteur 4...                                                         */

#include  "images_1octet.01.vv.I"

#ifndef   PAVE_X
#         define    PAVE_X                                                                                                              \
                              gDIVI(dimX,16)
#else
#endif

#ifndef   PAVE_Y
#         define    PAVE_Y                                                                                                              \
                              gDIVI(dimY,16)
#else
#endif

long      int       pave_X=PAVE_X;
long      int       pave_Y=PAVE_Y;

#ifndef   SEUIL
#         define    SEUIL                                                                                                               \
                              (0.5)
#else
#endif

double    seuil=SEUIL;

#define   FACTEUR                                                                                                                       \
                    (12345)
#define   MODULO                                                                                                                        \
                    (201307222050531)
#define   FACTEUR_X                                                                                                                     \
                    (3)
#define   FACTEUR_Y                                                                                                                     \
                    (7)

MAIN(
          {
          long      int       m=0x0000ffffffffffff;
          long      int       a=0x5DEECE66D;
          long      int       c=0xB;
          long      int       Xi;
                                        /* Les valeurs des parametres {m,a,c} sont ceux de la fonction 'drand48(...)'.               */

          for       (y=Ymin ; y <= Ymax ; y=ADD2(y,1))
                    {
                    for       (x=Xmin ; x <= Xmax ; x=ADD2(x,1))
                              {
                              Xi = ETLO(ADD2(MUL2(a
                                                 ,REST(MUL2(FACTEUR
                                                           ,MUL2(ADD2(MUL2(FACTEUR_X,REST(x,pave_X))
                                                                     ,MUL2(FACTEUR_Y,REST(y,pave_Y))
                                                                      )
                                                                ,MUL2(REST(x,pave_X),REST(y,pave_Y))
                                                                 )
                                                            )
                                                      ,MODULO
                                                       )
                                                  )
                                            ,c
                                             )
                                       ,m
                                        );

                              STORE_IMAGE_PLAN(x,y,COND(IFLT(DIVIf(((double)Xi),((double)m)),seuil),NOIR,BLANC));
                              }
                    }

          SORTIE_DU_FICHIER_IMAGE;
          EDITER_LES_COMPTEURS_DES_FONCTIONS;
          }
     )



Copyright © Jean-François Colonna, 2013-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2013-2021.