diff --git a/src/pkg/math/logb.go b/src/pkg/math/logb.go
new file mode 100644
index 0000000..acda15d
--- /dev/null
+++ b/src/pkg/math/logb.go
@@ -0,0 +1,47 @@
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package math
+
+// Logb(x) returns the binary logarithm of non-zero x.
+//
+// Special cases are:
+//	Logb(±Inf) = +Inf
+//	Logb(0) = -Inf
+//	Logb(NaN) = NaN
+func Logb(x float64) float64 {
+	// TODO(rsc): Remove manual inlining of IsNaN, IsInf
+	// when compiler does it for us
+	// special cases
+	switch {
+	case x == 0:
+		return Inf(-1)
+	case x < -MaxFloat64 || x > MaxFloat64: // IsInf(x, 0):
+		return Inf(1)
+	case x != x: // IsNaN(x):
+		return x
+	}
+	return float64(int((Float64bits(x)>>shift)&mask) - bias)
+}
+
+// Ilogb(x) returns the binary logarithm of non-zero x as an integer.
+//
+// Special cases are:
+//	Ilogb(±Inf) = MaxInt32
+//	Ilogb(0) = MinInt32
+//	Ilogb(NaN) = MaxInt32
+func Ilogb(x float64) int {
+	// TODO(rsc): Remove manual inlining of IsNaN, IsInf
+	// when compiler does it for us
+	// special cases
+	switch {
+	case x == 0:
+		return MinInt32
+	case x != x: // IsNaN(x):
+		return MaxInt32
+	case x < -MaxFloat64 || x > MaxFloat64: // IsInf(x, 0):
+		return MaxInt32
+	}
+	return int((Float64bits(x)>>shift)&mask) - bias
+}
