Fix sb-gmp:mpz-pow for non-bignum bases
authorChristophe Rhodes <c.rhodes@gold.ac.uk>
Fri, 6 Sep 2013 11:28:21 +0000 (12:28 +0100)
committerChristophe Rhodes <c.rhodes@gold.ac.uk>
Fri, 6 Sep 2013 11:28:21 +0000 (12:28 +0100)
Don't declare types, and we don't need the check-type either

contrib/sb-gmp/gmp.lisp
contrib/sb-gmp/tests.lisp

index 3dfefd6..283db5a 100644 (file)
@@ -449,9 +449,6 @@ be (1+ COUNT)."
         (__gmpz_tdiv_qr (addr quot) (addr rem) (addr gn) (addr gd))))))
 
 (defun mpz-pow (base exp)
-  (declare (optimize (speed 3) (space 3) (safety 0))
-           (type bignum-type base))
-  (check-type exp (unsigned-byte #.sb-vm:n-word-bits))
   (with-gmp-mpz-results (rop)
     (with-mpz-vars ((base gbase))
       (__gmpz_pow_ui (addr rop) (addr gbase) exp))))
index 4555a1d..ee3b627 100644 (file)
   (test-n-cases '/ 'mpq-div
                 (gen-mpq :limbs limbs :sign t)
                 (gen-mpq :limbs limbs :sign t)))
+
+(define-gmp-test (pow)
+  (test-one-case 'expt 'mpz-pow
+                 16 3))