bridge/class-master/depend/pari/src/modules/krasner.c
/* Return non-zero if the field given by fdata defines a field isomorphic to
 * the one defined by pol */
Return non-zero if the field given by fdata defines a field isomorphic to
the one defined by pol
Return non - zero if the field given by fdata defines a field isomorphic to the one defined by pol
static long
IsIsomorphic(KRASNER_t *data, FAD_t *fdata, GEN pol)
{
  long j, nb;
  pari_sp av = avma;
  if (RgX_is_ZX(pol)) return RootCountingAlgorithm(data, fdata, pol, 1);
  for (j = 1; j <= data->f; j++)
  {
    GEN p1 = FqX_FpXQ_eval(pol, fdata->z, fdata->top, data->pr);
    nb = RootCountingAlgorithm(data, fdata, p1, 1);
    if (nb) { avma = av; return nb; }
    if (j < data->f)
      pol = FqX_FpXQ_eval(pol, data->frob, data->T, data->pr);
  }
  avma = av; return 0;
}
static long IsIsomorphic ( KRASNER_t * data , FAD_t * fdata , GEN pol ) { long j , nb ; pari_sp av = avma ; if ( RgX_is_ZX ( pol ) ) return RootCountingAlgorithm ( data , fdata , pol , 1 ) ; for ( j = 1 ; j <= data -> f ; j ++ ) { GEN p1 = FqX_FpXQ_eval ( pol , fdata -> z , fdata -> top , data -> pr ) ; nb = RootCountingAlgorithm ( data , fdata , p1 , 1 ) ; if ( nb ) { avma = av ; return nb ; } if ( j < data -> f ) pol = FqX_FpXQ_eval ( pol , data -> frob , data -> T , data -> pr ) ; } avma = av ; return 0 ; }
Return non-zero if the field given by fdata defines a field isomorphic to
 the one defined by pol
Return non - zero if the field given by fdata defines a field isomorphic to the one defined by pol