Fix Matrix44Test and double-to-float conversion in SVD code

git-svn-id: http://skia.googlecode.com/svn/trunk@11067 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkMatrix.cpp b/src/core/SkMatrix.cpp
index e3e43ca..263b2ef 100644
--- a/src/core/SkMatrix.cpp
+++ b/src/core/SkMatrix.cpp
@@ -2060,7 +2060,7 @@
     // Now we need to compute eigenvalues of S (our scale factors)
     // and eigenvectors (bases for our rotation)
     // From this, should be able to reconstruct S as U*W*U^T
-    if (SkScalarNearlyZero(Sb)) {
+    if (SkScalarNearlyZero(SkDoubleToScalar(Sb))) {
         // already diagonalized
         cos1 = SK_Scalar1;
         sin1 = 0;
@@ -2080,7 +2080,7 @@
             w2 = 0.5*(trace + discriminant);
         }
         
-        cos1 = Sb; sin1 = w1 - Sa;
+        cos1 = SkDoubleToScalar(Sb); sin1 = SkDoubleToScalar(w1 - Sa);
         SkScalar reciplen = SK_Scalar1/SkScalarSqrt(cos1*cos1 + sin1*sin1);
         cos1 *= reciplen;
         sin1 *= reciplen;
@@ -2094,8 +2094,8 @@
     }
 
     if (NULL != scale) {
-        scale->fX = w1;
-        scale->fY = w2;
+        scale->fX = SkDoubleToScalar(w1);
+        scale->fY = SkDoubleToScalar(w2);
     }
     if (NULL != rotation1) {
         rotation1->fX = cos1;
diff --git a/tests/Matrix44Test.cpp b/tests/Matrix44Test.cpp
index 6c29a55..67af60d 100644
--- a/tests/Matrix44Test.cpp
+++ b/tests/Matrix44Test.cpp
@@ -513,10 +513,10 @@
 
     // test mixed-valued matrix inverse
     mat.reset();
-    mat.setScale(1.0e-11, 3.0, 1.0e+11);
+    mat.setScale(1.0e-10, 3.0, 1.0e+10);
     rot.setRotateDegreesAbout(0, 0, -1, 90);
     mat.postConcat(rot);
-    mat.postTranslate(1.0e+11, 3.0, 1.0e-11);
+    mat.postTranslate(1.0e+10, 3.0, 1.0e-10);
     REPORTER_ASSERT(reporter, mat.invert(NULL));
     mat.invert(&inverse);
     iden1.setConcat(mat, inverse);