bridge/class-master/depend/pari/src/basemath/FpE.c
/*assume a4,a6 reduced mod p odd */
assume a4,a6 reduced mod p odd
assume a4 a6 reduced mod p odd
static ulong
Fl_elltrace_naive(ulong a4, ulong a6, ulong p)
{
  ulong i, j;
  long a = 0;
  long d0, d1, d2, d3;
  GEN k = const_vecsmall(p, -1);
  k[1] = 0;
  for (i=1, j=1; i < p; i += 2, j = Fl_add(j, i, p))
    k[j+1] = 1;
  d0 = 6%p; d1 = d0; d2 = Fl_add(a4, 1, p); d3 = a6;
  for(i=0;; i++)
  {
    a -= k[1+d3];
    if (i==p-1) break;
    d3 = Fl_add(d3, d2, p);
    d2 = Fl_add(d2, d1, p);
    d1 = Fl_add(d1, d0, p);
  }
  return a;
}
static ulong Fl_elltrace_naive ( ulong a4 , ulong a6 , ulong p ) { ulong i , j ; long a = 0 ; long d0 , d1 , d2 , d3 ; GEN k = const_vecsmall ( p , -1 ) ; k [ 1 ] = 0 ; for ( i = 1 , j = 1 ; i < p ; i += 2 , j = Fl_add ( j , i , p ) ) k [ j + 1 ] = 1 ; d0 = 6 % p ; d1 = d0 ; d2 = Fl_add ( a4 , 1 , p ) ; d3 = a6 ; for ( i = 0 ; ; i ++ ) { a -= k [ 1 + d3 ] ; if ( i == p - 1 ) break ; d3 = Fl_add ( d3 , d2 , p ) ; d2 = Fl_add ( d2 , d1 , p ) ; d1 = Fl_add ( d1 , d0 , p ) ; } return a ; }
assume a4,a6 reduced mod p odd
assume a4 a6 reduced mod p odd