Skip to content

Commit b62f93d

Browse files
committed
fix addition
1 parent bee14f4 commit b62f93d

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

src/core/explain.rkt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
(provide explain
2121
actual-errors)
2222

23+
(define 100.l (flonum->logfl 100.0))
24+
(define 32.l (flonum->logfl 32.0))
25+
2326
(define *top-3* (make-parameter #f))
2427

2528
(define MAX-EXP 1023)
@@ -165,6 +168,8 @@
165168

166169
(define cond-x (abs (/ xfl (+ xfl yfl))))
167170
(define cond-y (abs (/ yfl (+ xfl yfl))))
171+
;(define cond-x.l (logabs (log/ xlog (log+ xlog ylog))))
172+
;(define cond-y.l (logabs (log/ ylog (log+ xlog ylog))))
168173

169174
(define x.eps (+ 127 (bigfloat-exponent (exacts-ref x-ex))))
170175
(define y.eps (+ 127 (bigfloat-exponent (exacts-ref y-ex))))
@@ -546,13 +551,13 @@
546551
(define explanations-table
547552
(for/list ([(key val) (in-dict expls->points)]
548553
#:unless (zero? (length val)))
549-
(define expr (car key))
554+
(define subexpr (car key))
550555
(define expl (cdr key))
551556
(define err-count (length val))
552557
(define maybe-count (length (hash-ref maybe-expls->points key '())))
553-
(define flow-list (make-flow-table oflow-hash uflow-hash expr expl))
558+
(define flow-list (make-flow-table oflow-hash uflow-hash subexpr expl))
554559

555-
(list (~a (car expr)) (~a expr) (~a expl) err-count maybe-count flow-list)))
560+
(list (~a (car subexpr)) (~a subexpr) (~a expl) err-count maybe-count flow-list)))
556561

557562
(define sorted-explanations-table (take-top-n (sort explanations-table > #:key fourth)))
558563

src/core/logspace.rkt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@
8989
(if (log<= A B) A B))
9090

9191
(define (log+ A B)
92-
(define P (logmax A B))
93-
(define Q (logmin A B))
92+
(define P (if (log>= (logabs A) (logabs B)) A B))
93+
(define Q (if (log< (logabs A) (logabs B)) A B))
9494
(match-define (logfl a sa ea) P)
9595
(match-define (logfl b sb eb) Q)
9696
(define x (- eb ea))
@@ -251,3 +251,14 @@
251251
[(list (or 'PI.f64 'PI.f32 'E.f64 'E.f32)) (flonum->logfl ((impl-info (first expr) 'fl)))]
252252
[(list op args ...) (cons (op->logop op) (map expr->logfl args))]
253253
[sym sym]))
254+
255+
(define x (flonum->logfl 2e+103))
256+
(define 1.l (flonum->logfl 1.0))
257+
(define 2.l (flonum->logfl 2.0))
258+
259+
(define x+1 (log+ x 1.l))
260+
(define 1/x+1 (log/ 1.l x+1))
261+
262+
(define 2/x (log/ 2.l x))
263+
264+
(define res (log- 1/x+1 2/x))

0 commit comments

Comments
 (0)