maths

package module
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 27, 2024 License: Apache-2.0 Imports: 4 Imported by: 10

README

godoc codecov Go Report Card

maths - mathematics and number-type utilities

maths is a package for general purpose mathematics and other number-type things.

Installation

> go get github.com/go-corelibs/maths@latest

Examples

Clamp, ToInt, IntegerLen

func main() {
    clamped := maths.Clamp(2.5, 0.0, 1.0)
    // clamped == float64(1.0)
    integer := maths.ToInt(10.0)
    // integer == int(10)
    count := maths.IntegerLen(1010)
    // count == 4
}

Go-CoreLibs

Go-CoreLibs is a repository of shared code between the Go-Curses and Go-Enjin projects.

License

Copyright 2023 The Go-CoreLibs Authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use file except in compliance with the License.
You may obtain a copy of the license at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Atoi

func Atoi(v interface{}, def ...int) (number int)

Atoi is a wrapper around strconv.Atoi with the given value converted to a string first using fmt.Sprintf with a "%v" replacement

def is an optional default value if the strconv.Atoi call returns an error, only the first def value is ever used and if there are no def values provided, math.MaxInt is returned

func Ceil

func Ceil[V Number](value, max V) V

Ceil returns the value if it is less-than-or-equal-to the maximum and returns the maximum otherwise

func Clamp

func Clamp[V Number](value, min, max V) V

Clamp returns the value if it is greater-than-or-equal-to the minimum and less-than-or-equal-to the maximum arguments; if the value is less than the minimum, the minimum is returned; if the value is greater than the maximum, the maximum is returned

func DecimalLen added in v1.1.0

func DecimalLen[V Decimal](v V) (length int)

DecimalLen returns the number of digits in the generic Decimal given

func Floor

func Floor[V Number](value, min V) V

Floor returns the value if it is greater-than-or-equal-to the minimum and returns the minimum otherwise

func IntegerLen added in v1.1.0

func IntegerLen[V Integers](v V) (length int)

IntegerLen returns the number of digits in the generic Integers given

func Round

func Round[V Decimal](x V) (rounded int)

Round returns the value rounded to the nearest whole value

func RoundDown

func RoundDown[V Decimal](value V) (rounded int)

RoundDown returns the value rounded down

func RoundUp

func RoundUp[V Decimal](value V) (rounded int)

RoundUp returns the value rounded up

func ToFloat64

func ToFloat64(v interface{}, def ...float64) float64

ToFloat64 is a convenience wrapper around ToNumber with the primary difference that the "counld not convert and no default" case returns math.MaxFloat64 instead of zero

func ToInt

func ToInt(v interface{}, def ...int) int

ToInt is a convenience wrapper around ToNumber with the primary difference that the "counld not convert and no default" case returns math.MaxInt instead of zero

func ToInt64

func ToInt64(v interface{}, def ...int64) int64

ToInt64 is a convenience wrapper around ToNumber with the primary difference that the "counld not convert and no default" case returns math.MaxInt64 instead of zero

func ToNumber added in v1.2.0

func ToNumber[V Number](v interface{}, def ...V) (value V, ok bool)

ToNumber is a generic function for detecting the arbitrary value (v) type and converting the value (by recasting or by strconv parsing) to another Number type, using reflection to determine the correct means of conversion

If the value given cannot be transformed into the requested Number type the "ok" return value will be false. In these cases, if value returned will be either the first def value given or zero

Examples:

i, ok := ToNumber[int](struct{string}{"nope"}, 10)
// ok == false; i == int(10)

i, ok := ToNumber[int](struct{string}{"nope"})
// ok == false; i == int(0)

type Thing string
v := Thing("10")
i, ok := ToNumber[int](v)
// ok == true; i == int(10)

func ToUint

func ToUint(v interface{}, def ...uint) uint

ToUint is a convenience wrapper around ToNumber with the primary difference that the "counld not convert and no default" case returns math.MaxUint instead of zero

func ToUint64

func ToUint64(v interface{}, def ...uint64) uint64

ToUint64 is a convenience wrapper around ToNumber with the primary difference that the "counld not convert and no default" case returns math.MaxUint64 instead of zero

Types

type Complex

type Complex interface {
	~complex64 | ~complex128
}

type Decimal

type Decimal interface {
	~float32 | ~float64
}

type Integer

type Integer interface {
	~int | ~int8 | ~int16 | ~int32 | ~int64
}

type Integers

type Integers interface {
	Integer | UnsignedInteger
}

type Number

type Number interface {
	UnsignedInteger | Integer | Decimal
}

type UnsignedInteger

type UnsignedInteger interface {
	~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL