mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
math: move the math.mathutil generic min/max/abs fns to math (#13042)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
module big
|
||||
|
||||
import math.util
|
||||
import math
|
||||
|
||||
// Compares the magnitude of the two unsigned integers represented the given
|
||||
// digit arrays. Returns -1 if a < b, 0 if a == b and +1 if a > b. Here
|
||||
@@ -40,8 +40,8 @@ fn add_digit_array(operand_a []u32, operand_b []u32, mut sum []u32) {
|
||||
}
|
||||
|
||||
// First pass intersects with both operands
|
||||
smaller_limit := util.imin(operand_a.len, operand_b.len)
|
||||
larger_limit := util.imax(operand_a.len, operand_b.len)
|
||||
smaller_limit := math.min(operand_a.len, operand_b.len)
|
||||
larger_limit := math.max(operand_a.len, operand_b.len)
|
||||
mut a, mut b := if operand_a.len >= operand_b.len {
|
||||
operand_a, operand_b
|
||||
} else {
|
||||
@@ -316,7 +316,7 @@ fn bitwise_or_digit_array(operand_a []u32, operand_b []u32, mut storage []u32) {
|
||||
}
|
||||
|
||||
fn bitwise_and_digit_array(operand_a []u32, operand_b []u32, mut storage []u32) {
|
||||
lower := util.imin(operand_a.len, operand_b.len)
|
||||
lower := math.min(operand_a.len, operand_b.len)
|
||||
for index in 0 .. lower {
|
||||
storage[index] = operand_a[index] & operand_b[index]
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module big
|
||||
|
||||
import math.util
|
||||
import math
|
||||
import math.bits
|
||||
import strings
|
||||
import strconv
|
||||
@@ -37,7 +37,7 @@ pub fn integer_from_int(value int) Integer {
|
||||
return zero_int
|
||||
}
|
||||
return Integer{
|
||||
digits: [u32(util.iabs(value))]
|
||||
digits: [u32(math.abs(value))]
|
||||
signum: int_signum(value)
|
||||
}
|
||||
}
|
||||
@@ -295,7 +295,7 @@ pub fn (integer Integer) - (subtrahend Integer) Integer {
|
||||
fn (integer Integer) add(addend Integer) Integer {
|
||||
a := integer.digits
|
||||
b := addend.digits
|
||||
mut storage := []u32{len: util.imax(a.len, b.len) + 1}
|
||||
mut storage := []u32{len: math.max(a.len, b.len) + 1}
|
||||
add_digit_array(a, b, mut storage)
|
||||
return Integer{
|
||||
...integer
|
||||
@@ -468,7 +468,7 @@ fn check_sign(a Integer) {
|
||||
pub fn (a Integer) bitwise_or(b Integer) Integer {
|
||||
check_sign(a)
|
||||
check_sign(b)
|
||||
mut result := []u32{len: util.imax(a.digits.len, b.digits.len), init: 0}
|
||||
mut result := []u32{len: math.max(a.digits.len, b.digits.len), init: 0}
|
||||
bitwise_or_digit_array(a.digits, b.digits, mut result)
|
||||
return Integer{
|
||||
digits: result
|
||||
@@ -479,7 +479,7 @@ pub fn (a Integer) bitwise_or(b Integer) Integer {
|
||||
pub fn (a Integer) bitwise_and(b Integer) Integer {
|
||||
check_sign(a)
|
||||
check_sign(b)
|
||||
mut result := []u32{len: util.imax(a.digits.len, b.digits.len), init: 0}
|
||||
mut result := []u32{len: math.max(a.digits.len, b.digits.len), init: 0}
|
||||
bitwise_and_digit_array(a.digits, b.digits, mut result)
|
||||
return Integer{
|
||||
digits: result
|
||||
@@ -500,7 +500,7 @@ pub fn (a Integer) bitwise_not() Integer {
|
||||
pub fn (a Integer) bitwise_xor(b Integer) Integer {
|
||||
check_sign(a)
|
||||
check_sign(b)
|
||||
mut result := []u32{len: util.imax(a.digits.len, b.digits.len), init: 0}
|
||||
mut result := []u32{len: math.max(a.digits.len, b.digits.len), init: 0}
|
||||
bitwise_xor_digit_array(a.digits, b.digits, mut result)
|
||||
return Integer{
|
||||
digits: result
|
||||
@@ -817,7 +817,7 @@ pub fn (x Integer) gcd_binary(y Integer) Integer {
|
||||
|
||||
mut az := a.msb()
|
||||
bz := b.msb()
|
||||
shift := util.umin(az, bz)
|
||||
shift := math.min(az, bz)
|
||||
b = b.rshift(bz)
|
||||
|
||||
for a.signum != 0 {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
module big
|
||||
|
||||
import math
|
||||
import math.bits
|
||||
import math.util
|
||||
import strings
|
||||
|
||||
// suppose operand_a bigger than operand_b and both not null.
|
||||
@@ -96,7 +96,7 @@ fn karatsuba_multiply_digit_array(operand_a []u32, operand_b []u32, mut storage
|
||||
}
|
||||
// karatsuba
|
||||
// thanks to the base cases we can pass zero-length arrays to the mult func
|
||||
half := util.imax(operand_a.len, operand_b.len) / 2
|
||||
half := math.max(operand_a.len, operand_b.len) / 2
|
||||
if half <= 0 {
|
||||
panic('Unreachable. Both array have 1 length and multiply_array_by_digit should have been called')
|
||||
}
|
||||
@@ -118,8 +118,8 @@ fn karatsuba_multiply_digit_array(operand_a []u32, operand_b []u32, mut storage
|
||||
mut p_3 := []u32{len: a_l.len + b_l.len + 1, init: 0}
|
||||
multiply_digit_array(a_l, b_l, mut p_3)
|
||||
|
||||
mut tmp_1 := []u32{len: util.imax(a_h.len, a_l.len) + 1, init: 0}
|
||||
mut tmp_2 := []u32{len: util.imax(b_h.len, b_l.len) + 1, init: 0}
|
||||
mut tmp_1 := []u32{len: math.max(a_h.len, a_l.len) + 1, init: 0}
|
||||
mut tmp_2 := []u32{len: math.max(b_h.len, b_l.len) + 1, init: 0}
|
||||
add_digit_array(a_h, a_l, mut tmp_1)
|
||||
add_digit_array(b_h, b_l, mut tmp_2)
|
||||
|
||||
@@ -170,8 +170,8 @@ fn lshift_byte_in_place(mut a []u32, byte_nb int) {
|
||||
fn add_in_place(mut a []u32, b []u32) {
|
||||
len_a := a.len
|
||||
len_b := b.len
|
||||
max := util.imax(len_a, len_b)
|
||||
min := util.imin(len_a, len_b)
|
||||
max := math.max(len_a, len_b)
|
||||
min := math.min(len_a, len_b)
|
||||
mut carry := u64(0)
|
||||
for index in 0 .. min {
|
||||
partial := carry + a[index] + b[index]
|
||||
@@ -197,8 +197,8 @@ fn add_in_place(mut a []u32, b []u32) {
|
||||
fn subtract_in_place(mut a []u32, b []u32) {
|
||||
len_a := a.len
|
||||
len_b := b.len
|
||||
max := util.imax(len_a, len_b)
|
||||
min := util.imin(len_a, len_b)
|
||||
max := math.max(len_a, len_b)
|
||||
min := math.min(len_a, len_b)
|
||||
mut carry := u32(0)
|
||||
mut new_carry := u32(0)
|
||||
for index in 0 .. min {
|
||||
|
||||
Reference in New Issue
Block a user