ci: fix failing tests
parent
8b13f3b53f
commit
5d4cce3e95
|
@ -4,52 +4,82 @@
|
|||
module math
|
||||
|
||||
#include <math.h>
|
||||
|
||||
$if windows {
|
||||
$if tinyc {
|
||||
#flag @VROOT/thirdparty/tcc/lib/openlibm.o
|
||||
}
|
||||
}
|
||||
|
||||
fn C.acos(x f64) f64
|
||||
|
||||
fn C.asin(x f64) f64
|
||||
|
||||
fn C.atan(x f64) f64
|
||||
|
||||
fn C.atan2(y f64, x f64) f64
|
||||
|
||||
fn C.cbrt(x f64) f64
|
||||
|
||||
fn C.ceil(x f64) f64
|
||||
|
||||
fn C.cos(x f64) f64
|
||||
|
||||
fn C.cosf(x f32) f32
|
||||
|
||||
fn C.cosh(x f64) f64
|
||||
|
||||
fn C.erf(x f64) f64
|
||||
|
||||
fn C.erfc(x f64) f64
|
||||
|
||||
fn C.exp(x f64) f64
|
||||
|
||||
fn C.exp2(x f64) f64
|
||||
|
||||
fn C.fabs(x f64) f64
|
||||
|
||||
fn C.floor(x f64) f64
|
||||
|
||||
fn C.fmod(x f64, y f64) f64
|
||||
|
||||
fn C.hypot(x f64, y f64) f64
|
||||
|
||||
fn C.log(x f64) f64
|
||||
|
||||
fn C.log2(x f64) f64
|
||||
|
||||
fn C.log10(x f64) f64
|
||||
|
||||
fn C.lgamma(x f64) f64
|
||||
|
||||
fn C.pow(x f64, y f64) f64
|
||||
|
||||
fn C.powf(x f32, y f32) f32
|
||||
|
||||
fn C.round(x f64) f64
|
||||
|
||||
fn C.sin(x f64) f64
|
||||
|
||||
fn C.sinf(x f32) f32
|
||||
|
||||
fn C.sinh(x f64) f64
|
||||
|
||||
fn C.sqrt(x f64) f64
|
||||
|
||||
fn C.sqrtf(x f32) f32
|
||||
|
||||
fn C.tgamma(x f64) f64
|
||||
|
||||
fn C.tan(x f64) f64
|
||||
|
||||
fn C.tanf(x f32) f32
|
||||
|
||||
fn C.tanh(x f64) f64
|
||||
|
||||
fn C.trunc(x f64) f64
|
||||
|
||||
// NOTE
|
||||
// When adding a new function, please make sure it's in the right place.
|
||||
// All functions are sorted alphabetically.
|
||||
|
||||
// Returns the absolute value.
|
||||
[inline]
|
||||
pub fn abs(a f64) f64 {
|
||||
|
@ -76,7 +106,7 @@ pub fn atan(a f64) f64 {
|
|||
|
||||
// atan2 calculates inverse tangent with two arguments, returns the angle between the X axis and the point.
|
||||
[inline]
|
||||
pub fn atan2(a, b f64) f64 {
|
||||
pub fn atan2(a f64, b f64) f64 {
|
||||
return C.atan2(a, b)
|
||||
}
|
||||
|
||||
|
@ -142,7 +172,7 @@ pub fn floor(a f64) f64 {
|
|||
|
||||
// fmod returns the floating-point remainder of number / denom (rounded towards zero):
|
||||
[inline]
|
||||
pub fn fmod(a, b f64) f64 {
|
||||
pub fn fmod(a f64, b f64) f64 {
|
||||
return C.fmod(a, b)
|
||||
}
|
||||
|
||||
|
@ -154,7 +184,7 @@ pub fn gamma(a f64) f64 {
|
|||
|
||||
// Returns hypotenuse of a right triangle.
|
||||
[inline]
|
||||
pub fn hypot(a, b f64) f64 {
|
||||
pub fn hypot(a f64, b f64) f64 {
|
||||
return C.hypot(a, b)
|
||||
}
|
||||
|
||||
|
@ -184,19 +214,19 @@ pub fn log_gamma(a f64) f64 {
|
|||
|
||||
// log_n calculates base-N logarithm of the provided value.
|
||||
[inline]
|
||||
pub fn log_n(a, b f64) f64 {
|
||||
pub fn log_n(a f64, b f64) f64 {
|
||||
return C.log(a) / C.log(b)
|
||||
}
|
||||
|
||||
// pow returns base raised to the provided power.
|
||||
[inline]
|
||||
pub fn pow(a, b f64) f64 {
|
||||
pub fn pow(a f64, b f64) f64 {
|
||||
return C.pow(a, b)
|
||||
}
|
||||
|
||||
// powf returns base raised to the provided power. (float32)
|
||||
[inline]
|
||||
pub fn powf(a, b f32) f32 {
|
||||
pub fn powf(a f32, b f32) f32 {
|
||||
return C.powf(a, b)
|
||||
}
|
||||
|
||||
|
|
|
@ -9,10 +9,8 @@ module math
|
|||
// backend specific functions.
|
||||
// If using System/Backend dependent functions, put them in their respective
|
||||
// .c.v or .js.v or other files
|
||||
|
||||
// Below are functions that are not wrappers for built-in system functions, but
|
||||
// native V functions. They are still sorted alphabetically
|
||||
|
||||
// Faster approximate sin() and cos() implemented from lolremez
|
||||
pub fn aprox_sin(a f64) f64 {
|
||||
a0 := 1.91059300966915117e-31
|
||||
|
@ -40,7 +38,7 @@ pub fn aprox_cos(a f64) f64 {
|
|||
}
|
||||
|
||||
// copysign returns a value with the magnitude of x and the sign of y
|
||||
pub fn copysign(x, y f64) f64 {
|
||||
pub fn copysign(x f64, y f64) f64 {
|
||||
return f64_from_bits((f64_bits(x) & ~sign_mask) | (f64_bits(y) & sign_mask))
|
||||
}
|
||||
|
||||
|
@ -50,7 +48,7 @@ pub fn degrees(radians f64) f64 {
|
|||
}
|
||||
|
||||
// digits returns an array of the digits of n in the given base.
|
||||
pub fn digits(_n, base int) []int {
|
||||
pub fn digits(_n int, base int) []int {
|
||||
if base < 2 {
|
||||
panic('digits: Cannot find digits of n with base $base')
|
||||
}
|
||||
|
@ -76,7 +74,7 @@ pub fn fabs(x f64) f64 {
|
|||
}
|
||||
|
||||
// gcd calculates greatest common (positive) divisor (or zero if a and b are both zero).
|
||||
pub fn gcd(a_, b_ i64) i64 {
|
||||
pub fn gcd(a_ i64, b_ i64) i64 {
|
||||
mut a := a_
|
||||
mut b := b_
|
||||
if a < 0 {
|
||||
|
@ -96,7 +94,7 @@ pub fn gcd(a_, b_ i64) i64 {
|
|||
}
|
||||
|
||||
// lcm calculates least common (non-negative) multiple.
|
||||
pub fn lcm(a, b i64) i64 {
|
||||
pub fn lcm(a i64, b i64) i64 {
|
||||
if a == 0 {
|
||||
return a
|
||||
}
|
||||
|
@ -108,7 +106,7 @@ pub fn lcm(a, b i64) i64 {
|
|||
}
|
||||
|
||||
// max returns the maximum value of the two provided.
|
||||
pub fn max(a, b f64) f64 {
|
||||
pub fn max(a f64, b f64) f64 {
|
||||
if a > b {
|
||||
return a
|
||||
}
|
||||
|
@ -116,7 +114,7 @@ pub fn max(a, b f64) f64 {
|
|||
}
|
||||
|
||||
// min returns the minimum value of the two provided.
|
||||
pub fn min(a, b f64) f64 {
|
||||
pub fn min(a f64, b f64) f64 {
|
||||
if a < b {
|
||||
return a
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ pub struct PRNGConfigStruct {
|
|||
}
|
||||
|
||||
__global ( default_rng &wyrand.WyRandRNG )
|
||||
|
||||
fn init() {
|
||||
default_rng = new_default({})
|
||||
}
|
||||
|
@ -50,12 +51,12 @@ pub fn u64n(max u64) u64 {
|
|||
}
|
||||
|
||||
// u32_in_range(min, max) returns a uniformly distributed pseudorandom 32-bit unsigned u32 in _[min, max)_
|
||||
pub fn u32_in_range(min, max u32) u32 {
|
||||
pub fn u32_in_range(min u32, max u32) u32 {
|
||||
return default_rng.u32_in_range(min, max)
|
||||
}
|
||||
|
||||
// u64_in_range(min, max) returns a uniformly distributed pseudorandom 64-bit unsigned u64 in _[min, max)_
|
||||
pub fn u64_in_range(min, max u64) u64 {
|
||||
pub fn u64_in_range(min u64, max u64) u64 {
|
||||
return default_rng.u64_in_range(min, max)
|
||||
}
|
||||
|
||||
|
@ -71,7 +72,7 @@ pub fn intn(max int) int {
|
|||
|
||||
// int_in_range(min, max) returns a uniformly distributed pseudorandom
|
||||
// 32-bit signed int in [min, max). Both min and max can be negative, but we must have _min < max_.
|
||||
pub fn int_in_range(min, max int) int {
|
||||
pub fn int_in_range(min int, max int) int {
|
||||
return default_rng.int_in_range(min, max)
|
||||
}
|
||||
|
||||
|
@ -91,7 +92,7 @@ pub fn i64n(max i64) i64 {
|
|||
}
|
||||
|
||||
// i64_in_range(min, max) returns a uniformly distributed pseudorandom 64-bit signed int in _[min, max)_
|
||||
pub fn i64_in_range(min, max i64) i64 {
|
||||
pub fn i64_in_range(min i64, max i64) i64 {
|
||||
return default_rng.i64_in_range(min, max)
|
||||
}
|
||||
|
||||
|
@ -121,12 +122,12 @@ pub fn f64n(max f64) f64 {
|
|||
}
|
||||
|
||||
// f32_in_range(min, max) returns a uniformly distributed 32-bit floating point in _[min, max)_
|
||||
pub fn f32_in_range(min, max f32) f32 {
|
||||
pub fn f32_in_range(min f32, max f32) f32 {
|
||||
return default_rng.f32_in_range(min, max)
|
||||
}
|
||||
|
||||
// f64_in_range(min, max) returns a uniformly distributed 64-bit floating point in _[min, max)_
|
||||
pub fn f64_in_range(min, max f64) f64 {
|
||||
pub fn f64_in_range(min f64, max f64) f64 {
|
||||
return default_rng.f64_in_range(min, max)
|
||||
}
|
||||
|
||||
|
@ -141,7 +142,7 @@ pub fn string(len int) string {
|
|||
buf[i] = chars[intn(chars.len)]
|
||||
}
|
||||
}
|
||||
return unsafe { buf.vstring_with_len(len) }
|
||||
return unsafe {buf.vstring_with_len(len)}
|
||||
}
|
||||
|
||||
// rand.uuid_v4 generate a completely random UUID (v4)
|
||||
|
@ -181,17 +182,17 @@ pub fn uuid_v4() string {
|
|||
buf[14] = `4`
|
||||
buf[buflen] = 0
|
||||
}
|
||||
return unsafe { buf.vstring_with_len(buflen) }
|
||||
return unsafe {buf.vstring_with_len(buflen)}
|
||||
}
|
||||
|
||||
const(
|
||||
ulid_encoding = "0123456789ABCDEFGHJKMNPQRSTVWXYZ"
|
||||
const (
|
||||
ulid_encoding = '0123456789ABCDEFGHJKMNPQRSTVWXYZ'
|
||||
)
|
||||
|
||||
// rand.ulid generates an Unique Lexicographically sortable IDentifier.
|
||||
// See https://github.com/ulid/spec .
|
||||
// NB: ULIDs can leak timing information, if you make them public, because
|
||||
// you can infer the rate at which some resource is being created, like
|
||||
// you can infer the rate at which some resource is being created, like
|
||||
// users or business transactions.
|
||||
// (https://news.ycombinator.com/item?id=14526173)
|
||||
pub fn ulid() string {
|
||||
|
@ -204,7 +205,7 @@ pub fn ulid_at_millisecond(unix_time_milli u64) string {
|
|||
mut t := unix_time_milli
|
||||
mut i := 9
|
||||
for i >= 0 {
|
||||
unsafe{
|
||||
unsafe {
|
||||
buf[i] = ulid_encoding[t & 0x1F]
|
||||
}
|
||||
t = t >> 5
|
||||
|
@ -214,7 +215,7 @@ pub fn ulid_at_millisecond(unix_time_milli u64) string {
|
|||
mut x := default_rng.u64()
|
||||
i = 10
|
||||
for i < 19 {
|
||||
unsafe{
|
||||
unsafe {
|
||||
buf[i] = ulid_encoding[x & 0x1F]
|
||||
}
|
||||
x = x >> 5
|
||||
|
@ -223,14 +224,14 @@ pub fn ulid_at_millisecond(unix_time_milli u64) string {
|
|||
// second rand set
|
||||
x = default_rng.u64()
|
||||
for i < 26 {
|
||||
unsafe{
|
||||
unsafe {
|
||||
buf[i] = ulid_encoding[x & 0x1F]
|
||||
}
|
||||
x = x >> 5
|
||||
i++
|
||||
}
|
||||
unsafe{
|
||||
unsafe {
|
||||
buf[26] = 0
|
||||
}
|
||||
return unsafe { buf.vstring_with_len(buflen) }
|
||||
return unsafe {buf.vstring_with_len(buflen)}
|
||||
}
|
||||
|
|
|
@ -115,7 +115,7 @@ pub fn (mut rng WyRandRNG) u64n(max u64) u64 {
|
|||
|
||||
// rng.u32n(min, max) returns a pseudorandom u32 value that is guaranteed to be in [min, max)
|
||||
[inline]
|
||||
pub fn (mut rng WyRandRNG) u32_in_range(min, max u32) u32 {
|
||||
pub fn (mut rng WyRandRNG) u32_in_range(min u32, max u32) u32 {
|
||||
if max <= min {
|
||||
eprintln('max must be greater than min')
|
||||
exit(1)
|
||||
|
@ -125,7 +125,7 @@ pub fn (mut rng WyRandRNG) u32_in_range(min, max u32) u32 {
|
|||
|
||||
// rng.u64n(min, max) returns a pseudorandom u64 value that is guaranteed to be in [min, max)
|
||||
[inline]
|
||||
pub fn (mut rng WyRandRNG) u64_in_range(min, max u64) u64 {
|
||||
pub fn (mut rng WyRandRNG) u64_in_range(min u64, max u64) u64 {
|
||||
if max <= min {
|
||||
eprintln('max must be greater than min')
|
||||
exit(1)
|
||||
|
@ -179,7 +179,7 @@ pub fn (mut rng WyRandRNG) i64n(max i64) i64 {
|
|||
|
||||
// rng.int_in_range(min, max) returns a pseudorandom int that lies in [min, max)
|
||||
[inline]
|
||||
pub fn (mut rng WyRandRNG) int_in_range(min, max int) int {
|
||||
pub fn (mut rng WyRandRNG) int_in_range(min int, max int) int {
|
||||
if max <= min {
|
||||
eprintln('max must be greater than min')
|
||||
exit(1)
|
||||
|
@ -190,7 +190,7 @@ pub fn (mut rng WyRandRNG) int_in_range(min, max int) int {
|
|||
|
||||
// rng.i64_in_range(min, max) returns a pseudorandom i64 that lies in [min, max)
|
||||
[inline]
|
||||
pub fn (mut rng WyRandRNG) i64_in_range(min, max i64) i64 {
|
||||
pub fn (mut rng WyRandRNG) i64_in_range(min i64, max i64) i64 {
|
||||
if max <= min {
|
||||
eprintln('max must be greater than min')
|
||||
exit(1)
|
||||
|
@ -232,7 +232,7 @@ pub fn (mut rng WyRandRNG) f64n(max f64) f64 {
|
|||
|
||||
// rng.f32_in_range(min, max) returns a pseudorandom f32 that lies in [min, max)
|
||||
[inline]
|
||||
pub fn (mut rng WyRandRNG) f32_in_range(min, max f32) f32 {
|
||||
pub fn (mut rng WyRandRNG) f32_in_range(min f32, max f32) f32 {
|
||||
if max <= min {
|
||||
eprintln('max must be greater than min')
|
||||
exit(1)
|
||||
|
@ -242,7 +242,7 @@ pub fn (mut rng WyRandRNG) f32_in_range(min, max f32) f32 {
|
|||
|
||||
// rng.i64_in_range(min, max) returns a pseudorandom i64 that lies in [min, max)
|
||||
[inline]
|
||||
pub fn (mut rng WyRandRNG) f64_in_range(min, max f64) f64 {
|
||||
pub fn (mut rng WyRandRNG) f64_in_range(min f64, max f64) f64 {
|
||||
if max <= min {
|
||||
eprintln('max must be greater than min')
|
||||
exit(1)
|
||||
|
|
|
@ -9,7 +9,7 @@ fn getint() int {
|
|||
return 8
|
||||
}
|
||||
|
||||
fn f1(ch1 chan int, ch2 chan St, ch3, ch4, ch5 chan int, sem sync.Semaphore) {
|
||||
fn f1(ch1 chan int, ch2 chan St, ch3 chan int, ch4 chan int, ch5 chan int, sem sync.Semaphore) {
|
||||
mut a := 5
|
||||
select {
|
||||
// pre comment
|
||||
|
|
Loading…
Reference in New Issue