Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/rust/libcrux-hacl-rs/src/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 33 kB image not shown  

Quelle  bignum25519_51.rs

  Sprache: Rust
 

#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(unused_assignments)]
#![allow(unreachable_patterns)]

use libcrux_macros as krml;

use crate::fstar;
use crate::lowstar;

#[inline]
pub fn fadd(out: &mut [u64], f1: &[u64], f2: &[u64]) {
    let f10: u64 = f1[0usize];
    let f20: u64 = f2[0usize];
    let f11: u64 = f1[1usize];
    let f21: u64 = f2[1usize];
    let f12: u64 = f1[2usize];
    let f22: u64 = f2[2usize];
    let f13: u64 = f1[3usize];
    let f23: u64 = f2[3usize];
    let f14: u64 = f1[4usize];
    let f24: u64 = f2[4usize];
    out[0usize] = f10.wrapping_add(f20);
    out[1usize] = f11.wrapping_add(f21);
    out[2usize] = f12.wrapping_add(f22);
    out[3usize] = f13.wrapping_add(f23);
    out[4usize] = f14.wrapping_add(f24)
}

#[inline]
pub fn fsub(out: &mut [u64], f1: &[u64], f2: &[u64]) {
    let f10: u64 = f1[0usize];
    let f20: u64 = f2[0usize];
    let f11: u64 = f1[1usize];
    let f21: u64 = f2[1usize];
    let f12: u64 = f1[2usize];
    let f22: u64 = f2[2usize];
    let f13: u64 = f1[3usize];
    let f23: u64 = f2[3usize];
    let f14: u64 = f1[4usize];
    let f24: u64 = f2[4usize];
    out[0usize] = f10.wrapping_add(0x3fffffffffff68u64).wrapping_sub(f20);
    out[1usize] = f11.wrapping_add(0x3ffffffffffff8u64).wrapping_sub(f21);
    out[2usize] = f12.wrapping_add(0x3ffffffffffff8u64).wrapping_sub(f22);
    out[3usize] = f13.wrapping_add(0x3ffffffffffff8u64).wrapping_sub(f23);
    out[4usize] = f14.wrapping_add(0x3ffffffffffff8u64).wrapping_sub(f24)
}

