/* return a^2 as DBIG */ public static DBIG sqr(BIG a) { DBIG c = new DBIG(0); long carry; a.norm(); for (int i = 0; i < ROM.NLEN; i++) { carry = 0; for (int j = i + 1; j < ROM.NLEN; j++) { carry = c.muladd(2 * a.w[i], a.w[j], carry, i + j); } c.w[ROM.NLEN + i] = carry; } for (int i = 0; i < ROM.NLEN; i++) { c.w[2 * i + 1] += c.muladd(a.w[i], a.w[i], 0, 2 * i); } c.norm(); return(c); }