fnormal in maple (version 7, anyway)



I'm sorry, I formulated my problem not correct. Your solution works
for (a+10^(-15)), but it does not work for (1+10^(-15)).
I'd like to use it for solving simple recurrent algebraic equations. During the
calculations some dust of order 10^(-15) multiplyed by unknown at
that moment constants and functions appear and I need to remove it. I agree that the name "chop"
is better than "fnormal". I thought that there exist an analog in
Maxima.
I need following results:
chop(a*10^(-15)+b)=b, where a and b are unknown variables, functions or there
combinations, or numbers of order 1 or something else like this.
chop(a*10^(-14)+b)=a*10^(-14)+b
chop(a*10^(-15)+b*10^(-1))=b*10^(-1)
chop(a*10^(5)+b*10^(20))=a*10^(5)
chop(a*10^(5)+b*10^(19))=a*10^(5)+b*10^(19)
chop( (a*10^(-15)+b) / (c*10^(-3)+d*10^(12)) )= b/d *10^(-12)
chop( (a*10^(-15)+b*10^(-1)) / (c*10^(-16)+d*10^(-1)) ) =
b/d+a/d*10^(-14)
chop( (a*10^(-15)+b) / (c*10^(-2)+d*10^(12)) ) = b / (c*10^(-2)+d*10^(12))
and so on...

I understand that the weak point of such definition is "expressions of
order 1". Well, I think 1/(1+z/2) is of order 1. Also numbers much
than 0.1 and less than 10 should considered of order 1.

Fnormal in Maple does not satisfy all these requests, it is only an
analog of the ideal function chop.

> Given the definition below, a simplified version of Maple's fnormal would
> be:

> fnormal(ex):=
>    if numberp(ex) and abs(ex) < 1.0e-14 then 0
>    elseif mapatom(ex) then ex
>    else map(fnormal,ex);

-- 
 Alexander                          mailto:aee at imm.uran.ru