X-Git-Url: https://ginac.de/CLN/cln.git//cln.git?a=blobdiff_plain;f=src%2Ffloat%2Fffloat%2Felem%2Fcl_FF_fround.cc;h=5370001a858b9fc33a7deaa2cdbc8ac4d59c4789;hb=HEAD;hp=3af05747ed14ece8abd379d0ee0967a7cb7640e0;hpb=dd9e0f894eec7e2a8cf85078330ddc0a6639090b;p=cln.git diff --git a/src/float/ffloat/elem/cl_FF_fround.cc b/src/float/ffloat/elem/cl_FF_fround.cc index 3af0574..5370001 100644 --- a/src/float/ffloat/elem/cl_FF_fround.cc +++ b/src/float/ffloat/elem/cl_FF_fround.cc @@ -1,15 +1,17 @@ // fround(). // General includes. -#include "cl_sysdep.h" +#include "base/cl_sysdep.h" // Specification. -#include "cl_ffloat.h" +#include "cln/ffloat.h" // Implementation. -#include "cl_FF.h" +#include "float/ffloat/cl_FF.h" + +namespace cln { const cl_FF fround (const cl_FF& x) { @@ -27,9 +29,9 @@ const cl_FF fround (const cl_FF& x) { return x; } else if (uexp > FF_exp_mid+1) // e>1 ? - { var uint32 bitmask = // Bitmaske: Bit 23-e gesetzt, alle anderen gelöscht + { var uint32 bitmask = // Bitmaske: Bit 23-e gesetzt, alle anderen gelöscht bit(FF_mant_len+FF_exp_mid-uexp); - var uint32 mask = // Bitmaske: Bits 22-e..0 gesetzt, alle anderen gelöscht + var uint32 mask = // Bitmaske: Bits 22-e..0 gesetzt, alle anderen gelöscht bitmask-1; if ( ((x_ & bitmask) ==0) // Bit 23-e =0 -> abrunden || ( ((x_ & mask) ==0) // Bit 23-e =1 und Bits 22-e..0 >0 -> aufrunden @@ -37,19 +39,19 @@ const cl_FF fround (const cl_FF& x) && ((x_ & (bitmask<<1)) ==0) ) ) // abrunden - { mask |= bitmask; // Bitmaske: Bits 23-e..0 gesetzt, alle anderen gelöscht + { mask |= bitmask; // Bitmaske: Bits 23-e..0 gesetzt, alle anderen gelöscht return allocate_ffloat( x_ & ~mask ); } else // aufrunden { return allocate_ffloat ((x_ | mask) // alle diese Bits 22-e..0 setzen (Bit 23-e schon gesetzt) - + 1 // letzte Stelle erhöhen, dabei evtl. Exponenten incrementieren + + 1 // letzte Stelle erhöhen, dabei evtl. Exponenten incrementieren ); } } elif (uexp == FF_exp_mid+1) // e=1 ? - // Wie bei 1 < e <= 23, nur daß Bit 24-e stets gesetzt ist. + // Wie bei 1 < e <= 23, nur daß Bit 24-e stets gesetzt ist. { if ((x_ & bit(FF_mant_len-1)) ==0) // Bit 23-e =0 -> abrunden // abrunden { return allocate_ffloat( x_ & ~(bit(FF_mant_len)-1) ); } @@ -57,13 +59,13 @@ const cl_FF fround (const cl_FF& x) // aufrunden { return allocate_ffloat ((x_ | (bit(FF_mant_len)-1)) // alle diese Bits 23-e..0 setzen - + 1 // letzte Stelle erhöhen, dabei evtl. Exponenten incrementieren + + 1 // letzte Stelle erhöhen, dabei evtl. Exponenten incrementieren ); } } else // e=0 ? - // Wie bei 1 < e <= 23, nur daß Bit 23-e stets gesetzt - // und Bit 24-e stets gelöscht ist. + // Wie bei 1 < e <= 23, nur daß Bit 23-e stets gesetzt + // und Bit 24-e stets gelöscht ist. { if ((x_ & (bit(FF_mant_len)-1)) ==0) // abrunden von +-0.5 zu 0.0 { return cl_FF_0; } @@ -71,8 +73,10 @@ const cl_FF fround (const cl_FF& x) // aufrunden { return allocate_ffloat ((x_ | (bit(FF_mant_len)-1)) // alle Bits 22-e..0 setzen - + 1 // letzte Stelle erhöhen, dabei Exponenten incrementieren + + 1 // letzte Stelle erhöhen, dabei Exponenten incrementieren ); } } } } + +} // namespace cln