I had written up a project description last year for bringing Octave's
quadrature routines and compatibility up to date, but let it languish.
Just cleaned it up a bit, text below. With the potential to be handled
at a minimum by a wrapper I wasn't sure if it should have just been a
'small projects' topic. Let me know if you think it would warrant a
GSOC topic and I'll add it to the wiki. I notionally added myself as a
mentor, but would recommend someone more familiar with GSOC and the
codebase come along for the ride.
Upgrade Octave's numerical integration routines
Adaptive numerical integration in Octave is performed using one of a
number of numerical routines from the Quad family including quad,
quadl, quadgk, quadcc, and the vectorized quadv in addition the fixed
grid methods, trapz and cumtrapz. In 2012 Matlab introduced a
function, integral, with the intent of replacing the use of the
different quad functions, and some are now identified as to be removed
from future versions of Matlab. While Octave has no requirement to
remove this functionality itself, and in fact may benefit from keeping
this functionality for enhanced backward compatibility, it has not yet
implemented the 'integral' function and it is anticipated this will
become an increasing functionality request moving forward.
Additionally, some of the quad functions are not 100% Matlab
compatible, and this should be improved.
Note in the discussion that it was initially thought integral could
just be a renaming of one of the quad functions. However, there are a
number of changes in integral not present in Octave's quad series,
including the definition of Waypoints for contour integrals (only
present in quadgk), the ability to pass arbitrary parameters to
multi-variable functions, the ability to use vectorized functions for
faster processing (not present in quad), and the ability to handle
vector valued functions (only available in quadv).
It may be possible to quickly emulate integral using an intelligently
constructed wrapper to the other integration functions, but this may
or may not be the best approach to achieve a functional and efficient
implementation in Octave. It is expected that work will need to be put
into developing requirement definitions to ensure compatibility,
identifying 'corner cases' and unique situations, and developing tests
to ensure both proper operation and sufficient numerical accuracy.
Speed improvements would also be of great interest.
Octave m-file programming, possibly C or C++ programming, and
familiarity with adaptive numerical integration.
Easy-to-Medium (bare minimum requirement could possibly be met
with creative m-code wrappers, but ideally would involve more
intelligent development of quadrature handling routines, possibly
using C++ for improved speed.)