Skip to content

Commit 6aa9646

Browse files
committed
Cleanup
1 parent 9ca0b69 commit 6aa9646

File tree

3 files changed

+17
-29
lines changed

3 files changed

+17
-29
lines changed

ops/core.rkt

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,12 @@
121121
(define (ival-hi-fixed? ival)
122122
(endpoint-immovable? (ival-hi ival)))
123123

124+
(define (make-endpoint-pair)
125+
(values (mpfr-new! (bf-precision)) (mpfr-new! (bf-precision))))
126+
124127
(define (new-ival)
125128
; Warning, leaks memory unless `mpfr-clear!` called eventually
126-
(define bf1 (mpfr-new! (bf-precision)))
127-
(define bf2 (mpfr-new! (bf-precision)))
129+
(define-values (bf1 bf2) (make-endpoint-pair))
128130
(ival (endpoint bf1 #f) (endpoint bf2 #f) #f #f))
129131

130132
(define (mk-big-ival x y)
@@ -147,15 +149,13 @@
147149
(ormap identity as))
148150

149151
(define (ival-pi)
150-
(define lo (mpfr-new! (bf-precision)))
151-
(define hi (mpfr-new! (bf-precision)))
152+
(define-values (lo hi) (make-endpoint-pair))
152153
(mpfr-const-pi! lo 'down)
153154
(mpfr-const-pi! hi 'up)
154155
(ival (endpoint lo #f) (endpoint hi #f) #f #f))
155156

156157
(define (ival-e)
157-
(define lo (mpfr-new! (bf-precision)))
158-
(define hi (mpfr-new! (bf-precision)))
158+
(define-values (lo hi) (make-endpoint-pair))
159159
(mpfr-exp! lo 1.bf 'down)
160160
(mpfr-exp! hi 1.bf 'up)
161161
(ival (endpoint lo #f) (endpoint hi #f) #f #f))
@@ -345,8 +345,7 @@
345345
[1 ((monotonic-mpfr mpfr-abs!) x)]
346346
[0
347347
(match-define (ival (endpoint xlo xlo!) (endpoint xhi xhi!) xerr? xerr) x)
348-
(define tmp1 (mpfr-new! (bf-precision)))
349-
(define tmp2 (mpfr-new! (bf-precision)))
348+
(define-values (tmp1 tmp2) (make-endpoint-pair))
350349
(define abs-lo (epunary! tmp1 mpfr-abs! (ival-lo x) 'up))
351350
(define abs-hi (epunary! tmp2 mpfr-abs! (ival-hi x) 'up))
352351
(ival (endpoint (bf 0) (and xlo! xhi!)) (endpoint-max2 abs-lo abs-hi 'nearest) xerr? xerr)]))
@@ -355,20 +354,17 @@
355354
(define (ival-max-prec x)
356355
(max (bigfloat-precision (ival-lo-val x)) (bigfloat-precision (ival-hi-val x))))
357356

358-
;; TODO: Cleanup, use begin1
359357
(define (ival-exact-fabs x)
360358
(define saved-prec (bf-precision))
361359
(bf-precision (ival-max-prec x))
362-
(define result (ival-fabs x))
363-
(bf-precision saved-prec)
364-
result)
360+
(begin0 (ival-fabs x)
361+
(bf-precision saved-prec)))
365362

366363
(define (ival-exact-neg x)
367364
(define saved-prec (bf-precision))
368365
(bf-precision (ival-max-prec x))
369-
(define result (ival-neg x))
370-
(bf-precision saved-prec)
371-
result)
366+
(begin0 (ival-neg x)
367+
(bf-precision saved-prec)))
372368

373369
;; Since MPFR has a cap on exponents, no value can be more than twice MAX_VAL
374370
(define exp-overflow-threshold (bfadd (bflog (bfprev +inf.bf)) 1.bf))
@@ -422,8 +418,7 @@
422418
(define err (or (ival-err x) (ival-err y)))
423419

424420
(define (mkatan a b c d)
425-
(define lo-out (mpfr-new! (bf-precision)))
426-
(define hi-out (mpfr-new! (bf-precision)))
421+
(define-values (lo-out hi-out) (make-endpoint-pair))
427422
(ival (epbinary! lo-out mpfr-atan2! a b 'down) (epbinary! hi-out mpfr-atan2! c d 'up) err? err))
428423

429424
(match* ((classify-ival-strict x) (classify-ival-strict y))
@@ -436,8 +431,7 @@
436431
[(-1 1) (mkatan yhi xhi ylo xlo)]
437432
[(_ 0)
438433
(define pi-int (ival-pi))
439-
(define hi-out (mpfr-new! (bf-precision)))
440-
(define lo-out (mpfr-new! (bf-precision)))
434+
(define-values (hi-out lo-out) (make-endpoint-pair))
441435
(mpfr-set! hi-out (endpoint-val (ival-hi pi-int)) 'up)
442436
(mpfr-neg! lo-out (endpoint-val (ival-hi pi-int)) 'down)
443437
(ival (endpoint lo-out #f)

ops/pow.rkt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@
5656
;; Can't use >=, even though exp2-overflow-threshold is a
5757
;; power of 2, because mpfr-exp is offset by 1 from the real
5858
;; exponent, which matters when we add them.
59+
60+
(define log2-base (mpfr-new! (bf-precision)))
5961
(define (log2-sum-exceeds-threshold? exponent-value base-value)
60-
(let ([log2-base (mpfr-new! (bf-precision))])
61-
(mpfr-log2! log2-base base-value 'zero)
62-
(> (+ (mpfr-exp exponent-value) (mpfr-exp log2-base))
63-
(mpfr-exp exp2-overflow-threshold))))
62+
(mpfr-log2! log2-base base-value 'zero)
63+
(> (+ (mpfr-exp exponent-value) (mpfr-exp log2-base)) (mpfr-exp exp2-overflow-threshold)))
6464

6565
(define must-overflow
6666
(and (bfinfinite? hi) (= (* x-class y-class) 1) (log2-sum-exceeds-threshold? bval aval)))

ops/trig.rkt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@
105105
['range-reduce
106106
(define prec (range-reduce-precision xlo xhi))
107107
(define divisor-bf (mpfr-new! prec))
108-
(mpfr-set-prec! divisor-bf prec)
109108
(mpfr-set! divisor-bf (bf (/ n 2)) 'nearest)
110109
(match-define (ival (endpoint a _) (endpoint b _) _ _) (range-reduce-floor x divisor-bf prec))
111110
(define (mpfr-cosu-n! out a rnd)
@@ -145,7 +144,6 @@
145144
['range-reduce
146145
(define prec (range-reduce-precision xlo xhi))
147146
(define pi-bf (mpfr-new! prec))
148-
(mpfr-set-prec! pi-bf prec)
149147
(mpfr-const-pi! pi-bf 'nearest)
150148
(match-define (ival (endpoint a _) (endpoint b _) _ _) (range-reduce-floor x pi-bf prec))
151149
(cond
@@ -177,7 +175,6 @@
177175
['range-reduce
178176
(define prec (range-reduce-precision xlo xhi))
179177
(define divisor-bf (mpfr-new! prec))
180-
(mpfr-set-prec! divisor-bf prec)
181178
(mpfr-set! divisor-bf (bf (/ n 2)) 'nearest)
182179
(match-define (ival (endpoint a _) (endpoint b _) _ _) (range-reduce-round x divisor-bf prec))
183180
(cond
@@ -207,7 +204,6 @@
207204
['range-reduce
208205
(define prec (range-reduce-precision xlo xhi))
209206
(define pi-bf (mpfr-new! prec))
210-
(mpfr-set-prec! pi-bf prec)
211207
(mpfr-const-pi! pi-bf 'nearest)
212208
(match-define (ival (endpoint a _) (endpoint b _) _ _) (range-reduce-round x pi-bf prec))
213209
(cond
@@ -239,7 +235,6 @@
239235
['range-reduce
240236
(define prec (range-reduce-precision xlo xhi))
241237
(define divisor-bf (mpfr-new! prec))
242-
(mpfr-set-prec! divisor-bf prec)
243238
(mpfr-set! divisor-bf (bf (/ n 2)) 'nearest)
244239
(match-define (ival (endpoint a _) (endpoint b _) _ _) (range-reduce-round x divisor-bf prec))
245240

@@ -257,7 +252,6 @@
257252
['range-reduce
258253
(define prec (range-reduce-precision xlo xhi))
259254
(define pi-bf (mpfr-new! prec))
260-
(mpfr-set-prec! pi-bf prec)
261255
(mpfr-const-pi! pi-bf 'nearest)
262256
(match-define (ival (endpoint a _) (endpoint b _) _ _) (range-reduce-round x pi-bf prec))
263257

0 commit comments

Comments
 (0)