Writing a new module ?



Sorry, I didn't read them before shooting off my mail.
This looks very nice.

Michel: Can I include your source code in my work (with attribution
ofcourse) ?

I think a better way would be to just add cgrind to maxima's source.

Akshay


On 03/18/2012 09:04 AM, Stavros Macrakis wrote:
> 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 <mailto: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>
> <mailto: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
> 
>