public static void Square(uint[] x, uint[] zz) { Nat192.Square(x, zz); Nat192.Square(x, 6, zz, 12); uint num = Nat192.AddToEachOther(zz, 6, zz, 12); uint cIn = num + Nat192.AddTo(zz, 0, zz, 6, 0); num += Nat192.AddTo(zz, 0x12, zz, 12, cIn); uint[] z = Nat192.Create(); Nat192.Diff(x, 6, x, 0, z, 0); uint[] numArray2 = Nat192.CreateExt(); Nat192.Square(z, numArray2); num += (uint)Nat.SubFrom(12, numArray2, 0, zz, 6); Nat.AddWordAt(0x18, num, zz, 0x12); }
public static void Square(uint[] x, uint[] zz) { Nat192.Square(x, zz); Nat192.Square(x, 6, zz, 12); uint num = Nat192.AddToEachOther(zz, 6, zz, 12); uint cIn = num + Nat192.AddTo(zz, 0, zz, 6, 0u); num += Nat192.AddTo(zz, 18, zz, 12, cIn); uint[] array = Nat192.Create(); Nat192.Diff(x, 6, x, 0, array, 0); uint[] array2 = Nat192.CreateExt(); Nat192.Square(array, array2); num += (uint)Nat.SubFrom(12, array2, 0, zz, 6); Nat.AddWordAt(24, num, zz, 18); }
public static void Mul(uint[] x, uint[] y, uint[] zz) { Nat192.Mul(x, y, zz); Nat192.Mul(x, 6, y, 6, zz, 12); uint num = Nat192.AddToEachOther(zz, 6, zz, 12); uint cIn = num + Nat192.AddTo(zz, 0, zz, 6, 0); num += Nat192.AddTo(zz, 0x12, zz, 12, cIn); uint[] z = Nat192.Create(); uint[] numArray2 = Nat192.Create(); bool flag = Nat192.Diff(x, 6, x, 0, z, 0) != Nat192.Diff(y, 6, y, 0, numArray2, 0); uint[] numArray3 = Nat192.CreateExt(); Nat192.Mul(z, numArray2, numArray3); num += !flag ? ((uint)Nat.SubFrom(12, numArray3, 0, zz, 6)) : Nat.AddTo(12, numArray3, 0, zz, 6); Nat.AddWordAt(0x18, num, zz, 0x12); }
public static void Mul(uint[] x, uint[] y, uint[] zz) { Nat192.Mul(x, y, zz); Nat192.Mul(x, 6, y, 6, zz, 12); uint num = Nat192.AddToEachOther(zz, 6, zz, 12); uint cIn = num + Nat192.AddTo(zz, 0, zz, 6, 0u); num += Nat192.AddTo(zz, 18, zz, 12, cIn); uint[] array = Nat192.Create(); uint[] array2 = Nat192.Create(); bool flag = Nat192.Diff(x, 6, x, 0, array, 0) != Nat192.Diff(y, 6, y, 0, array2, 0); uint[] array3 = Nat192.CreateExt(); Nat192.Mul(array, array2, array3); num += (flag ? Nat.AddTo(12, array3, 0, zz, 6) : ((uint)Nat.SubFrom(12, array3, 0, zz, 6))); Nat.AddWordAt(24, num, zz, 18); }
public static void Square(uint[] x, uint[] zz) { Nat192.Square(x, zz); Nat192.Square(x, 6, zz, 12); uint c18 = Nat192.AddToEachOther(zz, 6, zz, 12); uint c12 = c18 + Nat192.AddTo(zz, 0, zz, 6, 0); c18 += Nat192.AddTo(zz, 18, zz, 12, c12); uint[] dx = Nat192.Create(); Nat192.Diff(x, 6, x, 0, dx, 0); uint[] m = Nat192.CreateExt(); Nat192.Square(dx, m); c18 += (uint)Nat.SubFrom(12, m, 0, zz, 6); Nat.AddWordAt(24, c18, zz, 18); }
public static void Mul(uint[] x, uint[] y, uint[] zz) { Nat192.Mul(x, y, zz); Nat192.Mul(x, 6, y, 6, zz, 12); uint c18 = Nat192.AddToEachOther(zz, 6, zz, 12); uint c12 = c18 + Nat192.AddTo(zz, 0, zz, 6, 0); c18 += Nat192.AddTo(zz, 18, zz, 12, c12); uint[] dx = Nat192.Create(), dy = Nat192.Create(); bool neg = Nat192.Diff(x, 6, x, 0, dx, 0) != Nat192.Diff(y, 6, y, 0, dy, 0); uint[] tt = Nat192.CreateExt(); Nat192.Mul(dx, dy, tt); c18 += neg ? Nat.AddTo(12, tt, 0, zz, 6) : (uint)Nat.SubFrom(12, tt, 0, zz, 6); Nat.AddWordAt(24, c18, zz, 18); }