From a7030e12c709f9524636e2a414a70228c5484d89 Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Wed, 13 Jan 2021 08:43:19 +0100 Subject: [PATCH] Add second optional argument for scheme#log to types database. Also add a (minor) specialization for this case. Fixes #1725 --- NEWS | 1 + types.db | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 50d90cd2..6ff0a6db 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 ff88d1f3..a0cd03b3 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? -- 2.20.1