public static void Square(uint[] x, uint[] zz) { Nat256.Square(x, zz); Nat256.Square(x, 8, zz, 0x10); uint num = Nat256.AddToEachOther(zz, 8, zz, 0x10); uint cIn = num + Nat256.AddTo(zz, 0, zz, 8, 0); num += Nat256.AddTo(zz, 0x18, zz, 0x10, cIn); uint[] z = Nat256.Create(); Nat256.Diff(x, 8, x, 0, z, 0); uint[] numArray2 = Nat256.CreateExt(); Nat256.Square(z, numArray2); num += (uint)Nat.SubFrom(0x10, numArray2, 0, zz, 8); Nat.AddWordAt(0x20, num, zz, 0x18); }
public static void Square(uint[] x, uint[] zz) { Nat256.Square(x, zz); Nat256.Square(x, 8, zz, 16); uint num = Nat256.AddToEachOther(zz, 8, zz, 16); uint cIn = num + Nat256.AddTo(zz, 0, zz, 8, 0u); num += Nat256.AddTo(zz, 24, zz, 16, cIn); uint[] array = Nat256.Create(); Nat256.Diff(x, 8, x, 0, array, 0); uint[] array2 = Nat256.CreateExt(); Nat256.Square(array, array2); num += (uint)Nat.SubFrom(16, array2, 0, zz, 8); Nat.AddWordAt(32, num, zz, 24); }
public static void Square(uint[] x, uint[] zz) { Nat256.Square(x, zz); Nat256.Square(x, 8, zz, 16); uint c24 = Nat256.AddToEachOther(zz, 8, zz, 16); uint c16 = c24 + Nat256.AddTo(zz, 0, zz, 8, 0); c24 += Nat256.AddTo(zz, 24, zz, 16, c16); uint[] dx = Nat256.Create(); Nat256.Diff(x, 8, x, 0, dx, 0); uint[] m = Nat256.CreateExt(); Nat256.Square(dx, m); c24 += (uint)Nat.SubFrom(16, m, 0, zz, 8); Nat.AddWordAt(32, c24, zz, 24); }