]> www.ginac.de Git - cln.git/blobdiff - src/float/dfloat/elem/cl_DF_fround.cc
Fix some conversions to cl_SF, cl_FF, and cl_DF.
[cln.git] / src / float / dfloat / elem / cl_DF_fround.cc
index 64fd2a7d0a7be34f8a00ddadd836b82ba116ea7f..683871e0ef7cb1519fd714caa76e569f18447679 100644 (file)
@@ -1,15 +1,17 @@
 // fround().
 
 // General includes.
-#include "cl_sysdep.h"
+#include "base/cl_sysdep.h"
 
 // Specification.
-#include "cl_dfloat.h"
+#include "cln/dfloat.h"
 
 
 // Implementation.
 
-#include "cl_DF.h"
+#include "float/dfloat/cl_DF.h"
+
+namespace cln {
 
 const cl_DF fround (const cl_DF& x)
 {
@@ -28,9 +30,9 @@ const cl_DF fround (const cl_DF& x)
             { return x; }
             else
             if (uexp > DF_exp_mid+1) // e>1 ?
-              { var uint64 bitmask = // Bitmaske: Bit 52-e gesetzt, alle anderen gelöscht
+              { var uint64 bitmask = // Bitmaske: Bit 52-e gesetzt, alle anderen gelöscht
                   bit(DF_mant_len+DF_exp_mid-uexp);
-                var uint64 mask = // Bitmaske: Bits 51-e..0 gesetzt, alle anderen gelöscht
+                var uint64 mask = // Bitmaske: Bits 51-e..0 gesetzt, alle anderen gelöscht
                   bitmask-1;
                 if ( ((x_ & bitmask) ==0) // Bit 52-e =0 -> abrunden
                      || ( ((x_ & mask) ==0) // Bit 52-e =1 und Bits 51-e..0 >0 -> aufrunden
@@ -38,19 +40,19 @@ const cl_DF fround (const cl_DF& x)
                           && ((x_ & (bitmask<<1)) ==0)
                    )    )
                   // abrunden
-                  { mask |= bitmask; // Bitmaske: Bits 52-e..0 gesetzt, alle anderen gelöscht
+                  { mask |= bitmask; // Bitmaske: Bits 52-e..0 gesetzt, alle anderen gelöscht
                     return allocate_dfloat( x_ & ~mask );
                   }
                   else
                   // aufrunden
                   { return allocate_dfloat
                       ((x_ | mask) // alle diese Bits 51-e..0 setzen (Bit 52-e schon gesetzt)
-                       + 1 // letzte Stelle erhöhen, dabei evtl. Exponenten incrementieren
+                       + 1 // letzte Stelle erhöhen, dabei evtl. Exponenten incrementieren
                       );
                   }
               }
             elif (uexp == DF_exp_mid+1) // e=1 ?
-              // Wie bei 1 < e <= 52, nur daß Bit 53-e stets gesetzt ist.
+              // Wie bei 1 < e <= 52, nur daß Bit 53-e stets gesetzt ist.
               { if ((x_ & bit(DF_mant_len-1)) ==0) // Bit 52-e =0 -> abrunden
                   // abrunden
                   { return allocate_dfloat( x_ & ~(bit(DF_mant_len)-1) ); }
@@ -58,13 +60,13 @@ const cl_DF fround (const cl_DF& x)
                   // aufrunden
                   { return allocate_dfloat
                       ((x_ | (bit(DF_mant_len)-1)) // alle diese Bits 52-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 <= 52, nur daß Bit 52-e stets gesetzt
-              // und Bit 53-e stets gelöscht ist.
+              // Wie bei 1 < e <= 52, nur daß Bit 52-e stets gesetzt
+              // und Bit 53-e stets gelöscht ist.
               { if ((x_ & (bit(DF_mant_len)-1)) ==0)
                   // abrunden von +-0.5 zu 0.0
                   { return cl_DF_0; }
@@ -72,7 +74,7 @@ const cl_DF fround (const cl_DF& x)
                   // aufrunden
                   { return allocate_dfloat
                       ((x_ | (bit(DF_mant_len)-1)) // alle Bits 51-e..0 setzen
-                       + 1 // letzte Stelle erhöhen, dabei Exponenten incrementieren
+                       + 1 // letzte Stelle erhöhen, dabei Exponenten incrementieren
                       );
               }   }
         }
@@ -88,9 +90,9 @@ const cl_DF fround (const cl_DF& x)
             else
             if (uexp > DF_exp_mid+1) // e>1 ?
               { if (uexp > DF_exp_mid+DF_mant_len-32) // e > 20 ?
-                  { var uint32 bitmask = // Bitmaske: Bit 52-e gesetzt, alle anderen gelöscht
+                  { var uint32 bitmask = // Bitmaske: Bit 52-e gesetzt, alle anderen gelöscht
                       bit(DF_mant_len+DF_exp_mid-uexp);
-                    var uint32 mask = // Bitmaske: Bits 51-e..0 gesetzt, alle anderen gelöscht
+                    var uint32 mask = // Bitmaske: Bits 51-e..0 gesetzt, alle anderen gelöscht
                       bitmask-1;
                     if ( ((mlo & bitmask) ==0) // Bit 52-e =0 -> abrunden
                          || ( ((mlo & mask) ==0) // Bit 52-e =1 und Bits 51-e..0 >0 -> aufrunden
@@ -100,21 +102,21 @@ const cl_DF fround (const cl_DF& x)
                                     : ((mlo & (bitmask<<1)) ==0)
                        )    )    )
                       // abrunden
-                      { mask |= bitmask; // Bitmaske: Bits 52-e..0 gesetzt, alle anderen gelöscht
+                      { mask |= bitmask; // Bitmaske: Bits 52-e..0 gesetzt, alle anderen gelöscht
                         return allocate_dfloat(semhi, mlo & ~mask );
                       }
                       else
                       // aufrunden
                       { mlo = (mlo | mask) // alle diese Bits 51-e..0 setzen (Bit 52-e schon gesetzt)
-                              + 1; // letzte Stelle erhöhen,
+                              + 1; // letzte Stelle erhöhen,
                         if (mlo==0) { semhi += 1; } // dabei evtl. Exponenten incrementieren
                         return allocate_dfloat(semhi,mlo);
                       }
                   }
                   else
-                  { var uint32 bitmask = // Bitmaske: Bit 20-e gesetzt, alle anderen gelöscht
+                  { var uint32 bitmask = // Bitmaske: Bit 20-e gesetzt, alle anderen gelöscht
                       bit(DF_mant_len+DF_exp_mid-32-uexp);
-                    var uint32 mask = // Bitmaske: Bits 19-e..0 gesetzt, alle anderen gelöscht
+                    var uint32 mask = // Bitmaske: Bits 19-e..0 gesetzt, alle anderen gelöscht
                       bitmask-1;
                     if ( ((semhi & bitmask) ==0) // Bit 52-e =0 -> abrunden
                          || ( (mlo==0) && ((semhi & mask) ==0) // Bit 52-e =1 und Bits 51-e..0 >0 -> aufrunden
@@ -122,21 +124,21 @@ const cl_DF fround (const cl_DF& x)
                               && ((semhi & (bitmask<<1)) ==0)
                        )    )
                       // abrunden
-                      { mask |= bitmask; // Bitmaske: Bits 20-e..0 gesetzt, alle anderen gelöscht
+                      { mask |= bitmask; // Bitmaske: Bits 20-e..0 gesetzt, alle anderen gelöscht
                         return allocate_dfloat( semhi & ~mask, 0 );
                       }
                       else
                       // aufrunden
                       { return allocate_dfloat
                           ((semhi | mask) // alle diese Bits 19-e..0 setzen (Bit 20-e schon gesetzt)
-                           + 1, // letzte Stelle erhöhen, dabei evtl. Exponenten incrementieren
+                           + 1, // letzte Stelle erhöhen, dabei evtl. Exponenten incrementieren
                            0
                           );
                       }
                   }
               }
             elif (uexp == DF_exp_mid+1) // e=1 ?
-              // Wie bei 1 < e <= 20, nur daß Bit 53-e stets gesetzt ist.
+              // Wie bei 1 < e <= 20, nur daß Bit 53-e stets gesetzt ist.
               { if ((semhi & bit(DF_mant_len-32-1)) ==0) // Bit 52-e =0 -> abrunden
                   // abrunden
                   { return allocate_dfloat( semhi & ~(bit(DF_mant_len-32)-1) , 0 ); }
@@ -144,14 +146,14 @@ const cl_DF fround (const cl_DF& x)
                   // aufrunden
                   { return allocate_dfloat
                       ((semhi | (bit(DF_mant_len-32)-1)) // alle diese Bits 52-e..0 setzen
-                       + 1, // letzte Stelle erhöhen, dabei evtl. Exponenten incrementieren
+                       + 1, // letzte Stelle erhöhen, dabei evtl. Exponenten incrementieren
                        0
                       );
                   }
               }
             else // e=0 ?
-              // Wie bei 1 < e <= 20, nur daß Bit 52-e stets gesetzt
-              // und Bit 53-e stets gelöscht ist.
+              // Wie bei 1 < e <= 20, nur daß Bit 52-e stets gesetzt
+              // und Bit 53-e stets gelöscht ist.
               { if ((mlo==0) && ((semhi & (bit(DF_mant_len-32)-1)) ==0))
                   // abrunden von +-0.5 zu 0.0
                   { return cl_DF_0; }
@@ -159,10 +161,12 @@ const cl_DF fround (const cl_DF& x)
                   // aufrunden
                   { return allocate_dfloat
                       ((semhi | (bit(DF_mant_len-32)-1)) // alle Bits 51-e..0 setzen
-                       + 1, // letzte Stelle erhöhen, dabei Exponenten incrementieren
+                       + 1, // letzte Stelle erhöhen, dabei Exponenten incrementieren
                        0
                       );
               }   }
         }
 #endif
 }
+
+}  // namespace cln