Skip to content

Point T : le maximum de Goldstein-Price lu avec textToInterval dans les exemples 03 et 06, textes des exemples à jour - #93

Merged
Jordan08 merged 3 commits into
configure-cleanfrom
todo-t-examples
Oct 6, 2026
Merged

Jordan08 merged 3 commits into
configure-cleanfrom
todo-t-examples

Conversation

@Jordan08

@Jordan08 Jordan08 commented Oct 6, 2026

Copy link
Copy Markdown
Owner

Point T de TODO.md : les exemples (anciens 39 et 66).

39. Les restes de Goldstein-Price

Problème : le maximum de Goldstein-Price sur [-2, 2]² vaut
1015690.2717980589082988423..., un réel qu'aucun double ne contient : le
plus proche est 2,97e-11 en dessous (calcul mpmath). 03_dependency_problem.cpp
l'écrivait comme un double (interval(1015690.2717980589082988423120822331039464707651154)),
et 06_global_optimization.cpp aussi (interval(3.0, 1015690.2717980589082989)) :
leur vérification « l'enveloppe contient l'image » testait un intervalle trop
étroit, 2,97e-11 plus bas que la vraie image ; le maximum écrit aurait pu
sortir de l'image réelle sans que le test lève.

Correction : les deux exemples lisent la borne avec textToInterval, qui
arrondit vers l'extérieur, comme l'exemple 03 le fait déjà pour [0.4, 0.6].
Un contrôle nouveau vérifie que l'intervalle lu passe bien au-dessus du
double le plus proche (gp_range.right() > 1015690.2717980589 dans
l'exemple 03).

Vérifié : avec les sources de configure-clean, ce contrôle échoue
(FAILED: the range of f is read above the double nearest its maximum) ;
avec la correction, ctest passe.

L'exemple 16 garde le style de GAOL 4 dans main() (endl,
cout.precision(16), la boucle de temps sur une ligne, l'en-tête de
GAOL 4) ; ses constantes et ses déclarations suivent maintenant le style
des autres exemples (interval x(-2.0, 2.0) plutôt que
interval x(-2,2), 1.0 + sqr(x + y + 1.0) * ... plutôt que
1+sqr(x+y+1)*(...)). Ses sorties ne changent pas.

66. Les textes des exemples

  • examples/CMakeLists.txt : « which the autotools and meson builds also
    compile » semblait renvoyer à l'enveloppe ; la phrase dit maintenant que
    les trois builds compilent les seize exemples (Makefile.am et
    meson.build les listent tous), et le compte « 01 to 15 » devient
    « the sixteen examples ».
  • examples/examples.md, section 3 : « three formatting slips » devient
    « 29 formatting slips, since fixed » (la revue en relevait 29, corrigées
    depuis) ; les points donnés comme ouverts sont marqués corrigés : le
    commentaire de chi() (chi([0,0]) = 0, corrigé par e20493d), les
    400 bits de tests/gaol_tests.h (même commit), et [[nodiscard]] en
    C++17 seulement (GAOL_NODISCARD prend aussi l'attribut de GCC, Clang et
    Visual C++ avant C++17, e4ce618 ; gaol::gaol ne fixe toujours pas de
    standard, ce qui reste dit). La section de l'exemple 16 dit que son
    main() garde la mise en page de GAOL 4.

Pour doc/differences.md et ChangeLog (pull request de synthèse)

  • Les exemples 03 et 06 lisent le maximum de Goldstein-Price avec
    textToInterval : la vérification « l'enveloppe contient l'image » teste
    maintenant l'image réelle, et non un double 2,97e-11 en dessous.
  • L'exemple 16 garde son main() de GAOL 4 ; ses constantes suivent le
    style des autres exemples.

Relecture

Relu sur le diff complet : les trois builds compilent les seize exemples
(examples/Makefile.am et examples/meson.build les listent, la phrase
corrigée de examples/CMakeLists.txt le dit) ; les sorties de l'exemple 16
sont inchangées (mêmes valeurs, seul l'espacement du source change) ; les
lignes ajoutées suivent la largeur des fichiers ; aucune phrase
d'examples.md ne contredit le code.

Vérifié en local

  • CMake SSE2 (-DWITH_TESTS=ON -DWITH_EXAMPLES=ON) : build sans
    avertissement, ctest -j4 : 57 tests sur 57 (intervalf et interval2f
    « Skipped » par construction) ;
  • CMake FPU (-DGAOL_SIMD=OFF) : 57 sur 57 ;
  • CMake -Wall -Wextra -DCMAKE_COMPILE_WARNING_AS_ERROR=ON : 57 sur 57 ;
  • autotools : ./configure --with-tests --with-examples, make -j4,
    make check : 0 échec, make install, puis make distclean rend l'arbre
    tel que git l'a ;
  • test de non-régression : le contrôle nouveau de l'exemple 03 échoue avec
    le code de configure-clean, passe avec la correction.

Non vérifiable ici : Clang 18 (absent de la machine), meson, macOS,
Windows, ARM ; la CI les couvre.

Dépendances

Aucune.

Questions ouvertes

Aucune.

@Jordan08
Jordan08 merged commit 0f08295 into configure-clean Oct 6, 2026
127 checks passed
Jordan08 added a commit that referenced this pull request Oct 6, 2026
@Jordan08
Jordan08 deleted the todo-t-examples branch October 6, 2026 12:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant