public static void ToStorage(FeStorage r, Fe a) { r.N[0] = a.N[0] | a.N[1] << 26; r.N[1] = a.N[1] >> 6 | a.N[2] << 20; r.N[2] = a.N[2] >> 12 | a.N[3] << 14; r.N[3] = a.N[3] >> 18 | a.N[4] << 8; r.N[4] = (uint)((int)(a.N[4] >> 24) | (int)a.N[5] << 2 | (int)a.N[6] << 28); r.N[5] = a.N[6] >> 4 | a.N[7] << 22; r.N[6] = a.N[7] >> 10 | a.N[8] << 16; r.N[7] = a.N[8] >> 16 | a.N[9] << 10; }
public static void FromStorage(Fe r, FeStorage a) { r.N[0] = a.N[0] & 67108863U; r.N[1] = a.N[0] >> 26 | (uint)((int)a.N[1] << 6 & 67108863); r.N[2] = a.N[1] >> 20 | (uint)((int)a.N[2] << 12 & 67108863); r.N[3] = a.N[2] >> 14 | (uint)((int)a.N[3] << 18 & 67108863); r.N[4] = a.N[3] >> 8 | (uint)((int)a.N[4] << 24 & 67108863); r.N[5] = a.N[4] >> 2 & 67108863U; r.N[6] = a.N[4] >> 28 | (uint)((int)a.N[5] << 4 & 67108863); r.N[7] = a.N[5] >> 22 | (uint)((int)a.N[6] << 10 & 67108863); r.N[8] = a.N[6] >> 16 | (uint)((int)a.N[7] << 16 & 67108863); r.N[9] = a.N[7] >> 10; }
public static void StorageCmov(FeStorage r, FeStorage a, bool flag) { uint maxValue = uint.MaxValue; if (flag) { ++maxValue; } uint num = ~maxValue; r.N[0] = (uint)((int)r.N[0] & (int)maxValue | (int)a.N[0] & (int)num); r.N[1] = (uint)((int)r.N[1] & (int)maxValue | (int)a.N[1] & (int)num); r.N[2] = (uint)((int)r.N[2] & (int)maxValue | (int)a.N[2] & (int)num); r.N[3] = (uint)((int)r.N[3] & (int)maxValue | (int)a.N[3] & (int)num); r.N[4] = (uint)((int)r.N[4] & (int)maxValue | (int)a.N[4] & (int)num); r.N[5] = (uint)((int)r.N[5] & (int)maxValue | (int)a.N[5] & (int)num); r.N[6] = (uint)((int)r.N[6] & (int)maxValue | (int)a.N[6] & (int)num); r.N[7] = (uint)((int)r.N[7] & (int)maxValue | (int)a.N[7] & (int)num); }
public GeStorage() { X = new FeStorage(); Y = new FeStorage(); }
public GeStorage() { this.X = new FeStorage(); this.Y = new FeStorage(); }