~ 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