authorgravatar for samy2014@free.frsamy007 <samy2014@free.fr> 2025-04-13 21:07:11+02:00
committergravatar for samy2014@free.frsamy007 <samy2014@free.fr> 2025-04-13 21:07:11+02:00
logb635b372498f553dfea16d846fec7c9332c3a61b
tree62d51076ea5e72963327968462b3bf6e49f2aca9
parent4e700fdf8ed01e7fc856e631ceffd6006e6f48df

std.math.big.int: remove setRuntimeSafety


1 files changed, 0 insertions(+), 22 deletions(-)

lib/std/math/big/int.zig-22
...@@ -17,7 +17,6 @@ const Endian = std.builtin.Endian;...@@ -17,7 +17,6 @@ const Endian = std.builtin.Endian;
17const Signedness = std.builtin.Signedness;17const Signedness = std.builtin.Signedness;
18const native_endian = builtin.cpu.arch.endian();18const native_endian = builtin.cpu.arch.endian();
1919
20const debug_safety = false;
2120
22/// Returns the number of limbs needed to store `scalar`, which must be a21/// Returns the number of limbs needed to store `scalar`, which must be a
23/// primitive integer value.22/// primitive integer value.
...@@ -92,8 +91,6 @@ pub fn calcTwosCompLimbCount(bit_count: usize) usize {...@@ -92,8 +91,6 @@ pub fn calcTwosCompLimbCount(bit_count: usize) usize {
9291
93/// a + b * c + *carry, sets carry to the overflow bits92/// a + b * c + *carry, sets carry to the overflow bits
94pub fn addMulLimbWithCarry(a: Limb, b: Limb, c: Limb, carry: *Limb) Limb {93pub fn addMulLimbWithCarry(a: Limb, b: Limb, c: Limb, carry: *Limb) Limb {
95 @setRuntimeSafety(debug_safety);
96
97 // ov1[0] = a + *carry94 // ov1[0] = a + *carry
98 const ov1 = @addWithOverflow(a, carry.*);95 const ov1 = @addWithOverflow(a, carry.*);
9996
...@@ -3277,7 +3274,6 @@ const AccOp = enum {...@@ -3277,7 +3274,6 @@ const AccOp = enum {
3277///3274///
3278/// The result is computed modulo `r.len`. When `r.len >= a.len + b.len`, no overflow occurs.3275/// The result is computed modulo `r.len`. When `r.len >= a.len + b.len`, no overflow occurs.
3279fn llmulacc(comptime op: AccOp, opt_allocator: ?Allocator, r: []Limb, a: []const Limb, b: []const Limb) void {3276fn llmulacc(comptime op: AccOp, opt_allocator: ?Allocator, r: []Limb, a: []const Limb, b: []const Limb) void {
3280 @setRuntimeSafety(debug_safety);
3281 assert(r.len >= a.len);3277 assert(r.len >= a.len);
3282 assert(r.len >= b.len);3278 assert(r.len >= b.len);
32833279
...@@ -3316,7 +3312,6 @@ fn llmulaccKaratsuba(...@@ -3316,7 +3312,6 @@ fn llmulaccKaratsuba(
3316 a: []const Limb,3312 a: []const Limb,
3317 b: []const Limb,3313 b: []const Limb,
3318) error{OutOfMemory}!void {3314) error{OutOfMemory}!void {
3319 @setRuntimeSafety(debug_safety);
3320 assert(r.len >= a.len);3315 assert(r.len >= a.len);
3321 assert(a.len >= b.len);3316 assert(a.len >= b.len);
33223317
...@@ -3479,7 +3474,6 @@ fn llmulaccKaratsuba(...@@ -3479,7 +3474,6 @@ fn llmulaccKaratsuba(
3479/// r = r (op) a.3474/// r = r (op) a.
3480/// The result is computed modulo `r.len`.3475/// The result is computed modulo `r.len`.
3481fn llaccum(comptime op: AccOp, r: []Limb, a: []const Limb) void {3476fn llaccum(comptime op: AccOp, r: []Limb, a: []const Limb) void {
3482 @setRuntimeSafety(debug_safety);
3483 if (op == .sub) {3477 if (op == .sub) {
3484 _ = llsubcarry(r, r, a);3478 _ = llsubcarry(r, r, a);
3485 return;3479 return;
...@@ -3508,7 +3502,6 @@ fn llaccum(comptime op: AccOp, r: []Limb, a: []const Limb) void {...@@ -3508,7 +3502,6 @@ fn llaccum(comptime op: AccOp, r: []Limb, a: []const Limb) void {
35083502
3509/// Returns -1, 0, 1 if |a| < |b|, |a| == |b| or |a| > |b| respectively for limbs.3503/// Returns -1, 0, 1 if |a| < |b|, |a| == |b| or |a| > |b| respectively for limbs.
3510pub fn llcmp(a: []const Limb, b: []const Limb) i8 {3504pub fn llcmp(a: []const Limb, b: []const Limb) i8 {
3511 @setRuntimeSafety(debug_safety);
3512 const a_len = llnormalize(a);3505 const a_len = llnormalize(a);
3513 const b_len = llnormalize(b);3506 const b_len = llnormalize(b);
3514 if (a_len < b_len) {3507 if (a_len < b_len) {
...@@ -3537,7 +3530,6 @@ pub fn llcmp(a: []const Limb, b: []const Limb) i8 {...@@ -3537,7 +3530,6 @@ pub fn llcmp(a: []const Limb, b: []const Limb) i8 {
3537/// r = r (op) y * xi3530/// r = r (op) y * xi
3538/// The result is computed modulo `r.len`. When `r.len >= a.len + b.len`, no overflow occurs.3531/// The result is computed modulo `r.len`. When `r.len >= a.len + b.len`, no overflow occurs.
3539fn llmulaccLong(comptime op: AccOp, r: []Limb, a: []const Limb, b: []const Limb) void {3532fn llmulaccLong(comptime op: AccOp, r: []Limb, a: []const Limb, b: []const Limb) void {
3540 @setRuntimeSafety(debug_safety);
3541 assert(r.len >= a.len);3533 assert(r.len >= a.len);
3542 assert(a.len >= b.len);3534 assert(a.len >= b.len);
35433535
...@@ -3551,7 +3543,6 @@ fn llmulaccLong(comptime op: AccOp, r: []Limb, a: []const Limb, b: []const Limb)...@@ -3551,7 +3543,6 @@ fn llmulaccLong(comptime op: AccOp, r: []Limb, a: []const Limb, b: []const Limb)
3551/// The result is computed modulo `r.len`.3543/// The result is computed modulo `r.len`.
3552/// Returns whether the operation overflowed.3544/// Returns whether the operation overflowed.
3553fn llmulLimb(comptime op: AccOp, acc: []Limb, y: []const Limb, xi: Limb) bool {3545fn llmulLimb(comptime op: AccOp, acc: []Limb, y: []const Limb, xi: Limb) bool {
3554 @setRuntimeSafety(debug_safety);
3555 if (xi == 0) {3546 if (xi == 0) {
3556 return false;3547 return false;
3557 }3548 }
...@@ -3598,7 +3589,6 @@ fn llmulLimb(comptime op: AccOp, acc: []Limb, y: []const Limb, xi: Limb) bool {...@@ -3598,7 +3589,6 @@ fn llmulLimb(comptime op: AccOp, acc: []Limb, y: []const Limb, xi: Limb) bool {
35983589
3599/// returns the min length the limb could be.3590/// returns the min length the limb could be.
3600fn llnormalize(a: []const Limb) usize {3591fn llnormalize(a: []const Limb) usize {
3601 @setRuntimeSafety(debug_safety);
3602 var j = a.len;3592 var j = a.len;
3603 while (j > 0) : (j -= 1) {3593 while (j > 0) : (j -= 1) {
3604 if (a[j - 1] != 0) {3594 if (a[j - 1] != 0) {
...@@ -3612,7 +3602,6 @@ fn llnormalize(a: []const Limb) usize {...@@ -3612,7 +3602,6 @@ fn llnormalize(a: []const Limb) usize {
36123602
3613/// Knuth 4.3.1, Algorithm S.3603/// Knuth 4.3.1, Algorithm S.
3614fn llsubcarry(r: []Limb, a: []const Limb, b: []const Limb) Limb {3604fn llsubcarry(r: []Limb, a: []const Limb, b: []const Limb) Limb {
3615 @setRuntimeSafety(debug_safety);
3616 assert(a.len != 0 and b.len != 0);3605 assert(a.len != 0 and b.len != 0);
3617 assert(a.len >= b.len);3606 assert(a.len >= b.len);
3618 assert(r.len >= a.len);3607 assert(r.len >= a.len);
...@@ -3638,14 +3627,12 @@ fn llsubcarry(r: []Limb, a: []const Limb, b: []const Limb) Limb {...@@ -3638,14 +3627,12 @@ fn llsubcarry(r: []Limb, a: []const Limb, b: []const Limb) Limb {
3638}3627}
36393628
3640fn llsub(r: []Limb, a: []const Limb, b: []const Limb) void {3629fn llsub(r: []Limb, a: []const Limb, b: []const Limb) void {
3641 @setRuntimeSafety(debug_safety);
3642 assert(a.len > b.len or (a.len == b.len and a[a.len - 1] >= b[b.len - 1]));3630 assert(a.len > b.len or (a.len == b.len and a[a.len - 1] >= b[b.len - 1]));
3643 assert(llsubcarry(r, a, b) == 0);3631 assert(llsubcarry(r, a, b) == 0);
3644}3632}
36453633
3646/// Knuth 4.3.1, Algorithm A.3634/// Knuth 4.3.1, Algorithm A.
3647fn lladdcarry(r: []Limb, a: []const Limb, b: []const Limb) Limb {3635fn lladdcarry(r: []Limb, a: []const Limb, b: []const Limb) Limb {
3648 @setRuntimeSafety(debug_safety);
3649 assert(a.len != 0 and b.len != 0);3636 assert(a.len != 0 and b.len != 0);
3650 assert(a.len >= b.len);3637 assert(a.len >= b.len);
3651 assert(r.len >= a.len);3638 assert(r.len >= a.len);
...@@ -3671,14 +3658,12 @@ fn lladdcarry(r: []Limb, a: []const Limb, b: []const Limb) Limb {...@@ -3671,14 +3658,12 @@ fn lladdcarry(r: []Limb, a: []const Limb, b: []const Limb) Limb {
3671}3658}
36723659
3673fn lladd(r: []Limb, a: []const Limb, b: []const Limb) void {3660fn lladd(r: []Limb, a: []const Limb, b: []const Limb) void {
3674 @setRuntimeSafety(debug_safety);
3675 assert(r.len >= a.len + 1);3661 assert(r.len >= a.len + 1);
3676 r[a.len] = lladdcarry(r, a, b);3662 r[a.len] = lladdcarry(r, a, b);
3677}3663}
36783664
3679/// Knuth 4.3.1, Exercise 16.3665/// Knuth 4.3.1, Exercise 16.
3680fn lldiv1(quo: []Limb, rem: *Limb, a: []const Limb, b: Limb) void {3666fn lldiv1(quo: []Limb, rem: *Limb, a: []const Limb, b: Limb) void {
3681 @setRuntimeSafety(debug_safety);
3682 assert(a.len > 1 or a[0] >= b);3667 assert(a.len > 1 or a[0] >= b);
3683 assert(quo.len >= a.len);3668 assert(quo.len >= a.len);
36843669
...@@ -3704,7 +3689,6 @@ fn lldiv1(quo: []Limb, rem: *Limb, a: []const Limb, b: Limb) void {...@@ -3704,7 +3689,6 @@ fn lldiv1(quo: []Limb, rem: *Limb, a: []const Limb, b: Limb) void {
3704}3689}
37053690
3706fn lldiv0p5(quo: []Limb, rem: *Limb, a: []const Limb, b: HalfLimb) void {3691fn lldiv0p5(quo: []Limb, rem: *Limb, a: []const Limb, b: HalfLimb) void {
3707 @setRuntimeSafety(debug_safety);
3708 assert(a.len > 1 or a[0] >= b);3692 assert(a.len > 1 or a[0] >= b);
3709 assert(quo.len >= a.len);3693 assert(quo.len >= a.len);
37103694
...@@ -3788,7 +3772,6 @@ fn llshr(r: []Limb, a: []const Limb, shift: usize) void {...@@ -3788,7 +3772,6 @@ fn llshr(r: []Limb, a: []const Limb, shift: usize) void {
37883772
3789// r = ~r3773// r = ~r
3790fn llnot(r: []Limb) void {3774fn llnot(r: []Limb) void {
3791 @setRuntimeSafety(debug_safety);
37923775
3793 for (r) |*elem| {3776 for (r) |*elem| {
3794 elem.* = ~elem.*;3777 elem.* = ~elem.*;
...@@ -3802,7 +3785,6 @@ fn llnot(r: []Limb) void {...@@ -3802,7 +3785,6 @@ fn llnot(r: []Limb) void {
3802// When b is positive, r requires at least `a.len` limbs of storage.3785// When b is positive, r requires at least `a.len` limbs of storage.
3803// When b is negative, r requires at least `b.len` limbs of storage.3786// When b is negative, r requires at least `b.len` limbs of storage.
3804fn llsignedor(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_positive: bool) bool {3787fn llsignedor(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_positive: bool) bool {
3805 @setRuntimeSafety(debug_safety);
3806 assert(r.len >= a.len);3788 assert(r.len >= a.len);
3807 assert(a.len >= b.len);3789 assert(a.len >= b.len);
38083790
...@@ -3933,7 +3915,6 @@ fn llsignedor(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_p...@@ -3933,7 +3915,6 @@ fn llsignedor(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_p
3933// 2. when b is negative but a is positive, r requires at least `a.len` limbs of storage,3915// 2. when b is negative but a is positive, r requires at least `a.len` limbs of storage,
3934// 3. when both a and b are negative, r requires at least `a.len + 1` limbs of storage.3916// 3. when both a and b are negative, r requires at least `a.len + 1` limbs of storage.
3935fn llsignedand(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_positive: bool) bool {3917fn llsignedand(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_positive: bool) bool {
3936 @setRuntimeSafety(debug_safety);
3937 assert(a.len != 0 and b.len != 0);3918 assert(a.len != 0 and b.len != 0);
3938 assert(a.len >= b.len);3919 assert(a.len >= b.len);
3939 assert(r.len >= if (b_positive) b.len else if (a_positive) a.len else a.len + 1);3920 assert(r.len >= if (b_positive) b.len else if (a_positive) a.len else a.len + 1);
...@@ -4043,7 +4024,6 @@ fn llsignedand(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_...@@ -4043,7 +4024,6 @@ fn llsignedand(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_
4043// If the sign of a and b is equal, then r requires at least `@max(a.len, b.len)` limbs are required.4024// If the sign of a and b is equal, then r requires at least `@max(a.len, b.len)` limbs are required.
4044// Otherwise, r requires at least `@max(a.len, b.len) + 1` limbs.4025// Otherwise, r requires at least `@max(a.len, b.len) + 1` limbs.
4045fn llsignedxor(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_positive: bool) bool {4026fn llsignedxor(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_positive: bool) bool {
4046 @setRuntimeSafety(debug_safety);
4047 assert(a.len != 0 and b.len != 0);4027 assert(a.len != 0 and b.len != 0);
4048 assert(r.len >= a.len);4028 assert(r.len >= a.len);
4049 assert(a.len >= b.len);4029 assert(a.len >= b.len);
...@@ -4102,8 +4082,6 @@ fn llsignedxor(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_...@@ -4102,8 +4082,6 @@ fn llsignedxor(r: []Limb, a: []const Limb, a_positive: bool, b: []const Limb, b_
41024082
4103/// r MUST NOT alias x.4083/// r MUST NOT alias x.
4104fn llsquareBasecase(r: []Limb, x: []const Limb) void {4084fn llsquareBasecase(r: []Limb, x: []const Limb) void {
4105 @setRuntimeSafety(debug_safety);
4106
4107 const x_norm = x;4085 const x_norm = x;
4108 assert(r.len >= 2 * x_norm.len + 1);4086 assert(r.len >= 2 * x_norm.len + 1);
41094087