math: Fix off-by-one error in Ilogb and Logb.

Fixes #1141.

R=rsc
CC=adg, golang-dev
https://golang.org/cl/2194047
diff --git a/src/pkg/math/all_test.go b/src/pkg/math/all_test.go
index 485f6e5..8a60bca 100644
--- a/src/pkg/math/all_test.go
+++ b/src/pkg/math/all_test.go
@@ -383,16 +383,16 @@
 	2.161703872847352815363655e+00,
 }
 var logb = []float64{
-	3.0000000000000000e+00,
-	3.0000000000000000e+00,
-	-1.0000000000000000e+00,
-	3.0000000000000000e+00,
-	4.0000000000000000e+00,
+	2.0000000000000000e+00,
+	2.0000000000000000e+00,
+	-2.0000000000000000e+00,
 	2.0000000000000000e+00,
 	3.0000000000000000e+00,
+	1.0000000000000000e+00,
 	2.0000000000000000e+00,
 	1.0000000000000000e+00,
-	4.0000000000000000e+00,
+	0.0000000000000000e+00,
+	3.0000000000000000e+00,
 }
 var log10 = []float64{
 	6.9714316642508290997617083e-01,
@@ -1806,8 +1806,9 @@
 
 func TestIlogb(t *testing.T) {
 	for i := 0; i < len(vf); i++ {
-		if e := Ilogb(vf[i]); frexp[i].i != e {
-			t.Errorf("Ilogb(%g) = %d, want %d", vf[i], e, frexp[i].i)
+		a := frexp[i].i - 1 // adjust because fr in the interval [½, 1)
+		if e := Ilogb(vf[i]); a != e {
+			t.Errorf("Ilogb(%g) = %d, want %d", vf[i], e, a)
 		}
 	}
 	for i := 0; i < len(vflogbSC); i++ {