Gouzouni

Joined 3 March 2014
82 bytes added ,  14 May 2014
No edit summary
 
(One intermediate revision by the same user not shown)
Line 159: Line 159:
== P: Private application submitted on SOCIS website ==
== P: Private application submitted on SOCIS website ==


'''First Name (mandatory):'''
* '''First Name (mandatory):'''
Georgios
Georgios
'''Last Name (mandatory) :'''
* '''Last Name (mandatory) :'''
Ouzounis
Ouzounis
'''Email contact (mandatory) :'''
* '''Email contact (mandatory) :'''
geoconstructor625@gmail.com
geoconstructor625@gmail.com
'''Personal website :'''
* '''Personal website :'''
'''Date of birth (mandatory) :'''
* '''Date of birth (mandatory) :'''
12/09/1992
12/09/1992
'''Nationality or nationalities (mandatory) :'''
* '''Nationality or nationalities (mandatory) :'''
Hellenic
Hellenic
'''Institution (mandatory) :'''
* '''Institution (mandatory) :'''
School of Electrical and Computer Engineering Aristotle University of Thessaloniki
School of Electrical and Computer Engineering Aristotle University of Thessaloniki
'''Institution location (mandatory) :'''
* '''Institution location (mandatory) :'''
Greece
Greece
'''Mentoring organization (mandatory) :'''
* '''Mentoring organization (mandatory) :'''
GNU Octave
GNU Octave
'''Project proposal (mandatory) :'''
* '''Project proposal (mandatory) :'''


''' A: An introduction '''
* ''' A: An introduction '''


