diff --git a/scheme/ikarus.numerics.ss b/scheme/ikarus.numerics.ss index 4ee6aea..5b30091 100644 --- a/scheme/ikarus.numerics.ss +++ b/scheme/ikarus.numerics.ss @@ -338,10 +338,19 @@ (foreign-call "ikrt_fl_exp" x ($make-flonum)) (die 'flexp "not a flonum" x))) - (define (fllog x) - (if (flonum? x) - (foreign-call "ikrt_fl_log" x) - (die 'fllog "not a flonum" x))) + (define fllog + (case-lambda + [(x) + (if (flonum? x) + (foreign-call "ikrt_fl_log" x) + (die 'fllog "not a flonum" x))] + [(x y) + (if (flonum? x) + (if (flonum? y) + (fl/ (foreign-call "ikrt_fl_log" x) + (foreign-call "ikrt_fl_log" y)) + (die 'fllog "not a flonum" y)) + (die 'fllog "not a flonum" x))])) (define (flexpt x y) (if (flonum? x) diff --git a/scheme/last-revision b/scheme/last-revision index 41cf401..f805915 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1569 +1571 diff --git a/scheme/psyntax.expander.ss b/scheme/psyntax.expander.ss index 013be17..58f6967 100644 --- a/scheme/psyntax.expander.ss +++ b/scheme/psyntax.expander.ss @@ -3262,10 +3262,11 @@ (else (cons (car ls) (remove-dups (cdr ls)))))) (define (parse-library-name spec) (define (subversion? x) - (and (integer? x) (exact? x) (>= x 0))) + (let ([x (syntax->datum x)]) + (and (integer? x) (exact? x) (>= x 0)))) (define (subversion-pred x*) (syntax-match x* () - [n (subversion? (syntax->datum n)) + [n (subversion? n) (lambda (x) (= x (syntax->datum n)))] [(p? sub* ...) (eq? (syntax->datum p?) 'and) (let ([p* (map subversion-pred sub*)]) @@ -3280,9 +3281,10 @@ (lambda (x) (not (p x))))] [(p? n) - (and (eq? (syntax->datum p?) '<=) (subversion? (syntax->datum n))) + (and (eq? (syntax->datum p?) '<=) (subversion? n)) (lambda (x) (<= x (syntax->datum n)))] - [(p? n) (and (eq? (syntax->datum p?) '>=) (subversion? n)) + [(p? n) + (and (eq? (syntax->datum p?) '>=) (subversion? n)) (lambda (x) (>= x (syntax->datum n)))] [_ (syntax-violation 'import "invalid sub-version spec" spec x*)])) (define (version-pred x*)