gc: fix up floating point NaN comparisons

Fixes #167.

R=ken2
https://golang.org/cl/155062
diff --git a/test/float_lit.go b/test/float_lit.go
index a78a6e9..be4460e4 100644
--- a/test/float_lit.go
+++ b/test/float_lit.go
@@ -20,8 +20,8 @@
 	db := float64(ia) / float64(ib);
 	db *= pow10(pow);
 
-	if da == 0 {
-		if db == 0 {
+	if da == 0 || db == 0 {
+		if da == 0 && db == 0 {
 			return true;
 		}
 		return false;
@@ -59,8 +59,8 @@
 	if !close(-210e3, -210, 1, 3) { print("-210e3 is ", -210e3, "\n"); }
 
 	if !close(0E-1, 0, 1, 0) { print("0E-1 is ", 0E-1, "\n"); }
-	if !close(+0e23, 0, 1, 23) { print("+0e23 is ", +0e23, "\n"); }
-	if !close(-0e345, 0, 1, 345) { print("-0e345 is ", -0e345, "\n"); }
+	if !close(+0e23, 0, 1, 1) { print("+0e23 is ", +0e23, "\n"); }
+	if !close(-0e345, 0, 1, 1) { print("-0e345 is ", -0e345, "\n"); }
 
 	if !close(0E1, 0, 1, 1) { print("0E1 is ", 0E1, "\n"); }
 	if !close(+10e23, 10, 1, 23) { print("+10e23 is ", +10e23, "\n"); }