Add sqrt() and rsqrt() to Sk4f.
This doesn't add them to the second-stringer Sk4i. It's unclear we should be
doing that often, and we don't have efficient ways to do it except via floats.
BUG=skia:
Review URL: https://codereview.chromium.org/964603002
diff --git a/tests/Sk4xTest.cpp b/tests/Sk4xTest.cpp
index 0985c3b..23eaf68 100644
--- a/tests/Sk4xTest.cpp
+++ b/tests/Sk4xTest.cpp
@@ -87,6 +87,18 @@
ASSERT_EQ(Sk4f(2,4,6,8), Sk4f(1,2,3,4).multiply(2.0f));
}
+DEF_TEST(Sk4x_Sqrt, r) {
+ Sk4f squares(4, 16, 25, 121),
+ roots(2, 4, 5, 11);
+ // .sqrt() should be pretty precise.
+ ASSERT_EQ(roots, squares.sqrt());
+
+ // .rsqrt() isn't so precise, but should be pretty close.
+ Sk4f error = roots.subtract(squares.multiply(squares.rsqrt()));
+ REPORTER_ASSERT(r, error.greaterThan(0.0f).allTrue());
+ REPORTER_ASSERT(r, error.lessThan(0.01f).allTrue());
+}
+
DEF_TEST(Sk4x_Comparison, r) {
ASSERT_EQ(Sk4f(1,2,3,4), Sk4f(1,2,3,4));
ASSERT_NE(Sk4f(4,3,2,1), Sk4f(1,2,3,4));