bridge/class-master/depend/pari/src/basemath/F2xqE.c
/* Solve the linear equation approximation in the Newton algorithm */
Solve the linear equation approximation in the Newton algorithm
Solve the linear equation approximation in the Newton algorithm
static GEN
gen_Z2x_Dixon(GEN F, GEN V, long N, void *E, GEN lin(void *E, GEN F, GEN d, long N), GEN invl(void *E, GEN d))
{
  pari_sp av = avma;
  long N2, M;
  GEN VN2, V2, VM, bil;
  ulong q = 1UL<<N;
  if (N == 1) return invl(E, V);
  V = Flx_red(V, q);
  N2 = (N + 1)>>1; M = N - N2;
  F = FlxT_red(F, q);
  VN2 = gen_Z2x_Dixon(F, V, N2, E, lin, invl);
  bil = lin(E, F, VN2, N);
  V2 = Z2x_rshift(Flx_sub(V, bil, q), N2);
  VM = gen_Z2x_Dixon(F, V2, M, E, lin, invl);
  return gerepileupto(av, Flx_add(VN2, Flx_Fl_mul(VM, 1UL<<N2, q), q));
}
static GEN gen_Z2x_Dixon ( GEN F , GEN V , long N , void * E , GEN lin ( void * E , GEN F , GEN d , long N ) , GEN invl ( void * E , GEN d ) ) { pari_sp av = avma ; long N2 , M ; GEN VN2 , V2 , VM , bil ; ulong q = 1UL << N ; if ( N == 1 ) return invl ( E , V ) ; V = Flx_red ( V , q ) ; N2 = ( N + 1 ) >> 1 ; M = N - N2 ; F = FlxT_red ( F , q ) ; VN2 = gen_Z2x_Dixon ( F , V , N2 , E , lin , invl ) ; bil = lin ( E , F , VN2 , N ) ; V2 = Z2x_rshift ( Flx_sub ( V , bil , q ) , N2 ) ; VM = gen_Z2x_Dixon ( F , V2 , M , E , lin , invl ) ; return gerepileupto ( av , Flx_add ( VN2 , Flx_Fl_mul ( VM , 1UL << N2 , q ) , q ) ) ; }
Solve the linear equation approximation in the Newton algorithm
Solve the linear equation approximation in the Newton algorithm