mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00

Some checks are pending
json encoder benchmark CI / json-encode-benchmark (push) Waiting to run
Graphics CI / gg-regressions (push) Waiting to run
vlib modules CI / build-module-docs (push) Waiting to run
native backend CI / native-backend-ubuntu (push) Waiting to run
native backend CI / native-backend-windows (push) Waiting to run
Shy and PV CI / v-compiles-puzzle-vibes (push) Waiting to run
Sanitized CI / sanitize-undefined-clang (push) Waiting to run
Sanitized CI / sanitize-undefined-gcc (push) Waiting to run
Sanitized CI / tests-sanitize-address-clang (push) Waiting to run
Sanitized CI / sanitize-address-msvc (push) Waiting to run
Sanitized CI / sanitize-address-gcc (push) Waiting to run
Sanitized CI / sanitize-memory-clang (push) Waiting to run
sdl CI / v-compiles-sdl-examples (push) Waiting to run
Time CI / time-linux (push) Waiting to run
Time CI / time-macos (push) Waiting to run
Time CI / time-windows (push) Waiting to run
toml CI / toml-module-pass-external-test-suites (push) Waiting to run
Tools CI / tools-linux (clang) (push) Waiting to run
Tools CI / tools-linux (gcc) (push) Waiting to run
Tools CI / tools-linux (tcc) (push) Waiting to run
Tools CI / tools-macos (clang) (push) Waiting to run
Tools CI / tools-windows (gcc) (push) Waiting to run
Tools CI / tools-windows (msvc) (push) Waiting to run
Tools CI / tools-windows (tcc) (push) Waiting to run
Tools CI / tools-docker-ubuntu-musl (push) Waiting to run
vab CI / vab-compiles-v-examples (push) Waiting to run
vab CI / v-compiles-os-android (push) Waiting to run
wasm backend CI / wasm-backend (ubuntu-22.04) (push) Waiting to run
wasm backend CI / wasm-backend (windows-2022) (push) Waiting to run
72 lines
1.6 KiB
V
72 lines
1.6 KiB
V
// Copyright (c) 2019-2024 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 math
|
|
|
|
// maxof returns the maximum value of the type `T`
|
|
@[inline]
|
|
pub fn maxof[T]() T {
|
|
$if T is i8 {
|
|
return max_i8
|
|
} $else $if T is i16 {
|
|
return max_i16
|
|
} $else $if T is i32 {
|
|
return max_i32
|
|
} $else $if T is i32 {
|
|
return max_i32
|
|
} $else $if T is i64 {
|
|
return max_i64
|
|
} $else $if T is u8 {
|
|
return max_u8
|
|
} $else $if T is byte {
|
|
return max_u8
|
|
} $else $if T is u16 {
|
|
return max_u16
|
|
} $else $if T is u32 {
|
|
return max_u32
|
|
} $else $if T is u64 {
|
|
return max_u64
|
|
} $else $if T is f32 {
|
|
return max_f32
|
|
} $else $if T is f64 {
|
|
return max_f64
|
|
} $else $if T is int {
|
|
return max_int
|
|
} $else {
|
|
panic('A maximum value of the type `' + typeof[T]().name + '` is not defined.')
|
|
}
|
|
}
|
|
|
|
// minof returns the minimum value of the type `T`
|
|
@[inline]
|
|
pub fn minof[T]() T {
|
|
$if T is i8 {
|
|
return min_i8
|
|
} $else $if T is i16 {
|
|
return min_i16
|
|
} $else $if T is i32 {
|
|
return min_i32
|
|
} $else $if T is i32 {
|
|
return min_i32
|
|
} $else $if T is i64 {
|
|
return min_i64
|
|
} $else $if T is u8 {
|
|
return min_u8
|
|
} $else $if T is byte {
|
|
return min_u8
|
|
} $else $if T is u16 {
|
|
return min_u16
|
|
} $else $if T is u32 {
|
|
return min_u32
|
|
} $else $if T is u64 {
|
|
return min_u64
|
|
} $else $if T is f32 {
|
|
return -max_f32
|
|
} $else $if T is f64 {
|
|
return -max_f64
|
|
} $else $if T is int {
|
|
return min_int
|
|
} $else {
|
|
panic('A minimum value of the type `' + typeof[T]().name + '` is not defined.')
|
|
}
|
|
}
|