math: delete non-Sqrt-based Hypot

I was confused by the existence of two portable Hypot
routines in the tree when I cleaned things up, and I made
ARM use the wrong (imprecise) one.  Use the right one,
and delete the wrong one.

Fixes arm build.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/5485065
diff --git a/src/pkg/math/all_test.go b/src/pkg/math/all_test.go
index 7091c03..0a3cb03 100644
--- a/src/pkg/math/all_test.go
+++ b/src/pkg/math/all_test.go
@@ -2062,30 +2062,16 @@
 	}
 }
 
-func TestHypotSqrtGo(t *testing.T) {
+func TestHypotGo(t *testing.T) {
 	for i := 0; i < len(vf); i++ {
 		a := Abs(1e200 * tanh[i] * Sqrt(2))
-		if f := HypotSqrtGo(1e200*tanh[i], 1e200*tanh[i]); !veryclose(a, f) {
-			t.Errorf("HypotSqrtGo(%g, %g) = %g, want %g", 1e200*tanh[i], 1e200*tanh[i], f, a)
+		if f := HypotGo(1e200*tanh[i], 1e200*tanh[i]); !veryclose(a, f) {
+			t.Errorf("HypotGo(%g, %g) = %g, want %g", 1e200*tanh[i], 1e200*tanh[i], f, a)
 		}
 	}
 	for i := 0; i < len(vfhypotSC); i++ {
-		if f := HypotSqrtGo(vfhypotSC[i][0], vfhypotSC[i][1]); !alike(hypotSC[i], f) {
-			t.Errorf("HypotSqrtGo(%g, %g) = %g, want %g", vfhypotSC[i][0], vfhypotSC[i][1], f, hypotSC[i])
-		}
-	}
-}
-
-func TestHypotNoSqrtGo(t *testing.T) {
-	for i := 0; i < len(vf); i++ {
-		a := Abs(1e200 * tanh[i] * Sqrt(2))
-		if f := HypotNoSqrtGo(1e200*tanh[i], 1e200*tanh[i]); !veryclose(a, f) {
-			t.Errorf("HypotNoSqrtGo(%g, %g) = %g, want %g", 1e200*tanh[i], 1e200*tanh[i], f, a)
-		}
-	}
-	for i := 0; i < len(vfhypotSC); i++ {
-		if f := HypotNoSqrtGo(vfhypotSC[i][0], vfhypotSC[i][1]); !alike(hypotSC[i], f) {
-			t.Errorf("HypotNoSqrtGo(%g, %g) = %g, want %g", vfhypotSC[i][0], vfhypotSC[i][1], f, hypotSC[i])
+		if f := HypotGo(vfhypotSC[i][0], vfhypotSC[i][1]); !alike(hypotSC[i], f) {
+			t.Errorf("HypotGo(%g, %g) = %g, want %g", vfhypotSC[i][0], vfhypotSC[i][1], f, hypotSC[i])
 		}
 	}
 }
@@ -2741,15 +2727,9 @@
 	}
 }
 
-func BenchmarkHypotNoSqrtGo(b *testing.B) {
+func BenchmarkHypotGo(b *testing.B) {
 	for i := 0; i < b.N; i++ {
-		HypotNoSqrtGo(3, 4)
-	}
-}
-
-func BenchmarkHypotSqrtGo(b *testing.B) {
-	for i := 0; i < b.N; i++ {
-		HypotSqrtGo(3, 4)
+		HypotGo(3, 4)
 	}
 }
 
diff --git a/src/pkg/math/export_test.go b/src/pkg/math/export_test.go
index c32a5db..02992d7 100644
--- a/src/pkg/math/export_test.go
+++ b/src/pkg/math/export_test.go
@@ -7,6 +7,5 @@
 // Export internal functions for testing.
 var ExpGo = exp
 var Exp2Go = exp2
-var HypotSqrtGo = hypotSqrt
-var HypotNoSqrtGo = hypotNoSqrt
+var HypotGo = hypot
 var SqrtGo = sqrt
diff --git a/src/pkg/math/hypot.go b/src/pkg/math/hypot.go
index ee9759a..233257b 100644
--- a/src/pkg/math/hypot.go
+++ b/src/pkg/math/hypot.go
@@ -16,7 +16,7 @@
 //	Hypot(p, q) = NaN if p or q is NaN
 func Hypot(p, q float64) float64
 
-func hypotSqrt(p, q float64) float64 {
+func hypot(p, q float64) float64 {
 	// TODO(rsc): Remove manual inlining of IsNaN, IsInf
 	// when compiler does it for us
 	// special cases
@@ -41,46 +41,3 @@
 	q = q / p
 	return p * Sqrt(1+q*q)
 }
-
-func hypotNoSqrt(p, q float64) float64 {
-	// TODO(rsc): Remove manual inlining of IsNaN, IsInf
-	// when compiler does it for us
-	// special cases
-	switch {
-	case p < -MaxFloat64 || p > MaxFloat64 || q < -MaxFloat64 || q > MaxFloat64: // IsInf(p, 0) || IsInf(q, 0):
-		return Inf(1)
-	case p != p || q != q: // IsNaN(p) || IsNaN(q):
-		return NaN()
-	}
-	if p < 0 {
-		p = -p
-	}
-	if q < 0 {
-		q = -q
-	}
-
-	if p < q {
-		p, q = q, p
-	}
-
-	if p == 0 {
-		return 0
-	}
-
-	pfac := p
-	q = q / p
-	r := q
-	p = 1
-	for {
-		r = r * r
-		s := r + 4
-		if s == 4 {
-			return p * pfac
-		}
-		r = r / s
-		p = p + 2*r*p
-		q = q * r
-		r = q / p
-	}
-	panic("unreachable")
-}
diff --git a/src/pkg/math/hypot_arm.s b/src/pkg/math/hypot_arm.s
index f3f4927..2c599fd 100644
--- a/src/pkg/math/hypot_arm.s
+++ b/src/pkg/math/hypot_arm.s
@@ -3,4 +3,4 @@
 // license that can be found in the LICENSE file.
 
 TEXT ·Hypot(SB),7,$0
-	B ·hypotNoSqrt(SB)
+	B ·hypot(SB)