#[inline]
pub fn fmul(out: &mut [u64], f1: &[u64], f2: &[u64], uu___: &[fstar::uint128::uint128]) {
    lowstar::ignore::ignore::<&[fstar::uint128::uint128]>(uu___);
    let f10: u64 = f1[0usize];
    let f11: u64 = f1[1usize];
    let f12: u64 = f1[2usize];
    let f13: u64 = f1[3usize];
    let f14: u64 = f1[4usize];
    let f20: u64 = f2[0usize];
    let f21: u64 = f2[1usize];
    let f22: u64 = f2[2usize];
    let f23: u64 = f2[3usize];
    let f24: u64 = f2[4usize];
    let tmp1: u64 = f21.wrapping_mul(19u64);
    let tmp2: u64 = f22.wrapping_mul(19u64);
    let tmp3: u64 = f23.wrapping_mul(19u64);
    let tmp4: u64 = f24.wrapping_mul(19u64);
    let o0: fstar::uint128::uint128 = fstar::uint128::mul_wide(f10, f20);
    let o1: fstar::uint128::uint128 = fstar::uint128::mul_wide(f10, f21);
    let o2: fstar::uint128::uint128 = fstar::uint128::mul_wide(f10, f22);
    let o3: fstar::uint128::uint128 = fstar::uint128::mul_wide(f10, f23);
    let o4: fstar::uint128::uint128 = fstar::uint128::mul_wide(f10, f24);
    let o01: fstar::uint128::uint128 = fstar::uint128::add(o0, fstar::uint128::mul_wide(f11, tmp4));
    let o11: fstar::uint128::uint128 = fstar::uint128::add(o1, fstar::uint128::mul_wide(f11, f20));
    let o21: fstar::uint128::uint128 = fstar::uint128::add(o2, fstar::uint128::mul_wide(f11, f21));
    let o31: fstar::uint128::uint128 = fstar::uint128::add(o3, fstar::uint128::mul_wide(f11, f22));
    let o41: fstar::uint128::uint128 = fstar::uint128::add(o4, fstar::uint128::mul_wide(f11, f23));
    let o02: fstar::uint128::uint128 =
        fstar::uint128::add(o01, fstar::uint128::mul_wide(f12, tmp3));
    let o12: fstar::uint128::uint128 =
        fstar::uint128::add(o11, fstar::uint128::mul_wide(f12, tmp4));
    let o22: fstar::uint128::uint128 = fstar::uint128::add(o21, fstar::uint128::mul_wide(f12, f20));
    let o32: fstar::uint128::uint128 = fstar::uint128::add(o31, fstar::uint128::mul_wide(f12, f21));
    let o42: fstar::uint128::uint128 = fstar::uint128::add(o41, fstar::uint128::mul_wide(f12, f22));
    let o03: fstar::uint128::uint128 =
        fstar::uint128::add(o02, fstar::uint128::mul_wide(f13, tmp2));
    let o13: fstar::uint128::uint128 =
        fstar::uint128::add(o12, fstar::uint128::mul_wide(f13, tmp3));
    let o23: fstar::uint128::uint128 =
        fstar::uint128::add(o22, fstar::uint128::mul_wide(f13, tmp4));
    let o33: fstar::uint128::uint128 = fstar::uint128::add(o32, fstar::uint128::mul_wide(f13, f20));
    let o43: fstar::uint128::uint128 = fstar::uint128::add(o42, fstar::uint128::mul_wide(f13, f21));
    let o04: fstar::uint128::uint128 =
        fstar::uint128::add(o03, fstar::uint128::mul_wide(f14, tmp1));
    let o14: fstar::uint128::uint128 =
        fstar::uint128::add(o13, fstar::uint128::mul_wide(f14, tmp2));
    let o24: fstar::uint128::uint128 =
        fstar::uint128::add(o23, fstar::uint128::mul_wide(f14, tmp3));
    let o34: fstar::uint128::uint128 =
        fstar::uint128::add(o33, fstar::uint128::mul_wide(f14, tmp4));
    let o44: fstar::uint128::uint128 = fstar::uint128::add(o43, fstar::uint128::mul_wide(f14, f20));
    let tmp_w0: fstar::uint128::uint128 = o04;
    let tmp_w1: fstar::uint128::uint128 = o14;
    let tmp_w2: fstar::uint128::uint128 = o24;
    let tmp_w3: fstar::uint128::uint128 = o34;
    let tmp_w4: fstar::uint128::uint128 = o44;
    let l·: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w0, fstar::uint128::uint64_to_uint128(0u64));
    let tmp01: u64 = fstar::uint128::uint128_to_uint64(l·) & 0x7ffffffffffffu64;
    let c0: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·, 51u32));
    let l·0: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w1, fstar::uint128::uint64_to_uint128(c0));
    let tmp11: u64 = fstar::uint128::uint128_to_uint64(l·0) & 0x7ffffffffffffu64;
    let c1: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·051u32));
    let l·1: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w2, fstar::uint128::uint64_to_uint128(c1));
    let tmp21: u64 = fstar::uint128::uint128_to_uint64(l·1) & 0x7ffffffffffffu64;
    let c2: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·151u32));
    let l·2: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w3, fstar::uint128::uint64_to_uint128(c2));
    let tmp31: u64 = fstar::uint128::uint128_to_uint64(l·2) & 0x7ffffffffffffu64;
    let c3: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·251u32));
    let l·3: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w4, fstar::uint128::uint64_to_uint128(c3));
    let tmp41: u64 = fstar::uint128::uint128_to_uint64(l·3) & 0x7ffffffffffffu64;
    let c4: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·351u32));
    let l·4: u64 = tmp01.wrapping_add(c4.wrapping_mul(19u64));
    let tmp0·: u64 = l·4 & 0x7ffffffffffffu64;
    let c5: u64 = l·4.wrapping_shr(51u32);
    let o00: u64 = tmp0·;
    let o10: u64 = tmp11.wrapping_add(c5);
    let o20: u64 = tmp21;
    let o30: u64 = tmp31;
    let o40: u64 = tmp41;
    out[0usize] = o00;
    out[1usize] = o10;
    out[2usize] = o20;
    out[3usize] = o30;
    out[4usize] = o40
}

