From 5c93163afa8d4b00eddd401880c0bacb6d8c5d84 Mon Sep 17 00:00:00 2001 From: John Hauser Date: Thu, 11 Dec 2014 14:27:41 -0800 Subject: Update in RC for Release 3, fixing some bugs and adding to the documentation. --- source/f64_add.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'source/f64_add.c') diff --git a/source/f64_add.c b/source/f64_add.c index fcce50e..8bdb428 100644 --- a/source/f64_add.c +++ b/source/f64_add.c @@ -45,7 +45,9 @@ float64_t f64_add( float64_t a, float64_t b ) union ui64_f64 uB; uint_fast64_t uiB; bool signB; +#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2) float64_t (*magsFuncPtr)( uint_fast64_t, uint_fast64_t, bool ); +#endif uA.f = a; uiA = uA.ui; @@ -53,9 +55,17 @@ float64_t f64_add( float64_t a, float64_t b ) uB.f = b; uiB = uB.ui; signB = signF64UI( uiB ); +#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL) + if ( signA == signB ) { + return softfloat_addMagsF64( uiA, uiB, signA ); + } else { + return softfloat_subMagsF64( uiA, uiB, signA ); + } +#else magsFuncPtr = (signA == signB) ? softfloat_addMagsF64 : softfloat_subMagsF64; return (*magsFuncPtr)( uiA, uiB, signA ); +#endif } -- cgit v1.1