03-10-2014, 05:10 PM

I am not sure whether this is a bug. At least its confusing:

I stumbled about it when I defined a CAS function:

So the first confusion: The "==" which is written in the input is converted to "=" in the history if Textbook display is off (2nd page of Home settings). I remember this thread where Parisse mentions that == should not be used to compare expressions. But since gcd() just returns a number here I guess it should be okay here.

Other confusions:

Other modifications are also somewhat confusing (letting away the ELSE part):

From now on Textbook display is switched on: Then the history look as follows:

So the IF THEN... gets changed to ifte(). But confusion doesn't end here. After I discovered the handy "ifte()" command because of the previously mentioned output I modified my input as follows:

Which then leads to an output:

Now lets switch of Textbook display again.

If you then type the above into the input line, the output is AGAIN different, now using the ternary operator, plus a shitload of brackets!

I am close to say "thank you" to the prime for this nice little tour over all possible variants of conditional clauses :-D. But I'd appreciate if the output would be close to what I typed as input...

I stumbled about it when I defined a CAS function:

Code:

`phi:=(n)->sum(seq(IF gcd(k,n)==1 THEN 1; ELSE 0; END),k,1,n)`

So the first confusion: The "==" which is written in the input is converted to "=" in the history if Textbook display is off (2nd page of Home settings). I remember this thread where Parisse mentions that == should not be used to compare expressions. But since gcd() just returns a number here I guess it should be okay here.

Other confusions:

Other modifications are also somewhat confusing (letting away the ELSE part):

Code:

`phi:=(n)->sum(seq(IF (gcd(k,n))=1 THEN 1; END),k,1,n)`

From now on Textbook display is switched on: Then the history look as follows:

Code:

`phi:=(n)->sum(seq(ifte([gcd(k,n)==1 1 0]),k,1,n)`

So the IF THEN... gets changed to ifte(). But confusion doesn't end here. After I discovered the handy "ifte()" command because of the previously mentioned output I modified my input as follows:

Code:

`phi:=(n)->sum(seq(ifte(gcd(k,n)==1, 1, 0),k,1,n))`

Which then leads to an output:

Code:

`phi:=(n)->sum(seq(when(gcd(k,n)==1, 0),k,1,n))`

Now lets switch of Textbook display again.

If you then type the above into the input line, the output is AGAIN different, now using the ternary operator, plus a shitload of brackets!

Code:

`phi:=(n)->sum(seq(((((gcd(k,n))==1)) ? 1 : 0),k,1,n))`

I am close to say "thank you" to the prime for this nice little tour over all possible variants of conditional clauses :-D. But I'd appreciate if the output would be close to what I typed as input...