bridge/class-master/depend/pari/src/basemath/qfisom.c
/* x1 corresponds to an element X1 mapping some vector e on p1, x2 to an
 * element X2 mapping e on p2 and G is a generator mapping p1 on p2, then
 * S = X1*G*X2^-1 stabilizes e
 */
x1 corresponds to an element X1 mapping some vector e on p1, x2 to an
element X2 mapping e on p2 and G is a generator mapping p1 on p2, then
S = X1*G*X2^-1 stabilizes e
x1 corresponds to an element X1 mapping some vector e on p1 x2 to an element X2 mapping e on p2 and G is a generator mapping p1 on p2 then S = X1 * G * X2^ - 1 stabilizes e
static GEN
stabil(GEN x1, GEN x2, GEN per, GEN G, GEN V, ulong p)
{
  pari_sp av = avma;
  long i;
  GEN x, XG, X2;
  long dim = lg(x1)-1;
  x = cgetg(dim+1,t_VECSMALL);
  for (i = 1; i <= dim; ++i)
    x[i] = operate(x1[i], G, V);
  XG = matgen(x, per, V);
  X2 = matgen(x2, per, V);
  return gerepileupto(av,zm_divmod(X2,XG,p));
}
static GEN stabil ( GEN x1 , GEN x2 , GEN per , GEN G , GEN V , ulong p ) { pari_sp av = avma ; long i ; GEN x , XG , X2 ; long dim = lg ( x1 ) - 1 ; x = cgetg ( dim + 1 , t_VECSMALL ) ; for ( i = 1 ; i <= dim ; ++ i ) x [ i ] = operate ( x1 [ i ] , G , V ) ; XG = matgen ( x , per , V ) ; X2 = matgen ( x2 , per , V ) ; return gerepileupto ( av , zm_divmod ( X2 , XG , p ) ) ; }
x1 corresponds to an element X1 mapping some vector e on p1, x2 to an
 element X2 mapping e on p2 and G is a generator mapping p1 on p2, then
 S = X1*G*X2^-1 stabilizes e
x1 corresponds to an element X1 mapping some vector e on p1 x2 to an element X2 mapping e on p2 and G is a generator mapping p1 on p2 then S = X1 * G * X2^ - 1 stabilizes e
/* XG is the composite mapping of the matrix corresponding to x1 and G */