From 3b4ed64ded63c285bcd6a4fadc43c4d8c1b81ee2 Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Sat, 14 Jul 2012 23:22:25 +0200 Subject: [PATCH] (EXPT FIXNUM INTEGER) was inferred to be of type FIXNUM. --- src/cmp/cmpnum.lsp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/cmp/cmpnum.lsp b/src/cmp/cmpnum.lsp index d832e88d7..f7b6d8940 100644 --- a/src/cmp/cmpnum.lsp +++ b/src/cmp/cmpnum.lsp @@ -219,13 +219,16 @@ (def-type-propagator expt (fname base exponent) ;; Rules: - ;; (expt number-type integer) -> number-type + ;; (expt fixnum integer) -> integer + ;; (expt number-type integer) -> number-type ;; (expt number-type1 number-type2) -> (max-float number-type1 number-type2) ;; (let ((exponent (ensure-real-type exponent))) (values (list base exponent) (cond ((eql exponent 'integer) - base) + (if (subtypep base 'fixnum) + 'integer + base)) ((type>= '(real 0 *) base) (let* ((exponent (ensure-nonrational-type exponent))) (maximum-number-type exponent base)))