From 9b0c409a97f0f3a626d98e934abce9428c20bde8 Mon Sep 17 00:00:00 2001 From: NorthCityChen <449293786@qq.com> Date: Sun, 3 Apr 2022 09:33:42 +0800 Subject: [PATCH] ADD: sqrt & Exp2 --- app.go | 30 +++++++----------------------- math/math.go | 36 ++++++++++++++++++++++++++++++------ 2 files changed, 37 insertions(+), 29 deletions(-) diff --git a/app.go b/app.go index 5e96ab5..917edbc 100644 --- a/app.go +++ b/app.go @@ -1,6 +1,6 @@ /* * @Author: NorthCity1984 - * @LastEditTime: 2022-04-02 13:19:42 + * @LastEditTime: 2022-04-03 09:31:39 * @Description: * @Website: https://grimoire.cn * Copyright (c) NorthCity1984 All rights reserved. @@ -9,29 +9,13 @@ package main import ( "fmt" - - "gitee.com/NorthCityChen/stl-go/dequeue" + "math" ) func main() { - q := dequeue.Init[int]() - q.LPush(12) - q.LPush(23) - q.LPush(34) - q.Clear() - q.LPush(34) - q.RPush(44) - fmt.Println(q.LPop()) - fmt.Println(q.LPop()) - fmt.Println(q.LPop()) - fmt.Println(q.LPop()) - // q := queue.Init[int]() - // q.Push(12) - // q.Push(23) - // q.Push(44) - // // q.IsEmpty() - // fmt.Println(q.Pop()) - // fmt.Println(q.Pop()) - // fmt.Println(q.Pop()) - // fmt.Println(q.Pop()) + // ans := math.Exp2(0) + ans := math.Sqrt(-8) + // ans2 := math1.Sqrt(-8) + fmt.Println(ans) + // fmt.Println(ans2) } diff --git a/math/math.go b/math/math.go index bcc840c..d751958 100644 --- a/math/math.go +++ b/math/math.go @@ -1,6 +1,6 @@ /* * @Author: NorthCity1984 - * @LastEditTime: 2022-04-01 21:04:53 + * @LastEditTime: 2022-04-03 09:32:48 * @Description: * @Website: https://grimoire.cn * Copyright (c) NorthCity1984 All rights reserved. @@ -13,10 +13,7 @@ type Number interface { int | int32 | int64 | float32 | float64 } -func Inf[T Number]() T { - return T(math.Inf(1)) -} - +// 返回n个数中的最小值 func Max[T Number](arg T, args ...T) T { var maxNum T = arg @@ -28,6 +25,7 @@ func Max[T Number](arg T, args ...T) T { return maxNum } +// 返回n个数中的最大值 func Min[T Number](arg T, args ...T) T { var minNum T = arg for _, val := range args { @@ -38,6 +36,7 @@ func Min[T Number](arg T, args ...T) T { return minNum } +// 返回n个数的和 func Sum[T Number](args ...T) (sum T) { for _, val := range args { sum += val @@ -45,6 +44,7 @@ func Sum[T Number](args ...T) (sum T) { return sum } +// 返回num的绝对值 func Abs[T Number](num T) T { if num < 0 { num *= -1 @@ -52,4 +52,28 @@ func Abs[T Number](num T) T { return num } -// sort +// 返回 2**n +func Exp2(num int) int64 { + var ans int64 = 1 + for i := 0; i < num; i++ { + ans <<= 1 + } + return ans +} + +// 返回x的平方根,精度比原生略低 +func Sqrt(x float64) float64 { + if x < 0 { + return math.NaN() + } + + if x == 0 { + return 0 + } + last, res := 0.0, 1.0 + for last != res { + last = res + res = (res + x/res) / 2 + } + return res +}