Annegret Weng on Mon, 19 Jun 2000 22:02:53 -0400 (EDT)

 rnfisnorm

```Hello!

I have a problem with the function "rnfisnorm". It seems that I do not
know how to work with it.
I wrote a C++-program using Pari (see below) but I get an error.

The program should do the following: Given a rational prime p (as an
element of a numberfield generated by y^3+b1*y^2+b2*y+b3), determine
wheter p is a relative norm in a field extension defined by
x^2+Mod(a2*y^2+a1*y+a0,y^3+b1*y^2+b2*y+b3).

I entered for example b1=1, b2=-2 and b3=-1 and then a2=1, a1=2 and a0=1
and p=17. I got the error
***   incorrect type in principalideal.
***   Error in the PARI system. End of program.

Where is my mistake?
Thank you very much for every advice!

Best regards,
Annegret

My program:

#include<iostream.h>

extern "C" {
#include<pari/pari.h>
}

int main()
{
pari_init(100000000,2);
long prec=DEFAULTPREC;

long b1,b2,b3;
long a0,a1,a2;
const long vy=fetch_user_var("y");
const long vx=0;

GEN y=polx[vy];//Variable for number field
GEN x=polx[vx];//Variable for relative extension
GEN polynom1;//Polynomial for the number field
GEN polynom2;//Polynomial for the relative extension
long ltop;
cout << "Enter a polynomial of degree 3!" << endl;
cout << "First the coefficient of x^2, then x, then x^0:"<< endl;
cin >> b1;
cin >> b2;
cin >> b3;
//Polynomial defining the ground field of degree 3:
//y^3+b1*y^2+b2*y+b3

cout <<"Please enter an element alpha in Z[y]" << endl;
cout <<"such that alpha=a0+a1w+a2w^2." << endl;
cin >> a0;
cin >> a1;
cin >> a2;
ltop=avma;
//Polynomial defining the relative extension:
//x^2+Mod(a2*y^2+a1*y+a0,y^3+b1*y^2+b2*y+b3)

//Numberfield defined by y^3+b1*y^2+b2*y+b3
GEN bnf=bnfinit0(polynom1,0,NULL,prec);

//Producing the parameters required by rnfisnorm:
GEN yinx=rnfequation0(bnf,polynom2,1);

//ext required for rnfisnorm:
GEN ext=cgetg(4,t_VEC);
ext[1]=(long) polynom2;
ext[2]=rnfequation0(bnf,polynom2,1)[2];
ext[3]=(long) bnfinit0((GEN) yinx[1],0,NULL,prec);

//The prime p which we want to satisfy a relative norm equation:
long p;
cout<<"Enter a rational prime p!" << endl;
cin >> p;
GEN element=algtobasis(bnf,stoi(p));
output(rnfisnorm(bnf,ext,element,100,prec));
}
```

• Follow-Ups:
• Re: rnfisnorm
• From: Karim BELABAS <Karim.Belabas@math.u-psud.fr>