#[inline]
pub fn fmul2(out: &mut [u64], f1: &[u64], f2: &[u64], uu___: &[fstar::uint128::uint128]) {
    lowstar::ignore::ignore::<&[fstar::uint128::uint128]>(uu___);
    let f10: u64 = f1[0usize];
    let f11: u64 = f1[1usize];
    let f12: u64 = f1[2usize];
    let f13: u64 = f1[3usize];
    let f14: u64 = f1[4usize];
    let f20: u64 = f2[0usize];
    let f21: u64 = f2[1usize];
    let f22: u64 = f2[2usize];
    let f23: u64 = f2[3usize];
    let f24: u64 = f2[4usize];
    let f30: u64 = f1[5usize];
    let f31: u64 = f1[6usize];
    let f32: u64 = f1[7usize];
    let f33: u64 = f1[8usize];
    let f34: u64 = f1[9usize];
    let f40: u64 = f2[5usize];
    let f41: u64 = f2[6usize];
    let f42: u64 = f2[7usize];
    let f43: u64 = f2[8usize];
    let f44: u64 = f2[9usize];
    let tmp11: u64 = f21.wrapping_mul(19u64);
    let tmp12: u64 = f22.wrapping_mul(19u64);
    let tmp13: u64 = f23.wrapping_mul(19u64);
    let tmp14: u64 = f24.wrapping_mul(19u64);
    let tmp21: u64 = f41.wrapping_mul(19u64);
    let tmp22: u64 = f42.wrapping_mul(19u64);
    let tmp23: u64 = f43.wrapping_mul(19u64);
    let tmp24: u64 = f44.wrapping_mul(19u64);
    let o0: fstar::uint128::uint128 = fstar::uint128::mul_wide(f10, f20);
    let o1: fstar::uint128::uint128 = fstar::uint128::mul_wide(f10, f21);
    let o2: fstar::uint128::uint128 = fstar::uint128::mul_wide(f10, f22);
    let o3: fstar::uint128::uint128 = fstar::uint128::mul_wide(f10, f23);
    let o4: fstar::uint128::uint128 = fstar::uint128::mul_wide(f10, f24);
    let o01: fstar::uint128::uint128 =
        fstar::uint128::add(o0, fstar::uint128::mul_wide(f11, tmp14));
    let o11: fstar::uint128::uint128 = fstar::uint128::add(o1, fstar::uint128::mul_wide(f11, f20));
    let o21: fstar::uint128::uint128 = fstar::uint128::add(o2, fstar::uint128::mul_wide(f11, f21));
    let o31: fstar::uint128::uint128 = fstar::uint128::add(o3, fstar::uint128::mul_wide(f11, f22));
    let o41: fstar::uint128::uint128 = fstar::uint128::add(o4, fstar::uint128::mul_wide(f11, f23));
    let o02: fstar::uint128::uint128 =
        fstar::uint128::add(o01, fstar::uint128::mul_wide(f12, tmp13));
    let o12: fstar::uint128::uint128 =
        fstar::uint128::add(o11, fstar::uint128::mul_wide(f12, tmp14));
    let o22: fstar::uint128::uint128 = fstar::uint128::add(o21, fstar::uint128::mul_wide(f12, f20));
    let o32: fstar::uint128::uint128 = fstar::uint128::add(o31, fstar::uint128::mul_wide(f12, f21));
    let o42: fstar::uint128::uint128 = fstar::uint128::add(o41, fstar::uint128::mul_wide(f12, f22));
    let o03: fstar::uint128::uint128 =
        fstar::uint128::add(o02, fstar::uint128::mul_wide(f13, tmp12));
    let o13: fstar::uint128::uint128 =
        fstar::uint128::add(o12, fstar::uint128::mul_wide(f13, tmp13));
    let o23: fstar::uint128::uint128 =
        fstar::uint128::add(o22, fstar::uint128::mul_wide(f13, tmp14));
    let o33: fstar::uint128::uint128 = fstar::uint128::add(o32, fstar::uint128::mul_wide(f13, f20));
    let o43: fstar::uint128::uint128 = fstar::uint128::add(o42, fstar::uint128::mul_wide(f13, f21));
    let o04: fstar::uint128::uint128 =
        fstar::uint128::add(o03, fstar::uint128::mul_wide(f14, tmp11));
    let o14: fstar::uint128::uint128 =
        fstar::uint128::add(o13, fstar::uint128::mul_wide(f14, tmp12));
    let o24: fstar::uint128::uint128 =
        fstar::uint128::add(o23, fstar::uint128::mul_wide(f14, tmp13));
    let o34: fstar::uint128::uint128 =
        fstar::uint128::add(o33, fstar::uint128::mul_wide(f14, tmp14));
    let o44: fstar::uint128::uint128 = fstar::uint128::add(o43, fstar::uint128::mul_wide(f14, f20));
    let tmp_w10: fstar::uint128::uint128 = o04;
    let tmp_w11: fstar::uint128::uint128 = o14;
    let tmp_w12: fstar::uint128::uint128 = o24;
    let tmp_w13: fstar::uint128::uint128 = o34;
    let tmp_w14: fstar::uint128::uint128 = o44;
    let o00: fstar::uint128::uint128 = fstar::uint128::mul_wide(f30, f40);
    let o10: fstar::uint128::uint128 = fstar::uint128::mul_wide(f30, f41);
    let o20: fstar::uint128::uint128 = fstar::uint128::mul_wide(f30, f42);
    let o30: fstar::uint128::uint128 = fstar::uint128::mul_wide(f30, f43);
    let o40: fstar::uint128::uint128 = fstar::uint128::mul_wide(f30, f44);
    let o010: fstar::uint128::uint128 =
        fstar::uint128::add(o00, fstar::uint128::mul_wide(f31, tmp24));
    let o110: fstar::uint128::uint128 =
        fstar::uint128::add(o10, fstar::uint128::mul_wide(f31, f40));
    let o210: fstar::uint128::uint128 =
        fstar::uint128::add(o20, fstar::uint128::mul_wide(f31, f41));
    let o310: fstar::uint128::uint128 =
        fstar::uint128::add(o30, fstar::uint128::mul_wide(f31, f42));
    let o410: fstar::uint128::uint128 =
        fstar::uint128::add(o40, fstar::uint128::mul_wide(f31, f43));
    let o020: fstar::uint128::uint128 =
        fstar::uint128::add(o010, fstar::uint128::mul_wide(f32, tmp23));
    let o120: fstar::uint128::uint128 =
        fstar::uint128::add(o110, fstar::uint128::mul_wide(f32, tmp24));
    let o220: fstar::uint128::uint128 =
        fstar::uint128::add(o210, fstar::uint128::mul_wide(f32, f40));
    let o320: fstar::uint128::uint128 =
        fstar::uint128::add(o310, fstar::uint128::mul_wide(f32, f41));
    let o420: fstar::uint128::uint128 =
        fstar::uint128::add(o410, fstar::uint128::mul_wide(f32, f42));
    let o030: fstar::uint128::uint128 =
        fstar::uint128::add(o020, fstar::uint128::mul_wide(f33, tmp22));
    let o130: fstar::uint128::uint128 =
        fstar::uint128::add(o120, fstar::uint128::mul_wide(f33, tmp23));
    let o230: fstar::uint128::uint128 =
        fstar::uint128::add(o220, fstar::uint128::mul_wide(f33, tmp24));
    let o330: fstar::uint128::uint128 =
        fstar::uint128::add(o320, fstar::uint128::mul_wide(f33, f40));
    let o430: fstar::uint128::uint128 =
        fstar::uint128::add(o420, fstar::uint128::mul_wide(f33, f41));
    let o040: fstar::uint128::uint128 =
        fstar::uint128::add(o030, fstar::uint128::mul_wide(f34, tmp21));
    let o140: fstar::uint128::uint128 =
        fstar::uint128::add(o130, fstar::uint128::mul_wide(f34, tmp22));
    let o240: fstar::uint128::uint128 =
        fstar::uint128::add(o230, fstar::uint128::mul_wide(f34, tmp23));
    let o340: fstar::uint128::uint128 =
        fstar::uint128::add(o330, fstar::uint128::mul_wide(f34, tmp24));
    let o440: fstar::uint128::uint128 =
        fstar::uint128::add(o430, fstar::uint128::mul_wide(f34, f40));
    let tmp_w20: fstar::uint128::uint128 = o040;
    let tmp_w21: fstar::uint128::uint128 = o140;
    let tmp_w22: fstar::uint128::uint128 = o240;
    let tmp_w23: fstar::uint128::uint128 = o340;
    let tmp_w24: fstar::uint128::uint128 = o440;
    let l·: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w10, fstar::uint128::uint64_to_uint128(0u64));
    let tmp0: u64 = fstar::uint128::uint128_to_uint64(l·) & 0x7ffffffffffffu64;
    let c0: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·, 51u32));
    let l·0: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w11, fstar::uint128::uint64_to_uint128(c0));
    let tmp1: u64 = fstar::uint128::uint128_to_uint64(l·0) & 0x7ffffffffffffu64;
    let c1: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·051u32));
    let l·1: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w12, fstar::uint128::uint64_to_uint128(c1));
    let tmp2: u64 = fstar::uint128::uint128_to_uint64(l·1) & 0x7ffffffffffffu64;
    let c2: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·151u32));
    let l·2: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w13, fstar::uint128::uint64_to_uint128(c2));
    let tmp3: u64 = fstar::uint128::uint128_to_uint64(l·2) & 0x7ffffffffffffu64;
    let c3: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·251u32));
    let l·3: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w14, fstar::uint128::uint64_to_uint128(c3));
    let tmp4: u64 = fstar::uint128::uint128_to_uint64(l·3) & 0x7ffffffffffffu64;
    let c4: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·351u32));
    let l·4: u64 = tmp0.wrapping_add(c4.wrapping_mul(19u64));
    let tmp0·: u64 = l·4 & 0x7ffffffffffffu64;
    let c5: u64 = l·4.wrapping_shr(51u32);
    let o100: u64 = tmp0·;
    let o111: u64 = tmp1.wrapping_add(c5);
    let o121: u64 = tmp2;
    let o131: u64 = tmp3;
    let o141: u64 = tmp4;
    let l·5: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w20, fstar::uint128::uint64_to_uint128(0u64));
    let tmp00: u64 = fstar::uint128::uint128_to_uint64(l·5) & 0x7ffffffffffffu64;
    let c00: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·551u32));
    let l·6: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w21, fstar::uint128::uint64_to_uint128(c00));
    let tmp10: u64 = fstar::uint128::uint128_to_uint64(l·6) & 0x7ffffffffffffu64;
    let c10: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·651u32));
    let l·7: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w22, fstar::uint128::uint64_to_uint128(c10));
    let tmp20: u64 = fstar::uint128::uint128_to_uint64(l·7) & 0x7ffffffffffffu64;
    let c20: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·751u32));
    let l·8: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w23, fstar::uint128::uint64_to_uint128(c20));
    let tmp30: u64 = fstar::uint128::uint128_to_uint64(l·8) & 0x7ffffffffffffu64;
    let c30: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·851u32));
    let l·9: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w24, fstar::uint128::uint64_to_uint128(c30));
    let tmp40: u64 = fstar::uint128::uint128_to_uint64(l·9) & 0x7ffffffffffffu64;
    let c40: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·951u32));
    let l·10: u64 = tmp00.wrapping_add(c40.wrapping_mul(19u64));
    let tmp0·0: u64 = l·10 & 0x7ffffffffffffu64;
    let c50: u64 = l·10.wrapping_shr(51u32);
    let o200: u64 = tmp0·0;
    let o211: u64 = tmp10.wrapping_add(c50);
    let o221: u64 = tmp20;
    let o231: u64 = tmp30;
    let o241: u64 = tmp40;
    let o101: u64 = o100;
    let o112: u64 = o111;
    let o122: u64 = o121;
    let o132: u64 = o131;
    let o142: u64 = o141;
    let o201: u64 = o200;
    let o212: u64 = o211;
    let o222: u64 = o221;
    let o232: u64 = o231;
    let o242: u64 = o241;
    out[0usize] = o101;
    out[1usize] = o112;
    out[2usize] = o122;
    out[3usize] = o132;
    out[4usize] = o142;
    out[5usize] = o201;
    out[6usize] = o212;
    out[7usize] = o222;
    out[8usize] = o232;
    out[9usize] = o242
}

