Karim Belabas on Mon, 06 Aug 2012 17:11:34 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: How to factor integer over Z[i]? |
* Andrew Lelechenko [2012-08-06 16:40]: > I can factor an integer over the ring of integers and I can factor a > Gaussian integer over the ring of Gaussian integers: > > ? factor(25) > %5 = > [5 2] > ? factor(5+I) > time = 0 ms. > %2 = > [ -I 1] > [ 1 + I 1] > [2 + 3*I 1] > > But how should I ask PARI/GP to factor an integer over Gaussian > integers? I tried for example factor(5+0*I), but it doesn't work well. Here's a simple possibility: \\ assume n is a t_INT Zi_Z_factor(n) = my (f = factor(n*I)); f[1,1] /= I; f; (17:02) gp > Zi_Z_factor(5) %1 = [1 - 2*I 1] [1 + 2*I 1] This is not a very flexible hack. You can factor elements over arbitrary (principal) number fields as follows: ? K = bnfinit(y^2 + 1) \\ here, Q(i) ~ Q[y]/(y^2+1) ? F = idealfactor(K, 5); ? F[,1] = apply(x->nfbasistoalg(K,bnfisprincipal(K,x)[2]), F[,1]); ? F %4 = [ Mod(y - 2, y^2 + 1) 1] [Mod(-y - 2, y^2 + 1) 1] (Some version of this will also work over non-principal fields, but you have to test all possible products of the prime ideal factors for principal ideals, and you no longer have uniqueness, of course.) Cheers, K.B. -- Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17 Universite Bordeaux 1 Fax: (+33) (0)5 40 00 69 50 351, cours de la Liberation http://www.math.u-bordeaux1.fr/~belabas/ F-33405 Talence (France) http://pari.math.u-bordeaux1.fr/ [PARI/GP] `