private static final void mont_dbl(long10 t1, long10 t2, long10 t3, long10 t4,long10 bx, long10 bz) {
		sqr(t1, t3);
		sqr(t2, t4);
		mul(bx, t1, t2);
		sub(t2, t1, t2);
		mul_small(bz, t2, 121665);
		add(t1, t1, bz);
		mul(bz, t1, t2);
	}
private static final void mont_dbl ( long10 t1 , long10 t2 , long10 t3 , long10 t4 , long10 bx , long10 bz ) { sqr ( t1 , t3 ) ; sqr ( t2 , t4 ) ; mul ( bx , t1 , t2 ) ; sub ( t2 , t1 , t2 ) ; mul_small ( bz , t2 , 121665 ) ; add ( t1 , t1 , bz ) ; mul ( bz , t1 , t2 ) ; }
/* B = 2 * Q   where
X(B) = bx/bz
X(Q) = (t3+t4)/(t3-t4)
clobbers t1 and t2, preserves t3 and t4