axiom-math
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-math] if-then-else: what is wrong?


From: Fabio S.
Subject: [Axiom-math] if-then-else: what is wrong?
Date: Thu, 19 Jan 2006 11:53:25 +0100 (CET)


I am having some problem with the if-then-else syntax in the .input files.

Problem 1: I refer to the axiom book which ships with the program (version 2005/09). At page 204 it says that the usual rules for piling are suspended in conditional expressions and it gives 5 different ways which should be equivalent, namely:

if i>0 then output("positive") else output("nonpositive")

if i > 0 then output("positive")
  else output("nonpositive")

if i > 0 then output("positive")
else output("nonpositive")

if i > 0
then output("positive")
else output("nonpositive")

if i > 0
  then output("positive")
  else output("nonpositive")


Well, I tried all of them, creating each time a blank r.input file with inside only

i := 2

followed by one of the "if...".

The result is that the first two are ok, where as the other three give some syntax error (different each time).

So: what is happening? Is the book wrong?!?!

Problem 2: again with if then else, in a complex function I noticed a wrong result (the function itself was ok... ;-)
Simplifying, you can produce the same error with something like:

test: (INT,INT) -> List(INT,INT)
test(a,b) ==
 x := 0; y := 0
 if (a rem b = 0) and b < 0 then
  x := 1 ; y := 1
 [x,y]

Then, test(4,-2) returns correctly [1,1], but test(4,-3) or test(4,2) returns wrongly [0,1]. The same happens if I write

 if (a rem b = 0) and b < 0 then  x := 1 ; y := 1

Why?

Another small question. Is there a way to obtain on line the syntax of a command in a more extensive way? I mean, for example, that writing
(3) -> )di op extendedEuclidean

I get

(3) ->
There are 2 exposed functions called extendedEuclidean :
   [1] (D,D,D) -> Union(Record(coef1: D,coef2: D),"failed") from D
            if D has EUCDOM
   [2] (D,D) -> Record(coef1: D,coef2: D,generator: D) from D if D has
            EUCDOM

which is not too useful. Moreover, how can I just ask about, say, the second function extendedEuclidean?

If I wanted to ask about the syntax of if-then-else, I would like to write
something like
)? if
or
)ap if

but nothing gives clues on how to use it.


Thank you for all your help

Fabio Stumbo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]