Summer of Code - Getting Started: Difference between revisions

Jump to navigation Jump to search
→‎Numerical: Drop chebfun project. Anything related to classdef if beyond the scope of GSoC.
(→‎Suggested projects: Drop summary table, avoid duplication.)
(→‎Numerical: Drop chebfun project. Anything related to classdef if beyond the scope of GSoC.)
Line 123: Line 123:
* '''Potential mentors'''
* '''Potential mentors'''
: Francesco Faccio, Carlo de Falco, Marco Caliari, Jacopo Corno, Sebastian Schöps
: Francesco Faccio, Carlo de Falco, Marco Caliari, Jacopo Corno, Sebastian Schöps
=== Chebfun in Octave ===
[https://www.chebfun.org/ Chebfun] is a mathematics and software project for "numerical computing with functions".  Basically it approximates functions to machine precision accuracy (10<sup>-15</sup>) using piecewise Chebyshev polynomial interpolants.  Operations on those functions (arithmetic, derivatives, root-finding, etc) are then overloaded and return new interpolating polynomials, which are themselves proxies for the actual solution.
Chebfun makes extensive use of classdef classes, and is one of the largest Free Software projects to do so.  Unfortunately it currently only works in Matlab.  This project seeks to (1) improve Octave's classdef support and (2) tweak Chebfun to work under Octave, for example, removing undocumented classdef features.  The final goal is to have at least basic Chebfun features working on Octave.  An additional goal would be making <code>pkg install chebfun.zip</code> work in Octave.
The impact of this project is improving Octave and allowing Chebfun to be used without proprietary software.
How to get started:
* Learn about [https://www.chebfun.org/ Chebfun]
* Browse [https://savannah.gnu.org/bugs/?group=octave Octave's bug list] for "classdef"-related bugs.
* Clone this Chebfun [https://github.com/cbm755/chebfun/tree/octave_dev octave_dev branch].
** On that, <code>f = chebfun(@(x) sin(x), [-2 6])</code> should work with Octave 4.3.0+ and maybe even with 4.2.1.  Check that <code>f(pi)</code> and <code>g = f + 1</code> work.
** A good first task would be to study [https://github.com/cbm755/chebfun/commit/e20b0ad2dc89cfe8e50ba461b864eff7d5bbef17 this commit], a workaround for <code>f.funs{1}</code> using <code>temp = f.funs; temp{1}</code>.  <code>2*f</code> is failing, can you fix it, perhaps with this workaround?  Or can you make <code>f.funs{1}</code> work by changing something in <code>@chebfun/subsref.m</code>?
* '''Required skills'''
: Octave m-file programming, classdef programming, probably C++, some familiarity with Approximation Theory (a branch of mathematics).
* '''Difficulty'''
: Medium (fixing Octave classdef bugs likely harder and requires a deep dive into how Octave supports OOP).
* '''Potential mentors'''
: Colin B. Macdonald, [[User:KaKiLa|KaKiLa]], Mike Miller (?), Carnë Draug (?), someone from Chebfun team (?).


== Adding functionality to Forge packages ==
== Adding functionality to Forge packages ==

Navigation menu