#[inline]
pub fn fmul1(out: &mut [u64], f1: &[u64], f2: u64) {
    let f10: u64 = f1[0usize];
    let f11: u64 = f1[1usize];
    let f12: u64 = f1[2usize];
    let f13: u64 = f1[3usize];
    let f14: u64 = f1[4usize];
    let tmp_w0: fstar::uint128::uint128 = fstar::uint128::mul_wide(f2, f10);
    let tmp_w1: fstar::uint128::uint128 = fstar::uint128::mul_wide(f2, f11);
    let tmp_w2: fstar::uint128::uint128 = fstar::uint128::mul_wide(f2, f12);
    let tmp_w3: fstar::uint128::uint128 = fstar::uint128::mul_wide(f2, f13);
    let tmp_w4: fstar::uint128::uint128 = fstar::uint128::mul_wide(f2, f14);
    let l·: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w0, fstar::uint128::uint64_to_uint128(0u64));
    let tmp0: u64 = fstar::uint128::uint128_to_uint64(l·) & 0x7ffffffffffffu64;
    let c0: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·, 51u32));
    let l·0: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w1, fstar::uint128::uint64_to_uint128(c0));
    let tmp1: u64 = fstar::uint128::uint128_to_uint64(l·0) & 0x7ffffffffffffu64;
    let c1: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·051u32));
    let l·1: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w2, fstar::uint128::uint64_to_uint128(c1));
    let tmp2: u64 = fstar::uint128::uint128_to_uint64(l·1) & 0x7ffffffffffffu64;
    let c2: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·151u32));
    let l·2: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w3, fstar::uint128::uint64_to_uint128(c2));
    let tmp3: u64 = fstar::uint128::uint128_to_uint64(l·2) & 0x7ffffffffffffu64;
    let c3: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·251u32));
    let l·3: fstar::uint128::uint128 =
        fstar::uint128::add(tmp_w4, fstar::uint128::uint64_to_uint128(c3));
    let tmp4: u64 = fstar::uint128::uint128_to_uint64(l·3) & 0x7ffffffffffffu64;
    let c4: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·351u32));
    let l·4: u64 = tmp0.wrapping_add(c4.wrapping_mul(19u64));
    let tmp0·: u64 = l·4 & 0x7ffffffffffffu64;
    let c5: u64 = l·4.wrapping_shr(51u32);
    let o0: u64 = tmp0·;
    let o1: u64 = tmp1.wrapping_add(c5);
    let o2: u64 = tmp2;
    let o3: u64 = tmp3;
    let o4: u64 = tmp4;
    out[0usize] = o0;
    out[1usize] = o1;
    out[2usize] = o2;
    out[3usize] = o3;
    out[4usize] = o4
}

