public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libquadmath/105101] New: incorrect rounding for sqrtq
@ 2022-03-29 19:44 tkoenig at gcc dot gnu.org
  2022-03-30 11:34 ` [Bug libquadmath/105101] " fxcoudert at gcc dot gnu.org
                   ` (24 more replies)
  0 siblings, 25 replies; 26+ messages in thread
From: tkoenig at gcc dot gnu.org @ 2022-03-29 19:44 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105101

            Bug ID: 105101
           Summary: incorrect rounding for sqrtq
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libquadmath
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tkoenig at gcc dot gnu.org
  Target Milestone: ---

IEEE mandates correct rounding of square roots, and sqrtq rounds
incorrectly for some values:

#include <stdio.h>
#include <gmp.h>
#define MPFR_WANT_FLOAT128
#include <mpfr.h>
#include <quadmath.h>

#define NDIG 113

int main()
{
  mpfr_t a, b, tst;
  gmp_randstate_t state;
  __float128 af, bf;
  gmp_randinit_mt (state);
  mpfr_set_default_prec (NDIG);
  mpfr_init (a);  mpfr_init (b);  mpfr_init (tst);
  for (int i=0; i<100; i++) {
    mpfr_urandom (a, state, MPFR_RNDN);
    mpfr_mul_ui (a, a, 3, MPFR_RNDN);
    mpfr_add_ui (a, a, 1, MPFR_RNDN);
    af = mpfr_get_float128 (a, MPFR_RNDN);

    mpfr_sqrt (b, a, MPFR_RNDN);
    bf = sqrtq (af);
    mpfr_set_float128 (tst, bf, MPFR_RNDN);
    if (!mpfr_equal_p (tst, b)) {
      printf ("sqrt(");
      mpfr_out_str (stdout, 16, 0, a, MPFR_RNDN);
      printf (") = ");
      mpfr_out_str (stdout, 16, 0, b, MPFR_RNDN);
      printf (" ! = ");
      mpfr_out_str (stdout, 16, 0, tst, MPFR_RNDN);
      printf ("\n");
    }
  }
  return 0;
}

gives me

