I removed the list of things to do from this site, because it is outdated
and probably not helpful to anyone but me. From now I’ll post
items if I want to make my plans public.
I’ve been working on a faster implementation of finite fields. It is
almost the same as the naive implementation that consists mostly of GMP
wrappers, but is slightly more efficient because it avoids some dynamic
memory allocation (once the modulus is known, the number of GMP limbs needed
to store field elements is fixed) and can call low-level GMP functions.
The new implementation has some drawbacks: notably setting an element to
a low integer, especially zero or one, is much slower because now a whole
array has to be cleared, whereas before GMP would only need to
change the _mp_size field. This slows down some of my pairing
code. At the moment I’m removing such calls on F pairings (I have already
fixed D pairings), and will release once that is done.
Next I want to implement finite fields using Montgomery reduction.
I had already tried this once before, but due to bad coding it was slower than
the simple implementation. With more experience with GMP internals,
I’m confident I’ll be able to make it fast this
time, which will benefit all pairings.
Wed Sep 27 02:37:24 PDT 2006