Ejemplo n.º 1
0
/* 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);
    }