fix bad attempt to speed up rational comparisons, as well as th egap in the test suite
svn: r5472
This commit is contained in:
parent
3946c25fd9
commit
f31128cf11
|
@ -138,10 +138,10 @@ exec mzscheme -qu "$0" ${1+"$@"}
|
|||
extract-mzscheme-times
|
||||
clean-up-nothing
|
||||
'())
|
||||
(make-impl 'mzscheme3m
|
||||
(make-impl 'mzschemecgc
|
||||
mk-mzscheme
|
||||
(lambda (bm)
|
||||
(system (format "mzscheme3m -qu ~a.ss" bm)))
|
||||
(system (format "mzschemecgc -qu ~a.ss" bm)))
|
||||
extract-mzscheme-times
|
||||
clean-up-nothing
|
||||
'())
|
||||
|
@ -161,10 +161,10 @@ exec mzscheme -qu "$0" ${1+"$@"}
|
|||
extract-mzscheme-times
|
||||
clean-up-nothing
|
||||
'())
|
||||
(make-impl 'mzscheme3m-tl
|
||||
(make-impl 'mzschemecgc-tl
|
||||
mk-mzscheme-tl
|
||||
(lambda (bm)
|
||||
(system (format "mzscheme3m -qr compiled/~a.zo" bm)))
|
||||
(system (format "mzschemecgc -qr compiled/~a.zo" bm)))
|
||||
extract-mzscheme-times
|
||||
clean-up-zo
|
||||
'(nucleic2))
|
||||
|
@ -193,7 +193,7 @@ exec mzscheme -qu "$0" ${1+"$@"}
|
|||
clean-up-fasl
|
||||
'(maze))))
|
||||
|
||||
(define obsolte-impls '(mzscheme mzscheme-j mzscheme3m-tl mzc))
|
||||
(define obsolte-impls '(mzscheme mzscheme-j mzschemecgc-tl mzc))
|
||||
|
||||
(define benchmarks
|
||||
'(conform
|
||||
|
|
|
@ -22,11 +22,11 @@
|
|||
("nestedloop.ss" "18")
|
||||
("nsieve.ss")
|
||||
("nsievebits.ss")
|
||||
("partialsums.ss")
|
||||
("partialsums.ss" "2500000")
|
||||
("pidigits.ss")
|
||||
("pidigits1.ss")
|
||||
("random.ss" "900000")
|
||||
("recursive.ss")
|
||||
("recursive.ss" "11")
|
||||
("regexmatch.ss")
|
||||
("regexpdna.ss")
|
||||
("reversecomplement.ss" #f ,(lambda () (mk-revcomp-input)))
|
||||
|
|
|
@ -193,6 +193,7 @@
|
|||
|
||||
(test-compare 0.5 1.2 2.3)
|
||||
(test-compare 2/5 1/2 2/3)
|
||||
(test-compare 1/4 1/3 1/2)
|
||||
(test #t = 1/2 2/4)
|
||||
(test #f = 2/3 2/5)
|
||||
(test #f = 2/3 2/500000000000000000000000000)
|
||||
|
|
|
@ -200,31 +200,19 @@ static int rational_lt(const Scheme_Object *a, const Scheme_Object *b, int or_eq
|
|||
Scheme_Rational *rb = (Scheme_Rational *)b;
|
||||
Scheme_Object *ma, *mb;
|
||||
|
||||
#if 0
|
||||
/* Avoid multiplication in simple cases: */
|
||||
if (scheme_bin_lt_eq(ra->num, rb->num)
|
||||
&& scheme_bin_gt_eq(ra->denom, rb->denom)) {
|
||||
if (!or_eq) {
|
||||
if (scheme_rational_eq(a, b))
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
} else
|
||||
#endif
|
||||
if (or_eq) {
|
||||
if (scheme_rational_eq(a, b))
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Checking only for lt at this point */
|
||||
|
||||
ma = scheme_bin_mult(ra->num, rb->denom);
|
||||
mb = scheme_bin_mult(rb->num, ra->denom);
|
||||
|
||||
if (SCHEME_INTP(ma) && SCHEME_INTP(mb)) {
|
||||
return (SCHEME_INT_VAL(ma) < SCHEME_INT_VAL(mb));
|
||||
if (or_eq)
|
||||
return (SCHEME_INT_VAL(ma) <= SCHEME_INT_VAL(mb));
|
||||
else
|
||||
return (SCHEME_INT_VAL(ma) < SCHEME_INT_VAL(mb));
|
||||
} else if (SCHEME_BIGNUMP(ma) && SCHEME_BIGNUMP(mb)) {
|
||||
return scheme_bignum_lt(ma, mb);
|
||||
if (or_eq)
|
||||
return scheme_bignum_le(ma, mb);
|
||||
else
|
||||
return scheme_bignum_lt(ma, mb);
|
||||
} else if (SCHEME_BIGNUMP(mb)) {
|
||||
return SCHEME_BIGPOS(mb);
|
||||
} else
|
||||
|
|
Loading…
Reference in New Issue
Block a user