www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - facilitating automatic differentiation

reply Dominic Jones <dominic.jones qmul.ac.uk> writes:
I have worked on differentiating algorithms written in Fortran 90/95
using Tapenade (http://www-sop.inria.fr/tropics/tapenade.html) with
moderate success.

For more expressive languages the source transformation process
rapidly tends towards the impossible. However, I speculate that in D
some of its language features (e.g. mixin, scope) may facilitate
differentiation without recourse to an external tool.

I don't know D well enough, and I am not familiar with the possible
trickery that can be done with such a language, but if there is
someone who does have some understanding of automatic
differentiation and is competent with D, I'd be very interested in
your comments as to whether or not such a pursuit is worthwhile.

Thank you
Dominic Jones
Oct 20 2011
parent reply Norbert Nemec <Norbert Nemec-online.de> writes:
Do you mean in the sense of symbolic algebraic transformations at 
compile time? D would be the prime candidate for that.

If you just want to go for a small solution for your specific problem, 
it should actually be quite straightforward to hack up.

A more generic approach like a library should be a fascinating project. 
I could imagine that this kind of project would lead you very quickly 
very deep into the design philosophy of the language. I can only 
encourage you to try it out.




On 20.10.2011 12:13, Dominic Jones wrote:
 I have worked on differentiating algorithms written in Fortran 90/95
 using Tapenade (http://www-sop.inria.fr/tropics/tapenade.html) with
 moderate success.

 For more expressive languages the source transformation process
 rapidly tends towards the impossible. However, I speculate that in D
 some of its language features (e.g. mixin, scope) may facilitate
 differentiation without recourse to an external tool.

 I don't know D well enough, and I am not familiar with the possible
 trickery that can be done with such a language, but if there is
 someone who does have some understanding of automatic
 differentiation and is competent with D, I'd be very interested in
 your comments as to whether or not such a pursuit is worthwhile.

 Thank you
 Dominic Jones
Oct 20 2011
parent Don <nospam nospam.com> writes:
On 20.10.2011 20:39, Norbert Nemec wrote:
 Do you mean in the sense of symbolic algebraic transformations at
 compile time? D would be the prime candidate for that.
From my reading of the website, it seems to be about getting the derivative of a function which is specified in *source code* rather than *algebraically*! Weird stuff.
 If you just want to go for a small solution for your specific problem,
 it should actually be quite straightforward to hack up.

 A more generic approach like a library should be a fascinating project.
 I could imagine that this kind of project would lead you very quickly
 very deep into the design philosophy of the language. I can only
 encourage you to try it out.




 On 20.10.2011 12:13, Dominic Jones wrote:
 I have worked on differentiating algorithms written in Fortran 90/95
 using Tapenade (http://www-sop.inria.fr/tropics/tapenade.html) with
 moderate success.

 For more expressive languages the source transformation process
 rapidly tends towards the impossible. However, I speculate that in D
 some of its language features (e.g. mixin, scope) may facilitate
 differentiation without recourse to an external tool.

 I don't know D well enough, and I am not familiar with the possible
 trickery that can be done with such a language, but if there is
 someone who does have some understanding of automatic
 differentiation and is competent with D, I'd be very interested in
 your comments as to whether or not such a pursuit is worthwhile.

 Thank you
 Dominic Jones
Oct 20 2011