Singular
https://www.singular.uni-kl.de/forum/

Symbolic computation in a procedure
https://www.singular.uni-kl.de/forum/viewtopic.php?f=10&t=2574
Page 1 of 1

Author:  jcapcotemp [ Mon Feb 20, 2017 11:52 am ]
Post subject:  Symbolic computation in a procedure

Hi,

I am new to singular and have much more experience in mathematica and maple. One thing that separates singular from the other CAS I know is that indeterminates (I call them "symbols") have to be iniitated in a ring before doing any kind of algebra. Now suppose I create a procedure, in here it seems that singular does not care if the ring variables have not been defined. But what confuses me is that the following does not work

Code:
proc test123()
{
  return v(1)*v(2);
}

ring A = 0,(v(1..2)),dp;
test123();


I'm not really sure how to use the ring variables in the procedure and the documentation does not make me any wiser. Any help would be appreciated. I am trying to ports most of my codes (algebraic geometry for kinematics) to singular because this gives me the opportunity to continue using a free CAS and distribute this to interested people (without requiring them to have maple) and I am slowly getting annoyed of maples slowness (commandline execution gets slower after every new version of maple and older maple are known to be difficult when operating system updates). I also like and feel more comfortable with the C/C++ structure of singular.

Author:  gorzel [ Mon Feb 20, 2017 3:18 pm ]
Post subject:  Re: Symbolic computation in a procedure

Almost any command in Singular needs to be called with (may be empty) parentheses.
The return command is not exception from this rule. So put the ( ), and it works as desired.
Code:
> proc test123()  {
    return(v(1)*v(2));
}
> ring A = 0,(v(1..2)),dp;
> test123();
v(1)*v(2)

Hint: To make this proc independent of the names of the variables, write:
Code:
> proc test1234()  {
    return(var(1)*var(2));
}
> ring rdp = 0,(x,y),dp;
> test1234();
xy

Page 1 of 1 All times are UTC + 1 hour [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/