diff --git a/mats/fl.ms b/mats/fl.ms index 8a06277a3e..dc882a4dd0 100644 --- a/mats/fl.ms +++ b/mats/fl.ms @@ -1105,4 +1105,16 @@ (bytevector-ieee-double-native-set! bv 0 (fl+ v 0.1)) (fl* v 0.99))))) + (begin + (define many-compare + (lambda (a b c d e f g h i j k) + (fl<= a b c d e f g h i j k))) + (many-compare 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0)) + + (begin + (define many-add + (lambda (a b c d e f g h i j k) + (fl+ a b c d e f g h i j k))) + (fl= 66.0 (many-add 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0))) + ) diff --git a/s/cpnanopass.ss b/s/cpnanopass.ss index 32e10b499d..643c7ad191 100644 --- a/s/cpnanopass.ss +++ b/s/cpnanopass.ss @@ -7667,14 +7667,18 @@ ,(build-fl= e1) ,(build-libcall #t src sexpr op e1 e1))))] [(e1 e2) (build-bind-and-check src sexpr op e1 e2 (builder args ...))] - [(e1 e2 . e*) (build-check-fp-arguments (cons* e1 e2 e*) - (lambda (e1 e2) (build-libcall #t src sexpr op e1 e2)) - (lambda (e1 e2 . e*) (reducer src sexpr moi e1 e2 e*)))]) + [(e1 e2 . e*) (and + (fx<= (length e*) (fx- inline-args-limit 2)) + (build-check-fp-arguments (cons* e1 e2 e*) + (lambda (e1 e2) (build-libcall #t src sexpr op e1 e2)) + (lambda (e1 e2 . e*) (reducer src sexpr moi e1 e2 e*))))]) (define-inline 2 r6rs:op [(e1 e2) (build-bind-and-check src sexpr r6rs:op e1 e2 (builder args ...))] - [(e1 e2 . e*) (build-check-fp-arguments (cons* e1 e2 e*) - (lambda (e1 e2) (build-libcall #t src sexpr r6rs:op e1 e2)) - (lambda (e1 e2 . e*) (reducer src sexpr moi e1 e2 e*)))])))]))) + [(e1 e2 . e*) (and + (fx<= (length e*) (fx- inline-args-limit 2)) + (build-check-fp-arguments (cons* e1 e2 e*) + (lambda (e1 e2) (build-libcall #t src sexpr r6rs:op e1 e2)) + (lambda (e1 e2 . e*) (reducer src sexpr moi e1 e2 e*))))])))]))) (define-fl-cmp-inline fl= fl=? build-fl= #f #f) (define-fl-cmp-inline fl< fl