7 #include "cln/integer.h"
12 #include "cln/integer.h"
14 #include "cl_I_byte.h"
18 cl_boolean ldb_test (const cl_I& n, const cl_byte& b)
21 // (ldb-test (byte s p) n)
24 // l:=(integer-length n)
25 // Falls l <= p : Falls n>=0, =0, denn Bits p+s-1..p sind =0.
26 // Falls n<0, /=0, denn Bits p+s-1..p sind =1.
28 // Falls p+s>l, /=0, denn bei n>=0 ist Bit l-1 =1,
29 // und bei n<0 sind Bits p+s-1..l =1.
31 // extrahiere die Bits p,...,p+s-1 von n und teste sie.
33 var uintL p = b.position;
34 if (s==0) return cl_false;
35 var uintL l = integer_length(n); // l = (integer-length n)
39 return cl_false; // n>=0
41 return cl_true; // n<0
47 // Bits p,...,q-1 mit q = min(p+s,l) = p+s extrahieren und testen:
48 return ldb_extract_test(n,p,ps);