This week I was planning to work on Fast Fourier Transform, Discrete
Fourier Transform and Discrete Hankel Transform subsystems but they all
contain functions which need to input or output arrays, thing we aren't
able to do at the moment with swig. I wrote a message to the swig-user
mailing list for help/tips but I haven't received a response yet. I
then worked on BLAS and CBLAS subsystems which are the next subsystems
we want to work on but they also had problems such as no test suite in
the gsl source, so Jonathan proposed me that I work on it later. I also
changed some documentation and tried to fix the tests inside Linalg and
Eigen subsystems. I succeded in fixing a few tests but some of them
still fail, mainly inside Linalg. Within all this search for tests
problems, I found out that the gsl_vector_complex functions were not
added yet to the Vector subsystem, so I added them.
We plan to put our module on CPAN after we'll have cleaned most of
the failing tests. I'll also write a function is_similar_relative to
test relative error like the gsl linalg test suite does.
better with the vim editor, I even now have access to the vim manual
from O'reilly editions. I refer to it very often.
The next week will be a week to concentrate on adding more tests,
examples and documentation to all the subsystems we worked on so far.
I've spotted a few subsystems which will need some more work this week
such as Poly.
This week I worked on CDF, Linear Algebra and Eigensystems. I almost finished the documentation for CDF and Eigensystems, I just need to had some examples. However, Linear Algebra and Eigensystems need more tests. I'll try to finish them in the next days. Linear Algebra took longer than I tought. Testing these functions has been long and panifull because we needed to get data from maple and then write the tests to see if the output from GSL was the same as Maple. I tought of an other way to tests the decomposition functions which should make the next tests easier : I will the decomposition matrices and then recompose them and check if the result is the same as the original.
While working on the Linear Algebra subsytems I found that we haven't added yet the gsl_matrix_complex functions in the Matrix subsystem. I also found that these functions weren't documented inside GSL official documentation. I added the functions to Matrix and I contacted the GSL librairy developer to see if I could help them to document theses functions since I'll documented them anyway in the Matrix POD.
I also learned some new stuff in mathematics such what are an hermitician matrix, superdiagonal and subdiagonal. This is pretty simple things but I haven't got the chance to work with these concepts in my university courses yet.
In the following week I'll try to finish the parts of the subsystems I haven't finished in the last week and I'll work on, Fast Fourier Transform, Discrete Fourier Transform and Discrete Hankel Transform subsystems.
This week I worked on the documentation of all the preceding subsystem
I worked on while following the timeline. I cleaned up the PODs with
the help of a new typemap for a vim written by Jonathan which made the
testing far easier. I also checked the html versions of the PODs with
the pod2html function. I think including html documentation inside the
source would be a good thing to simplify the access to the
documentation and also to put it on the web. This week I also added
some more tests to some subsystem, including Permutations. I included
the Permute subsystem into the Permutation subsystem to simplfy the
usage of both. I changed the tests of some subsystems from Test::Simple
to Test::Class because it makes testing easier on some functions.
I've learn various simples things this week such as how to remove
files from a git repository and using typemaps from swig. We've
encountered some problem concerning typemaps with swig and I spent 2
afternoon working/understanding how to work with typemaps. Jonathan
helped me a lot on that part. I still have a problems on how to write a
typemaps to return value by an array but Jonathan will also help me on
that part and I'll do some more searching on my side.
The next week I'll work mainly on the CDF,
Linear Algebra and Eigensystems subsystems. Linear Algebra is a quite
important subsystems since it contains functions which can make much
more complex operations on matrices.
This week I worked on Vector, Matrix, Complex and Permutation. I added a lot of documentation to Complex in particular and I think it will be a good reference for other subsystems documentation. However I still need to understand how to write POD in more clean way and how to make it more HTML usable. As Jonathan pointed me earlier today, the documentation is what is the user sees the most of the module and the quality of what we do will be mainly seen by how to documentation looks/works.
This week I also realized that I'm getting a lot faster with vim. The command are getting natural and Jonathan gave me some new bindings for running the tests for the subsystems directly from vim (with coloration in bonus!) I'm also getting familiar with how Test::Class works, the setup and teardown part in particular are really useful. I'm getting used to put map everywhere I would have used a for or while loop. I was a bit suspicious about it's utility at first but I went over that feeling and I couldn't code in Perl without it now.
I added a lot of tests to mostly all the subsystems I worked on this
week. Next week I'll concentrate more on the documentation part, on
the other subsytems that are planed in the timeline for that week and on some issues which could be solved with swig typemaps.
This week I worked on the Polynomials, Complex numbers and Special Functions. I completed the documentation for each of these subsytems but they may need some modifications to be more usable. I also added tests for these subsytems. For the moment we have about 2199 tests and only 2 failing.
I used Maple to get the result that some functions should output and I created tests from this data. We also had problems with some crashes with the Poly but Jonathan fixed them.
So the Polynomials, Complex numbers and Special Functions and subsystems are now usable and should work fine. However, we'll probably add more tests in the next weeks to tests them deeper. Enjoy!