Fix TDivisor type

Hooray! It works!
This commit is contained in:
Alex Page 2023-06-22 01:39:25 -04:00
parent ecce5e797f
commit 932a11679d

View file

@ -16,8 +16,8 @@ type size_t = u64;
#[derive(Copy, Clone)]
#[repr(C)]
struct TDivisor {
u: [u16; 2],
v: [u16; 2],
u: [u64; 2],
v: [u64; 2],
}
#[derive(Copy, Clone)]
#[repr(C)]
@ -297,8 +297,8 @@ unsafe fn find_divisor_v(mut d: *mut TDivisor) -> i32 {
residue_add(f1, residue_mul(u1, residue_mul(v1, v1))),
residue_inv(residue_add(v1, v1)),
);
(*d).v[0_i32 as usize] = v0 as u16;
(*d).v[1_i32 as usize] = v1 as u16;
(*d).v[0_i32 as usize] = v0;
(*d).v[1_i32 as usize] = v1;
1_i32
}
@ -750,32 +750,32 @@ unsafe fn divisor_add(src1: *const TDivisor, src2: *const TDivisor, mut dst: *mu
);
}
if udeg == 2_i32 {
(*dst).u[0_i32 as usize] = u[0_i32 as usize] as u16;
(*dst).u[1_i32 as usize] = u[1_i32 as usize] as u16;
(*dst).u[0_i32 as usize] = u[0_i32 as usize];
(*dst).u[1_i32 as usize] = u[1_i32 as usize];
(*dst).v[0_i32 as usize] = (if vdeg >= 0_i32 {
v[0_i32 as usize]
} else {
0_i32 as u64
}) as u16;
});
(*dst).v[1_i32 as usize] = (if vdeg >= 1_i32 {
v[1_i32 as usize]
} else {
0_i32 as u64
}) as u16;
});
} else if udeg == 1_i32 {
(*dst).u[0_i32 as usize] = u[0_i32 as usize] as u16;
(*dst).u[1_i32 as usize] = BAD as u16;
(*dst).u[0_i32 as usize] = u[0_i32 as usize];
(*dst).u[1_i32 as usize] = BAD;
(*dst).v[0_i32 as usize] = (if vdeg >= 0_i32 {
v[0_i32 as usize]
} else {
0_i32 as u64
}) as u16;
(*dst).v[1_i32 as usize] = BAD as u16;
});
(*dst).v[1_i32 as usize] = BAD;
} else {
(*dst).u[0_i32 as usize] = BAD as u16;
(*dst).u[1_i32 as usize] = BAD as u16;
(*dst).v[0_i32 as usize] = BAD as u16;
(*dst).v[1_i32 as usize] = BAD as u16;
(*dst).u[0_i32 as usize] = BAD;
(*dst).u[1_i32 as usize] = BAD;
(*dst).v[0_i32 as usize] = BAD;
(*dst).v[1_i32 as usize] = BAD;
};
}
@ -786,10 +786,10 @@ unsafe fn divisor_mul128(
mut dst: *mut TDivisor,
) {
if mult_lo == 0_i32 as u64 && mult_hi == 0_i32 as u64 {
(*dst).u[0_i32 as usize] = BAD as u16;
(*dst).u[1_i32 as usize] = BAD as u16;
(*dst).v[0_i32 as usize] = BAD as u16;
(*dst).v[1_i32 as usize] = BAD as u16;
(*dst).u[0_i32 as usize] = BAD;
(*dst).u[1_i32 as usize] = BAD;
(*dst).v[0_i32 as usize] = BAD;
(*dst).v[1_i32 as usize] = BAD;
return;
}
let mut cur: TDivisor = *src;
@ -1179,8 +1179,8 @@ unsafe fn Generate(installation_id_str: *const i8, confirmation_id: *mut i8) ->
d_0.u[0_i32 as usize] = residue_sub(
residue_mul(x1, x1),
residue_mul(43_i32 as u64, residue_mul(x2, x2)),
) as u16;
d_0.u[1_i32 as usize] = residue_add(x1, x1) as u16;
);
d_0.u[1_i32 as usize] = residue_add(x1, x1);
if find_divisor_v(&mut d_0) != 0 {
break;
}