~ chicken-core (chicken-5) dada13de386167ed89e1e3fe622a603ee17e45f5


commit dada13de386167ed89e1e3fe622a603ee17e45f5
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Mon Sep 19 12:46:06 2011 +0200
Commit:     Christian Kellermann <ckeen@pestilenz.org>
CommitDate: Tue Sep 20 11:40:43 2011 +0200

    Added specialization rules for "expt" and "atan" with mixed
    fixnum/float arguments.
    
    Squashed commit of the following:
    
    commit b70229f600e1097457451af40421a0101a2fa1c7
    Author: felix <felix@call-with-current-continuation.org>
    Date:   Mon Sep 19 12:28:36 2011 +0200
    
        specialization for atan/2 in mixed fixnum/flonum case
    
    commit 25d48ad53502076d91dc09e35d14fbf0f0eb451b
    Author: felix <felix@call-with-current-continuation.org>
    Date:   Mon Sep 19 09:19:32 2011 +0200
    
        specializations for expt in mixed flonum/fixnum case
    
    Signed-off-by: Christian Kellermann <ckeen@pestilenz.org>

diff --git a/types.db b/types.db
index a9f292d4..de03b3c4 100644
--- a/types.db
+++ b/types.db
@@ -429,7 +429,15 @@
 
 (expt (#(procedure #:clean #:enforce) expt (number number) number)
       ((float float) (float)
-       (##core#inline_allocate ("C_a_i_flonum_expt" 4) #(1) #(2))))
+       (##core#inline_allocate ("C_a_i_flonum_expt" 4) #(1) #(2)))
+      ((float fixnum) (float)
+       (##core#inline_allocate ("C_a_i_flonum_expt" 4) 
+			       #(1)
+			       (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(2))))
+      ((fixnum float) (float)
+       (##core#inline_allocate ("C_a_i_flonum_expt" 4)
+			       (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(1))
+			       #(2))))
 
 (sqrt (#(procedure #:clean #:enforce) sqrt (number) float)
       ((float) (##core#inline_allocate ("C_a_i_flonum_sqrt" 4) #(1))))
@@ -451,6 +459,14 @@
 
 (atan (#(procedure #:clean #:enforce) atan (number #!optional number) float)
       ((float) (##core#inline_allocate ("C_a_i_flonum_atan" 4) #(1)))
+      ((float fixnum)
+       (##core#inline_allocate ("C_a_i_flonum_atan2" 4) 
+			       #(1)
+			       (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(2))))
+      ((fixnum float)
+       (##core#inline_allocate ("C_a_i_flonum_atan2" 4) 
+			       (##core#inline_allocate ("C_a_i_fix_to_flo" 4) #(2))
+			       #(2)))
       ((float float) (##core#inline_allocate ("C_a_i_flonum_atan2" 4) #(1))))
 
 (number->string (#(procedure #:clean #:enforce) number->string (number #!optional number) string)
Trap