[[todo]]
 

Complete the GSL library

Complete the test-suite for GSL code (April 26, 2008)

GSL interface is half-done (ok, 1/3 done) but the test-suite has only 5 tests done at the moment.

Complete the GSL integration (October 29, 2006)

We need to finish to import the integration.

Just three functions are not done (April 26, 2008)

The last functions to implement are not essential, we have a sufficient number of functions to make numerical integration. The difficulty with the lacking functions is that they need tables and I don't really see how I could implement this to stay relatively simple. Maybe, I must use them in a precise case… don't know.

The GSL differential equations (November 8, 2007)

This was asked, so we must do it. :-)

All the others functions could be imported too

This will be done later, except if one asks for particular functions ;-)

Accelerate polynomials' factorization in particular cases (June 17, 2007)

Basic improvements

Many polynomials we want to factor are very particular ones and they are easy to factor. Knowing this, we can improve the polynomials factorization algorithm.

* The Eisenstein criterion is a good idea to execute before a factorization.

This should be easy to implement since we have a direct access to integers' factorization.

* All the polynomials of the form

Graph

are easy to factorize, we can do particular things for them. See http://en.wikipedia.org/wiki/Root_of_unity

Advanced improvements

The reconstitution of factors after Hensel's lifting is a basic algorithm for now. We can improve it by implementing the Knapsack algorithm.

More advanced improvements

At the moment, NumExp can only factor univariate polynomials. So, the multivariate case rests to be done ! :-(

Outputs of floating point numbers

We have this problem :

numexp> 0.3
ans = 0.29999999999999999
numexp> 0.1
ans = 0.10000000000000001

It should not be so difficult to correct those problems.

Expressions manipulations

We can already : * simplify automatically an expression : Graph

gives Graph

or Graph

just returns Graph

* expand an expression Graph

gives Graph

* factorize an expression Graph

gives Graph

What we need to implement now is factorization for multivariate expressions, for example:

Graph

should return

Graph

Also, we don't have a real simplification function :

It would be good if : Graph

gives

Graph

and

Graph

gives

Graph

This function would return the shortest form it can compute. There's another good example that should be simplified a lot :

Graph

should return 6.

Also, we could have things like this:

Graph

gives 1.

Here, the function uses a table of known things about functions.

This example is interesting too :

Graph

and simpler than the previous ones. But at the moment, nothing is done to simplify this.

Types for functions' arguments

In NumExp, we can define different versions of the same function but with different arguments. So, in theory it is possible to define a function factor for integers and a function factor for polynomials.

In the mean time, the NumExp developers did not define this function like this, the problem is the following : we can see a number (different than 0) as a polynomial of degree 0. So what version of the function should be used ?

For this function, the problem is not so big, but it exists.

Also, we have the following situation, an end user could define a function for two polynomials. But this function won't work for other arguments. It could be a good thing to be able to test the type of the arguments.

Instead of defining the function like this :

f[a, b]:=...

we could imagine the following definition :

f[a:POLYNOMIAL, b:POLYNOMIAL]:=...

Then, when we call this function f, NumExp tries to typecast the two arguments to have two polynomials.

If two functions are defined with the same name, say we also have

f[a:POLYNOMIAL, b:INTEGER]:=...

With a call of f like the following :

f[x^2+2x-3, 5]

NumExp can't know what definition of f to use. It'll return an error.

In that case, the end user can enter :

f[x^2+2x-3, 5:INTEGER]

to solve the ambiguity.

The bad thing: a such definition makes conflicts. A block of instructions is particular function called :, so a:POLYNOMIAL could be seen as the product of a, : and POLYNOMIAL. Too bad :-(

Another thing interesting, we could imagine to define a function of one variable x only if x is positive or only if x is a prime number ; and the previous way to give the type is not very good.

So, at the moment, the idea is to use a new function with.

So instead of defining f[x:INTEGER]:=2x+3, the idea is to enter with x in INTEGERS do f[x]:=2x+3

The definition is longuer but works better.

We can also make something like this, with x>0 and y>0 do f[x, y]:=sqrt[x]-sqrt[y]

numexp-kernel/GNumExp connexion must be improved

Many difficulties with libbonobo

People often cannot compile numex-kernel that depends on libbonobo.

A possibility is to change the numexp-kernel from libbonobo to dbus.

This is almost done now and you can try it with the actual svn version.

The only difficulty is with graphics, at the moment there is a limitation in DBus and we cannot send through it a big structure containing all the points of a complicated curve. So we must change how curves are drawn in NumExp. I try to describe the changes I want in the next section.

About graphics

I think a good improvement would be NumExp to be able to draw directly from the server and not like at the moment, that is to say the gnumexp client asks for a tabular of points and draws them. If we have a graphic element in the kernel, this would be helpful to draw also histograms or other things and we can imagine other outputs than the screen, why not having a postscript output or other…

The algorithm of functions plotting can also be improved, I realized this with a function like Latex. If we want to plot this one for x in [-2;2], there are many points computed when x arrives near zero.

It would also be good to have graphics directly inside the gnumexp console, but I'll see this later. :-)

 
todo.txt · Last modified: 2009/01/17 11:13 by bouda1
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki