Add sincos(3) to libm

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Add sincos(3) to libm

Mark Kettenis
The diff below adds sincos(3) to our libm.  This function isn't
standardized but is found on Linux, MacOS X and FreeBSD.  It is
essentially an optimization.  Calculating both sin and cos of the same
numbers is a fairly common operation.  By calculating both in the same
function, argument reduction has to be done only once.  And argument
reduction is a fairly expensive operation.

Modern compilers know about this function and will replace separate
sin(3) and cos(3) calls with a sincos(3) call if they know the latter
is available.  In principle our clang knows about this as well, but it
"knows" this function isn't available on OpenBSD.  Except on armv7,
because we claim to be armv7-unknown-openbsd6.3-gnueabi and clang
thinks that gnueabi implies a "GNU" environment that has sincos(3).
Teaching it that OpenBSD is "special" isn't hard, but fixing this
properly opens a can of worms.  Adding sincos(3) to libm is easier and
happens to be the route chosen by FreeBSD.

Diff below is adapted from FreeBSD.  Still needs a bit of testing and
a man page.

Thoughts?


Index: include/math.h
===================================================================
RCS file: /cvs/src/include/math.h,v
retrieving revision 1.35
diff -u -p -r1.35 math.h
--- include/math.h 17 Mar 2016 20:55:35 -0000 1.35
+++ include/math.h 2 Mar 2018 21:00:20 -0000
@@ -273,6 +273,8 @@ int finite(double);
 double gamma_r(double, int *);
 double lgamma_r(double, int *);
 
+void sincos(double, double *, double *);
+
 /*
  * IEEE Test Vector
  */
@@ -382,6 +384,8 @@ int isnanf(float);
 float gammaf_r(float, int *);
 float lgammaf_r(float, int *);
 
+void sincosf(float, float *, float *);
+
 /*
  * Float version of IEEE Test Vector
  */