#[inline]
pub fn fsqr(out: &mut [u64], f: &[u64], uu___: &[fstar::uint128::uint128]) {
    lowstar::ignore::ignore::<&[fstar::uint128::uint128]>(uu___);
    let f0: u64 = f[0usize];
    let f1: u64 = f[1usize];
    let f2: u64 = f[2usize];
    let f3: u64 = f[3usize];
    let f4: u64 = f[4usize];
    let d0: u64 = 2u64.wrapping_mul(f0);
    let d1: u64 = 2u64.wrapping_mul(f1);
    let d2: u64 = 38u64.wrapping_mul(f2);
    let d3: u64 = 19u64.wrapping_mul(f3);
    let d419: u64 = 19u64.wrapping_mul(f4);
    let d4: u64 = 2u64.wrapping_mul(d419);
    let s0: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(f0, f0),
            fstar::uint128::mul_wide(d4, f1),
        ),
        fstar::uint128::mul_wide(d2, f3),
    );
    let s1: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(d0, f1),
            fstar::uint128::mul_wide(d4, f2),
        ),
        fstar::uint128::mul_wide(d3, f3),
    );
    let s2: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(d0, f2),
            fstar::uint128::mul_wide(f1, f1),
        ),
        fstar::uint128::mul_wide(d4, f3),
    );
    let s3: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(d0, f3),
            fstar::uint128::mul_wide(d1, f2),
        ),
        fstar::uint128::mul_wide(f4, d419),
    );
    let s4: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(d0, f4),
            fstar::uint128::mul_wide(d1, f3),
        ),
        fstar::uint128::mul_wide(f2, f2),
    );
    let o0: fstar::uint128::uint128 = s0;
    let o1: fstar::uint128::uint128 = s1;
    let o2: fstar::uint128::uint128 = s2;
    let o3: fstar::uint128::uint128 = s3;
    let o4: fstar::uint128::uint128 = s4;
    let l·: fstar::uint128::uint128 =
        fstar::uint128::add(o0, fstar::uint128::uint64_to_uint128(0u64));
    let tmp0: u64 = fstar::uint128::uint128_to_uint64(l·) & 0x7ffffffffffffu64;
    let c0: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·, 51u32));
    let l·0: fstar::uint128::uint128 =
        fstar::uint128::add(o1, fstar::uint128::uint64_to_uint128(c0));
    let tmp1: u64 = fstar::uint128::uint128_to_uint64(l·0) & 0x7ffffffffffffu64;
    let c1: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·051u32));
    let l·1: fstar::uint128::uint128 =
        fstar::uint128::add(o2, fstar::uint128::uint64_to_uint128(c1));
    let tmp2: u64 = fstar::uint128::uint128_to_uint64(l·1) & 0x7ffffffffffffu64;
    let c2: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·151u32));
    let l·2: fstar::uint128::uint128 =
        fstar::uint128::add(o3, fstar::uint128::uint64_to_uint128(c2));
    let tmp3: u64 = fstar::uint128::uint128_to_uint64(l·2) & 0x7ffffffffffffu64;
    let c3: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·251u32));
    let l·3: fstar::uint128::uint128 =
        fstar::uint128::add(o4, fstar::uint128::uint64_to_uint128(c3));
    let tmp4: u64 = fstar::uint128::uint128_to_uint64(l·3) & 0x7ffffffffffffu64;
    let c4: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·351u32));
    let l·4: u64 = tmp0.wrapping_add(c4.wrapping_mul(19u64));
    let tmp0·: u64 = l·4 & 0x7ffffffffffffu64;
    let c5: u64 = l·4.wrapping_shr(51u32);
    let o00: u64 = tmp0·;
    let o10: u64 = tmp1.wrapping_add(c5);
    let o20: u64 = tmp2;
    let o30: u64 = tmp3;
    let o40: u64 = tmp4;
    out[0usize] = o00;
    out[1usize] = o10;
    out[2usize] = o20;
    out[3usize] = o30;
    out[4usize] = o40
}

