99
edits
(→openlibm: Add Autotools to list of skills) Tags: Mobile edit Mobile web edit |
(→Symbolic package: tweaks and formatting) |
||
(12 intermediate revisions by 4 users not shown) | |||
Line 62: | Line 62: | ||
== openlibm == | == openlibm == | ||
Over the years Octave faced many issues ( | Over the years Octave faced many issues (see [[openlibm | the openlibm page in this wiki]] for examples) about different [https://en.wikipedia.org/wiki/C_mathematical_functions#libm C mathematical functions library] (in short: "libm") implementations on various systems. To overcome similar issues, developers of the [https://en.wikipedia.org/wiki/Julia_(programming_language) Julia Programming Language] started the [https://openlibm.org/ openlibm] project "to have a good libm [ ...] that work[s] consistently across compilers and operating systems, and in 32-bit and 64-bit environments". openlibm is supported by major Linux distributions (e.g. [https://packages.ubuntu.com/focal/libopenlibm-dev Debian/Ubuntu], [https://src.fedoraproject.org/rpms/openlibm RHEL/Fedora],[https://software.opensuse.org/package/openlibm SLES/openSUSE], ...) and the [https://hg.octave.org/mxe-octave/rev/480f60641fc2 MS Windows MXE package] was added as well. | ||
This project consists of learning about the usage of [https://en.wikipedia.org/wiki/GNU_Autotools GNU Autotools] in Octave and ways to detect openlibm. As the next step the Octave code base has to be reviewed under the guidance of a mentor and relevant code changes should be performed. Finally, relevant code changes in the [[Tests | Octave test suite]] are performed and tested on various Linux, MS Windows, and macOS machines with the help of the Octave community. | This project consists of learning about the usage of [https://en.wikipedia.org/wiki/GNU_Autotools GNU Autotools] in Octave and ways to detect openlibm. As the next step the Octave code base has to be reviewed under the guidance of a mentor and relevant code changes should be performed. Finally, relevant code changes in the [[Tests | Octave test suite]] are performed and tested on various Linux, MS Windows, and macOS machines with the help of the Octave community. | ||
Line 78: | Line 78: | ||
was done by [https://gsoc2016ode15s.blogspot.com/ Francesco Faccio during GSoC 2016]. The code is maintained in the main Octave repository and consists mainly of the following three files: [https://hg.savannah.gnu.org/hgweb/octave/file/tip/libinterp/dldfcn/__ode15__.cc {{path|libinterp/dldfcn/__ode15__.cc}}], [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15i.m {{path|scripts/ode/ode15i.m}}] and [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15s.m {{path|scripts/ode/ode15s.m}}]. | was done by [https://gsoc2016ode15s.blogspot.com/ Francesco Faccio during GSoC 2016]. The code is maintained in the main Octave repository and consists mainly of the following three files: [https://hg.savannah.gnu.org/hgweb/octave/file/tip/libinterp/dldfcn/__ode15__.cc {{path|libinterp/dldfcn/__ode15__.cc}}], [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15i.m {{path|scripts/ode/ode15i.m}}] and [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15s.m {{path|scripts/ode/ode15s.m}}]. | ||
The {{manual|decic}} function for selecting consistent initial conditions for ode15i can be made more Matlab compatible by using [ | The {{manual|decic}} function for selecting consistent initial conditions for ode15i can be made more Matlab compatible by using [http://dx.doi.org/10.1515/JNMA.2002.291 another algorithm]. Another useful extension is to make ode15{i,s} work with datatypes other than double and to improve interpolation at intermediate time steps. | ||
* '''Project size''' [[#Project sizes | [?]]] and '''Difficulty''' | * '''Project size''' [[#Project sizes | [?]]] and '''Difficulty''' | ||
Line 87: | Line 87: | ||
: Francesco Faccio, [https://octave.discourse.group/u/cdf Carlo de Falco], [https://octave.discourse.group/u/marco_caliari Marco Caliari], Jacopo Corno, [https://octave.discourse.group/u/schoeps Sebastian Schöps] | : Francesco Faccio, [https://octave.discourse.group/u/cdf Carlo de Falco], [https://octave.discourse.group/u/marco_caliari Marco Caliari], Jacopo Corno, [https://octave.discourse.group/u/schoeps Sebastian Schöps] | ||
== | == Symbolic package == | ||
[[ | The [[Symbolic package]] provides symbolic computing and other [https://en.wikipedia.org/wiki/Computer_algebra_system computer algebra system] tools. The main component of Symbolic is a pure m-file class "@sym" which uses the Python package [https://www.sympy.org SymPy] to do (most of) the actual computations. The package aims to expose much of the functionality of SymPy while also providing a high level of compatibility with the Matlab Symbolic Math Toolbox. The Symbolic package requires communication between Octave and Python. In 2016 another GSoC project successfully re-implemented this communication using the new [[Pythonic|Pythonic package]]. | ||
This project proposes to take this work further while also improving the long-term viability of the Symbolic package. Some goals include: | |||
* the possibility of using Pythonic directly rather than as one possible communication layer. For example, we might make "@sym" a subclass of "@pyobject". We also could stop using the "pycall_sympy__" interface and use Pythonic directly from methods. Note: there are open questions about how to do this during a transition time when we still support other IPC mechanisms. | |||
* exposing more functionality of SymPy with ''less glue'' in between. For example, we could allow OO-style method calls such as <code>f.diff(x)</code> as well as <code>diff(f, x)</code>. | |||
* Improvements to the Pythonic package and its long-term maintenance. | |||
* fixing up Symbolic to work with the latest releases of SymPy and Octave. The project has lagged for a few years and needs some efforts to port to recent and upcoming changes in SymPy code. | |||
* making Symbolic easier to maintain. The project currently has a low ''bus factor'': improving the CI, making regular releases easier, improving other aspects of maintenance and making the project more welcoming to newcomers. | |||
Working on this project involves and interesting and challenging mix of m-file code, Python code, and in the case of Pythonic, perhaps some lower-level C code. | |||
* '''Project size''' [[#Project sizes | [?]]] and '''Difficulty''' | * '''Project size''' [[#Project sizes | [?]]] and '''Difficulty''' | ||
: ~350 hours (medium) | : ~350 hours (medium) | ||
* '''Required skills''' | * '''Required skills''' | ||
: Octave, C/C++, Python | : Octave, C/C++, Python; object-oriented programming (OOP) in Octave | ||
* '''Potential mentors''' | * '''Potential mentors''' | ||
: [https://octave.discourse.group/u/ | : [https://octave.discourse.group/u/cbm Colin B. Macdonald], [https://octave.discourse.group/u/mtmiller Mike Miller], Abhinav Tripathi | ||
== Improve TIFF image support == | == Improve TIFF image support == | ||
Line 113: | Line 120: | ||
* '''Project size''' [[#Project sizes | [?]]] and '''Difficulty''' | * '''Project size''' [[#Project sizes | [?]]] and '''Difficulty''' | ||
: ~ | : ~175 hours (medium) | ||
* '''Required skills''' | * '''Required skills''' | ||
: Octave, C/C++ | : Octave, C/C++ | ||
Line 141: | Line 148: | ||
: Octave, C/C++ | : Octave, C/C++ | ||
* '''Potential mentors''' | * '''Potential mentors''' | ||
: [https://octave.discourse.group/u/siko1056 Kai] | : [https://octave.discourse.group/u/siko1056 Kai] [https://octave.discourse.group/u/Abdallah_Elshamy Abdallah] | ||
== YAML encoding/decoding == | == YAML encoding/decoding == | ||
Line 159: | Line 166: | ||
* '''Project size''' [[#Project sizes | [?]]] and '''Difficulty''' | * '''Project size''' [[#Project sizes | [?]]] and '''Difficulty''' | ||
: ~ | : ~175 hours (easy) | ||
* '''Required skills''' | * '''Required skills''' | ||
: Octave, C/C++ | : Octave, C/C++ | ||
* '''Potential mentors''' | * '''Potential mentors''' | ||
: [https://octave.discourse.group/u/siko1056 Kai | : [https://octave.discourse.group/u/siko1056 Kai], [https://octave.discourse.group/u/Abdallah_Elshamy Abdallah] | ||
== TISEAN package == | == TISEAN package == |
edits