
Time bar (total: 1.3s)
| 1× | search |
| Probability | Valid | Unknown | Precondition | Infinite | Domain | Can't | Iter |
|---|---|---|---|---|---|---|---|
| 0% | 0% | 99.8% | 0.2% | 0% | 0% | 0% | 0 |
| 0% | 0% | 99.8% | 0.2% | 0% | 0% | 0% | 1 |
| 0% | 0% | 99.8% | 0.2% | 0% | 0% | 0% | 2 |
| 0% | 0% | 99.8% | 0.2% | 0% | 0% | 0% | 3 |
| 0% | 0% | 99.8% | 0.2% | 0% | 0% | 0% | 4 |
| 75% | 74.9% | 25% | 0.2% | 0% | 0% | 0% | 5 |
| 75% | 74.9% | 25% | 0.2% | 0% | 0% | 0% | 6 |
| 75% | 74.9% | 25% | 0.2% | 0% | 0% | 0% | 7 |
| 87.5% | 87.3% | 12.5% | 0.2% | 0% | 0% | 0% | 8 |
| 93.8% | 93.6% | 6.2% | 0.2% | 0% | 0% | 0% | 9 |
| 93.8% | 93.6% | 6.2% | 0.2% | 0% | 0% | 0% | 10 |
| 93.8% | 93.6% | 6.2% | 0.2% | 0% | 0% | 0% | 11 |
| 96.9% | 96.7% | 3.1% | 0.2% | 0% | 0% | 0% | 12 |
Compiled 17 to 13 computations (23.5% saved)
| 553.0ms | 8 256× | 0 | valid |
ival-mult: 212.0ms (62.3% of total)ival-add: 68.0ms (20% of total)ival-div: 50.0ms (14.7% of total)ival-true: 6.0ms (1.8% of total)ival-assert: 3.0ms (0.9% of total)| Ground Truth | Overpredictions | Example | Underpredictions | Example | Subexpression |
|---|---|---|---|---|---|
| 122 | 0 | - | 1 | (1.4531434752169376e-266 -3.1883438220420717e-301 -2.0603569621327523e-113 -8.660947481383659e-24) | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| 4 | 0 | - | 0 | - | (+.f64 (*.f64 a c) (*.f64 b d)) |
| 0 | 0 | - | 0 | - | (+.f64 (*.f64 c c) (*.f64 d d)) |
| 0 | 0 | - | 0 | - | a |
| 0 | 0 | - | 0 | - | d |
| 0 | 0 | - | 0 | - | (*.f64 d d) |
| 0 | 0 | - | 0 | - | (*.f64 c c) |
| 0 | 0 | - | 0 | - | (*.f64 a c) |
| 0 | 0 | - | 0 | - | c |
| 0 | 0 | - | 0 | - | b |
| 0 | 0 | - | 0 | - | (*.f64 b d) |
| Operator | Subexpression | Explanation | Count | |
|---|---|---|---|---|
/.f64 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) | o/o | 68 | 0 |
| ↳ | (+.f64 (*.f64 a c) (*.f64 b d)) | overflow | 77 | |
| ↳ | (*.f64 a c) | overflow | 42 | |
| ↳ | (*.f64 b d) | overflow | 43 | |
| ↳ | (+.f64 (*.f64 c c) (*.f64 d d)) | overflow | 127 | |
| ↳ | (*.f64 c c) | overflow | 79 | |
| ↳ | (*.f64 d d) | overflow | 70 | |
/.f64 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) | n/o | 33 | 0 |
| ↳ | (+.f64 (*.f64 c c) (*.f64 d d)) | overflow | 127 | |
| ↳ | (*.f64 c c) | overflow | 79 | |
| ↳ | (*.f64 d d) | overflow | 70 | |
/.f64 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) | o/n | 9 | 0 |
| ↳ | (+.f64 (*.f64 a c) (*.f64 b d)) | overflow | 77 | |
| ↳ | (*.f64 a c) | overflow | 42 | |
| ↳ | (*.f64 b d) | overflow | 43 | |
/.f64 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) | n/u | 7 | 0 |
| ↳ | (+.f64 (*.f64 c c) (*.f64 d d)) | underflow | 15 | |
| ↳ | (*.f64 c c) | underflow | 54 | |
| ↳ | (*.f64 d d) | underflow | 54 | |
+.f64 | (+.f64 (*.f64 a c) (*.f64 b d)) | nan-rescue | 4 | 0 |
| ↳ | (*.f64 a c) | overflow | 42 | |
| ↳ | (*.f64 b d) | overflow | 43 | |
/.f64 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) | u/u | 3 | 0 |
| ↳ | (+.f64 (*.f64 a c) (*.f64 b d)) | underflow | 4 | |
| ↳ | (*.f64 a c) | underflow | 27 | |
| ↳ | (*.f64 b d) | underflow | 27 | |
| ↳ | (+.f64 (*.f64 c c) (*.f64 d d)) | underflow | 15 | |
| ↳ | (*.f64 c c) | underflow | 54 | |
| ↳ | (*.f64 d d) | underflow | 54 | |
/.f64 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) | u/n | 1 | 0 |
| ↳ | (+.f64 (*.f64 a c) (*.f64 b d)) | underflow | 4 | |
| ↳ | (*.f64 a c) | underflow | 27 | |
| ↳ | (*.f64 b d) | underflow | 27 |
| Predicted + | Predicted - | |
|---|---|---|
| + | 121 | 1 |
| - | 0 | 134 |
| Predicted + | Predicted Maybe | Predicted - | |
|---|---|---|---|
| + | 121 | 0 | 1 |
| - | 0 | 0 | 134 |
| number | freq |
|---|---|
| 0 | 135 |
| 1 | 117 |
| 2 | 4 |
| Predicted + | Predicted Maybe | Predicted - | |
|---|---|---|---|
| + | 1 | 0 | 0 |
| - | 0 | 0 | 0 |
| 43.0ms | 512× | 0 | valid |
Compiled 154 to 48 computations (68.8% saved)
ival-mult: 14.0ms (64.8% of total)ival-add: 4.0ms (18.5% of total)ival-div: 3.0ms (13.9% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| 1× | egg-herbie |
| Inputs |
|---|
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
Compiled 15 to 11 computations (26.7% saved)
Compiled 0 to 4 computations (-∞% saved)
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 54.2% | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
Compiled 15 to 11 computations (26.7% saved)
| 1× | egg-herbie |
Found 4 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| cost-diff | 0 | (*.f64 b d) | |
| cost-diff | 0 | (*.f64 a c) | |
| cost-diff | 0 | (+.f64 (*.f64 a c) (*.f64 b d)) | |
| cost-diff | 0 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Inputs |
|---|
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 a c) (*.f64 b d)) |
(*.f64 a c) |
a |
c |
(*.f64 b d) |
b |
d |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
| Outputs |
|---|
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 a c) (*.f64 b d)) |
(*.f64 a c) |
a |
c |
(*.f64 b d) |
b |
d |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
Found 4 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| accuracy | 0.0 | (*.f64 a c) | |
| accuracy | 0.0078125 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| accuracy | 0.9648375574906174 | (+.f64 (*.f64 a c) (*.f64 b d)) | |
| accuracy | 29.03351335715648 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| 25.0ms | 256× | 0 | valid |
Compiled 92 to 24 computations (73.9% saved)
ival-mult: 12.0ms (76.2% of total)ival-add: 2.0ms (12.7% of total)ival-div: 1.0ms (6.3% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 a c) (*.f64 b d)) |
(*.f64 a c) |
(*.f64 b d) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
| Outputs |
|---|
(/ (* b d) (+ (pow c 2) (pow d 2))) |
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2)))) |
(* b d) |
(+ (* a c) (* b d)) |
(* a c) |
(/ (* a c) (+ (pow c 2) (pow d 2))) |
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))) |
(* a (+ c (/ (* b d) a))) |
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a))))) |
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))) |
(* b (+ d (/ (* a c) b))) |
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b))))) |
(/ b d) |
(+ (/ b d) (/ (* a c) (pow d 2))) |
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d)) |
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d)) |
(pow d 2) |
(+ (pow c 2) (pow d 2)) |
(/ a c) |
(/ (+ a (/ (* b d) c)) c) |
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c) |
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c) |
(* c (+ a (/ (* b d) c))) |
(pow c 2) |
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2)))) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c)) |
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c))))) |
(+ (/ a c) (/ (* b d) (pow c 2))) |
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c)) |
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c)) |
(/ (+ b (/ (* a c) d)) d) |
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d) |
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d) |
(* d (+ b (/ (* a c) d))) |
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2)))) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d)) |
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d))))) |
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 6.0ms | d | @ | 0 | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (+ (* c c) (* d d))) |
| 2.0ms | d | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (+ (* c c) (* d d))) |
| 2.0ms | b | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (+ (* c c) (* d d))) |
| 1.0ms | a | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (+ (* c c) (* d d))) |
| 1.0ms | a | @ | 0 | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (+ (* c c) (* d d))) |
| 1× | egg-herbie |
| Inputs |
|---|
(/ (* b d) (+ (pow c 2) (pow d 2))) |
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2)))) |
(* b d) |
(+ (* a c) (* b d)) |
(* a c) |
(/ (* a c) (+ (pow c 2) (pow d 2))) |
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))) |
(* a (+ c (/ (* b d) a))) |
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a))))) |
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))) |
(* b (+ d (/ (* a c) b))) |
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b))))) |
(/ b d) |
(+ (/ b d) (/ (* a c) (pow d 2))) |
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d)) |
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d)) |
(pow d 2) |
(+ (pow c 2) (pow d 2)) |
(/ a c) |
(/ (+ a (/ (* b d) c)) c) |
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c) |
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c) |
(* c (+ a (/ (* b d) c))) |
(pow c 2) |
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2)))) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c)) |
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c))))) |
(+ (/ a c) (/ (* b d) (pow c 2))) |
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c)) |
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c)) |
(/ (+ b (/ (* a c) d)) d) |
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d) |
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d) |
(* d (+ b (/ (* a c) d))) |
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2)))) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d)) |
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d))))) |
| Outputs |
|---|
(/ (* b d) (+ (pow c 2) (pow d 2))) |
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2)))) |
(+.f64 (*.f64 a c) (*.f64 b d)) |
(* b d) |
(*.f64 a c) |
(+ (* a c) (* b d)) |
(*.f64 b d) |
(* a c) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
| Inputs |
|---|
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 a c) (*.f64 b d)) |
(*.f64 a c) |
(*.f64 b d) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
| Outputs |
|---|
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 a c) (*.f64 b d)) |
(*.f64 a c) |
(*.f64 b d) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
Compiled 190 to 27 computations (85.8% saved)
4 alts after pruning (3 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 7 | 3 | 10 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 7 | 4 | 11 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 54.2% | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ▶ | 36.6% | (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ▶ | 35.7% | (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ▶ | 3.8% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
Compiled 76 to 52 computations (31.6% saved)
| 1× | egg-herbie |
Found 12 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| cost-diff | 0 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| cost-diff | 0 | (*.f64 b d) | |
| cost-diff | 0 | #s(approx (+ (* a c) (* b d)) (*.f64 b d)) | |
| cost-diff | 0 | (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| cost-diff | 0 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| cost-diff | 0 | (*.f64 a c) | |
| cost-diff | 0 | #s(approx (+ (* a c) (* b d)) (*.f64 a c)) | |
| cost-diff | 0 | (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| cost-diff | 0 | (*.f64 b d) | |
| cost-diff | 0 | (*.f64 a c) | |
| cost-diff | 0 | (+.f64 (*.f64 a c) (*.f64 b d)) | |
| cost-diff | 0 | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
(+.f64 (*.f64 a c) (*.f64 b d)) |
(*.f64 a c) |
a |
c |
(*.f64 b d) |
b |
d |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 a c)) |
(*.f64 a c) |
a |
c |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
d |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 b d)) |
(*.f64 b d) |
b |
d |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
c |
(*.f64 d d) |
| Outputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
(+.f64 (*.f64 a c) (*.f64 b d)) |
(*.f64 a c) |
a |
c |
(*.f64 b d) |
b |
d |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 a c)) |
(*.f64 a c) |
a |
c |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
d |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 b d)) |
(*.f64 b d) |
b |
d |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
c |
(*.f64 d d) |
Found 12 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| accuracy | 0.0 | (*.f64 b d) | |
| accuracy | 0.0078125 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| accuracy | 29.03351335715648 | (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| accuracy | 30.3268705063563 | #s(approx (+ (* a c) (* b d)) (*.f64 b d)) | |
| accuracy | 0.0 | (*.f64 a c) | |
| accuracy | 0.0078125 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| accuracy | 29.03351335715648 | (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| accuracy | 29.92935627803062 | #s(approx (+ (* a c) (* b d)) (*.f64 a c)) | |
| accuracy | 0.0 | (*.f64 b d) | |
| accuracy | 0.0 | (*.f64 a c) | |
| accuracy | 0.9648375574906174 | (+.f64 (*.f64 a c) (*.f64 b d)) | |
| accuracy | 61.547380541327236 | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
| 28.0ms | 256× | 0 | valid |
Compiled 254 to 35 computations (86.2% saved)
ival-mult: 6.0ms (58.7% of total)ival-add: 2.0ms (19.6% of total)ival-div: 1.0ms (9.8% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
(+.f64 (*.f64 a c) (*.f64 b d)) |
(*.f64 a c) |
(*.f64 b d) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 a c)) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 b d)) |
| Outputs |
|---|
(/ (* b d) (+ (pow c 2) (pow d 2))) |
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2)))) |
(* b d) |
(+ (* a c) (* b d)) |
(* a c) |
(/ (* a c) (+ (pow c 2) (pow d 2))) |
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))) |
(* a (+ c (/ (* b d) a))) |
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a))))) |
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))) |
(* b (+ d (/ (* a c) b))) |
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b))))) |
(/ b d) |
(+ (/ b d) (/ (* a c) (pow d 2))) |
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d)) |
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d)) |
(pow d 2) |
(+ (pow c 2) (pow d 2)) |
(/ a c) |
(/ (+ a (/ (* b d) c)) c) |
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c) |
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c) |
(* c (+ a (/ (* b d) c))) |
(pow c 2) |
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2)))) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c)) |
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c))))) |
(+ (/ a c) (/ (* b d) (pow c 2))) |
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c)) |
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c)) |
(/ (+ b (/ (* a c) d)) d) |
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d) |
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d) |
(* d (+ b (/ (* a c) d))) |
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2)))) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d)) |
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d))))) |
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | a | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (+ (* c c) (* d d)) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d))) |
| 1.0ms | c | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (+ (* c c) (* d d)) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d))) |
| 1.0ms | b | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (+ (* c c) (* d d)) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d))) |
| 1.0ms | d | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (+ (* c c) (* d d)) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d))) |
| 1.0ms | a | @ | 0 | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (+ (* c c) (* d d)) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d))) |
| 1× | egg-herbie |
| Inputs |
|---|
(/ (* b d) (+ (pow c 2) (pow d 2))) |
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2)))) |
(* b d) |
(+ (* a c) (* b d)) |
(* a c) |
(/ (* a c) (+ (pow c 2) (pow d 2))) |
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))) |
(* a (+ c (/ (* b d) a))) |
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a))))) |
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))) |
(* b (+ d (/ (* a c) b))) |
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b))))) |
(/ b d) |
(+ (/ b d) (/ (* a c) (pow d 2))) |
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d)) |
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d)) |
(pow d 2) |
(+ (pow c 2) (pow d 2)) |
(/ a c) |
(/ (+ a (/ (* b d) c)) c) |
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c) |
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c) |
(* c (+ a (/ (* b d) c))) |
(pow c 2) |
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2)))) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c)) |
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c))))) |
(+ (/ a c) (/ (* b d) (pow c 2))) |
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c)) |
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c)) |
(/ (+ b (/ (* a c) d)) d) |
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d) |
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d) |
(* d (+ b (/ (* a c) d))) |
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2)))) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d)) |
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d))))) |
| Outputs |
|---|
(/ (* b d) (+ (pow c 2) (pow d 2))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2)))) |
(+.f64 (*.f64 a c) (*.f64 b d)) |
(* b d) |
(*.f64 a c) |
(+ (* a c) (* b d)) |
(*.f64 b d) |
(* a c) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/ (* a c) (+ (pow c 2) (pow d 2))) |
#s(approx (+ (* a c) (* b d)) (*.f64 a c)) |
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(* a (+ c (/ (* b d) a))) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))))) |
#s(approx (+ (* a c) (* b d)) (*.f64 b d)) |
| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
(+.f64 (*.f64 a c) (*.f64 b d)) |
(*.f64 a c) |
(*.f64 b d) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 a c)) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 b d)) |
| Outputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
(+.f64 (*.f64 a c) (*.f64 b d)) |
(*.f64 a c) |
(*.f64 b d) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 a c)) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 b d)) |
Compiled 501 to 33 computations (93.4% saved)
7 alts after pruning (3 fresh and 4 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 16 | 3 | 19 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 3 | 3 |
| Done | 0 | 1 | 1 |
| Total | 16 | 7 | 23 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 54.2% | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 36.6% | (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 35.7% | (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ▶ | 2.1% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 3.8% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
| ▶ | 4.6% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
| ▶ | 4.9% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
Compiled 153 to 95 computations (37.9% saved)
| 1× | egg-herbie |
Found 10 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| cost-diff | 0 | (*.f64 d d) | |
| cost-diff | 0 | (*.f64 c c) | |
| cost-diff | 0 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| cost-diff | 0 | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| cost-diff | 0 | (*.f64 b d) | |
| cost-diff | 0 | #s(approx (+ (* a c) (* b d)) (*.f64 b d)) | |
| cost-diff | 0 | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) | |
| cost-diff | 0 | (*.f64 a c) | |
| cost-diff | 0 | #s(approx (+ (* a c) (* b d)) (*.f64 a c)) | |
| cost-diff | 0 | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
#s(approx (+ (* a c) (* b d)) (*.f64 a c)) |
(*.f64 a c) |
a |
c |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 b d)) |
(*.f64 b d) |
b |
d |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
c |
(*.f64 d d) |
d |
| Outputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
#s(approx (+ (* a c) (* b d)) (*.f64 a c)) |
(*.f64 a c) |
a |
c |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 b d)) |
(*.f64 b d) |
b |
d |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
c |
(*.f64 d d) |
d |
Found 10 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| accuracy | 0.0 | (*.f64 d d) | |
| accuracy | 0.0 | (*.f64 c c) | |
| accuracy | 0.0078125 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| accuracy | 62.63478116152093 | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| accuracy | 0.0 | (*.f64 b d) | |
| accuracy | 30.3268705063563 | #s(approx (+ (* a c) (* b d)) (*.f64 b d)) | |
| accuracy | 61.547380541327236 | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) | |
| accuracy | 0.0 | (*.f64 a c) | |
| accuracy | 29.92935627803062 | #s(approx (+ (* a c) (* b d)) (*.f64 a c)) | |
| accuracy | 61.547380541327236 | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
| 20.0ms | 256× | 0 | valid |
Compiled 210 to 34 computations (83.8% saved)
ival-mult: 6.0ms (58.7% of total)ival-add: 2.0ms (19.6% of total)ival-div: 1.0ms (9.8% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
#s(approx (+ (* a c) (* b d)) (*.f64 a c)) |
(*.f64 a c) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 b d)) |
(*.f64 b d) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
| Outputs |
|---|
(/ (* b d) (+ (pow c 2) (pow d 2))) |
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2)))) |
(* b d) |
(+ (* a c) (* b d)) |
(* a c) |
(/ (* a c) (+ (pow c 2) (pow d 2))) |
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))) |
(* a (+ c (/ (* b d) a))) |
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a))))) |
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))) |
(* b (+ d (/ (* a c) b))) |
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b))))) |
(/ b d) |
(+ (/ b d) (/ (* a c) (pow d 2))) |
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d)) |
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d)) |
(pow d 2) |
(+ (pow c 2) (pow d 2)) |
(pow c 2) |
(/ a c) |
(/ (+ a (/ (* b d) c)) c) |
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c) |
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c) |
(* c (+ a (/ (* b d) c))) |
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2)))) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c)) |
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c))))) |
(+ (/ a c) (/ (* b d) (pow c 2))) |
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c)) |
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c)) |
(/ (+ b (/ (* a c) d)) d) |
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d) |
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d) |
(* d (+ b (/ (* a c) d))) |
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2)))) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d)) |
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d))))) |
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | c | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d)) |
| 1.0ms | d | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d)) |
| 1.0ms | c | @ | inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d)) |
| 1.0ms | b | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d)) |
| 1.0ms | a | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d)) |
| 1× | egg-herbie |
| Inputs |
|---|
(/ (* b d) (+ (pow c 2) (pow d 2))) |
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2)))) |
(* b d) |
(+ (* a c) (* b d)) |
(* a c) |
(/ (* a c) (+ (pow c 2) (pow d 2))) |
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))) |
(* a (+ c (/ (* b d) a))) |
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a))))) |
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))) |
(* b (+ d (/ (* a c) b))) |
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b))))) |
(/ b d) |
(+ (/ b d) (/ (* a c) (pow d 2))) |
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d)) |
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d)) |
(pow d 2) |
(+ (pow c 2) (pow d 2)) |
(pow c 2) |
(/ a c) |
(/ (+ a (/ (* b d) c)) c) |
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c) |
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c) |
(* c (+ a (/ (* b d) c))) |
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2)))) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c)) |
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c))))) |
(+ (/ a c) (/ (* b d) (pow c 2))) |
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c)) |
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c)) |
(/ (+ b (/ (* a c) d)) d) |
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d) |
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d) |
(* d (+ b (/ (* a c) d))) |
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2)))) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d)) |
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d))))) |
| Outputs |
|---|
(/ (* b d) (+ (pow c 2) (pow d 2))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2)))) |
#s(approx (+ (* a c) (* b d)) (*.f64 a c)) |
(* b d) |
(*.f64 a c) |
(+ (* a c) (* b d)) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
(* a c) |
#s(approx (+ (* a c) (* b d)) (*.f64 b d)) |
(/ (* a c) (+ (pow c 2) (pow d 2))) |
(*.f64 b d) |
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(* a (+ c (/ (* b d) a))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))))) |
(*.f64 c c) |
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a))))) |
(*.f64 d d) |
| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
#s(approx (+ (* a c) (* b d)) (*.f64 a c)) |
(*.f64 a c) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 b d)) |
(*.f64 b d) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
| Outputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
#s(approx (+ (* a c) (* b d)) (*.f64 a c)) |
(*.f64 a c) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 b d)) |
(*.f64 b d) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
Compiled 522 to 34 computations (93.5% saved)
9 alts after pruning (2 fresh and 7 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 16 | 2 | 18 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 3 | 3 |
| Done | 0 | 4 | 4 |
| Total | 16 | 9 | 25 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 54.2% | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 36.6% | (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 35.7% | (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 2.1% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 3.8% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
| ▶ | 5.0% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
| ▶ | 4.5% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
| ✓ | 4.6% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
| ✓ | 4.9% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
Compiled 199 to 122 computations (38.7% saved)
| 1× | egg-herbie |
Found 5 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| cost-diff | 0 | (*.f64 c c) | |
| cost-diff | 0 | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) | |
| cost-diff | 0 | (*.f64 d d) | |
| cost-diff | 0 | #s(approx (+ (* a c) (* b d)) (*.f64 d d)) | |
| cost-diff | 0 | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 d d)) |
(*.f64 d d) |
d |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
(*.f64 c c) |
c |
| Outputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 d d)) |
(*.f64 d d) |
d |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
(*.f64 c c) |
c |
Found 5 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| accuracy | 0.0 | (*.f64 c c) | |
| accuracy | 60.80629460662306 | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) | |
| accuracy | 0.0 | (*.f64 d d) | |
| accuracy | 56.79814510180251 | #s(approx (+ (* a c) (* b d)) (*.f64 d d)) | |
| accuracy | 61.547380541327236 | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
| 19.0ms | 256× | 0 | valid |
Compiled 112 to 29 computations (74.1% saved)
ival-mult: 6.0ms (59.3% of total)ival-add: 2.0ms (19.8% of total)ival-div: 1.0ms (9.9% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 d d)) |
(*.f64 d d) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
(*.f64 c c) |
| Outputs |
|---|
(/ (* b d) (+ (pow c 2) (pow d 2))) |
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2)))) |
(* b d) |
(+ (* a c) (* b d)) |
(/ (* a c) (+ (pow c 2) (pow d 2))) |
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))) |
(* a c) |
(* a (+ c (/ (* b d) a))) |
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a))))) |
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))) |
(* b (+ d (/ (* a c) b))) |
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b))))) |
(/ b d) |
(+ (/ b d) (/ (* a c) (pow d 2))) |
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d)) |
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d)) |
(pow c 2) |
(/ a c) |
(/ (+ a (/ (* b d) c)) c) |
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c) |
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c) |
(* c (+ a (/ (* b d) c))) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c)) |
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c))))) |
(+ (/ a c) (/ (* b d) (pow c 2))) |
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c)) |
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c)) |
(pow d 2) |
(/ (+ b (/ (* a c) d)) d) |
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d) |
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d) |
(* d (+ b (/ (* a c) d))) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d)) |
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d))))) |
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | d | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* d d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (* c c)) |
| 1.0ms | c | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* d d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (* c c)) |
| 1.0ms | c | @ | inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* d d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (* c c)) |
| 1.0ms | a | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* d d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (* c c)) |
| 1.0ms | b | @ | -inf | ((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* d d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (* c c)) |
| 1× | egg-herbie |
| Inputs |
|---|
(/ (* b d) (+ (pow c 2) (pow d 2))) |
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2)))) |
(* b d) |
(+ (* a c) (* b d)) |
(/ (* a c) (+ (pow c 2) (pow d 2))) |
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))) |
(* a c) |
(* a (+ c (/ (* b d) a))) |
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a))))) |
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))) |
(* b (+ d (/ (* a c) b))) |
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2)))))))) |
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b))))) |
(/ b d) |
(+ (/ b d) (/ (* a c) (pow d 2))) |
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d)) |
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d)) |
(pow c 2) |
(/ a c) |
(/ (+ a (/ (* b d) c)) c) |
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c) |
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c) |
(* c (+ a (/ (* b d) c))) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c)) |
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c)) |
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c))))) |
(+ (/ a c) (/ (* b d) (pow c 2))) |
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c)) |
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c)) |
(pow d 2) |
(/ (+ b (/ (* a c) d)) d) |
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d) |
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d) |
(* d (+ b (/ (* a c) d))) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d)) |
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d))))) |
| Outputs |
|---|
(/ (* b d) (+ (pow c 2) (pow d 2))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2)))) |
#s(approx (+ (* a c) (* b d)) (*.f64 d d)) |
(* b d) |
(*.f64 d d) |
(+ (* a c) (* b d)) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
(/ (* a c) (+ (pow c 2) (pow d 2))) |
(*.f64 c c) |
| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 d d)) |
(*.f64 d d) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
(*.f64 c c) |
| Outputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
#s(approx (+ (* a c) (* b d)) (*.f64 d d)) |
(*.f64 d d) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
(*.f64 c c) |
Compiled 205 to 19 computations (90.7% saved)
9 alts after pruning (0 fresh and 9 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 7 | 0 | 7 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 2 | 2 |
| Done | 0 | 7 | 7 |
| Total | 7 | 9 | 16 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 54.2% | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 36.6% | (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 35.7% | (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 2.1% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 3.8% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
| ✓ | 5.0% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
| ✓ | 4.5% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
| ✓ | 4.6% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
| ✓ | 4.9% | #s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
Compiled 398 to 151 computations (62.1% saved)
| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
5 calls:
| 5.0ms | d |
| 3.0ms | c |
| 3.0ms | a |
| 3.0ms | b |
| 3.0ms | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 54.2% | 1 | a |
| 54.2% | 1 | b |
| 54.2% | 1 | c |
| 54.2% | 1 | d |
| 54.2% | 1 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
Compiled 19 to 27 computations (-42.1% saved)
| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
5 calls:
| 3.0ms | d |
| 3.0ms | a |
| 3.0ms | b |
| 3.0ms | c |
| 3.0ms | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 43.3% | 3 | a |
| 46.4% | 3 | c |
| 38.4% | 2 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| 42.7% | 3 | d |
| 47.3% | 3 | b |
Compiled 19 to 27 computations (-42.1% saved)
| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
5 calls:
| 4.0ms | b |
| 3.0ms | d |
| 3.0ms | a |
| 3.0ms | c |
| 2.0ms | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 35.7% | 1 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| 35.7% | 1 | d |
| 35.7% | 1 | a |
| 35.7% | 1 | c |
| 35.7% | 1 | b |
Compiled 19 to 27 computations (-42.1% saved)
| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
5 calls:
| 2.0ms | d |
| 2.0ms | b |
| 2.0ms | c |
| 2.0ms | a |
| 2.0ms | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 5.0% | 1 | b |
| 5.0% | 1 | a |
| 5.0% | 1 | d |
| 5.0% | 1 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| 5.0% | 1 | c |
Compiled 19 to 27 computations (-42.1% saved)
Total -1.8b remaining (-3%)
Threshold costs -1.8b (-3%)
| Inputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d))) |
| Outputs |
|---|
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
5 calls:
| 3.0ms | b |
| 2.0ms | d |
| 2.0ms | a |
| 2.0ms | c |
| 1.0ms | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 4.9% | 1 | a |
| 4.9% | 1 | d |
| 4.9% | 1 | c |
| 4.9% | 1 | b |
| 4.9% | 1 | (/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
Compiled 19 to 27 computations (-42.1% saved)
| 2× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 13.0ms | 9.68220653894404e-7 | 0.0018845972645716504 |
| 8.0ms | -2.1644377257659007e-56 | -8.714970429903669e-57 |
| 13.0ms | 208× | 0 | valid |
Compiled 512 to 382 computations (25.4% saved)
ival-mult: 5.0ms (60.9% of total)ival-add: 2.0ms (24.4% of total)ival-div: 1.0ms (12.2% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| 1× | egg-herbie |
| Inputs |
|---|
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(if (<=.f64 b #s(literal -4196261778848663/220855883097298041197912187592864814478435487109452369765200775161577472 binary64)) (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) (if (<=.f64 b #s(literal 5072854620270127/9223372036854775808 binary64)) (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))))) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
| Outputs |
|---|
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(if (<=.f64 b #s(literal -4196261778848663/220855883097298041197912187592864814478435487109452369765200775161577472 binary64)) (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) (if (<=.f64 b #s(literal 5072854620270127/9223372036854775808 binary64)) (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))))) |
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c)) |
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c))) |
| 1× | done |
Compiled 145 to 30 computations (79.3% saved)
Compiled 392 to 122 computations (68.9% saved)
Loading profile data...