Waldek Hebisch <[EMAIL PROTECTED]> writes: [....]
> There is an extra difficulty: traditional numerical definitions > of elementary functions have branch cuts. Branch cuts means > that we no longer have analytic functions and we may get > zero divisors even if algebraic approach would produce unique > answer. > Branch cuts turn decidable problem into undecidable one: > I am not sure how well we want to support branch cuts. I belive > that in most practical cases functions are analytic, for example > sqrt(exp(%i*x)) is just exp(%i*x/2) (while branch cut interpretation > would produce artifical discontinuities). > In other work "correctly" > handling branch cuts means solving hard problem giving result > which probably does not match with user expectations... > OTOH for numeric computation branch cuts seem to be accepted > solution. Using one definition for symbolic computations > and a different one for numeric computations breaks one > of fundamental expectations (namely, that evaluating functions > at a point is a homomorphizm). I find very important this last point of view. I try to use and to teach almost(?) the same mathematics with a pencil and with a computer algebra system to my students. A lot of formula about sqrt are right because there are the usual branch cuts. Without theses branch cuts I fear we can write -1 = 1^(1/2) = 1 and the equal isn't so associative. I think the map notion has priority over branch cut. For real numbers sqrt (x^2) = abs x is an universal equality because sqrt is a map. When we prefer to write sqrt (x^2) = x we loose the common sens of mathematics and all the map abilities. I give this exercice to my students. Solve in x for a real number a the equation a (a-1) x = a (or an other equation as this one) With an algebra point of view we get x = 1/(a-1). Standard mathematics prefers : a=0 => every x is solution. a=1 => there is no solution => x = 1 / (a-1) 0/0 is undefined, even in a/a when a=0 I prefer a CAS which respect (almost) all mathematics by default. When the question is undecidable or isn't coded an option as << NoPole >> prevents the user to be prudent. The topic of the #285 bug is almost the same. In the elemntry package I test I only simplify by default exp (log z) = z, not log (exp z) = z. But in a rewrite? package I'll add a rewrite rule as rewrite (log (exp z), logExp) which gives z. François. _______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-developer