1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-04 12:52:28 +08:00
Files
lancet/docs/mathutil.md
2024-03-05 10:41:07 +08:00

12 KiB

Mathutil

Package mathutil implements some functions for math calculation.

Source:

https://github.com/duke-git/lancet/blob/v1/mathutil/mathutil.go

Example:

import (
    "github.com/duke-git/lancet/mathutil"
)

Index

Documentation

Exponent

Calculate x to the nth power.

Signature:

func Exponent(x, n int64) int64

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    fmt.Println(mathutil.Exponent(10, 0)) //1
    fmt.Println(mathutil.Exponent(10, 1)) //10
    fmt.Println(mathutil.Exponent(10, 2)) //100
}

Fibonacci

Calculate the nth number of fibonacci sequence.

Signature:

func Fibonacci(first, second, n int) int

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    fmt.Println(mathutil.Fibonacci(1, 1, 1)) //1
    fmt.Println(mathutil.Fibonacci(1, 1, 2)) //1
    fmt.Println(mathutil.Fibonacci(1, 1, 3)) //2
    fmt.Println(mathutil.Fibonacci(1, 1, 4)) //3
    fmt.Println(mathutil.Fibonacci(1, 1, 5)) //5
}

Factorial

Calculate the factorial of x.

Signature:

func Factorial(x uint) uint

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    fmt.Println(mathutil.Factorial(0)) //1
    fmt.Println(mathutil.Factorial(1)) //1
    fmt.Println(mathutil.Factorial(2)) //2
    fmt.Println(mathutil.Factorial(3)) //6
}

Percent

calculate the percentage of val to total, retain n decimal places.

Signature:

func Percent(val, total float64, n int) float64

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    fmt.Println(mathutil.Percent(1, 2, 2)) //1
    fmt.Println(mathutil.Percent(0.1, 0.3, 2)) //33.33
}

RoundToFloat

Round float up to n decimal places.

Signature:

func RoundToFloat(x float64, n int) float64

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    fmt.Println(mathutil.RoundToFloat(0, 0)) //0
    fmt.Println(mathutil.RoundToFloat(0, 1)) //0
    fmt.Println(mathutil.RoundToFloat(0.124, 2)) //0.12
    fmt.Println(mathutil.RoundToFloat(0.125, 2)) //0.13
    fmt.Println(mathutil.RoundToFloat(0.125, 3)) //0.125
}

RoundToString

Round float up to n decimal places. will return string.

Signature:

func RoundToString(x float64, n int) string

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    fmt.Println(mathutil.RoundToString(0, 0)) //"0"
    fmt.Println(mathutil.RoundToString(0, 1)) //"0.0:
    fmt.Println(mathutil.RoundToString(0.124, 2)) //"0.12"
    fmt.Println(mathutil.RoundToString(0.125, 2)) //"0.13"
    fmt.Println(mathutil.RoundToString(0.125, 3)) //"0.125"
}

TruncRound

Round float off n decimal places.

Signature:

func TruncRound(x float64, n int) float64

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    fmt.Println(mathutil.TruncRound(0, 0)) //0
    fmt.Println(mathutil.TruncRound(0, 1)) //0
    fmt.Println(mathutil.TruncRound(0.124, 2)) //0.12
    fmt.Println(mathutil.TruncRound(0.125, 2)) //0.12
    fmt.Println(mathutil.TruncRound(0.125, 3)) //0.125
}

CeilToFloat

Round float up n decimal places.

Signature:

func CeilToFloat(x float64, n int) float64

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
	result1 := mathutil.CeilToFloat(3.14159, 1)
	result2 := mathutil.CeilToFloat(3.14159, 2)
	result3 := mathutil.CeilToFloat(5, 4)

	fmt.Println(result1)
	fmt.Println(result2)
	fmt.Println(result3)

	// Output:
	// 3.2
	// 3.15
	// 5
}

CeilToString

Round float up n decimal places.

Signature:

func CeilToString(x float64, n int) string

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
	result1 := mathutil.CeilToString(3.14159, 1)
	result2 := mathutil.CeilToString(3.14159, 2)
	result3 := mathutil.CeilToString(5, 4)

	fmt.Println(result1)
	fmt.Println(result2)
	fmt.Println(result3)

	// Output:
	// 3.2
	// 3.15
	// 5.0000
}

FloorToFloat

Round float down n decimal places.

Signature:

func CeilToString(x float64, n int) string

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
	result1 := mathutil.FloorToFloat(3.14159, 1)
	result2 := mathutil.FloorToFloat(3.14159, 2)
	result3 := mathutil.FloorToFloat(5, 4)

	fmt.Println(result1)
	fmt.Println(result2)
	fmt.Println(result3)

	// Output:
	// 3.1
	// 3.14
	// 5
}

FloorToString

