From 4bc43f3278cfac472dfb51370071f6b49e2136cb Mon Sep 17 00:00:00 2001 From: dudaodong Date: Tue, 13 Jun 2023 14:59:30 +0800 Subject: [PATCH] feat: add Log --- docs/mathutil.md | 65 ++++++++++++++++++++++++++++++--------- docs/mathutil_zh-CN.md | 61 ++++++++++++++++++++++++++++-------- mathutil/mathutil.go | 5 +++ mathutil/mathutil_test.go | 8 +++++ 4 files changed, 112 insertions(+), 27 deletions(-) diff --git a/docs/mathutil.md b/docs/mathutil.md index 89fac08..b38f44d 100644 --- a/docs/mathutil.md +++ b/docs/mathutil.md @@ -37,6 +37,7 @@ import ( - [LCM](#LCM) - [Cos](#Cos) - [Sin](#Sin) +- [Log](#Log)
@@ -363,20 +364,20 @@ import ( func main() { result1 := mathutil.IsPrime(-1) - result2 := mathutil.IsPrime(0) - result3 := mathutil.IsPrime(1) - result4 := mathutil.IsPrime(2) + result2 := mathutil.IsPrime(0) + result3 := mathutil.IsPrime(1) + result4 := mathutil.IsPrime(2) - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) - // Output: - // false - // false - // false - // true + // Output: + // false + // false + // false + // true } ``` @@ -458,7 +459,6 @@ func main() { } ``` - ### Cos

Returns the cosine of the radian argument.

@@ -501,7 +501,6 @@ func main() { } ``` - ### Sin

Returns the sine of the radian argument.

@@ -542,4 +541,40 @@ func main() { // 0 // 1 } -``` \ No newline at end of file +``` + +### Log + +

Returns the logarithm of base n.

+ +Signature: + +```go +func Log(n, base float64) float64 +``` + +Example: + +```go +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 +} +``` diff --git a/docs/mathutil_zh-CN.md b/docs/mathutil_zh-CN.md index 5c8800e..1f17f32 100644 --- a/docs/mathutil_zh-CN.md +++ b/docs/mathutil_zh-CN.md @@ -37,6 +37,7 @@ import ( - [LCM](#LCM) - [Cos](#Cos) - [Sin](#Sin) +- [Log](#Log)
@@ -363,20 +364,20 @@ import ( func main() { result1 := mathutil.IsPrime(-1) - result2 := mathutil.IsPrime(0) - result3 := mathutil.IsPrime(1) - result4 := mathutil.IsPrime(2) + result2 := mathutil.IsPrime(0) + result3 := mathutil.IsPrime(1) + result4 := mathutil.IsPrime(2) - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) - // Output: - // false - // false - // false - // true + // Output: + // false + // false + // false + // true } ``` @@ -543,4 +544,40 @@ func main() { // 0 // 1 } +``` + +### Log + +

计算以base为底n的对数。

+ +函数签名: + +```go +func Log(n, base float64) float64 +``` + +示例: + +```go +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 +} ``` \ No newline at end of file diff --git a/mathutil/mathutil.go b/mathutil/mathutil.go index 35bc1a7..fc3a2cf 100644 --- a/mathutil/mathutil.go +++ b/mathutil/mathutil.go @@ -189,3 +189,8 @@ func Cos(radian float64, precision ...int) float64 { func Sin(radian float64, precision ...int) float64 { return Cos((math.Pi / 2) - radian) } + +// Log returns the logarithm of base n. +func Log(n, base float64) float64 { + return math.Log(n) / math.Log(base) +} diff --git a/mathutil/mathutil_test.go b/mathutil/mathutil_test.go index a10f5d0..7c23dd7 100644 --- a/mathutil/mathutil_test.go +++ b/mathutil/mathutil_test.go @@ -172,3 +172,11 @@ func TestSin(t *testing.T) { assert.EqualValues(0, Sin(math.Pi)) assert.EqualValues(1, Sin(math.Pi/2)) } + +func TestLog(t *testing.T) { + assert := internal.NewAssert(t, "TestLog") + + assert.EqualValues(3, Log(8, 2)) + assert.EqualValues(3, TruncRound(Log(27, 3), 0)) + assert.EqualValues(2.32, TruncRound(Log(5, 2), 2)) +}