From 45d6d5fc057a045e7861fa7e67541e99794a24f5 Mon Sep 17 00:00:00 2001 From: Christian Caremoli <> Date: Wed, 31 May 2006 12:07:08 +0000 Subject: [PATCH] CCAR: correction probleme parametre avec Numeric.array --- Extensions/param2.py | 66 ++++++++++++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 17 deletions(-) diff --git a/Extensions/param2.py b/Extensions/param2.py index 23dd105c..ad49373b 100644 --- a/Extensions/param2.py +++ b/Extensions/param2.py @@ -1,6 +1,8 @@ +# -*- 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")) : @@ -71,21 +73,9 @@ class Binop(Formula): 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 @@ -141,15 +131,57 @@ class Variable(Formula): 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 -- 2.39.2