Point T : le maximum de Goldstein-Price lu avec textToInterval dans les exemples 03 et 06, textes des exemples à jour - #93
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
doublene contient : leplus proche est 2,97e-11 en dessous (calcul mpmath).
03_dependency_problem.cppl'écrivait comme un
double(interval(1015690.2717980589082988423120822331039464707651154)),et
06_global_optimization.cppaussi (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, quiarrondit 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
doublele plus proche (gp_range.right() > 1015690.2717980589dansl'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,
ctestpasse.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 deGAOL 4) ; ses constantes et ses déclarations suivent maintenant le style
des autres exemples (
interval x(-2.0, 2.0)plutôt queinterval x(-2,2),1.0 + sqr(x + y + 1.0) * ...plutôt que1+sqr(x+y+1)*(...)). Ses sorties ne changent pas.66. Les textes des exemples
examples/CMakeLists.txt: « which the autotools and meson builds alsocompile » semblait renvoyer à l'enveloppe ; la phrase dit maintenant que
les trois builds compilent les seize exemples (
Makefile.ametmeson.buildles 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é pare20493d), les400 bits de
tests/gaol_tests.h(même commit), et[[nodiscard]]enC++17 seulement (
GAOL_NODISCARDprend aussi l'attribut de GCC, Clang etVisual C++ avant C++17,
e4ce618;gaol::gaolne fixe toujours pas destandard, 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.mdetChangeLog(pull request de synthèse)textToInterval: la vérification « l'enveloppe contient l'image » testemaintenant l'image réelle, et non un
double2,97e-11 en dessous.main()de GAOL 4 ; ses constantes suivent lestyle des autres exemples.
Relecture
Relu sur le diff complet : les trois builds compilent les seize exemples
(
examples/Makefile.ametexamples/meson.buildles listent, la phrasecorrigée de
examples/CMakeLists.txtle dit) ; les sorties de l'exemple 16sont inchangées (mêmes valeurs, seul l'espacement du source change) ; les
lignes ajoutées suivent la largeur des fichiers ; aucune phrase
d'
examples.mdne contredit le code.Vérifié en local
-DWITH_TESTS=ON -DWITH_EXAMPLES=ON) : build sansavertissement,
ctest -j4: 57 tests sur 57 (intervalfetinterval2f« Skipped » par construction) ;
-DGAOL_SIMD=OFF) : 57 sur 57 ;-Wall -Wextra -DCMAKE_COMPILE_WARNING_AS_ERROR=ON: 57 sur 57 ;./configure --with-tests --with-examples,make -j4,make check: 0 échec,make install, puismake distcleanrend l'arbretel que git l'a ;
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.