If you look at 'src/input/derham.input' you will notice comment
saying that it is quite slow for large n.  I looked a bit
at this and first observation is that slowness is due to
kernel manipulations.  Profile shows that almost all time goes
into kernel maniputation, mainly 'SCACHE;linearSearch'.
This is called from 'FS-;diffdiff' which is responsible for
differentiating formal derivatives.  Linear search is necessary
due to the way we implement formal derivatives.  But it is
actually worse: repeating the same calculation shows growing
time.  Just to see scale, one of calculation in
'src/input/derham.input' is to calculate second exterior
derivative of general form in n variables.  General form
involves n formal function in n variables.  First exterior
derivative needs to compute n^2 partial derivatives (n functions
times n variables).  Second exterior derivative needs
n(n-1)n partial derivatives.  So togeter about n^3 derivatives.
For n=8 this is about 512.  Even squared (due to linear search)
this does not look like very large number of operations.
However, formal derivative of order 2 contains derivatives of
order 1.  And it seems that due to use of dummies we create
new kernels, so when we repeat calculation, then our cache keep
growing.

This suggest that we should re-think representation of formal
derivatives and possibly also use of dummies.

-- 
                              Waldek Hebisch

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to fricas-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/fricas-devel/Zh3XyGN2q9qkl5ca%40fricas.org.

Reply via email to