PS: I just like to add that if a system provides automatically an expansion of the definition of test1 in "evaluating" "test1 y", then it is easy to see the system can easily get "clogged" with unintelligible output, for example, even in as simple an expression as "test1 test1 y" and no system can handle expansion of things like "test1^n y" (iterating test1 n times, where n is also a variable).

(Mathematica provides a "notation" to hold the expression, for example, Nest[test1,y,n]), in effect, creating a new function through composition.)

The problem in Axiom is, however, still due to the dual (and automatically selected) meanings of "y < 10". If we qualify the "<" operation by "<($Integer)", then Axiom will refuse to evaluate "y <($Integer) 10" because y is not known to be of type Integer. Axiom announces an error, while Mathematica returns the input.

William

On Sat, 30 Apr 2011 20:40:28 +0200
 Stefan Karrmann <[email protected]> wrote:
Dear all,

I'm new to axiom and have a problem with piecewise functions.

test1 (x | x < 10) == 2*x
test1 (x | x < 10) == 5*x^2
test1
-> test1 (x | x < 10) == 2x
  test1 (x | ^ x < 10) == 5x
Type: FunctionCalled
test1 y
->
    2
  5y

I expected something like (if y < 10 then 2*y else 5*y**2).

How is it possible to pass a Variable to a piecewise function respecting
the pieces?

PS: Using a block and => or explicit if-then-else does not help.

--
Kind regards,
Stefan


_______________________________________________
Axiom-math mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/axiom-math

William Sit, Professor Emeritus
Mathematics, City College of New York
Office: R6/291D Tel: 212-650-5179
Home Page: http://scisun.sci.ccny.cuny.edu/~wyscc/

_______________________________________________
Axiom-math mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/axiom-math

Reply via email to