From ea5947a6d81a07fa8c786335c406492355680e5a Mon Sep 17 00:00:00 2001 From: thevenyp Date: Wed, 29 Jul 2009 15:07:08 +0000 Subject: 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 --- NEWS | 1 + src/mpc-impl.h | 9 +++++++++ tests/read_data.c | 9 +++++---- tests/tgeneric.c | 20 ++++++++++---------- 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); -- cgit v1.2.1