From 2dd9e927788505aece02e22ad1bc2b6b82d88e3c Mon Sep 17 00:00:00 2001 From: Phil Dawes Date: Mon, 17 Aug 2009 21:37:05 +0100 Subject: [PATCH] Dev checkpoint --- vm/bignum.cpp | 41 ++++++++++++++++++++++++----------------- vm/vm.hpp | 4 ++++ 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/vm/bignum.cpp b/vm/bignum.cpp index 405aff4e5e..03fccf3d20 100755 --- a/vm/bignum.cpp +++ b/vm/bignum.cpp @@ -934,8 +934,7 @@ void bignum_divide_unsigned_large_denominator(bignum * numerator, bignum * denom return vm->bignum_divide_unsigned_large_denominator(numerator,denominator,quotient,remainder,q_negative_p,r_negative_p); } -void -bignum_divide_unsigned_normalized(bignum * u, bignum * v, bignum * q) +void factorvm::bignum_divide_unsigned_normalized(bignum * u, bignum * v, bignum * q) { bignum_length_type u_length = (BIGNUM_LENGTH (u)); bignum_length_type v_length = (BIGNUM_LENGTH (v)); @@ -1009,11 +1008,12 @@ bignum_divide_unsigned_normalized(bignum * u, bignum * v, bignum * q) #undef qj } -bignum_digit_type -bignum_divide_subtract(bignum_digit_type * v_start, - bignum_digit_type * v_end, - bignum_digit_type guess, - bignum_digit_type * u_start) +void bignum_divide_unsigned_normalized(bignum * u, bignum * v, bignum * q) +{ + return vm->bignum_divide_unsigned_normalized(u,v,q); +} + +bignum_digit_type factorvm::bignum_divide_subtract(bignum_digit_type * v_start, bignum_digit_type * v_end, bignum_digit_type guess, bignum_digit_type * u_start) { bignum_digit_type * v_scan = v_start; bignum_digit_type * u_scan = u_start; @@ -1088,14 +1088,13 @@ bignum_divide_subtract(bignum_digit_type * v_start, return (guess - 1); } +bignum_digit_type bignum_divide_subtract(bignum_digit_type * v_start, bignum_digit_type * v_end, bignum_digit_type guess, bignum_digit_type * u_start) +{ + return vm->bignum_divide_subtract(v_start,v_end,guess,u_start); +} + /* allocates memory */ -void -bignum_divide_unsigned_medium_denominator(bignum * numerator, - bignum_digit_type denominator, - bignum * * quotient, - bignum * * remainder, - int q_negative_p, - int r_negative_p) +void factorvm::bignum_divide_unsigned_medium_denominator(bignum * numerator,bignum_digit_type denominator, bignum * * quotient, bignum * * remainder,int q_negative_p, int r_negative_p) { GC_BIGNUM(numerator); @@ -1153,9 +1152,12 @@ bignum_divide_unsigned_medium_denominator(bignum * numerator, return; } -void -bignum_destructive_normalization(bignum * source, bignum * target, - int shift_left) +void bignum_divide_unsigned_medium_denominator(bignum * numerator,bignum_digit_type denominator, bignum * * quotient, bignum * * remainder,int q_negative_p, int r_negative_p) +{ + vm->bignum_divide_unsigned_medium_denominator(numerator,denominator,quotient,remainder,q_negative_p,r_negative_p); +} + +void factorvm::bignum_destructive_normalization(bignum * source, bignum * target, int shift_left) { bignum_digit_type digit; bignum_digit_type * scan_source = (BIGNUM_START_PTR (source)); @@ -1178,6 +1180,11 @@ bignum_destructive_normalization(bignum * source, bignum * target, return; } +void bignum_destructive_normalization(bignum * source, bignum * target, int shift_left) +{ + return vm->bignum_destructive_normalization(source,target,shift_left); +} + void bignum_destructive_unnormalization(bignum * bignum, int shift_right) { diff --git a/vm/vm.hpp b/vm/vm.hpp index c492477db2..88cea40245 100644 --- a/vm/vm.hpp +++ b/vm/vm.hpp @@ -77,6 +77,10 @@ struct factorvm { void bignum_destructive_add(bignum * bignum, bignum_digit_type n); void bignum_destructive_scale_up(bignum * bignum, bignum_digit_type factor); void bignum_divide_unsigned_large_denominator(bignum * numerator, bignum * denominator, bignum * * quotient, bignum * * remainder, int q_negative_p, int r_negative_p); + void bignum_divide_unsigned_normalized(bignum * u, bignum * v, bignum * q); + bignum_digit_type bignum_divide_subtract(bignum_digit_type * v_start, bignum_digit_type * v_end, bignum_digit_type guess, bignum_digit_type * u_start); + void bignum_divide_unsigned_medium_denominator(bignum * numerator,bignum_digit_type denominator, bignum * * quotient, bignum * * remainder,int q_negative_p, int r_negative_p); + void bignum_destructive_normalization(bignum * source, bignum * target, int shift_left); // next method here: };