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, Rob 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. Cheers, K.B. -- 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 http://www.math.u-bordeaux.fr/~kbelabas/ F-33405 Talence (France) http://pari.math.u-bordeaux.fr/ [PARI/GP] `