From ead5f4da759465cf6fc2ceab7c431d3550a3323f Mon Sep 17 00:00:00 2001
From: Timo Paulssen <timonator@perpetuum-immobile.de>
Date: Tue, 15 Jan 2019 12:35:56 +0100
Subject: [PATCH] Fix Name Collision With Existing LibTomMath Function

fixes #1032

Upstream: https://github.com/MoarVM/MoarVM/commit/f7204a3ee5199dd70f26d6fe133008cc86c63bbe
(backported mp_get_double() as other functions weren't yet used)

Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
---
 src/math/bigintops.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/math/bigintops.c b/src/math/bigintops.c
index 2275593..8ab7ed6 100644
--- a/src/math/bigintops.c
+++ b/src/math/bigintops.c
@@ -45,7 +45,7 @@ int MVM_bigint_mp_set_uint64(mp_int * a, MVMuint64 b) {
   return MP_OKAY;
 }
 
-static MVMnum64 mp_get_double(mp_int *a) {
+static MVMnum64 MVM_mp_get_double(mp_int *a) {
     MVMnum64 d    = 0.0;
     MVMnum64 sign = SIGN(a) == MP_NEG ? -1.0 : 1.0;
     int i;
@@ -680,8 +680,8 @@ MVMObject * MVM_bigint_pow(MVMThreadContext *tc, MVMObject *a, MVMObject *b,
         }
     }
     else {
-        MVMnum64 f_base = mp_get_double(base);
-        MVMnum64 f_exp = mp_get_double(exponent);
+        MVMnum64 f_base = MVM_mp_get_double(base);
+        MVMnum64 f_exp = MVM_mp_get_double(exponent);
         r = MVM_repr_box_num(tc, num_type, pow(f_base, f_exp));
     }
     clear_temp_bigints(tmp, 2);
@@ -880,7 +880,7 @@ MVMnum64 MVM_bigint_to_num(MVMThreadContext *tc, MVMObject *a) {
 
     if (MVM_BIGINT_IS_BIG(ba)) {
         mp_int *ia = ba->u.bigint;
-        return mp_get_double(ia);
+        return MVM_mp_get_double(ia);
     } else {
         return (double)ba->u.smallint.value;
     }
@@ -913,11 +913,11 @@ MVMnum64 MVM_bigint_div_num(MVMThreadContext *tc, MVMObject *a, MVMObject *b) {
             mp_init(&reduced_b);
             mp_div_2d(ia, max_size - 1023, &reduced_a, NULL);
             mp_div_2d(ib, max_size - 1023, &reduced_b, NULL);
-            c = mp_get_double(&reduced_a) / mp_get_double(&reduced_b);
+            c = MVM_mp_get_double(&reduced_a) / MVM_mp_get_double(&reduced_b);
             mp_clear(&reduced_a);
             mp_clear(&reduced_b);
         } else {
-            c = mp_get_double(ia) / mp_get_double(ib);
+            c = MVM_mp_get_double(ia) / MVM_mp_get_double(ib);
         }
         clear_temp_bigints(tmp, 2);
     } else {
-- 
1.9.1

