User:Mfasi

From Octave
Jump to navigation Jump to search

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 hand because it is probaly the one 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 big project I took part, for a little while.
  • Contributions to Octave
    • Submitted a patch to address bug #41796
    • Submitted a patch that should fix bug #41779
    • Submitted a patch that should fix bug #41567
    • Submitted a patch that should fix bug #41476
    • Submitted a patch that should fix bug #41504
    • Submitted a patch that should fix 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 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: