]> www.ginac.de Git - cln.git/blobdiff - src/integer/conv/cl_I_from_L.cc
Extend the exponent range from 32 bits to 64 bits on selected platforms.
[cln.git] / src / integer / conv / cl_I_from_L.cc
index 119bd2252ca60980bd86bfd9b98084825814df37..9a57c277402029bf5fc7f6cc314ac48924755f52 100644 (file)
@@ -23,6 +23,12 @@ cl_private_thing cl_I_constructor_from_L (sint32 wert)
        // test enthält die Bits, die nicht in den Fixnum-Wert >= 0 reinpassen.
        if ((test == 0) || (test == (uint32)minus_bit(cl_value_len-1)))
                { return (cl_private_thing)(cl_combine(cl_FN_tag,wert)); }
+       #if (intDsize==64)
+         // trivially generate a Bignum of length one digit
+         var cl_heap_bignum* ptr = allocate_bignum(1);
+         arrayLSref(ptr->data,1,0) = wert;
+         return (cl_private_thing)(ptr);
+       #else
        // Bignum erzeugen:
        // (dessen Länge  bn_minlength <= n <= ceiling(32/intDsize)  erfüllt)
        if (bn_minlength == ceiling(32,intDsize)) {
@@ -101,6 +107,8 @@ cl_private_thing cl_I_constructor_from_L (sint32 wert)
                #endif
                #undef IF_LENGTH
        }
+       #endif
+       NOTREACHED
 }
 
 }  // namespace cln