sqrt(2.4e5658b5f6d2a1ec21e3829dd7f8) = 1.84bfedcba255aeaf7e99184e6f3b ! =
1.84bfedcba255aeaf7e99184e6f3a
sqrt(1.a8942b9fcf73a7cc6d2546104e8f) = 1.49af594bb6630a9358d929e60a7b ! =
1.49af594bb6630a9358d929e60a7c
sqrt(2.71ad677c998ff96c3a5af38b7ee0) = 1.9037796dd2ced85e3fde2112fe63 ! =
1.9037796dd2ced85e3fde2112fe62
sqrt(3.b8f47bfc809dc00ed76e72cc70a4) = 1.edeb6523391e23008db6386115d3 ! =
1.edeb6523391e23008db6386115d4
sqrt(1.48524d337f27113e25d7eee643b7) = 1.21ea0f970722185990c1a32be807 ! =
1.21ea0f970722185990c1a32be806
sqrt(1.c9e6c13fef31a052f5dba4c0d05e) = 1.5660ca59a7ad02740d08ec0ad237 ! =
1.5660ca59a7ad02740d08ec0ad236
sqrt(2.6c28926057d24449c618b8addbb4) = 1.8e729ca4cf7f6ab6f8cf2579a87b ! =
1.8e729ca4cf7f6ab6f8cf2579a87c
sqrt(1.51c65cf9647952785b859500bf70) = 1.260ef5983614564e3fa636e0d493 ! =
1.260ef5983614564e3fa636e0d492
sqrt(2.cf6052559128965a96f542a8c462) = 1.ad239894bbd64edaa5de12f61265 ! =
1.ad239894bbd64edaa5de12f61264
sqrt(2.bfe5732cc879053f71c5240d026e) = 1.a87f27daa19d145bb1d2756750e5 ! =
1.a87f27daa19d145bb1d2756750e4
sqrt(3.66185a13cbb8d455463507813f6c) = 1.d7f53f5b2ad068de705fe4660697 ! =
1.d7f53f5b2ad068de705fe4660698
sqrt(2.5af21489bafdf81c0047850a69e0) = 1.88e114747ee2213bc2af2c6f572f ! =
1.88e114747ee2213bc2af2c6f572e
sqrt(2.71c155bcdb555657ff0fe301660a) = 1.903dd936eb27661ee030b952dc2f ! =
1.903dd936eb27661ee030b952dc2e
sqrt(1.74ed7ee5a244f1c8a45361664fb0) = 1.34fb3bfc3d55ca48fbffb9be113f ! =
1.34fb3bfc3d55ca48fbffb9be1140
sqrt(2.414fd19bd0495ab521274e316538) = 1.806fe03d3244345277e674340bdb ! =
1.806fe03d3244345277e674340bda
sqrt(2.4853c8d694a5aa889070fdab21c6) = 1.82c40b824e75149ee39e9b1c8fed ! =
1.82c40b824e75149ee39e9b1c8fec
sqrt(1.e6ae9218331623b1a8b2ceea4b22) = 1.60f95131df63442f9ba389039d55 ! =
1.60f95131df63442f9ba389039d54
sqrt(1.4dff0457856b9f2097275f9decbe) = 1.2468b38405610910a60929f0c895 ! =
1.2468b38405610910a60929f0c896
sqrt(3.e720f9998891f40b8a3d2207eb6c) = 1.f9be75953c96a035da06ccdc1e67 ! =
1.f9be75953c96a035da06ccdc1e66
sqrt(1.98d4defa4bf711b662d1a2bca893) = 1.43836938d7cb1c9cadaa6d69f11f ! =
1.43836938d7cb1c9cadaa6d69f11e
sqrt(3.f2e46bf92ba492c9980ddfa4317e) = 1.fcb6674f25a5dc44b4b702a34d13 ! =
1.fcb6674f25a5dc44b4b702a34d14
sqrt(1.24e5a1865c0cbb6483d9ccd2ced0) = 1.11d3e6bd82323006686745d16fa1 ! =
1.11d3e6bd82323006686745d16fa0
sqrt(3.937ee06d6e7d373cf1d95f09e500) = 1.e41d51bcc6c6a8867a5819bb1a1b ! =
1.e41d51bcc6c6a8867a5819bb1a1c
sqrt(2.83faa7963fffa7fbc9e246e0914e) = 1.96072460dd2c31680ca207682e4f ! =
1.96072460dd2c31680ca207682e50
sqrt(1.fdf4c95075ffdccec60afb6a74fb) = 1.6950bb2977940a3c7b6524ac62a5 ! =
1.6950bb2977940a3c7b6524ac62a4

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2022-06-13 22:34 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-29 19:44 [Bug libquadmath/105101] New: incorrect rounding for sqrtq tkoenig at gcc dot gnu.org
2022-03-30 11:34 ` [Bug libquadmath/105101] " fxcoudert at gcc dot gnu.org
2022-03-30 12:15 ` jakub at gcc dot gnu.org
2022-03-30 16:28 ` kargl at gcc dot gnu.org
2022-03-30 16:31 ` kargl at gcc dot gnu.org
2022-04-02 19:33 ` already5chosen at yahoo dot com
2022-04-09 10:09 ` tkoenig at gcc dot gnu.org
2022-04-09 10:23 ` jakub at gcc dot gnu.org
2022-04-09 10:25 ` tkoenig at gcc dot gnu.org
2022-04-09 15:50 ` sgk at troutmask dot apl.washington.edu
2022-04-15 13:49 ` already5chosen at yahoo dot com
2022-04-16 22:54 ` already5chosen at yahoo dot com
2022-04-18 23:57 ` already5chosen at yahoo dot com
2022-04-20 12:57 ` already5chosen at yahoo dot com
2022-04-21 15:09 ` already5chosen at yahoo dot com
2022-06-09  7:52 ` tkoenig at gcc dot gnu.org
2022-06-09  8:03 ` jakub at gcc dot gnu.org
2022-06-10 16:16 ` already5chosen at yahoo dot com
2022-06-10 16:18 ` already5chosen at yahoo dot com
2022-06-10 17:40 ` joseph at codesourcery dot com
2022-06-11 21:15 ` already5chosen at yahoo dot com
2022-06-13 17:59 ` joseph at codesourcery dot com
2022-06-13 20:05 ` already5chosen at yahoo dot com
2022-06-13 20:20 ` joseph at codesourcery dot com
2022-06-13 20:56 ` already5chosen at yahoo dot com
2022-06-13 22:34 ` joseph at codesourcery dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).