// generate test cases for main.c // // Usage: java gen [n] // // number of test cases (n) default is 10 // // Each test case consists of: // // u, v, u*v, 2*u*v, u^v, v^u, u^-1, v^-1, (u+v)^2, (u-v)^2, (v-u)^2, (u+v)*(u-v) // import java.math.BigInteger; import java.util.Random; public class gen { static BigInteger TWO = BigInteger.valueOf(2); static BigInteger TEN = BigInteger.valueOf(10); static BigInteger EIGHTEEN = BigInteger.valueOf(18); // 2^255 - 19 // static BigInteger m = BigInteger.ONE.shiftLeft(255).subtract(BigInteger.valueOf(19)); // print in hex // public static void print( BigInteger x) { String s = x.toString(16); int len = s.length(); while( len++ < 64) System.out.print( "0"); // leading 0's System.out.println( s); } public static void main( String args[]) { int n = 10; // number of test cases to generate if( args.length > 0) n = Integer.parseInt( args[0]); Random R = new Random(); BigInteger u, v, uv, upv, umv, vmu; for( int i = 1; i <= n; ++i) { switch(i) { case 1: u = m.subtract(BigInteger.ONE); v = u; break; case 2: u = m.subtract(TWO); v = u; break; case 3: u = m.add(TEN); v = u; break; case 4: u = m.add(EIGHTEEN); v = u; break; case 5: u = m.add(EIGHTEEN); v = m.subtract(BigInteger.ONE); break; default: u = (new BigInteger( 256, R)).mod(m); v = (new BigInteger( 256, R)).mod(m); break; } print(u); print(v); uv = u.multiply(v).mod(m); print( uv); print( uv.multiply(TWO).mod(m)); print( u.modPow(v,m) ); print( v.modPow(u,m) ); print( u.modInverse(m) ); print( v.modInverse(m) ); upv = u.add(v).mod(m); print( upv.multiply(upv).mod(m)); umv = u.subtract(v).mod(m); print( umv.multiply(umv).mod(m)); vmu = v.subtract(u).mod(m); print( vmu.multiply(vmu).mod(m)); print( upv.multiply(umv).mod(m)); } } }