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
This commit is contained in:
parent
8129631bd6
commit
641526eefa
1 changed files with 15 additions and 17 deletions
32
Perl/test.pl
32
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";
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue