1/* check_mparam - check a mparam.h file
2
3Copyright 2018-2023 Free Software Foundation, Inc.
4Contributed by the Arenaire and Caramel projects, INRIA.
5
6This program is free software; you can redistribute it and/or modify
7it under the terms of the GNU Lesser General Public License as published by
8the Free Software Foundation; either version 3 of the License, or (at your
9option) any later version.
10
11This program is distributed in the hope that it will be useful, but
12WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14License for more details.
15
16You should have received a copy of the GNU Lesser General Public License
17along with this program; see the file COPYING.LESSER.  If not, see
18https://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
1951 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
20
21/* To check some mparam.h tables:
22   1) make a symbolic link to the corresponding mparam.h or
23      provide -DMPARAM='"..."' with a path to the mparam.h
24      file when compiling this program
25   2) compile and run this program */
26
27#include <stdio.h>
28
29#ifndef MPARAM
30# define MPARAM "mparam.h"
31#endif
32
33#include MPARAM
34
35#define numberof_const(x)  (sizeof (x) / sizeof ((x)[0]))
36
37static short mulhigh_ktab[] = {MPFR_MULHIGH_TAB};
38#define MPFR_MULHIGH_TAB_SIZE (numberof_const (mulhigh_ktab))
39
40static short sqrhigh_ktab[] = {MPFR_SQRHIGH_TAB};
41#define MPFR_SQRHIGH_TAB_SIZE (numberof_const (sqrhigh_ktab))
42
43static short divhigh_ktab[] = {MPFR_DIVHIGH_TAB};
44#define MPFR_DIVHIGH_TAB_SIZE (numberof_const (divhigh_ktab))
45
46int main (void)
47{
48  int err = 0, n;
49
50  for (n = 0; n < MPFR_MULHIGH_TAB_SIZE; n++)
51    if (mulhigh_ktab[n] >= n)
52      {
53        printf ("Error, mulhigh_ktab[%d] = %d\n", n, mulhigh_ktab[n]);
54        err = 1;
55      }
56
57  for (n = 0; n < MPFR_SQRHIGH_TAB_SIZE; n++)
58    if (sqrhigh_ktab[n] >= n)
59      {
60        printf ("Error, sqrhigh_ktab[%d] = %d\n", n, sqrhigh_ktab[n]);
61        err = 1;
62      }
63
64  for (n = 2; n < MPFR_DIVHIGH_TAB_SIZE; n++)
65    if (divhigh_ktab[n] >= n-1)
66      {
67        printf ("Error, divhigh_ktab[%d] = %d\n", n, divhigh_ktab[n]);
68        err = 1;
69      }
70
71  return err;
72}
73