+# -*- coding: utf-8 -*-
from __future__ import division
import math
import Numeric
+import types
def mkf(value):
if type(value) in (type(1), type(1L), type(1.5), type(1j),type("hh")) :
def __adapt__(self,validator):
return validator.adapt(self.eval())
-original_sqrt=math.sqrt
-original_ceil=math.ceil
-original_cos=math.cos
-original_sin=math.sin
-original_ncos=Numeric.cos
-original_nsin=Numeric.sin
class Unop(Formula):
opmap = { '-': lambda x: -x,
- 'sqrt': lambda x: original_sqrt(x),
- 'ceil': lambda x: original_ceil(x),
- 'sin': lambda x: original_sin(x),
- 'cos': lambda x: original_cos(x) ,
- 'ncos': lambda x: original_ncos(x),
- 'nsin': lambda x: original_nsin(x),
}
def __init__(self, op, arg):
self._op = op
def __adapt__(self,validator):
return validator.adapt(self._value)
+def Eval(f):
+ if isinstance(f,Formula):
+ f=f.eval()
+ elif type(f) in (types.ListType, ):
+ f=[Eval(i) for i in f]
+ elif type(f) in (types.TupleType,):
+ f=tuple([Eval(i) for i in f])
+ return f
+
+
+#surcharge de la fonction cos de Numeric pour les parametres
+original_ncos=Numeric.cos
def cos(f): return Unop('ncos', f)
-def sin(f): return Unop('nsin', f)
+Unop.opmap['ncos']=lambda x: original_ncos(x)
Numeric.cos=cos
+
+#surcharge de la fonction sin de Numeric pour les parametres
+original_nsin=Numeric.sin
+def sin(f): return Unop('nsin', f)
+Unop.opmap['nsin']=lambda x: original_nsin(x)
Numeric.sin=sin
-def sqrt(f): return Unop('sqrt', f)
-def ceil(f): return Unop('ceil', f)
-def cos(f): return Unop('cos', f)
+
+#surcharge de la fonction array de Numeric pour les parametres
+original_narray=Numeric.array
+def array(f,*tup,**args):
+ """array de Numeric met en défaut la mécanique des parametres
+ on la supprime dans ce cas. Il faut que la valeur du parametre soit bien définie
+ """
+ return original_narray(Eval(f),*tup,**args)
+Numeric.array=array
+
+#surcharge de la fonction sin de math pour les parametres
+original_sin=math.sin
def sin(f): return Unop('sin', f)
-math.cos=cos
+Unop.opmap['sin']=lambda x: original_sin(x)
math.sin=sin
+
+#surcharge de la fonction cos de math pour les parametres
+original_cos=math.cos
+Unop.opmap['cos']=lambda x: original_cos(x)
+def cos(f): return Unop('cos', f)
+math.cos=cos
+
+#surcharge de la fonction sqrt de math pour les parametres
+original_sqrt=math.sqrt
+def sqrt(f): return Unop('sqrt', f)
+Unop.opmap['sqrt']=lambda x: original_sqrt(x)
math.sqrt=sqrt
+
+#surcharge de la fonction ceil de math pour les parametres
+original_ceil=math.ceil
+Unop.opmap['ceil']=lambda x: original_ceil(x)
+def ceil(f): return Unop('ceil', f)
math.ceil=ceil