User:Mfasi: Difference between revisions
Line 35: | Line 35: | ||
== Feeling fine == | == Feeling fine == | ||
* | * Ny experience with | ||
** IRC and mailing lists: I have used both of them, but I do not know more than 2 or 3 IRC commands by hart. There are reference chart for that, though. | ** IRC and mailing lists: I have used both of them, but I do not know more than 2 or 3 IRC commands by hart. There are reference chart for that, though. | ||
** Mercurial: As I am implementing some patches for Octave, I am using it. | ** Mercurial: As I am implementing some patches for Octave, I am using it. |
Revision as of 11:58, 10 March 2014
Introduction
- I guess the three required sentences are on current studies, spoken languages and overall background. So:
- I am a student at "Ecole Normale Superieure" in Lyon (FR), second year of Master in Computer Science.
- Italian is my mother tongue, I use somehow English and French.
- I would say that my field is numerical analysis.
- As the project I am intested in is related to the domain I would apply for my Phd, I hope to boost a little my future applications. Moreover, I used the Octave functions I would work with for some Octave code I wrote.
- No previous experience with the Google Summer of Code
- I am choosing Octave on the one hand because is the organization I am most interested in out of the GSoC ones, on the other because it is probably the one that produces the software I know better.
Contact
- My nickname on IRC will be mfasi.
- I think my time zone will be UTC+1.
- Just now, I am working for an internship and I go to my office at 7.00 and leave at 18.00 (in UTC+0), but I do not spend all of the time coding. I guess I spend usually the last 4/5 hours doing so, while in the morning I prefer reading papers or developing some ideas (that will be coded later on).
Coding experience
- Experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
C++ and OpenGL where subjects of two university courses I've attended. I have used Octave to write my [https://dl.dropboxusercontent.com/u/37286377/thesis.pdf bachelor thesis.
- As a computer science student, I have had to work with many different languages:
- Imperative: pascal, C, Bash scripting, Java, JavaScript, PHP
- Functional: OCaml, HOPE
- Markup: LaTeX, XML, XSL, HTML
- Other: some SQL-based languages
- I have worked for some time to an open source project called Balcony (25K+ lines, C++), developed in Italy, whose aim was to build a virtual desktop to be installed on a USB key. The project was closed some years ago for lack of funds. I have also worked with a small team to produce an experimental service of automatic diseases classification from medical reports. As far as I know, the project is still maintained and developed, though it is not open source. Another non-opensource big project I took part, for a little while.
- Contributions to Octave
Feeling fine
- Ny experience with
- IRC and mailing lists: I have used both of them, but I do not know more than 2 or 3 IRC commands by hart. There are reference chart for that, though.
- Mercurial: As I am implementing some patches for Octave, I am using it.
- Mediawiki: I have used it sometimes. By the way, I am using it right now.
- make, gcc, gdb or other development tools: I know how to write a Makefile, how to use a compiler and a debugger, using both the command line or a IDE interface.
- When GSoC will be over, I think I will remain into Octave community because I will have gotten started. After having spent three months developing for Octave, I will know it enough to not be scared by the idea of picking an issue and solve it.
Only out of interest
- Actually I have been using Octave for four years now, but just as a user. I think you could advertise in math forums, there is plenty of them.
- I had trouble finding a GUI, but that is no longer the case. In general everything is well documented. I had some troubles, years ago, when trying to use the symbolic packagem that was not very well documented, as far as I remember.
Prerequisites
- I am granted the access to use any Linux Distribution (I can just install it on a PC), but the ones I've used are Debian, Ubuntu, Arch and Gentoo. I have also access machines with Windows 7 and 8.
- I think I will not have problems accessing a pc with internet during the GSoC period.
- I will be free to install new programs on all the operating systems described above.
Self-assessment
- As I know almost nothing about the Octave development cycle, I must rely on constructive criticism to improve my work. Moreover, as far as it is useful, as marked in the question, and polite, I am fine with it.
- I prefer studying the problem before start typing, writing down my ideas and having a clear picture of what are the modules I will have to implement. If the project is very though, I usually start coding from the smallest units, that are supposed to solve the simpler tasks, and building the more complicated ones on the top of them. As I value the time I spend coding, I do not like too much throw away my work, though it happens, sometimes, when I am not careful enough during the analysis step.
Your task
- The project I would like to work on is Improve logm, sqrtm, funm.
I would like to implement such functions, using known algorithms for matrix functions computation. In particular, I would like to start implementing the Schur-Parlett recurrence, that should be an easy task as syl () is already implemented, and then proceed implementing better - specific - algorithms for other functions. In particular, I think that the following list (ordered by relevance) should be respected:
- funm
- logm
- signm
- sqrtm
- rootm
- sinm
- cosm
Some other simpler functions should be required and implemented, possibly in C++ for performance's sake. For the matrix logarithm I do not know wether there is something better than the scaling and squaring method devised by Higham in Functions of Matrices: Theory and Computation, while for the p-th root there is a recent work that has a lower asymptotical complexity (but seems rather involved, so I cannot say anything about the real performances).
Tentative timeline
- 30 April: Clear picture of the library structure that will be implemented
- 19 May: Implementation of the auxiliary functions (at least the toughest ones)
- 23 June: Implementation of funm and signm
- 31 July: Implementation of the remaining functions, using all the subroutines developed in the previous two periods
- 7 August: Testing, implementation of eventual optimizations left behind
- 18 August: End of GSoC program
- Later: Maintenance of the library