2
0
Fork 0

1) comparaison maple : maintenant les grandeurs sont arrondies a 1e-12 pres (pour gerer le cas de nombres tres petits. Par exemple : 1e-31 par rapport 1e-15 va generer un ecart relatif enorme, donc un ECHEC, ce qui n est pas logique); 2) petites corrections et ameliorations mineures (voir detail des modifs dans doc_procedure_verification.pdf section 6 2015-11-25(bis))

This commit is contained in:
troufflard 2015-11-25 14:39:29 +00:00
parent 619bf47a3b
commit c4ec708caa
7 changed files with 228 additions and 897 deletions

View file

@ -781,6 +781,16 @@ remarque : modif
- juste après l'appel à \verb|lancement_commande()| $\Rightarrow$ saisie du temps de calcul dans le \verb|.log| et affichage dans le rapport de test (juste après le nom du test)\\ - juste après l'appel à \verb|lancement_commande()| $\Rightarrow$ saisie du temps de calcul dans le \verb|.log| et affichage dans le rapport de test (juste après le nom du test)\\
\end{itemize}%tiret \end{itemize}%tiret
\item[$\bullet$] 2015-11-25(bis) (Julien Troufflard) :
\begin{itemize}
\item[-] modif scripts \verb|Perl/genere_catalogue_tests.pl| et \verb|Perl/genere_rapport.pl| : suppression de l'option \verb|-s| dans le shebang (inutile et en plus génère un bug sur Linux quand on utilise la tournure \verb|#/usr/bin/env perl -s|)
\item[-] modif script \verb|Perl/test.pl| :\\
- remplacement de la subroutine \verb|return_nb_decimales()| par la subroutine \verb|return_nb_decimales_first()| (m\^eme chose mais en mieux : renvoie la position de la première décimale non nulle au lieu du nombre total de décimales). Pour rappel, ce traitement n'a pas pour but d'arrondir les résultats pour la comparaison. Il s'agit juste d'un arrondi à but cosmétique pour afficher, dans le rapport, la grandeur avec un nombre de décimales adapté à la précision.\\
- comparaison maple :\\
1) modification de la comparaison pour gérer le cas où le nombre est très petit (par exemple : 1.e-15 comparé à 1.e-30 génère une erreur relative énorme). Ce problème avait été déjà pensé dans la version historique de la vérification Herezh (Laurent Mahéo) mais malheureusement non traité dans la nouvelle version. Désormais, on traite ce problème en arrondissant les grandeurs à 1.e-12 près.\\
2) correction d'une erreur dans la comparaison absolue : par erreur, la comparaison se faisait toujours par rapport à la précision absolue par défaut (\verb|$PREC_ABSOLU|) sans tenir compte de l'éventuelle modification par fichier \verb|.precision|\\
\end{itemize}%tiret
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%template d ajout d une nouvelle mise à jour (composé d'une puce "bullet" avec Date et auteur de la modif, suivie d une série de puce "-" %template d ajout d une nouvelle mise à jour (composé d'une puce "bullet" avec Date et auteur de la modif, suivie d une série de puce "-"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View file

@ -1,4 +1,4 @@
#!/usr/bin/env perl -s #!/usr/bin/env perl
use strict; use strict;
use warnings; use warnings;
use File::Basename; use File::Basename;

View file

@ -1,4 +1,4 @@
#!/usr/bin/env perl -s #!/usr/bin/env perl
use strict; use strict;
#use Regexp::Common;#expressions regulieres; par exemples pour reconnaitre un entier $RE{num}{int} ou un reel $RE{num}{real} #use Regexp::Common;#expressions regulieres; par exemples pour reconnaitre un entier $RE{num}{int} ou un reel $RE{num}{real}
use File::Basename; use File::Basename;

View file

@ -43,6 +43,7 @@ my $format_reel = '[+-]?[\.]?\d+[\.]?\d*(?:[eE][+-]?\d*)?';
my $PREC_ABSOLU = "1.e-6";#precision pour la comparaison absolue my $PREC_ABSOLU = "1.e-6";#precision pour la comparaison absolue
my $PREC_RELATIVE_POURCENT = "1.e-3";#precision pour la comparaison relative (en pourcent) my $PREC_RELATIVE_POURCENT = "1.e-3";#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)
@ -725,17 +726,17 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
#numero de colonne dans le .maple #numero de colonne dans le .maple
my $no_colonne_maple = $i_valeur + 1; my $no_colonne_maple = $i_valeur + 1;
#valeur a comparer #valeur a comparer (arrondie a 1.e-12 pour gerer le cas de nombres proches de 0)
my $valeur_temp = $donnees_temp_maple[$i_valeur];#calcul en cours my $valeur_temp = sprintf("%.12f", $donnees_temp_maple[$i_valeur]);#calcul en cours
my $valeur_ref = $donnees_ref_maple[$i_valeur];#valeur de reference my $valeur_ref = sprintf("%.12f", $donnees_ref_maple[$i_valeur]);#valeur de reference
#precisions #precisions
my $precision_absolue = $precisions_abolues[$i_valeur]; my $precision_absolue = $precisions_abolues[$i_valeur];#*abs($valeur_ref);
my $precision_relative = $precisions_relatives[$i_valeur]; my $precision_relative = $precisions_relatives[$i_valeur];
#nombre de decimales des precisions (pour afficher des valeurs arrondies dans le rapport de test) #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($precision_absolue); my $nb_decimales_prec_absolue = return_nb_decimales_first($precision_absolue);
my $nb_decimales_prec_relative = return_nb_decimales($precision_relative); my $nb_decimales_prec_relative = return_nb_decimales_first($precision_relative);
#difference absolue arrondie au nombre de decimales de la precision $precision_absolue #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); my $diff_absolue = sprintf("%.${nb_decimales_prec_absolue}f", $valeur_temp - $valeur_ref);
@ -761,7 +762,7 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
#comparaison absolue }; #comparaison absolue };
############################# #############################
#---OK #---OK
if(abs($diff_absolue) <= $PREC_ABSOLU) { if(abs($diff_absolue) <= $precision_absolue) {
$sortie_rapport .= " - comparaison absolue (precision : $precision_absolue) -> OK\n"; $sortie_rapport .= " - comparaison absolue (precision : $precision_absolue) -> OK\n";
} }
#---ECHEC #---ECHEC
@ -1264,36 +1265,34 @@ sub active_RESTART {
##################################################################################################### #####################################################################################################
#subroutine qui renvoie le nombre de decimales d un reel #subroutine qui renvoie le nombre de decimales necessaire pour atteindre la premiere decimale non nulle d un reel
##################################################################################################### #####################################################################################################
##
# en entree : # en entree :
# - un reel # - un reel
# #
# en sortie : # en sortie :
# - nombre de decimales # - nombre de decimales
# #
sub return_nb_decimales { sub return_nb_decimales_first {
my $nombre = shift; my $nombre = shift;
$nombre = "$nombre";
return 0 if($nombre =~ /^\d+$/);#cas d un entier
#saisie d une eventuelle puissance de 10 $nombre = abs($nombre);
my $exp = 0;
$nombre =~ s/[Ee]([+-]?\d+)//;
$exp = $1 if(defined($1));
#calcul du nombre de decimales du reel sans son eventuelle puissance de 10 $nombre = $nombre - int($nombre);#suppression de la partie entiere
my @tab = split(//, $nombre); return 0 if($nombre == 0);#gestion du cas $nombre == entier
#on multiplie par 10 le nombre jusqu a ce qu il devienne superieur ou egal a 1
# => On compte 1 decimale pour chaque multiplication par 10
my $nb_decimales = 0; my $nb_decimales = 0;
my $i; while() {
for($i=0; $i<=$#tab; $i++) {last if($tab[$i] eq '.');} last if($nombre >= 1);
for(my $j=$i+1; $j<=$#tab; $j++) {$nb_decimales++;} $nombre *= 10;
$nb_decimales++;
#rajout du decalage de virgule selon l eventuelle puissance de 10 }
$nb_decimales -= $exp;
return $nb_decimales; return $nb_decimales;
}#sub return_nb_decimales }#sub return_nb_decimales_first
##################################################################################################### #####################################################################################################

View file

@ -1,109 +1,43 @@
--------------------------------------- ---------------------------------------
- RAPPORT DE TEST - - RAPPORT DE TEST -
--------------------------------------- ---------------------------------------
- version HZ++ : HZppfast 6.725 - version HZ++ : HZppfast 6.729
- Batterie de tests lancee - date : 25/11/2015
- le 30/09/2015 - heure : 10:2 (heure locale)
- a 23:19 (heure locale) - machine : hdom-1057.univ-ubs.fr
--------------------------------------- ---------------------------------------
./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/CP_venant_du_3D/Test_L_tunnel_ISOELAS_CP/.CVisu1 ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/CP_venant_du_3D/Test_L_tunnel_ISOELAS_CP/.CVisu1
-> grandeur testee : colonne [1] -------------------------------------------------------
- comparaison absolue (precision : 1.e-6) -> OK | temps cpu : 00:01:03.021 (processeur : 99.8%)
- comparaison relative (precision : 1.e-3%) -> OK | temps systeme : 00:00:00.128 (processeur : 99.8%)
| temps reel : 00:01:03.22
-------------------------------------------------------
-> grandeur testee : colonne [2] -> pour toutes les grandeurs testees : OK
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [3]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [4]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [5]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [6]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [7]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [8]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/CP_venant_du_3D/Test_L_tunnel_isohyper3dorgeas1_CP/.CVisu1 ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/CP_venant_du_3D/Test_L_tunnel_isohyper3dorgeas1_CP/.CVisu1
-> grandeur testee : colonne [1] -------------------------------------------------------
- comparaison absolue (precision : 1.e-6) -> OK | temps cpu : 00:00:15.755 (processeur : 99.8%)
- comparaison relative (precision : 1.e-3%) -> OK | temps systeme : 00:00:00.043 (processeur : 99.8%)
| temps reel : 00:00:15.81
-------------------------------------------------------
-> grandeur testee : colonne [2] -> pour toutes les grandeurs testees : OK
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [3]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [4]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [5]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [6]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [7]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [8]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/ISOELAS2D_C/Test_L_tunnel_ISOELAS2D_C/.CVisu1 ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/ISOELAS2D_C/Test_L_tunnel_ISOELAS2D_C/.CVisu1
-> grandeur testee : colonne [1] -------------------------------------------------------
- comparaison absolue (precision : 1.e-6) -> OK | temps cpu : 00:01:15.679 (processeur : 99.3%)
- comparaison relative (precision : 1.e-3%) -> OK | temps systeme : 00:00:01.277 (processeur : 99.3%)
| temps reel : 00:01:17.45
-------------------------------------------------------
-> grandeur testee : colonne [2] -> pour toutes les grandeurs testees : OK
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [3]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [4]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [5]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [6]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [7]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK
-> grandeur testee : colonne [8]
- comparaison absolue (precision : 1.e-6) -> OK
- comparaison relative (precision : 1.e-3%) -> OK

File diff suppressed because it is too large Load diff

Binary file not shown.