#######################################################################################################################################
#                                                                                                                                     #
#         E T U D E   D E   L A   C O N J E C T U R E   D E   S Y R A C U S E                                                         #
#         E N   R E P R E S E N T A T I O N   B I D I M E N S I O N N E L L E  :                                                      #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirk/.SYRA.F1.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20170918103539).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____FormatA                  "Sud"
$Z                                      # Parametre introduit le 20170920132815...                                                    #

$Z                  setParam            _____Derniere                 `GetParam $xci/valeurs_Syra$X derniere`
$Z                                      # Parametre introduit le 20170920135059...                                                    #

$Z                  setParam            _____FormatR                  "Sdu"
$Z                                      # Parametre introduit le 20170920132815...                                                    #

$Z                  setParam            _____Palette                  $xiP/cercle.K3
$Z                                      # Parametre introduit le 20170923094611...                                                    #
$Z                                      #                                                                                             #
$Z                                      # On notera que cette palette (contrairement a 'v $xiio/MIRE p=$xiP/cercle.K2') n'introduit   #
$Z                                      # aps de niveaux noirs...                                                                     #

$Z                  setParam            _____Mode                     1
$Z                                      # Parametre introduit le 20170923094611...                                                    #
$Z                                      #                                                                                             #
$Z                                      # On notera le choix du mode "0" par defaut qui est le plus simpliste puisqu'il fonctionne    #
$Z                                      # par duplication et non pas interpolation et ce a cause des extremites. En effet, par        #
$Z                                      # a droite ou l'on expere en general des niveaux extremes, etant donne que le niveau          #
$Z                                      # hors image est 'NOIR', il y a alors interpolation vers le 'NOIR' et donc les niveaux        #
$Z                                      # aux extremites sont 'NOIR's...                                                              #

#20170920132815____:$Z                  Sud                                                                                           #
$Z                  eval                "$_____FormatA"

$Z                  set                 SaVe_dimX=$dimX
$Z                  set                 SaVe_dimY=$dimY

$Z                  set                 NoMbRe_SuItEs=$dimY

$Z                  FilSTmpB            FSyracuse

$Z        execRVB   $xci/init$X         niveau=$NOIR                                                                                    \
$Z                                      R=$_____ImageR%s                                                                                \
$Z                                                                              $formatI

#20170920135059____:$Z                  $xrk/Syracuse.21$Z  $NoMbRe_SuItEs "04"                                              |     \  #
#20170920135059____:$Z                  $SE                 -e "s/^0*//"                                                           \  #
#20170920135059____:$Z                                      -e "s/\( \)0*/\1/g"                                                    \  #
#20170920135059____:$Z                                                                              >> $FSyracuse                     #
$Z                                      # On notera le format "04" afin d'assurer un tri correct ('v $xrk/Syracuse.21$Z SOR'), mais   #

$Z                  $xrk/Syracuse.21$Z  $NoMbRe_SuItEs "04" "$SOR" $Xmax                                                          |     \
$Z                  $SE                 -e "s/^0*//"                                                                                    \
$Z                                      -e "s/\( \)0*/\1/g"                                                                             \
$Z                                                                              >>  $FSyracuse
$Z                                      # On notera le format "04" afin d'assurer un tri correct ('v $xrk/Syracuse.21$Z SOR'), mais   #
$Z                                      # ensuite les "0"s de tete des nombres doivent etre elimines si l'on veut que par la suite    #
$Z                                      # les 'calcul's se deroulent bien...                                                          #
$Z                                      #                                                                                             #
$Z                                      # On notera qu'on choisit '$Xmax' (et non pas '$dimX') car, en effet, par defaut, on a        #
$Z                                      #                                                                                             #
$Z                                      #                   premiere=0                                                                #
$Z                                      #                                                                                             #
$Z                                      # dans 'v $xci/valeurs_Syra$X premiere'...                                                    #

$Z                  $CA                 $FSyracuse                                                                                |     \
$Z                  $R                  " " "$K_NL"                                                                               |     \
$Z                  $SOR                -n -u                                                                                           \
$Z                                                                              >   $FSyracuse.trie

$Z             set  MiNiMuM=`$CA $FSyracuse.trie | $xrv/extrema.01$X ne=0 fichier== minimum_seul=VRAI formater=VRAI signe="$K_VIDE"`
$Z             set  MaXiMuM=`$CA $FSyracuse.trie | $xrv/extrema.01$X ne=0 fichier== maximum_seul=VRAI formater=VRAI signe="$K_VIDE"`

$Z                  if                  ($EXIST) then
$Z                                      # Afin de pouvoir inhiber facilement l'edition qui suit...                                    #
$Z                                      echo                "min({U(n)})=$MiNiMuM"
$Z                                      echo                "max({U(n)})=$MaXiMuM"
$Z                                      # Edition introduite le 20170925130456...                                                     #
$Z                  else
$Z                  endif

$Z                  FilSTmpB            FPalette

$Z        execRVB   $xrv/interpole.11$Z $_____Palette%s $FPalette%s $MaXiMuM $_____Mode
$Z                  set                 LiStE_ROUGE=`$CA $FPalette$ROUGE`
$Z                  set                 LiStE_VERTE=`$CA $FPalette$VERTE`
$Z                  set                 LiStE_BLEUE=`$CA $FPalette$BLEUE`

$Z                  FilSTmpE            FPalette

$Z                                      # Le "-$TrAnS" dans '$FaCtEuR' est destine a permettre le '+$DiViSeUr' dans la definition     #
$Z                                      # des trois niveaux {$RoUgE,$VeRtE,$BlEuE}...                                                 #

#20170923093940____:$Z                  @                   DiViSeUrD = $DiViSeUr * $DiViSeUr                                         #
#20170923093940____:$Z                  @                   TrAnSD = $TrAnS * $DiViSeUr                                               #

#20170923093940____:$Z                  alias               GeNeReRVB 'set       VaLeUr=\!*                                  ;    \\  #
#20170923093940____:$Z                        @         VeRtE = $ElEmEnT_CoUrAnT / $DiViSeUrD * $FaCtEuR + $TrAnSD           ;    \\  #
#20170923093940____:$Z                        @         ReStE = $ElEmEnT_CoUrAnT % $DiViSeUrD                                ;    \\  #
#20170923093940____:$Z                        @         RoUgE = $ReStE / $DiViSeUr * $FaCtEuR + $TrAnSD                      ;    \\  #
#20170923093940____:$Z                        @         BlEuE = $ReStE % $DiViSeUr * $FaCtEuR + $TrAnSD                      ;    \\  #
#20170923093940____:$Z                                                 unset     VaLeUr'                                              #
$Z                                      # Introduit le 20170922133520 afin de faciliter sa re-utilisation...                          #

$Z                  alias               GeNeReRVB 'set       VaLeUr="\!*"                                                         ;    \\
$Z                                                 set       RoUgE=$LiStE_ROUGE[$VaLeUr]                                          ;    \\
$Z                                                 set       VeRtE=$LiStE_VERTE[$VaLeUr]                                          ;    \\
$Z                                                 set       BlEuE=$LiStE_BLEUE[$VaLeUr]                                          ;    \\
$Z                                                 unset     VaLeUr'
$Z                                      # Introduit le 20170922133520 afin de faciliter sa re-utilisation...                          #

#20170921110550____:$Z                  FilSTmpB            ISyracuse                                                                 #

$Z                  set                 NuMeRo_SuItE=0

$Z                  while               ($NuMeRo_SuItE < $NoMbRe_SuItEs)
$Z                                      set                 CoOrDoNnEeS_Y=$NuMeRo_SuItE

$Z                                      if                  ($EXIST) then
$Z                                      # Afin de pouvoir inhiber facilement l'edition qui suit...                                    #
#20171010134229____:$Z                                                          echo                "Y=$CoOrDoNnEeS_Y"                #
$Z                                                          echo                "U(0)=$CoOrDoNnEeS_Y"
$Z                                      else
$Z                                      endif

$Z                                      @                   NuMeRo_SuItE = $NuMeRo_SuItE + 1
$Z                                      set                 SuItE_CoUrAnTe=`(listMN $FSyracuse $NuMeRo_SuItE $NuMeRo_SuItE)`

$Z                                      set                 CoOrDoNnEeS_X=$Xmin
$Z                                      set                 NuMeRo_ElEmEnT=1

$Z                                      FilSTmpB            FSyracuse_points

