diff options
author | ryde <ryde@280ebfd0-de03-0410-8827-d642c229c3f4> | 2002-11-29 22:40:01 +0000 |
---|---|---|
committer | ryde <ryde@280ebfd0-de03-0410-8827-d642c229c3f4> | 2002-11-29 22:40:01 +0000 |
commit | e9f40f61214da3910b444c3bd093a521e1c4dbc9 (patch) | |
tree | 7b6a97e073fee4c184944f54bc73039d5db79ee3 /tests | |
parent | 71eaa46643005321bc37195c633f0deac0522c59 (diff) | |
download | mpfr-e9f40f61214da3910b444c3bd093a521e1c4dbc9.tar.gz |
New file, moved from top-level directory.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2096 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'tests')
-rw-r--r-- | tests/rnd_mode.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/rnd_mode.c b/tests/rnd_mode.c new file mode 100644 index 000000000..3497fe858 --- /dev/null +++ b/tests/rnd_mode.c @@ -0,0 +1,44 @@ +/* mpfr_set_machine_rnd_mode -- set the rounding mode for machine floats + +Copyright 1999, 2001, 2002 Free Software Foundation, Inc. + +This file is part of the MPFR Library. + +The MPFR Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your +option) any later version. + +The MPFR Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the MPFR Library; see the file COPYING.LIB. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, +MA 02111-1307, USA. */ + +#include <stdio.h> +#include <stdlib.h> +#include "gmp.h" +#include "gmp-impl.h" /* for MPFR_HAVE_FESETROUND when building within gmp */ +#include "mpfr.h" + +#ifdef MPFR_HAVE_FESETROUND +#include <fenv.h> + +/* sets the machine rounding mode to the value rnd_mode */ +void +mpfr_set_machine_rnd_mode (mp_rnd_t rnd_mode) +{ + switch (rnd_mode) { + case GMP_RNDN: fesetround(FE_TONEAREST); break; + case GMP_RNDZ: fesetround(FE_TOWARDZERO); break; + case GMP_RNDU: fesetround(FE_UPWARD); break; + case GMP_RNDD: fesetround(FE_DOWNWARD); break; + default: fprintf(stderr, "invalid rounding mode\n"); exit(1); + } +} + +#endif |