truncate-aux.lsp 3.62 KB
 pfdietz committed Aug 20, 2003 1 2 3 4 5 ``````;-*- Mode: Lisp -*- ;;;; Author: Paul Dietz ;;;; Created: Wed Aug 20 05:15:17 2003 ;;;; Contains: Aux. functions associated with tests of TRUNCATE `````` Daniel Kochmański committed Sep 01, 2015 6 `````` `````` pfdietz committed Aug 20, 2003 7 8 9 `````` (defun truncate.1-fn () (loop for n = (- (random 2000000000) `````` sds committed Aug 12, 2009 10 11 12 13 14 15 16 17 18 19 20 21 22 `````` 1000000000) for d = (1+ (random 10000)) for vals = (multiple-value-list (truncate n d)) for (q r) = vals for n2 = (+ (* q d) r) repeat 1000 unless (and (eql (length vals) 2) (integerp q) (= n n2) (integerp r) (if (>= n 0) (< -1 r d) (< (- d) r 1))) collect (list n d q r n2))) `````` pfdietz committed Aug 20, 2003 23 24 25 `````` (defun truncate.2-fn () (loop for num = (random 1000000000) `````` sds committed Aug 12, 2009 26 27 28 29 30 31 32 33 34 35 36 37 38 `````` for denom = (1+ (random 1000)) for n = (/ num denom) for d = (1+ (random 10000)) for vals = (multiple-value-list (truncate n d)) for (q r) = vals for n2 = (+ (* q d) r) repeat 1000 unless (and (eql (length vals) 2) (integerp q) (<= 0 r) (< r d) (= n n2)) collect (list n d q r n2))) `````` pfdietz committed Aug 20, 2003 39 40 41 `````` (defun truncate.3-fn (width) (loop for n = (- (random width) (/ width 2)) `````` sds committed Aug 12, 2009 42 43 44 45 46 47 48 49 50 51 52 53 `````` for vals = (multiple-value-list (truncate n)) for (q r) = vals for n2 = (+ q r) repeat 1000 unless (and (eql (length vals) 2) (integerp q) (= n n2) (if (>= n 0) (and (<= 0 r) (< r 1)) (and (< -1 r) (<= r 0))) ) collect (list n q r n2))) `````` pfdietz committed Aug 20, 2003 54 55 56 `````` (defun truncate.7-fn () (loop for numerator = (- (random 10000000000) 5000000000) `````` sds committed Aug 12, 2009 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 `````` for denominator = (1+ (random 100000)) for n = (/ numerator denominator) for vals = (multiple-value-list (truncate n)) for (q r) = vals for n2 = (+ q r) repeat 1000 unless (and (eql (length vals) 2) (integerp q) (rationalp r) (= n n2) (if (>= n 0) (and (<= 0 r) (< r 1)) (and (< -1 r) (<= r 0))) ) collect (list n q r n2))) `````` pfdietz committed Aug 20, 2003 72 73 74 `````` (defun truncate.8-fn () (loop for num1 = (- (random 10000000000) 5000000000) `````` sds committed Aug 12, 2009 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 `````` for den1 = (1+ (random 100000)) for n = (/ num1 den1) for num2 = (- (1+ (random 1000000))) for den2 = (1+ (random 1000000)) for d = (/ num2 den2) for vals = (multiple-value-list (truncate n d)) for (q r) = vals for n2 = (+ (* q d) r) repeat 1000 unless (and (eql (length vals) 2) (integerp q) (rationalp r) (if (> n 0) (and (<= 0 r) (< r (- d))) (and (>= 0 r) (> r d))) (= n n2)) collect (list n q d r n2))) `````` pfdietz committed Aug 20, 2003 92 93 94 `````` (defun truncate.9-fn () (loop for num1 = (- (random 1000000000000000) 500000000000000) `````` sds committed Aug 12, 2009 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 `````` for den1 = (1+ (random 10000000000)) for n = (/ num1 den1) for num2 = (- (1+ (random 1000000000))) for den2 = (1+ (random 10000000)) for d = (/ num2 den2) for vals = (multiple-value-list (truncate n d)) for (q r) = vals for n2 = (+ (* q d) r) repeat 1000 unless (and (eql (length vals) 2) (integerp q) (rationalp r) (if (> n 0) (and (<= 0 r) (< r (- d))) (and (>= 0 r) (> r d))) (= n n2)) collect (list n q d r n2))) `````` pfdietz committed Aug 20, 2003 112 113 `````` ``````