Round float down n decimal places.

Signature:

func CeilToString(x float64, n int) string

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
	result1 := mathutil.FloorToString(3.14159, 1)
	result2 := mathutil.FloorToString(3.14159, 2)
	result3 := mathutil.FloorToString(5, 4)

	fmt.Println(result1)
	fmt.Println(result2)
	fmt.Println(result3)

	// Output:
	// 3.1
	// 3.14
	// 5.0000
}

AngleToRadian

Converts angle value to radian value.

Signature:

func AngleToRadian(angle float64) float64

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    result1 := mathutil.AngleToRadian(45)
    result2 := mathutil.AngleToRadian(90)
    result3 := mathutil.AngleToRadian(180)

    fmt.Println(result1)
    fmt.Println(result2)
    fmt.Println(result3)

    // Output:
    // 0.7853981633974483
    // 1.5707963267948966
    // 3.141592653589793
}

RadianToAngle

Converts radian value to angle value.

Signature:

func RadianToAngle(radian float64) float64

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    result1 := mathutil.RadianToAngle(math.Pi)
    result2 := mathutil.RadianToAngle(math.Pi / 2)
    result3 := mathutil.RadianToAngle(math.Pi / 4)

    fmt.Println(result1)
    fmt.Println(result2)
    fmt.Println(result3)

    // Output:
    // 180
    // 90
    // 45
}

PointDistance

Caculates two points distance.

Signature:

func PointDistance(x1, y1, x2, y2 float64) float64

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    result1 := mathutil.PointDistance(1, 1, 4, 5)

    fmt.Println(result1)

    // Output:
    // 5
}

IsPrime

Checks if number is prime number.

Signature:

func IsPrime(n int) bool

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    result1 := mathutil.IsPrime(-1)
    result2 := mathutil.IsPrime(0)
    result3 := mathutil.IsPrime(1)
    result4 := mathutil.IsPrime(2)

    fmt.Println(result1)
    fmt.Println(result2)
    fmt.Println(result3)
    fmt.Println(result4)

    // Output:
    // false
    // false
    // false
    // true
}

GCD

Return greatest common divisor (GCD) of integers.

Signature:

func GCD(integers ...int) int

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    result1 := mathutil.GCD(1, 1)
    result2 := mathutil.GCD(1, -1)
    result3 := mathutil.GCD(-1, 1)
    result4 := mathutil.GCD(-1, -1)
    result5 := mathutil.GCD(3, 6, 9)

    fmt.Println(result1)
    fmt.Println(result2)
    fmt.Println(result3)
    fmt.Println(result4)
    fmt.Println(result5)

    // Output:
    // 1
    // 1
    // -1
    // -1
    // 3
}

LCM

Return Least Common Multiple (LCM) of integers.

Signature:

func LCM(integers ...int) int

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    result1 := mathutil.LCM(1, 1)
    result2 := mathutil.LCM(1, 2)
    result3 := mathutil.LCM(3, 6, 9)

    fmt.Println(result1)
    fmt.Println(result2)
    fmt.Println(result3)

    // Output:
    // 1
    // 2
    // 18
}

Cos

Returns the cosine of the radian argument.

Signature:

func Cos(radian float64, precision ...int) float64

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    result1 := mathutil.Cos(0)
    result2 := mathutil.Cos(90)
    result3 := mathutil.Cos(180)
    result4 := mathutil.Cos(math.Pi)
    result5 := mathutil.Cos(math.Pi / 2)

    fmt.Println(result1)
    fmt.Println(result2)
    fmt.Println(result3)
    fmt.Println(result4)
    fmt.Println(result5)

    // Output:
    // 1
    // -0.447
    // -0.598
    // -1
    // 0
}

Sin

Returns the sine of the radian argument.

Signature:

func Sin(radian float64, precision ...int) float64

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    result1 := mathutil.Sin(0)
    result2 := mathutil.Sin(90)
    result3 := mathutil.Sin(180)
    result4 := mathutil.Sin(math.Pi)
    result5 := mathutil.Sin(math.Pi / 2)

    fmt.Println(result1)
    fmt.Println(result2)
    fmt.Println(result3)
    fmt.Println(result4)
    fmt.Println(result5)

    // Output:
    // 0
    // 0.894
    // -0.801
    // 0
    // 1
}

Log

Returns the logarithm of base n.

Signature:

func Log(n, base float64) float64

Example:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/mathutil"
)

func main() {
    result1 := mathutil.Log(8, 2)
    result2 := mathutil.TruncRound(mathutil.Log(5, 2), 2)
    result3 := mathutil.TruncRound(mathutil.Log(27, 3), 0)

    fmt.Println(result1)
    fmt.Println(result2)
    fmt.Println(result3)

    // Output:
    // 3
    // 2.32
    // 3
}