ADD: sqrt & Exp2

This commit is contained in:
NorthCityChen 2022-04-03 09:33:42 +08:00
parent 89a281434c
commit 9b0c409a97
2 changed files with 37 additions and 29 deletions

30
app.go
View File

@ -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)
}

View File

@ -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
}