From 3dfaac447d030f911d146c3ae56b9dba63ce9dd4 Mon Sep 17 00:00:00 2001
From: Nicholas Clark
Date: Sat, 12 Mar 2011 00:03:40 +0000
Subject: [PATCH] 11883c88c2a3bf14 introduced an error in 64bitint.t with long
doubles.
On a platform where an NV is long enough to preserve all UVs, division is
always done in floating point. Hence the result may become stringified in E
notation. Hence testing that it is not in E notation (as a testing proxy for
"was integer arithmetic used?") is inappropriate on such a platform.
---
t/op/64bitint.t | 3 +++
1 file changed, 3 insertions(+)
diff --git a/t/op/64bitint.t b/t/op/64bitint.t
index e4296f2..168d597 100644
--- a/t/op/64bitint.t
+++ b/t/op/64bitint.t
@@ -14,6 +14,7 @@ BEGIN {
# 32+ bit integers don't cause noise
use warnings;
no warnings qw(overflow portable);
+use Config;
# as 6 * 6 = 36, the last digit of 6**n will always be six. Hence the last
# digit of 16**n will always be six. Hence 16**n - 1 will always end in 5.
@@ -314,6 +315,8 @@ cmp_ok($q, '==', 0x5555555555555555);
SKIP: {
skip("Maths does not preserve UVs", 2) unless $maths_preserves_UVs;
cmp_ok($q, '!=', 0x5555555555555556);
+ skip("All UV division is precise as NVs, so is done as NVs", 1)
+ if $Config{d_nv_preserves_uv};
unlike($q, qr/[e.]/);
}
--
1.8.3.1