Après chaque calcul qui amènerait une valeur absolue, ou même dans ce calcul, tu rajoutes à la fin de la ligne "|l>0". Par exemple :
- Code: Select all
blabla|l>0
Si ça ne fonctionne pas comme tu le veux, tu peux enlever toutes les valeurs absolues un peu plus simplement que comme tu l'as fait en utilisant la fonction "part(".
Voici un exemple de code pour retirer de manière récursive les valeurs absolues :
- Code: Select all
retirabs(datain)
Func
local ff0,ff1,ff2,ff3,i,n
part(datain)>n
for i,0,n
part(datain,i)>#("ff"&string(i))
endfor
if n=0 then
return datain
elseif n=1 then
if ff0="abs" then
return ff1
else
return expr(ff0&"("&string(retirabs(ff1))&")")
endif
elseif n=2 then
return expr("("&string(retirabs(ff1))&")"&ff0&"("&string(retirabs(ff2))&")")
endif
EndFunc
Il faudrait rajouter des cas pour n>=3, ce qui arrive seulement pour les intégrales, la fonction "when(", et les listes.
Mais ça devrait fonctionner assez bien pour l'instant.