summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthevenyp <thevenyp@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2009-07-29 15:07:08 +0000
committerthevenyp <thevenyp@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2009-07-29 15:07:08 +0000
commitea5947a6d81a07fa8c786335c406492355680e5a (patch)
tree6a74cbeb375063df11b4c85ae25f1fc33af2f227
parent447be3d6e830a04f7cc5da911ae32ca4dc875ff7 (diff)
downloadmpc-ea5947a6d81a07fa8c786335c406492355680e5a.tar.gz
src/mpc-impl.h: Add a C++ iterator on mpfr_rnd_t enum (g++ 4.3.2 refuses to iterate on enumeration, bug reported by Mickael Gastineau).
tests/tgeneric.c: Use prefix iterator ++, iterate between GMP_RNDN and GMP_RND_MAX. tests/read_data.c: Explicit cast of malloc return. NEWS: Fix compilation with g++. git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@627 211d60ee-9f03-0410-a15a-8952a2c7a4e4
-rw-r--r--NEWS1
-rw-r--r--src/mpc-impl.h9
-rw-r--r--tests/read_data.c9
-rw-r--r--tests/tgeneric.c20
4 files changed, 25 insertions, 14 deletions
diff --git a/NEWS b/NEWS
index 15f8080..01c7852 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ Recent Changes:
- Bug fixes:
- log: along branch cut
- norm: infinite loop in case of overflow
+ - compilation with g++
- Makefile.vc updated (thanks to Mickael Gastineau)
- Minimal gmp version is 4.2
- Changed MPC_SET_X_Y macro
diff --git a/src/mpc-impl.h b/src/mpc-impl.h
index 97da800..310a009 100644
--- a/src/mpc-impl.h
+++ b/src/mpc-impl.h
@@ -92,6 +92,15 @@ do { \
printf ("\n"); \
} while (0)
+/* C++ iterator on mpfr_rnd_t */
+#if defined (__cplusplus)
+inline
+mpfr_rnd_t & operator++(mpfr_rnd_t &rnd)
+{
+ return rnd = mpfr_rnd_t(rnd + 1);
+}
+#endif
+
/*
* ASSERT macros
diff --git a/tests/read_data.c b/tests/read_data.c
index fc10b18..0071dbb 100644
--- a/tests/read_data.c
+++ b/tests/read_data.c
@@ -67,12 +67,13 @@ open_data_file (const char *file_name)
{
FILE *fp;
char *src_dir;
+ char default_srcdir[] = ".";
src_dir = getenv ("srcdir");
if (src_dir == NULL)
- src_dir = ".";
+ src_dir = default_srcdir;
- pathname = malloc ((strlen (src_dir)) + strlen (file_name) + 2);
+ pathname = (char *) malloc ((strlen (src_dir)) + strlen (file_name) + 2);
if (pathname == NULL)
{
printf ("Cannot allocate memory\n");
@@ -155,7 +156,7 @@ read_string (FILE *fp, char **buffer_ptr, size_t buffer_length, const char *name
line_number++;
if (pos + 1 > buffer_length)
{
- buffer = realloc (buffer, 2 * buffer_length);
+ buffer = (char *) realloc (buffer, 2 * buffer_length);
if (buffer == NULL)
{
printf ("Cannot allocate memory\n");
@@ -172,7 +173,7 @@ read_string (FILE *fp, char **buffer_ptr, size_t buffer_length, const char *name
if (pos + 1 > buffer_length)
{
- buffer = realloc (buffer, buffer_length + 1);
+ buffer = (char *) realloc (buffer, buffer_length + 1);
if (buffer == NULL)
{
printf ("Cannot allocate memory\n");
diff --git a/tests/tgeneric.c b/tests/tgeneric.c
index 8b409ae..830360e 100644
--- a/tests/tgeneric.c
+++ b/tests/tgeneric.c
@@ -913,11 +913,11 @@ tgeneric (mpc_function function, mpfr_prec_t prec_min,
}
}
- for (rnd_re = 0; rnd_re < 4; rnd_re ++)
+ for (rnd_re = GMP_RNDN; rnd_re < GMP_RND_MAX; ++rnd_re)
switch (function.type)
{
case CCC:
- for (rnd_im = 0; rnd_im < 4; rnd_im ++)
+ for (rnd_im = GMP_RNDN; rnd_im < GMP_RND_MAX; ++rnd_im)
tgeneric_ccc (&function, z1, z2, z3, zzzz, z4,
RNDC (rnd_re, rnd_im));
reuse_ccc (&function, z1, z2, z3, z4);
@@ -927,49 +927,49 @@ tgeneric (mpc_function function, mpfr_prec_t prec_min,
reuse_fc (&function, z1, z2, x1);
break;
case CC:
- for (rnd_im = 0; rnd_im < 4; rnd_im ++)
+ for (rnd_im = GMP_RNDN; rnd_im < GMP_RND_MAX; ++rnd_im)
tgeneric_cc (&function, z1, z2, zzzz, z3,
RNDC (rnd_re, rnd_im));
reuse_cc (&function, z1, z2, z3);
break;
case CFC:
- for (rnd_im = 0; rnd_im < 4; rnd_im ++)
+ for (rnd_im = GMP_RNDN; rnd_im < GMP_RND_MAX; ++rnd_im)
tgeneric_cfc (&function, x1, z1, z2, zzzz, z3,
RNDC (rnd_re, rnd_im));
reuse_cfc (&function, z1, x1, z2, z3);
break;
case CCF:
- for (rnd_im = 0; rnd_im < 4; rnd_im ++)
+ for (rnd_im = GMP_RNDN; rnd_im < GMP_RND_MAX; ++rnd_im)
tgeneric_ccf (&function, z1, x1, z2, zzzz, z3,
RNDC (rnd_re, rnd_im));
reuse_ccf (&function, z1, x1, z2, z3);
break;
case CCU:
- for (rnd_im = 0; rnd_im < 4; rnd_im ++)
+ for (rnd_im = GMP_RNDN; rnd_im < GMP_RND_MAX; ++rnd_im)
tgeneric_ccu (&function, z1, ul1, z2, zzzz, z3,
RNDC (rnd_re, rnd_im));
reuse_ccu (&function, z1, ul1, z2, z3);
break;
case CUC:
- for (rnd_im = 0; rnd_im < 4; rnd_im ++)
+ for (rnd_im = GMP_RNDN; rnd_im < GMP_RND_MAX; ++rnd_im)
tgeneric_cuc (&function, ul1, z1, z2, zzzz, z3,
RNDC (rnd_re, rnd_im));
reuse_cuc (&function, ul1, z1, z2, z3);
break;
case CCS:
- for (rnd_im = 0; rnd_im < 4; rnd_im ++)
+ for (rnd_im = GMP_RNDN; rnd_im < GMP_RND_MAX; ++rnd_im)
tgeneric_ccs (&function, z1, lo, z2, zzzz, z3,
RNDC (rnd_re, rnd_im));
reuse_ccs (&function, z1, lo, z2, z3);
break;
case CCI:
- for (rnd_im = 0; rnd_im < 4; rnd_im ++)
+ for (rnd_im = GMP_RNDN; rnd_im < GMP_RND_MAX; ++rnd_im)
tgeneric_cci (&function, z1, i, z2, zzzz, z3,
RNDC (rnd_re, rnd_im));
reuse_cci (&function, z1, i, z2, z3);
break;
case CUUC:
- for (rnd_im = 0; rnd_im < 4; rnd_im ++)
+ for (rnd_im = GMP_RNDN; rnd_im < GMP_RND_MAX; ++rnd_im)
tgeneric_cuuc (&function, ul1, ul2, z1, z2, zzzz, z3,
RNDC (rnd_re, rnd_im));
reuse_cuuc (&function, ul1, ul2, z1, z2, z3);