Robert Harron on Tue, 16 Aug 2016 12:12:44 +0200

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Making idealmoddivisor_aux public

Thank you for your replies.

Indeed, the implementation I've written so far in Sage uses the discrete logs of the elements for computations, and it is true that in terms of working with Hecke characters this, together with bnrisprincipal suffices. But the implementation I've written mimics the current implementation for the class group which keeps track of not only the discrete logs, but also representative ideals. And like in the class group code, upon multiplication an equivalent 'small' ideal representative is found. So, while one can get away without reducing and still compute with Hecke characters, I still want to be able to provide the user with representatives of the ray classes.

We're you saying that idealmul and idealred themselves allow for finding small representatives of an ray class? I couldn't understand how to do that. Or wait, I see now that you mention a public function idealmoddivisor, but it looks like that function has disappeared from the documentation, maybe even from being publicly available. I found it in a google search in pari 2.5.

Thank you,


On 8/15/16 11:26 PM, Karim Belabas wrote:
* Karim Belabas [2016-08-16 10:59]:
* Robert Harron [2016-08-16 05:30]:
I'm writing code for computing ray class groups and Hecke characters in Sage
mostly by wrapping the functions in the pari c library. One particular
function I've had to write myself is the one that takes an ideal I and
returns a 'small' ideal equivalent I modulo the given modulus (Algorithm
4.3.4 of Henri Cohen's Advanced topics book). I did however find that there
is a function in the pari source code that does this: idealmoddivisor_aux in
the file buch3.c. I was wondering if it would be possible to make a public
version of this function in the pari library, perhaps just adding a modulus
argument to idealred. It's pretty essential for making efficient
computations in the ray class group and I'm sure the pari library version
would be quicker than what I've written!

This function is certainly not essential; in fact, it was implemented as
a proof of concept then discarded for uselessness: it's a red herring.
The documentation of idealmoddivisor(), the public function doing what
you require, comments as follows: "a proof-of-concept implementation,
useless in practice".
I agree that all this should be better documented :-)

Of course, in order to "compute in ray class groups", the simplest (and
usually best) solution is to directly use bnrisprincipal() and express
everything in terms of discrete logs. That's how Hecke characters
(currently of finite order) are implemented in PARI.

In short, we'll need to know more about what you actually need, and why.


Karim Belabas, IMB (UMR 5251)  Tel: (+33) (0)5 40 00 26 17
Universite de Bordeaux         Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation
F-33405 Talence (France)  [PARI/GP]