Improve computation engine of KSpread

Synopsis

Improve computation engine of KSpread

Goals:

This project will focus on improving the computational engine, making it comparable with engines used in other spreadsheets, hopefully even better. With these improvements, KSpread should become useable for more serious computations, hence increasing possible user base.

I have been already contributing to KSpread for some time, and I'd like to base this work on things that I already wrote in the past.

Project Details:

I would like to implement the engine using the following architecture:

  • all basic operations would be encapsulated in a dedicated set of classes
  • this approach will allow us to transparently use various data types, without having to write special functions for each of them
  • the engine would use the formula parser, which already exists in the source, but is not used yet
  • there would be a dedicated class for managing and calling functions
  • this class would be able to handle automated parameter conversion and loop constructs
  • loop constructs will allow easy implementation of array formulas, which are important for more serious computing
  • by placing loops to the formula manager, the functions themselves will not have to know anything about array formulas
  • this will also allow very easy implementation of basic matrix manipulation
  • also, all existing functions will be converted to use the new function manager, and they will also make use of the transparent datatypes described above
  • next, displaying of arrays/matrices will need to be added - I already have an idea how this could be done easily
  • if time remains, I would like to make use of the aforementioned datatype abstraction, by introducing arbitrary precision support (that means, allowing the user to specify precision higher than long double). This will use some specialized library such as GnuMP.

Project Schedule:

I expect the project to take approximately 2 monthes.

Motivation:

I have two different motivations. First, I am interested in spreadsheets, and I would like to improve the KDE's one. Second, I like to experiment with new ideas, and this project offers a lot of interesting possibilities.

[ Edit ]