more debug and tolerance to a differnce in CANONICAL-XER precision
diff --git a/tests/tests-skeletons/check-REAL.c b/tests/tests-skeletons/check-REAL.c
index f4afd64..9aadc84 100644
--- a/tests/tests-skeletons/check-REAL.c
+++ b/tests/tests-skeletons/check-REAL.c
@@ -44,24 +44,43 @@
  * is as given in the (sample) and (canonical_sample) arguments.
  */
 static void
-check_str_representation(double d, const char *sample, const char *canonical_sample, int lineno) {
-	char *s0, *s1;
+check_str_representation(double d, const char *sample,
+                         const char *canonical_sample, int lineno) {
+    char *s0, *s1;
 
-	s0 = d2s(d, 0);
-	s1 = d2s(d, 1);
+    s0 = d2s(d, 0);
+    s1 = d2s(d, 1);
 
-	if(sample) {
-		printf("%03d: Checking %g->[\"%s\"] against [\"%s\"]%s\n",
-			lineno, d, s0, sample,
-			canonical_sample ? " (canonical follows...)" : ""
-		);
-		assert(!strcmp(s0, sample));
-	}
-	if(canonical_sample) {
-		printf("%03d: Checking %g->[\"%s\"] against [\"%s\"] (canonical)\n",
-			lineno, d, s1, canonical_sample);
-		assert(!strcmp(s1, canonical_sample));
-	}
+    if(sample) {
+        printf("%03d: Checking %g->[\"%s\"] against [\"%s\"]%s\n", lineno, d,
+               s0, sample, canonical_sample ? " (canonical follows...)" : "");
+        assert(!strcmp(s0, sample));
+    }
+    if(canonical_sample) {
+        if(*s1 == '<') {
+            printf(
+                "%03d: Checking %g->[\"%s\"] against [\"%s\"] "
+                "(canonical)\n",
+                lineno, d, s1, canonical_sample);
+            assert(!strcmp(s1, canonical_sample));
+        } else {
+            double reconstructed = strtod(s1, 0);
+            printf(
+                "%03d: Checking %g->[\"%s\"] against [\"%s\"]->%g "
+                "(canonical, 𝟄=%.17g %g)\n",
+                lineno, d, s1, canonical_sample, reconstructed,
+                fabs(reconstructed - d), 1e-52);
+            if(d != reconstructed) {
+                printf(
+                    "WARNING: Difference in a small epsilon (given "
+                    "%%.15g=%.15g, %%.17g=%.17g, %%.20g=%.20g, "
+                    "reconstructed %%.15g=%.15g, %%.17g=%.17g, "
+                    "%%.20g=%.20g)!\n",
+                    d, d, d, reconstructed, reconstructed, reconstructed);
+            }
+            assert(fabs(d - reconstructed) < 1e-52);
+        }
+    }
 }
 
 #define	check(rn, d, str1, str2)	\