From 641526eefa5bd532e401762058b235ed55927b4b Mon Sep 17 00:00:00 2001 From: troufflard <> Date: Thu, 15 Mar 2018 13:14:01 +0000 Subject: [PATCH] modif Perl/test.pl : retablissement de la coherence entre la doc et la verification relative (comme explique dans la doc, la precision relative n est pas en pourcent : |(X - Xref) / Xref| <= precision); le script test.pl est donc maintenant coherent avec la doc doc_procedure_verification.pdf section 5.2.2 et egalement section 6.5 concernant les fichiers .precision --- Perl/test.pl | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/Perl/test.pl b/Perl/test.pl index 5e4640a..2c62dbc 100755 --- a/Perl/test.pl +++ b/Perl/test.pl @@ -43,9 +43,8 @@ my $format_reel = '[+-]?[\.]?\d+[\.]?\d*(?:[eE][+-]?\d*)?'; #remarque : a mettre entre guillements (pour des raisons d affichage dans le rapport de test) -my $PREC_ABSOLU = "1.e-6";#precision pour la comparaison absolue -my $PREC_RELATIVE_POURCENT = "1.e-1";#precision pour la comparaison relative (en pourcent) - #2015-11-25 : changement precision relative de 1e-3 en 1e-1 (0.001% c etait un peu trop severe) +my $PREC_ABSOLU_DEFAUT = "1.e-6";#precision par defaut pour la comparaison absolue : |X - Xref| <= precision +my $PREC_RELATIVE_DEFAUT = "1.e-3";#precision par defaut pour la comparaison relative : |(X - Xref) / Xref| <= precision @@ -907,8 +906,8 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) { ############################################################## #---initialisation avec les precisions par defaut for(my $i=0; $i<=$#donnees_temp_maple; $i++) { - $precisions_abolues[$i] = $PREC_ABSOLU; - $precisions_relatives[$i] = $PREC_RELATIVE_POURCENT; + $precisions_abolues[$i] = $PREC_ABSOLU_DEFAUT; + $precisions_relatives[$i] = $PREC_RELATIVE_DEFAUT; } #---modification eventuelle des precisions si un fichier .precision existe if(-e $fic_precision) { @@ -948,8 +947,7 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) { #precisions my $precision_absolue = $precisions_abolues[$i_valeur];#*abs($valeur_ref); - # GR : modif 13 mars 2018: * 100 car les verifs sont faites ensuite sur les % - my $precision_relative = 100. * $precisions_relatives[$i_valeur]; + my $precision_relative = $precisions_relatives[$i_valeur]; #nombre de decimales des precisions (a titre cosmetique uniquement car c est pour afficher des valeurs arrondies dans le rapport de test) my $nb_decimales_prec_absolue = return_nb_decimales_first($precision_absolue); @@ -958,19 +956,19 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) { #difference absolue arrondie au nombre de decimales de la precision $precision_absolue my $diff_absolue = sprintf("%.${nb_decimales_prec_absolue}f", $valeur_temp - $valeur_ref); - #difference relative en pourcent arrondie au nombre de decimale de la precision $precision_relative - my $diff_relative_pourcent; + #difference relative arrondie au nombre de decimale de la precision $precision_relative + my $diff_relative; #-si $valeur_temp et $valeur_ref sont nulles, pas de souci, la difference relative est forcement nulle if($valeur_ref == 0 and $valeur_temp == 0) { - $diff_relative_pourcent = sprintf("%.${nb_decimales_prec_relative}f", 0.); + $diff_relative = sprintf("%.${nb_decimales_prec_relative}f", 0.); } #si $valeur_ref est nulle mais pas $valeur_temp, la comparaison relative est impossible elsif($valeur_ref == 0) { - $diff_relative_pourcent = "impossible car valeur de reference egale a 0"; + $diff_relative = "impossible car valeur de reference egale a 0"; } #cas general : difference relative par rapport a $valeur_ref else { - $diff_relative_pourcent = sprintf("%.${nb_decimales_prec_relative}f", 100.*($valeur_temp-$valeur_ref)/$valeur_ref); + $diff_relative = sprintf("%.${nb_decimales_prec_relative}f", ($valeur_temp-$valeur_ref)/$valeur_ref); } $sortie_rapport .= " -> grandeur testee : colonne \[$no_colonne_maple\]\n"; @@ -995,20 +993,20 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) { #comparaison relative ############################# #---cas d une comparaison impossible => affichage d un message d erreur (mais pas du mot ECHEC : ce n est pas un echec car la valeur de reference est egale a 0) - if($diff_relative_pourcent =~ /impossible/) { + if($diff_relative =~ /impossible/) { $sortie_rapport .= " - comparaison relative : impossible car valeur de reference egale a 0\n"; } #---OK - elsif(abs($diff_relative_pourcent) <= $precision_relative) { - $sortie_rapport .= " - comparaison relative (precision : $precision_relative\%) -> OK\n"; + elsif(abs($diff_relative) <= $precision_relative) { + $sortie_rapport .= " - comparaison relative (precision : $precision_relative) -> OK\n"; } #---ECHEC else { $is_grandeur_ECHEC = 1; - $sortie_rapport .= " - comparaison relative (precision : $precision_relative\%) -> ECHEC\n"; + $sortie_rapport .= " - comparaison relative (precision : $precision_relative) -> ECHEC\n"; $sortie_rapport .= " -> Valeur = $valeur_temp\n"; $sortie_rapport .= " -> Valeur reference = $valeur_ref\n"; - $sortie_rapport .= " -> Difference relative = $diff_relative_pourcent\%\n"; + $sortie_rapport .= " -> Difference relative = $diff_relative\n"; }