@@ -459,6 +463,13 @@ long double fminl(long double, long doub
 
 long double fmal(long double, long double, long double);
 #endif /* __ISO_C_VISIBLE >= 1999 */
+
+/*
+ * Long double versions of BSD math library entry points
+ */
+#if __BSD_VISIBLE
+void sincosl(long double, long double *, long double *);
+#endif
 
 /*
  * Library implementation
Index: lib/libm/Makefile
===================================================================
RCS file: /cvs/src/lib/libm/Makefile,v
retrieving revision 1.115
diff -u -p -r1.115 Makefile
--- lib/libm/Makefile 11 Jan 2017 13:38:13 -0000 1.115
+++ lib/libm/Makefile 2 Mar 2018 21:00:20 -0000
@@ -101,8 +101,8 @@ COMMON_SRCS = b_exp__D.c b_log__D.c b_tg
  s_nextafterf.c s_nexttowardf.c s_remquo.c s_remquof.c s_rint.c \
  s_rintf.c \
  s_scalbn.c s_scalbnf.c s_significand.c \
- s_significandf.c \
- s_sin.c s_sinf.c s_tan.c s_tanf.c s_tanh.c s_tanhf.c s_trunc.c \
+ s_significandf.c s_sin.c s_sinf.c s_sincos.c s_sincosf.c \
+ s_tan.c s_tanf.c s_tanh.c s_tanhf.c s_trunc.c \
  s_truncf.c w_drem.c w_dremf.c w_gamma.c w_gamma_r.c w_gammaf.c \
  w_gammaf_r.c w_lgamma.c w_lgammaf.c
 
@@ -119,7 +119,7 @@ LONG_SRCS = e_acoshl.c e_acosl.c e_asinl
  s_floorl.c s_fmal.c s_fmaxl.c s_fminl.c s_frexpl.c s_ilogbl.c \
  s_llrintl.c s_llroundl.c s_log1pl.c s_logbl.c s_lrintl.c \
  s_lroundl.c s_modfl.c s_nanl.c s_nextafterl.c s_nexttoward.c \
- s_remquol.c s_rintl.c s_roundl.c s_scalbnl.c s_sinl.c \
+ s_remquol.c s_rintl.c s_roundl.c s_scalbnl.c s_sinl.c s_sincosl.c \
  s_tanhl.c s_tanl.c s_truncl.c
 
 # math routines that are completely MI
Index: lib/libm/Symbols.map
===================================================================
RCS file: /cvs/src/lib/libm/Symbols.map,v
retrieving revision 1.1
diff -u -p -r1.1 Symbols.map
--- lib/libm/Symbols.map 12 Sep 2016 19:47:01 -0000 1.1
+++ lib/libm/Symbols.map 2 Mar 2018 21:00:20 -0000
@@ -255,6 +255,9 @@
  significand;
  significandf;
  sin;
+ sincos;
+ sincosf;
+ sincosl;
  sinf;
  sinh;
  sinhf;
Index: lib/libm/shlib_version
===================================================================
RCS file: /cvs/src/lib/libm/shlib_version,v
retrieving revision 1.20
diff -u -p -r1.20 shlib_version
--- lib/libm/shlib_version 12 Sep 2016 19:47:01 -0000 1.20
+++ lib/libm/shlib_version 2 Mar 2018 21:00:20 -0000
@@ -1,2 +1,2 @@
 major=10
-minor=0
+minor=1
Index: lib/libm/hidden/math.h
===================================================================
RCS file: /cvs/src/lib/libm/hidden/math.h,v
retrieving revision 1.1
diff -u -p -r1.1 math.h
--- lib/libm/hidden/math.h 12 Sep 2016 19:47:02 -0000 1.1
+++ lib/libm/hidden/math.h 2 Mar 2018 21:00:20 -0000
@@ -172,6 +172,9 @@ PROTO_NORMAL(scalbnl);
 PROTO_DEPRECATED(significand);
 PROTO_DEPRECATED(significandf);
 PROTO_NORMAL(sin);
+PROTO_DEPRECATED(sincos);
+PROTO_DEPRECATED(sincosf);
+PROTO_DEPRECATED(sincosl);
 PROTO_NORMAL(sinf);
 PROTO_NORMAL(sinh);
 PROTO_NORMAL(sinhf);
Index: lib/libm/src/k_sincos.h
===================================================================
RCS file: lib/libm/src/k_sincos.h
diff -N lib/libm/src/k_sincos.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/k_sincos.h 2 Mar 2018 21:00:20 -0000
@@ -0,0 +1,49 @@
+/*-
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunSoft, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *
+ * k_sin.c and k_cos.c merged by Steven G. Kargl.
+ */
+
+static const double
+S1  = -1.66666666666666324348e-01, /* 0xBFC55555, 0x55555549 */
+S2  =  8.33333333332248946124e-03, /* 0x3F811111, 0x1110F8A6 */
+S3  = -1.98412698298579493134e-04, /* 0xBF2A01A0, 0x19C161D5 */
+S4  =  2.75573137070700676789e-06, /* 0x3EC71DE3, 0x57B1FE7D */
+S5  = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */
+S6  =  1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */
+
+static const double
+C1  =  4.16666666666666019037e-02, /* 0x3FA55555, 0x5555554C */
+C2  = -1.38888888888741095749e-03, /* 0xBF56C16C, 0x16C15177 */
+C3  =  2.48015872894767294178e-05, /* 0x3EFA01A0, 0x19CB1590 */
+C4  = -2.75573143513906633035e-07, /* 0xBE927E4F, 0x809C52AD */
+C5  =  2.08757232129817482790e-09, /* 0x3E21EE9E, 0xBDB4B1C4 */
+C6  = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */
+
+static inline void
+__kernel_sincos(double x, double y, int iy, double *sn, double *cs)
+{
+ double hz, r, v, w, z;
+
+ z = x * x;
+ w = z * z;
+ r = S2 + z * (S3 + z * S4) + z * w * (S5 + z * S6);
+ v = z * x;
+
+ if (iy == 0)
+ *sn = x + v * (S1 + z * r);
+ else
+ *sn = x - ((z * (y / 2 - v * r) - y) - v * S1);
+
+ r = z * (C1 + z * (C2 + z * C3)) + w * w * (C4 + z * (C5 + z * C6));
+ hz = z / 2;
+ w = 1 - hz;
+ *cs = w + (((1 - w) - hz) + (z * r - x * y));
+}
Index: lib/libm/src/k_sincosf.h
===================================================================
RCS file: lib/libm/src/k_sincosf.h
diff -N lib/libm/src/k_sincosf.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/k_sincosf.h 2 Mar 2018 21:00:20 -0000
@@ -0,0 +1,40 @@
+/*-
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *
+ * k_sinf.c and k_cosf.c merged by Steven G. Kargl.
+ */
+
+/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */
+static const double
+S1 = -0x15555554cbac77.0p-55, /* -0.166666666416265235595 */
+S2 =  0x111110896efbb2.0p-59, /*  0.0083333293858894631756 */
+S3 = -0x1a00f9e2cae774.0p-65, /* -0.000198393348360966317347 */
+S4 =  0x16cd878c3b46a7.0p-71; /*  0.0000027183114939898219064 */
+
+/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */
+static const double
+C0  = -0x1ffffffd0c5e81.0p-54, /* -0.499999997251031003120 */
+C1  =  0x155553e1053a42.0p-57, /*  0.0416666233237390631894 */
+C2  = -0x16c087e80f1e27.0p-62, /* -0.00138867637746099294692 */
+C3  =  0x199342e0ee5069.0p-68; /*  0.0000243904487962774090654 */
+
+static inline void
+__kernel_sincosdf(double x, float *sn, float *cs)
+{
+ double r, s, w, z;
+
+ z = x * x;
+ w = z * z;
+ r = S3 + z * S4;
+ s = z * x;
+ *sn = (x + s * (S1 + z * S2)) + s * w * r;
+ r = C2 + z * C3;
+ *cs = ((1 + z * C0) + w * C1) + (w * z) * r;
+}
Index: lib/libm/src/s_sincos.c
===================================================================
RCS file: lib/libm/src/s_sincos.c
diff -N lib/libm/src/s_sincos.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/s_sincos.c 2 Mar 2018 21:00:20 -0000
@@ -0,0 +1,73 @@
+/*-
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *
+ * s_sin.c and s_cos.c merged by Steven G. Kargl.  Descriptions of the
+ * algorithms are contained in the original files.
+ */
+
+#include <float.h>
+#include "math.h"
+
+#include "math_private.h"
+#include "k_sincos.h"
+
+void
+sincos(double x, double *sn, double *cs)
+{
+ double y[2];
+ int32_t n, ix;
+
+ /* High word of x. */
+ GET_HIGH_WORD(ix, x);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffff;
+ if (ix <= 0x3fe921fb) {
+ if (ix < 0x3e400000) { /* |x| < 2**-27 */
+ if ((int)x == 0) { /* Generate inexact. */
+ *sn = x;
+ *cs = 1;
+ return;
+ }
+ }
+ __kernel_sincos(x, 0, 0, sn, cs);
+ return;
+ }
+
+ /* If x = Inf or NaN, then sin(x) = NaN and cos(x) = NaN. */
+ if (ix >= 0x7ff00000) {
+ *sn = x - x;
+ *cs = x - x;
+ return;
+ }
+
+ /* Argument reduction. */
+ n = __ieee754_rem_pio2(x, y);
+
+ switch(n & 3) {
+ case 0:
+ __kernel_sincos(y[0], y[1], 1, sn, cs);
+ break;
+ case 1:
+ __kernel_sincos(y[0], y[1], 1, cs, sn);
+ *cs = -*cs;
+ break;
+ case 2:
+ __kernel_sincos(y[0], y[1], 1, sn, cs);
+ *sn = -*sn;
+ *cs = -*cs;
+ break;
+ default:
+ __kernel_sincos(y[0], y[1], 1, cs, sn);
+ *sn = -*sn;
+ }
+}
+DEF_NONSTD(sincos);
+LDBL_MAYBE_CLONE(sincos);
Index: lib/libm/src/s_sincosf.c
===================================================================
RCS file: lib/libm/src/s_sincosf.c
diff -N lib/libm/src/s_sincosf.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/s_sincosf.c 2 Mar 2018 21:00:20 -0000
@@ -0,0 +1,120 @@
+/*-
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* s_sincosf.c -- float version of s_sincos.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, [hidden email].
+ * Optimized by Bruce D. Evans.
+ * Merged s_sinf.c and s_cosf.c by Steven G. Kargl.
+ */
+
+#include <float.h>
+#include "math.h"
+
+#include "math_private.h"
+#include "k_sincosf.h"
+
+/* Small multiples of pi/2 rounded to double precision. */
+static const double
+p1pio2 = 1*M_PI_2, /* 0x3FF921FB, 0x54442D18 */
+p2pio2 = 2*M_PI_2, /* 0x400921FB, 0x54442D18 */
+p3pio2 = 3*M_PI_2, /* 0x4012D97C, 0x7F3321D2 */
+p4pio2 = 4*M_PI_2; /* 0x401921FB, 0x54442D18 */
+
+void
+sincosf(float x, float *sn, float *cs)
+{
+ float c, s;
+ double y;
+ int32_t n, hx, ix;
+
+ GET_FLOAT_WORD(hx, x);
+ ix = hx & 0x7fffffff;
+
+ if (ix <= 0x3f490fda) { /* |x| ~<= pi/4 */
+ if (ix < 0x39800000) { /* |x| < 2**-12 */
+ if ((int)x == 0) {
+ *sn = x; /* x with inexact if x != 0 */
+ *cs = 1;
+ return;
+ }
+ }
+ __kernel_sincosdf(x, sn, cs);
+ return;
+ }
+
+ if (ix <= 0x407b53d1) { /* |x| ~<= 5*pi/4 */
+ if (ix <= 0x4016cbe3) { /* |x| ~<= 3pi/4 */
+ if (hx > 0) {
+ __kernel_sincosdf(x - p1pio2, cs, sn);
+ *cs = -*cs;
+ } else {
+ __kernel_sincosdf(x + p1pio2, cs, sn);
+ *sn = -*sn;
+ }
+ } else {
+ if (hx > 0)
+ __kernel_sincosdf(x - p2pio2, sn, cs);
+ else
+ __kernel_sincosdf(x + p2pio2, sn, cs);
+ *sn = -*sn;
+ *cs = -*cs;
+ }
+ return;
+ }
+
+ if (ix <= 0x40e231d5) { /* |x| ~<= 9*pi/4 */
+ if (ix <= 0x40afeddf) { /* |x| ~<= 7*pi/4 */
+ if (hx > 0) {
+ __kernel_sincosdf(x - p3pio2, cs, sn);
+ *sn = -*sn;
+ } else {
+ __kernel_sincosdf(x + p3pio2, cs, sn);
+ *cs = -*cs;
+ }
+ } else {
+ if (hx > 0)
+ __kernel_sincosdf(x - p4pio2, sn, cs);
+ else
+ __kernel_sincosdf(x + p4pio2, sn, cs);
+ }
+ return;
+ }
+
+ /* If x = Inf or NaN, then sin(x) = NaN and cos(x) = NaN. */
+ if (ix >= 0x7f800000) {
+ *sn = x - x;
+ *cs = x - x;
+ return;
+ }
+
+ /* Argument reduction. */
+ n = __ieee754_rem_pio2f(x, &y);
+ __kernel_sincosdf(y, &s, &c);
+
+ switch(n & 3) {
+ case 0:
+ *sn = s;
+ *cs = c;
+ break;
+ case 1:
+ *sn = c;
+ *cs = -s;
+ break;
+ case 2:
+ *sn = -s;
+ *cs = -c;
+ break;
+ default:
+ *sn = -c;
+ *cs = s;
+ }
+}
+DEF_NONSTD(sincosf);
Index: lib/libm/src/s_sincosl.c
===================================================================
RCS file: lib/libm/src/s_sincosl.c
diff -N lib/libm/src/s_sincosl.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/s_sincosl.c 2 Mar 2018 21:00:20 -0000
@@ -0,0 +1,122 @@
+/*-
+ * Copyright (c) 2007, 2010-2013 Steven G. Kargl
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice unmodified, this list of conditions, and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * s_sinl.c and s_cosl.c merged by Steven G. Kargl.
+ */
+
+#include <sys/types.h>
+#include <machine/ieee.h>
+#include <float.h>
+#include <math.h>
+
+#include "math_private.h"
+
+#if LDBL_MANT_DIG == 64
+#include "../ld80/k_sincosl.h"
+#define NX 3
+#define PREC 2
+#elif LDBL_MANT_DIG == 113
+#include "../ld128/k_sincosl.h"
+#define NX 5
+#define PREC 3
+#else
+#error "Unsupported long double format"
+#endif
+
+static const long double two24 = 1.67772160000000000000e+07L;
+
+void
+sincosl(long double x, long double *sn, long double *cs)
+{
+ union {
+ long double e;
+ struct ieee_ext bits;
+ } z;
+ int i, e0;
+ double xd[NX], yd[PREC];
+ long double hi, lo;
+
+ z.e = x;
+ z.bits.ext_sign = 0;
+
+ /* Optimize the case where x is already within range. */
+ if (z.e < M_PI_4) {
+ /*
+ * If x = +-0 or x is a subnormal number, then sin(x) = x and
+ * cos(x) = 1.
+ */
+ if (z.bits.ext_exp == 0) {
+ *sn = x;
+ *cs = 1;
+ } else
+ __kernel_sincosl(x, 0, 0, sn, cs);
+ }
+
+ /* If x = NaN or Inf, then sin(x) and cos(x) are NaN. */
+ if (z.bits.ext_exp == 32767) {
+ *sn = x - x;
+ *cs = x - x;
+ }
+
+ /* Split z.e into a 24-bit representation. */
+ e0 = ilogbl(z.e) - 23;
+ z.e = scalbnl(z.e, -e0);
+ for (i = 0; i < NX; i++) {
+ xd[i] = (double)((int32_t)z.e);
+ z.e = (z.e - xd[i]) * two24;
+ }
+
+ /* yd contains the pieces of xd rem pi/2 such that |yd| < pi/4. */
+ e0 = __kernel_rem_pio2(xd, yd, e0, NX, PREC);
+
+#if PREC == 2
+ hi = (long double)yd[0] + yd[1];
+ lo = yd[1] - (hi - yd[0]);
+#else /* PREC == 3 */
+ long double t;
+ t = (long double)yd[2] + yd[1];
+ hi = t + yd[0];
+ lo = yd[0] - (hi - t);
+#endif
+
+ switch (e0 & 3) {
+ case 0:
+ __kernel_sincosl(hi, lo, 1, sn, cs);
+ break;
+ case 1:
+ __kernel_sincosl(hi, lo, 1, cs, sn);
+ *cs = -*cs;
+ break;
+ case 2:
+ __kernel_sincosl(hi, lo, 1, sn, cs);
+ *sn = -*sn;
+ *cs = -*cs;
+ break;
+ default:
+ __kernel_sincosl(hi, lo, 1, cs, sn);
+ *sn = -*sn;
+ }
+}
+DEF_NONSTD(sincosl);
Index: lib/libm/src/ld128/k_sincosl.h
===================================================================
RCS file: lib/libm/src/ld128/k_sincosl.h
diff -N lib/libm/src/ld128/k_sincosl.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/ld128/k_sincosl.h 2 Mar 2018 21:00:20 -0000
@@ -0,0 +1,68 @@
+/*-
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans.
+ *
+ * Developed at SunSoft, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *
+ * k_sinl.c and k_cosl.c merged by Steven G. Kargl
+ */
+
+static const long double
+C1 =  0.04166666666666666666666666666666658424671L,
+C2 = -0.001388888888888888888888888888863490893732L,
+C3 =  0.00002480158730158730158730158600795304914210L,
+C4 = -0.2755731922398589065255474947078934284324e-6L,
+C5 =  0.2087675698786809897659225313136400793948e-8L,
+C6 = -0.1147074559772972315817149986812031204775e-10L,
+C7 =  0.4779477332386808976875457937252120293400e-13L,
+S1 = -0.16666666666666666666666666666666666606732416116558L,
+S2 =  0.0083333333333333333333333333333331135404851288270047L,
+S3 = -0.00019841269841269841269841269839935785325638310428717L,
+S4 =  0.27557319223985890652557316053039946268333231205686e-5L,
+S5 = -0.25052108385441718775048214826384312253862930064745e-7L,
+S6 =  0.16059043836821614596571832194524392581082444805729e-9L,
+S7 = -0.76471637318198151807063387954939213287488216303768e-12L,
+S8 =  0.28114572543451292625024967174638477283187397621303e-14L;
+
+static const double
+C8  = -0.1561920696721507929516718307820958119868e-15,
+C9  =  0.4110317413744594971475941557607804508039e-18,
+C10 = -0.8896592467191938803288521958313920156409e-21,
+C11 =  0.1601061435794535138244346256065192782581e-23,
+S9  = -0.82206352458348947812512122163446202498005154296863e-17,
+S10 =  0.19572940011906109418080609928334380560135358385256e-19,
+S11 = -0.38680813379701966970673724299207480965452616911420e-22,
+S12 =  0.64038150078671872796678569586315881020659912139412e-25;
+
+static inline void
+__kernel_sincosl(long double x, long double y, int iy, long double *sn,
+    long double *cs)
+{
+ long double hz, r, v, w, z;
+
+ z = x * x;
+ v = z * x;
+ /*
+ * XXX Replace Horner scheme with an algorithm suitable for CPUs
+ * with more complex pipelines.
+ */
+ r = S2 + z * (S3 + z * (S4 + z * (S5 + z * (S6 + z * (S7 + z * (S8 +
+    z * (S9 + z * (S10 + z * (S11 + z * S12)))))))));
+
+ if (iy == 0)
+ *sn = x + v * (S1 + z * r);
+ else
+ *cs = x - ((z * (y / 2 - v * r) - y) - v * S1);
+
+ hz = z / 2;
+ w = 1 - hz;
+ r = z * (C1 + z * (C2 + z * (C3 + z * (C4 + z * (C5 + z * (C6 +
+    z * (C7 + z * (C8 + z * (C9 + z * (C10 + z * C11))))))))));
+
+ *cs =  w + (((1 - w) - hz) + (z * r - x * y));
+}
Index: lib/libm/src/ld80/k_sincosl.h
===================================================================
RCS file: lib/libm/src/ld80/k_sincosl.h
diff -N lib/libm/src/ld80/k_sincosl.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/ld80/k_sincosl.h 2 Mar 2018 21:00:20 -0000
@@ -0,0 +1,69 @@
+/*-
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans.
+ *
+ * Developed at SunSoft, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *
+ * k_sinl.c and k_cosl.c merged by Steven G. Kargl
+ */
+
+#if defined(__amd64__) || defined(__i386__)
+/* Long double constants are slow on these arches, and broken on i386. */
+static const volatile double
+C1hi = 0.041666666666666664, /*  0x15555555555555.0p-57 */
+C1lo = 2.2598839032744733e-18, /*  0x14d80000000000.0p-111 */
+S1hi = -0.16666666666666666, /* -0x15555555555555.0p-55 */
+S1lo = -9.2563760475949941e-18; /* -0x15580000000000.0p-109 */
+#define S1 ((long double)S1hi + S1lo)
+#define C1 ((long double)C1hi + C1lo)
+#else
+static const long double
+C1 =  0.0416666666666666666136L; /*  0xaaaaaaaaaaaaaa9b.0p-68 */
+S1 = -0.166666666666666666671L, /* -0xaaaaaaaaaaaaaaab.0p-66 */
+#endif
+
+static const double
+C2 = -0.0013888888888888874, /* -0x16c16c16c16c10.0p-62 */
+C3 =  0.000024801587301571716, /*  0x1a01a01a018e22.0p-68 */
+C4 = -0.00000027557319215507120, /* -0x127e4fb7602f22.0p-74 */
+C5 =  0.0000000020876754400407278, /*  0x11eed8caaeccf1.0p-81 */
+C6 = -1.1470297442401303e-11, /* -0x19393412bd1529.0p-89 */
+C7 =  4.7383039476436467e-14, /*  0x1aac9d9af5c43e.0p-97 */
+S2 =  0.0083333333333333332, /*  0x11111111111111.0p-59 */
+S3 = -0.00019841269841269427, /* -0x1a01a01a019f81.0p-65 */
+S4 =  0.0000027557319223597490, /*  0x171de3a55560f7.0p-71 */
+S5 = -0.000000025052108218074604, /* -0x1ae64564f16cad.0p-78 */
+S6 =  1.6059006598854211e-10, /*  0x161242b90243b5.0p-85 */
+S7 = -7.6429779983024564e-13, /* -0x1ae42ebd1b2e00.0p-93 */
+S8 =  2.6174587166648325e-15; /*  0x179372ea0b3f64.0p-101 */
+
+static inline void
+__kernel_sincosl(long double x, long double y, int iy, long double *sn,
+    long double *cs)
+{
+ long double hz, r, v, w, z;
+
+ z = x * x;
+ v = z * x;
+ /*
+ * XXX Replace Horner scheme with an algorithm suitable for CPUs
+ * with more complex pipelines.
+ */
+ r = S2 + z * (S3 + z * (S4 + z * (S5 + z * (S6 + z * (S7 + z * S8)))));
+
+ if (iy == 0)
+ *sn = x + v * (S1 + z * r);
+ else
+ *sn = x - ((z * (y / 2 - v * r) - y) - v * S1);
+
+ hz = z / 2;
+ w = 1 - hz;
+ r = z * (C1 + z * (C2 + z * (C3 + z * (C4 + z * (C5 + z * (C6 +
+    z * C7))))));
+ *cs = w + (((1 - w) - hz) + (z * r - x * y));
+}

Reply | Threaded
Open this post in threaded view
|

Re: Add sincos(3) to libm

Mark Kettenis
> Date: Fri, 2 Mar 2018 22:00:58 +0100 (CET)
> From: Mark Kettenis <[hidden email]>
>
> The diff below adds sincos(3) to our libm.  This function isn't
> standardized but is found on Linux, MacOS X and FreeBSD.  It is
> essentially an optimization.  Calculating both sin and cos of the same
> numbers is a fairly common operation.  By calculating both in the same
> function, argument reduction has to be done only once.  And argument
> reduction is a fairly expensive operation.
>
> Modern compilers know about this function and will replace separate
> sin(3) and cos(3) calls with a sincos(3) call if they know the latter
> is available.  In principle our clang knows about this as well, but it
> "knows" this function isn't available on OpenBSD.  Except on armv7,
> because we claim to be armv7-unknown-openbsd6.3-gnueabi and clang
> thinks that gnueabi implies a "GNU" environment that has sincos(3).
> Teaching it that OpenBSD is "special" isn't hard, but fixing this
> properly opens a can of worms.  Adding sincos(3) to libm is easier and
> happens to be the route chosen by FreeBSD.
>
> Diff below is adapted from FreeBSD.  Still needs a bit of testing and
> a man page.

I only got positive feedback.  So here is a diff that also works on
gcc architectures and has some regress tests.  Oh, and there is a man
page as well.

ok?


Index: include/math.h
===================================================================
RCS file: /cvs/src/include/math.h,v
retrieving revision 1.35
diff -u -p -r1.35 math.h
--- include/math.h 17 Mar 2016 20:55:35 -0000 1.35
+++ include/math.h 9 Mar 2018 20:05:01 -0000
@@ -273,6 +273,8 @@ int finite(double);
 double gamma_r(double, int *);
 double lgamma_r(double, int *);
 
+void sincos(double, double *, double *);
+
 /*
  * IEEE Test Vector
  */
@@ -382,6 +384,8 @@ int isnanf(float);
 float gammaf_r(float, int *);
 float lgammaf_r(float, int *);
 
+void sincosf(float, float *, float *);
+
 /*
  * Float version of IEEE Test Vector
  */
@@ -459,6 +463,13 @@ long double fminl(long double, long doub
 
 long double fmal(long double, long double, long double);
 #endif /* __ISO_C_VISIBLE >= 1999 */
+
+/*
+ * Long double versions of BSD math library entry points
+ */
+#if __BSD_VISIBLE
+void sincosl(long double, long double *, long double *);
+#endif
 
 /*
  * Library implementation
Index: lib/libm/Makefile
===================================================================
RCS file: /cvs/src/lib/libm/Makefile,v
retrieving revision 1.117
diff -u -p -r1.117 Makefile
--- lib/libm/Makefile 28 Feb 2018 16:00:00 -0000 1.117
+++ lib/libm/Makefile 9 Mar 2018 20:05:01 -0000
@@ -101,8 +101,8 @@ COMMON_SRCS = b_exp__D.c b_log__D.c b_tg
  s_nextafterf.c s_nexttowardf.c s_remquo.c s_remquof.c s_rint.c \
  s_rintf.c \
  s_scalbn.c s_scalbnf.c s_significand.c \
- s_significandf.c \
- s_sin.c s_sinf.c s_tan.c s_tanf.c s_tanh.c s_tanhf.c s_trunc.c \
+ s_significandf.c s_sin.c s_sinf.c s_sincos.c s_sincosf.c \
+ s_tan.c s_tanf.c s_tanh.c s_tanhf.c s_trunc.c \
  s_truncf.c w_drem.c w_dremf.c w_gamma.c w_gamma_r.c w_gammaf.c \
  w_gammaf_r.c w_lgamma.c w_lgammaf.c
 
@@ -119,7 +119,7 @@ LONG_SRCS = e_acoshl.c e_acosl.c e_asinl
  s_floorl.c s_fmal.c s_fmaxl.c s_fminl.c s_frexpl.c s_ilogbl.c \
  s_llrintl.c s_llroundl.c s_log1pl.c s_logbl.c s_lrintl.c \
  s_lroundl.c s_modfl.c s_nanl.c s_nextafterl.c s_nexttoward.c \
- s_remquol.c s_rintl.c s_roundl.c s_scalbnl.c s_sinl.c \
+ s_remquol.c s_rintl.c s_roundl.c s_scalbnl.c s_sinl.c s_sincosl.c \
  s_tanhl.c s_tanl.c s_truncl.c
 
 # math routines that are completely MI
@@ -158,7 +158,7 @@ MAN+= acos.3 acosh.3 asin.3 asinh.3 atan
  fdim.3 feclearexcept.3 feenableexcept.3 fegetenv.3 \
  fegetround.3 floor.3 fma.3 fmax.3 fmod.3 hypot.3 ilogb.3 j0.3 \
  lgamma.3 logb.3 lrint.3 lround.3 nan.3 nextafter.3 \
- remainder.3 rint.3 round.3 scalbn.3 sin.3 sinh.3 sqrt.3 \
+ remainder.3 rint.3 round.3 scalbn.3 sin.3 sincos.3 sinh.3 sqrt.3 \
  tan.3 tanh.3 trunc.3
 
 MAN+= cacos.3 cacosh.3 carg.3 casin.3 casinh.3 catan.3 catanh.3 \
Index: lib/libm/Symbols.map
===================================================================
RCS file: /cvs/src/lib/libm/Symbols.map,v
retrieving revision 1.1
diff -u -p -r1.1 Symbols.map
--- lib/libm/Symbols.map 12 Sep 2016 19:47:01 -0000 1.1
+++ lib/libm/Symbols.map 9 Mar 2018 20:05:01 -0000
@@ -255,6 +255,9 @@
  significand;
  significandf;
  sin;
+ sincos;
+ sincosf;
+ sincosl;
  sinf;
  sinh;
  sinhf;
Index: lib/libm/shlib_version
===================================================================
RCS file: /cvs/src/lib/libm/shlib_version,v
retrieving revision 1.20
diff -u -p -r1.20 shlib_version
--- lib/libm/shlib_version 12 Sep 2016 19:47:01 -0000 1.20
+++ lib/libm/shlib_version 9 Mar 2018 20:05:01 -0000
@@ -1,2 +1,2 @@
 major=10
-minor=0
+minor=1
Index: lib/libm/hidden/math.h
===================================================================
RCS file: /cvs/src/lib/libm/hidden/math.h,v
retrieving revision 1.1
diff -u -p -r1.1 math.h
--- lib/libm/hidden/math.h 12 Sep 2016 19:47:02 -0000 1.1
+++ lib/libm/hidden/math.h 9 Mar 2018 20:05:01 -0000
@@ -172,6 +172,9 @@ PROTO_NORMAL(scalbnl);
 PROTO_DEPRECATED(significand);
 PROTO_DEPRECATED(significandf);
 PROTO_NORMAL(sin);
+PROTO_DEPRECATED(sincos);
+PROTO_DEPRECATED(sincosf);
+PROTO_DEPRECATED(sincosl);
 PROTO_NORMAL(sinf);
 PROTO_NORMAL(sinh);
 PROTO_NORMAL(sinhf);
Index: lib/libm/man/sincos.3
===================================================================
RCS file: lib/libm/man/sincos.3
diff -N lib/libm/man/sincos.3
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/man/sincos.3 9 Mar 2018 20:05:01 -0000
@@ -0,0 +1,77 @@
+.\" Copyright (c) 2011 Steven G. Kargl.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD: head/lib/msun/man/sincos.3 319047 2017-05-28 06:13:38Z mmel $
+.\"
+.Dd $Mdocdate$
+.Dt SINCOS 3
+.Os
+.Sh NAME
+.Nm sincos ,
+.Nm sincosf ,
+.Nm sincosl
+.Nd sine and cosine functions
+.Sh SYNOPSIS
+.In math.h
+.Ft void
+.Fn sincos "double x" "double *s" "double *c"
+.Ft void
+.Fn sincosf "float x" "float *s" "float *c"
+.Ft void
+.Fn sincosl "long double x" "long double *s" "long double *c"
+.Sh DESCRIPTION
+The
+.Fn sincos ,
+.Fn sincosf ,
+and
+.Fn sincosl
+functions compute the sine and cosine of
+.Fa x .
+Using these functions allows argument reduction to occur only
+once instead of twice with individual invocations of
+.Fn sin
+and
+.Fn cos .
+Like
+.Fn sin
+and
+.Fn cos ,
+a large magnitude argument may yield a result with little
+or no significance.
+.Sh RETURN VALUES
+Upon returning from
+.Fn sincos ,
+.Fn sincosf ,
+and
+.Fn sincosl ,
+the memory pointed to by
+.Ar "*s"
+and
+.Ar "*c"
+are assigned the values of sine and cosine, respectively.
+.Sh SEE ALSO
+.Xr cos 3 ,
+.Xr sin 3 ,
+.Sh HISTORY
+These functions first appeared in
+.Ox 6.3 .
Index: lib/libm/src/k_sincos.h
===================================================================
RCS file: lib/libm/src/k_sincos.h
diff -N lib/libm/src/k_sincos.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/k_sincos.h 9 Mar 2018 20:05:01 -0000
@@ -0,0 +1,49 @@
+/*-
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunSoft, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *
+ * k_sin.c and k_cos.c merged by Steven G. Kargl.
+ */
+
+static const double
+S1  = -1.66666666666666324348e-01, /* 0xBFC55555, 0x55555549 */
+S2  =  8.33333333332248946124e-03, /* 0x3F811111, 0x1110F8A6 */
+S3  = -1.98412698298579493134e-04, /* 0xBF2A01A0, 0x19C161D5 */
+S4  =  2.75573137070700676789e-06, /* 0x3EC71DE3, 0x57B1FE7D */
+S5  = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */
+S6  =  1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */
+
+static const double
+C1  =  4.16666666666666019037e-02, /* 0x3FA55555, 0x5555554C */
+C2  = -1.38888888888741095749e-03, /* 0xBF56C16C, 0x16C15177 */
+C3  =  2.48015872894767294178e-05, /* 0x3EFA01A0, 0x19CB1590 */
+C4  = -2.75573143513906633035e-07, /* 0xBE927E4F, 0x809C52AD */
+C5  =  2.08757232129817482790e-09, /* 0x3E21EE9E, 0xBDB4B1C4 */
+C6  = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */
+
+static inline void
+__kernel_sincos(double x, double y, int iy, double *sn, double *cs)
+{
+ double hz, r, v, w, z;
+
+ z = x * x;
+ w = z * z;
+ r = S2 + z * (S3 + z * S4) + z * w * (S5 + z * S6);
+ v = z * x;
+
+ if (iy == 0)
+ *sn = x + v * (S1 + z * r);
+ else
+ *sn = x - ((z * (y / 2 - v * r) - y) - v * S1);
+
+ r = z * (C1 + z * (C2 + z * C3)) + w * w * (C4 + z * (C5 + z * C6));
+ hz = z / 2;
+ w = 1 - hz;
+ *cs = w + (((1 - w) - hz) + (z * r - x * y));
+}
Index: lib/libm/src/k_sincosf.h
===================================================================
RCS file: lib/libm/src/k_sincosf.h
diff -N lib/libm/src/k_sincosf.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/k_sincosf.h 9 Mar 2018 20:05:01 -0000
@@ -0,0 +1,40 @@
+/*-
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *
+ * k_sinf.c and k_cosf.c merged by Steven G. Kargl.
+ */
+
+/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */
+static const double
+S1 = -0x15555554cbac77.0p-55, /* -0.166666666416265235595 */
+S2 =  0x111110896efbb2.0p-59, /*  0.0083333293858894631756 */
+S3 = -0x1a00f9e2cae774.0p-65, /* -0.000198393348360966317347 */
+S4 =  0x16cd878c3b46a7.0p-71; /*  0.0000027183114939898219064 */
+
+/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */
+static const double
+C0  = -0x1ffffffd0c5e81.0p-54, /* -0.499999997251031003120 */
+C1  =  0x155553e1053a42.0p-57, /*  0.0416666233237390631894 */
+C2  = -0x16c087e80f1e27.0p-62, /* -0.00138867637746099294692 */
+C3  =  0x199342e0ee5069.0p-68; /*  0.0000243904487962774090654 */
+
+static inline void
+__kernel_sincosdf(double x, float *sn, float *cs)
+{
+ double r, s, w, z;
+
+ z = x * x;
+ w = z * z;
+ r = S3 + z * S4;
+ s = z * x;
+ *sn = (x + s * (S1 + z * S2)) + s * w * r;
+ r = C2 + z * C3;
+ *cs = ((1 + z * C0) + w * C1) + (w * z) * r;
+}
Index: lib/libm/src/s_sincos.c
===================================================================
RCS file: lib/libm/src/s_sincos.c
diff -N lib/libm/src/s_sincos.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/s_sincos.c 9 Mar 2018 20:05:01 -0000
@@ -0,0 +1,72 @@
+/*-
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *
+ * s_sin.c and s_cos.c merged by Steven G. Kargl.  Descriptions of the
+ * algorithms are contained in the original files.
+ */
+
+#include <float.h>
+#include "math.h"
+
+#include "math_private.h"
+#include "k_sincos.h"
+
+void
+sincos(double x, double *sn, double *cs)
+{
+ double y[2];
+ int32_t n, ix;
+
+ /* High word of x. */
+ GET_HIGH_WORD(ix, x);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffff;
+ if (ix <= 0x3fe921fb) {
+ if (ix < 0x3e400000) { /* |x| < 2**-27 */
+ if ((int)x == 0) { /* Generate inexact. */
+ *sn = x;
+ *cs = 1;
+ return;
+ }
+ }
+ __kernel_sincos(x, 0, 0, sn, cs);
+ return;
+ }
+
+ /* If x = Inf or NaN, then sin(x) = NaN and cos(x) = NaN. */
+ if (ix >= 0x7ff00000) {
+ *sn = x - x;
+ *cs = x - x;
+ return;
+ }
+
+ /* Argument reduction. */
+ n = __ieee754_rem_pio2(x, y);
+
+ switch(n & 3) {
+ case 0:
+ __kernel_sincos(y[0], y[1], 1, sn, cs);
+ break;
+ case 1:
+ __kernel_sincos(y[0], y[1], 1, cs, sn);
+ *cs = -*cs;
+ break;
+ case 2:
+ __kernel_sincos(y[0], y[1], 1, sn, cs);
+ *sn = -*sn;
+ *cs = -*cs;
+ break;
+ default:
+ __kernel_sincos(y[0], y[1], 1, cs, sn);
+ *sn = -*sn;
+ }
+}
+LDBL_MAYBE_CLONE(sincos);
Index: lib/libm/src/s_sincosf.c
===================================================================
RCS file: lib/libm/src/s_sincosf.c
diff -N lib/libm/src/s_sincosf.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/s_sincosf.c 9 Mar 2018 20:05:01 -0000
@@ -0,0 +1,120 @@
+/*-
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* s_sincosf.c -- float version of s_sincos.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, [hidden email].
+ * Optimized by Bruce D. Evans.
+ * Merged s_sinf.c and s_cosf.c by Steven G. Kargl.
+ */
+
+#include <float.h>
+#include "math.h"
+
+#include "math_private.h"
+#include "k_sincosf.h"
+
+/* Small multiples of pi/2 rounded to double precision. */
+static const double
+p1pio2 = 1*M_PI_2, /* 0x3FF921FB, 0x54442D18 */
+p2pio2 = 2*M_PI_2, /* 0x400921FB, 0x54442D18 */
+p3pio2 = 3*M_PI_2, /* 0x4012D97C, 0x7F3321D2 */
+p4pio2 = 4*M_PI_2; /* 0x401921FB, 0x54442D18 */
+
+void
+sincosf(float x, float *sn, float *cs)
+{
+ float c, s;
+ float y[2];
+ int32_t n, hx, ix;
+
+ GET_FLOAT_WORD(hx, x);
+ ix = hx & 0x7fffffff;
+
+ if (ix <= 0x3f490fda) { /* |x| ~<= pi/4 */
+ if (ix < 0x39800000) { /* |x| < 2**-12 */
+ if ((int)x == 0) {
+ *sn = x; /* x with inexact if x != 0 */
+ *cs = 1;
+ return;
+ }
+ }
+ __kernel_sincosdf(x, sn, cs);
+ return;
+ }
+
+ if (ix <= 0x407b53d1) { /* |x| ~<= 5*pi/4 */
+ if (ix <= 0x4016cbe3) { /* |x| ~<= 3pi/4 */
+ if (hx > 0) {
+ __kernel_sincosdf(x - p1pio2, cs, sn);
+ *cs = -*cs;
+ } else {
+ __kernel_sincosdf(x + p1pio2, cs, sn);
+ *sn = -*sn;
+ }
+ } else {
+ if (hx > 0)
+ __kernel_sincosdf(x - p2pio2, sn, cs);
+ else
+ __kernel_sincosdf(x + p2pio2, sn, cs);
+ *sn = -*sn;
+ *cs = -*cs;
+ }
+ return;
+ }
+
+ if (ix <= 0x40e231d5) { /* |x| ~<= 9*pi/4 */
+ if (ix <= 0x40afeddf) { /* |x| ~<= 7*pi/4 */
+ if (hx > 0) {
+ __kernel_sincosdf(x - p3pio2, cs, sn);
+ *sn = -*sn;
+ } else {
+ __kernel_sincosdf(x + p3pio2, cs, sn);
+ *cs = -*cs;
+ }
+ } else {
+ if (hx > 0)
+ __kernel_sincosdf(x - p4pio2, sn, cs);
+ else
+ __kernel_sincosdf(x + p4pio2, sn, cs);
+ }
+ return;
+ }
+
+ /* If x = Inf or NaN, then sin(x) = NaN and cos(x) = NaN. */
+ if (ix >= 0x7f800000) {
+ *sn = x - x;
+ *cs = x - x;
+ return;
+ }
+
+ /* Argument reduction. */
+ n = __ieee754_rem_pio2f(x, y);
+ s = __kernel_sinf(y[0], y[1], 1);
+ c = __kernel_cosf(y[0], y[1]);
+
+ switch(n & 3) {
+ case 0:
+ *sn = s;
+ *cs = c;
+ break;
+ case 1:
+ *sn = c;
+ *cs = -s;
+ break;
+ case 2:
+ *sn = -s;
+ *cs = -c;
+ break;
+ default:
+ *sn = -c;
+ *cs = s;
+ }
+}
Index: lib/libm/src/s_sincosl.c
===================================================================
RCS file: lib/libm/src/s_sincosl.c
diff -N lib/libm/src/s_sincosl.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/s_sincosl.c 9 Mar 2018 20:05:01 -0000
@@ -0,0 +1,121 @@
+/*-
+ * Copyright (c) 2007, 2010-2013 Steven G. Kargl
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice unmodified, this list of conditions, and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * s_sinl.c and s_cosl.c merged by Steven G. Kargl.
+ */
+
+#include <sys/types.h>
+#include <machine/ieee.h>
+#include <float.h>
+#include <math.h>
+
+#include "math_private.h"
+
+#if LDBL_MANT_DIG == 64
+#include "../ld80/k_sincosl.h"
+#define NX 3
+#define PREC 2
+#elif LDBL_MANT_DIG == 113
+#include "../ld128/k_sincosl.h"
+#define NX 5
+#define PREC 3
+#else
+#error "Unsupported long double format"
+#endif
+
+static const long double two24 = 1.67772160000000000000e+07L;
+
+void
+sincosl(long double x, long double *sn, long double *cs)
+{
+ union {
+ long double e;
+ struct ieee_ext bits;
+ } z;
+ int i, e0;
+ double xd[NX], yd[PREC];
+ long double hi, lo;
+
+ z.e = x;
+ z.bits.ext_sign = 0;
+
+ /* Optimize the case where x is already within range. */
+ if (z.e < M_PI_4) {
+ /*
+ * If x = +-0 or x is a subnormal number, then sin(x) = x and
+ * cos(x) = 1.
+ */
+ if (z.bits.ext_exp == 0) {
+ *sn = x;
+ *cs = 1;
+ } else
+ __kernel_sincosl(x, 0, 0, sn, cs);
+ }
+
+ /* If x = NaN or Inf, then sin(x) and cos(x) are NaN. */
+ if (z.bits.ext_exp == 32767) {
+ *sn = x - x;
+ *cs = x - x;
+ }
+
+ /* Split z.e into a 24-bit representation. */
+ e0 = ilogbl(z.e) - 23;
+ z.e = scalbnl(z.e, -e0);
+ for (i = 0; i < NX; i++) {
+ xd[i] = (double)((int32_t)z.e);
+ z.e = (z.e - xd[i]) * two24;
+ }
+
+ /* yd contains the pieces of xd rem pi/2 such that |yd| < pi/4. */
+ e0 = __kernel_rem_pio2(xd, yd, e0, NX, PREC);
+
+#if PREC == 2
+ hi = (long double)yd[0] + yd[1];
+ lo = yd[1] - (hi - yd[0]);
+#else /* PREC == 3 */
+ long double t;
+ t = (long double)yd[2] + yd[1];
+ hi = t + yd[0];
+ lo = yd[0] - (hi - t);
+#endif
+
+ switch (e0 & 3) {
+ case 0:
+ __kernel_sincosl(hi, lo, 1, sn, cs);
+ break;
+ case 1:
+ __kernel_sincosl(hi, lo, 1, cs, sn);
+ *cs = -*cs;
+ break;
+ case 2:
+ __kernel_sincosl(hi, lo, 1, sn, cs);
+ *sn = -*sn;
+ *cs = -*cs;
+ break;
+ default:
+ __kernel_sincosl(hi, lo, 1, cs, sn);
+ *sn = -*sn;
+ }
+}
Index: lib/libm/src/ld128/k_sincosl.h
===================================================================
RCS file: lib/libm/src/ld128/k_sincosl.h
diff -N lib/libm/src/ld128/k_sincosl.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/ld128/k_sincosl.h 9 Mar 2018 20:05:01 -0000
@@ -0,0 +1,68 @@
+/*-
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans.
+ *
+ * Developed at SunSoft, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *
+ * k_sinl.c and k_cosl.c merged by Steven G. Kargl
+ */
+
+static const long double
+C1 =  0.04166666666666666666666666666666658424671L,
+C2 = -0.001388888888888888888888888888863490893732L,
+C3 =  0.00002480158730158730158730158600795304914210L,
+C4 = -0.2755731922398589065255474947078934284324e-6L,
+C5 =  0.2087675698786809897659225313136400793948e-8L,
+C6 = -0.1147074559772972315817149986812031204775e-10L,
+C7 =  0.4779477332386808976875457937252120293400e-13L,
+S1 = -0.16666666666666666666666666666666666606732416116558L,
+S2 =  0.0083333333333333333333333333333331135404851288270047L,
+S3 = -0.00019841269841269841269841269839935785325638310428717L,
+S4 =  0.27557319223985890652557316053039946268333231205686e-5L,
+S5 = -0.25052108385441718775048214826384312253862930064745e-7L,
+S6 =  0.16059043836821614596571832194524392581082444805729e-9L,
+S7 = -0.76471637318198151807063387954939213287488216303768e-12L,
+S8 =  0.28114572543451292625024967174638477283187397621303e-14L;
+
+static const double
+C8  = -0.1561920696721507929516718307820958119868e-15,
+C9  =  0.4110317413744594971475941557607804508039e-18,
+C10 = -0.8896592467191938803288521958313920156409e-21,
+C11 =  0.1601061435794535138244346256065192782581e-23,
+S9  = -0.82206352458348947812512122163446202498005154296863e-17,
+S10 =  0.19572940011906109418080609928334380560135358385256e-19,
+S11 = -0.38680813379701966970673724299207480965452616911420e-22,
+S12 =  0.64038150078671872796678569586315881020659912139412e-25;
+
+static inline void
+__kernel_sincosl(long double x, long double y, int iy, long double *sn,
+    long double *cs)
+{
+ long double hz, r, v, w, z;
+
+ z = x * x;
+ v = z * x;
+ /*
+ * XXX Replace Horner scheme with an algorithm suitable for CPUs
+ * with more complex pipelines.
+ */
+ r = S2 + z * (S3 + z * (S4 + z * (S5 + z * (S6 + z * (S7 + z * (S8 +
+    z * (S9 + z * (S10 + z * (S11 + z * S12)))))))));
+
+ if (iy == 0)
+ *sn = x + v * (S1 + z * r);
+ else
+ *cs = x - ((z * (y / 2 - v * r) - y) - v * S1);
+
+ hz = z / 2;
+ w = 1 - hz;
+ r = z * (C1 + z * (C2 + z * (C3 + z * (C4 + z * (C5 + z * (C6 +
+    z * (C7 + z * (C8 + z * (C9 + z * (C10 + z * C11))))))))));
+
+ *cs =  w + (((1 - w) - hz) + (z * r - x * y));
+}
Index: lib/libm/src/ld80/k_sincosl.h
===================================================================
RCS file: lib/libm/src/ld80/k_sincosl.h
diff -N lib/libm/src/ld80/k_sincosl.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/libm/src/ld80/k_sincosl.h 9 Mar 2018 20:05:01 -0000
@@ -0,0 +1,69 @@
+/*-
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans.
+ *
+ * Developed at SunSoft, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ *
+ * k_sinl.c and k_cosl.c merged by Steven G. Kargl
+ */
+
+#if defined(__amd64__) || defined(__i386__)
+/* Long double constants are slow on these arches, and broken on i386. */
+static const volatile double
+C1hi = 0.041666666666666664, /*  0x15555555555555.0p-57 */
+C1lo = 2.2598839032744733e-18, /*  0x14d80000000000.0p-111 */
+S1hi = -0.16666666666666666, /* -0x15555555555555.0p-55 */
+S1lo = -9.2563760475949941e-18; /* -0x15580000000000.0p-109 */
+#define S1 ((long double)S1hi + S1lo)
+#define C1 ((long double)C1hi + C1lo)
+#else
+static const long double
+C1 =  0.0416666666666666666136L; /*  0xaaaaaaaaaaaaaa9b.0p-68 */
+S1 = -0.166666666666666666671L, /* -0xaaaaaaaaaaaaaaab.0p-66 */
+#endif
+
+static const double
+C2 = -0.0013888888888888874, /* -0x16c16c16c16c10.0p-62 */
+C3 =  0.000024801587301571716, /*  0x1a01a01a018e22.0p-68 */
+C4 = -0.00000027557319215507120, /* -0x127e4fb7602f22.0p-74 */
+C5 =  0.0000000020876754400407278, /*  0x11eed8caaeccf1.0p-81 */
+C6 = -1.1470297442401303e-11, /* -0x19393412bd1529.0p-89 */
+C7 =  4.7383039476436467e-14, /*  0x1aac9d9af5c43e.0p-97 */
+S2 =  0.0083333333333333332, /*  0x11111111111111.0p-59 */
+S3 = -0.00019841269841269427, /* -0x1a01a01a019f81.0p-65 */
+S4 =  0.0000027557319223597490, /*  0x171de3a55560f7.0p-71 */
+S5 = -0.000000025052108218074604, /* -0x1ae64564f16cad.0p-78 */
+S6 =  1.6059006598854211e-10, /*  0x161242b90243b5.0p-85 */
+S7 = -7.6429779983024564e-13, /* -0x1ae42ebd1b2e00.0p-93 */
+S8 =  2.6174587166648325e-15; /*  0x179372ea0b3f64.0p-101 */
+
+static inline void
+__kernel_sincosl(long double x, long double y, int iy, long double *sn,
+    long double *cs)
+{
+ long double hz, r, v, w, z;
+
+ z = x * x;
+ v = z * x;
+ /*
+ * XXX Replace Horner scheme with an algorithm suitable for CPUs
+ * with more complex pipelines.
+ */
+ r = S2 + z * (S3 + z * (S4 + z * (S5 + z * (S6 + z * (S7 + z * S8)))));
+
+ if (iy == 0)
+ *sn = x + v * (S1 + z * r);
+ else
+ *sn = x - ((z * (y / 2 - v * r) - y) - v * S1);
+
+ hz = z / 2;
+ w = 1 - hz;
+ r = z * (C1 + z * (C2 + z * (C3 + z * (C4 + z * (C5 + z * (C6 +
+    z * C7))))));
+ *cs = w + (((1 - w) - hz) + (z * r - x * y));
+}
Index: regress/lib/libm/fpaccuracy/Makefile
===================================================================
RCS file: /cvs/src/regress/lib/libm/fpaccuracy/Makefile,v
retrieving revision 1.1
diff -u -p -r1.1 Makefile
--- regress/lib/libm/fpaccuracy/Makefile 9 Apr 2009 01:24:43 -0000 1.1
+++ regress/lib/libm/fpaccuracy/Makefile 9 Mar 2018 20:05:01 -0000
@@ -4,7 +4,7 @@ PROG = fpaccuracy
 SRCS = Gamma.c INV.c Pix.c acos.c acosh.c asin.c asinh.c atan.c \
        atanh.c cos.c cosh.c erf.c erfc.c exp.c fpaccuracy.c j0.c \
        j1.c lgamma.c log.c log10.c pow2_x.c powx_275.c sin.c \
-       sinh.c sqrt.c tan.c tanh.c y0.c y1.c
+       sincos.c sincos2.c sinh.c sqrt.c tan.c tanh.c y0.c y1.c
 LDADD = -lm
 DPADD = ${LIBM}
 CLEANFILES += fpaccuracy.out
Index: regress/lib/libm/fpaccuracy/fpaccuracy.c
===================================================================
RCS file: /cvs/src/regress/lib/libm/fpaccuracy/fpaccuracy.c,v
retrieving revision 1.1
diff -u -p -r1.1 fpaccuracy.c
--- regress/lib/libm/fpaccuracy/fpaccuracy.c 9 Apr 2009 01:24:43 -0000 1.1
+++ regress/lib/libm/fpaccuracy/fpaccuracy.c 9 Mar 2018 20:05:01 -0000
@@ -42,6 +42,8 @@ main(int argc, char *argv[])
  retval |= fpaccuracy_pow2_x(out);
  retval |= fpaccuracy_powx_275(out);
  retval |= fpaccuracy_sin(out);
+ retval |= fpaccuracy_sincos_sin(out);
+ retval |= fpaccuracy_sincos_cos(out);
  retval |= fpaccuracy_sinh(out);
  retval |= fpaccuracy_sqrt(out);
  retval |= fpaccuracy_tan(out);
Index: regress/lib/libm/fpaccuracy/fpaccuracy.h
===================================================================
RCS file: /cvs/src/regress/lib/libm/fpaccuracy/fpaccuracy.h,v
retrieving revision 1.1
diff -u -p -r1.1 fpaccuracy.h
--- regress/lib/libm/fpaccuracy/fpaccuracy.h 9 Apr 2009 01:24:43 -0000 1.1
+++ regress/lib/libm/fpaccuracy/fpaccuracy.h 9 Mar 2018 20:05:01 -0000
@@ -26,6 +26,8 @@ int fpaccuracy_log10(FILE *);
 int fpaccuracy_pow2_x(FILE *);
 int fpaccuracy_powx_275(FILE *);
 int fpaccuracy_sin(FILE *);
+int fpaccuracy_sincos_sin(FILE *);
+int fpaccuracy_sincos_cos(FILE *);
 int fpaccuracy_sinh(FILE *);
 int fpaccuracy_sqrt(FILE *);
 int fpaccuracy_tan(FILE *);
Index: regress/lib/libm/fpaccuracy/sincos.c
===================================================================
RCS file: regress/lib/libm/fpaccuracy/sincos.c
diff -N regress/lib/libm/fpaccuracy/sincos.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ regress/lib/libm/fpaccuracy/sincos.c 9 Mar 2018 20:05:01 -0000
@@ -0,0 +1,1299 @@
+/* $OpenBSD: sin.c,v 1.1 2009/04/09 01:24:43 martynas Exp $ */
+
+/*
+ * Copyright (c) 2009 Gaston H. Gonnet <[hidden email]>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* This program was generated automatically by a program written
+   by Gaston H. Gonnet on enigma on 2002-09-01 17:42:09.
+   Do not edit, rerun the original maple program.       */
+#include "header.h"
+#define DBL_MAX_EXP 1024
+#define N 1257
+#define F sincos_sin
+#define Fs "sincos sin"
+#define Fn fpaccuracy_sincos_sin
+
+double sincos_sin(double);
+
+static struct input_point { double arg_m, val, eps;
+ int arg_e, val_e; } input_points[N] = {
+ -7958517471031996.,6212835604728892.,.130833791443020784676,-48,101,
+ -7958517471031995.,-5588727300024200.,.261667582886055137131,-48,102,
+ -7958517471031969.,-7405673258539934.,-.120911444006621323138,-48,96,
+ -7958517471029387.,-5735734868167607.,-.235319538568943385656,-48,89,
+ -7958517470771212.,-8960446310473519.,.138230043465246743807,-48,83,
+ -7074237752028441.,-6523320454730237.,.439258852050649861914,-48,101,
+ -7074237752028440.,4967757600021511.,-.121482295898715466354,-48,102,
+ -7074237752028407.,4683147721975992.,.053738419552382839132,-48,95,
+ -7074237752025168.,7195810507888803.,-.124160499281507210719,-48,89,
+ -7074237751701192.,5622082568348465.,.271200950923179606269,-48,82,
+ -6189958033024886.,6833805304731581.,-.009351495544320606337,-48,101,
+ -6189958033024885.,-8693575800037644.,-.037405982177248259838,-48,103,
+ -6189958033024884.,-5590296602375202.,.495324252227861954253,-48,100,
+ -6189958033024814.,-5013160476848593.,.476489441494583545252,-48,94,
+ -6189958033017771.,-7822191026877127.,-.258179019650541974984,-48,88,
+ -6189958032313442.,-6111250908646246.,.449802454767560031340,-48,81,
+ -5305678314198564.,-6089706763479862.,-.090896353359190238911,-48,83,
+ -5305678314023102.,-7792428794092300.,.313759545668310313647,-48,90,
+ -5305678314021348.,-5008333671416556.,.080607629348272501979,-48,96,
+ -5305678314021331.,-7144290154732925.,-.420555860962008546748,-48,101,
+ -5305678314021330.,7451636400032266.,.317776556151927322001,-48,103,
+ -8842797190035551.,5902350754727548.,-.299073565063304663147,-49,102,
+ -8842797190035550.,-6209697000026889.,.401852869873393727593,-49,103,
+ -8842797190035547.,-7531611566059105.,-.074768391265781521372,-49,100,
+ -8842797190035219.,-5829077737928285.,.241603372279800849465,-49,93,
+ -8842797190002404.,-4555598928011245.,.275327658586077643888,-49,86,
+ -7074237752028441.,-6523320454730237.,.439258852050644463614,-49,102,
+ -7074237752028440.,4967757600021511.,-.121482295898714870318,-49,103,
+ -7074237752028432.,4658842052371168.,.214953678252997362028,-49,98,
+ -7074237752027622.,7197629755056780.,-.496641351311827911854,-49,92,
+ -7074237751946628.,5622096781216965.,.089850199524424779073,-49,85,
+ -5611213340383481.,4652070016093056.,-.499998959884557667038,-49,53,
+ -5611213340369957.,4652070015907767.,-.497442054272881026266,-49,53,
+ -5611213340369917.,4652070015907218.,.472396915142160649035,-49,53,
+ -5611213340369897.,4652070015906944.,.457316399840873879892,-49,53,
+ -5611213340369820.,4652070015905889.,.499256415876099806074,-49,53,
+ -5611213340369556.,4652070015902273.,-.499806386949586537223,-49,53,
+ -5611213340361068.,4652070015785981.,-.499977653344776178378,-49,53,
+ -5589917886911323.,8714095416787853.,-.499998315907917689630,-49,54,
+ -5589917886910908.,8714095416776230.,-.389376806057253401320,-49,54,
+ -5589917886910893.,8714095416775810.,-.493812173259762111249,-49,54,
+ -5589917886910892.,8714095416775781.,.499225468926517333395,-49,54,
+ -5584028471356741.,8548676923307456.,.499554512628701620738,-49,54,
+ -5584028471356586.,8548676923303091.,-.442341916454404957759,-49,54,
+ -5584028471356562.,8548676923302415.,-.459151686176827992968,-49,54,
+ -5584028471356508.,8548676923300894.,-.496973668109088894332,-49,54,
+ -5584028471356502.,8548676923300724.,.498823889449137751487,-49,54,
+ -5584028471355552.,8548676923273966.,-.499896176080930915301,-49,54,
+ -5584028471354124.,8548676923233742.,.499922458563984758803,-49,54,
+ -5584028471315813.,8548676922154622.,.499938137545812416381,-49,54,
+ -5584028471277502.,8548676921075502.,.499914224631142269594,-49,54,
+ -5555479367778394.,7733877897149014.,.498194433718948127849,-49,54,
+ -5555479367778323.,7733877897146963.,-.467976183757718174230,-49,54,
+ -5555479367778303.,7733877897146385.,-.486615794336733055531,-49,54,
+ -5555479367778293.,7733877897146096.,-.495935599629901068532,-49,54,
+ -5555479367778182.,7733877897142888.,-.499385438547949837018,-49,54,
+ -5555479367777001.,7733877897108755.,.499945535966937517766,-49,54,
+ -5555479367774104.,7733877897025029.,.499997748435205964563,-49,54,
+ -5545533983891579.,7445255117838313.,.499953679017880276498,-49,54,
+ -5545533983828595.,7445255116003015.,.499866878281156920177,-49,54,
+ -5545533983828480.,7445255115999665.,-.498323381954439508972,-49,54,
+ -5545533983828365.,7445255115996314.,-.496513642500731957644,-49,54,
+ -5545533983828343.,7445255115995672.,.442963003272399324280,-49,54,
+ -5545533983828329.,7445255115995264.,.495357232394835337739,-49,54,
+ -5545533983827488.,7445255115970758.,.499896273374760833679,-49,54,
+ -5545533983824167.,7445255115873987.,.499984285918123912375,-49,54,
+ -5545533983823060.,7445255115841731.,-.499986434146571281581,-49,54,
+ -5544198963895300.,7406332917910339.,-.499994971767098549189,-49,54,
+ -5544198963889625.,7406332917744797.,-.499933748091774878947,-49,54,
+ -5544198963889044.,7406332917727848.,.499720054538118231755,-49,54,
+ -5544198963888997.,7406332917726477.,.491086196574639771345,-49,54,
+ -5544198963846191.,7406332916477809.,.499981272734332414279,-49,54,
+ -5539725571708487.,7275609834821478.,.499985253055923466757,-49,54,
+ -5539725571705812.,7275609834743170.,.499796602236188531044,-49,54,
+ -5539725571705768.,7275609834741882.,.442971067914837318139,-49,54,
+ -5539725571705750.,7275609834741356.,-.489366650683980435597,-49,54,
+ -5539725571705739.,7275609834741033.,.496426965724191393968,-49,54,
+ -5539725571704334.,7275609834699904.,-.499933870432698202045,-49,54,
+ -5539725571682372.,7275609834056988.,-.499994340368070567080,-49,54,
+ -5537279579438704.,7203937359838968.,.499999058449149989697,-49,54,
+ -5537279579436764.,7203937359782069.,-.499799330481731796179,-49,54,
+ -5537279579434630.,7203937359719479.,-.499577657119091292292,-49,54,
+ -5537279579434627.,7203937359719391.,-.489268067210660436512,-49,54,
+ -5537279579434606.,7203937359718775.,-.417100937857372813839,-49,54,
+ -5522619698292048.,6771570642152360.,.499911939891685382213,-49,54,
+ -5522619698198654.,6771570639382933.,.499855746087560314850,-49,54,
+ -5522619698197691.,6771570639354378.,-.490905381817256626937,-49,54,
+ -5522619698197688.,6771570639354289.,-.450378157947609811314,-49,54,
+ -5522619698197642.,6771570639352925.,-.495627391970439596103,-49,54,
+ -5522619698197593.,6771570639351471.,.499650597825074524915,-49,54,
+ -5522619698194632.,6771570639263669.,-.499979542608105490634,-49,54,
+ -5522215089853399.,6759570976392264.,.499936161964552260624,-49,54,
+ -5522215089853198.,6759570976386302.,.479076040222845856731,-49,54,
+ -5522215089853195.,6759570976386213.,.493690068250024921094,-49,54,
+ -5522215089852920.,6759570976378056.,.499975969926121114745,-49,54,
+ -5522215089852441.,6759570976363849.,-.499984227006159248299,-49,54,
+ -5522215089827465.,6759570975623015.,.499996720135387389244,-49,54,
+ -5512667243258777.,6475406094855963.,-.499449014049899453593,-49,54,
+ -5512667243258525.,6475406094848437.,.485772164743541172920,-49,54,
+ -5512667243258460.,6475406094846497.,-.490262055222627687090,-49,54,
+ -5512667243258316.,6475406094842197.,-.498707096685920387008,-49,54,
+ -5512667243257819.,6475406094827355.,.499923555564536308278,-49,54,
+ -5512667243256400.,6475406094784983.,-.499961994257300891459,-49,54,
+ -5512667243248347.,6475406094544510.,.499982023697618042065,-49,54,
+ -5512667243195772.,6475406092974559.,.499956505097263724003,-49,54,
+ -5486380295692487.,5683674037828652.,.499988359788258983742,-49,54,
+ -5486380295690170.,5683674037758296.,-.458277432697175324799,-49,54,
+ -5486380295690148.,5683674037757627.,.499822762165220324823,-49,54,
+ -5486380295662463.,5683674036916957.,.499992918459051883178,-49,54,
+ -5482520377149080.,5566332839437440.,.487703427588966263896,-49,54,
+ -5482520377149057.,5566332839436741.,-.495500261287941987039,-49,54,
+ -5482520377149004.,5566332839435127.,.499726020829895036327,-49,54,
+ -5482520377148587.,5566332839422436.,.499902616149026765141,-49,54,
+ -5482520377148170.,5566332839409746.,-.499920791586071278634,-49,54,
+ -5482520377119890.,5566332838549071.,-.499942237071479593698,-49,54,
+ -5482520376995458.,5566332834762100.,.499796522579056940346,-49,54,
+ -5468820810102350.,5147792518152047.,.499920089577544279220,-49,54,
+ -5468820810014038.,5147792515443904.,-.499966681744417248146,-49,54,
+ -5468820810002999.,5147792515105386.,-.499961435610613204563,-49,54,
+ -5468820810001172.,5147792515049359.,.375752621569139357980,-49,54,
+ -5468820810001109.,5147792515047427.,.440432415677242355858,-49,54,
+ -5468820810001052.,5147792515045679.,.498952229338544443015,-49,54,
+ -5468820810000726.,5147792515035683.,-.499688837402113392338,-49,54,
+ -5468820810000077.,5147792515015780.,.499949033793940553710,-49,54,
+ -5468088758213645.,5125339332333894.,.499975877850471021692,-49,54,
+ -5468088758161793.,5125339330743205.,-.499979960944669530267,-49,54,
+ -5468088758157272.,5125339330604511.,.498980402986912199716,-49,54,
+ -5468088758157179.,5125339330601658.,.490996173426713311532,-49,54,
+ -5468088758157117.,5125339330599756.,.485673353642204136528,-49,54,
+ -5468088758157114.,5125339330599664.,.453157733328473626638,-49,54,
+ -5468088758156903.,5125339330593191.,.499559104230962947533,-49,54,
+ -5468088758156534.,5125339330581872.,-.499862196727079936656,-49,54,
+ -5468088758153151.,5125339330478090.,-.499976828204930801832,-49,54,
+ -5465050034923429.,5032044667506620.,-.499991903237315811647,-49,54,
+ -5465050034923261.,5032044667501457.,.497994140674588895473,-49,54,
+ -5465050034923009.,5032044667493714.,.494973205702164560771,-49,54,
+ -5465050034922987.,5032044667493039.,-.481481002954396447392,-49,54,
+ -5465050034922976.,5032044667492701.,-.469708107285558868958,-49,54,
+ -5465050034910518.,5032044667109913.,.499993772397313803075,-49,54,
+ -5418613610005258.,7179474664950594.,.499626489065263885410,-49,55,
+ -5418613610005191.,7179474664946392.,.497470679233703312017,-49,55,
+ -5418613610003410.,7179474664834694.,.499866204489753984131,-49,55,
+ -5418613610002486.,7179474664776744.,.499986033189289251994,-49,55,
+ -5418613609935690.,7179474660587536.,.499939208604795184661,-49,55,
+ -5413189175949861.,6838945386852834.,-.499994430708534262693,-49,55,
+ -5413189175913193.,6838945384548748.,-.499979024543708126849,-49,55,
+ -5413189175912759.,6838945384521476.,.491948550330228003409,-49,55,
+ -5413189175912741.,6838945384520345.,.436314210029839216095,-49,55,
+ -5413189175912710.,6838945384518398.,-.492833820503886967775,-49,55,
+ -5413189175912600.,6838945384511486.,-.499488122565106247413,-49,55,
+ -5398648100197461.,5923056452061726.,-.499918759733346049624,-49,55,
+ -5398648100196958.,5923056452029972.,-.499263816261055743070,-49,55,
+ -5398648100196935.,5923056452028520.,-.471400866672594514359,-49,55,
+ -5398648100196927.,5923056452028014.,.494812333181944021226,-49,55,
+ -5398648100192903.,5923056451773983.,-.499948291604580587179,-49,55,
+ -5398648100183787.,5923056451198496.,.499991479786349834335,-49,55,
+ -5398648100150194.,5923056449077796.,.499975520867696132095,-49,55,
+ -5358514779854742.,6753142658154098.,.499846278992070624700,-49,56,
+ -5358514779729599.,6753142642206296.,-.439943425700363057491,-49,56,
+ -5358514779729592.,6753142642205404.,-.496395482115909679733,-49,56,
+ -5358514779729450.,6753142642187308.,-.498708626770999343783,-49,56,
+ -5358514779729379.,6753142642178260.,-.499865199259673395736,-49,56,
+ -5358514779728511.,6753142642067645.,-.499920206819331293038,-49,56,
+ -5358514779727643.,6753142641957030.,-.499975230433822410286,-49,56,
+ -5357868470797996.,6670774773654320.,-.499959177001602339099,-49,56,
+ -5357868470793064.,6670774773025735.,-.499507634405544337416,-49,56,
+ -5357868470792944.,6670774773010440.,.461573905262571767782,-49,56,
+ -5357868470792933.,6670774773009039.,-.491993620283016909869,-49,56,
+ -5357868470792913.,6670774773006490.,-.498480030372430683336,-49,56,
+ -5357868470792138.,6670774772907716.,-.499828427821700124302,-49,56,
+ -5357868470785354.,6670774772043092.,.499980673381329165717,-49,56,
+ -5357868470738641.,6670774766089505.,.499966539808520790108,-49,56,
+ -5340868642030055.,9002858075942352.,-.499999567510129621708,-49,57,
+ -5340868642030053.,9002858075941841.,-.499986682883159495444,-49,57,
+ -5340868642029943.,9002858075913736.,-.499278028574795899252,-49,57,
+ -5340868642026707.,9002858075086938.,-.478430861081203575908,-49,57,
+ -5340868642025337.,9002858074736903.,-.469605048527975030810,-49,57,
+ -5340868642025317.,9002858074731793.,-.469476204943967136017,-49,57,
+ -5334469363683153.,7367296052893990.,.499999809069905540594,-49,57,
+ -5334469363655190.,7367296045744822.,.470704330379467058803,-49,57,
+ -5334469363655175.,7367296045740987.,.491609112821074163907,-49,57,
+ -5334469363655169.,7367296045739453.,.499971025796252439448,-49,57,
+ -5334469363643210.,7367296042681952.,.499988907616124526959,-49,57,
+ -5325827369906433.,5157057057842082.,.499972107232987246078,-49,57,
+ -5325827369870741.,5157057048710782.,.499970344688235904690,-49,57,
+ -5325827369852895.,5157057044145132.,.499961689579452355385,-49,57,
+ -5325827369851541.,5157057043798730.,.499512541657770195514,-49,57,
+ -5325827369851071.,5157057043678488.,-.440082073532463514451,-49,57,
+ -5325827369851053.,5157057043673883.,-.488832505675048997707,-49,57,
+ -5325827369851047.,5157057043672347.,.494917350276250866076,-49,57,
+ -5325827369850864.,5157057043625529.,.499287956509482997091,-49,57,
+ -5317788020392809.,6199691505849210.,.499994874906830447356,-49,58,
+ -5317788020390040.,6199691504431810.,.499980448898540918953,-49,58,
+ -5317788020389736.,6199691504276199.,-.489909190252342854372,-49,58,
+ -5317788020389719.,6199691504267497.,-.476185913547710102449,-49,58,
+ -5317788020389677.,6199691504245997.,.498895122992438415707,-49,58,
+ -5307605800727999.,7894970124880674.,.499988124870354061428,-49,61,
+ -5307605800692179.,7894969978162814.,.499707353695941054856,-49,61,
+ -5307605800691221.,7894969974238870.,-.499742247059479801221,-49,61,
+ -5307605800678684.,7894969922887619.,-.499848367687876068394,-49,61,
+ -5307605800660774.,7894969849528688.,.499993239049629048278,-49,61,
+ -5305678314065639.,6089754163653848.,.365188728149908596756,-49,86,
+ -5305678314021773.,7789699923340335.,-.255037977637273428780,-49,93,
+ -5305678314021334.,8541471979738975.,.355138965240439868439,-49,100,
+ -5305678314021331.,7144290154732925.,.420555860962015638086,-49,102,
+ -5305678314021330.,-7451636400032266.,-.317776556151927824906,-49,104,
+ -5299460840261238.,-6366563696336530.,-.499997766638501205250,-49,59,
+ -5299460840243913.,-6366563714076249.,.499696208616982453112,-49,59,
+ -5299460840243897.,-6366563714092632.,.498945568033319992978,-49,59,
+ -5299460840243417.,-6366563714584122.,.476426352914880372482,-49,59,
+ -5299460840243305.,-6366563714698803.,.471171870053246023999,-49,59,
+ -5299460840242584.,-6366563715437062.,.499846142664231251180,-49,59,
+ -5299460840241255.,-6366563716797875.,.499996112194083414221,-49,59,
+ -5266341419853530.,-5031025950084337.,-.499985273828726109257,-49,56,
+ -5266341419832068.,-5031025952824769.,-.499976674386093474558,-49,56,
+ -5266341419812069.,-5031025955378394.,-.491481975117204309773,-49,56,
+ -5266341419812037.,-5031025955382480.,-.495768592841602642216,-49,56,
+ -5266341419812005.,-5031025955386567.,.499944789450255146948,-49,56,
+ -5266341419810606.,-5031025955565201.,-.499960762586839321008,-49,56,
+ -5242088987178115.,-8122135881181049.,.499999686447252564259,-49,56,
+ -5242088987167728.,-8122135882502112.,.499094325479729869910,-49,56,
+ -5242088987167690.,-8122135882506945.,.496876712021787047118,-49,56,
+ -5242088987167652.,-8122135882511778.,.494659098600852416370,-49,56,
+ -5242088987167283.,-8122135882558709.,.499440696516818663247,-49,56,
+ -5242088987166393.,-8122135882671902.,-.499866546183490115412,-49,56,
+ -5242088987163685.,-8122135883016318.,.499994237962218467258,-49,56,
+ -5208774931143459.,-6171234740779278.,.499999901220162336585,-49,55,
+ -5208774931125089.,-6171234741937583.,.499859190769440055705,-49,55,
+ -5208774931124849.,-6171234741952715.,-.499598238280683264229,-49,55,
+ -5208774931124812.,-6171234741955049.,.496318741507212026866,-49,55,
+ -5208774931124738.,-6171234741959715.,.488152701162978151466,-49,55,
+ -5208774931119458.,-6171234742292640.,-.499910442751117803191,-49,55,
+ -5208774931108436.,-6171234742987623.,-.499990506212703052710,-49,55,
+ -5161411928706809.,-4566159379852245.,.499995283505396611547,-49,54,
+ -5161411928699038.,-4566159380092796.,.499966325677312653601,-49,54,
+ -5161411928695974.,-4566159380187641.,-.499787485701841872908,-49,54,
+ -5161411928695530.,-4566159380201386.,.497637234313890733334,-49,54,
+ -5161411928695330.,-4566159380207576.,-.494513791778157687485,-49,54,
+ -5161411928695308.,-4566159380208258.,.496349595386901953454,-49,54,
+ -5161411928674193.,-4566159380861871.,-.499991735252788297500,-49,54,
+ -5120907462136485.,-5807077948366709.,-.499992327046999084216,-49,54,
+ -5120907462135402.,-5807077948399515.,-.492508340717233961295,-49,54,
+ -5120907462135354.,-5807077948400969.,-.497716806199694032913,-49,54,
+ -5120907462135330.,-5807077948401697.,.499678961074907786984,-49,54,
+ -5119822908964471.,-5839920192101598.,-.499983317297960421500,-49,54,
+ -5119822908932313.,-5839920193075081.,.485312256992592576282,-49,54,
+ -5119822908932302.,-5839920193075414.,.495009326342811597355,-49,54,
+ -5119822908932291.,-5839920193075746.,-.495293604304739649363,-49,54,
+ -5119822908929922.,-5839920193147460.,-.497806525450835266515,-49,54,
+ -5119822908927862.,-5839920193209820.,-.499991590209490134858,-49,54,
+ -5095830265926884.,-6560698847046669.,-.499963642042803225310,-49,54,
+ -5095830265902192.,-6560698847782550.,.499983110454627245500,-49,54,
+ -5095830265871327.,-6560698848702400.,.499934300555017496062,-49,54,
+ -5095830265869551.,-6560698848755329.,.499446104674266205616,-49,54,
+ -5095830265869465.,-6560698848757892.,.496044087837560189246,-49,54,
+ -5095830265869455.,-6560698848758190.,.472392690540903385772,-49,54,
+ -7074237752028441.,-6523320454730237.,.439258852050643114039,-50,103,
+ -7074237752028440.,4967757600021511.,-.121482295898714721309,-50,104,
+ -7074237752028438.,5124569327373185.,-.140185286987342823443,-50,101,
+ -7074237752028235.,7222498929773102.,.013434604850808816997,-50,95,
+ -7074237752007987.,5622153632690964.,.359479648623543693521,-50,88,
+ -7074237752028441.,6523320454730237.,-.439258852050642776645,-51,104,
+ -7074237752028440.,-4967757600021511.,.121482295898714684057,-51,105,
+ -7074237752028439.,-5745539027375874.,.280370573974678975280,-51,103,
+ -7074237752028389.,-7216422512371896.,-.053738419562667649482,-51,98,
+ -7074237752023327.,-5622106160680017.,-.437919826571286137851,-51,91,
+ -8871213671092317.,-7504962526444771.,-.499994356426362647532,-53,53,
+ -8871213671077773.,-7504962526436729.,-.478099669195175532480,-53,53,
+ -8871213671077764.,-7504962526436725.,.498399028018327575475,-53,53,
+ -8871213671077339.,-7504962526436490.,.499726396442283465672,-53,53,
+ -8871213671077254.,-7504962526436443.,.499991870129079707039,-53,53,
+ -8108579655028955.,-7056886948212518.,.499990962962087826487,-53,53,
+ -8108579655012266.,-7056886948202146.,-.499918615255350226267,-53,53,
+ -8108579655012126.,-7056886948202060.,.499902384250890642569,-53,53,
+ -8108579655011706.,-7056886948201799.,.499365382779842431918,-53,53,
+ -8108579655010726.,-7056886948201190.,.498112379407066840301,-53,53,
+ -8108579655010710.,-7056886948201180.,.440949065066979909969,-53,53,
+ -8108579654961919.,-7056886948170860.,.499994795686109707594,-53,53,
+ -7881394195549603.,-6913478057984781.,.499997922780307662077,-53,53,
+ -7881394195509958.,-6913478057959368.,-.499987891080840223787,-53,53,
+ -7881394195507972.,-6913478057958095.,-.496279269228611509884,-53,53,
+ -7881394195507958.,-6913478057958087.,.477563591148176267211,-53,53,
+ -7881394195507933.,-6913478057958070.,-.497717015321804016997,-53,53,
+ -7881394195507894.,-6913478057958045.,-.499154761414866911796,-53,53,
+ -7881394195507855.,-6913478057958021.,.499407492492199805718,-53,53,
+ -7881394195506479.,-6913478057957139.,.499962912475768844569,-53,53,
+ -7109328173650617.,-6393815952054821.,.499925342262490988657,-53,53,
+ -7109328173649467.,-6393815952054011.,.498586434490820526144,-53,53,
+ -7109328173647742.,-6393815952052796.,.496578073028738672583,-53,53,
+ -7109328173647715.,-6393815952052776.,-.486062057844455988951,-53,53,
+ -7109328173647708.,-6393815952052772.,.444364574892132551247,-53,53,
+ -7109328173643186.,-6393815952049587.,.499969323535347987772,-53,53,
+ -7109328173635755.,-6393815952044352.,-.499986690839933034561,-53,53,
+ -7109328173568531.,-6393815951997003.,-.499992294503629014633,-53,53,
+ -7006352135983028.,-6320868855797199.,-.471216124094699415249,-53,53,
+ -7006352135983014.,-6320868855797189.,-.497392370402231408043,-53,53,
+ -7006352135982096.,-6320868855796535.,-.499520521105642805661,-53,53,
+ -7006352135981943.,-6320868855796426.,-.499875212883161362791,-53,53,
+ -7006352135976289.,-6320868855792398.,-.499910684219115423114,-53,53,
+ -7006352135962154.,-6320868855782328.,-.499999351662503538231,-53,53,
+ -6828286958492436.,-6192785514806772.,-.499998774494554852054,-53,53,
+ -6828286958448748.,-6192785514775049.,.499978681245168085331,-53,53,
+ -6828286958433006.,-6192785514763617.,-.461574910858342634174,-53,53,
+ -6828286958432984.,-6192785514763601.,-.486295669263749309140,-53,53,
+ -6828286958432973.,-6192785514763593.,-.498656048466438792369,-53,53,
+ -6828286958432648.,-6192785514763358.,.499787293276448747138,-53,53,
+ -6828286958432082.,-6192785514762946.,-.499846763853613616849,-53,53,
+ -6828286958426904.,-6192785514759187.,.499967463748915666781,-53,53,
+ -6595469068453604.,-6021675207910344.,.499959047936277295473,-53,53,
+ -6595469068453405.,-6021675207910196.,.491475843050525314827,-53,53,
+ -6595469068453366.,-6021675207910167.,.494838431038084219155,-53,53,
+ -6595469068453288.,-6021675207910108.,-.498436392986459293200,-53,53,
+ -6595469068434273.,-6021675207895967.,-.499984826009113774815,-53,53,
+ -6595469068421188.,-6021675207886236.,-.499998549369526037637,-53,53,
+ -5292230209358232.,-4992944525072436.,.499999481635783697188,-53,53,
+ -5292230209355334.,-4992944525070023.,-.499893485408907668274,-53,53,
+ -5292230209321524.,-4992944525041883.,-.498644729406671084529,-53,53,
+ -5292230209316533.,-4992944525037729.,-.498460383275853242916,-53,53,
+ -5292230209316521.,-4992944525037720.,.489117699706072252043,-53,53,
+ -5292230209316509.,-4992944525037710.,.476695782688006609165,-53,53,
+ -4510984822842145.,-8649522041055297.,.499997213742297123022,-53,54,
+ -4510984822809884.,-8649522040998699.,.499990902936971901598,-53,54,
+ -4510984822796066.,-8649522040974456.,-.499949771801003272215,-53,54,
+ -4510984822793725.,-8649522040970350.,.499770803412660980321,-53,54,
+ -4510984822793611.,-8649522040970150.,.498902860486254760781,-53,54,
+ -4510984822793517.,-8649522040969985.,.410467890004119957023,-53,54,
+ -4510984822793497.,-8649522040969950.,.498034917561234091462,-53,54,
+ -4510984822791441.,-8649522040966343.,.499925350660094160222,-53,54,
+ -8644717199335558.,-8316727887441656.,-.499996832825479521771,-54,54,
+ -8644717199268023.,-8316727887381749.,-.499963765314177643427,-54,54,
+ -8644717199267660.,-8316727887381428.,.499607005765053084990,-54,54,
+ -8644717199267616.,-8316727887381388.,-.470141991679659172714,-54,54,
+ -8644717199267607.,-8316727887381380.,-.486681559338798749537,-54,54,
+ -8644717199267598.,-8316727887381373.,.496778873002063749500,-54,54,
+ -8644717199256354.,-8316727887371398.,-.499987654192388166384,-54,54,
+ -7492339963682932.,-7278196578327819.,-.477091118135622734778,-54,54,
+ -7492339963682920.,-7278196578327809.,.499905023288848217810,-54,54,
+ -7492339963678486.,-7278196578323753.,.499979279851929900305,-54,54,
+ -7492339963677008.,-7278196578322400.,-.499995967862390412146,-54,54,
+ -7298995560608219.,-7100919050987427.,-.499994123597666439878,-54,54,
+ -7298995560597338.,-7100919050977428.,.499983171831126739590,-54,54,
+ -7298995560586568.,-7100919050967530.,.487278043582559372036,-54,54,
+ -7298995560586556.,-7100919050967518.,-.484323856280368884332,-54,54,
+ -7298995560586494.,-7100919050967462.,.495732994427885320356,-54,54,
+ -7298995560586457.,-7100919050967428.,.499960469850593227963,-54,54,
+ -4924871031076076.,-4863752809009387.,.499987547927853871713,-54,54,
+ -4924871031066975.,-4863752809000623.,-.489125572617140940294,-54,54,
+ -4924871031066921.,-4863752809000571.,-.494554878020471691327,-54,54,
+ -4924871031066867.,-4863752809000519.,-.499984183423758738532,-54,54,
+ -4924871031040344.,-4863752808974982.,.499988651277477875482,-54,54,
+ -4514338150834310.,-8934474822275393.,.494879526103372287052,-54,55,
+ -4514338150834294.,-8934474822275362.,.495352170604725579023,-54,55,
+ -4514338150834150.,-8934474822275083.,.499605971117222369366,-54,55,
+ -4514338150834134.,-8934474822275051.,-.499921384381353858084,-54,55,
+ -4514338150832021.,-8934474822270958.,.499997230149849336978,-54,55,
+ -6979532375146596.,-6935959796480662.,.499999987383497452755,-55,55,
+ -6979532375142586.,-6935959796476727.,.491772176343512067159,-55,55,
+ -6979532375142585.,-6935959796476726.,.473066882625058946330,-55,55,
+ -6979532375142533.,-6935959796476674.,-.499608390734495973722,-55,55,
+ -6979532375141143.,-6935959796475310.,-.499966659378782135058,-55,55,
+ -5360050515998697.,-5340300145254397.,-.499987017892626368724,-55,55,
+ -5360050515985027.,-5340300145240878.,-.499517649909795716333,-55,55,
+ -5360050515984665.,-5340300145240520.,-.498188468391681664079,-55,55,
+ -5360050515984574.,-5340300145240431.,.496620800995553349550,-55,55,
+ -5360050515984564.,-5340300145240421.,.386160281147998835220,-55,55,
+ -5360050515983669.,-5340300145239536.,.499943754793535928378,-55,55,
+ -5360050515967102.,-5340300145223151.,-.499999476024108801728,-55,55,
+ -5003579018638415.,-4987510616361550.,-.499997804217384712225,-55,55,
+ -5003579018617746.,-4987510616341081.,.499879441918079049952,-55,55,
+ -5003579018617038.,-4987510616340379.,-.316709987136791542247,-55,55,
+ -5003579018617019.,-4987510616340360.,-.499641059385412662963,-55,55,
+ -5003579018615461.,-4987510616338817.,-.499988983767624437070,-55,55,
+ -4503599627370496.,-4503599627370496.,0.000000000000000000000,-1074,1074,
+ 0.,0.,0.000000000000000000000,0,0,
+ 4503599627370496.,4503599627370496.,0.000000000000000000000,-1074,1074,
+ 4789513629070445.,4789513629070445.,.000000000000000000000,-1073,1073,
+ 4808649095124370.,4808649095124370.,.000000000000000000000,-1073,1073,
+ 4869155331943481.,4869155331943481.,.000000000000000000000,-1073,1073,
+ 5109627874242034.,5109627874242034.,.000000000000000000000,-1073,1073,
+ 5599035507166465.,5599035507166465.,.000000000000000000000,-1073,1073,
+ 7089807759713476.,7089807759713476.,.000000000000000000000,-1073,1073,
+ 7312899440849907.,7312899440849907.,.000000000000000000000,-1073,1073,
+ 7758212862373409.,7758212862373409.,.000000000000000000000,-1073,1073,
+ 7761896134481174.,7761896134481174.,.000000000000000000000,-1073,1073,
+ 7809167192039829.,7809167192039829.,.000000000000000000000,-1073,1073,
+ 8147981785960724.,8147981785960724.,.000000000000000000000,-1073,1073,
+ 8591267199417325.,8591267199417325.,.000000000000000000000,-1073,1073,
+ 4662142971001321.,4662142971001321.,-.000000000000000000000,-1072,1072,
+ 5622124846588744.,5622124846588744.,0.000000000000000000000,-1072,1072,
+ 5828119186624356.,5828119186624356.,-.000000000000000000000,-1072,1072,
+ 6028194942529344.,6028194942529344.,-.000000000000000000000,-1072,1072,
+ 6103477745868087.,6103477745868087.,.000000000000000000000,-1072,1072,
+ 6329313323327537.,6329313323327537.,-.000000000000000000000,-1072,1072,
+ 6394464867675505.,6394464867675505.,0.000000000000000000000,-1072,1072,
+ 6432992472198426.,6432992472198426.,.000000000000000000000,-1072,1072,
+ 6588689718419168.,6588689718419168.,.000000000000000000000,-1072,1072,
+ 7001573392314120.,7001573392314120.,-.000000000000000000000,-1072,1072,
+ 7563218214160189.,7563218214160189.,-.000000000000000000000,-1072,1072,
+ 8051935603675861.,8051935603675861.,-.000000000000000000000,-1072,1072,
+ 8383198532805953.,8383198532805953.,.000000000000000000000,-1072,1072,
+ 8438077864727187.,8438077864727187.,-.000000000000000000000,-1072,1072,
+ 8443454242934633.,8443454242934633.,0.000000000000000000000,-1072,1072,
+ 8447626959944861.,8447626959944861.,-.000000000000000000000,-1072,1072,
+ 8862962614828875.,8862962614828875.,0.000000000000000000000,-1072,1072,
+ 4509952695599631.,4509952695599631.,0.000000000000000000000,-1071,1071,
+ 4701762730015372.,4701762730015372.,.000000000000000000000,-1071,1071,
+ 4883252779508383.,4883252779508383.,0.000000000000000000000,-1071,1071,
+ 4988752457694256.,4988752457694256.,.000000000000000000000,-1071,1071,
+ 5120758840307769.,5120758840307769.,-.000000000000000000000,-1071,1071,
+ 6175493946614273.,6167937026292498.,-.499999067951243516795,-56,56,
+ 6175493946645879.,6167937026323988.,-.499892592376961776181,-56,56,
+ 6175493946646315.,6167937026324422.,-.100093616768275752673,-56,56,
+ 6175493946646415.,6167937026324522.,-.467112200344297032582,-56,56,
+ 6175493946646424.,6167937026324530.,.499856127133860469561,-56,56,
+ 6175493946649966.,6167937026328060.,-.499942103136513075772,-56,56,
+ 6175493946654053.,6167937026332132.,-.499991613915906569388,-56,56,
+ 6823990675709392.,6813795146809843.,.499748043248782396478,-56,56,
+ 6823990675709394.,6813795146809845.,.490786295160713891913,-56,56,
+ 6823990675709432.,6813795146809883.,.320513081487411307830,-56,56,
+ 6823990675710731.,6813795146811176.,.499857698285743931650,-56,56,
+ 6823990675712070.,6813795146812509.,.499967353320352635938,-56,56,
+ 6823990675721220.,6813795146821618.,.499969850319866248778,-56,56,
+ 6823990675812720.,6813795146912708.,.499994814272255037251,-56,56,
+ 8359220028884124.,8340483278553595.,-.499993321859920667023,-56,56,
+ 8359220028897663.,8340483278567042.,.499987179515833959409,-56,56,
+ 8359220028905102.,8340483278574432.,-.499949673424760108166,-56,56,
+ 8359220028906441.,8340483278575762.,-.499803880463028768588,-56,56,
+ 8359220028906590.,8340483278575909.,.498718690971668418706,-56,56,
+ 8359220028906722.,8340483278576041.,-.388496212186884669242,-56,56,
+ 8359220028906738.,8340483278576057.,-.496037412569741490874,-56,56,
+ 8359220028906739.,8340483278576057.,.497241262406329944120,-56,56,
+ 8513798801089932.,8494003767665470.,-.499981069172221956340,-56,56,
+ 8513798801093231.,8494003767668745.,.499677621686796846142,-56,56,
+ 8513798801093472.,8494003767668985.,-.180553434847085717025,-56,56,
+ 8513798801093516.,8494003767669029.,-.487317611143738433693,-56,56,
+ 8513798801093518.,8494003767669030.,.498738562660959094844,-56,56,
+ 8513798801094235.,8494003767669742.,.499876871644601407052,-56,56,
+ 8513798801104849.,8494003767680282.,.499991253069771531189,-56,56,
+ 8513798801139990.,8494003767715178.,.499993086846188599808,-56,56,
+ 4515410989972602.,9007199254723903.,.000013631360214449974,-55,56,
+ 4515410989976172.,9007199254730987.,-.000850993029360901694,-55,56,
+ 4515410989981017.,9007199254740601.,-.002024411985236287351,-55,56,
+ 4515410989981214.,4503599627370496.,-.046134101095920915704,-55,55,
+ 4515410989981215.,4503599627370497.,-.053977359446699445840,-55,55,
+ 4515410989981236.,4503599627370518.,-.218685784813049380123,-55,55,
+ 4515410989981271.,4503599627370553.,-.493199827090302670653,-55,55,
+ 4515410989981272.,4503599627370553.,.498956914558918601453,-55,55,
+ 7082784227656672.,7037251671944098.,-.499999183600064468351,-55,55,
+ 7082784227659216.,7037251671946592.,.499953154216911612401,-55,55,
+ 7082784227659839.,7037251671947204.,-.499665436016433429356,-55,55,
+ 7082784227659943.,7037251671947305.,.497187961440395517273,-55,55,
+ 7082784227659948.,7037251671947310.,.400882836318126200864,-55,55,
+ 4551882811606989.,4503599627370496.,-.114840883649549053627,-54,54,
+ 4551882811606990.,4503599627370497.,-.146595047097694837625,-54,54,
+ 4551882811607000.,4503599627370507.,-.464136681579153440884,-54,54,
+ 4551882811607001.,4503599627370508.,-.495890845027299377538,-54,54,
+ 4551882811607190.,4503599627370691.,-.497427736727130580774,-54,54,
+ 4551882811607505.,4503599627370996.,-.499989222894617538298,-54,54,
+ 4551882811611410.,4503599627374777.,-.499997488037651785881,-54,54,
+ 5299073463177461.,5222983057736055.,.498886881027664175727,-54,54,
+ 5299073463177624.,5222983057736211.,.497499342704822375411,-54,54,
+ 5299073463177647.,5222983057736234.,-.490426506261011814085,-54,54,
+ 5299073463177648.,5222983057736234.,.466620195957864767150,-54,54,
+ 5299073463178043.,5222983057736613.,-.499932427587144400499,-54,54,
+ 5299073463183095.,5222983057741448.,-.499992818060202327354,-54,54,
+ 5299073463216969.,5222983057773866.,.499998131961369860507,-54,54,
+ 5354986034440022.,5276468756249209.,-.499999044014156103768,-54,54,
+ 5354986034456712.,5276468756265167.,-.486586295166978421083,-54,54,
+ 5354986034456735.,5276468756265189.,-.495315564599493213917,-54,54,
+ 5354986034456758.,5276468756265210.,.495955165967983392040,-54,54,
+ 5354986034458468.,5276468756266845.,.499126873351934945124,-54,54,
+ 5354986034458924.,5276468756267281.,.499972661979625699611,-54,54,
+ 6318840445917290.,6190060189901315.,-.499999512892226335106,-54,54,
+ 6318840445924434.,6190060189908023.,.499987248917136001931,-54,54,
+ 6318840445926142.,6190060189909627.,.499424173348862110527,-54,54,
+ 6318840445926224.,6190060189909705.,-.493577098430405724337,-54,54,
+ 6318840445926240.,6190060189909720.,-.467821249021497329526,-54,54,
+ 6318840445926257.,6190060189909735.,.497044340975462489538,-54,54,
+ 7852441928000621.,7606123709016936.,-.499990910280040077776,-54,54,
+ 7852441928001915.,7606123709018108.,.499636856990325822143,-54,54,
+ 7852441928002193.,7606123709018361.,-.495806327480667539168,-54,54,
+ 7852441928002204.,7606123709018370.,.475596999752457339033,-54,54,
+ 7852441928002300.,7606123709018457.,.498753310150517715760,-54,54,
+ 7852441928043633.,7606123709055926.,-.499999025718848555392,-54,54,
+ 8717776617210548.,8381466754453032.,-.499993539374519683516,-54,54,
+ 8717776617240079.,8381466754479171.,.499867942514535255871,-54,54,
+ 8717776617241185.,8381466754480150.,.499557989788494364559,-54,54,
+ 8717776617241211.,8381466754480174.,-.485982750511051229531,-54,54,
+ 8717776617246027.,8381466754484437.,-.499990646297247408193,-54,54,
+ 4716158501326072.,9007199254695575.,-.000002654216819555679,-53,54,
+ 4716158501347800.,9007199254733209.,-.000055760604160935966,-53,54,
+ 4716158501350711.,9007199254738251.,-.000154926620515093651,-53,54,
+ 4716158501352062.,9007199254740591.,.000486099068752993849,-53,54,
+ 4716158501352271.,9007199254740953.,-.000895119032945395364,-53,54,
+ 4716158501352286.,9007199254740979.,-.020133005499760983828,-53,54,
+ 4716158501352293.,9007199254740991.,.104222647482383192838,-53,54,
+ 4716158501352294.,4503599627370496.,.418136727525630244136,-53,53,
+ 4716158501366617.,4503599627382900.,.499995126345973997280,-53,53,
+ 6059040276400288.,5612305914300059.,-.499992090484602280462,-53,53,
+ 6059040276406439.,5612305914304870.,-.499951379573784375501,-53,53,
+ 6059040276408142.,5612305914306202.,-.499777533396664803784,-53,53,
+ 6059040276408523.,5612305914306499.,.499086961815732357961,-53,53,
+ 6059040276408601.,5612305914306561.,-.493271487984542781251,-53,53,
+ 6059040276408624.,5612305914306578.,.496161276817859841421,-53,53,
+ 6059040276423189.,5612305914317970.,.499996893251050569100,-53,53,
+ 6179968525049261.,5706381209621443.,.499998312101238506751,-53,53,
+ 6179968525077420.,5706381209643231.,-.499953762943618508092,-53,53,
+ 6179968525077557.,5706381209643336.,.498803528220126304305,-53,53,
+ 6179968525077663.,5706381209643419.,-.487559443581093793237,-53,53,
+ 6179968525077672.,5706381209643425.,.475862568247068101188,-53,53,
+ 6179968525077694.,5706381209643442.,.497560819382550969454,-53,53,
+ 6179968525079033.,5706381209644479.,-.499986532026468045913,-53,53,
+ 6230674196595456.,5745522248169652.,.499960572474548751572,-53,53,
+ 6230674196597144.,5745522248170952.,.487591535456410254729,-53,53,
+ 6230674196597157.,5745522248170962.,.499344617516506509261,-53,53,
+ 6230674196598349.,5745522248171881.,-.499911242870143885690,-53,53,
+ 6230674196611622.,5745522248182102.,.499985533123381035197,-53,53,
+ 6230674196619705.,5745522248188327.,.499998006507367039503,-53,53,
+ 7511273082104712.,6670465360114516.,.499877093640175246900,-53,53,
+ 7511273082104883.,6670465360114631.,.408244419709601485687,-53,53,
+ 7511273082104901.,6670465360114644.,-.496137967020072450377,-53,53,
+ 7511273082109230.,6670465360117552.,.499898023719732812068,-53,53,
+ 7511273082130314.,6670465360131720.,.499995675233507257562,-53,53,
+ 7511273082131067.,6670465360132226.,.499999162111589540034,-53,53,
+ 7913137471600263.,6933782166632562.,-.499999964275395803283,-53,53,
+ 7913137471604960.,6933782166635560.,-.499820316118815270902,-53,53,
+ 7913137471605007.,6933782166635589.,.499329874091660803160,-53,53,
+ 7913137471605029.,6933782166635604.,-.458514717724776966630,-53,53,
+ 7913137471606146.,6933782166636317.,-.499987856822825551848,-53,53,
+ 8575032706797082.,7337163377200022.,-.498809031934412171223,-53,53,
+ 8575032706797170.,7337163377200073.,-.455385260047651846611,-53,53,
+ 8575032706797182.,7337163377200080.,-.494918382063147883040,-53,53,
+ 8575032706797563.,7337163377200300.,.499904993938082219667,-53,53,
+ 8575032706800649.,7337163377202090.,.499970448414374118348,-53,53,
+ 8575032706802192.,7337163377202986.,-.499996824670457054436,-53,53,
+ 8668443273566846.,7390949614701891.,.499996050709032043072,-53,53,
+ 8668443273592922.,7390949614716795.,.499765219549314360204,-53,53,
+ 8668443273592950.,7390949614716812.,-.496553482097434607970,-53,53,
+ 8668443273592985.,7390949614716832.,-.491951859155971256475,-53,53,
+ 8668443273594012.,7390949614717419.,-.499784237466141380609,-53,53,
+ 8668443273604877.,7390949614723629.,-.499880436477139606720,-53,53,
+ 8668443273617915.,7390949614731081.,-.499995889485948603343,-53,53,
+ 9007199254740991.,7579296827247853.,.475702091928739384102,-53,53,
+ 4503599627370497.,7579296827247855.,.096609009533158396171,-52,53,
+ 4503599627370502.,7579296827247860.,.499632068214549030637,-52,53,
+ 4503599627372090.,7579296827249576.,.499755504951558026099,-52,53,
+ 4503599627375266.,7579296827253009.,-.499997624401461796309,-52,53,
+ 7074237752025378.,4503599627370496.,-.000000001041115290277,-52,52,
+ 7074237752028409.,4503599627370496.,-.000000000000108599078,-52,52,
+ 7074237752028440.,4503599627370496.,-.000000000000000008443,-52,52,
+ 7074237752028441.,4503599627370496.,-.000000000000000058233,-52,52,
+ 9007199254726846.,8190223105253956.,-.499989547748931710791,-52,53,
+ 9007199254731014.,8190223105250486.,.499981015573400766164,-52,53,
+ 9007199254739350.,8190223105243548.,.499922121172875354416,-52,53,
+ 9007199254740632.,8190223105242481.,.499433214817996139387,-52,53,
+ 9007199254740954.,8190223105242214.,-.499129521515825802680,-52,53,
+ 9007199254740960.,8190223105242209.,-.492891560081449646724,-52,53,
+ 9007199254740990.,8190223105242184.,-.461701752909786923899,-52,53,
+ 9007199254740991.,8190223105242183.,-.293995426004071092180,-52,53,
+ 4503599627370497.,8190223105242180.,.209123554713073980121,-51,53,
+ 4503599627398210.,8190223105196049.,.499998010581159252123,-51,53,
+ 7074237752023327.,5622106160680017.,.437919826571286137851,-51,91,
+ 7074237752028389.,7216422512371896.,.053738419562667649482,-51,98,
+ 7074237752028439.,5745539027375874.,-.280370573974678975280,-51,103,
+ 7074237752028440.,4967757600021511.,-.121482295898714684057,-51,105,
+ 7074237752028441.,-6523320454730237.,.439258852050642776645,-51,104,
+ 5868404969532796.,-7905417279733033.,.492220531012408382921,-50,53,
+ 5868404969532802.,-7905417279733010.,.496291553949242031832,-50,53,
+ 5868404969532808.,-7905417279732986.,-.499637423113699813370,-50,53,
+ 5868404969533790.,-7905417279729222.,.499986667276751569123,-50,53,
+ 5868404969563021.,-7905417279617149.,-.499998576677265831494,-50,53,
+ 5888592265913846.,-7826752402509450.,-.499940151275240182854,-50,53,
+ 5888592265915295.,-7826752402503713.,-.499815531399605783997,-50,53,
+ 5888592265916351.,-7826752402499532.,-.497654309576559749417,-50,53,
+ 5888592265916400.,-7826752402499338.,-.492819176957391865321,-50,53,
+ 5888592265916523.,-7826752402498852.,.498909829478483303589,-50,53,
+ 5888592265916744.,-7826752402497976.,-.499690898560575029636,-50,53,
+ 5888592265937423.,-7826752402416102.,-.499981216464609389611,-50,53,
+ 5888592265945282.,-7826752402384986.,-.499994142173612461207,-50,53,
+ 5943141639396850.,-7601676205109238.,-.499893626943081000086,-50,53,
+ 5943141639401450.,-7601676205089498.,-.499870197228951777147,-50,53,
+ 5943141639532090.,-7601676204528882.,-.499151819546339765033,-50,53,
+ 5943141639583610.,-7601676204307794.,-.498840376670392537314,-50,53,
+ 5943141639584300.,-7601676204304833.,-.498836097545815242002,-50,53,
+ 5943141639584307.,-7601676204304803.,-.459705619337168926494,-50,53,
+ 6303973650769013.,-5692554797346166.,-.499999662710007091071,-50,53,
+ 6303973650790851.,-5692554797210777.,.499981461210906541811,-50,53,
+ 6303973650801380.,-5692554797145499.,-.400017716190711180780,-50,53,
+ 6303973650801405.,-5692554797145344.,-.406428578874477712295,-50,53,
+ 6303973650801720.,-5692554797143391.,-.487205448449462562407,-50,53,
+ 6303973650801770.,-5692554797143082.,.499972826262151797586,-50,53,
+ 6421931254427748.,-4931372232082266.,-.499987628729420483311,-50,53,
+ 6421931254447243.,-4931372231951758.,.499985874816579163918,-50,53,
+ 6421931254448585.,-4931372231942774.,.499881514832406803639,-50,53,
+ 6421931254449711.,-4931372231935236.,.490852079595273694023,-50,53,
+ 6421931254449724.,-4931372231935148.,-.480832984903530012676,-50,53,
+ 6421931254449747.,-4931372231934995.,.492339593292504727589,-50,53,
+ 6421931254449927.,-4931372231933790.,.499777161854284737290,-50,53,
+ 6619016067705734.,-7086718655199506.,-.499997865983038989555,-50,54,
+ 6619016067722837.,-7086718654947922.,-.499009383037874049590,-50,54,
+ 6619016067723054.,-7086718654944730.,-.443334081600853272709,-50,54,
+ 6619016067723068.,-7086718654944525.,.495741744307349091927,-50,54,
+ 6619016067723461.,-7086718654938744.,.499798857748984756989,-50,54,
+ 6619016067724216.,-7086718654927638.,.499959472508696247377,-50,54,
+ 6787616684047236.,-4536564471785779.,-.499997595257032970650,-50,54,
+ 6787616684084059.,-4536564471215599.,-.495720138590037201162,-50,54,
+ 6787616684084088.,-4536564471215150.,-.449740068615834755366,-50,54,
+ 6787616684084092.,-4536564471215089.,.487636492760153501535,-50,54,
+ 6787616684084187.,-4536564471213617.,-.499670174543296474009,-50,54,
+ 6787616684085209.,-4536564471197792.,-.499958740754567139117,-50,54,
+ 6787616684092299.,-4536564471088009.,.499996416524817898678,-50,54,
+ 6792176747025452.,-8931835744354410.,.499989740419401007360,-50,55,
+ 6792176747028249.,-8931835744267700.,.499920502652228237112,-50,55,
+ 6792176747028830.,-8931835744249688.,.123073806977045155424,-50,55,
+ 6792176747029016.,-8931835744243922.,.322568669105142440685,-50,55,
+ 6792176747029178.,-8931835744238900.,.496322258899193984066,-50,55,
+ 6792176747029181.,-8931835744238807.,.499539917971198076900,-50,55,
+ 6935652144170605.,-8847099188080298.,.499797165179434916065,-50,56,
+ 6935652144171270.,-8847099188038060.,.496793445521866944726,-50,56,
+ 6935652144171460.,-8847099188025992.,.495935240472298841916,-50,56,
+ 6935652144171462.,-8847099188025864.,-.472494845895303987129,-50,56,
+ 6935652144172854.,-8847099187937450.,-.499834950975552923672,-50,56,
+ 6935652144177542.,-8847099187639688.,-.499957274368803098073,-50,56,
+ 6935652144179886.,-8847099187490808.,.499981621453105179212,-50,56,
+ 6935652144228825.,-8847099184382409.,.499994484567286342654,-50,56,
+ 7074237752007987.,-5622153632690964.,-.359479648623543693521,-50,88,
+ 7074237752028235.,-7222498929773102.,-.013434604850808816997,-50,95,
+ 7074237752028438.,-5124569327373185.,.140185286987342823443,-50,101,
+ 7074237752028440.,-4967757600021511.,.121482295898714721309,-50,104,
+ 7074237752028441.,6523320454730237.,-.439258852050643114039,-50,103,
+ 7272069881162685.,6298102991156363.,.499080184494525663552,-50,55,
+ 7272069881162744.,6298102991158222.,.428853389145144958080,-50,55,
+ 7272069881162754.,6298102991158538.,-.498303694814091268283,-50,55,
+ 7272069881163097.,6298102991169345.,-.499791674916673878680,-50,55,
+ 7272069881163852.,6298102991193132.,.499848483439577371619,-50,55,
+ 7272069881169206.,6298102991361822.,.499945631114899160899,-50,55,
+ 7272069881171883.,6298102991446167.,.499994151545558823903,-50,55,
+ 7274706301332278.,6381152088344754.,.499775270030966279430,-50,55,
+ 7274706301332448.,6381152088350108.,.496660691543178402004,-50,55,
+ 7274706301332450.,6381152088350171.,.484859343560103312135,-50,55,
+ 7274706301333549.,6381152088384784.,-.499981376185130108794,-50,55,
+ 7274706301345751.,6381152088769074.,.499994136767206642675,-50,55,
+ 7641538687419749.,8697591601478064.,-.499998752335907685830,-50,54,
+ 7641538687451807.,8697591601927247.,-.499992735287590017407,-50,54,
+ 7641538687453706.,8697591601953854.,.476705883918684904076,-50,54,
+ 7641538687453708.,8697591601953882.,.499851432741035436388,-50,54,
+ 7642555474090221.,8711834833233132.,.499984866895210017569,-50,54,
+ 7642555474142065.,8711834833959186.,.499986864166218432863,-50,54,
+ 7642555474143372.,8711834833977491.,-.499974746919883907649,-50,54,
+ 7642555474148600.,8711834834050707.,-.499821308662440209074,-50,54,
+ 7642555474148782.,8711834834053255.,.335685177197282008586,-50,54,
+ 7642555474148816.,8711834834053731.,.491768806398587973821,-50,54,
+ 7642555474148818.,8711834834053760.,-.499049803648641435557,-50,54,
+ 7661357941793655.,8973928672413302.,.499949668543048829575,-50,54,
+ 7661357941794129.,8973928672419879.,-.496447165522681127655,-50,54,
+ 7661357941794445.,8973928672424263.,-.494045055783457866794,-50,54,
+ 7661357941794453.,8973928672424373.,.493357529264056710465,-50,54,
+ 7661357941796989.,8973928672459556.,.499976966490210665386,-50,54,
+ 7661357941800323.,8973928672505811.,-.499995814251665851145,-50,54,
+ 7952142228788689.,6332885946315814.,-.499997738894701410755,-50,53,
+ 7952142228792455.,6332885946337238.,-.499925351608991001520,-50,53,
+ 7952142228792696.,6332885946338608.,.499548210858245298521,-50,53,
+ 7952142228792937.,6332885946339979.,.499021773035322505369,-50,53,
+ 7952142228792982.,6332885946340235.,.494774097891010743236,-50,53,
+ 7952142228792998.,6332885946340327.,-.484513964384960261621,-50,53,
+ 7975281835689739.,6463175724981405.,-.499994950935294709874,-50,53,
+ 7975281835699968.,6463175725038400.,.499973713573631907708,-50,53,
+ 7975281835705454.,6463175725068968.,.498392507725017444253,-50,53,
+ 7975281835705468.,6463175725069047.,-.493591112026850900558,-50,53,
+ 7975281835705475.,6463175725069086.,-.489582921903159816142,-50,53,
+ 7975281835706204.,6463175725073147.,.499270019610585810297,-50,53,
+ 7975281835706704.,6463175725075933.,.499855025941002225238,-50,53,
+ 7975281835723919.,6463175725171855.,.499996016461349682237,-50,53,
+ 8134778399524060.,7284178321557554.,-.498476895292401164733,-50,53,
+ 8134778399524067.,7284178321557586.,.441435385242444914949,-50,53,
+ 8134778399524393.,7284178321559121.,-.499792693018050125605,-50,53,
+ 8134778399528953.,7284178321580579.,-.499792870122803932802,-50,53,
+ 8134778399991793.,7284178323758565.,.499567611574241207790,-50,53,
+ 8395085770619731.,8304408067720316.,.499974100617459173593,-50,53,
+ 8395085770623139.,8304408067730874.,.499849561262352463508,-50,53,
+ 8395085770624190.,8304408067734131.,-.497254588730703147046,-50,53,
+ 8395085770624241.,8304408067734289.,-.499017016745093950716,-50,53,
+ 8395085770624843.,8304408067736153.,.499787263052316894937,-50,53,
+ 8395085770635618.,8304408067769534.,.499979743272606824196,-50,53,
+ 8395085770683279.,8304408067917188.,.499986750496020102476,-50,53,
+ 8472742745241456.,8525053540527131.,.499991846512155159947,-50,53,
+ 8472742745247233.,8525053540542049.,.499953826610962223149,-50,53,
+ 8472742745247640.,8525053540543100.,.499778039352638510886,-50,53,
+ 8472742745247901.,8525053540543774.,.482466293128984567667,-50,53,
+ 8472742745247920.,8525053540543824.,-.453659849334304244482,-50,53,
+ 8472742745247968.,8525053540543947.,.497179369694994299114,-50,53,
+ 8472742745248047.,8525053540544151.,.499602250980311781006,-50,53,
+ 8472742745292635.,8525053540659291.,.499993411694784706460,-50,53,
+ 8714420965774119.,8948712322874838.,-.499998884140770938848,-50,53,
+ 8714420965792848.,8948712322891884.,.499768873343361115357,-50,53,
+ 8714420965793260.,8948712322892259.,.499176412174042336694,-50,53,
+ 8714420965793360.,8948712322892351.,-.481549913533209153620,-50,53,
+ 8714420965793371.,8948712322892361.,-.469429809365316513674,-50,53,
+ 8714420965793427.,8948712322892412.,-.498636551796560846139,-50,53,
+ 8714420965794251.,8948712322893162.,-.499821478701429096606,-50,53,
+ 8714420965796066.,8948712322894813.,.499995686027846610166,-50,53,
+ 8743627225396470.,8972282029192496.,-.499689675983590365841,-50,53,
+ 8743627225396497.,8972282029192515.,-.498866162974343137348,-50,53,
+ 8743627225396848.,8972282029192762.,-.488160494323668815658,-50,53,
+ 8743627225396892.,8972282029192792.,.476144489719182419842,-50,53,
+ 8743627225396902.,8972282029192800.,-.486513468454807873099,-50,53,
+ 8743627225397675.,8972282029193344.,-.499973637446233566539,-50,53,
+ 8743627225401317.,8972282029195906.,.499997928590394201598,-50,53,
+ 8897696383646605.,8996493776079214.,-.499851663604137145277,-50,53,
+ 8897696383647995.,8996493776078672.,-.499321686626042079514,-50,53,
+ 8897696383649921.,8996493776077920.,.499973783991547446575,-50,53,
+ 8897696383661259.,8996493776073499.,.499979504685551484367,-50,53,
+ 8897696383695273.,8996493776060236.,.499991192854784239773,-50,53,
+ 8979216647905793.,8941163147859879.,-.499999844558201124916,-50,53,
+ 8979216647925187.,8941163147841125.,.499984897954134123087,-50,53,
+ 8979216647926004.,8941163147840336.,-.496973625029862008780,-50,53,
+ 8979216647926034.,8941163147840306.,.494570125566547555918,-50,53,
+ 8979216647926125.,8941163147840219.,-.497747164329842228470,-50,53,
+ 8979216647926488.,8941163147839867.,.499932217150609929105,-50,53,
+ 4523144813455067.,8860484359923904.,.499994688918557629673,-49,53,
+ 4523144813456221.,8860484359920586.,-.499998145988077256999,-49,53,
+ 4523144813464299.,8860484359897353.,-.499949032862063536373,-49,53,
+ 4523144813466607.,8860484359890715.,-.499935335638483853420,-49,53,
+ 4523144813466954.,8860484359889716.,.499200159687281869610,-49,53,
+ 4523144813467067.,8860484359889392.,-.498199521235874841518,-49,53,
+ 4612325947553258.,8494113961762945.,.499996908975443983895,-49,53,
+ 4612325947564114.,8494113961705158.,.499972816894571976549,-49,53,
+ 4612325947564665.,8494113961702226.,-.499015225584006380608,-49,53,
+ 4612325947564795.,8494113961701534.,-.495146706847043378343,-49,53,
+ 4612325947564820.,8494113961701400.,.428674162088903895269,-49,53,
+ 4612325947564826.,8494113961701368.,.490391170631038590048,-49,53,
+ 4612325947565151.,8494113961699639.,-.499937534778315546115,-49,53,
+ 4802115455492662.,7024722001562261.,.499988415850531659792,-49,53,
+ 4802115455517437.,7024722001314154.,-.499867705508902486547,-49,53,
+ 4802115455518129.,7024722001307224.,-.499298796326153221565,-49,53,
+ 4802115455518475.,7024722001303759.,-.499014345715236385365,-49,53,
+ 4802115455518542.,7024722001303088.,-.467167357030784363889,-49,53,
+ 4802115455518544.,7024722001303068.,-.496067446922330183338,-49,53,
+ 4802115455520828.,7024722001280195.,-.499970160934779790348,-49,53,
+ 4802115455531347.,7024722001174853.,-.499994704636042189412,-49,53,
+ 5059472696394537.,7629809413056530.,.499867273686662177248,-49,54,
+ 5059472696394705.,7629809413051661.,-.498294908191864463686,-49,54,
+ 5059472696394955.,7629809413044413.,.480630415135719970965,-49,54,
+ 5059472696394957.,7629809413044356.,-.495538182283726362785,-49,54,
+ 5059472696395628.,7629809413024904.,.499897378056000434343,-49,54,
+ 5059472696398901.,7629809412930026.,.499987519224829257364,-49,54,
+ 5059472696432638.,7629809411952055.,.499985043884926743002,-49,54,
+ 5079689563117984.,7038967591717587.,.499996052218113004271,-49,54,
+ 5079689563118416.,7038967591704862.,.499969542210204143164,-49,54,
+ 5079689563128352.,7038967591412187.,.499358667975769231129,-49,54,
+ 5079689563132229.,7038967591297987.,-.484676584509126418288,-49,54,
+ 5079689563132240.,7038967591297662.,.499119033334887178339,-49,54,
+ 5107897798820630.,6199578063912964.,.499959609591848065640,-49,54,
+ 5107897798875374.,6199578062268163.,.499979346633581159916,-49,54,
+ 5107897798880780.,6199578062105738.,.499868514060393820656,-49,54,
+ 5107897798881111.,6199578062095793.,.498936811139054419082,-49,54,
+ 5107897798881133.,6199578062095133.,-.498103966774578559323,-49,54,
+ 5107897798881795.,6199578062075243.,-.499967379331999013509,-49,54,
+ 5222449517569069.,5307259332638852.,.499997814072804293847,-49,55,
+ 5222449517587295.,5307259331485114.,-.499986772480007871000,-49,55,
+ 5222449517593643.,5307259331083274.,-.463331772065680424250,-49,55,
+ 5222449517593653.,5307259331082641.,-.481547501960986238673,-49,55,
+ 5222449517593663.,5307259331082008.,-.499763231857966728856,-49,55,
+ 5222449517594816.,5307259331009020.,.499963099791992557917,-49,55,
+ 5270585385650166.,8977972334548269.,.499983231304848825274,-49,57,
+ 5270585385680819.,8977972326716343.,.499963758482573360756,-49,57,
+ 5270585385682436.,8977972326303196.,-.457562556851685401596,-49,57,
+ 5270585385682450.,8977972326299619.,-.496155858606588581448,-49,57,
+ 5270585385682452.,8977972326299107.,.498330812570829121091,-49,57,
+ 5270585385682814.,8977972326206616.,-.499581706183026542408,-49,57,
+ 5270585385683721.,8977972325974875.,-.499876348203938038873,-49,57,
+ 5270585385687530.,8977972325001664.,.499988566637272296796,-49,57,
+ 5305678314021330.,7451636400032266.,.317776556151927824906,-49,104,
+ 5305678314021331.,-7144290154732925.,-.420555860962015638086,-49,102,
+ 5305678314021334.,-8541471979738975.,-.355138965240439868439,-49,100,
+ 5305678314021773.,-7789699923340335.,.255037977637273428780,-49,93,
+ 5305678314065639.,-6089754163653848.,-.365188728149908596756,-49,86,
+ 5489113122509524.,-5766590505972803.,-.499976845738517727153,-49,54,
+ 5489113122558586.,-5766590507460176.,.499838728546571021502,-49,54,
+ 5489113122559364.,-5766590507483761.,-.481493589234718853990,-49,54,
+ 5489113122559383.,-5766590507484337.,-.488749776806258401415,-49,54,
+ 5489113122559402.,-5766590507484913.,-.496005964371229138246,-49,54,
+ 5489113122559557.,-5766590507489613.,.497430400475700476436,-49,54,
+ 5489113122560101.,-5766590507506104.,-.499799386537413228184,-49,54,
+ 5489113122567268.,-5766590507723381.,.499932948024559935773,-49,54,
+ 5489113122573056.,-5766590507898851.,.499996522995190166771,-49,54,
+ 5503648895911618.,-6205288324971386.,-.499973738980018623286,-49,54,
+ 5503648895962147.,-6205288326489359.,.485689825768444636719,-49,54,
+ 5503648895962219.,-6205288326491522.,.490478552617422010395,-49,54,
+ 5503648895962363.,-6205288326495847.,-.499943993380108278789,-49,54,
+ 5503648895962988.,-6205288326514624.,.499958155433257052862,-49,54,
+ 5503648895973012.,-6205288326815761.,.499989824024073405078,-49,54,
+ 5548511370793943.,-7531909000925620.,-.498524734181729257128,-49,54,
+ 5548511370794001.,-7531909000927306.,-.486574568763232663608,-49,54,
+ 5548511370794016.,-7531909000927743.,.482033232651114828833,-49,54,
+ 5548511370794103.,-7531909000930272.,.499958480959782308538,-49,54,
+ 5548511370804647.,-7531909001236772.,-.499996300034844049055,-49,54,
+ 7074237751946628.,-5622096781216965.,-.089850199524424779073,-49,85,
+ 7074237752027622.,-7197629755056780.,.496641351311827911854,-49,92,
+ 7074237752028432.,-4658842052371168.,-.214953678252997362028,-49,98,
+ 7074237752028440.,-4967757600021511.,.121482295898714870318,-49,103,
+ 7074237752028441.,6523320454730237.,-.439258852050644463614,-49,102,
+ 8842797190002404.,4555598928011245.,-.275327658586077643888,-49,86,
+ 8842797190035219.,5829077737928285.,-.241603372279800849465,-49,93,
+ 8842797190035547.,7531611566059105.,.074768391265781521372,-49,100,
+ 8842797190035550.,6209697000026889.,-.401852869873393727593,-49,103,
+ 8842797190035551.,-5902350754727548.,.299073565063304663147,-49,102,
+ 5305678314021330.,-7451636400032266.,-.317776556151927322001,-48,103,
+ 5305678314021331.,7144290154732925.,.420555860962008546748,-48,101,
+ 5305678314021348.,5008333671416556.,-.080607629348272501979,-48,96,
+ 5305678314023102.,7792428794092300.,-.313759545668310313647,-48,90,
+ 5305678314198564.,6089706763479862.,.090896353359190238911,-48,83,
+ 6189958032313442.,6111250908646246.,-.449802454767560031340,-48,81,
+ 6189958033017771.,7822191026877127.,.258179019650541974984,-48,88,
+ 6189958033024814.,5013160476848593.,-.476489441494583545252,-48,94,
+ 6189958033024884.,5590296602375202.,-.495324252227861954253,-48,100,
+ 6189958033024885.,8693575800037644.,.037405982177248259838,-48,103,
+ 6189958033024886.,-6833805304731581.,.009351495544320606337,-48,101,
+ 7074237751701192.,-5622082568348465.,-.271200950923179606269,-48,82,
+ 7074237752025168.,-7195810507888803.,.124160499281507210719,-48,89,
+ 7074237752028407.,-4683147721975992.,-.053738419552382839132,-48,95,
+ 7074237752028440.,-4967757600021511.,.121482295898715466354,-48,102,
+ 7074237752028441.,6523320454730237.,-.439258852050649861914,-48,101,
+ 7958517470771212.,8960446310473519.,-.138230043465246743807,-48,83,
+ 7958517471029387.,5735734868167607.,.235319538568943385656,-48,89,
+ 7958517471031969.,7405673258539934.,.120911444006621323138,-48,96,
+ 7958517471031995.,5588727300024200.,-.261667582886055137131,-48,102,
+ 7958517471031996.,-6212835604728892.,-.130833791443020784676,-48,101,
+ 8842797189902967.,-4555529036101627.,-.181000287630395951828,-48,83,
+ 8842797190034224.,-5833325713030551.,-.189599135426896881270,-48,90,
+ 8842797190035537.,-7512402425727896.,-.268692097813642185791,-48,97,
+ 8842797190035550.,-6209697000026889.,.401852869873394891725,-48,102,
+ 8842797190035551.,5902350754727548.,-.299073565063308661913,-48,101,
+ 4863538453516224.,8618527817847321.,-.135593642405418129307,-47,80,
+ 4863538454509520.,5515529430533692.,-.005719729398922638716,-47,86,
+ 4863538454519453.,7015031191576063.,.268472581138259342165,-47,93,
+ 4863538454519552.,6211266302377890.,.364490460784791977980,-47,100,
+ 4863538454519553.,-5591865904726203.,-.271019078430361802978,-47,101,
+ 5305678314021330.,-7451636400032266.,-.317776556151925310381,-47,102,
+ 5305678314021331.,7144290154732925.,.420555860961980181399,-47,100,
+ 5305678314021401.,4981626859270331.,-.020151907546313475028,-47,93,
+ 5305678314028419.,7794210523408067.,-.078443169238682495950,-47,87,
+ 5305678314730268.,6089729273174733.,.497070764995780233326,-47,80,
+ 5747818173215646.,5282152198434968.,.029678169246222224809,-47,81,
+ 5747818173520033.,6761389711969284.,.336619188159492966303,-47,88,
+ 5747818173523077.,8648054024831531.,.087324931721656571241,-47,95,
+ 5747818173523107.,6521751152379235.,-.205602182708881605514,-47,100,
+ 5747818173523108.,-4970896204723514.,-.411204365417702485823,-47,101,
+ 6189958030179114.,-6111247206630105.,.027270142024565772512,-47,78,
+ 6189958032996427.,-7822541802532018.,.185508344975829410276,-47,85,
+ 6189958033024600.,-5018017932717172.,-.130877636204264942796,-47,91,
+ 6189958033024882.,-7298747928558097.,.247662126114567147423,-47,98,
+ 6189958033024885.,-8693575800037644.,-.037405982177245065461,-47,102,
+ 6189958033024886.,6833805304731581.,-.009351495544345431876,-47,100,
+ 6632097890420188.,4523620098869152.,-.394781996261123698126,-47,78,
+ 6632097892505598.,5790236735164387.,.086990841343358342309,-47,85,
+ 6632097892526452.,7415406560539019.,.137594939313521536976,-47,92,
+ 6632097892526661.,7919717628560786.,-.387847413101467332520,-47,99,
+ 6632097892526662.,6832236002380579.,.224305173797444419749,-47,100,
+ 6632097892526663.,-8699853009441651.,-.102779304810085740922,-47,102,
+ 7074237750719446.,-5622087605065932.,-.237057684164276992758,-47,79,
+ 7074237752015350.,-7196455207724585.,.281050460666808032482,-47,86,
+ 7074237752028309.,-4618855395199534.,-.013434604221042098557,-47,92,
+ 7074237752028439.,-5745539027375874.,.280370573974757354721,-47,99,
+ 7074237752028440.,-4967757600021511.,.121482295898717850495,-47,101,
+ 7074237752028441.,6523320454730237.,-.439258852050671455114,-47,100,
+ 7516377611074848.,7823193474107748.,.338346432660412223080,-47,81,
+ 7516377611525664.,5006948355430679.,-.472211052807333875441,-47,87,
+ 7516377611530172.,6444791989308228.,-.442902929327722852851,-47,94,
+ 7516377611530217.,7142720852381924.,-.345787469696229964857,-47,100,
+ 7516377611530218.,-7457913609436273.,-.383149878784765988291,-47,102,
+ 7958517469988862.,-8960446905669580.,.366279451512945860217,-47,80,
+ 7958517471021564.,-5734673449087726.,.191175345516176573307,-47,86,
+ 7958517471031891.,-7340180360492776.,.469772139667680334380,-47,93,
+ 7958517471031994.,-5900781452376546.,.065416895721598740370,-47,99,
+ 7958517471031995.,-5588727300024200.,.261667582886058531739,-47,101,
+ 7958517471031996.,6212835604728892.,.130833791443002130311,-47,100,
+ 8400657330533772.,7453205702383268.,.084119886810095222043,-47,100,
+ 8400657330533773.,-6215974209430896.,.336479547240554211743,-47,102,
+ 8400657330533817.,-6216730636890021.,-.436185626666522155004,-47,94,
+ 8400657330538200.,-4867727672642911.,-.292469397407354042386,-47,87,
+ 8400657330976454.,-7605204634249781.,-.476404135737427877345,-47,81,
+ 8842797189505217.,-4555528742993407.,.215488982227191020622,-47,80,
+ 8842797190030247.,-5831089171922790.,.202601590744756815128,-47,87,
+ 8842797190035497.,-7507600140645094.,-.067173024274345874707,-47,94,
+ 8842797190035549.,-6056023877377218.,-.149536782531559519992,-47,99,
+ 8842797190035550.,-6209697000026889.,.401852869873399548252,-47,101,
+ 8842797190035551.,5902350754727548.,-.299073565063324656974,-47,100,
+ 5426391276952917.,4925247681619198.,.494231855162409579292,-44,53,
+ 5426391276979477.,4925247693004797.,.499955051979762759576,-44,53,
+ 5426391276979769.,4925247693129971.,-.498990200890980739318,-44,53,
+ 5426391276979846.,4925247693162978.,.449917845381466080822,-44,53,
+ 5426391276979852.,4925247693165550.,.497884702167299361906,-44,53,
+ 5426391276980436.,4925247693415896.,.499989354267011247465,-44,53,
+ 5506672652921126.,-8188620198921929.,-.498286649998564224711,-44,53,
+ 5506672652932514.,-8188620196493254.,-.499300362549874968302,-44,53,
+ 5506672652932777.,-8188620196437165.,-.499897918051488508456,-44,53,
+ 5506672652934479.,-8188620196074186.,-.499918461986345175647,-44,53,
+ 5562950707701891.,7959710905218892.,.499967564823230441438,-44,53,
+ 5562950707703171.,7959710904912156.,-.482759247640939889669,-44,53,
+ 5562950707703182.,7959710904909519.,.496295261195173847465,-44,53,
+ 5562950707703276.,7959710904886993.,.499124573415829356887,-44,53,
+ 5562950707703323.,7959710904875731.,-.499460855694455345789,-44,53,
+ 5562950707727338.,7959710899120817.,.492489509254662793523,-44,53,
+ 5565768841151349.,7185351745633006.,.460015450913106399819,-44,53,
+ 5565768841151353.,7185351745631771.,.497344327751846622222,-44,53,
+ 5565768841151380.,7185351745623435.,.499314236696976869443,-44,53,
+ 5565768841153925.,7185351744837690.,.499735222860429397297,-44,53,
+ 5565768841154943.,7185351744523392.,.499861511516499523021,-44,53,
+ 5565768841195046.,7185351732141965.,.477834574786233926276,-44,53,
+ 5637442019535798.,5203844502139369.,-.499998370441910635843,-44,59,
+ 5637442019535926.,5203844506333502.,-.402291701083010287657,-44,59,
+ 5637442019535968.,5203844507709702.,-.479606760227487710915,-44,59,
+ 5637442019535980.,5203844508102901.,.498303217426182945233,-44,59,
+ 5666178554236040.,8984047687816206.,.490790283457037061337,-44,53,
+ 5666178554260108.,8984047686933247.,-.499950692518811249492,-44,53,
+ 5666178554261242.,8984047686891645.,-.487630763286210855775,-44,53,
+ 5666178554261258.,8984047686891058.,-.464529514596860695906,-44,53,
+ 5666178554261277.,8984047686890361.,-.499596791430407763452,-44,53,
+ 5666178554304651.,8984047685299139.,.472660546074007600680,-44,53,
+ 5835612929826931.,-8660970603896953.,-.499603964551493496872,-44,53,
+ 5835612929831679.,-8660970603229427.,-.499823767782800121910,-44,53,
+ 5835612929832212.,-8660970603154493.,.495557413543751236776,-44,53,
+ 5835612929832217.,-8660970603153790.,.450485980089220286503,-44,53,
+ 5835612929832234.,-8660970603151400.,.497243111577029755454,-44,53,
+ 5835612929832278.,-8660970603145213.,-.499385451722040243428,-44,53,
+ 6029337333126160.,-5229716333760498.,.499636891025268202806,-44,54,
+ 6029337333126170.,-5229716333770296.,-.498273536302551578277,-44,54,
+ 6029337333126200.,-5229716333799693.,-.492004808147136014217,-44,54,
+ 6029337333126210.,-5229716333809492.,-.489915228715705857083,-44,54,
+ 6029337333127597.,-5229716335168614.,.499925809656522217981,-44,54,
+ 6029337333128076.,-5229716335637985.,-.499970129887732817225,-44,54,
+ 6157045845774343.,-8604786539146163.,-.448756141808213140500,-44,53,
+ 6157045845834325.,-8604786548223139.,.499928894242406496499,-44,53,
+ 6157045845834989.,-8604786548323621.,.498653601542129651089,-44,53,
+ 6157045845835056.,-8604786548333759.,-.498462351040450453628,-44,53,
+ 6157045845837447.,-8604786548695585.,-.499936509254591950781,-44,53,
+ 6245226045767564.,-8897040800882148.,.499846673315729735514,-44,68,
+ 6245226045767679.,-8897042730261987.,.376442884067159831739,-44,68,
+ 6245226045767681.,-8897042763816419.,.391688038921992588840,-44,68,
+ 6245226045767686.,-8897042847702499.,.429800926562162656205,-44,68,
+ 6245226045767695.,-8897042998697443.,.498404126125586224275,-44,68,
+ 6245226045770319.,-8897087022112206.,-.499852602615462184402,-44,68,
+ 6245226045789735.,-8897412768537914.,-.492997460757270432277,-44,68,
+ 6245226045794589.,-8897494205144341.,-.489590274736833273543,-44,68,
+ 6268442428667591.,-8724803201165547.,-.475131916511628419737,-44,53,
+ 6268442428709253.,-8724803206464970.,.499988060178560209852,-44,53,
+ 6268442428709592.,-8724803206508090.,-.426949504109109647412,-44,53,
+ 6268442428709617.,-8724803206511270.,-.436310553145773695832,-44,53,
+ 6268442428709772.,-8724803206530986.,-.494348663903624203231,-44,53,
+ 6268442428709787.,-8724803206532894.,-.499965219323303649732,-44,53,
+ 6328789084878694.,9000816055887664.,.308073197232497249527,-44,53,
+ 6328789084993582.,9000816053673514.,.456042396987204418544,-44,53,
+ 6328789084993593.,9000816053673302.,.461312887707819192528,-44,53,
+ 6328789084993670.,9000816053671818.,.498206224218223319307,-44,53,
+ 6328789084994243.,9000816053660776.,-.499982544782687729517,-44,53,
+ 6477002457250980.,-5149761703815698.,-.476445643598413541145,-44,53,
+ 6477002457250996.,-5149761703822419.,-.488008689319655696671,-44,53,
+ 6477002457251012.,-5149761703829140.,-.499571730781114811527,-44,53,
+ 6477002457251186.,-5149761703902232.,.499680468381039434212,-44,53,
+ 6477002457252483.,-5149761704447054.,.499869343589285731031,-44,53,
+ 6477002457253780.,-5149761704991875.,-.499913789618991677101,-44,53,
+ 6477002457300567.,-5149761724645373.,-.479541476118260561827,-44,53,
+ 6491364931154787.,-8911683808844645.,.499987029016280960443,-44,53,
+ 6491364931154921.,-8911683808854609.,-.499037530238177602331,-44,53,
+ 6491364931154932.,-8911683808855428.,.478654506518541560133,-44,53,
+ 6491364931199883.,-8911683812198238.,-.470906303351489321554,-44,53,
+ 6544022097406501.,8620355612595320.,.467638257865309584112,-44,53,
+ 6544022097454683.,8620355619747341.,.475233332465172859282,-44,53,
+ 6544022097454811.,8620355619766341.,.489446581178867916962,-44,53,
+ 6544022097454907.,8620355619780592.,-.499893781770684553020,-44,53,
+ 6544022097457720.,8620355620198146.,.499841827033605565242,-44,53,
+ 6616319171054698.,-7038283486052072.,-.469501887304552167571,-44,53,
+ 6616319171103679.,-7038283470402668.,-.499931956426577423904,-44,53,
+ 6616319171106486.,-7038283469505833.,-.461375217829566587559,-44,53,
+ 6616319171106502.,-7038283469500721.,-.469704982880274065438,-44,53,
+ 6616319171106558.,-7038283469482829.,-.498859114710038639007,-44,53,
+ 6616319171106560.,-7038283469482190.,-.499900332384927417062,-44,53,
+ 6702751591225331.,-6911136938702042.,-.499901622292520280918,-44,53,
+ 6702751591225878.,-6911136938881648.,.489449222635582561857,-44,53,
+ 6702751591225904.,-6911136938890184.,-.494603404497053322307,-44,53,
+ 6702751591225959.,-6911136938908243.,-.499330065996669533303,-44,53,
+ 6702751591228717.,-6911136939813820.,-.499900393888011884951,-44,53,
+ 6702751591275684.,-6911136955235225.,-.472296297299590642865,-44,53,
+ 6740450947157420.,-8914209096688882.,-.499818179497634070369,-44,56,
+ 6740450947157433.,-8914209096636044.,.474424742811021796630,-44,56,
+ 6740450947157886.,-8914209094794809.,.499969614194196520990,-44,56,
+ 6740450947176444.,-8914209019365140.,-.494813130033361534063,-44,56,
+ 6740450947195002.,-8914208943935472.,-.479676014431182924500,-44,56,
+ 6754791752061971.,5741424028077882.,.499346245211323599310,-44,53,
+ 6754791752062152.,5741424028149287.,.339646895953593158995,-44,53,
+ 6754791752062218.,5741424028175324.,.463734274844893711222,-44,53,
+ 6754791752062238.,5741424028183215.,-.498663505081765213797,-44,53,
+ 6754791752062503.,5741424028287757.,.499565210337415099326,-44,53,
+ 6754791752063567.,5741424028707507.,.499987388995084943961,-44,53,
+ 6754791752068088.,5741424030491050.,.499667341039408164496,-44,53,
+ 6794379564777760.,7162509413519012.,.499407557313294621873,-44,55,
+ 6794379564778169.,7162509412698099.,.493647710047810053082,-44,55,
+ 6794379564778218.,7162509412599751.,-.497262653594461616350,-44,55,
+ 6794379564778308.,7162509412419109.,.499024288831760417044,-44,55,
+ 6794379564779633.,7162509409759672.,.499893690249861681412,-44,55,
+ 6794379564782054.,7162509404900429.,.499867856182108426368,-44,55,
+ 6794379564797676.,7162509373545165.,.495613374470409585149,-44,55,
+ 6794379564805487.,7162509357867533.,.491368113306582766685,-44,55,
+ 6990987887114136.,9005430516762466.,.483118656654022787301,-44,53,
+ 6990987887148174.,9005430517107821.,-.497046306006405550962,-44,53,
+ 6990987887148195.,9005430517108034.,-.428297779814023674419,-44,53,
+ 6990987887148304.,9005430517109139.,.499968173786287331341,-44,53,
+ 6990987887160697.,9005430517234880.,.497713642538579754837,-44,53,
+ 7138546116895383.,-8855698191057577.,-.499929779277591103536,-44,54,
+ 7138546116897457.,-8855698192907019.,.497269586714890451726,-44,54,
+ 7138546116897501.,-8855698192946254.,-.473858890916259283224,-44,54,
+ 7138546116897512.,-8855698192956063.,-.466641001668219719365,-44,54,
+ 7138546116897596.,-8855698193030969.,.497568448578792224737,-44,54,
+ 7138546116898569.,-8855698193898619.,.499675961621264825078,-44,54,
+ 7138546116898708.,-8855698194022569.,.499979246340926745022,-44,54,
+ 7138546116938886.,-8855698229850360.,-.475511599357758988408,-44,54,
+ 7322656671988526.,9006019365558209.,.499684161023428603712,-44,53,
+ 7322656671992129.,9006019365588068.,-.499889961190417678738,-44,53,
+ 7322656671992805.,9006019365593670.,-.499297051828828868256,-44,53,
+ 7322656671993143.,9006019365596471.,-.499005583901724068444,-44,53,
+ 7322656671993202.,9006019365596959.,.432997615552879820564,-44,53,
+ 7322656671993237.,9006019365597249.,.477406245325911791449,-44,53,
+ 7322656671993251.,9006019365597365.,.495169687253818395756,-44,53,
+ 7322656671995394.,9006019365615124.,.499892148514659518513,-44,53,
+ 7357968097658117.,-7349500407631196.,-.499530412912279483570,-44,54,
+ 7357968097663086.,-7349500412276730.,.499948908795689701337,-44,54,
+ 7357968097664220.,-7349500413336910.,.499509762692673592962,-44,54,
+ 7357968097664354.,-7349500413462187.,.497696219712441083607,-44,54,
+ 7357968097664385.,-7349500413491168.,-.495260583974085226672,-44,54,
+ 7357968097664395.,-7349500413500518.,.474753355188824612008,-44,54,
+ 7461059150899550.,6681804354461914.,.499940445808595919156,-44,61,
+ 7461059150900673.,6681804207268677.,-.499841381398710924567,-44,61,
+ 7461059150902114.,6681804018394717.,.499508214769176875630,-44,61,
+ 7461059150902234.,6681804002666144.,-.463073993658175168728,-44,61,
+ 7461059150902243.,6681804001486500.,.489732328176735951908,-44,61,
+ 7461059150902263.,6681803998865071.,.495968592659861673026,-44,61,
+ 7461059150911416.,6681802799168092.,.499088677083036878159,-44,61,
+ 7819356134935921.,-8992864847946726.,.499961999365180756841,-44,53,
+ 7819356134936048.,-8992864847950392.,-.499110626364389961580,-44,53,
+ 7819356134936056.,-8992864847950623.,-.491178177648423745660,-44,53,
+ 7819356134936072.,-8992864847951085.,-.475313274637448723670,-44,53,
+ 7819356134945628.,-8992864848227005.,-.498671005488200974539,-44,53,
+ 7880037969502917.,8724180330457179.,.498986018163460575286,-44,53,
+ 7880037969509904.,8724180329567466.,.499813008835845570037,-44,53,
+ 7880037969511237.,8724180329397724.,.489080245982470808667,-44,53,
+ 7880037969511261.,8724180329394668.,.368856541404398022983,-44,53,
+ 7880037969511302.,8724180329389447.,.496807675187885486122,-44,53,
+ 7880037969512233.,8724180329270895.,.499782860769904710937,-44,53,
+ 7880037969524011.,8724180327771104.,.497717905973426752505,-44,53,
+ 7880037969547434.,8724180324788458.,.481565552205218558087,-44,53,
+ 7961347698809129.,5771335184486205.,.499915941399055986332,-44,55,
+ 7961347698810220.,5771335186691721.,-.498543958951099784511,-44,55,
+ 7961347698810229.,5771335186709914.,.484053438105025143985,-44,55,
+ 7961347698810910.,5771335188086593.,-.499414565947128831835,-44,55,
+ 7961347698813726.,5771335193779287.,.499838843015274278763,-44,55,
+ 7961347698822920.,5771335212365451.,.498502402727158080399,-44,55,
+ 8016984453607759.,-6516512838653414.,-.470915152196985767883,-44,55,
+ 8016984453656019.,-6516512935859793.,-.499786586287429021557,-44,55,
+ 8016984453658967.,-6516512941797722.,.499790444859640472227,-44,55,
+ 8016984453660324.,-6516512944531021.,-.465064594797044156166,-44,55,
+ 8016984453660333.,-6516512944549149.,-.467779052953875844919,-44,55,
+ 8016984453660432.,-6516512944748557.,-.497637980113707535607,-44,55,
+ 8016984453660441.,-6516512944766686.,.499647582195882027690,-44,55,
+ 8049376796585164.,-8101215316279530.,-.457467052802254938237,-44,53,
+ 8049376796616936.,-8101215309169198.,-.491640695946622821024,-44,53,
+ 8049376796640765.,-8101215303836449.,-.499930134247179088071,-44,53,
+ 8049376796642080.,-8101215303542162.,-.499451244072310853513,-44,53,
+ 8049376796642133.,-8101215303530302.,.497527181057887862593,-44,53,
+ 8049376796642167.,-8101215303522693.,.438985077403533811467,-44,53,
+ 8049376796642186.,-8101215303518441.,.494505679717702118892,-44,53,
+ 8049376796642422.,-8101215303465626.,.499920264532193347655,-44,53,
+ 8198893031068675.,8016624414346944.,-.499442883396543154676,-44,53,
+ 8198893031068710.,8016624414355113.,.470106087399978985622,-44,53,
+ 8198893031068738.,8016624414361649.,.445745241190653217313,-44,53,
+ 8198893031070646.,8016624414807029.,.499965450760607561252,-44,53,
+ 8198893031087230.,8016624418678194.,.495567980269726537177,-44,53,
+ 8466376832747454.,-5042111624814001.,-.481686871650184682798,-44,53,
+ 8466376832794331.,-5042111644702130.,.499795228414465004828,-44,53,
+ 8466376832794728.,-5042111644870561.,-.499184761080705102410,-44,53,
+ 8466376832794854.,-5042111644924019.,.493582831953224211446,-44,53,
+ 8466376832794873.,-5042111644932079.,-.483698222845541927771,-44,53,
+ 8466376832796400.,-5042111645579927.,-.499898501663844152242,-44,53,
+ 8466376832799305.,-5042111646812408.,-.499834100656945073611,-44,53,
+ 8627767282627698.,6064183514929205.,.499920468043830143403,-44,54,
+ 8627767282627973.,6064183515194370.,.498927256763518660558,-44,54,
+ 8627767282628024.,6064183515243547.,-.446711647126084877935,-44,54,
+ 8627767282628028.,6064183515247403.,.498728436687970271543,-44,54,
+ 8627767282632720.,6064183519771600.,.499730882303583829407,-44,54,
+ 8627767282642764.,6064183529456390.,.497869167514491598415,-44,54,
+ 8666709478623493.,4971138076363839.,.493072283521916481495,-44,53,
+ 8666709478648689.,4971138065606164.,.499928376372564124609,-44,53,
+ 8666709478652430.,4971138064008909.,-.499883385489109573165,-44,53,
+ 8666709478652875.,4971138063818911.,.461898971855566850371,-44,53,
+ 8666709478652876.,4971138063818485.,-.497737475867194416354,-44,53,
+ 8666709478662662.,4971138059640257.,.499215906118167084101,-44,53,
+ 8704521642365796.,-9007033143360346.,.499913265715819016289,-44,53,
+ 8704521642366353.,-9007033143362077.,-.480432401340219255340,-44,53,
+ 8704521642366371.,-9007033143362133.,-.451071787547565965935,-44,53,
+ 8704521642366408.,-9007033143362249.,.498169503749933824341,-44,53,
+ 8704521642366545.,-9007033143362675.,.499414631922834162618,-44,53,
+ 8704521642369815.,-9007033143372842.,-.499900847405102495998,-44,53,
+ 8704521642385891.,-9007033143422830.,-.494456430823921458056,-44,53,
+ 7146344544202515.,-5664593475764366.,-.264191654117720678617,-36,68,
+ 7146344544205550.,-5651558250023401.,-.492275489606574606073,-36,68,
+ 7146344544206764.,-5646344159727012.,-.495459653897401249922,-36,68,
+ 7146344544206806.,-5646163771100614.,.496437567296774464323,-36,68,
+ 7146344544206847.,-5645987677441510.,.276276348322878160942,-36,68,
+ 7146344544206848.,-5645983382474215.,.490443865143164849654,-36,68,
+ 7146344544206849.,-5645979087506919.,-.295387422453062310149,-36,68,
+ 7146344544224381.,-5570679720887042.,.447827479311610627319,-36,68,
+ 7170739958448096.,-6501843853097744.,-.498018990749645833128,-36,69,
+ 7170739958448119.,-6502041421593349.,.486885101881944715732,-36,69,
+ 7170739958448121.,-6502058601462531.,-.470914903643388072262,-36,69,
+ 7170739958448127.,-6502110141070080.,-.344281875414016273441,-36,69,
+ 7170739958448129.,-6502127320939263.,-.302059851020595902141,-36,69,
+ 7170739958448167.,-6502453738453739.,-.498794942903490688595,-36,69,
+ 7170739958449067.,-6510184679586070.,.107330671873303471485,-36,69,
+ 7170739958449967.,-6517915620718399.,-.169889677795187091615,-36,69,
+ 7170739958494683.,-6902023135909449.,.189697677001847768205,-36,69,
+ 7158542251322394.,4877362288068754.,-.459864201856895264983,-35,69,
+ 7158542251327426.,4790913186337764.,.489986480020034407409,-35,69,
+ 7158542251327472.,4790122912355327.,-.486061500180152524195,-35,69,
+ 7158542251327487.,4789865214317575.,-.001846514977179322205,-35,69,
+ 7158542251327488.,4789848034448392.,-.436264640562781418045,-35,69,
+ 7158542251327489.,4789830854579208.,.129313176692518967076,-35,69,
+ 7158542251327548.,4788817242297385.,.491223746876062042566,-35,69,
+ 7158542251327792.,4784625354216627.,.312603422958985270626,-35,69,
+ 5371956115275269.,6779401237121191.,-.472545200358289849985,-34,71,
+ 5371956115275774.,6848807908624262.,-.496061838569303186396,-34,71,
+ 5371956115275775.,6848945347577733.,-.074236621364534482445,-34,71,
+ 5371956115275777.,6849220225484676.,-.230655802809018470595,-34,71,
+ 5371956115275838.,6857604001646432.,.453951120246026480724,-34,71,
+ 5371956115281547.,7642242987014378.,.158653370331579616131,-34,71,
+ 5371956115312579.,5953624295560178.,.117148012027400209323,-34,70,
+ 7161591678107647.,5461501442824271.,.367204809242481278970,-33,71,
+ 7161591678107649.,5460951687010385.,-.162309375639435698215,-33,71,
+ 7161591678107654.,5459577297475669.,-.487389942332281208200,-33,71,
+ 7161591678107722.,5440885599803526.,.308062685516740952231,-33,71,
+ 7161591678107926.,5384810506787098.,-.346674160702762396684,-33,71,
+ 7161591678137217.,-5333276531008744.,.392644044316313122487,-33,72,
+ 4923784867822300.,6589305048283398.,.289680922363736285539,-32,69,
+ 4923784867862330.,8700989927483741.,.375226168990261485895,-32,72,
+ 4923784867864257.,6582231020762181.,.117604572506830375355,-32,72,
+ 4923784867871965.,-7571218424532180.,.476643823333144494098,-32,74,
+ 4923784867872710.,-5423881537652133.,.002039768250550315580,-32,73,
+ 4923784867872760.,-5533832700429714.,-.497395360720570532642,-32,73,
+ 4923784867872767.,-5549225863218576.,.152190781783874938035,-32,73,
+ 4923784867872768.,-5551424886474127.,-.468094569271074963661,-32,73,
+ 4923784867872769.,-5553623909729679.,-.088078976979909598166,-32,73,
+ 4588037610665507.,-6850191620325553.,.442125291434398896354,-30,71,
+ 4588037610666381.,-4928245294979136.,.228395855102084936530,-30,71,
+ 4588037610668031.,-5199427693287393.,-.317535561337497733613,-30,73,
+ 4588037610668033.,-5181835507242980.,.025710854981768624036,-30,73,
+ 4588037610668038.,-5137855042131947.,.462347583777452769433,-30,73,
+ 4588037610668062.,-4926748809598985.,.492208546298728625198,-30,73,
+ 4588037610668129.,-8674821154222239.,.038553450329220524799,-30,74,
+ 4588037610768106.,6836481095720302.,-.016288723779051301828,-30,66,
+ 5818983827634773.,6201168844505622.,.235478712776202786271,-30,72,
+ 5818983827635815.,6473617519748019.,-.084631118551208453720,-30,74,
+ 5818983827636223.,-5631955090988658.,.399195708307081972945,-30,77,
+ 5818983827636224.,-5772692579343986.,.499399987357493704568,-30,77,
+ 5818983827636225.,-5913430067699313.,-.395388720923602004402,-30,77,
+ 5818983827638308.,-4672962786119567.,-.328373171793910596211,-30,71,
+ 5818983827647871.,-6425555544614704.,-.359205869376511516992,-30,69,
+ 5818983827666997.,-8470092619419134.,.141839141613328287534,-30,68,
+ 5378363199848147.,-5312688698518718.,.077471598562072647154,-26,70,
+ 5378363199848322.,-8936224563050060.,-.454746988297900643881,-26,72,
+ 5378363199848439.,-5624651954149625.,.175621376109609486018,-26,75,
+ 5378363199848441.,-8997504094614022.,.056640525419207801348,-26,76,
+ 5378363199848447.,-8968418614233196.,.484670612069352553853,-26,78,
+ 5378363199848449.,4963921984997782.,-.433895313344602229315,-26,85,
+ 5378363199848497.,6756611336071036.,.288962397877130385941,-26,73,
+ 5378363199849255.,7089726719167689.,.462475989520125993049,-26,69,
+ 5378363199850363.,8417898892831053.,-.224282263620340510952,-26,68,
+ 5378363199859402.,6021480136746468.,.349598647942496311757,-26,65,
+ 5378363199895558.,6474612310849757.,-.363851591904364337193,-26,63,
+ 5560206444457848.,4652813891337958.,-.012324416651601840789,-25,65,
+ 5560206444461755.,5712351583125413.,.245250154454826018792,-25,69,
+ 5560206444461838.,8504400282982534.,.332012545318330609467,-25,70,
+ 5560206444462079.,6391452069778419.,.377448972963056097547,-25,78,
+ 5560206444462081.,-5811473219851781.,.359401038364582028115,-25,77,
+ 5560206444462084.,-4830568025490804.,-.355598969944805715713,-25,75,
+ 5560206444462087.,-8208267746018625.,.062608276728609194611,-25,75,
+ 8249388044351482.,4785926593330462.,-.334087245181575095084,-25,62,
+ 8249388044378847.,8199283857602472.,.151943823554669171443,-25,65,
+ 8249388044385273.,4535288819325084.,.374432768529834303742,-25,67,
+ 8249388044386191.,7966113965513265.,-.487048013623771510126,-25,71,
+ 8249388044386303.,5428135528320559.,.175382541432844737181,-25,77,
+ 8249388044386305.,-7158127452840863.,.354577739125881952027,-25,78,
+ 8249388044386311.,-7650165372660800.,.368834950717042344353,-25,75,
+ 8249388044386323.,-5290241063692808.,-.350816535029397638575,-25,73,
+ 8249388044386366.,-8696832531120730.,-.479991921534667629965,-25,72,
+ 6904797244423595.,-5250893179935818.,.203320686825141879679,-24,67,
+ 6904797244423774.,-7352785059376571.,-.019896615523172469739,-24,68,
+ 6904797244424132.,-8438259649871543.,.063570278119088233819,-24,71,
+ 6904797244424188.,-8911364831858104.,.071032210903440853208,-24,75,
+ 6904797244424191.,-8623861563209766.,.411355773421189600412,-24,77,
+ 6904797244424193.,4695268473136104.,-.156635787444181080085,-24,76,
+ 6904797244424201.,5090508186512263.,-.105458961261277232928,-24,73,
+ 8967144255500256.,5638292417329436.,-.310012125566755782466,-23,61,
+ 8967144255520753.,8449182442499160.,.261233383607616852575,-23,72,
+ 8967144255520767.,4543064756842390.,.270923321049377290109,-23,75,
+ 8967144255520769.,-8928268995797161.,.218342493204407957496,-23,76,
+ 8967144255521090.,-5664529744248972.,-.273686360091744592503,-23,67,
+ 8967144255523395.,-5776814727830040.,.383583528766174465582,-23,64,
+ 8967144255562421.,-5724720000282061.,.252945315172533760352,-23,60,
+ 5346671783305164.,-4532174741094225.,-.287186992345632965535,-21,60,
+ 5346671783313066.,-6016511092550103.,.129014449183179290452,-21,65,
+ 5346671783313392.,-9006670999530532.,-.446523518098164248234,-21,70,
+ 5346671783313405.,-6753286420561068.,.212629783463605132047,-21,72,
+ 5346671783313407.,-8998747172771154.,-.130827102482143670028,-21,74,
+ 5346671783313409.,4507825668355074.,-.399648554978521816834,-21,73,
+ 5346671783314057.,5708672534279079.,.197609700359476432314,-21,64,
+ 5346671783318008.,5057750463849714.,.274933782613593596632,-21,61,
+ 5346671783332169.,5156915884907076.,-.256113842129952063110,-21,59,
+ 6467564815197495.,7694158457753160.,.069595014158335943481,-20,57,
+ 6467564815252374.,4969792286143380.,-.123932645506241227276,-20,62,
+ 6467564815252536.,8514618217166241.,.025524871209206437933,-20,63,
+ 6467564815253503.,4504306727569052.,.416375462631839455536,-20,72,
+ 6467564815253505.,-9005785054341149.,.499619536438339366537,-20,73,
+ 6467564815253508.,-9006845704619530.,.463341029355129047210,-20,71,
+ 6467564815257616.,-4521180052804444.,.393213159223261121202,-20,60,
+ 6467564815278584.,-6893280570123314.,-.439221696876370466024,-20,58,
+ 7804232761081636.,-7740558902619957.,-.213007320049015036990,-19,64,
+ 7804232761081813.,-6051701073430576.,-.274896714167321374940,-19,66,
+ 7804232761081855.,-9006500434641636.,-.373046353784050331636,-19,72,
+ 7804232761081857.,4503949037414712.,.480044869367149458447,-19,71,
+ 7804232761081860.,4503686979838540.,-.263425036978154096491,-19,69,
+ 7804232761081865.,5066593256798838.,.037561568739374830105,-19,68,
+ 5519007584323628.,8412923421012485.,-.421225712864406194777,-18,56,
+ 5519007584350422.,8536296274778100.,.461182643099359286862,-18,59,
+ 5519007584353556.,6579468656466393.,-.003381311206845869310,-18,61,
+ 5519007584354303.,4503601697385909.,.278266040396377130279,-18,70,
+ 5519007584354305.,-9007195114666475.,.223198743361498887020,-18,71,
+ 5519007584354313.,-5066549321043188.,-.157556302660084088134,-18,67,
+ 5519007584354314.,-5629499274094495.,.139965468666348370777,-18,67,
+ 5519007584354348.,-6192449393869971.,-.286757037157812236112,-18,65,
+ 5519007584354417.,-7951667813477454.,-.460149721453701021042,-18,64,
+ 7304668022890131.,8375572950390052.,-.051890879738437208388,-12,53,
+ 7304668022910929.,-6614516798179550.,.324696568804068586505,-12,59,
+ 7304668022910975.,-9007199139549656.,-.035521643731176792368,-12,65,
+ 7304668022910977.,9007199190975358.,-.168854982196523057174,-12,65,
+ 7304668022911101.,8794727752652333.,-.243620194290625766355,-12,58,
+ 7304668022911680.,6162005947942807.,-.130318021606954128614,-12,55,
+ 7304668022915561.,8104968146647738.,.269916011962678463381,-12,53,
+ 7304668022922744.,4779753490759630.,-.300840654282271858760,-12,54,
+ 7347785269663743.,9007198903458364.,-.021919879766200681973,-11,64,
+ 7347785269663745.,-9007198890195746.,.111413503171721881634,-11,64,
+ 5500059640559615.,9007197819972738.,.419116646084534239269,-10,63,
+ 5500059640559617.,-9007197826197851.,-.447546919358002225496,-10,63,
+ 4586976137695743.,-9007193528220571.,-.199161840817056272896,-9,62,
+ 4586976137695745.,9007193528017475.,-.332693586842657359045,-9,62,
+ 8944333985714495.,9006832755334834.,-.081722808608585275535,-6,59,
+ 8944333985714497.,-9006832755343096.,.064132570972028475637,-6,59,
+ 6851593493588863.,9001336337944357.,.314533243558015997417,-4,57,
+ 6851593493588865.,-9001336337944208.,-.097401991988137061758,-4,57 };
+#include "trailer.h"
+
+double
+sincos_sin(double x)
+{
+ double y, z;
+
+ sincos(x, &y, &z);
+ return y;
+}
Index: regress/lib/libm/fpaccuracy/sincos2.c
===================================================================
RCS file: regress/lib/libm/fpaccuracy/sincos2.c
diff -N regress/lib/libm/fpaccuracy/sincos2.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ regress/lib/libm/fpaccuracy/sincos2.c 9 Mar 2018 20:05:01 -0000
@@ -0,0 +1,1462 @@
+/* $OpenBSD: cos.c,v 1.1 2009/04/09 01:24:43 martynas Exp $ */
+
+/*
+ * Copyright (c) 2009 Gaston H. Gonnet <[hidden email]>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* This program was generated automatically by a program written
+   by Gaston H. Gonnet on enigma on 2002-09-01 17:28:24.
+   Do not edit, rerun the original maple program.       */
+#include "header.h"
+#define DBL_MAX_EXP 1024
+#define N 1418
+#define F sincos_cos
+#define Fs "sincos cos"
+#define Fn fpaccuracy_sincos_cos
+
+double sincos_cos(double);
+
+  /* 1 candidate values discarded */
+
+static struct input_point { double arg_m, val, eps;
+ int arg_e, val_e; } input_points[N] = {
+ -8400657330644443.,7605196346403030.,-.044416560457894922563,-48,84,
+ -8400657330534880.,4869396273706365.,.169880788279836733219,-48,90,
+ -8400657330533784.,6289574084656790.,-.255257492927285191224,-48,97,
+ -8400657330533773.,6215974209430896.,-.336479547240553044078,-48,103,
+ -8400657330533772.,-7453205702383268.,-.084119886810127428296,-48,101,
+ -7516377611530218.,-7457913609436273.,-.383149878784768004998,-48,103,
+ -7516377611530217.,7142720852381924.,-.345787469696201618196,-48,101,
+ -7516377611530207.,6075919587486990.,.228388283142499089029,-48,97,
+ -7516377611529080.,5004066539791450.,.111159269834481850860,-48,90,
+ -7516377611416375.,7823217165215121.,.407773576189983331718,-48,84,
+ -6632097892526663.,8699853009441651.,.102779304810088942224,-48,103,
+ -6632097892526662.,-6832236002380579.,-.224305173797469228189,-48,101,
+ -6632097892526610.,-7425103082014253.,.449620231702891160433,-48,95,
+ -6632097892521397.,-5789762733424524.,-.348049504224024223330,-48,88,
+ -6632097892000044.,-4523620690697855.,-.093830087087027177687,-48,81,
+ -5747818173523108.,-4970896204723514.,-.411204365417704874486,-48,102,
+ -5747818173523107.,6521751152379235.,-.205602182708860027894,-48,101,
+ -5747818173523100.,8696518241945772.,.349299727160301940577,-48,98,
+ -5747818173522339.,6761768338665489.,.346478895712815827862,-48,91,
+ -5747818173446242.,5282172336325216.,.135453714556871576941,-48,84,
+ -4863538454519553.,5591865904726203.,.271019078430365203309,-48,102,
+ -4863538454519552.,-6211266302377890.,-.364490460784810618213,-48,101,
+ -4863538454519528.,-6949501513005053.,-.073890326890614031485,-48,96,
+ -4863538454517045.,-5514467724105968.,.022860304770261404304,-48,89,
+ -4863538454268721.,-8618511228684388.,.251497877420076291608,-48,83,
+ -7958517471031996.,-6212835604728892.,-.130833791443025448267,-49,102,
+ -7958517471031995.,5588727300024200.,-.261667582886054288479,-49,103,
+ -7958517471031988.,8230594804149880.,.483645776069390309929,-49,99,
+ -7958517471031343.,5737781521231581.,-.058721518658445869890,-49,92,
+ -7958517470966799.,8960512649166011.,.452187445962740622016,-49,86,
+ -6189958033024886.,6833805304731581.,-.009351495544314399953,-49,102,
+ -6189958033024885.,-8693575800037644.,-.037405982177249058433,-49,104,
+ -6189958033024867.,-5134468141729602.,-.094042234234861264694,-49,97,
+ -6189958033023106.,-7825185970768669.,-.032719396882059983641,-49,91,
+ -6189958032847024.,-6111265716710806.,-.226716448012327035059,-49,84,
+ -5611213340369912.,-7712838840641255.,.480202387451061777083,-49,53,
+ -5611213340369897.,-7712838840641378.,-.475843464428667582494,-49,53,
+ -5611213340369859.,-7712838840641692.,-.497826289166140836641,-49,53,
+ -5611213340369586.,-7712838840643948.,-.497860792167985727446,-49,53,
+ -5611213340359303.,-7712838840728924.,-.499159084355836901478,-49,53,
+ -5611213340352751.,-7712838840783068.,-.499984972531721240922,-49,53,
+ -5611213340352660.,-7712838840783820.,-.499996435844684903386,-49,53,
+ -5592856839920927.,-7860405221135565.,-.499974250619587542885,-49,53,
+ -5592856839876769.,-7860405221480557.,-.499983395848424222593,-49,53,
+ -5592856839876043.,-7860405221486230.,.499654522658192967422,-49,53,
+ -5592856839876011.,-7860405221486480.,.494128921570866460684,-49,53,
+ -5592856839875883.,-7860405221487480.,.472026517475543824590,-49,53,
+ -5589917886911389.,-7883259077397994.,.499753880205263983400,-49,53,
+ -5589917886910909.,-7883259077401709.,.457435610888133304717,-49,53,
+ -5589917886910905.,-7883259077401740.,.498749625334569722883,-49,53,
+ -5589917886909622.,-7883259077411669.,-.499780220433739710094,-49,53,
+ -5589917886901586.,-7883259077473865.,-.499924137489486856710,-49,53,
+ -5589917886897568.,-7883259077504963.,-.499995493627922679909,-49,53,
+ -5584028471369328.,-7928408990984186.,-.499995179385612851204,-49,53,
+ -5584028471356886.,-7928408991078655.,-.499979642076543054432,-49,53,
+ -5584028471356638.,-7928408991080539.,.497931010797110348994,-49,53,
+ -5584028471356584.,-7928408991080949.,.489411556384883617418,-49,53,
+ -5584028471356417.,-7928408991082216.,-.499898607724598855898,-49,53,
+ -5555479367833232.,-8134889155758397.,-.499960035246781284331,-49,53,
+ -5555479367779076.,-8134889156130399.,.499865803739753917037,-49,53,
+ -5555479367778320.,-8134889156135592.,.487898472124600140083,-49,53,
+ -5555479367778297.,-8134889156135750.,.499439148773673217763,-49,53,
+ -5555479367774570.,-8134889156161351.,.499965496461634252476,-49,53,
+ -5555479367772317.,-8134889156176826.,-.499984461731911351119,-49,53,
+ -5545533983875703.,-8201931630652892.,-.499972754288119168433,-49,53,
+ -5545533983847437.,-8201931630839808.,.499984069666801063903,-49,53,
+ -5545533983828593.,-8201931630964418.,.499966773328504991005,-49,53,
+ -5545533983828420.,-8201931630965561.,-.499714939153989219354,-49,53,
+ -5545533983828358.,-8201931630965971.,-.488040176964954676206,-49,53,
+ -5545533983828345.,-8201931630966057.,-.453334178428830576027,-49,53,
+ -5544198963943229.,-8210736665287633.,-.499957101196465166917,-49,53,
+ -5544198963889502.,-8210736665641057.,-.499990528556725829008,-49,53,
+ -5544198963888997.,-8210736665644379.,-.463249184717191229999,-49,53,
+ -5544198963888990.,-8210736665644426.,.489735348808200677737,-49,53,
+ -5544198963888971.,-8210736665644550.,-.495020917330764740515,-49,53,
+ -5544198963888779.,-8210736665645813.,-.498873711473401843586,-49,53,
+ -5544198963888715.,-8210736665646235.,.499842024024628356992,-49,53,
+ -5539725571705764.,-8239903749301863.,-.488391202795444200778,-49,53,
+ -5539725571705738.,-8239903749302032.,.498578017446952414901,-49,53,
+ -5539725571705435.,-8239903749303989.,-.499434529970697756449,-49,53,
+ -5539725571704513.,-8239903749309947.,-.499987547363686211343,-49,53,
+ -5539725571686402.,-8239903749426982.,.499999907882867931707,-49,53,
+ -5537279579437201.,-8255632019636325.,-.499992529557009711593,-49,53,
+ -5537279579435100.,-8255632019649768.,-.499943838662422774364,-49,53,
+ -5537279579434731.,-8255632019652130.,.497208941862106833629,-49,53,
+ -5537279579434608.,-8255632019652917.,.496259869491843091543,-49,53,
+ -5537279579434603.,-8255632019652948.,-.495648629376660839927,-49,53,
+ -5537279579417180.,-8255632019764427.,-.499999831522147541150,-49,53,
+ -5522619698200338.,-8346621842601914.,.499952884823853884738,-49,53,
+ -5522619698198110.,-8346621842615314.,.499390764098276670119,-49,53,
+ -5522619698197762.,-8346621842617406.,-.498901691786348120744,-49,53,
+ -5522619698197692.,-8346621842617828.,.495694653679645421353,-49,53,
+ -5522619698197689.,-8346621842617846.,.452605925631071935492,-49,53,
+ -5522619698193306.,-8346621842644207.,.499974499817151941216,-49,53,
+ -5522619698186274.,-8346621842686500.,.499997417163965206156,-49,53,
+ -5488797129011645.,-8534860731767625.,.499684117815729588325,-49,53,
+ -5488797129011486.,-8534860731768438.,.492625365751707009579,-49,53,
+ -5488797129011477.,-8534860731768484.,.473357889240141244755,-49,53,
+ -5488797129011230.,-8534860731769746.,-.499871743059148987917,-49,53,
+ -5488797129009102.,-8534860731780628.,.499996108263828360141,-49,53,
+ -5486380295724261.,-8547139917527553.,-.499983127890274113387,-49,53,
+ -5486380295712394.,-8547139917587459.,-.499980383379084988233,-49,53,
+ -5486380295690198.,-8547139917699507.,-.496594362711752233754,-49,53,
+ -5486380295690177.,-8547139917699614.,.492956513395686547857,-49,53,
+ -5486380295690094.,-8547139917700033.,.499276642889109092472,-49,53,
+ -5486380295689616.,-8547139917702446.,.499529922383005000641,-49,53,
+ -5486380295688660.,-8547139917707271.,-.499963500142550315694,-49,53,
+ -5482520377157949.,-8566424171963791.,-.499990094895550582961,-49,53,
+ -5482520377153689.,-8566424171984852.,-.499953559407536767372,-49,53,
+ -5482520377149429.,-8566424172005913.,-.499916533374133629132,-49,53,
+ -5482520377149126.,-8566424172007412.,.499381893501856900881,-49,53,
+ -5482520377149090.,-8566424172007589.,-.480899481357835528000,-49,53,
+ -5482520377149073.,-8566424172007674.,.472856536081709342402,-49,53,
+ -5482520377105207.,-8566424172224542.,-.499972682203354770727,-49,53,
+ -5470973675770237.,-8621703968456354.,-.499994466507559850468,-49,53,
+ -5470973675756655.,-8621703968519249.,-.499985986381279902421,-49,53,
+ -5470973675752793.,-8621703968537134.,.499870087591689885839,-49,53,
+ -5470973675751577.,-8621703968542765.,.494128324343919918641,-49,53,
+ -5470973675751558.,-8621703968542852.,-.490336390387640295594,-49,53,
+ -5470973675751550.,-8621703968542890.,.463573203412535681425,-49,53,
+ -5470973675751252.,-8621703968544270.,.496705573709489309509,-49,53,
+ -5470973675750862.,-8621703968546076.,.499798276741271641016,-49,53,
+ -5468820810010042.,-8631610305696557.,-.499999887195858153553,-49,53,
+ -5468820810001228.,-8631610305736857.,.497439494029681707270,-49,53,
+ -5468820810001193.,-8631610305737017.,.471901760369420264848,-49,53,
+ -5468820810001172.,-8631610305737113.,.456579120189278496485,-49,53,
+ -5468820810001034.,-8631610305737744.,.498744627875730600603,-49,53,
+ -5468820810000840.,-8631610305738630.,-.499950237253145346052,-49,53,
+ -5468088758171272.,-8634950063552521.,.499988741090492353520,-49,53,
+ -5468088758166082.,-8634950063576146.,-.499947833592429300641,-49,53,
+ -5468088758158297.,-8634950063611585.,-.499851319497013674325,-49,53,
+ -5468088758157665.,-8634950063614463.,.499771231703445115583,-49,53,
+ -5468088758157109.,-8634950063616994.,.467793611694989403053,-49,53,
+ -5468088758157100.,-8634950063617035.,.497851527987149859649,-49,53,
+ -5468088758157033.,-8634950063617340.,.499393793787048814943,-49,53,
+ -5468088758139500.,-8634950063697153.,-.499996834043878567745,-49,53,
+ -5465050035002281.,-8648657122615357.,-.499914628653620442748,-49,53,
+ -5465050034997517.,-8648657122636649.,-.499906370402012704448,-49,53,
+ -5465050034933203.,-8648657122924091.,-.499734262825352932188,-49,53,
+ -5465050034923675.,-8648657122966675.,-.499699165117553324000,-49,53,
+ -5465050034923104.,-8648657122969228.,.499463386362785180507,-49,53,
+ -5465050034923055.,-8648657122969446.,-.498857164846953586410,-49,53,
+ -5465050034923006.,-8648657122969665.,-.497177715991168223102,-49,53,
+ -5465050034922974.,-8648657122969809.,.483510903705121124019,-49,53,
+ -5461318210793740.,-8665145812986454.,-.499967954538192198126,-49,53,
+ -5461318210755878.,-8665145813151814.,.499992441386400722167,-49,53,
+ -5461318210750029.,-8665145813177359.,.499963406814733602821,-49,53,
+ -5461318210747261.,-8665145813189447.,-.499879038121747661328,-49,53,
+ -5461318210746635.,-8665145813192182.,.499434079605935830042,-49,53,
+ -5461318210746115.,-8665145813194453.,.444550415577783905132,-49,53,
+ -5461318210746107.,-8665145813194487.,-.494755486887979019865,-49,53,
+ -5461318210746009.,-8665145813194916.,.498747208048441465871,-49,53,
+ -5437604071188480.,-8760997633325166.,-.499979159544265144100,-49,53,
+ -5437604071184932.,-8760997633338348.,-.489345550650820153508,-49,53,
+ -5437604071184925.,-8760997633338374.,-.496652642961230896341,-49,53,
+ -5437604071183281.,-8760997633344482.,-.498489713774569962481,-49,53,
+ -5437604071181911.,-8760997633349573.,.499979450956228839345,-49,53,
+ -5437604071136202.,-8760997633519396.,-.499971059092454539848,-49,53,
+ -5435306075380738.,-8769462428316451.,-.499992541288177653490,-49,53,
+ -5435306075360553.,-8769462428390162.,-.499512362146671358029,-49,53,
+ -5435306075360441.,-8769462428390571.,-.497874788952230430250,-49,53,
+ -5435306075360329.,-8769462428390980.,-.496237215410677651044,-49,53,
+ -5435306075360306.,-8769462428391064.,-.486972356515434418537,-49,53,
+ -5435306075360303.,-8769462428391075.,-.442285635788888719722,-49,53,
+ -5435306075359367.,-8769462428394494.,.499971243053684786654,-49,53,
+ -5435306075357532.,-8769462428401194.,-.499984485017334747598,-49,53,
+ -5398648100219778.,-8884648336043988.,-.499988483251404434084,-49,53,
+ -5398648100203470.,-8884648336086884.,-.499911638583372419086,-49,53,
+ -5398648100196942.,-8884648336104056.,.474366980486612052031,-49,53,
+ -5398648100196923.,-8884648336104106.,.497423246593393336540,-49,53,
+ -5398648100196877.,-8884648336104226.,-.499387898579855428784,-49,53,
+ -5398648100196574.,-8884648336105024.,.499877820565619250840,-49,53,
+ -5398648100172112.,-8884648336169367.,-.499988203331527610374,-49,53,
+ -5395452313016709.,-8892911218010245.,-.499460898144191510494,-49,53,
+ -5395452312802602.,-8892911218554234.,.499875822532029437115,-49,53,
+ -5395452312800601.,-8892911218559318.,.499875690915827782495,-49,53,
+ -5395452312799902.,-8892911218561093.,-.470139321084956265653,-49,53,
+ -5395452312799889.,-8892911218561126.,-.499624578689009748650,-49,53,
+ -5357868470800801.,-8968519267458218.,-.499996836888239456044,-49,53,
+ -5357868470792948.,-8968519267469850.,-.438586140646419340844,-49,53,
+ -5357868470792925.,-8968519267469885.,.493594231968183299413,-49,53,
+ -5357868470792898.,-8968519267469924.,-.499063591465137419697,-49,53,
+ -5357868470792765.,-8968519267470121.,-.499933610298534834663,-49,53,
+ -5357868470790450.,-8968519267473551.,.499960502978098028176,-49,53,
+ -5340868642043066.,-8989606842014815.,-.499999606249011855862,-49,53,
+ -5340868642030617.,-8989606842027258.,-.499986533386520437516,-49,53,
+ -5340868642026467.,-8989606842031406.,-.499820542926501626672,-49,53,
+ -5340868642025315.,-8989606842032558.,.055406343945863594695,-49,53,
+ -5340868642025143.,-8989606842032730.,.138304805979612399251,-49,53,
+ -5340868642024431.,-8989606842033442.,.481465890302086544647,-49,53,
+ -5340868642024393.,-8989606842033480.,.499780667678571738480,-49,53,
+ -5334469363661483.,-8995422095929971.,.499991330417515551529,-49,53,
+ -5334469363657078.,-8995422095933574.,.499972314418460344339,-49,53,
+ -5334469363655606.,-8995422095934777.,-.499125858276169138349,-49,53,
+ -5334469363655238.,-8995422095935078.,-.498900391839954185365,-49,53,
+ -5334469363655194.,-8995422095935114.,-.488003868421824861055,-49,53,
+ -5334469363608255.,-8995422095973507.,-.499974553258696882268,-49,53,
+ -5325827369854858.,-9001430484576457.,-.499978932024103562786,-49,53,
+ -5325827369851157.,-9001430484578577.,.498588914525191054123,-49,53,
+ -5325827369851075.,-9001430484578623.,-.450375532996645442735,-49,53,
+ -5325827369851047.,-9001430484578639.,-.481729246740848212536,-49,53,
+ -5325827369851033.,-9001430484578647.,-.497406103604598966554,-49,53,
+ -5325827369850392.,-9001430484579015.,.499103527382061457399,-49,53,
+ -5325827369849117.,-9001430484579745.,.499961252415605537874,-49,53,
+ -5325827369837380.,-9001430484586464.,-.499983936534138502245,-49,53,
+ -5325827369802424.,-9001430484606478.,-.499967915403559963284,-49,53,
+ -5317788020389720.,-9005115384474773.,-.469405292803159803200,-49,53,
+ -5317788020389717.,-9005115384474775.,.498138669155270831288,-49,53,
+ -5317788020389255.,-9005115384474934.,.499908813805800149930,-49,53,
+ -5317788020385835.,-9005115384476110.,-.499974342363072689729,-49,53,
+ -5317788020377362.,-9005115384479026.,-.499975829452676518706,-49,53,
+ -5317788020326524.,-9005115384496522.,-.499941912586865188968,-49,53,
+ -5307605800725736.,-9007146458554139.,-.499983100070207691283,-49,53,
+ -5307605800692185.,-9007146458555978.,.497072310219736826585,-49,53,
+ -5307605800692039.,-9007146458555986.,.498847888759093886779,-49,53,
+ -5307605800691966.,-9007146458555990.,.499735678255960019528,-49,53,
+ -5307605800690816.,-9007146458556052.,-.499977206943655963314,-49,53,
+ -5307605800687439.,-9007146458556238.,.499996563941618267289,-49,53,
+ -5296649568745719.,-9006040835689554.,-.499988268608911743452,-49,53,
+ -5296649568728412.,-9006040835685114.,.499989709222314466920,-49,53,
+ -5296649568723716.,-9006040835683908.,-.499957017917248285921,-49,53,
+ -5296649568719020.,-9006040835682703.,-.499903118370060018466,-49,53,
+ -5296649568718794.,-9006040835682646.,.492007498223071093446,-49,53,
+ -5296649568718786.,-9006040835682643.,-.455181506472696648198,-49,53,
+ -5296649568718755.,-9006040835682636.,.499461100348382066635,-49,53,
+ -5266341419812069.,-8985218448557553.,-.487121640438567778600,-49,53,
+ -5266341419812052.,-8985218448557534.,-.496214739731716340002,-49,53,
+ -5266341419811941.,-8985218448557410.,-.496763799620859497785,-49,53,
+ -5266341419811275.,-8985218448556667.,.499941848380197007866,-49,53,
+ -5266341419807646.,-8985218448552612.,-.499990668506162832284,-49,53,
+ -5266341419778503.,-8985218448520056.,-.499986316203223256088,-49,53,
+ -5242088987197177.,-8949797280614308.,-.499987388494842763065,-49,53,
+ -5242088987167664.,-8949797280561082.,-.499437003604860493316,-49,53,
+ -5242088987167659.,-8949797280561073.,-.482054737707461214144,-49,53,
+ -5242088987166341.,-8949797280558697.,.499910577468736775196,-49,53,
+ -5242088987163522.,-8949797280553612.,-.499967692241711550386,-49,53,
+ -5242088987155813.,-8949797280539709.,-.499988391284647525157,-49,53,
+ -5208774931147703.,-8874084728900245.,-.499995083850561089536,-49,53,
+ -5208774931133984.,-8874084728862647.,-.499987944909544246983,-49,53,
+ -5208774931125068.,-8874084728838212.,-.499761804909691349076,-49,53,
+ -5208774931124829.,-8874084728837558.,.498561918800136275952,-49,53,
+ -5208774931124802.,-8874084728837484.,.494188448357449056815,-49,53,
+ -5208774931124748.,-8874084728837336.,.485441507533314279688,-49,53,
+ -5208774931124744.,-8874084728837325.,.447756548956996934831,-49,53,
+ -5208774931123237.,-8874084728833195.,.499948437210421229014,-49,53,
+ -5208774931120265.,-8874084728825049.,-.499975535746545057059,-49,53,
+ -5200108832537773.,-8849284081342698.,.499996044555893627766,-49,53,
+ -5200108832535491.,-8849284081335891.,.499982262162246920513,-49,53,
+ -5200108832535437.,-8849284081335729.,-.422892733556522152277,-49,53,
+ -5200108832535433.,-8849284081335717.,-.491253844347265930186,-49,53,
+ -5161411928697027.,-8713046857636093.,-.499976348663653656414,-49,53,
+ -5161411928697009.,-8713046857636020.,-.499820346088982580679,-49,53,
+ -5161411928696055.,-8713046857632151.,-.491552196884206212576,-49,53,
+ -5161411928695353.,-8713046857629304.,-.485468071111234097284,-49,53,
+ -5161411928695335.,-8713046857629231.,-.485312067708128032075,-49,53,
+ -5161411928690620.,-8713046857610110.,.499996908268470147535,-49,53,
+ -5120907462135503.,-8526376712292191.,.499328804593824328506,-49,53,
+ -5120907462135484.,-8526376712292093.,.496033794960664771880,-49,53,
+ -5120907462135408.,-8526376712291701.,.482853756525151794006,-49,53,
+ -5120907462135205.,-8526376712290653.,-.499719240113073285152,-49,53,
+ -5120907462134292.,-8526376712285945.,.499841631077771300081,-49,53,
+ -5120907462130044.,-8526376712264035.,.499989331062768393701,-49,53,
+ -5120907462089073.,-8526376712052717.,-.499973642789680456996,-49,53,
+ -5119822908958409.,-8520767069433470.,-.499997671298879425214,-49,53,
+ -5119822908932442.,-8520767069298782.,-.499117971479741855901,-49,53,
+ -5119822908932335.,-8520767069298228.,.498228472152504007536,-49,53,
+ -5119822908932319.,-8520767069298145.,.488485884310885233922,-49,53,
+ -5119822908932030.,-8520767069296645.,-.499989607393385367350,-49,53,
+ -5119304171100503.,-8518072815571934.,-.499946243072604430653,-49,53,
+ -5119304171098830.,-8518072815563234.,.498823313783135047983,-49,53,
+ -5119304171097909.,-8518072815558444.,.468857274081611625679,-49,53,
+ -5119304171097894.,-8518072815558366.,.481398543981998854273,-49,53,
+ -5119304171097874.,-8518072815558262.,.498120237191922563550,-49,53,
+ -5119304171094762.,-8518072815542076.,-.499984168355463252745,-49,53,
+ -5119304171066296.,-8518072815394029.,-.499984944054303325728,-49,53,
+ -5095830265870561.,-8388620033634289.,-.499923856491243597916,-49,53,
+ -5095830265869451.,-8388620033627821.,-.450963336167988689037,-49,53,
+ -5095830265869445.,-8388620033627786.,-.488536522455998794348,-49,53,
+ -5095830265869416.,-8388620033627618.,.496526410498719129063,-49,53,
+ -5095830265869283.,-8388620033626843.,.496987448127929639770,-49,53,
+ -5095830265868485.,-8388620033622193.,.499753683735909368082,-49,53,
+ -5095830265864067.,-8388620033596448.,-.499968782056927568100,-49,53,
+ -5095830265857573.,-8388620033558608.,.499987408663488065056,-49,53,
+ -5095830265792500.,-8388620033179422.,-.499927980454211662591,-49,53,
+ -5093481699158887.,-8374861807487900.,-.499986707523888863068,-49,53,
+ -5093481699127140.,-8374861807300937.,.499987174179138732823,-49,53,
+ -5093481699125272.,-8374861807289935.,-.499856037736199470379,-49,53,
+ -5093481699124604.,-8374861807286002.,.476645448480872238530,-49,53,
+ -5093481699124595.,-8374861807285949.,.479322863794843820113,-49,53,
+ -5093481699124532.,-8374861807285578.,.498064771052579976072,-49,53,
+ -5093481699124523.,-8374861807285524.,-.499257813616324132381,-49,53,
+ -5093481699124153.,-8374861807283346.,.499702596292727632987,-49,53,
+ -5087250947808542.,-8337655539518174.,-.499969879590333549476,-49,53,
+ -5087250947769274.,-8337655539280467.,.499977172203129886517,-49,53,
+ -5087250947761383.,-8337655539232698.,-.499926708547927089515,-49,53,
+ -5087250947760635.,-8337655539228170.,-.497889885842958364978,-49,53,
+ -5087250947759457.,-8337655539221040.,.499970273877279188476,-49,53,
+ -8842797190035551.,-5902350754727548.,.299073565063303663456,-50,103,
+ -8842797190035550.,6209697000026889.,-.401852869873393436560,-50,104,
+ -8842797190035549.,6056023877377218.,.149536782531650225345,-50,102,
+ -8842797190035467.,5864862395652467.,.033586512221700779842,-50,96,
+ -8842797190027264.,4555466178789299.,-.101300146498424066278,-50,89,
+ -5305678314032407.,6089531447489377.,.460779964990088187429,-50,89,
+ -5305678314021441.,7796376626376891.,-.020151907348816765519,-50,96,
+ -5305678314021331.,7144290154732925.,.420555860962017410920,-50,103,
+ -5305678314021330.,-7451636400032266.,-.317776556151927950632,-50,105,
+ -7074237752028441.,-6523320454730237.,.439258852050642692296,-52,105,
+ -7074237752028440.,4967757600021511.,-.121482295898714674744,-52,106,
+ -7074237752028427.,7473591819477728.,.214953678253154342761,-52,101,
+ -7074237752027162.,5621916272636230.,-.248320674464132499187,-52,94,
+ -8871213671077771.,4980479484084552.,-.439118496821854073388,-53,53,
+ -8871213671077765.,4980479484084557.,-.439809179342430622133,-53,53,
+ -8871213671077471.,4980479484084802.,-.473652622853388772137,-53,53,
+ -8871213671077249.,4980479484084987.,-.499207876120281459299,-53,53,
+ -8871213671077243.,4980479484084992.,-.499898558641050278860,-53,53,
+ -8871213671071451.,4980479484089818.,-.499970753054003125052,-53,53,
+ -8871213671068555.,4980479484092230.,.499993148967231202674,-53,53,
+ -8871213671041046.,4980479484115151.,.499995533757391328523,-53,53,
+ -8108579655011532.,5597319449067323.,-.499813007882994132845,-53,53,
+ -8108579655010927.,5597319449067797.,-.499351497644220381499,-53,53,
+ -8108579655010710.,5597319449067967.,-.485962823730020036366,-53,53,
+ -8108579655010673.,5597319449067996.,-.497504847072162605463,-53,53,
+ -8108579655010576.,5597319449068071.,.499263362003393629801,-53,53,
+ -8108579655009366.,5597319449069020.,-.499813617624119290108,-53,53,
+ -8108579654961714.,5597319449106354.,-.499827113820213005799,-53,53,
+ -8108579654422380.,5597319449528907.,-.499990787062857254083,-53,53,
+ -7881394195508072.,5773513623153388.,-.499765315987291662605,-53,53,
+ -7881394195507973.,5773513623153463.,.487709633853375836522,-53,53,
+ -7881394195507960.,5773513623153473.,.465862910095027842111,-53,53,
+ -7881394195507887.,5773513623153529.,.497031307451773412617,-53,53,
+ -7881394195507431.,5773513623153879.,.499946227918203600974,-53,53,
+ -7881394195497132.,5773513623161784.,.499991763195715927834,-53,53,
+ -7881394195493699.,5773513623164420.,-.499993060055852880585,-53,53,
+ -7109328173664483.,6344190727408115.,-.499983694297122957811,-53,53,
+ -7109328173647712.,6344190727420019.,.497818539802917511902,-53,53,
+ -7109328173647519.,6344190727420157.,-.499940936135642459201,-53,53,
+ -7109328173622976.,6344190727437579.,-.499997011479150807301,-53,53,
+ -7006352136001595.,6416872705785308.,.499994973603746235484,-53,53,
+ -7006352135984183.,6416872705797528.,-.499913590317814113136,-53,53,
+ -7006352135984069.,6416872705797608.,-.499568401807754483221,-53,53,
+ -7006352135983100.,6416872705798288.,-.496634299513749351403,-53,53,
+ -7006352135983043.,6416872705798328.,-.496461705263473603723,-53,53,
+ -7006352135983023.,6416872705798342.,-.461313426579227226264,-53,53,
+ -7006352135978436.,6416872705801560.,.499944288816959357696,-53,53,
+ -7006352135966828.,6416872705809707.,-.499994772395849636394,-53,53,
+ -6828286958498190.,6540569239917452.,-.499994436371831222890,-53,53,
+ -6828286958434528.,6540569239961222.,-.499987507465398262541,-53,53,
+ -6828286958433011.,6540569239962264.,.494106461580760110519,-53,53,
+ -6828286958433008.,6540569239962267.,-.443281618902522925575,-53,53,
+ -6828286958432979.,6540569239962286.,.495300269759036985088,-53,53,
+ -6828286958432867.,6540569239962363.,.499478598382355936557,-53,53,
+ -6828286958432851.,6540569239962375.,-.499924497528681052537,-53,53,
+ -6595469068453401.,6698437586859074.,.498527252931457556958,-53,53,
+ -6595469068452689.,6698437586859550.,.499182592620238626827,-53,53,
+ -6595469068451799.,6698437586860146.,-.499998232827644526211,-53,53,
+ -5574097035225108.,7336783874371503.,-.499994973756071255831,-53,53,
+ -5574097035223541.,7336783874372412.,-.486315165337873638205,-53,53,
+ -5574097035223510.,7336783874372429.,.496725086134656134686,-53,53,
+ -5574097035223460.,7336783874372459.,-.498371282458220906512,-53,53,
+ -5574097035223279.,7336783874372563.,.499379863233673660544,-53,53,
+ -5574097035193091.,7336783874390075.,.499996319829435180369,-53,53,
+ -5292230209316694.,7496675488808429.,.499903437544274136456,-53,53,
+ -5292230209316510.,7496675488808531.,.496291729208715072926,-53,53,
+ -5292230209311715.,7496675488811189.,.499997480991517031780,-53,53,
+ -5268565944197833.,7509767370248129.,-.499977720314518468673,-53,53,
+ -5268565944195426.,7509767370249458.,-.499907733924896089442,-53,53,
+ -5268565944193863.,7509767370250320.,.494321342949103924726,-53,53,
+ -5268565944193767.,7509767370250373.,.499725048239176165289,-53,53,
+ -5268565944184139.,7509767370255690.,-.499995013043754737680,-53,53,
+ -4510984822812265.,7901017689523170.,-.499998958129865614743,-53,53,
+ -4510984822805365.,7901017689526482.,.499991103390438942841,-53,53,
+ -4510984822793529.,7901017689532165.,.495336363339143936931,-53,53,
+ -4510984822793527.,7901017689532166.,.455626215527911425425,-53,53,
+ -4510984822793504.,7901017689532177.,.498959515698709544180,-53,53,
+ -4510984822793227.,7901017689532310.,.499104043838623042939,-53,53,
+ -4510984822791565.,7901017689533108.,.499971212521182580388,-53,53,
+ -8644717199292641.,7989846539598089.,-.499999431216378810018,-54,53,
+ -8644717199271769.,7989846539602907.,-.499987542780286878034,-54,53,
+ -8644717199269447.,7989846539603443.,-.499794576552293176867,-54,53,
+ -8644717199267610.,7989846539603867.,-.454852940573638477463,-54,53,
+ -8644717199267606.,7989846539603867.,.468489338437656072914,-54,53,
+ -8644717199267463.,7989846539603900.,.477975813091177473886,-54,53,
+ -8644717199267138.,7989846539603975.,.499535982756399169196,-54,53,
+ -8644717199267125.,7989846539603979.,-.499601610457046054484,-54,53,
+ -7492339963739262.,8239332622016390.,-.499999249468614221349,-54,53,
+ -7492339963737173.,8239332622016812.,-.499990638865657978981,-54,53,
+ -7492339963691215.,8239332622026096.,-.499801233632350886081,-54,53,
+ -7492339963682958.,8239332622027764.,-.498809814122359986744,-54,53,
+ -7492339963682953.,8239332622027765.,-.488757136746409903912,-54,53,
+ -7492339963682933.,8239332622027769.,-.448546427242615919937,-54,53,
+ -7492339963682859.,8239332622027784.,-.499766802078666483575,-54,53,
+ -7298995560589922.,8277914929044471.,.499945474530384980175,-54,53,
+ -7298995560588410.,8277914929044770.,-.499829888070591586419,-54,53,
+ -7298995560586898.,8277914929045068.,-.499605250729883788079,-54,53,
+ -7298995560586558.,8277914929045135.,-.488972726468178939030,-54,53,
+ -7298995560586553.,8277914929045135.,.496477751829765307846,-54,53,
+ -7298995560586416.,8277914929045162.,.497820857193189553062,-54,53,
+ -7298995560563117.,8277914929049754.,.499959622947379071142,-54,53,
+ -7298995560491637.,8277914929063842.,.499997262456225732909,-54,53,
+ -4924871031073739.,8672693674275916.,-.499995680032431677419,-54,53,
+ -4924871031067124.,8672693674276809.,-.499743281199582048857,-54,53,
+ -4924871031066998.,8672693674276826.,-.490214664090305910187,-54,53,
+ -4924871031066983.,8672693674276828.,-.465270781101134631346,-54,53,
+ -4924871031066961.,8672693674276831.,-.495353086050360966040,-54,53,
+ -4924871031066924.,8672693674276835.,.499508491989547391855,-54,53,
+ -4924871031065761.,8672693674276993.,-.499842446936846573216,-54,53,
+ -4924871031063035.,8672693674277360.,.499959221439678859176,-54,53,
+ -4517699360174536.,8725440404889839.,.499712534411703952783,-54,53,
+ -4517699360174439.,8725440404889852.,-.464418642011375210205,-54,53,
+ -4517699360174423.,8725440404889854.,-.479120691730670306131,-54,53,
+ -4517699360174399.,8725440404889856.,.498826233690374144058,-54,53,
+ -4517699360173448.,8725440404889974.,.499973153486795176270,-54,53,
+ -4517699360165558.,8725440404890954.,-.499975115386030371026,-54,53,
+ -4517699360069653.,8725440404902854.,-.499980157480245069430,-54,53,
+ -4514338150915835.,8725857315620238.,-.499998195804719285186,-54,53,
+ -4514338150834587.,8725857315630312.,-.499886776823528348323,-54,53,
+ -4514338150834337.,8725857315630342.,.497799662627162788812,-54,53,
+ -4514338150834321.,8725857315630344.,.481651594751949802597,-54,53,
+ -4514338150834305.,8725857315630346.,.465503526876729932895,-54,53,
+ -4514338150834216.,8725857315630358.,-.499320100679306229421,-54,53,
+ -4514338150831119.,8725857315630742.,-.499980488913579737625,-54,53,
+ -8341071156545802.,8766893993028302.,-.499998774475069637472,-55,53,
+ -8341071156517142.,8766893993029945.,.499920105117363788197,-55,53,
+ -8341071156515451.,8766893993030042.,.499357049305208686896,-55,53,
+ -8341071156515242.,8766893993030054.,.488051503079893499965,-55,53,
+ -8341071156515207.,8766893993030056.,.495727607778974558295,-55,53,
+ -8341071156514928.,8766893993030072.,.499774270951353445046,-55,53,
+ -8341071156512191.,8766893993030230.,-.499954341611285430152,-55,53,
+ -8341071156497861.,8766893993031052.,-.499994904374552700605,-55,53,
+ -6979532375142631.,8838716947100428.,-.498781524317542934437,-55,53,
+ -6979532375142589.,8838716947100430.,-.477410180037780994742,-55,53,
+ -6979532375142569.,8838716947100430.,.485147602952577612043,-55,53,
+ -6979532375142548.,8838716947100431.,.495833275092451217849,-55,53,
+ -6979532375142070.,8838716947100455.,-.499035711438856862427,-55,53,
+ -6979532375140013.,8838716947100554.,-.499967730902008869177,-55,53,
+ -6979532375128128.,8838716947101125.,.499994810430033050129,-55,53,
+ -5360050516030903.,8907705263534355.,.499997047451685846825,-55,53,
+ -5360050515985431.,8907705263536041.,-.499751087237193129563,-55,53,
+ -5360050515985242.,8907705263536048.,-.496209400018743093664,-55,53,
+ -5360050515984594.,8907705263536072.,-.484066472414489643777,-55,53,
+ -5360050515984541.,8907705263536073.,.479889662096224597052,-55,53,
+ -5360050515984540.,8907705263536074.,-.483054561780931923307,-55,53,
+ -5360050515983461.,8907705263536114.,-.499872125236815747601,-55,53,
+ -5360050515981491.,8907705263536187.,-.499993163263070058162,-55,53,
+ -5003579018621659.,8920478380128898.,-.499983338936914132563,-55,53,
+ -5003579018618625.,8920478380129003.,-.499896866294179267841,-55,53,
+ -5003579018617527.,8920478380129040.,.499475232227384847627,-55,53,
+ -5003579018617065.,8920478380129056.,.488282071493544689674,-55,53,
+ -5003579018617064.,8920478380129057.,-.477110121495058286837,-55,53,
+ -5003579018617007.,8920478380129058.,.495534878154560692459,-55,53,
+ -5003579018616978.,8920478380129059.,.499161281485060024714,-55,53,
+ -5003579018599323.,8920478380129670.,.499994066618003616734,-55,53,
+ -5370993780293361.,9000944658218959.,-.499134739215850568186,-57,53,
+ -5370993780293333.,9000944658218959.,-.433929513239213641256,-57,53,
+ -5370993780293191.,9000944658218959.,-.103245867214845885573,-57,53,
+ -5370993780292932.,9000944658218959.,.499902473069013642487,-57,53,
+ -5370993780287779.,9000944658218971.,.499992810834121738788,-57,53,
+ -5370993780243120.,9000944658219075.,.499999484959489294090,-57,53,
+ -4503599627370496.,4503599627370496.,0.000000000000000000000,-1074,52,
+ 0.,4503599627370496.,0.000000000000000000000,0,52,
+ 4503599627370496.,4503599627370496.,0.000000000000000000000,-1074,52,
+ 4503599627370497.,4503599627370496.,0.000000000000000000000,-1074,52,
+ 6175493946455440.,8974141159618414.,.499980614265437480766,-56,53,
+ 6175493946638156.,8974141159616459.,.499961652725562924268,-56,53,
+ 6175493946646287.,8974141159616373.,-.499015746195741616170,-56,53,
+ 6175493946646293.,8974141159616372.,.436786262856789329398,-56,53,
+ 6175493946646474.,8974141159616371.,-.499853130725223062452,-56,53,
+ 6175493946648904.,8974141159616344.,.499960535543934223295,-56,53,
+ 6823990675654734.,8966839129391625.,-.499995957505904300940,-56,53,
+ 6823990675705326.,8966839129391027.,-.499985876121445241151,-56,53,
+ 6823990675705749.,8966839129391022.,-.499867196024138673920,-56,53,
+ 6823990675709133.,8966839129390982.,-.498917755256810190352,-56,53,
+ 6823990675709387.,8966839129390978.,.498789442719608649723,-56,53,
+ 6823990675709458.,8966839129390978.,-.340434135798813882663,-56,53,
+ 6823990675709471.,8966839129390978.,-.494094791020497824465,-56,53,
+ 8359220028898524.,8946658940994709.,.499994691723876977321,-56,53,
+ 8359220028903293.,8946658940994641.,-.499958204575632171316,-56,53,
+ 8359220028906265.,8946658940994597.,.499861462462181683062,-56,53,
+ 8359220028906680.,8946658940994591.,.495462122562145928053,-56,53,
+ 8359220028906691.,8946658940994591.,.336309368974430099817,-56,53,
+ 8359220028906749.,8946658940994590.,.497140304602834103090,-56,53,
+ 8359220028906818.,8946658940994589.,.498818486643514074621,-56,53,
+ 8359220028920572.,8946658940994391.,-.499997226744740710303,-56,53,
+ 8513798801039178.,8944401844284509.,.499994804514098621721,-56,53,
+ 8513798801076369.,8944401844283961.,.499991578305325515021,-56,53,
+ 8513798801078405.,8944401844283932.,-.499954821929124408851,-56,53,
+ 8513798801092657.,8944401844283722.,-.499579623770216490470,-56,53,
+ 8513798801093464.,8944401844283710.,-.390521050603990007624,-56,53,
+ 8513798801093471.,8944401844283710.,-.493664284789665813313,-56,53,
+ 8513798801093675.,8944401844283707.,-.499552823915112082094,-56,53,
+ 6216155809168802.,8873469994908128.,.499992967026694925140,-55,53,
+ 6216155809171761.,8873469994908002.,-.499009282065491038391,-55,53,
+ 6216155809171831.,8873469994907998.,.496620945227987359835,-55,53,
+ 6216155809172227.,8873469994907982.,-.499528054655251291072,-55,53,
+ 6216155809172693.,8873469994907961.,.499953172753504005490,-55,53,
+ 7082784227659783.,8833711364495192.,-.499568503211457175263,-55,53,
+ 7082784227659947.,8833711364495183.,.492189689603908055673,-55,53,
+ 7082784227659967.,8833711364495183.,-.484425164930816023178,-55,53,
+ 7082784227660766.,8833711364495143.,.499811396404730415624,-55,53,
+ 7082784227663674.,8833711364495002.,-.499988452988934624289,-55,53,
+ 7082784227673381.,8833711364494527.,.499991898016579326291,-55,53,
+ 5299073463163608.,8620310342980224.,.499997852846007885901,-54,53,
+ 5299073463175390.,8620310342978516.,.499967938831141728871,-54,53,
+ 5299073463177625.,8620310342978192.,.498943761040818903798,-54,53,
+ 5299073463177632.,8620310342978191.,.484175452653795132180,-54,53,
+ 5299073463177653.,8620310342978188.,.439870527492716007691,-54,53,
+ 5299073463177963.,8620310342978144.,-.499868843934100569077,-54,53,
+ 5354986034429484.,8612163362402896.,-.499999006973672269853,-54,53,
+ 5354986034436360.,8612163362401888.,.499985177173161995777,-54,53,
+ 5354986034456551.,8612163362398931.,.499211560571350384043,-54,53,
+ 5354986034456708.,8612163362398909.,-.493662564467646311816,-54,53,
+ 5354986034456749.,8612163362398903.,-.498171093936536607309,-54,53,
+ 5354986034456988.,8612163362398867.,.499937722085385650645,-54,53,
+ 6318840445905580.,8458748555548300.,-.499998150703098989328,-54,53,
+ 6318840445917832.,8458748555546195.,-.499990425979551040297,-54,53,
+ 6318840445926225.,8458748555544753.,-.490272436595216198137,-54,53,
+ 6318840445926237.,8458748555544750.,.448023359408784701137,-54,53,
+ 6318840445926260.,8458748555544746.,.496423635083109266702,-54,53,
+ 6318840445926324.,8458748555544736.,-.499332119562321030339,-54,53,
+ 6318840445926551.,8458748555544697.,-.499903311821192520561,-54,53,
+ 6318840445930084.,8458748555544090.,-.499982705168739214721,-54,53,
+ 7852441927956899.,8164946965261932.,-.499995439991152204102,-54,53,
+ 7852441927993003.,8164946965254310.,-.499981866514045928368,-54,53,
+ 7852441928002074.,8164946965252394.,.499966143094060337265,-54,53,
+ 7852441928002164.,8164946965252375.,.499855385820401831582,-54,53,
+ 7852441928002183.,8164946965252371.,.488720892618158982566,-54,53,
+ 7852441928002202.,8164946965252367.,.477586399415907050723,-54,53,
+ 8717776617214453.,7972916165092408.,.499998567756046446767,-54,53,
+ 8717776617231669.,7972916165088404.,-.499989883242905878538,-54,53,
+ 8717776617235426.,7972916165087529.,.499954550593806673249,-54,53,
+ 8717776617241083.,7972916165086213.,.498273863810859544268,-54,53,
+ 8717776617241169.,7972916165086193.,.491884516259568164230,-54,53,
+ 8717776617241212.,7972916165086183.,.488689842483854333630,-54,53,
+ 8717776617241371.,7972916165086147.,-.499867207059296003246,-54,53,
+ 6059040276407515.,7044974147493788.,-.499942903692435124932,-53,53,
+ 6059040276408563.,7044974147493135.,-.499441621004516845745,-53,53,
+ 6059040276408600.,7044974147493111.,.446186763974134199815,-53,53,
+ 6059040276408624.,7044974147493096.,.491999770446709151893,-53,53,
+ 6059040276431351.,7044974147478936.,-.499991997744301530071,-53,53,
+ 6059040276437310.,7044974147475222.,.499995721033934272631,-53,53,
+ 6179968525077666.,6968992172820628.,-.494691365460923392907,-53,53,
+ 6179968525077674.,6968992172820622.,.437023989551491318373,-53,53,
+ 6179968525077696.,6968992172820608.,.499241215835603427570,-53,53,
+ 6179968525077857.,6968992172820507.,-.499987264541023383031,-53,53,
+ 6179968525106370.,6968992172802443.,-.499997616294201957005,-53,53,
+ 6230674196569882.,6936758069200665.,.499999036377379258519,-53,53,
+ 6230674196575753.,6936758069196921.,-.499990960141874334446,-53,53,
+ 6230674196597141.,6936758069183277.,.498853156382439224693,-53,53,
+ 6230674196597500.,6936758069183048.,.499535082261140476892,-53,53,
+ 6230674196599237.,6936758069181941.,-.499950975690315950806,-53,53,
+ 7511273082065431.,6052646552911474.,-.499996349337151760504,-53,53,
+ 7511273082104802.,6052646552882317.,-.498111420135262638341,-53,53,
+ 7511273082104879.,6052646552882259.,.477966026083720610171,-53,53,
+ 7511273082104883.,6052646552882257.,-.484315665021798839493,-53,53,
+ 7511273082105014.,6052646552882160.,-.499041048728220507404,-53,53,
+ 7511273082105226.,6052646552882003.,-.499970677324531406900,-53,53,
+ 7511273082106313.,6052646552881197.,.499979764678505033907,-53,53,
+ 7913137471602467.,5749113260345063.,-.499945988545028427727,-53,53,
+ 7913137471603540.,5749113260344236.,.499867451514587128138,-53,53,
+ 7913137471605017.,5749113260343099.,.498678682479044251605,-53,53,
+ 7913137471605030.,5749113260343089.,.491220690604653094721,-53,53,
+ 7913137471605282.,5749113260342896.,-.499503459578218533273,-53,53,
+ 7913137471613462.,5749113260336599.,-.499993733831159354538,-53,53,
+ 7913137471656369.,5749113260303569.,-.499998236603440775466,-53,53,
+ 8575032706751930.,5224526006372805.,.499987260912338596802,-53,53,
+ 8575032706796005.,5224526006336902.,.499875513169642485143,-53,53,
+ 8575032706796663.,5224526006336367.,-.499536252497664000696,-53,53,
+ 8575032706796992.,5224526006336099.,-.499242135341772878520,-53,53,
+ 8575032706797143.,5224526006335975.,.497853340918931539578,-53,53,
+ 8575032706797170.,5224526006335954.,-.496043494451825728293,-53,53,
+ 8575032706802887.,5224526006331296.,.499948807653069450912,-53,53,
+ 8575032706806328.,5224526006328493.,.499985453751041223846,-53,53,
+ 8668443273557279.,5148155223730678.,.499998140442116360850,-53,53,
+ 8668443273583232.,5148155223709382.,.499995759613253377308,-53,53,
+ 8668443273587016.,5148155223706278.,-.499966059895603231010,-53,53,
+ 8668443273592979.,5148155223701384.,.499301292982493919515,-53,53,
+ 8668443273592990.,5148155223701375.,.473138613269132589162,-53,53,
+ 8668443273593514.,5148155223700945.,.499570961460116418957,-53,53,
+ 8668443273594049.,5148155223700506.,.499840629919576249889,-53,53,
+ 9007199254740714.,4866610526750582.,-.499894891792151089861,-53,53,
+ 9007199254740796.,4866610526750512.,.499484353961501124901,-53,53,
+ 9007199254740960.,4866610526750374.,.498242845467595524781,-53,53,
+ 9007199254740991.,4866610526750348.,.412642316422834501191,-53,53,
+ 4503599627370497.,4866610526750346.,-.111770638000855108745,-52,53,
+ 4503599627370499.,4866610526750343.,-.477654577232442095125,-52,53,
+ 4503599627371975.,4866610526747858.,.499998269594641398379,-52,53,
+ 4716158501352257.,4503599627370559.,.249606424997051310592,-52,53,
+ 4716158501352285.,4503599627370511.,-.247816186931372913280,-52,53,
+ 4716158501352293.,4503599627370497.,-.104222647482383237381,-52,53,
+ 4716158501352294.,9007199254740990.,.327453089897478945812,-52,54,
+ 4716158501352298.,9007199254740976.,.471046629346456187213,-52,54,
+ 4716158501352647.,9007199254739767.,.499582946242365270287,-52,54,
+ 4716158501353037.,9007199254738416.,.499953042423081950572,-52,54,
+ 4716158501363901.,9007199254700783.,-.499993843936894693633,-52,54,
+ 5936267049074696.,4503599627571880.,-.499997367017680797403,-52,54,
+ 5936267049126692.,4503599627370500.,-.142066467696419649319,-52,54,
+ 5936267049126693.,4503599627370496.,-.015049813903836424339,-52,54,
+ 5936267049126697.,9007199254740961.,-.013966397467011489729,-52,55,
+ 5936267049126886.,9007199254739497.,-.001671263878861800416,-52,55,
+ 5936267049128374.,9007199254727971.,-.000109577770688707063,-52,55,
+ 5936267049136184.,9007199254667475.,.000022643003422347648,-52,55,
+ 6509811378272144.,4503599627439110.,-.249997780118934708626,-52,55,
+ 6509811378278240.,4503599627390724.,.250025478223705568127,-52,55,
+ 6509811378280272.,4503599627374596.,-.249966770829069345247,-52,55,
+ 6509811378280782.,4503599627370548.,-.249472699623057574383,-52,55,
+ 6509811378280788.,4503599627370500.,.127003701214316486108,-52,55,
+ 6509811378280789.,9007199254740984.,.379499536041089438067,-52,56,
+ 6509811378280790.,9007199254740969.,-.495008330346454540170,-52,56,
+ 6755399441055675.,5097152561151476.,.499890228625902989898,-52,56,
+ 6755399441055725.,5097152561150679.,-.496099054617088883628,-52,56,
+ 6755399441055743.,5097152561150391.,.225344803415280240780,-52,56,
+ 6755399441055745.,5097152561150359.,.305505232085538450645,-52,56,
+ 6755399441055750.,5097152561150280.,-.494093696238820422601,-52,56,
+ 6755399441056174.,5097152561143512.,.499917181832691073045,-52,56,
+ 6755399441057671.,5097152561119620.,.499998041077598132828,-52,56,
+ 7074237752027162.,5621916272636230.,-.248320674464132499187,-52,94,
+ 7074237752028427.,7473591819477728.,.214953678253154342761,-52,101,
+ 7074237752028440.,4967757600021511.,-.121482295898714674744,-52,106,
+ 7074237752028441.,-6523320454730237.,.439258852050642692296,-52,105,
+ 9007199254738950.,-7496634952013058.,.499976280962287797933,-52,54,
+ 9007199254740160.,-7496634952017458.,-.499569555979789288243,-52,54,
+ 9007199254740991.,-7496634952020481.,-.004216324673671969741,-52,54,
+ 4503599627370497.,-7496634952020492.,.084214553418148239926,-51,54,
+ 4503599627370499.,-7496634952020506.,-.464544275792752972608,-51,54,
+ 4503599627370510.,-7496634952020586.,-.482717836452603932331,-51,54,
+ 4503599627370521.,-7496634952020667.,.499108602887724000464,-51,54,
+ 4503599627371731.,-7496634952029468.,-.499983068584064572194,-51,54,
+ 4503599627420153.,-7496634952381708.,-.499995272189244874831,-51,54,
+ 5305678314021330.,-7451636400032266.,-.317776556151927950632,-50,105,
+ 5305678314021331.,7144290154732925.,.420555860962017410920,-50,103,
+ 5305678314021441.,7796376626376891.,-.020151907348816765519,-50,96,
+ 5305678314032407.,6089531447489377.,.460779964990088187429,-50,89,
+ 5888592265910880.,8915511257182149.,-.499989485657095355496,-50,54,
+ 5888592265916226.,8915511257256475.,-.499801495076848792141,-50,54,
+ 5888592265916391.,8915511257258769.,-.487450017083751323064,-50,54,
+ 5888592265916453.,8915511257259631.,-.494930067826746004861,-50,54,
+ 5888592265916484.,8915511257260062.,-.498670093208381556932,-50,54,
+ 5888592265917031.,8915511257267666.,.499852683623203651954,-50,54,
+ 5888592265919704.,8915511257304829.,.499946588403270410619,-50,54,
+ 5888592265974516.,8915511258066886.,.499990543315280991155,-50,54,
+ 5943141639570529.,4831579172342506.,-.499995450296185665065,-50,53,
+ 5943141639572961.,4831579172358926.,-.499943363518053798370,-50,53,
+ 5943141639583905.,4831579172432816.,-.499709251989274204798,-50,53,
+ 5943141639584308.,4831579172435536.,.413128307547815990464,-50,53,
+ 5943141639584348.,4831579172435806.,.478918636004080363615,-50,53,
+ 5943141639584360.,4831579172435887.,.498655734539770505058,-50,53,
+ 5943141639584513.,4831579172436921.,-.499696259178290142426,-50,53,
+ 6303973650789296.,6980290702775172.,-.499995704944509991096,-50,53,
+ 6303973650793010.,6980290702793950.,-.499936958091223024474,-50,53,
+ 6303973650800438.,6980290702831506.,-.499819692250370034652,-50,53,
+ 6303973650801384.,6980290702836288.,.480270610856273827054,-50,53,
+ 6303973650801420.,6980290702836470.,.496426267113951017086,-50,53,
+ 6303973650801545.,6980290702837102.,.496966740175476765369,-50,53,
+ 6303973650802170.,6980290702840262.,.499669104192524621814,-50,53,
+ 6334420038467537.,7131656960748890.,.499998754231239671472,-50,53,
+ 6334420038482289.,7131656960820977.,-.499964200508524244873,-50,53,
+ 6334420038486783.,7131656960842937.,-.461721054338422502297,-50,53,
+ 6334420038486801.,7131656960843024.,.495708490744884302080,-50,53,
+ 6334420038486845.,7131656960843240.,-.497241510170261661526,-50,53,
+ 6334420038488255.,7131656960850130.,-.498593817990729079989,-50,53,
+ 6334420038489665.,7131656960857020.,-.499946136996019194321,-50,53,
+ 6356542733724269.,7238376434884447.,-.499997834673864984040,-50,53,
+ 6356542733729297.,7238376434908385.,.455920939758078983195,-50,53,
+ 6356542733729301.,7238376434908405.,-.499563611791485875443,-50,53,
+ 6356542733730222.,7238376434912790.,-.499881608511071200651,-50,53,
+ 6423340662144404.,7543488110061078.,.499949600411670118011,-50,53,
+ 6423340662145311.,7543488110065044.,-.499871934240470675108,-50,53,
+ 6423340662145529.,7543488110065996.,.499068423845509760395,-50,53,
+ 6423340662145564.,7543488110066150.,-.496514546212904603435,-50,53,
+ 6423340662167044.,7543488110160050.,.499992740030903284496,-50,53,
+ 6423340662172704.,7543488110184794.,-.499996951654935045164,-50,53,
+ 6559287226826371.,8081420299253149.,.499993568126989964875,-50,53,
+ 6559287226831569.,8081420299271513.,-.499986548308910726358,-50,53,
+ 6559287226841965.,8081420299308239.,-.499947297932434476039,-50,53,
+ 6559287226846735.,8081420299325090.,-.497620939040264720912,-50,53,
+ 6559287226846780.,8081420299325248.,.474099120258619862992,-50,53,
+ 6559287226846795.,8081420299325301.,.464672473355379255187,-50,53,
+ 6559287226846842.,8081420299325468.,-.498197686950729860725,-50,53,
+ 6559287226847163.,8081420299326602.,-.499927931120057535270,-50,53,
+ 6787616684062296.,8716910812522312.,-.499997077146924441241,-50,53,
+ 6787616684083950.,8716910812565937.,-.499912100469550936305,-50,53,
+ 6787616684084084.,8716910812566206.,.461758314673512931906,-50,53,
+ 6787616684084087.,8716910812566213.,-.494323690959025610277,-50,53,
+ 6787616684087707.,8716910812573506.,-.499943865981951184106,-50,53,
+ 6787616684095221.,8716910812588643.,.499992311809802599552,-50,53,
+ 6935652144155911.,8939052045724164.,-.499992655963027759031,-50,53,
+ 6935652144171488.,8939052045739464.,-.376151493991376251645,-50,53,
+ 6935652144171495.,8939052045739470.,.499425759789356814998,-50,53,
+ 6935652144171720.,8939052045739692.,-.499876797442557452833,-50,53,
+ 6935652144174533.,8939052045742454.,.499953868011036710655,-50,53,
+ 6935652144197487.,8939052045765000.,.499991986980909685691,-50,53,
+ 7035360541751570.,9001830083644943.,-.499992743391540144256,-50,53,
+ 7035360541758855.,9001830083646955.,-.497347124864300002697,-50,53,
+ 7035360541758960.,9001830083646984.,-.497995337647475469956,-50,53,
+ 7035360541759275.,9001830083647071.,-.499939976466745711184,-50,53,
+ 7035360541788596.,9001830083655168.,.499997399106978175170,-50,53,
+ 7267327859843178.,8875064959885365.,-.499975099447611827393,-50,53,
+ 7267327859845182.,8875064959882628.,.494541806237694222215,-50,53,
+ 7267327859845193.,8875064959882613.,.476547637478735433768,-50,53,
+ 7267327859845234.,8875064959882558.,-.499612446084846957244,-50,53,
+ 7267327859845401.,8875064959882329.,.499930628058964653734,-50,53,
+ 7267327859854126.,8875064959870418.,-.499989871641947731339,-50,53,
+ 7267327859865074.,8875064959855470.,.499994517009943381560,-50,53,
+ 7594079014299993.,8064066578753856.,-.499987222483264348986,-50,53,
+ 7594079014301011.,8064066578750228.,-.499777664694898663708,-50,53,
+ 7594079014301286.,8064066578749247.,.441339847329129534900,-50,53,
+ 7594079014301293.,8064066578749222.,.494386474901644251644,-50,53,
+ 7594079014301520.,8064066578748414.,-.499672888272903069960,-50,53,
+ 7594079014319014.,8064066578686067.,.499997934588758499595,-50,53,
+ 7661357941749023.,7810044139631645.,.499993946868600951933,-50,53,
+ 7661357941793422.,7810044139454705.,.499958778211925806023,-50,53,
+ 7661357941794437.,7810044139450660.,.496691992907766101492,-50,53,
+ 7661357941794442.,7810044139450641.,-.429432474030625136334,-50,53,
+ 7661357941794505.,7810044139450390.,-.498600757467551677389,-50,53,
+ 7661357941794911.,7810044139448772.,-.499907473536541155668,-50,53,
+ 7661357941808718.,7810044139393747.,.499988895432138815269,-50,53,
+ 8127402278516509.,5345756049678164.,.486753096792763327567,-50,53,
+ 8127402278516518.,5345756049678107.,-.461392605369364392933,-50,53,
+ 8127402278516550.,5345756049677901.,-.499243990837473789176,-50,53,
+ 8127402278516762.,5345756049676535.,.499990580327231473732,-50,53,
+ 8127402278525903.,5345756049617680.,-.499994434770579598919,-50,53,
+ 8134778399506190.,5298149166981120.,-.499994606724896524397,-50,53,
+ 8134778399512961.,5298149166937313.,.499920433060031232011,-50,53,
+ 8134778399523933.,5298149166866329.,-.499774580688428206862,-50,53,
+ 8134778399524065.,5298149166865475.,-.493573320701380318272,-50,53,
+ 8134778399524246.,5298149166864303.,.499778406889741632256,-50,53,
+ 8134778399541989.,5298149166749512.,.499997093948912017506,-50,53,
+ 8241843578480430.,4582581723924930.,.499989537480999766517,-50,53,
+ 8241843578530734.,4582581723578475.,.499986467819752400134,-50,53,
+ 8241843578536285.,4582581723540245.,-.489697160342574044300,-50,53,
+ 8241843578536303.,4582581723540121.,-.459759186340177838308,-50,53,
+ 8241843578536347.,4582581723539818.,-.497688583228140221463,-50,53,
+ 8241843578536480.,4582581723538902.,-.498702442045668012899,-50,53,
+ 8241843578536613.,4582581723537986.,-.499716300927141885451,-50,53,
+ 8241843578537615.,4582581723531085.,-.499835751097331095368,-50,53,
+ 8241843578538617.,4582581723524184.,-.499955204897014410304,-50,53,
+ 8394820555893933.,6979998458230342.,-.475157003963446126065,-50,54,
+ 8394820555893937.,6979998458230283.,-.475685561867645536596,-50,54,
+ 8394820555894053.,6979998458228572.,-.491013741127751927385,-50,54,
+ 8394820555894121.,6979998458227569.,-.499999225556054484723,-50,54,
+ 8556480067977912.,4531857903255844.,.499997425465438697649,-50,54,
+ 8556480068000529.,4531857902905610.,.499994345973347390887,-50,54,
+ 8556480068007496.,4531857902797724.,-.499962756537862590631,-50,54,
+ 8556480068009173.,4531857902771754.,.431725453389287399238,-50,54,
+ 8556480068009177.,4531857902771692.,.490000201641852965275,-50,54,
+ 8556480068009212.,4531857902771150.,.499904248849361726831,-50,54,
+ 8577884292740019.,8399210624529380.,-.499982582859540380426,-50,55,
+ 8577884292743637.,8399210624416793.,.499881960671732948775,-50,55,
+ 8577884292744085.,8399210624402853.,-.497370860315404814938,-50,55,
+ 8577884292744119.,8399210624401794.,.480516202323243744541,-50,55,
+ 8577884292744178.,8399210624399959.,-.499032718410220485423,-50,55,
+ 8577884292755666.,8399210624042471.,.499983767786979269476,-50,55,
+ 8577884292814636.,8399210622207425.,.499970193697930494481,-50,55,
+ 8664382762861490.,5685397639852668.,-.499965234530778914165,-50,55,
+ 8664382762862348.,5685397639825556.,-.499789895842625443140,-50,55,
+ 8664382762866638.,5685397639689996.,-.498913251927157890791,-50,55,
+ 8664382762866755.,5685397639686298.,.410201564477900547070,-50,55,
+ 8664382762866800.,5685397639684876.,.452168801540421396018,-50,55,
+ 8664382762866850.,5685397639683296.,.498799064932570492962,-50,55,
+ 8664382762884222.,5685397639134358.,-.499982900801122125536,-50,55,
+ 8664382762906954.,5685397638416047.,.499997115338722077577,-50,55,
+ 8714420965773350.,8198287341330705.,.499997313412407829655,-50,56,
+ 8714420965789299.,8198287340316598.,-.499978460033927159971,-50,56,
+ 8714420965791970.,8198287340146763.,.499900036684665937094,-50,56,
+ 8714420965793267.,8198287340064295.,-.499784588626728894511,-50,56,
+ 8714420965793344.,8198287340059398.,.499463124100565285240,-50,56,
+ 8714420965793356.,8198287340058635.,.486358871535131614738,-50,56,
+ 8714420965793373.,8198287340057555.,-.448872152934160276654,-50,56,
+ 8842797190027264.,4555466178789299.,-.101300146498424066278,-50,89,
+ 8842797190035467.,5864862395652467.,.033586512221700779842,-50,96,
+ 8842797190035549.,6056023877377218.,.149536782531650225345,-50,102,
+ 8842797190035550.,6209697000026889.,-.401852869873393436560,-50,104,
+ 8842797190035551.,-5902350754727548.,.299073565063303663456,-50,103,
+ 8893762581697263.,-6521342514504292.,-.496136193797772982290,-50,57,
+ 8893762581697286.,-6521342514507233.,-.480459239911612638448,-50,57,
+ 8893762581697385.,-6521342514519892.,-.499936699240116106536,-50,57,
+ 8893762581712120.,-6521342516404040.,-.499939805750133429388,-50,57,
+ 8893762581916305.,-6521342542512948.,-.499867874580782219840,-50,57,
+ 8897696383632451.,-7024312548405725.,.499989349130554346730,-50,57,
+ 8897696383645525.,-7024312550077208.,.499929889317080082162,-50,57,
+ 8897696383648003.,-7024312550394015.,.487986647350857136273,-50,57,
+ 8897696383648036.,-7024312550398233.,-.491591289055916464294,-50,57,
+ 8897696383648220.,-7024312550421757.,-.498934934364877973051,-50,57,
+ 8897696383648266.,-7024312550427639.,.499229154337194627157,-50,57,
+ 8897696383649883.,-7024312550634369.,.499910279858224701441,-50,57,
+ 8897696383680928.,-7024312554603405.,-.499996903475605308355,-50,57,
+ 4602893741348662.,-5707753262384314.,-.499993981356542122424,-49,54,
+ 4602893741359784.,-5707753262721882.,.499969412755585412936,-49,54,
+ 4602893741361418.,-5707753262771476.,.499065103599729619993,-49,54,
+ 4602893741361438.,-5707753262772083.,.473350240872459710912,-49,54,
+ 4602893741361455.,-5707753262772598.,-.498507392440055411563,-49,54,
+ 4602893741361845.,-5707753262784435.,-.499947214062470100797,-49,54,
+ 4612325947556685.,-5993218307220380.,-.499990818449235719917,-49,54,
+ 4612325947563820.,-5993218307435694.,-.499924861536264427324,-49,54,
+ 4612325947564819.,-5993218307465841.,-.477631036844581735295,-49,54,
+ 4612325947564853.,-5993218307466868.,.499103688251800438082,-49,54,
+ 4612325947565282.,-5993218307479814.,.499668309728413291697,-49,54,
+ 4612325947569064.,-5993218307593944.,.499984074362054963256,-49,54,
+ 4612325947600957.,-5993218308556383.,-.499986478272771133225,-49,54,
+ 4738648571780447.,-4811554825022853.,-.499839905135293000747,-49,53,
+ 4738648571782189.,-4811554825046415.,-.499482498716245743933,-49,53,
+ 4738648571782402.,-4811554825049297.,.498264994437568241884,-49,53,
+ 4738648571782440.,-4811554825049810.,-.483357518448500486688,-49,53,
+ 4738648571782459.,-4811554825050067.,-.474168774883313478500,-49,53,
+ 4738648571785344.,-4811554825089089.,-.499983175200797318142,-49,53,
+ 4738648571869251.,-4811554826224001.,-.499930972494587657222,-49,53,
+ 4830666052070598.,-5986498839198442.,-.499985615581450852897,-49,53,
+ 4830666052083245.,-5986498839349634.,.499990212711514301072,-49,53,
+ 4830666052095892.,-5986498839500825.,.499969062405452133212,-49,53,
+ 4830666052096201.,-5986498839504519.,.499889513324026171438,-49,53,
+ 4830666052096377.,-5986498839506623.,.473954236983551748150,-49,53,
+ 4830666052096378.,-5986498839506634.,-.480738577084892813529,-49,53,
+ 4830666052096466.,-5986498839507686.,-.493706215034040767912,-49,53,
+ 4830666052096510.,-5986498839508213.,.499809966046241987901,-49,53,
+ 4845910310963385.,-6166522227818539.,.475493154333979293902,-49,53,
+ 4845910310963391.,-6166522227818608.,-.498788134699663931307,-49,53,
+ 4845910310964013.,-6166522227825862.,-.499281760720353099874,-49,53,
+ 4845910310964946.,-6166522227836744.,.499977814363674417870,-49,53,
+ 4845910310981121.,-6166522228025382.,-.499994169723256659293,-49,53,
+ 4963933852605346.,-7397870712950363.,-.499966766582349129755,-49,53,
+ 4963933852654142.,-7397870713395739.,.499991897823016570405,-49,53,
+ 4963933852655619.,-7397870713409219.,-.499987993208430865735,-49,53,
+ 4963933852658298.,-7397870713433671.,-.496566149019575322918,-49,53,
+ 4963933852658463.,-7397870713435177.,-.498595033318077315319,-49,53,
+ 4963933852658573.,-7397870713436181.,-.499947622497340572163,-49,53,
+ 5007529068302511.,-7773207443006269.,-.499993776483109671946,-49,53,
+ 5007529068316428.,-7773207443118764.,-.499941321039528916223,-49,53,
+ 5007529068316440.,-7773207443118861.,-.499294582662455663228,-49,53,
+ 5007529068316668.,-7773207443120704.,-.487006552826980024201,-49,53,
+ 5007529068316740.,-7773207443121286.,-.483126122087717783413,-49,53,
+ 5007529068322612.,-7773207443168751.,-.499988342634645389294,-49,53,
+ 5059472696382858.,-8159420352783868.,-.499997078787466442031,-49,53,
+ 5059472696394883.,-8159420352865358.,.499394269034626130749,-49,53,
+ 5059472696394950.,-8159420352865812.,.465045773876088388317,-49,53,
+ 5059472696394968.,-8159420352865934.,.485668566241252002539,-49,53,
+ 5059472696394977.,-8159420352865995.,.495979962426962020446,-49,53,
+ 5059472696395174.,-8159420352867330.,.499462746125483155060,-49,53,
+ 5059472696397211.,-8159420352881134.,.499942146808400123439,-49,53,
+ 5059472696397502.,-8159420352883105.,-.499989358658766338473,-49,53,
+ 5079689563128043.,-8291132143823115.,.499961680271716304960,-49,53,
+ 5079689563132077.,-8291132143848334.,-.499694579432503979613,-49,53,
+ 5079689563132212.,-8291132143849179.,.499325359744294141691,-49,53,
+ 5079689563132216.,-8291132143849204.,.491888913504953844301,-49,53,
+ 5079689563132224.,-8291132143849254.,.477016021027529035125,-49,53,
+ 5079689563133153.,-8291132143855062.,.499901393473317444231,-49,53,
+ 5079689563140280.,-8291132143899618.,-.499985853944114062861,-49,53,
+ 5079689563174974.,-8291132144116520.,-.499979244209709438740,-49,53,
+ 5107897798878809.,-8457005757204345.,.499919291311122408229,-49,53,
+ 5107897798879125.,-8457005757206085.,.499182337292592457209,-49,53,
+ 5107897798881021.,-8457005757216525.,.494760669140485705535,-49,53,
+ 5107897798881151.,-8457005757217240.,-.328327310921117093630,-49,53,
+ 5107897798881177.,-8457005757217383.,-.492944906879319246790,-49,53,
+ 5107897798881179.,-8457005757217395.,.494392201124643169134,-49,53,
+ 5107897798884179.,-8457005757233913.,-.499945672766454222394,-49,53,
+ 5107897798889628.,-8457005757263917.,-.499994083426693293252,-49,53,
+ 5114090198545358.,-8490590839142559.,.499932233275888850021,-49,53,
+ 5114090198547694.,-8490590839155035.,.499234290181961819839,-49,53,
+ 5114090198547700.,-8490590839155067.,.454711949762937666965,-49,53,
+ 5114090198551063.,-8490590839173028.,.499940296673494675111,-49,53,
+ 5114090198579588.,-8490590839325373.,.499993693455226840082,-49,53,
+ 5114090198590998.,-8490590839386310.,-.499978843928352150408,-49,53,
+ 5214918003811640.,-8890391620111108.,-.499985964135455767239,-49,53,
+ 5214918003819666.,-8890391620131722.,-.499938230659115980718,-49,53,
+ 5214918003820799.,-8890391620134633.,.499819463118474023377,-49,53,
+ 5214918003821413.,-8890391620136209.,-.499429220883091567230,-49,53,
+ 5214918003821603.,-8890391620136697.,-.495939397828825883002,-49,53,
+ 5214918003890153.,-8890391620312761.,-.499939774611592830229,-49,53,
+ 5222449517582557.,-8908939376473524.,-.499995103683409353306,-49,53,
+ 5222449517583137.,-8908939376474892.,.499975090407567352125,-49,53,
+ 5222449517591257.,-8908939376494030.,.499558800641151788371,-49,53,
+ 5222449517593577.,-8908939376499498.,.499440201151288105416,-49,53,
+ 5222449517593591.,-8908939376499530.,-.497112238213931458177,-49,53,
+ 5222449517593633.,-8908939376499629.,-.486769556276530841591,-49,53,
+ 5273528936147001.,-8992515155588036.,.496110819791016409254,-49,53,
+ 5273528936147070.,-8992515155588099.,.482297119058116494311,-49,53,
+ 5273528936147082.,-8992515155588109.,-.476627002794684363197,-49,53,
+ 5273528936147197.,-8992515155588214.,-.499649837010148074751,-49,53,
+ 5273528936147416.,-8992515155588415.,.499984940608610997015,-49,53,
+ 5273528936161098.,-8992515155600909.,-.499998537333405301818,-49,53,
+ 5346865815373913.,-8983102566751535.,-.499998071454241013106,-49,53,
+ 5346865815376549.,-8983102566748453.,.499970687260668695223,-49,53,
+ 5346865815376779.,-8983102566748183.,-.497755853281391626449,-49,53,
+ 5346865815376814.,-8983102566748143.,.437372716767573995034,-49,53,
+ 5346865815376832.,-8983102566748122.,.489724552806277201004,-49,53,
+ 5346865815376950.,-8983102566747984.,.499586589287443903606,-49,53,
+ 5489113122546754.,-8533243632725979.,-.499996939860920629588,-49,53,
+ 5489113122559336.,-8533243632661538.,.499972860300004262951,-49,53,
+ 5489113122559369.,-8533243632661368.,-.481906087886089049426,-49,53,
+ 5489113122559377.,-8533243632661328.,.492183864073213312047,-49,53,
+ 5548511370728352.,-8182128398053341.,-.499944185277966260972,-49,53,
+ 5548511370784713.,-8182128397676304.,-.499976465953513478239,-49,53,
+ 5548511370793375.,-8182128397618359.,.499812930509773604632,-49,53,
+ 5548511370793491.,-8182128397617582.,-.497419154014697697680,-49,53,
+ 5548511370793984.,-8182128397614284.,-.485655509367904541861,-49,53,
+ 5548511370794013.,-8182128397614090.,-.484963530075616060898,-49,53,
+ 5548511370796272.,-8182128397598979.,.499973820138773558065,-49,53,
+ 6189958032847024.,-6111265716710806.,-.226716448012327035059,-49,84,
+ 6189958033023106.,-7825185970768669.,-.032719396882059983641,-49,91,
+ 6189958033024867.,-5134468141729602.,-.094042234234861264694,-49,97,
+ 6189958033024885.,-8693575800037644.,-.037405982177249058433,-49,104,
+ 6189958033024886.,6833805304731581.,-.009351495544314399953,-49,102,
+ 6192449487616078.,5102482345730383.,.499997692356725620912,-49,60,
+ 6192449487633977.,5102482382387177.,-.499959065079534773355,-49,60,
+ 6192449487634326.,5102482383101922.,-.499846535106040508426,-49,60,
+ 6192449487634426.,5102482383306719.,.494455049052126986791,-49,60,
+ 6192449487634427.,5102482383308767.,.474398064892895581672,-49,60,
+ 6192449487634431.,5102482383316959.,.394170128255808955237,-49,60,
+ 6192449487634433.,5102482383321055.,.354056159937169038447,-49,60,
+ 6192449487642752.,5102482400358201.,-.499995618706487943997,-49,60,
+ 7958517470966799.,8960512649166011.,.452187445962740622016,-49,86,
+ 7958517471031343.,5737781521231581.,-.058721518658445869890,-49,92,
+ 7958517471031988.,8230594804149880.,.483645776069390309929,-49,99,
+ 7958517471031995.,5588727300024200.,-.261667582886054288479,-49,103,
+ 7958517471031996.,-6212835604728892.,-.130833791443025448267,-49,102,
+ 4863538454268721.,-8618511228684388.,.251497877420076291608,-48,83,
+ 4863538454517045.,-5514467724105968.,.022860304770261404304,-48,89,
+ 4863538454519528.,-6949501513005053.,-.073890326890614031485,-48,96,
+ 4863538454519552.,-6211266302377890.,-.364490460784810618213,-48,101,
+ 4863538454519553.,5591865904726203.,.271019078430365203309,-48,102,
+ 5747818173446242.,5282172336325216.,.135453714556871576941,-48,84,
+ 5747818173522339.,6761768338665489.,.346478895712815827862,-48,91,
+ 5747818173523100.,8696518241945772.,.349299727160301940577,-48,98,
+ 5747818173523107.,6521751152379235.,-.205602182708860027894,-48,101,
+ 5747818173523108.,-4970896204723514.,-.411204365417704874486,-48,102,
+ 6632097892000044.,-4523620690697855.,-.093830087087027177687,-48,81,
+ 6632097892521397.,-5789762733424524.,-.348049504224024223330,-48,88,
+ 6632097892526610.,-7425103082014253.,.449620231702891160433,-48,95,
+ 6632097892526662.,-6832236002380579.,-.224305173797469228189,-48,101,
+ 6632097892526663.,8699853009441651.,.102779304810088942224,-48,103,
+ 7516377611416375.,7823217165215121.,.407773576189983331718,-48,84,
+ 7516377611529080.,5004066539791450.,.111159269834481850860,-48,90,
+ 7516377611530207.,6075919587486990.,.228388283142499089029,-48,97,
+ 7516377611530217.,7142720852381924.,-.345787469696201618196,-48,101,
+ 7516377611530218.,-7457913609436273.,-.383149878784768004998,-48,103,
+ 8400657330533772.,-7453205702383268.,-.084119886810127428296,-48,101,
+ 8400657330533773.,6215974209430896.,-.336479547240553044078,-48,103,
+ 8400657330533784.,6289574084656790.,-.255257492927285191224,-48,97,
+ 8400657330534880.,4869396273706365.,.169880788279836733219,-48,90,
+ 8400657330644443.,7605196346403030.,-.044416560457894922563,-48,84,
+ 4642468524768663.,8385444903562802.,.257013621658173093935,-47,100,
+ 4642468524768664.,-4974034809425518.,.056108973265874186379,-47,103,
+ 4642468524768702.,-5357739469239623.,-.214734162096253819636,-47,94,
+ 4642468524772511.,-8459794259604437.,-.112729167748900219544,-47,88,
+ 4642468525153402.,-6609749696016104.,.343289536901521882001,-47,81,
+ 5084608380214929.,-8709146666784488.,-.221520247218733574814,-47,78,
+ 5084608384229886.,-5573898359126619.,-.316610968613038080243,-47,84,
+ 5084608384270035.,-7150312470949289.,.463921948806862008060,-47,91,
+ 5084608384270437.,-5008235590019618.,-.308995912488091084716,-47,97,
+ 5084608384270441.,-8074175402385957.,.056065400177214818717,-47,101,
+ 5084608384270442.,4970111553548014.,-.471967299911412148386,-47,100,
+ 5526748243772218.,8695929753564147.,-.313079021835503620700,-47,100,
+ 5526748243772219.,-4980312018829525.,-.009264349366966647700,-47,104,
+ 5526748243772241.,-6202176659546208.,-.416033719407018794485,-47,95,
+ 5526748243774432.,-4866514458067137.,.246749937117350476074,-47,88,
+ 5526748243993476.,-7602333819487491.,-.008637906644242260557,-47,82,
+ 5968888100055899.,-6910811721719926.,.405516433656932624060,-47,78,
+ 5968888103241815.,-8845978600749849.,-.178234126372328675797,-47,85,
+ 5968888103273674.,-5673175258941003.,-.411917718973900188751,-47,91,
+ 5968888103273993.,-7842292578854325.,.274531335896367947621,-47,98,
+ 5968888103273996.,-8695145102388646.,.196250687164557550103,-47,101,
+ 5968888103273997.,4659626703546669.,.098125343582259759018,-47,100,
+ 6411027962775773.,9006414603565491.,.116828334670819142994,-47,100,
+ 6411027962775774.,-6427862429703235.,.057717623971138873798,-47,113,
+ 6411027962775780.,-6755497522452682.,.389603541835908316515,-47,97,
+ 6411027962776399.,-5497558905140914.,.424918795740620809824,-47,90,
+ 6853167820543408.,-7448089692722182.,.255295101647658311130,-47,79,
+ 6853167822260211.,-4766525059039612.,.276765851049300740377,-47,85,
+ 6853167822277379.,-6069907536002525.,.424485228032128042569,-47,92,
+ 6853167822277550.,-6832628327968330.,.334108993538102294013,-47,99,
+ 6853167822277551.,-4658057401195667.,-.331782012924049598443,-47,100,
+ 6853167822277552.,8698283707090649.,.336435974151862773778,-47,101,
+ 7295307681672764.,7323093401196843.,.248228660066180547558,-47,83,
+ 7295307681778263.,4688468801637072.,-.068580740296789134125,-47,89,
+ 7295307681779318.,6211805750061047.,.221670980692212387312,-47,96,
+ 7295307681779329.,4955203181213497.,-.252228941164396090321,-47,104,
+ 7295307681779330.,-8697499055915148.,-.453264308822706513543,-47,100,
+ 7737447541067367.,-7344035072522492.,.219300497781340888979,-47,82,
+ 7737447541278970.,-4698326696869618.,-.145449450726147613552,-47,88,
+ 7737447541281086.,-5784766479563027.,.382447207225859540181,-47,95,
+ 7737447541281106.,-4968542251197012.,.238310630569622307502,-47,100,
+ 7737447541281107.,8077314007087960.,.476621261139205507707,-47,101,
+ 8179587400512838.,4639356136571569.,-.031556293083222910102,-47,81,
+ 8179587400780184.,5937514202355836.,.325189245882535697191,-47,88,
+ 8179587400782857.,7619205153963562.,-.375729904806865163077,-47,95,
+ 8179587400782884.,4961480390617504.,-.186855618531555554259,-47,103,
+ 8179587400782885.,-8387014205913804.,-.023356952316383230767,-47,100,
+ 8621727260284661.,-5279027101198356.,-.191596725936705488489,-47,100,
+ 8621727260284662.,7456344307085272.,-.383193451873452242925,-47,101,
+ 8621727260284663.,6367685704141814.,-.095798362968467489514,-47,99,
+ 8621727260284753.,6432682065116976.,-.157746849873700657743,-47,93,
+ 8621727260293762.,5003005455950718.,.373764116297054670628,-47,86,
+ 8621727261194679.,7816990063070094.,-.079881229227127644814,-47,80,
+ 5858197952755945.,5085119015086166.,.499384262844464930393,-46,61,
+ 5858197952784797.,5085118069666129.,.499974788140693456367,-46,61,
+ 5858197952790482.,5085117883380502.,.495103320395366988993,-46,61,
+ 5858197952790527.,5085117881905946.,.080816606459356220491,-46,61,
+ 5858197952790529.,5085117881840410.,.240181641347267744896,-46,61,
+ 5858197952790532.,5085117881742106.,.479229193671433046169,-46,61,
+ 5858197952790595.,5085117879677727.,.499227790343914038289,-46,61,
+ 5858197952790846.,5085117871452979.,.499539619158053528065,-46,61,
+ 5858197952791097.,5085117863228231.,.499851383274489402820,-46,61,
+ 6245226045761375.,-8896936967702907.,-.499850800777271754805,-45,69,
+ 6245226045763474.,-8896972183079287.,-.499982576740902348279,-45,69,
+ 6245226045767672.,-8897042613832048.,.499848863834093175614,-45,69,
+ 6245226045767674.,-8897042647386479.,-.496339847552599815900,-45,69,
+ 6245226045767679.,-8897042731272559.,-.486811625893560252680,-45,69,
+ 6245226045767680.,-8897042748049775.,-.484905981540191418440,-45,69,
+ 6245226045767681.,-8897042764826991.,-.483000337179635610304,-45,69,
+ 6245226045780791.,-8897262714128726.,-.499385097943551687762,-45,69,
+ 5426391276979852.,7541324391350242.,.469106622132214658337,-44,53,
+ 5426391276979853.,7541324391349963.,-.498810993717788655048,-44,53,
+ 5426391276980227.,7541324391245254.,.499998969621723197575,-44,53,
+ 5426971710399446.,7374746796202383.,-.499960367730092760362,-44,53,
+ 5426971710399538.,7374746796175338.,.493332765515262653325,-44,53,
+ 5426971710399607.,7374746796155055.,.488302483090587259448,-44,53,
+ 5426971710404814.,7374746794624423.,.499675446481774481941,-44,53,
+ 5562950707703181.,-8431521980014604.,.474724879478902172789,-44,54,
+ 5562950707703193.,-8431521980025462.,-.497618607998760387953,-44,54,
+ 5562950707703228.,-8431521980057135.,.499712909266014260688,-44,54,
+ 5562950707704349.,-8431521981071544.,.499977157328640817260,-44,54,
+ 5562950707716715.,-8431521992261714.,-.497512188730649005496,-44,54,
+ 5562950707720837.,-8431521995991771.,-.495749514416876676051,-44,54,
+ 5565768841126209.,-5431423256807898.,-.494455352532633655029,-44,53,
+ 5565768841150559.,-5431423266753412.,.499833331333595365680,-44,53,
+ 5565768841151350.,-5431423267076488.,.492306904172662257520,-44,53,
+ 5565768841151375.,-5431423267086699.,.493333428719917548904,-44,53,
+ 5565768841151525.,-5431423267147965.,.499492806345559959974,-44,53,
+ 5565768841159328.,-5431423270335021.,-.499551820996222208898,-44,53,
+ 5565768841173943.,-5431423276304371.,-.495528177141084546291,-44,53,
+ 5637442019506305.,9006832244997269.,.487235081125598900806,-44,53,
+ 5637442019535290.,9006832244863302.,.499822414775703237436,-44,53,
+ 5637442019535618.,9006832244861787.,-.497276999822704655589,-44,53,
+ 5637442019535930.,9006832244860344.,.456698700195164779344,-44,53,
+ 5637442019535946.,9006832244860271.,-.494379545400027458177,-44,53,
+ 5637442019538070.,9006832244850453.,.499917210839910208136,-44,53,
+ 5637442019544979.,9006832244818520.,.498819006253271224875,-44,53,
+ 5666178554260123.,-5163103398699368.,-.499988091917474716894,-44,56,
+ 5666178554261119.,-5163103402768498.,-.498306644982508246452,-44,56,
+ 5666178554261208.,-5163103403132105.,-.496147557586192427705,-44,56,
+ 5666178554261261.,-5163103403348636.,.493902298809541587252,-44,56,
+ 5666178554261528.,-5163103404439456.,-.499619410051098141436,-44,56,
+ 5772925638469453.,5156050090583831.,.499902064272352550303,-44,55,
+ 5772925638471609.,5156050086213792.,.499913417233859189509,-44,55,
+ 5772925638472606.,5156050084192954.,-.499643696766906386284,-44,55,
+ 5772925638472681.,5156050084040935.,-.481556887616177567561,-44,55,
+ 5772925638499475.,5156050029731646.,.494018936058827583480,-44,55,
+ 5835612929814885.,4946605536609440.,.497598496744540146276,-44,54,
+ 5835612929831465.,4946605552934745.,-.499952419526214052318,-44,54,
+ 5835612929832148.,4946605553607252.,.499571732652990358175,-44,54,
+ 5835612929832195.,4946605553653531.,-.497533028873024356599,-44,54,
+ 5835612929832220.,4946605553678146.,.461453785717489611245,-44,54,
+ 5835612929832231.,4946605553688977.,.483407980972613530669,-44,54,
+ 5896103646763641.,-4898969761857357.,-.499833448489754214187,-44,53,
+ 5896103646763856.,-4898969761949731.,-.499948396237035054503,-44,53,
+ 5896103646767726.,-4898969763612464.,.498107667606364627551,-44,53,
+ 5896103646768487.,-4898969763939424.,-.497595533857534657779,-44,53,
+ 5896103646768504.,-4898969763946728.,-.488301019749013740915,-44,53,
+ 5896103646768586.,-4898969763981960.,.497707877261370448188,-44,53,
+ 5896103646783868.,-4898969770547817.,-.498141561150348276039,-44,53,
+ 5896103646804095.,-4898969779238277.,-.489973356932441393089,-44,53,
+ 6004329071329631.,-7734750839235675.,-.499672095439865295841,-44,54,
+ 6004329071333192.,-7734750842528910.,-.499778306504207964235,-44,54,
+ 6004329071334379.,-7734750843626655.,-.499743283361858850273,-44,54,
+ 6004329071334606.,-7734750843836587.,.485103145705410239523,-44,54,
+ 6004329071334611.,-7734750843841211.,.453932376700239472951,-44,54,
+ 6004329071334668.,-7734750843893925.,.498585654202736123432,-44,54,
+ 6004329071345800.,-7734750854188867.,-.498449362709539404164,-44,54,
+ 6029337333115513.,-8619289716037345.,-.498425527226854596928,-44,53,
+ 6029337333122936.,-8619289714934010.,.499643309027226295997,-44,53,
+ 6029337333126202.,-8619289714448559.,-.497217611810478994811,-44,53,
+ 6029337333126282.,-8619289714436668.,-.498974102823401126991,-44,53,
+ 6029337333126362.,-8619289714424778.,.499269584406410384822,-44,53,
+ 6029337333141699.,-8619289712145124.,-.496644903434539689997,-44,53,
+ 6029337333168456.,-8619289708168031.,-.475137240758517689647,-44,53,
+ 6304262280165567.,8801242795396908.,.499866299953079611121,-44,53,
+ 6304262280166210.,8801242795326909.,.499825525235341748505,-44,53,
+ 6304262280168139.,8801242795116912.,.499632654239787077742,-44,53,
+ 6304262280168234.,8801242795106571.,-.498824368441345505019,-44,53,
+ 6304262280168307.,8801242795098623.,.491834797640773998258,-44,53,
+ 6304262280168314.,8801242795097861.,.449843202863992874619,-44,53,
+ 6304262280168329.,8801242795096229.,-.497281647778580015591,-44,53,
+ 6304262280177236.,8801242794126584.,.498852067681145951474,-44,53,
+ 6304262280188905.,8801242792856260.,.493965511630909544235,-44,53,
+ 6305910042774356.,8583545779748291.,.494358821818776644178,-44,53,
+ 6305910042774373.,8583545779745653.,.483276999106491218916,-44,53,
+ 6305910042774384.,8583545779743947.,-.465070066919696563910,-44,53,
+ 6305910042774435.,8583545779736033.,-.498315598708222353131,-44,53,
+ 6305910042775248.,8583545779609874.,-.498886464053745537496,-44,53,
+ 6305910042776874.,8583545779357555.,.499916809463906438298,-44,53,
+ 6535180284081842.,6440872383698761.,.496503754372576540749,-44,53,
+ 6535180284097125.,6440872378228829.,.499875798817982992256,-44,53,
+ 6535180284100144.,6440872377148300.,.499901520630732953280,-44,53,
+ 6535180284100166.,6440872377140426.,.489301475631755730921,-44,53,
+ 6535180284109389.,6440872373839426.,.499131707725610591525,-44,53,
+ 6535815775735491.,6209271383243704.,.475819596415352365944,-44,53,
+ 6535815775784211.,6209271365173515.,.499474621704759082277,-44,53,
+ 6535815775784458.,6209271365081903.,.498590622300104499735,-44,53,
+ 6535815775784586.,6209271365034428.,.453597622872291542380,-44,53,
+ 6535815775784606.,6209271365027010.,.477817437018103740264,-44,53,
+ 6535815775784626.,6209271365019593.,-.497962756861379204400,-44,53,
+ 6535815775786276.,6209271364407610.,-.499856394044677824392,-44,53,
+ 6535815775788588.,6209271363550091.,.499822569931223666318,-44,53,
+ 6544022097454165.,5222684139414429.,.499794440230409232529,-44,54,
+ 6544022097454642.,5222684138946959.,.496894502936166981322,-44,54,
+ 6544022097454689.,5222684138900899.,-.488716390512885246968,-44,54,
+ 6544022097454690.,5222684138899918.,.490313164540635894323,-44,54,
+ 6544022097454785.,5222684138806816.,.498120817673308468787,-44,54,
+ 6544022097455834.,5222684137778775.,-.499886906607355464041,-44,54,
+ 6544022097458266.,5222684135395363.,.499894106324872465215,-44,54,
+ 6616319171091754.,5620694276620201.,.498024432146166994229,-44,53,
+ 6616319171106449.,5620694282499379.,-.499303514725006861654,-44,53,
+ 6616319171106474.,5620694282509381.,-.496920548071964217637,-44,53,
+ 6616319171106486.,5620694282514181.,.464223271889655964825,-44,53,
+ 6616319171106861.,5620694282664211.,.499966327850598360435,-44,53,
+ 6616319171127424.,5620694290891058.,.496015199838473260189,-44,53,
+ 6702751591163260.,-5776315859682792.,-.463418888009819924985,-44,53,
+ 6702751591221503.,-5776315836801875.,-.499806541110248744391,-44,53,
+ 6702751591225670.,-5776315835164858.,-.499845603257148038514,-44,53,
+ 6702751591225860.,-5776315835090216.,-.495999966097249742714,-44,53,
+ 6702751591225880.,-5776315835082359.,-.442963544043318593064,-44,53,
+ 6702751591225894.,-5776315835076860.,.494161955836532586853,-44,53,
+ 6702751591226179.,-5776315834964897.,.499931855771944740640,-44,53,
+ 6729307497401158.,6544488705170544.,.486251690706966828244,-44,53,
+ 6729307497435333.,6544488717192750.,.499996214802486017420,-44,53,
+ 6729307497436678.,6544488717665899.,.499885714120111758317,-44,53,
+ 6729307497437228.,6544488717859381.,-.496453019822695182034,-44,53,
+ 6729307497437265.,6544488717872396.,.498338508436545744691,-44,53,
+ 6729307497442437.,6544488719691821.,.499723498702351951416,-44,53,
+ 6743769751754858.,8988397030804626.,.499919501163414560572,-44,53,
+ 6743769751756921.,8988397030736413.,.499885320401081281259,-44,53,
+ 6743769751757506.,8988397030717071.,-.498207943284115479769,-44,53,
+ 6743769751757521.,8988397030716575.,-.472518157662198668553,-44,53,
+ 6743769751757583.,8988397030714525.,-.499667113084101111623,-44,53,
+ 6743769751770623.,8988397030283357.,.497490934084766985628,-44,53,
+ 6743769751815855.,8988397028787763.,.450584735479237703138,-44,53,
+ 6754791752061991.,6940150469862020.,.499002573121868120774,-44,53,
+ 6754791752062151.,6940150469809803.,-.448339471856557696450,-44,53,
+ 6754791752062165.,6940150469805233.,.481268071894380268325,-44,53,
+ 6754791752062176.,6940150469801643.,.497388281758130915345,-44,53,
+ 6754791752062488.,6940150469699819.,-.499930532049013028755,-44,53,
+ 6754791752066210.,6940150468485098.,.499835012827862145199,-44,53,
+ 6754791752068071.,6940150467877738.,.499601288660170534338,-44,53,
+ 6794379564755893.,-8827417065973478.,-.492917204916464046525,-44,53,
+ 6794379564777303.,-8827417068152703.,-.499916493310734338860,-44,53,
+ 6794379564777946.,-8827417068218151.,-.499690936423475983691,-44,53,
+ 6794379564778165.,-8827417068240442.,-.498056211578736430826,-44,53,
+ 6794379564828044.,-8827417073317395.,-.464526705247712727024,-44,53,
+ 6990987887102449.,5711764656724107.,.480691927437923696963,-44,58,
+ 6990987887139492.,5711764049930774.,.499293754832885577565,-44,58,
+ 6990987887146330.,5711763937918983.,-.499987319335432964297,-44,58,
+ 6990987887148051.,5711763909727655.,.499180245024326668461,-44,58,
+ 6990987887148143.,5711763908220623.,.492161515803817402554,-44,58,
+ 6990987887148189.,5711763907467107.,.488652092615156481183,-44,58,
+ 6990987887148617.,5711763900456132.,.499475587395638085870,-44,58,
+ 6990987887149749.,5711763881913087.,-.499951465048779195478,-44,58,
+ 7006147211056091.,-6718498630468066.,-.492878033439686630025,-44,53,
+ 7006147211081694.,-6718498639199197.,-.499452603273896611892,-44,53,
+ 7006147211081699.,-6718498639200903.,.401340378402885223931,-44,53,
+ 7006147211084214.,-6718498640058567.,-.499721045666802346749,-44,53,
+ 7006147211085726.,-6718498640574189.,-.499815938999999980655,-44,53,
+ 7054682820208231.,7984980447134588.,.497715273870474014723,-44,54,
+ 7054682820217784.,7984980455903371.,.499794812964077900945,-44,54,
+ 7054682820220855.,7984980458722269.,.499858514747333664429,-44,54,
+ 7054682820221195.,7984980459034359.,-.499823766944316346645,-44,54,
+ 7054682820221535.,7984980459346448.,-.499509031215774010517,-44,54,
+ 7054682820221546.,7984980459356544.,.497559925131582646152,-44,54,
+ 7138546116887287.,-7843710272173371.,-.498677983604221494045,-44,53,
+ 7138546116897512.,-7843710269599800.,.476622439995393111766,-44,53,
+ 7138546116897525.,-7843710269596528.,.499673408300989181959,-44,53,
+ 7138546116899434.,-7843710269116043.,-.499949442673907358297,-44,53,
+ 7223985620277307.,-5509642647254127.,-.487580477190393710548,-44,53,
+ 7223985620314085.,-5509642662150714.,.499955225035517949792,-44,53,
+ 7223985620314380.,-5509642662270200.,-.499612360185255159966,-44,53,
+ 7223985620314650.,-5509642662379561.,-.482266080289424344372,-44,53,
+ 7223985620314651.,-5509642662379967.,.477057426863184997732,-44,53,
+ 7223985620314675.,-5509642662389687.,-.499178396133406113163,-44,53,
+ 7223985620325615.,-5509642666820832.,-.498940034389922730874,-44,53,
+ 7322656671993154.,4665156753308517.,.498868349494910249645,-44,58,
+ 7322656671993195.,4665156752636861.,.493308231006009311948,-44,58,
+ 7322656671993202.,4665156752522189.,-.483250816146467934131,-44,58,
+ 7322656671993325.,4665156750507221.,-.499931336627531200943,-44,58,
+ 7322656671999980.,4665156641485983.,.499656625521063060315,-44,58,
+ 7371229009356857.,-6961360446569314.,-.483323346345407866479,-44,54,
+ 7371229009358614.,-6961360444909910.,-.484797929909427066554,-44,54,
+ 7371229009381455.,-6961360423337658.,-.497648646283893478981,-44,54,
+ 7371229009395330.,-6961360410233373.,.499136199178503466383,-44,54,
+ 7371229009395372.,-6961360410193705.,-.472975067444847298396,-44,54,
+ 7371229009395383.,-6961360410183316.,-.489480392622717448912,-44,54,
+ 7371229009395511.,-6961360410062426.,-.499723976409653721256,-44,54,
+ 7413149621264437.,8241351046908507.,.498390090607468117635,-44,53,
+ 7413149621275305.,8241351044663192.,-.499972475639428395387,-44,53,
+ 7413149621275437.,8241351044635920.,.455493666435177497784,-44,53,
+ 7413149621275457.,8241351044631788.,.479049102030640512196,-44,53,
+ 7413149621275477.,8241351044627657.,-.497395473025593044271,-44,53,
+ 7461059150868694.,-9007161437551355.,-.483638235148264936606,-44,53,
+ 7461059150901341.,-9007161437599793.,.499975973620991698988,-44,53,
+ 7461059150901647.,-9007161437600246.,-.499540783922692307948,-44,53,
+ 7461059150902228.,-9007161437601109.,.494848296596775494199,-44,53,
+ 7461059150902259.,-9007161437601154.,-.498566123545579589652,-44,53,
+ 7461059150905441.,-9007161437605875.,-.499858796954520794844,-44,53,
+ 7761862923838512.,6554494349809452.,.499962150860823339468,-44,55,
+ 7761862923839764.,6554494347288144.,.497831869498411951633,-44,55,
+ 7761862923839770.,6554494347276062.,-.447865320404632953074,-44,55,
+ 7761862923839838.,6554494347139122.,-.499100192591451638140,-44,55,
+ 7761862923840151.,6554494346508795.,-.499638440616867088043,-44,55,
+ 7761862923851550.,6554494323553211.,.498514953405204623324,-44,55,
+ 7761862923890664.,6554494244784488.,.472572414806484839605,-44,55,
+ 7819356134911465.,-8127311055389155.,-.492055627588161407279,-44,57,
+ 7819356134933695.,-8127310873570809.,-.499975005230137908833,-44,57,
+ 7819356134936069.,-8127310854153951.,-.497174799915107801823,-44,57,
+ 7819356134936150.,-8127310853491455.,-.499604026855710131928,-44,57,
+ 7819356134938632.,-8127310833191269.,-.499882737569156733995,-44,57,
+ 7819356134949747.,-8127310742282096.,-.497534865678289968575,-44,57,
+ 7880037969485340.,-8960639206857836.,-.490272330452819442497,-44,55,
+ 7880037969502477.,-8960639240851628.,-.498891598536334626794,-44,55,
+ 7880037969511262.,-8960639258277984.,-.496979052190824200529,-44,55,
+ 7880037969511450.,-8960639258650910.,-.498962649468506308035,-44,55,
+ 7880037969511544.,-8960639258837373.,-.499954064359156126633,-44,55,
+ 8016984453660094.,-8858644343533554.,.499391983918146207190,-44,53,
+ 8016984453660284.,-8858644343515959.,.490945097793410679707,-44,53,
+ 8016984453660322.,-8858644343512440.,.489255844566867627073,-44,53,
+ 8016984453660327.,-8858644343511976.,-.484650633043774363769,-44,53,
+ 8016984453660669.,-8858644343480305.,-.499852003159862606433,-44,53,
+ 8016984453661857.,-8858644343370290.,-.499999169659706881129,-44,53,
+ 8016984453667184.,-8858644342876982.,-.499320613698078389727,-44,53,
+ 8016984453717503.,-8858644338217180.,-.453212315732619167982,-44,53,
+ 8049376796641709.,7873994924792805.,-.499961511168020944781,-44,54,
+ 8049376796642175.,7873994925221991.,.222135863273312936894,-44,54,
+ 8049376796642300.,7873994925337116.,.415830571150783833417,-44,54,
+ 8049376796642354.,7873994925386850.,.499506561991458038450,-44,54,
+ 8049376796643645.,7873994926575863.,.499960476340285883869,-44,54,
+ 8049376796699790.,7873994978285495.,.457764609720874026923,-44,54,
+ 8198893031061692.,8213007108249161.,.499360157331977423203,-44,54,
+ 8198893031068742.,8213007101823900.,-.486019376844900626411,-44,54,
+ 8198893031068807.,8213007101764660.,-.490146033874282899504,-44,54,
+ 8198893031068963.,8213007101622483.,.499949531799064688911,-44,54,
+ 8198893031122275.,8213007053034743.,.461965364934726771819,-44,54,
+ 8347450336541482.,-8945488055820140.,-.499904710896260974172,-44,53,
+ 8347450336542968.,-8945488055731231.,-.499883987338437017660,-44,53,
+ 8347450336544454.,-8945488055642322.,-.499799437132097462838,-44,53,
+ 8347450336544602.,-8945488055633467.,-.498441626221828762046,-44,53,
+ 8347450336544643.,-8945488055631014.,-.423741039587550633255,-44,53,
+ 8347450336544673.,-8945488055629219.,-.491033262486567327459,-44,53,
+ 8347450336565779.,-8945488054366424.,-.493574731211171418979,-44,53,
+ 8347450336606274.,-8945488051943564.,-.445105735414024557627,-44,53,
+ 8638779724394265.,5096814003500902.,.481234713337269717051,-44,53,
+ 8638779724394286.,5096814003492037.,.443013276572325789839,-44,53,
+ 8638779724394334.,5096814003471774.,.498507108123153411532,-44,53,
+ 8638779724394804.,5096814003273367.,-.499784462675811183076,-44,53,
+ 8638779724395903.,5096814002809429.,.499940835801061470013,-44,53,
+ 8638779724419293.,5096813992935465.,.494837261003150768244,-44,53,
+ 8638779724430988.,5096813987998483.,.488906763913359617275,-44,53,
+ 8704521642360088.,-7001926819037831.,-.499532652946570457290,-44,60,
+ 8704521642365332.,-7001926475373385.,-.499847886540506714676,-44,60,
+ 8704521642366353.,-7001926408462364.,.499781709000638356186,-44,60,
+ 8704521642366372.,-7001926407217202.,-.463985979012179245629,-44,60,
+ 8704521642366377.,-7001926406889529.,.492917262341914367237,-44,60,
+ 8704521642460606.,-7001920231611671.,-.399529124001155639317,-44,60,
+ 7146344544205316.,-5652563272694430.,-.412318856380387816618,-38,70,
+ 7146344544206558.,-5647228923312859.,-.497100125202389134238,-38,70,
+ 7146344544206843.,-5646004857633513.,-.497872023931041159238,-38,70,
+ 7146344544206847.,-5645987677764330.,.305669108027598330048,-38,70,
+ 7146344544206849.,-5645979087829738.,.207440122351293841321,-38,70,
+ 7146344544215028.,-5610850550316153.,-.005202302362050879565,-38,70,
+ 5371956115261446.,4879582583286995.,-.160032670406894478565,-37,74,
+ 5371956115275725.,6842073399913587.,.495547399651673526165,-37,74,
+ 5371956115275753.,6845921690610803.,.242956198209312016779,-37,74,
+ 5371956115275775.,6848945347587187.,.044292359751714025070,-37,74,
+ 5371956115275777.,6849220225494131.,.026223310041631491215,-37,74,
+ 5371956115275946.,6872447408630897.,.494143444970906574796,-37,74,
+ 5371956115276278.,6918077141183598.,.454086390286174650977,-37,74,
+ 5371956115281923.,7693920033532980.,.368078241703273426190,-37,74,
+ 5371956115289339.,8713167312481236.,.124555319567696400756,-37,74,
+ 7170739958405677.,6137467417743519.,.141426019048340798104,-37,70,
+ 7170739958428935.,6337252116481467.,-.364374334928671180492,-37,70,
+ 7170739958447764.,6498991994911844.,.477404662149742452064,-37,70,
+ 7170739958448048.,6501431536335936.,-.499778482175375002738,-37,70,
+ 7170739958448071.,6501629104831549.,-.495624509590158071762,-37,70,
+ 7170739958448117.,6502024241822775.,-.487862804844971329866,-37,70,
+ 7170739958448125.,6502092961299509.,.469934446936252244590,-37,70,
+ 7170739958448127.,6502110141168693.,.209380317711300378369,-37,70,
+ 7170739958448129.,6502127321037877.,-.051175188389030549401,-37,70,
+ 7170739958448593.,6506113050688504.,.462725539060205348124,-37,70,
+ 7158542251324229.,4845837228158003.,.092587579971568801253,-36,70,
+ 7158542251326867.,4800516733250989.,.304189328631945880190,-36,70,
+ 7158542251327454.,4790432150040064.,.498166488720074338170,-36,70,
+ 7158542251327461.,4790311890955777.,.488147781694517938002,-36,70,
+ 7158542251327487.,4789865214356997.,.164785993032061564410,-36,70,
+ 7158542251327489.,4789830854618629.,.447575915950649855436,-36,70,
+ 4588037610644632.,-6594350259995752.,-.133543070160990958908,-34,72,
+ 4588037610667758.,-7600761088350437.,.262294956444472095990,-34,77,
+ 4588037610667951.,-5903115135064294.,-.441183371420137137093,-34,77,
+ 4588037610667954.,-5876726855997670.,-.461227233495364441251,-34,77,
+ 4588037610668015.,-5340165181642983.,.168956053879895757364,-34,77,
+ 4588037610668031.,-5199427693287655.,.083375723368891521553,-34,77,
+ 4588037610668033.,-5181835507243239.,.072997779682638395571,-34,77,
+ 4588037610669107.,8530336797216303.,-.017583694674824637377,-34,78,
+ 4588037610680670.,6623399500899411.,-.386898493450447513641,-34,73,
+ 7161591678105926.,5934566320678203.,.273600339653992488856,-34,72,
+ 7161591678107645.,5462051198641811.,.470597594470113137213,-34,72,
+ 7161591678107647.,5461501442827924.,-.161706934603626358536,-34,72,
+ 7161591678107649.,5460951687014036.,.205914519176017311315,-34,72,
+ 7161591678107656.,5459027541665429.,.492006829942919952906,-34,72,
+ 7161591678107705.,5445558524225182.,.469294512836828791201,-34,72,
+ 7161591678118564.,4921318665442764.,-.039420836442481738261,-34,73,
+ 7161591678147855.,-5590789439573905.,.345512776715301277277,-34,72,
+ 4923784867872607.,-5197382142330510.,.454741147072121826536,-33,74,
+ 4923784867872765.,-5544827816707711.,-.494614094521891871139,-33,74,
+ 4923784867872767.,-5549225863218815.,-.304982358349659633418,-33,74,
+ 4923784867872769.,-5553623909729919.,-.115049798040601666285,-33,74,
+ 4923784867872786.,-5591007305074301.,-.488443569363810832585,-33,74,
+ 4923784867873660.,-7512953630426633.,-.043634501630011313646,-33,74,
+ 4923784867879441.,-5056376767692270.,.375880777122291392976,-33,72,
+ 4923784867894857.,-6765706197286064.,.356617046501893499578,-33,71,
+ 5818983827624657.,6336475918824011.,.203651212409538513287,-31,70,
+ 5818983827636223.,-5631955090988659.,.421354737211606850166,-31,78,
+ 5818983827636225.,-5913430067699315.,.472708629903935860518,-31,78,
+ 5818983827636226.,-6054167556054642.,-.499706276421089924192,-31,78,
+ 5818983827636304.,-8515845823885109.,.054965707543208668231,-31,77,
+ 5818983827641290.,-5615225067084048.,-.032048713040323803309,-31,71,
+ 5818983827643783.,-8356307555117465.,-.438524724598047347379,-31,71,
+ 6904797244408171.,-8807614496896947.,-.227364980099607949482,-30,69,
+ 6904797244424191.,-8623861563209770.,-.268459433470772986105,-30,83,
+ 6904797244424192.,6133403064499548.,-.313637533751131010697,-30,87,
+ 6904797244424193.,4695268473136107.,-.135538875347240686618,-30,82,
+ 6904797244424213.,5922953813784126.,.299948148089643085236,-30,78,
+ 6904797244425117.,8136760398755779.,.435113526627695841147,-30,73,
+ 6904797244425826.,7186595175748355.,.027508945107156707996,-30,72,
+ 6904797244425838.,7239371733881541.,.463980607107521461066,-30,72,
+ 6904797244452339.,7737000144404609.,-.452528302006708819979,-30,68,
+ 5378363199834527.,-7653695703552655.,.027221501723861288178,-28,67,
+ 5378363199843741.,-5176491275374212.,.122869425730494666167,-28,68,
+ 5378363199848348.,-7106637214435962.,-.051159888803452642027,-28,74,
+ 5378363199848446.,-6736009120801846.,-.276339804284185156351,-28,79,
+ 5378363199848447.,-8968418614233197.,.250746881331505370505,-28,80,
+ 5378363199848449.,4963921984997782.,-.433882543206171080186,-28,87,
+ 5378363199848462.,7323196974540528.,-.470304813771569317377,-28,77,
+ 5378363199870683.,6111637742987200.,.194505703260253715124,-28,66,
+ 5560206444460472.,7070781568873724.,.324873424353475778552,-26,68,
+ 5560206444460638.,6340705848219077.,.474589868524017502524,-26,68,
+ 5560206444461966.,8001601311367347.,.127872490356419965675,-26,72,
+ 5560206444462049.,8643982178499954.,-.062665752981932583030,-26,74,
+ 5560206444462055.,6955132318236162.,.466381321474412240888,-26,74,
+ 5560206444462079.,6391452069778420.,-.265254085413036629696,-26,79,
+ 5560206444462081.,-5811473219851782.,.285042095264245200848,-26,78,
+ 5560206444464379.,-5056193073677390.,.081411751272675779371,-26,67,
+ 5560206444472193.,-5559840177343104.,.407844561873090316170,-26,65,
+ 8249388044327082.,-8139436860656670.,-.471525123925657395156,-26,63,
+ 8249388044381812.,-4939231945053834.,.276587559846141251488,-26,66,
+ 8249388044385484.,-7214602012212486.,-.489259190512247738403,-26,69,
+ 8249388044385834.,-8271938909170924.,-.480553181410618531654,-26,70,
+ 8249388044386184.,-8458695174767502.,.379100950431422427399,-26,72,
+ 8249388044386273.,-8783507771839398.,-.492522906121510893522,-26,74,
+ 8249388044386279.,-7094657911575612.,-.218450958337745276476,-26,74,
+ 8249388044386303.,-5428135528320560.,-.050855483800442511135,-26,78,
+ 8249388044386305.,7158127452840863.,.147335868334066826554,-26,79,
+ 8967144255491204.,-8126488643948866.,.088563324075069821569,-24,62,
+ 8967144255520759.,-5071482721975552.,-.442062999560876604936,-24,73,
+ 8967144255520767.,-4543064756842398.,-.483084134430566180775,-24,76,
+ 8967144255520769.,8928268995797176.,.364707768362448605424,-24,77,
+ 8967144255520772.,8987466690004955.,-.383963399036041788223,-24,75,
+ 8967144255520797.,8160307754012969.,-.225876600947172850282,-24,72,
+ 8967144255522056.,5664645360572191.,-.000132727889248161470,-24,66,
+ 5346671783313256.,-5347991541264625.,-.403734410981788448110,-23,68,
+ 5346671783313308.,-7036808385709351.,-.325952333750226562416,-23,69,
+ 5346671783313407.,-8998747172771473.,-.230837337258207319958,-23,76,
+ 5346671783313409.,4507825668355234.,.051191643637078340480,-23,75,
+ 5346671783313412.,4504656137616512.,.400172425908359660657,-23,73,
+ 5346671783314573.,5123728295958778.,.499800265180770146631,-23,65,
+ 5346671783322475.,4984635509820218.,.223583480029287954927,-23,62,
+ 7804232761079817.,8967616141704297.,-.437083642914898161934,-22,64,
+ 7804232761081639.,7635006010104452.,-.459046294072610554490,-22,67,
+ 7804232761081855.,9006500434647011.,.121858746594006276029,-22,75,
+ 7804232761081857.,-4503949037417401.,-.105735752410516953580,-22,74,
+ 7804232761081869.,-7318393070721207.,.070331628394611690968,-22,71,
+ 7804232761081877.,-5910996349027014.,.037323628679204688725,-22,70,
+ 7804232761081956.,-7036879876631715.,-.340757729779947944133,-22,68,
+ 7804232761102077.,-5558284646047847.,.056916946133374981612,-22,60,
+ 6467564815253491.,-7318437781955090.,.105969379182759701390,-21,70,
+ 6467564815253501.,-6755752991153059.,-.340557412620485449839,-21,72,
+ 6467564815253503.,-4504306727569565.,.342422713985517695552,-21,73,
+ 6467564815253505.,9005785054342172.,.018128275154087207132,-21,74,
+ 6467564815253520.,9007110867128708.,.313476647233779389328,-21,70,
+ 6467564815253578.,5207276019625932.,.429218791772603691882,-21,67,
+ 6467564815254226.,6350777655523499.,.282988039167026510118,-21,64,
+ 6467564815306646.,7302999218708589.,.495299199833497211118,-21,58,
+ 6467564815345961.,6351538646997068.,-.440207892255794089188,-21,57,
+ 5519007584354205.,-6966505664533473.,.003447517557253355478,-19,65,
+ 5519007584354303.,-4503601697394101.,-.289562106048400554298,-19,71,
+ 5519007584354305.,9007195114682859.,-.245790883699451742761,-19,72,
+ 5519007584354317.,7318349134973855.,-.248766404616304643305,-19,68,
+ 5519007584354342.,5348024488131731.,-.494274905524673884334,-19,66,
+ 5519007584354343.,5488761976107581.,.181622721093684185843,-19,66,
+ 5519007584355307.,8822475915755119.,-.355269997439873637448,-19,62,
+ 5519007584359302.,5495275882123963.,.441180383557404517156,-19,59,
+ 5519007584375833.,5916183491178565.,.405859158374466285215,-19,57,
+ 7304668022910975.,9007199229022679.,.002599061033847825452,-19,72,
+ 7304668022910976.,-6902241061516902.,.097143665637497455099,-19,100,
+ 7304668022910977.,-4503599640224191.,-.165367137143019981868,-19,71,
+ 7304668022910990.,-7881299348568803.,.438199075238721487900,-19,68,
+ 7304668022912256.,-5629493941822008.,-.399031320149028414169,-19,61,
+ 7304668022921404.,-5732475643394749.,.247997580876870510231,-19,58,
+ 7304668022922207.,-6173835347865420.,.179041811701209492566,-19,58,
+ 7304668022922216.,-6178782014105688.,-.319812672113141288593,-19,58,
+ 7347785269663743.,-9007199171893817.,.429034569522925465296,-12,65,
+ 7347785269663745.,9007199158631197.,.295701235141710447750,-12,65,
+ 4586976137695743.,-9007198896928603.,-.380843757498355173307,-11,64,
+ 4586976137695745.,9007198896725506.,.485822860727438496622,-11,64,
+ 5500059640559615.,-9007198893714497.,-.305980799904349854870,-11,64,
+ 5500059640559617.,9007198899939613.,-.439314181934722898555,-11,64,
+ 8944333985714495.,9007107629047499.,.139947648740339346257,-7,60,
+ 8944333985714497.,-9007107629055762.,.085978705839602708625,-7,60,
+ 6851593493588863.,9005733310818489.,.267583653033044817445,-5,58,
+ 6851593493588865.,-9005733310818340.,.168465888079437924862,-5,58,
+ 5706674932067740.,-8913667029669235.,-.030480085957072854157,-2,55,
+ 5706674932067742.,8913667029669242.,.426852375080671947110,-2,55,
+ 6134899525417044.,-8636562708039153.,.341335283153870185092,-1,54,
+ 6134899525417046.,8636562708039151.,.157445389056987762061,-1,54 };
+#include "trailer.h"
+
+double
+sincos_cos(double x)
+{
+ double y, z;
+
+ sincos(x, &y, &z);
+ return z;
+}

Reply | Threaded
Open this post in threaded view
|

Re: Add sincos(3) to libm

Jason McIntyre-2
On Fri, Mar 09, 2018 at 09:08:17PM +0100, Mark Kettenis wrote:
>
> I only got positive feedback.  So here is a diff that also works on
> gcc architectures and has some regress tests.  Oh, and there is a man
> page as well.
>
> ok?
>

hi.

- there is a lot of trailing whitespace in the man diff. please zap it.
- it probably wants $OpenBSD$
- the comma after the sin Xr in SEE ALSO should be removed
- consider adding Xr to this page in the cos/sin pages
- "the memory pointed to by *s and *c are assigned the values" would
  read better as *is* assigned, i think.

we can fix that in-tree if it's easier.

jmc

>
> Index: lib/libm/man/sincos.3
> ===================================================================
> RCS file: lib/libm/man/sincos.3
> diff -N lib/libm/man/sincos.3
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ lib/libm/man/sincos.3 9 Mar 2018 20:05:01 -0000
> @@ -0,0 +1,77 @@
> +.\" Copyright (c) 2011 Steven G. Kargl.
> +.\"
> +.\" Redistribution and use in source and binary forms, with or without
> +.\" modification, are permitted provided that the following conditions
> +.\" are met:
> +.\" 1. Redistributions of source code must retain the above copyright
> +.\"    notice, this list of conditions and the following disclaimer.
> +.\" 2. Redistributions in binary form must reproduce the above copyright
> +.\"    notice, this list of conditions and the following disclaimer in the
> +.\"    documentation and/or other materials provided with the distribution.
> +.\"
> +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
> +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> +.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
> +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> +.\" SUCH DAMAGE.
> +.\"
> +.\" $FreeBSD: head/lib/msun/man/sincos.3 319047 2017-05-28 06:13:38Z mmel $
> +.\"
> +.Dd $Mdocdate$
> +.Dt SINCOS 3
> +.Os
> +.Sh NAME
> +.Nm sincos ,
> +.Nm sincosf ,
> +.Nm sincosl
> +.Nd sine and cosine functions
> +.Sh SYNOPSIS
> +.In math.h
> +.Ft void
> +.Fn sincos "double x" "double *s" "double *c"
> +.Ft void
> +.Fn sincosf "float x" "float *s" "float *c"
> +.Ft void
> +.Fn sincosl "long double x" "long double *s" "long double *c"
> +.Sh DESCRIPTION
> +The
> +.Fn sincos ,
> +.Fn sincosf ,
> +and
> +.Fn sincosl
> +functions compute the sine and cosine of
> +.Fa x .
> +Using these functions allows argument reduction to occur only
> +once instead of twice with individual invocations of
> +.Fn sin
> +and
> +.Fn cos .
> +Like
> +.Fn sin
> +and
> +.Fn cos ,
> +a large magnitude argument may yield a result with little
> +or no significance.
> +.Sh RETURN VALUES
> +Upon returning from
> +.Fn sincos ,
> +.Fn sincosf ,
> +and
> +.Fn sincosl ,
> +the memory pointed to by
> +.Ar "*s"
> +and
> +.Ar "*c"
> +are assigned the values of sine and cosine, respectively.
> +.Sh SEE ALSO
> +.Xr cos 3 ,
> +.Xr sin 3 ,
> +.Sh HISTORY
> +These functions first appeared in
> +.Ox 6.3 .