Fix TDivisor type
Hooray! It works!
This commit is contained in:
parent
ecce5e797f
commit
932a11679d
1 changed files with 22 additions and 22 deletions
|
@ -16,8 +16,8 @@ type size_t = u64;
|
||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone)]
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
struct TDivisor {
|
struct TDivisor {
|
||||||
u: [u16; 2],
|
u: [u64; 2],
|
||||||
v: [u16; 2],
|
v: [u64; 2],
|
||||||
}
|
}
|
||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone)]
|
||||||
#[repr(C)]
|
#[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_add(f1, residue_mul(u1, residue_mul(v1, v1))),
|
||||||
residue_inv(residue_add(v1, v1)),
|
residue_inv(residue_add(v1, v1)),
|
||||||
);
|
);
|
||||||
(*d).v[0_i32 as usize] = v0 as u16;
|
(*d).v[0_i32 as usize] = v0;
|
||||||
(*d).v[1_i32 as usize] = v1 as u16;
|
(*d).v[1_i32 as usize] = v1;
|
||||||
1_i32
|
1_i32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -750,32 +750,32 @@ unsafe fn divisor_add(src1: *const TDivisor, src2: *const TDivisor, mut dst: *mu
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if udeg == 2_i32 {
|
if udeg == 2_i32 {
|
||||||
(*dst).u[0_i32 as usize] = u[0_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] as u16;
|
(*dst).u[1_i32 as usize] = u[1_i32 as usize];
|
||||||
(*dst).v[0_i32 as usize] = (if vdeg >= 0_i32 {
|
(*dst).v[0_i32 as usize] = (if vdeg >= 0_i32 {
|
||||||
v[0_i32 as usize]
|
v[0_i32 as usize]
|
||||||
} else {
|
} else {
|
||||||
0_i32 as u64
|
0_i32 as u64
|
||||||
}) as u16;
|
});
|
||||||
(*dst).v[1_i32 as usize] = (if vdeg >= 1_i32 {
|
(*dst).v[1_i32 as usize] = (if vdeg >= 1_i32 {
|
||||||
v[1_i32 as usize]
|
v[1_i32 as usize]
|
||||||
} else {
|
} else {
|
||||||
0_i32 as u64
|
0_i32 as u64
|
||||||
}) as u16;
|
});
|
||||||
} else if udeg == 1_i32 {
|
} else if udeg == 1_i32 {
|
||||||
(*dst).u[0_i32 as usize] = u[0_i32 as usize] as u16;
|
(*dst).u[0_i32 as usize] = u[0_i32 as usize];
|
||||||
(*dst).u[1_i32 as usize] = BAD as u16;
|
(*dst).u[1_i32 as usize] = BAD;
|
||||||
(*dst).v[0_i32 as usize] = (if vdeg >= 0_i32 {
|
(*dst).v[0_i32 as usize] = (if vdeg >= 0_i32 {
|
||||||
v[0_i32 as usize]
|
v[0_i32 as usize]
|
||||||
} else {
|
} else {
|
||||||
0_i32 as u64
|
0_i32 as u64
|
||||||
}) as u16;
|
});
|
||||||
(*dst).v[1_i32 as usize] = BAD as u16;
|
(*dst).v[1_i32 as usize] = BAD;
|
||||||
} else {
|
} else {
|
||||||
(*dst).u[0_i32 as usize] = BAD as u16;
|
(*dst).u[0_i32 as usize] = BAD;
|
||||||
(*dst).u[1_i32 as usize] = BAD as u16;
|
(*dst).u[1_i32 as usize] = BAD;
|
||||||
(*dst).v[0_i32 as usize] = BAD as u16;
|
(*dst).v[0_i32 as usize] = BAD;
|
||||||
(*dst).v[1_i32 as usize] = BAD as u16;
|
(*dst).v[1_i32 as usize] = BAD;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -786,10 +786,10 @@ unsafe fn divisor_mul128(
|
||||||
mut dst: *mut TDivisor,
|
mut dst: *mut TDivisor,
|
||||||
) {
|
) {
|
||||||
if mult_lo == 0_i32 as u64 && mult_hi == 0_i32 as u64 {
|
if mult_lo == 0_i32 as u64 && mult_hi == 0_i32 as u64 {
|
||||||
(*dst).u[0_i32 as usize] = BAD as u16;
|
(*dst).u[0_i32 as usize] = BAD;
|
||||||
(*dst).u[1_i32 as usize] = BAD as u16;
|
(*dst).u[1_i32 as usize] = BAD;
|
||||||
(*dst).v[0_i32 as usize] = BAD as u16;
|
(*dst).v[0_i32 as usize] = BAD;
|
||||||
(*dst).v[1_i32 as usize] = BAD as u16;
|
(*dst).v[1_i32 as usize] = BAD;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let mut cur: TDivisor = *src;
|
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(
|
d_0.u[0_i32 as usize] = residue_sub(
|
||||||
residue_mul(x1, x1),
|
residue_mul(x1, x1),
|
||||||
residue_mul(43_i32 as u64, residue_mul(x2, x2)),
|
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 {
|
if find_divisor_v(&mut d_0) != 0 {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue