|
|
(45 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
| == 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 [https://www.cubbit.net/ big project] I took part, for a little while.
| |
|
| |
| * Contributions to Octave
| |
| ** Submitted a patch to address bug {{bug|41796}}
| |
| ** Submitted a patch that should fix bug {{bug|41779}}
| |
| ** Submitted a patch that should fix bug {{bug|41567}}
| |
| ** Submitted a patch that should fix bug {{bug|41476}}
| |
| ** Submitted a patch that should fix bug {{bug|41504}}
| |
| ** Submitted a patch that should fix bug {{bug|39532}}
| |
|
| |
| == 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 [http://poisson.phc.unipi.it/~maxreen/bruno/pdf/B.%20Iannazzo%20and%20C.%20Manasse%20-%20A%20Schur%20logarithmic%20algorithm%20for%20fractional%20powers%20of%20matrices%20-%20SIMAX.pdf 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
| |