~ chicken-core (chicken-5) b6703169f41146603c9f7e3bf374dada6e7f2815
commit b6703169f41146603c9f7e3bf374dada6e7f2815
Author: Peter Bex <peter@more-magic.net>
AuthorDate: Wed Jan 13 08:43:19 2021 +0100
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Thu Jan 14 16:59:18 2021 +1300
Add second optional argument for scheme#log to types database.
Also add a (minor) specialization for this case.
Fixes #1725
Signed-off-by: Evan Hanson <evhan@foldling.org>
diff --git a/NEWS b/NEWS
index 0ef6b0b8..ed90ec42 100644
--- a/NEWS
+++ b/NEWS
@@ -19,6 +19,7 @@
- The default mode for files created by `file-open' has been changed
to 0666 (plus whatever change the effective umask applies), rather
than 0744 (see #1698).
+ - Fixed type database entry for "log" with second arg (fixes #1725).
- Runtime system
- Sleeping primordial thread doesn't forget mutations made to
diff --git a/types.db b/types.db
index f8fb0bd5..587a081f 100644
--- a/types.db
+++ b/types.db
@@ -512,10 +512,11 @@
(scheme#exp (#(procedure #:clean #:enforce #:foldable) scheme#exp (number) (or float cplxnum))
((float) (float) (##core#inline_allocate ("C_a_i_flonum_exp" 4) #(1))))
-(scheme#log (#(procedure #:clean #:enforce #:foldable) scheme#log (number) (or float cplxnum))
+(scheme#log (#(procedure #:clean #:enforce #:foldable) scheme#log (number #!optional number) (or float cplxnum))
;; Unfortunately this doesn't work when the argument is negative
;;((float) (float) (##core#inline_allocate ("C_a_i_flonum_log" 4) #(1)))
- ((*) (##sys#log-1 #(1))))
+ ((*) (##sys#log-1 #(1)))
+ ((* *) (##sys#/-2 (##sys#log-1 #(1)) (##sys#log-1 #(2)))))
(scheme#expt (#(procedure #:clean #:enforce #:foldable) scheme#expt (number number) number)
;; This breaks in some extreme edge cases... Worth disabling?
Trap