Mfasi

Joined 28 February 2014
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
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 to, for a little while.
* Contributions to Octave
** Submitted a patch to address bug {{bug|41796}}
** Submitted a patch that fixed 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 from both the command line or an 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 write such functions, using known algorithms for matrix functions. In particular, I would like to start implementing the Schur-Parlett recurrence, that should not be a hard task as syl () is already there, and then proceed implementing better - specific - algorithms for other relevant matrix functions. In particular, I think that the following list (ordered by relevance) should be respected:
* funm
* logm [just a check, see below]
* signm
* sqrtm
* rootm
* hyperbolic and trigonometric matrix functions
Some other auxiliary functions should be required and implemented, possibly in C++ for performance's sake. It seems that something has already been done for the logm () function, see [http://octave.1599824.n4.nabble.com/GSoC2014-Looking-for-a-mentor-td4662648.html] and [http://octave.1599824.n4.nabble.com/logm-robustness-td2016796.html], while the implementation of funm () lacks of robustness as it uses a simple diagonalization scheme that should be avoided when dealing with general matrices. 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 seems promising but being rather involved could be tricky to implement in a robust way.
==== 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
Please note that all contributions to Octave may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Octave:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)