Did you see Michel's email? He already has a cgrind program that will
output Maxima expressions for computation in C.
-s
On Sat, Mar 17, 2012 at 23:13, Akshay Srinivasan <akshaysrinivasan at gmail.com
> wrote:
> On 03/17/2012 11:52 PM, Stavros Macrakis wrote:
> > (reply in line)
> >
> > On Sat, Mar 17, 2012 at 13:39, Akshay Srinivasan
> > <akshaysrinivasan at gmail.com <mailto:akshaysrinivasan at gmail.com>>
> > wrote:
> >
> > Yes it will probably be much easier (not to mention far more
> > elegant) to write the whole thing in Maxima. At the time I wrote
> > the thing, I hardly knew any lisp (much less about the internals of
> > Maxima), so the whole thing was hacked up to work.
> >
> >
> > You shouldn't need to know anything about either Lisp or the
> > internals of Maxima for the mathematical part -- you can write in
> > the Maxima language itself, and then simply output the expressions
> > in C syntax. You will need to use Lisp if you need to fiddle the
> > "fortran" module (which may not even be necessary, since Fortran
> > and C syntax for mathematical expressions (as opposed to procedural
> > code) are almost identical).
> >
> > The purpose of the project is to actually generate the C code; I
> > need to get the jacobian of the vector field governing the
> > dynamics, which is feasible only using AD for large systems.
> >
> >
> > The way I'd do this is to generate the expressions then simply
> > *output* them in C format. For mathematical expressions, I think
> > Fortran and C syntax are the same, so you can use the Fortran
> > function. If that doesn't work, you may need to write a small
> > variant of the Fortran package specifically for C. That would be
> > generally useful, and would still be easier than doing this via
> > string processing.
> >
> >
> > I have a vague idea of what I should write in Maxima (lisp module),
> > I think I have to write something like fortra.lisp which generates
> > C compatible expressions. I will then have to then format them into
> > a file-stream which should be easy to do because the existing
> > parser is in lisp anyway.
> >
> >
> > Exactly. The Maxima-to-C component should not be specific to
> > Lagrange. But you should not start from scratch. fortra.lisp is
> > 95% of what you need.
> Yes, so the trouble is, although I can get-by without understanding
> the source of fortra.lisp, it'd just be very annoying. For instance I
> have no idea how defmspec differs from defmfun and defmtrfun. Is there
> something like a Maxima-internals-for-dummies document, so that I can
> make better use of Maxima's extensive abstraction ?
>
> Akshay
>