ZZn8 line(ECn& A,ECn& C,ZZn& slope,ZZn4& Qx,ZZn4& Qy) { ZZn8 w; ZZn4 m=Qx; ZZn x,y,z,t; #ifdef AFFINE extract(A,x,y); m-=x; m*=slope; w.set((ZZn4)-y,Qy); w-=m; #endif #ifdef PROJECTIVE extract(A,x,y,z); x*=z; t=z; z*=z; z*=t; x*=slope; t=slope*z; m*=t; m-=x; t=z; extract(C,x,x,z); m+=(z*y); t*=z; w.set(m,-Qy*t); #endif return w; }