1// Copyright 2009 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package math 6 7// Log10 returns the decimal logarithm of x. 8// The special cases are the same as for Log. 9 10//extern log10 11func libc_log10(float64) float64 12 13func Log10(x float64) float64 { 14 return libc_log10(x) 15} 16 17func log10(x float64) float64 { 18 return Log(x) * (1 / Ln10) 19} 20 21// Log2 returns the binary logarithm of x. 22// The special cases are the same as for Log. 23 24func Log2(x float64) float64 { 25 return log2(x) 26} 27 28func log2(x float64) float64 { 29 frac, exp := Frexp(x) 30 // Make sure exact powers of two give an exact answer. 31 // Don't depend on Log(0.5)*(1/Ln2)+exp being exactly exp-1. 32 if frac == 0.5 { 33 return float64(exp - 1) 34 } 35 return Log(frac)*(1/Ln2) + float64(exp) 36} 37