User:Mfasi: Difference between revisions

From Octave
Jump to navigation Jump to search
(Undo revision 4947 by 79.32.185.214 (talk))
 
(47 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 [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 ==
* Please describe (in short) your experience with the following tools:
** 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

Latest revision as of 07:30, 1 July 2014