# Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
import logging
-from daCore import BasicObjects
+from daCore import BasicObjects, PlatformInfo
import numpy
+mpr = PlatformInfo.PlatformInfo().MachinePrecision()
# ==============================================================================
class ElementaryAlgorithm(BasicObjects.Algorithm):
# Entete des resultats
# --------------------
__marge = 12*" "
+ __precision = """
+ Remarque : les nombres inferieurs a %.0e (environ) representent un zero
+ a la precision machine.\n"""%mpr
if self._parameters["ResiduFormula"] == "ScalarProduct":
__entete = " i Alpha ||X|| ||Y|| ||dX|| R(Alpha) "
__msgdoc = """
qui doit rester constamment egal a zero a la precision du calcul.
On prend dX0 = Normal(0,X) et dX = Alpha*dX0. F est le code de calcul.
Y doit etre dans l'image de F. S'il n'est pas donne, on prend Y = F(X).
-
- Remarque : les nombres inferieurs a 1.e-16 (environ) representent un zero
- a la precision machine.
- """
+ """ + __precision
#
if len(self._parameters["ResultTitle"]) > 0:
msgs = "\n"
import logging
from daCore import BasicObjects, PlatformInfo
import numpy, copy
+mpr = PlatformInfo.PlatformInfo().MachinePrecision()
mfp = PlatformInfo.PlatformInfo().MaximumPrecision()
# ==============================================================================
if self._parameters["NumberOfRepetition"] > 1:
msg = (" %s\n"%("-"*75,))
msg += ("\n===> Statistical analysis of the outputs obtained throught repeated evaluations\n")
- msg += ("\n (Remark: numbers that are (about) under 1.e-16 represent 0 to machine precision)\n")
+ msg += ("\n (Remark: numbers that are (about) under %.0e represent 0 to machine precision)\n"%mpr)
Yy = numpy.array( Ys )
msg += ("\n Characteristics of the whole set of outputs Y:\n")
msg += (" Number of evaluations.........................: %i\n")%len( Ys )
# Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
import logging
-from daCore import BasicObjects
+from daCore import BasicObjects, PlatformInfo
import numpy, math
+mpr = PlatformInfo.PlatformInfo().MachinePrecision()
# ==============================================================================
class ElementaryAlgorithm(BasicObjects.Algorithm):
# Entete des resultats
# --------------------
__marge = 12*" "
+ __precision = """
+ Remarque : les nombres inferieurs a %.0e (environ) representent un zero
+ a la precision machine.\n"""%mpr
if self._parameters["ResiduFormula"] == "Taylor":
__entete = " i Alpha ||X|| ||F(X)|| ||F(X+dX)|| ||dX|| ||F(X+dX)-F(X)|| ||F(X+dX)-F(X)||/||dX|| R(Alpha) log( R ) "
__msgdoc = """
faite dans le calcul du terme GradientF_X.
On prend dX0 = Normal(0,X) et dX = Alpha*dX0. F est le code de calcul.
-
- Remarque : les nombres inferieurs a 1.e-16 (environ) representent un zero
- a la precision machine.
- """
+ """ + __precision
if self._parameters["ResiduFormula"] == "TaylorOnNorm":
__entete = " i Alpha ||X|| ||F(X)|| ||F(X+dX)|| ||dX|| ||F(X+dX)-F(X)|| ||F(X+dX)-F(X)||/||dX|| R(Alpha) log( R ) "
__msgdoc = """
grandeur de ||F(X)||.
On prend dX0 = Normal(0,X) et dX = Alpha*dX0. F est le code de calcul.
-
- Remarque : les nombres inferieurs a 1.e-16 (environ) representent un zero
- a la precision machine.
- """
+ """ + __precision
if self._parameters["ResiduFormula"] == "Norm":
__entete = " i Alpha ||X|| ||F(X)|| ||F(X+dX)|| ||dX|| ||F(X+dX)-F(X)|| ||F(X+dX)-F(X)||/||dX|| R(Alpha) log( R ) "
__msgdoc = """
qui doit rester constant jusqu'à ce que l'on atteigne la précision du calcul.
On prend dX0 = Normal(0,X) et dX = Alpha*dX0. F est le code de calcul.
-
- Remarque : les nombres inferieurs a 1.e-16 (environ) representent un zero
- a la precision machine.
- """
+ """ + __precision
#
if len(self._parameters["ResultTitle"]) > 0:
msgs = "\n"
# Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
import logging
-from daCore import BasicObjects
+from daCore import BasicObjects, PlatformInfo
import numpy, math
+mpr = PlatformInfo.PlatformInfo().MachinePrecision()
# ==============================================================================
class ElementaryAlgorithm(BasicObjects.Algorithm):
# Entete des resultats
# --------------------
__marge = 12*" "
+ __precision = """
+ Remarque : les nombres inferieurs a %.0e (environ) representent un zero
+ a la precision machine.\n"""%mpr
if self._parameters["ResiduFormula"] == "CenteredDL":
__entete = " i Alpha ||X|| ||F(X)|| | R(Alpha) log10( R ) "
__msgdoc = """
de la décroissance quadratique.
On prend dX0 = Normal(0,X) et dX = Alpha*dX0. F est le code de calcul.
- """
+ """ + __precision
if self._parameters["ResiduFormula"] == "Taylor":
__entete = " i Alpha ||X|| ||F(X)|| | R(Alpha) log10( R ) "
__msgdoc = """
de la décroissance quadratique.
On prend dX0 = Normal(0,X) et dX = Alpha*dX0. F est le code de calcul.
- """
+ """ + __precision
if self._parameters["ResiduFormula"] == "NominalTaylor":
__entete = " i Alpha ||X|| ||F(X)|| | R(Alpha) |R-1| en % "
__msgdoc = """
est vérifiée.
On prend dX0 = Normal(0,X) et dX = Alpha*dX0. F est le code de calcul.
- """
+ """ + __precision
if self._parameters["ResiduFormula"] == "NominalTaylorRMS":
__entete = " i Alpha ||X|| ||F(X)|| | R(Alpha) |R| en % "
__msgdoc = """
est vérifiée.
On prend dX0 = Normal(0,X) et dX = Alpha*dX0. F est le code de calcul.
- """
+ """ + __precision
#
if len(self._parameters["ResultTitle"]) > 0:
msgs = "\n"
# Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
import logging
-from daCore import BasicObjects
+from daCore import BasicObjects, PlatformInfo
import numpy, math
+mpr = PlatformInfo.PlatformInfo().MachinePrecision()
# ==============================================================================
class ElementaryAlgorithm(BasicObjects.Algorithm):
# Entete des resultats
# --------------------
__marge = 12*" "
+ __precision = """
+ Remarque : les nombres inferieurs a %.0e (environ) representent un zero
+ a la precision machine.\n"""%mpr
if self._parameters["ResiduFormula"] == "Taylor":
__entete = " i Alpha ||X|| ||F(X)|| | R(Alpha) |R-1|/Alpha "
__msgdoc = """
l'on atteigne la précision du calcul.
On prend dX0 = Normal(0,X) et dX = Alpha*dX0. F est le code de calcul.
-
- Remarque : les nombres inferieurs a 1.e-16 (environ) representent un zero
- a la precision machine.
- """
+ """ + __precision
#
if len(self._parameters["ResultTitle"]) > 0:
msgs = "\n"
__author__ = "Jean-Philippe ARGAUD"
__all__ = []
-import os
+import os, sys
# ==============================================================================
class PlatformInfo(object):
def getPythonVersion(self):
"Retourne la version de python disponible"
- import sys
return ".".join([str(x) for x in sys.version_info[0:3]]) # map(str,sys.version_info[0:3]))
def getNumpyVersion(self):
mfp = 'float64'
return mfp
+ def MachinePrecision(self):
+ # Alternative sans module :
+ # eps = 2.38
+ # while eps > 0:
+ # old_eps = eps
+ # eps = (1.0 + eps/2) - 1.0
+ return sys.float_info.epsilon
+
def __str__(self):
import version as dav
return "%s %s (%s)"%(dav.name,dav.version,dav.date)
"""
def __init__(self):
"Déclaration des répertoires statiques"
- import sys
parent = os.path.abspath(os.path.join(os.path.dirname(__file__),".."))
self.__paths = {}
self.__paths["daExternals"] = os.path.join(parent,"daExternals")