mirror of
https://gitee.com/NorthCityChen/stl-go.git
synced 2025-05-25 03:51:08 +00:00
ADD: sqrt & Exp2
This commit is contained in:
parent
89a281434c
commit
9b0c409a97
30
app.go
30
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)
|
||||
}
|
||||
|
36
math/math.go
36
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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user