#[inline]
pub fn fsqr2(out: &mut [u64], f: &[u64], uu___: &[fstar::uint128::uint128]) {
    lowstar::ignore::ignore::<&[fstar::uint128::uint128]>(uu___);
    let f10: u64 = f[0usize];
    let f11: u64 = f[1usize];
    let f12: u64 = f[2usize];
    let f13: u64 = f[3usize];
    let f14: u64 = f[4usize];
    let f20: u64 = f[5usize];
    let f21: u64 = f[6usize];
    let f22: u64 = f[7usize];
    let f23: u64 = f[8usize];
    let f24: u64 = f[9usize];
    let d0: u64 = 2u64.wrapping_mul(f10);
    let d1: u64 = 2u64.wrapping_mul(f11);
    let d2: u64 = 38u64.wrapping_mul(f12);
    let d3: u64 = 19u64.wrapping_mul(f13);
    let d419: u64 = 19u64.wrapping_mul(f14);
    let d4: u64 = 2u64.wrapping_mul(d419);
    let s0: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(f10, f10),
            fstar::uint128::mul_wide(d4, f11),
        ),
        fstar::uint128::mul_wide(d2, f13),
    );
    let s1: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(d0, f11),
            fstar::uint128::mul_wide(d4, f12),
        ),
        fstar::uint128::mul_wide(d3, f13),
    );
    let s2: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(d0, f12),
            fstar::uint128::mul_wide(f11, f11),
        ),
        fstar::uint128::mul_wide(d4, f13),
    );
    let s3: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(d0, f13),
            fstar::uint128::mul_wide(d1, f12),
        ),
        fstar::uint128::mul_wide(f14, d419),
    );
    let s4: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(d0, f14),
            fstar::uint128::mul_wide(d1, f13),
        ),
        fstar::uint128::mul_wide(f12, f12),
    );
    let o10: fstar::uint128::uint128 = s0;
    let o11: fstar::uint128::uint128 = s1;
    let o12: fstar::uint128::uint128 = s2;
    let o13: fstar::uint128::uint128 = s3;
    let o14: fstar::uint128::uint128 = s4;
    let d00: u64 = 2u64.wrapping_mul(f20);
    let d10: u64 = 2u64.wrapping_mul(f21);
    let d20: u64 = 38u64.wrapping_mul(f22);
    let d30: u64 = 19u64.wrapping_mul(f23);
    let d4190: u64 = 19u64.wrapping_mul(f24);
    let d40: u64 = 2u64.wrapping_mul(d4190);
    let s00: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(f20, f20),
            fstar::uint128::mul_wide(d40, f21),
        ),
        fstar::uint128::mul_wide(d20, f23),
    );
    let s10: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(d00, f21),
            fstar::uint128::mul_wide(d40, f22),
        ),
        fstar::uint128::mul_wide(d30, f23),
    );
    let s20: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(d00, f22),
            fstar::uint128::mul_wide(f21, f21),
        ),
        fstar::uint128::mul_wide(d40, f23),
    );
    let s30: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(d00, f23),
            fstar::uint128::mul_wide(d10, f22),
        ),
        fstar::uint128::mul_wide(f24, d4190),
    );
    let s40: fstar::uint128::uint128 = fstar::uint128::add(
        fstar::uint128::add(
            fstar::uint128::mul_wide(d00, f24),
            fstar::uint128::mul_wide(d10, f23),
        ),
        fstar::uint128::mul_wide(f22, f22),
    );
    let o20: fstar::uint128::uint128 = s00;
    let o21: fstar::uint128::uint128 = s10;
    let o22: fstar::uint128::uint128 = s20;
    let o23: fstar::uint128::uint128 = s30;
    let o24: fstar::uint128::uint128 = s40;
    let l·: fstar::uint128::uint128 =
        fstar::uint128::add(o10, fstar::uint128::uint64_to_uint128(0u64));
    let tmp0: u64 = fstar::uint128::uint128_to_uint64(l·) & 0x7ffffffffffffu64;
    let c0: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·, 51u32));
    let l·0: fstar::uint128::uint128 =
        fstar::uint128::add(o11, fstar::uint128::uint64_to_uint128(c0));
    let tmp1: u64 = fstar::uint128::uint128_to_uint64(l·0) & 0x7ffffffffffffu64;
    let c1: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·051u32));
    let l·1: fstar::uint128::uint128 =
        fstar::uint128::add(o12, fstar::uint128::uint64_to_uint128(c1));
    let tmp2: u64 = fstar::uint128::uint128_to_uint64(l·1) & 0x7ffffffffffffu64;
    let c2: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·151u32));
    let l·2: fstar::uint128::uint128 =
        fstar::uint128::add(o13, fstar::uint128::uint64_to_uint128(c2));
    let tmp3: u64 = fstar::uint128::uint128_to_uint64(l·2) & 0x7ffffffffffffu64;
    let c3: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·251u32));
    let l·3: fstar::uint128::uint128 =
        fstar::uint128::add(o14, fstar::uint128::uint64_to_uint128(c3));
    let tmp4: u64 = fstar::uint128::uint128_to_uint64(l·3) & 0x7ffffffffffffu64;
    let c4: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·351u32));
    let l·4: u64 = tmp0.wrapping_add(c4.wrapping_mul(19u64));
    let tmp0·: u64 = l·4 & 0x7ffffffffffffu64;
    let c5: u64 = l·4.wrapping_shr(51u32);
    let o101: u64 = tmp0·;
    let o111: u64 = tmp1.wrapping_add(c5);
    let o121: u64 = tmp2;
    let o131: u64 = tmp3;
    let o141: u64 = tmp4;
    let l·5: fstar::uint128::uint128 =
        fstar::uint128::add(o20, fstar::uint128::uint64_to_uint128(0u64));
    let tmp00: u64 = fstar::uint128::uint128_to_uint64(l·5) & 0x7ffffffffffffu64;
    let c00: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·551u32));
    let l·6: fstar::uint128::uint128 =
        fstar::uint128::add(o21, fstar::uint128::uint64_to_uint128(c00));
    let tmp10: u64 = fstar::uint128::uint128_to_uint64(l·6) & 0x7ffffffffffffu64;
    let c10: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·651u32));
    let l·7: fstar::uint128::uint128 =
        fstar::uint128::add(o22, fstar::uint128::uint64_to_uint128(c10));
    let tmp20: u64 = fstar::uint128::uint128_to_uint64(l·7) & 0x7ffffffffffffu64;
    let c20: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·751u32));
    let l·8: fstar::uint128::uint128 =
        fstar::uint128::add(o23, fstar::uint128::uint64_to_uint128(c20));
    let tmp30: u64 = fstar::uint128::uint128_to_uint64(l·8) & 0x7ffffffffffffu64;
    let c30: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·851u32));
    let l·9: fstar::uint128::uint128 =
        fstar::uint128::add(o24, fstar::uint128::uint64_to_uint128(c30));
    let tmp40: u64 = fstar::uint128::uint128_to_uint64(l·9) & 0x7ffffffffffffu64;
    let c40: u64 = fstar::uint128::uint128_to_uint64(fstar::uint128::shift_right(l·951u32));
    let l·10: u64 = tmp00.wrapping_add(c40.wrapping_mul(19u64));
    let tmp0·0: u64 = l·10 & 0x7ffffffffffffu64;
    let c50: u64 = l·10.wrapping_shr(51u32);
    let o201: u64 = tmp0·0;
    let o211: u64 = tmp10.wrapping_add(c50);
    let o221: u64 = tmp20;
    let o231: u64 = tmp30;
    let o241: u64 = tmp40;
    let o100: u64 = o101;
    let o110: u64 = o111;
    let o120: u64 = o121;
    let o130: u64 = o131;
    let o140: u64 = o141;
    let o200: u64 = o201;
    let o210: u64 = o211;
    let o220: u64 = o221;
    let o230: u64 = o231;
    let o240: u64 = o241;
    out[0usize] = o100;
    out[1usize] = o110;
    out[2usize] = o120;
    out[3usize] = o130;
    out[4usize] = o140;
    out[5usize] = o200;
    out[6usize] = o210;
    out[7usize] = o220;
    out[8usize] = o230;
    out[9usize] = o240
}