My name is Georgios Ouzounis. I am 21 years old and I am a fourth year undergraduate student at the School of Electrical and Computer Engineering at Aristotle University of Thessaloniki, Greece ( http://ee.auth.gr/en/ ).
My name is Georgios Ouzounis. I am 21 years old and I am a fourth year undergraduate student at the School of Electrical and Computer Engineering at Aristotle University of Thessaloniki, Greece ( http://ee.auth.gr/en/ ).


Previous Experience :
** Previous Experience :
Summer of Code in Space (SOCIS) is my second attempt to participate in a program like that after my application getting rejected at the Google Summer of Code 2014. I have been using Octave for the last two years and I have written many scripts for university projects on fields like signal processing, system identification, numerical analysis, electronic circuits etc... As far as my experience on C / C++ is concerned, I have been using these languages for the last four years, writing programs for university projects and personal use.
Summer of Code in Space (SOCIS) is my second attempt to participate in a program like that after my application getting rejected at the Google Summer of Code 2014. I have been using Octave for the last two years and I have written many scripts for university projects on fields like signal processing, system identification, numerical analysis, electronic circuits etc... As far as my experience on C / C++ is concerned, I have been using these languages for the last four years, writing programs for university projects and personal use.


A time frame :
** A time frame :
I usually code around 5:00 to 11:00 ( UTC+0 ) and I plan on spending about 5 - 6 hours daily working on SOCIS project including Saturdays and Sundays. I will also be able to join the IRC channel during my coding hours.
I usually code around 5:00 to 11:00 ( UTC+0 ) and I plan on spending about 5 - 6 hours daily working on SOCIS project including Saturdays and Sundays. I will also be able to join the IRC channel during my coding hours.


Line 191: Line 191:
to have a 10 days break right after the end of my examination period (5th - 15th of July) to clear up my mind and rest.
to have a 10 days break right after the end of my examination period (5th - 15th of July) to clear up my mind and rest.


Describing my English :
** Describing my English :
I can use English very well both in writing and speaking, so there will not be any problems regarding communication with other community members. I have a C1 level certificate for the English language.
I can use English very well both in writing and speaking, so there will not be any problems regarding communication with other community members. I have a C1 level certificate for the English language.


''' C: Contact '''
* ''' C: Contact '''


My nick in IRC and the patch tracker is gouzouni and my nick on wiki.octave.org is Gouzouni.
My nick in IRC and the patch tracker is gouzouni and my nick on wiki.octave.org is Gouzouni.
Line 207: Line 207:




''' S: Self-assessment '''
* ''' S: Self-assessment '''


From my university experience and my fellow students comments I would say that I can give constructive advice. Many of my fellow students come to me for advice when they are having a problem with a project they are working on. I guess I could say that I can also receive advice, even though I support my opinion unless there are strong arguments that I am mistaken.
From my university experience and my fellow students comments I would say that I can give constructive advice. Many of my fellow students come to me for advice when they are having a problem with a project they are working on. I guess I could say that I can also receive advice, even though I support my opinion unless there are strong arguments that I am mistaken.
Line 214: Line 214:




''' Y: Your task '''
* ''' Y: Your task '''


The project I would like to work on is "High Precision Arithmetic Computation".
The project I would like to work on is "High Precision Arithmetic Computation".


Addressing the problem :
** Addressing the problem :
There are numerous real world examples where double precision numbers, used by Octave, are not enough. Modelling exponential behaviours as found in semiconductor materials and electrical circuits (diodes and transistors) is an example. All of them, end up to solving linear systems of equations where the corresponding matrices are mathematically invertible but numerically not, due to large ratio between their first and last singular values.
There are numerous real world examples where double precision numbers, used by Octave, are not enough. Modelling exponential behaviours as found in semiconductor materials and electrical circuits (diodes and transistors) is an example. All of them, end up to solving linear systems of equations where the corresponding matrices are mathematically invertible but numerically not, due to large ratio between their first and last singular values.


Proposing a solution :
** Proposing a solution :
A solution of the above problem would be the creation of an interface numerical over GNU MPFR (http://www.mpfr.org/) which is (quoting the site) "a C library for multiple-precision floating-point computations with correct rounding". This interface will give the ability to the user to use numbers with arbitrary precision, limited of course by the machine's internal memory. After having that interface (or numerical type) created to support matrices and complex numbers the next step would be the implementation of certain algorithms to work with those arbitrary precision numbers. Some examples of such algorithms would be computing inverse Matrix, Solving linear systems, calculating eigenvalues etc...
A solution of the above problem would be the creation of an interface numerical over GNU MPFR (http://www.mpfr.org/) which is (quoting the site) "a C library for multiple-precision floating-point computations with correct rounding". This interface will give the ability to the user to use numbers with arbitrary precision, limited of course by the machine's internal memory. After having that interface (or numerical type) created to support matrices and complex numbers the next step would be the implementation of certain algorithms to work with those arbitrary precision numbers. Some examples of such algorithms would be computing inverse Matrix, Solving linear systems, calculating eigenvalues etc...


Expected output :
** Expected output :
The amplification of the already existent multi-precision package on the Mercurial repository (http://hg.code.sf.net/p/octave/multi-precision) in order to support matrix and complex number computations ('+', '-', '/', '*', 'determinant' and 'subsref') and also support the algorithms stated above.
The amplification of the already existent multi-precision package on the Mercurial repository (http://hg.code.sf.net/p/octave/multi-precision) in order to support matrix and complex number computations ('+', '-', '/', '*', 'determinant' and 'subsref') and also support the algorithms stated above.


The existence of this package for Octave can be a useful tool for it's users and for its developers too. More users will be using Octave for their computational needs and so Octave's community will grow. The outcome of this project could be combined with packages like the Electronic Circuit Simulator and the Signal package to make them more powerful. Prompted by my experience in my university, I can say it could be also useful in robotics where high precision is needed.
The existence of this package for Octave can be a useful tool for it's users and for its developers too. More users will be using Octave for their computational needs and so Octave's community will grow. The outcome of this project could be combined with packages like the Electronic Circuit Simulator and the Signal package to make them more powerful. Prompted by my experience in my university, I can say it could be also useful in robotics where high precision is needed.


Why choose me :
** Why choose me :
The first answer would be, because I really want to. This is not enough on its own but it's a good start. My programming experience is described at the beginning of this application under the label "Previous Experience" and also on my public application at wiki.octave.org/user:Gouzouni . Moreover, I have a very strong mathematical background including but not limited to linear algebra and numerical analysis. This background gives me the ability to translate a problem written in words to a mathematical problem and then use a computer to solve it. I can also easily understand any linear algebra algorithm or concept.
The first answer would be, because I really want to. This is not enough on its own but it's a good start. My programming experience is described at the beginning of this application under the label "Previous Experience" and also on my public application at wiki.octave.org/user:Gouzouni . Moreover, I have a very strong mathematical background including but not limited to linear algebra and numerical analysis. This background gives me the ability to translate a problem written in words to a mathematical problem and then use a computer to solve it. I can also easily understand any linear algebra algorithm or concept.


What I hope to gain from this project is experience. It would be my first time to join an open source community and I know there are a lot to learn. In addition, I hope to get a very good idea of how things are done on a project of that scale.
What I hope to gain from this project is experience. It would be my first time to join an open source community and I know there are a lot to learn. In addition, I hope to get a very good idea of how things are done on a project of that scale.


A rough schedule of my work :
** A rough schedule of my work :


A rough estimated timeline for my work on the task would be :
A rough estimated timeline for my work on the task would be :


Beginning until the end of first month ( June 1st - June 30th )
'''Beginning until the end of first month ( June 1st - June 30th )'''


Include support for array and complex numbers on the already existent version of the multi-precision package.
Include support for array and complex numbers on the already existent version of the multi-precision package.
Line 248: Line 248:
All deliverables will be tested and debugged during this period.
All deliverables will be tested and debugged during this period.


(July 1st - July 4th)
'''(July 1st - July 4th)'''


Testing, documentation, further debugging.
Testing, documentation, further debugging.


(July 5th - July 15th)
'''(July 5th - July 15th)'''


Break. As stated above, my examination period starts at June 10th and ends at July 4th, so I would like to have a 10 days break in order to rest and clear up my mind.
Break. As stated above, my examination period starts at June 10th and ends at July 4th, so I would like to have a 10 days break in order to rest and clear up my mind.


( July 16th - August 15th )
'''( July 16th - August 15th )'''


Continue with the algorithms' development. Given the four days per algorithm estimation, about 7 - 8 different algorithms should be created during this period.
Continue with the algorithms' development. Given the four days per algorithm estimation, about 7 - 8 different algorithms should be created during this period.
Line 262: Line 262:
Milestone 2 : The goal for the end of this period will be to have a fully functioning multi-precision class ( or new basic numerical type ) and also a big enough arsenal of algorithms upon it.
Milestone 2 : The goal for the end of this period will be to have a fully functioning multi-precision class ( or new basic numerical type ) and also a big enough arsenal of algorithms upon it.


(August 16th - August 31st)
'''(August 16th - August 31st)'''


Wrapping up the project. Finish what is left to be done. Documentation, debugging and testing.
Wrapping up the project. Finish what is left to be done. Documentation, debugging and testing.
67

edits