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