pub fn store_felem(u64s: &mut [u64], f: &[u64]) {
    let f0: u64 = f[0usize];
    let f1: u64 = f[1usize];
    let f2: u64 = f[2usize];
    let f3: u64 = f[3usize];
    let f4: u64 = f[4usize];
    let l·: u64 = f0.wrapping_add(0u64);
    let tmp0: u64 = l· & 0x7ffffffffffffu64;
    let c0: u64 = l·.wrapping_shr(51u32);
    let l·0: u64 = f1.wrapping_add(c0);
    let tmp1: u64 = l·0 & 0x7ffffffffffffu64;
    let c1: u64 = l·0.wrapping_shr(51u32);
    let l·1: u64 = f2.wrapping_add(c1);
    let tmp2: u64 = l·1 & 0x7ffffffffffffu64;
    let c2: u64 = l·1.wrapping_shr(51u32);
    let l·2: u64 = f3.wrapping_add(c2);
    let tmp3: u64 = l·2 & 0x7ffffffffffffu64;
    let c3: u64 = l·2.wrapping_shr(51u32);
    let l·3: u64 = f4.wrapping_add(c3);
    let tmp4: u64 = l·3 & 0x7ffffffffffffu64;
    let c4: u64 = l·3.wrapping_shr(51u32);
    let l·4: u64 = tmp0.wrapping_add(c4.wrapping_mul(19u64));
    let tmp0·: u64 = l·4 & 0x7ffffffffffffu64;
    let c5: u64 = l·4.wrapping_shr(51u32);
    let f01: u64 = tmp0·;
    let f11: u64 = tmp1.wrapping_add(c5);
    let f21: u64 = tmp2;
    let f31: u64 = tmp3;
    let f41: u64 = tmp4;
    let m0: u64 = fstar::uint64::gte_mask(f01, 0x7ffffffffffedu64);
    let m1: u64 = fstar::uint64::eq_mask(f11, 0x7ffffffffffffu64);
    let m2: u64 = fstar::uint64::eq_mask(f21, 0x7ffffffffffffu64);
    let m3: u64 = fstar::uint64::eq_mask(f31, 0x7ffffffffffffu64);
    let m4: u64 = fstar::uint64::eq_mask(f41, 0x7ffffffffffffu64);
    let mask: u64 = m0 & m1 & m2 & m3 & m4;
    let f0·: u64 = f01.wrapping_sub(mask & 0x7ffffffffffedu64);
    let f1·: u64 = f11.wrapping_sub(mask & 0x7ffffffffffffu64);
    let f2·: u64 = f21.wrapping_sub(mask & 0x7ffffffffffffu64);
    let f3·: u64 = f31.wrapping_sub(mask & 0x7ffffffffffffu64);
    let f4·: u64 = f41.wrapping_sub(mask & 0x7ffffffffffffu64);
    let f02: u64 = f0·;
    let f12: u64 = f1·;
    let f22: u64 = f2·;
    let f32: u64 = f3·;
    let f42: u64 = f4·;
    let o0: u64 = f02 | f12.wrapping_shl(51u32);
    let o1: u64 = f12.wrapping_shr(13u32) | f22.wrapping_shl(38u32);
    let o2: u64 = f22.wrapping_shr(26u32) | f32.wrapping_shl(25u32);
    let o3: u64 = f32.wrapping_shr(39u32) | f42.wrapping_shl(12u32);
    let o00: u64 = o0;
    let o10: u64 = o1;
    let o20: u64 = o2;
    let o30: u64 = o3;
    u64s[0usize] = o00;
    u64s[1usize] = o10;
    u64s[2usize] = o20;
    u64s[3usize] = o30
}

#[inline]
pub fn cswap2(bit: u64, p1: &mut [u64], p2: &>mut [u64]) {
    let mask: u64 = 0u64.wrapping_sub(bit);
    krml::unroll_for!(10"i"0u32, 1u32, {
        let dummy: u64 = mask & (p1[i as usize] ^ p2[i as usize]);
        p1[i as usize] ^= dummy;
        p2[i as usize] ^= dummy
    })
}

Messung V0.5 in Prozent
C=89 H=100 G=94

¤ Dauer der Verarbeitung: 0.17 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.