Fix asserts found in SampleApp and update the tests with additional interesting numbers.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1717743004

Review URL: https://codereview.chromium.org/1717743004
diff --git a/src/core/SkScaleToSides.h b/src/core/SkScaleToSides.h
index 49201d0..c700891 100644
--- a/src/core/SkScaleToSides.h
+++ b/src/core/SkScaleToSides.h
@@ -36,27 +36,33 @@
             // newMinRadius must be float in order to give the actual value of the radius.
             // The newMinRadius will always be smaller than limit. The largest that minRadius can be
             // is 1/2 the ratio of minRadius : (minRadius + maxRadius), therefore in the resulting
-            // division, minRadius can be no larger than 1/2 limit + ULP.
+            // division, minRadius can be no larger than 1/2 limit + ULP. The newMinRadius can be
+            // 1/2 a ULP off at this point.
             float newMinRadius = *minRadius;
 
             // Because newMaxRadius is the result of a double to float conversion, it can be larger
             // than limit, but only by one ULP.
             float newMaxRadius = (float)(limit - newMinRadius);
 
-            // If newMaxRadius forces the total over the limit, then it needs to be
-            // reduced by one ULP to be less than limit - newMinRadius.
+            // The total sum of newMinRadius and newMaxRadius can be upto 1.5 ULPs off. If the
+            // sum is greater than the limit then newMaxRadius may have to be reduced twice.
             // Note: nextafterf is a c99 call and should be std::nextafter, but this is not
             // implemented in the GCC ARM compiler.
             if (newMaxRadius + newMinRadius > limit) {
                 newMaxRadius = nextafterf(newMaxRadius, 0.0f);
+                if (newMaxRadius + newMinRadius > limit) {
+                    newMaxRadius = nextafterf(newMaxRadius, 0.0f);
+                }
             }
             *maxRadius = newMaxRadius;
         }
 
         SkASSERTF(*a >= 0.0f && *b >= 0.0f, "a: %g, b: %g, limit: %g, scale: %g", *a, *b, limit,
                   scale);
-        SkASSERTF(*a + *b <= limit, "\nlimit: %.10f, a: %.10f, b: %.10f, scale: %.20f",
-                  limit, *a, *b, scale);
+
+        SkASSERTF(*a + *b <= limit,
+                  "\nlimit: %.17f, sum: %.17f, a: %.10f, b: %.10f, scale: %.20f",
+                  limit, *a + *b, *a, *b, scale);
     }
 };
 #endif // ScaleToSides_DEFINED
diff --git a/tests/ScaleToSidesTest.cpp b/tests/ScaleToSidesTest.cpp
index 4159ce4..430bb8c 100644
--- a/tests/ScaleToSidesTest.cpp
+++ b/tests/ScaleToSidesTest.cpp
@@ -12,6 +12,13 @@
 
 DEF_TEST(ScaleToSides, reporter) {
     double interestingValues[] = {
+        // From sample app - PathFuzzer
+        260.01662826538085938,
+        63.61007690429687500,
+        795.98901367187500000,
+        217.71697616577148438,
+        686.15960693359375000,
+        556.57641601562500000,
         // From skp bitbucket
         111.60000228881836,
         55.800003051757813,