|Proposed by Daniel Uber (profile, biography) Don't forget to submit this proposal to official Google Melange site too!
How will I do that project
I would like to implement numerical software in Smalltalk, and integrate existing libraries into a cohesive Math package. Using Pharo, I will develop and document numerical methods for use in all Smalltalk software.
What methodologies will I use
I intend to use Pharo as the development environment. I will be using github and monticello for version tracking and distribution. Numerical methods abound in the literature, and are typically well documented. Implementing these involves translation of the code into Smalltalk, and development of adequate test coverage to confirm the method performs as intended on a reasonable range of inputs. Documentation and references will be added when methods are added.
Suggested timeline and milestones
Survey of existing projects, any incompatibilities with current Pharo release, their licensing and author availability. Integrate as much work from the community into a cohesive package.(1-2 weeks)
Runge Kutta and linear multistep methods (e.g. Adams-Bashforth) for ordinary differential equations approximation (2 weeks). These are clearly documented in many places, and in most cases implementation will involve fine tuning and testing.
Port methods and tools from R and Numpy projects into Smalltalk. R has a wealth of functions and available sources. Reimplementing these methods into native Smalltalk would quickly add to the available power of the system. Numpy provides convenience wrappers for Linear Algebra, and a similar system should be made available in Smalltalk. (4 weeks)
Where I see the risks
Transforming highly numerical methods into readable object oriented tools may have its difficulties. Replicating work done in the past due to licensing mismatches or inability to contact authors seems like an unnecessary effort that may be necessary to make a single package under an MIT license. It is also possible that native smalltalk code (not using a foreign function interface) may under-perform existing Fortran and C libraries.
How the results will look like
The end goal is a comprehensive package with ready to run numerical methods. This will exist as an installable package Math. Algorithms and solvers will be implemented as classes in the hierarchy.