Symbolics & Pynac
system:sage


<h1>GiNaC</h1>
<ul>
<li><span style="font-size: large;">Clean, clear to understand code<br /></span></li>
<li><span style="font-size: large;">responsive developers</span></li>
<li><span style="font-size: large;">fast!</span></li>
</ul>
<p><a href="http://www.ginac.de/">http://www.ginac.de</a></p>

{{{id=7|

///
}}}

{{{id=6|

///
}}}

{{{id=5|

///
}}}

<ul>
<li><a href="http://www.ginac.de/tutorial/The-class-hierarchy.html">class hierarchy</a></li>
<li><a href="http://www.ginac.de/tutorial/Internal-representation-of-products-and-sums.html">internal representation</a></li>
<li><a href="http://www.ginac.de/tutorial/Symbolic-functions.html">symbolic functions</a></li>
</ul>

{{{id=3|

///
}}}

{{{id=4|

///
}}}

{{{id=1|

///
}}}

<p>What changed</p>
<ul>
<li>CLN -&gt; python</li>
<li>printing order</li>
<li>creating functions at runtime</li>
<li>archiving -&gt; pickling</li>
<li>infinity, exp</li>
</ul>

{{{id=10|

///
}}}

<p>To get started:</p>
<p><a href="http://wiki.sagemath.org/pynac/start">http://wiki.sagemath.org/pynac/start</a></p>

{{{id=20|

///
}}}

{{{id=11|

///
}}}

{{{id=12|

///
}}}

<p>What next?</p>
<ul>
<li>easy access to structure &amp; traversal 
<ul>
<li>operands - __getitem__</li>
<li>pre - post order traversal?</li>
<li><a href="http://www.ginac.de/tutorial/Visitors-and-tree-traversal.html">visitors</a></li>
</ul>
</li>
<li><a href="http://www.ginac.de/tutorial/Indexed-objects.html">indexed objects</a></li>
<li><a href="http://www.ginac.de/tutorial/Rational-expressions.html">to_polynomial, to_rational</a></li>
<li>arithmetic for symbolic functions (sage.symbolic.function.Function)</li>
<li>printing</li>
<li>matrices</li>
<li>gcd</li>
</ul>

{{{id=17|

///
}}}

{{{id=16|

///
}}}

{{{id=15|

///
}}}

<p>Symbolic functions (sage.symbolic.function)</p>
<ul>
<li>Function (SageObject)<br />
<ul>
<li>BuiltinFunction
<ul>
<li>GinacFunction</li>
</ul>
</li>
<li>SymbolicFunction</li>
</ul>
</li>
</ul>
<p>Function - support setting custom fuctionality (eval, evalf, derivative, conjugate, etc.) and registering with the database</p>
<p>BuiltinFunction -</p>
<ul>
<li>pickling is easy, just store function name and arguments, since guaranteed to be in the library</li>
<li>arguments converted back to original type automatically</li>
</ul>
<p>GinacFunction - not added to the registry</p>
<p>SymbolicFunction</p>
<ul>
<li>can set arbitrary attributes (has a __dict__)</li>
<li>knows how to pickle custom functionality (these have to be python functions)</li>
</ul>

{{{id=18|

///
}}}

{{{id=14|

///
}}}