|
40 | 40 | branches)] |
41 | 41 | [dump . ()])) |
42 | 42 |
|
43 | | -(define (check-flag-deprecated! category flag) |
| 43 | +(define (flag-deprecated? category flag) |
| 44 | + (match* (category flag) |
| 45 | + [('precision 'double) #t] |
| 46 | + [('precision 'fallback) #t] |
| 47 | + [('setup 'simplify) #t] |
| 48 | + [('generate 'better-rr) #t] |
| 49 | + [('generate 'simplify) #t] |
| 50 | + [('reduce 'simplify) #t] |
| 51 | + [('reduce 'avg-error) #t] |
| 52 | + [('localize 'costs) #t] |
| 53 | + [('localize 'errors) #t] |
| 54 | + [(_ _) #f])) |
| 55 | + |
| 56 | +; `hash-copy` returns a mutable hash, which makes `dict-update` invalid |
| 57 | +(define *flags* (make-parameter (make-immutable-hash (hash->list default-flags)))) |
| 58 | + |
| 59 | +(define (flag-set? class flag) |
| 60 | + (set-member? (dict-ref (*flags*) class) flag)) |
| 61 | + |
| 62 | +(define (enable-flag! category flag) |
| 63 | + (when (flag-deprecated? category flag) |
| 64 | + (warn-flag-deprecated! category flag)) |
| 65 | + (define (update cat-flags) |
| 66 | + (set-add cat-flags flag)) |
| 67 | + (*flags* (dict-update (*flags*) category update))) |
| 68 | + |
| 69 | +(define (disable-flag! category flag) |
| 70 | + (when (flag-deprecated? category flag) |
| 71 | + (warn-flag-deprecated! category flag)) |
| 72 | + (define (update cat-flags) |
| 73 | + (set-remove cat-flags flag)) |
| 74 | + (*flags* (dict-update (*flags*) category update))) |
| 75 | + |
| 76 | +(define (warn-flag-deprecated! category flag) |
44 | 77 | (match* (category flag) |
45 | 78 | [('precision 'double) |
46 | 79 | (eprintf "The precision:double option has been removed.\n") |
|
80 | 113 | (eprintf "See <herbie://herbie.uwplse.org/doc/~a/options.html> for more.\n" *herbie-version*)] |
81 | 114 | [(_ _) (void)])) |
82 | 115 |
|
83 | | -(define (enable-flag! category flag) |
84 | | - (check-flag-deprecated! category flag) |
85 | | - (define (update cat-flags) |
86 | | - (set-add cat-flags flag)) |
87 | | - (*flags* (dict-update (*flags*) category update))) |
88 | | - |
89 | | -(define (disable-flag! category flag) |
90 | | - (check-flag-deprecated! category flag) |
91 | | - (define (update cat-flags) |
92 | | - (set-remove cat-flags flag)) |
93 | | - (*flags* (dict-update (*flags*) category update))) |
94 | | - |
95 | | -(define (flag-set? class flag) |
96 | | - (set-member? (dict-ref (*flags*) class) flag)) |
97 | | - |
98 | | -(define (flag-deprecated? category flag) |
99 | | - (match* (category flag) |
100 | | - [('precision 'double) #t] |
101 | | - [('precision 'fallback) #t] |
102 | | - [('generate 'better-rr) #t] |
103 | | - [(_ _) #f])) |
104 | | - |
105 | | -; `hash-copy` returns a mutable hash, which makes `dict-update` invalid |
106 | | -(define *flags* (make-parameter (make-immutable-hash (hash->list default-flags)))) |
107 | | - |
108 | 116 | (define (changed-flags) |
109 | 117 | (filter identity |
110 | 118 | (for*/list ([(class flags) all-flags] |
|
130 | 138 | ;; The maximum number of consecutive skipped points for sampling valid points |
131 | 139 | (define *max-skipped-points* (make-parameter 100)) |
132 | 140 |
|
133 | | -(define *max-bsearch-bits* (make-parameter 48)) |
134 | | - |
135 | 141 | ;; Maximum MPFR precision allowed during exact evaluation |
136 | 142 | (define *max-mpfr-prec* (make-parameter 10000)) |
137 | 143 |
|
|
140 | 146 | (define *proof-max-length* (make-parameter 200)) |
141 | 147 | (define *proof-max-string-length* (make-parameter 10000)) |
142 | 148 |
|
143 | | -;; In localization, the maximum number of locations returned |
144 | | -(define *localize-expressions-limit* (make-parameter 4)) |
145 | | - |
146 | 149 | ;; How long of a Taylor series to generate; too long and we time out |
147 | 150 | (define *taylor-order-limit* (make-parameter 4)) |
148 | 151 |
|
|
175 | 178 | ;; The number of iterations for the egglog search |
176 | 179 | (define *default-egglog-iter-limit* (make-parameter 50)) |
177 | 180 |
|
| 181 | +;;; The random seed |
| 182 | + |
| 183 | +(define the-seed #f) |
| 184 | + |
| 185 | +(define (get-seed) |
| 186 | + (or the-seed (error "Seed is not set yet!"))) |
| 187 | + |
| 188 | +(define (set-seed! seed) |
| 189 | + "Reset the random number generator to a new seed" |
| 190 | + (set! the-seed seed) |
| 191 | + (if (vector? seed) |
| 192 | + (current-pseudo-random-generator (vector->pseudo-random-generator seed)) |
| 193 | + (random-seed seed))) |
| 194 | + |
178 | 195 | ;;; About Herbie: |
179 | 196 |
|
180 | 197 | (define (run-command cmd) |
|
0 commit comments