Source file
src/math/log10.go
1
2
3
4
5 package math
6
7
8
9 func Log10(x float64) float64 {
10 if haveArchLog10 {
11 return archLog10(x)
12 }
13 return log10(x)
14 }
15
16 func log10(x float64) float64 {
17 return Log(x) * (1 / Ln10)
18 }
19
20
21
22 func Log2(x float64) float64 {
23 if haveArchLog2 {
24 return archLog2(x)
25 }
26 return log2(x)
27 }
28
29 func log2(x float64) float64 {
30 frac, exp := Frexp(x)
31
32
33 if frac == 0.5 {
34 return float64(exp - 1)
35 }
36
37 if exp == 0 || exp == 1 {
38 return Log1p(x-1) * (1 / Ln2)
39 }
40 return Log(frac)*(1/Ln2) + float64(exp)
41 }
42
View as plain text