Ian Jauslin
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/rational_int.c')
-rw-r--r--src/rational_int.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/rational_int.c b/src/rational_int.c
index ec601a8..7aab561 100644
--- a/src/rational_int.c
+++ b/src/rational_int.c
@@ -19,6 +19,10 @@ limitations under the License.
#include "rational_int.h"
#include <stdio.h>
#include <stdlib.h>
+#include <stdarg.h>
+// define MPFR_USE_VA_LIST to enable the use of mpfr_inits and mpfr_clears
+#define MPFR_USE_VA_LIST
+#include <mpfr.h>
#include "istring.h"
#include "array.h"
@@ -135,6 +139,16 @@ long int lcm(long int x,long int y){
double Q_double_value(Q q){
return(1.0*q.numerator/q.denominator);
}
+// approximate value as mpfr float
+int Q_mpfr_value(mpfr_t out, Q q){
+ mpfr_t x;
+ mpfr_init(out);
+ mpfr_init(x);
+ mpfr_set_si(x, q.denominator, MPFR_RNDN);
+ mpfr_si_div(out, q.numerator, x, MPFR_RNDN);
+ mpfr_clear(x);
+ return(0);
+}
// print to string