| On January 19, 2006 5:53 AM Fabio Stumbo wrote: if-then-else: what is wrong?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:: fricas (1) -> i := 2 
 Type: PositiveInteger? fricas if i>0 then output("positive") else output("nonpositive")Type: Void fricas if i > 0 then output("positive")
    else output("nonpositive")Type: Void fricas if true then
    if i > 0 then output("positive")
    else output("nonpositive")Type: Void fricas if true then
   if i > 0
   then output("positive")
   else output("nonpositive")Type: Void fricas 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: fricas i := 2 
 Type: PositiveInteger? 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). fricas for i in 2..2 repeat
  if i>0 then output("positive") else output("nonpositive")Type: Void fricas for i in 2..2 repeat
  if i > 0 then output("positive")
    else output("nonpositive")Type: Void fricas for i in 2..2 repeat
  if i > 0 then output("positive")
  else output("nonpositive")Type: Void fricas for i in 2..2 repeat
  if i > 0
  then output("positive")
  else output("nonpositive")Type: Void The ones above works OK. The following one looks like a bug... fricas for i in 2..2 repeat
  if i > 0
    then output("positive")
    else output("nonpositive")fricas for i in 2..2 repeat
  if i > 0 then
    output(i)
    output("positive")
  else
    output(i)
    output("nonpositive")Type: Void fricas i:=1.5 
 Type: Float fricas a :=
  if i > 0 then
    j := sin(i * pi())
    exp(j + 1/j)
  else
    j := cos(i * 0.5 * pi())
    log(abs(j)**5 + 1)
 Type: Float 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: fricas test: (INT, Type: Void fricas test(a, Type: Void Then, fricas 4 rem -2 
 Type: NonNegativeInteger? fricas test(4, fricas Compiling function test with type (Integer, 
 Type: List(Integer) returns correctly '[1,1]?', but fricas 4 rem -3 
 Type: PositiveInteger? fricas test(4, 
 Type: List(Integer) or fricas 4 rem 2 
 Type: NonNegativeInteger? fricas test(4, 
 Type: List(Integer) returns wrongly '[0,1]?'. Actually the result is '[0, 0]?' which is correct. The same happens if I write fricas test: (INT, Type: Void fricas test(a, Type: Void 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 fricas )di op extendedEuclidean 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 | 





![\label{eq6}\left[ 1, \: 1 \right] 
\label{eq6}\left[ 1, \: 1 \right]](images/7682056267670921625-16.0px.png)

![\label{eq8}\left[ 0, \: 0 \right] 
\label{eq8}\left[ 0, \: 0 \right]](images/3070523724433688753-16.0px.png)

![\label{eq10}\left[ 0, \: 0 \right] 
\label{eq10}\left[ 0, \: 0 \right]](images/1410600471486593279-16.0px.png)