Index: tests/Sk64Test.cpp |
diff --git a/tests/Sk64Test.cpp b/tests/Sk64Test.cpp |
index e956cbbd513f8efa5c4ff9df8739649316b424b3..c257487d7bf7999d0bb30af05a8aa112906db4c3 100644 |
--- a/tests/Sk64Test.cpp |
+++ b/tests/Sk64Test.cpp |
@@ -24,13 +24,6 @@ static void bool_table_test(skiatest::Reporter* reporter, |
REPORTER_ASSERT(reporter, a.getSign() == table.sign); |
} |
-#ifdef SkLONGLONG |
- static SkLONGLONG asLL(const Sk64& a) |
- { |
- return ((SkLONGLONG)a.fHi << 32) | a.fLo; |
- } |
-#endif |
- |
static void TestSk64(skiatest::Reporter* reporter) { |
enum BoolTests { |
kZero_BoolTest, |
@@ -94,109 +87,6 @@ static void TestSk64(skiatest::Reporter* reporter) { |
c = a; c.sub(b); |
REPORTER_ASSERT(reporter, c.get32() == aa - bb); |
} |
- |
-#ifdef SkLONGLONG |
- for (i = 0; i < 1000; i++) |
- { |
- rand.next64(&a); //a.fHi >>= 1; // avoid overflow |
- rand.next64(&b); //b.fHi >>= 1; // avoid overflow |
- |
- if (!(i & 3)) // want to explicitly test these cases |
- { |
- a.fLo = 0; |
- b.fLo = 0; |
- } |
- else if (!(i & 7)) // want to explicitly test these cases |
- { |
- a.fHi = 0; |
- b.fHi = 0; |
- } |
- |
- SkLONGLONG aa = asLL(a); |
- SkLONGLONG bb = asLL(b); |
- |
- REPORTER_ASSERT(reporter, (a < b) == (aa < bb)); |
- REPORTER_ASSERT(reporter, (a <= b) == (aa <= bb)); |
- REPORTER_ASSERT(reporter, (a > b) == (aa > bb)); |
- REPORTER_ASSERT(reporter, (a >= b) == (aa >= bb)); |
- REPORTER_ASSERT(reporter, (a == b) == (aa == bb)); |
- REPORTER_ASSERT(reporter, (a != b) == (aa != bb)); |
- |
- c = a; c.add(b); |
- REPORTER_ASSERT(reporter, asLL(c) == aa + bb); |
- c = a; c.sub(b); |
- REPORTER_ASSERT(reporter, asLL(c) == aa - bb); |
- c = a; c.rsub(b); |
- REPORTER_ASSERT(reporter, asLL(c) == bb - aa); |
- c = a; c.negate(); |
- REPORTER_ASSERT(reporter, asLL(c) == -aa); |
- |
- int bits = rand.nextU() & 63; |
- c = a; c.shiftLeft(bits); |
- REPORTER_ASSERT(reporter, asLL(c) == (aa << bits)); |
- c = a; c.shiftRight(bits); |
- REPORTER_ASSERT(reporter, asLL(c) == (aa >> bits)); |
- c = a; c.roundRight(bits); |
- |
- SkLONGLONG tmp; |
- |
- tmp = aa; |
- if (bits > 0) |
- tmp += (SkLONGLONG)1 << (bits - 1); |
- REPORTER_ASSERT(reporter, asLL(c) == (tmp >> bits)); |
- |
- c.setMul(a.fHi, b.fHi); |
- tmp = (SkLONGLONG)a.fHi * b.fHi; |
- REPORTER_ASSERT(reporter, asLL(c) == tmp); |
- } |
- |
- |
- for (i = 0; i < 100000; i++) |
- { |
- Sk64 wide; |
- int32_t denom = rand.nextS(); |
- |
- while (denom == 0) |
- denom = rand.nextS(); |
- wide.setMul(rand.nextS(), rand.nextS()); |
- SkLONGLONG check = wide.getLongLong(); |
- |
- wide.div(denom, Sk64::kTrunc_DivOption); |
- check /= denom; |
- SkLONGLONG w = wide.getLongLong(); |
- |
- REPORTER_ASSERT(reporter, check == w); |
- |
- wide.setMul(rand.nextS(), rand.nextS()); |
- wide.abs(); |
- denom = wide.getSqrt(); |
- int32_t ck = (int32_t)sqrt((double)wide.getLongLong()); |
- int diff = denom - ck; |
- REPORTER_ASSERT(reporter, SkAbs32(diff) <= 1); |
- |
- wide.setMul(rand.nextS(), rand.nextS()); |
- Sk64 dwide; |
- dwide.setMul(rand.nextS(), rand.nextS()); |
- SkFixed fixdiv = wide.getFixedDiv(dwide); |
- double dnumer = (double)wide.getLongLong(); |
- double ddenom = (double)dwide.getLongLong(); |
- double ddiv = dnumer / ddenom; |
- SkFixed dfixdiv; |
- if (ddiv >= (double)SK_MaxS32 / (double)SK_Fixed1) |
- dfixdiv = SK_MaxS32; |
- else if (ddiv <= -(double)SK_MaxS32 / (double)SK_Fixed1) |
- dfixdiv = SK_MinS32; |
- else |
- dfixdiv = SkFloatToFixed(dnumer / ddenom); |
- diff = fixdiv - dfixdiv; |
- |
- if (SkAbs32(diff) > 1) { |
- SkDebugf(" %d === numer %g denom %g div %g xdiv %x fxdiv %x\n", |
- i, dnumer, ddenom, ddiv, dfixdiv, fixdiv); |
- } |
- REPORTER_ASSERT(reporter, SkAbs32(diff) <= 1); |
- } |
-#endif |
} |
#include "TestClassDef.h" |