$Z                                      while               ($NuMeRo_ElEmEnT <= $#SuItE_CoUrAnTe)
$Z                                                          set                 ElEmEnT_CoUrAnT=$SuItE_CoUrAnTe[$NuMeRo_ElEmEnT]


#20170919163823____:$Z                                                          @         DiViSeUrD = $DiViSeUr * $DiViSeUr           #
#20170919163823____:$Z                                                          @         TrAnSD = $TrAnS * $DiViSeUr                 #

#20170922133520____:$Z                                      @         VeRtE = $ElEmEnT_CoUrAnT / $DiViSeUrD * $FaCtEuR + $TrAnSD      #
#20170922133520____:$Z                                      @         ReStE = $ElEmEnT_CoUrAnT % $DiViSeUrD                           #
#20170922133520____:$Z                                      @         RoUgE = $ReStE / $DiViSeUr * $FaCtEuR + $TrAnSD                 #
#20170922133520____:$Z                                      @         BlEuE = $ReStE % $DiViSeUr * $FaCtEuR + $TrAnSD                 #

$Z                                                          GeNeReRVB           $ElEmEnT_CoUrAnT
$Z                                      # Le '+$DiViSeUr' est destine a eviter des niveaux trop sombres...                            #
$Z                                      #                                                                                             #
$Z                                      # La modification du 20170919101620 a accelere d'un facteur 6.375 le calcul total. Notons     #
$Z                                      # qu'avant cette modification, le calcul de 'v $xiirk/SYRA.F1' a dure 07:40:10 (calcul        #
$Z                                      # effectue sur '$LACT1A'...).                                                                 #
$Z                                      #                                                                                             #
$Z                                      # Rappelons au passage que '@' permet de calculer des expressions en allant de la gauche      #
$Z                                      # vers la droite et ce, sans priorite entre operateurs (et sans paranthesage...).             #

$Z                                                          echo                "$CoOrDoNnEeS_X"                                        \
$Z                                                                                                  >>! $FSyracuse_points$COORD_X
$Z                                                          echo                "$CoOrDoNnEeS_Y"                                        \
$Z                                                                                                  >>! $FSyracuse_points$COORD_Y

$Z                                                          echo                "$RoUgE"                                                \
$Z                                                                                                  >>! $FSyracuse_points$ROUGE
$Z                                                          echo                "$VeRtE"                                                \
$Z                                                                                                  >>! $FSyracuse_points$VERTE
$Z                                                          echo                "$BlEuE"                                                \
$Z                                                                                                  >>! $FSyracuse_points$BLEUE


#20170920113419____:$Z                                                execRVB   $xci/S_point$X      A=$_____ImageR%s               \  #
#20170920113419____:$Z                                                                              X=$CoOrDoNnEeS_X               \  #
#20170920113419____:$Z                                                                              Y=$CoOrDoNnEeS_Y               \  #
#20170920113419____:$Z                                                                              R=$_____ImageR%s               \  #
#20170920113419____:$Z                                                                                                  $formatI      #

$Z                                                          @                   CoOrDoNnEeS_X = $CoOrDoNnEeS_X + 1
$Z                                                          @                   NuMeRo_ElEmEnT = $NuMeRo_ElEmEnT + 1
$Z                                      end

$Z                                      set                 exec_aR="LISTE_NIVEAU=$FSyracuse_points$ROUGE ehbn=VRAI"
$Z                                      set                 exec_aV="LISTE_NIVEAU=$FSyracuse_points$VERTE ehbn=FAUX"
$Z                                      set                 exec_aB="LISTE_NIVEAU=$FSyracuse_points$BLEUE ehbn=FAUX"

#20170921110550____:$Z                            execRVB   $xrv/S_points$X                                                        \  #
#20170921110550____:$Z                                                          LISTE_X=$FSyracuse_points$COORD_X                  \  #
#20170921110550____:$Z                                                          LISTE_Y=$FSyracuse_points$COORD_Y                  \  #
#20170921110550____:$Z                                                          R=$ISyracuse%s                                     \  #
#20170921110550____:$Z                                                                                                  $formatI      #

#20170921110550____:$Z                            execRVB   $xci/or_02$X        A1=$ISyracuse%s                                    \  #
#20170921110550____:$Z                                                          A2=$_____ImageR%s                                  \  #
#20170921110550____:$Z                                                          R=$_____ImageR%s                                   \  #
#20170921110550____:$Z                                                                                                  $formatI      #

$Z                            execRVB   $xrv/S_points$X     A=$_____ImageR%s                                                            \
$Z                                                          LISTE_X=$FSyracuse_points$COORD_X                                           \
$Z                                                          LISTE_Y=$FSyracuse_points$COORD_Y                                           \
$Z                                                          R=$_____ImageR%s                                                            \
$Z                                                                                                                      $formatI
$Z                                      # La modification du 20170920113419 a accelere d'un facteur 6 le calcul total...              #
$Z                                      #                                                                                             #
$Z                                      # Ainsi, apres les modifications des 20170919101620 et 20170920113419, le calcul de           #
$Z                                      # 'v $xiirk/SYRA.F1' ne dure plus que 00:03:00 (calculs effectues sur '$LACT1A'...).          #
$Z                                      # Le 20170921111515, le meme calcul effectue sur '$LACT19' a demande 00:03:08...              #

$Z                                      FilSTmpE            FSyracuse_points

$Z                  end

#20170921110550____:$Z                  FilSTmpE            ISyracuse                                                                 #
#20170922133905____:$Z                  FilSTmpE            FSyracuse                                                                 #

#20170920132815____:$Z        execRVB   $xci/format.01$X                                                                           \  #
#20170920132815____:$Z                                      A=$_____ImageR%s                                                       \  #
#20170920132815____:$Z                                                                                                  $formatI   \  #
#20170920132815____:$Z                                      mode=0                                                                 \  #
#20170920132815____:$Z                                      R=$_____ImageR%s                                                       \  #
#20170920132815____:$Z                                                                                                  $formatR_Sdu  #

$Z                  set                 FoRmAtR=`eval echo "$K_DOLLAR""formatR_""$_____FormatR"`

$Z        execRVB   $xci/format.01$X                                                                                                    \
$Z                                      A=$_____ImageR%s                                                                                \
$Z                                                                                                 $formatI                             \
$Z                                      mode=0                                                                                          \
$Z                                      R=$_____ImageR%s                                                                                \
$Z                                                                                                 $FoRmAtR

#20170920132815____:$Z                  Sdu                                                                                           #
$Z                  eval                "$_____FormatR"

$Z                  set                 MaIlLe_X=`calculINS $dimX/$SaVe_dimX`
$Z                  set                 MaIlLe_Y=`calculINS $dimY/$SaVe_dimY`

$Z                  $xci/grille.01$X                                                                                                    \
$Z                                      A=$BLANC                                                                                        \
$Z                                      niveau=$NOIR                                                                                    \
$Z                                      denormalisees=VRAI                                                                              \
$Z                                      ox=$Xmin mx=$MaIlLe_X                                                                           \
$Z                                      oy=$Ymin my=$MaIlLe_Y                                                                           \
$Z                                      R=$xTV/GRILLE                                                                                   \
$Z                                                                                                  $formatI

$Z        execRVB   $xci/and$X                                                                                                          \
$Z                                      A1=$xTV/GRILLE                                                                                  \
$Z                                      A2=$_____ImageR%s                                                                               \
$Z                                      R=$_____ImageR%s                                                                                \
$Z                                                                                                                      $formatI

$Z                  $xci/acces_RVB.11$Z $_____ImageR $_____ImageR
$Z                                      # Introduit le 20170919173537 afin de rendre '$_____ImageR' plus lumineuse...                 #

$Z                  FilSTmpB            Fmire

$Z                  set                 LiStE_ElEmEnTs=`$CA $FSyracuse.trie`
$Z                  set                 NLiStE_ElEmEnTs=$#LiStE_ElEmEnTs

$Z                  echo                "Il y a $NLiStE_ElEmEnTs U(n) differents dans [$MiNiMuM,$MaXiMuM]."
$Z                                      # Introduit le 20171009132257...                                                              #

$Z                  set                 NuMeRo_SuItE=0

$Z                  while               ($NuMeRo_SuItE < $NLiStE_ElEmEnTs)
$Z                                      set                 CoOrDoNnEeS_X=$NuMeRo_SuItE

$Z                                      @                   NuMeRo_SuItE = $NuMeRo_SuItE + 1
$Z                                      set                 ElEmEnT_CoUrAnT=$LiStE_ElEmEnTs[$NuMeRo_SuItE]

$Z                                      @                   CoOrDoNnEeS_Y = $ElEmEnT_CoUrAnT * $Ymax / $MaXiMuM

$Z                                      GeNeReRVB           $ElEmEnT_CoUrAnT

$Z                                      echo                "$CoOrDoNnEeS_X"                                                            \
$Z                                                                              >>! $Fmire$COORD_X
$Z                                      echo                "$CoOrDoNnEeS_Y"                                                            \
$Z                                                                              >>! $Fmire$COORD_Y

$Z                                      echo                "$RoUgE"                                                                    \
$Z                                                                              >>! $Fmire$ROUGE
$Z                                      echo                "$VeRtE"                                                                    \
$Z                                                                              >>! $Fmire$VERTE
$Z                                      echo                "$BlEuE"                                                                    \
$Z                                                                              >>! $Fmire$BLEUE
$Z                  end

$Z        execRVB   $xrv/store_image$X  ne=0                                                                                            \
$Z                                      LISTE_X=$Fmire$COORD_X                                                                          \
$Z                                      Xdenormalisees=VRAI                                                                             \
$Z                                      LISTE_Y=$Fmire$COORD_Y                                                                          \
$Z                                      Ydenormalisees=VRAI                                                                             \
$Z                                      histogramme=VRAI                                                                                \
$Z                                      LISTE_NIVEAU=$Fmire%s                                                                           \
$Z                                      Ndenormalises=VRAI                                                                              \
$Z                                      R=$_____ImageR.MIRE%s                                                                           \
$Z                                                                                                                      $formatI
$Z                                      # Introduit le 20170922134000...                                                              #

$Z                  FilSTmpE            Fmire

$Z                  FilSTmpE            FSyracuse



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