mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
math: add a pure V math.mathutil, with generic min, max and abs functions (#9176), and use it consistently
This commit is contained in:
31
vlib/math/mathutil/mathutil.v
Normal file
31
vlib/math/mathutil/mathutil.v
Normal file
@@ -0,0 +1,31 @@
|
||||
// Copyright (c) 2019-2021 Alexander Medvednikov. All rights reserved.
|
||||
// Use of this source code is governed by an MIT license
|
||||
// that can be found in the LICENSE file.
|
||||
module mathutil
|
||||
|
||||
[inline]
|
||||
pub fn min<T>(a T, b T) T {
|
||||
if a < b {
|
||||
return a
|
||||
} else {
|
||||
return b
|
||||
}
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn max<T>(a T, b T) T {
|
||||
if a > b {
|
||||
return a
|
||||
} else {
|
||||
return b
|
||||
}
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn abs<T>(a T) T {
|
||||
if a > 0 {
|
||||
return a
|
||||
} else {
|
||||
return -a
|
||||
}
|
||||
}
|
||||
22
vlib/math/mathutil/mathutil_test.v
Normal file
22
vlib/math/mathutil/mathutil_test.v
Normal file
@@ -0,0 +1,22 @@
|
||||
import math.mathutil as mu
|
||||
|
||||
fn test_min() {
|
||||
assert mu.min(42, 13) == 13
|
||||
assert mu.min(5, -10) == -10
|
||||
assert mu.min(7.1, 7.3) == 7.1
|
||||
assert mu.min(u32(32), u32(17)) == 17
|
||||
}
|
||||
|
||||
fn test_max() {
|
||||
assert mu.max(42, 13) == 42
|
||||
assert mu.max(5, -10) == 5
|
||||
assert mu.max(7.1, 7.3) == 7.3
|
||||
assert mu.max(u32(60), u32(17)) == 60
|
||||
}
|
||||
|
||||
fn test_abs() {
|
||||
assert mu.abs(99) == 99
|
||||
assert mu.abs(-10) == 10
|
||||
assert mu.abs(1.2345) == 1.2345
|
||||
assert mu.abs(-5.5) == 5.5
|
||||
}
|
||||
Reference in New Issue
Block a user