#include "cl_sysdep.h"
// Specification.
-#include "cl_integer.h"
+#include "cln/integer.h"
// Implementation.
#include "cl_I.h"
#include "cl_DS.h"
-uintL power2p (const cl_I& x) // x > 0
+namespace cln {
+
+uintC power2p (const cl_I& x) // x > 0
{
// Methode 1: Wenn ord2(x) = integer_length(x)-1.
// Methode 2: Wenn logand(x,x-1) = 0.
// Methode 3: Wenn das erste Digit /=0 eine Zweierpotenz ist und alle weiteren
// Digits Null sind.
if (fixnump(x))
- { var uintL x_ = FN_to_UL(x);
+ { var uintV x_ = FN_to_UV(x);
if (!((x_ & (x_-1)) == 0)) return 0; // keine Zweierpotenz
+ #if (intVsize>32)
+ integerlength64(x_,return); // Zweierpotenz: n = integer_length(x)
+ #else
integerlength32(x_,return); // Zweierpotenz: n = integer_length(x)
+ #endif
}
else
{ var const uintD* MSDptr;
if (DS_test_loop(MSDptr mspop 1,len-1,LSDptr)) return 0; // danach alles Nullen
{var uintL msdlen;
integerlengthD(msd, msdlen=);
- return intDsize*(uintL)(len-1) + msdlen; // integer_length(x) als Ergebnis
+ return intDsize*(len-1) + msdlen; // integer_length(x) als Ergebnis
}}
}
+
+} // namespace cln