
Time bar (total: 1.5s)
| 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)
| 599.0ms | 8 256× | 0 | valid |
ival-mult: 239.0ms (63.1% of total)ival-div: 53.0ms (14% of total)ival-sub: 42.0ms (11.1% of total)ival-add: 34.0ms (9% of total)ival-true: 7.0ms (1.8% of total)ival-assert: 3.0ms (0.8% of total)| Ground Truth | Overpredictions | Example | Underpredictions | Example | Subexpression |
|---|---|---|---|---|---|
| 109 | 0 | - | 0 | - | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| 3 | 0 | - | 0 | - | (-.f64 (*.f64 b c) (*.f64 a 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 b c) |
| 0 | 0 | - | 0 | - | c |
| 0 | 0 | - | 0 | - | (*.f64 a d) |
| 0 | 0 | - | 0 | - | b |
| Operator | Subexpression | Explanation | Count | |
|---|---|---|---|---|
/.f64 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) | o/o | 58 | 0 |
| ↳ | (*.f64 b c) | overflow | 41 | |
| ↳ | (-.f64 (*.f64 b c) (*.f64 a d)) | overflow | 66 | |
| ↳ | (*.f64 a d) | overflow | 34 | |
| ↳ | (+.f64 (*.f64 c c) (*.f64 d d)) | overflow | 127 | |
| ↳ | (*.f64 c c) | overflow | 79 | |
| ↳ | (*.f64 d d) | overflow | 70 | |
/.f64 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) | n/o | 32 | 0 |
| ↳ | (+.f64 (*.f64 c c) (*.f64 d d)) | overflow | 127 | |
| ↳ | (*.f64 c c) | overflow | 79 | |
| ↳ | (*.f64 d d) | overflow | 70 | |
/.f64 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) | o/n | 8 | 0 |
| ↳ | (*.f64 b c) | overflow | 41 | |
| ↳ | (-.f64 (*.f64 b c) (*.f64 a d)) | overflow | 66 | |
| ↳ | (*.f64 a d) | overflow | 34 | |
/.f64 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) | n/u | 6 | 0 |
| ↳ | (+.f64 (*.f64 c c) (*.f64 d d)) | underflow | 15 | |
| ↳ | (*.f64 c c) | underflow | 54 | |
| ↳ | (*.f64 d d) | underflow | 54 | |
-.f64 | (-.f64 (*.f64 b c) (*.f64 a d)) | nan-rescue | 3 | 0 |
| ↳ | (*.f64 b c) | overflow | 41 | |
| ↳ | (*.f64 a d) | overflow | 34 | |
/.f64 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) | u/u | 3 | 0 |
| ↳ | (*.f64 b c) | underflow | 22 | |
| ↳ | (-.f64 (*.f64 b c) (*.f64 a d)) | underflow | 5 | |
| ↳ | (*.f64 a d) | underflow | 30 | |
| ↳ | (+.f64 (*.f64 c c) (*.f64 d d)) | underflow | 15 | |
| ↳ | (*.f64 c c) | underflow | 54 | |
| ↳ | (*.f64 d d) | underflow | 54 | |
/.f64 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) | u/n | 2 | 0 |
| ↳ | (*.f64 b c) | underflow | 22 | |
| ↳ | (-.f64 (*.f64 b c) (*.f64 a d)) | underflow | 5 | |
| ↳ | (*.f64 a d) | underflow | 30 |
| Predicted + | Predicted - | |
|---|---|---|
| + | 109 | 0 |
| - | 0 | 147 |
| Predicted + | Predicted Maybe | Predicted - | |
|---|---|---|---|
| + | 109 | 0 | 0 |
| - | 0 | 0 | 147 |
| number | freq |
|---|---|
| 0 | 147 |
| 1 | 106 |
| 2 | 3 |
| Predicted + | Predicted Maybe | Predicted - | |
|---|---|---|---|
| + | 1 | 0 | 0 |
| - | 0 | 0 | 0 |
| 46.0ms | 512× | 0 | valid |
Compiled 154 to 48 computations (68.8% saved)
ival-mult: 20.0ms (71.2% of total)ival-div: 3.0ms (10.7% of total)ival-sub: 2.0ms (7.1% of total)ival-add: 2.0ms (7.1% of total)ival-true: 1.0ms (3.6% of total)ival-assert: 0.0ms (0% of total)| 1× | egg-herbie |
| Inputs |
|---|
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
(/.f64 (-.f64 (*.f64 b c) (*.f64 a 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 |
|---|---|---|
| ▶ | 59.3% | (/.f64 (-.f64 (*.f64 b c) (*.f64 a 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 a d) | |
| cost-diff | 0 | (*.f64 b c) | |
| cost-diff | 0 | (-.f64 (*.f64 b c) (*.f64 a d)) | |
| cost-diff | 0 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Inputs |
|---|
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(-.f64 (*.f64 b c) (*.f64 a d)) |
(*.f64 b c) |
b |
c |
(*.f64 a d) |
a |
d |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
| Outputs |
|---|
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(-.f64 (*.f64 b c) (*.f64 a d)) |
(*.f64 b c) |
b |
c |
(*.f64 a d) |
a |
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 d) | |
| accuracy | 0.0078125 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| accuracy | 0.6992146216604117 | (-.f64 (*.f64 b c) (*.f64 a d)) | |
| accuracy | 25.760275984917705 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| 20.0ms | 256× | 0 | valid |
Compiled 92 to 24 computations (73.9% saved)
ival-mult: 6.0ms (57.1% of total)ival-sub: 1.0ms (9.5% of total)ival-div: 1.0ms (9.5% of total)ival-add: 1.0ms (9.5% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(-.f64 (*.f64 b c) (*.f64 a d)) |
(*.f64 b c) |
(*.f64 a d) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
| Outputs |
|---|
(/ (* b c) (+ (pow c 2) (pow d 2))) |
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2)))) |
(* b c) |
(+ (* -1 (* a d)) (* b c)) |
(* a d) |
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) |
(* a (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (/ (* b c) (* a (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a d)) |
(* a (- (/ (* b c) a) d)) |
(* -1 (* a (+ (* -1 (/ (* b c) (* a (+ (pow c 2) (pow d 2))))) (/ d (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a (- (* -1 (/ (* b c) a)) (* -1 d)))) |
(- (* b c) (* a d)) |
(* b (+ (* -1 (/ (* a d) (* b (+ (pow c 2) (pow d 2))))) (/ c (+ (pow c 2) (pow d 2))))) |
(* b (+ c (* -1 (/ (* a d) b)))) |
(* -1 (* b (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (/ (* a d) (* b (+ (pow c 2) (pow d 2))))))) |
(* -1 (* b (+ (* -1 c) (/ (* a d) b)))) |
(* -1 (/ a d)) |
(+ (* -1 (/ a d)) (/ (* b c) (pow d 2))) |
(+ (* -1 (/ a d)) (* c (+ (/ b (pow d 2)) (/ (* a c) (pow d 3))))) |
(+ (* -1 (/ a d)) (* c (+ (* c (- (* -1 (/ (* b c) (pow d 4))) (* -1 (/ a (pow d 3))))) (/ b (pow d 2))))) |
(pow d 2) |
(+ (pow c 2) (pow d 2)) |
(/ b c) |
(/ (+ b (* -1 (/ (* a d) c))) c) |
(/ (+ b (+ (* -1 (/ (* a d) c)) (* -1 (/ (* b (pow d 2)) (pow c 2))))) c) |
(/ (- (+ b (+ (* -1 (/ (* a d) c)) (/ (* a (pow d 3)) (pow c 3)))) (/ (* b (pow d 2)) (pow c 2))) c) |
(* c (+ b (* -1 (/ (* a d) c)))) |
(pow c 2) |
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2)))) |
(* -1 (/ (+ (* -1 b) (/ (* a d) c)) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (* b (pow d 2)) c))) c))) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (- (* -1 (/ (* a (pow d 3)) c)) (* -1 (* b (pow d 2)))) c))) c))) c)) |
(* -1 (* c (+ (* -1 b) (/ (* a d) c)))) |
(+ (* -1 (/ (* a d) (pow c 2))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* -1 (/ (* b d) (pow c 3))))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* d (- (/ (* a d) (pow c 4)) (/ b (pow c 3)))))) (/ b c)) |
(/ (+ (* -1 a) (/ (* b c) d)) d) |
(/ (+ (* -1 a) (+ (/ (* a (pow c 2)) (pow d 2)) (/ (* b c) d))) d) |
(/ (- (+ (* -1 a) (+ (* -1 (/ (* b (pow c 3)) (pow d 3))) (/ (* b c) d))) (* -1 (/ (* a (pow c 2)) (pow d 2)))) d) |
(* d (- (/ (* b c) d) a)) |
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2)))) |
(* -1 (/ (+ a (* -1 (/ (* b c) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* b c) (/ (* a (pow c 2)) d)) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow c 3)) d) (* a (pow c 2))) d)) (* b c)) d))) d)) |
(* -1 (* d (- (* -1 (/ (* b c) d)) (* -1 a)))) |
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 5.0ms | a | @ | inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (* a d) (+ (* c c) (* d d))) |
| 2.0ms | d | @ | inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (* a d) (+ (* c c) (* d d))) |
| 2.0ms | b | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (* a d) (+ (* c c) (* d d))) |
| 1.0ms | a | @ | 0 | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (* a d) (+ (* c c) (* d d))) |
| 1.0ms | c | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (* a d) (+ (* c c) (* d d))) |
| 1× | egg-herbie |
| Inputs |
|---|
(/ (* b c) (+ (pow c 2) (pow d 2))) |
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2)))) |
(* b c) |
(+ (* -1 (* a d)) (* b c)) |
(* a d) |
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) |
(* a (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (/ (* b c) (* a (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a d)) |
(* a (- (/ (* b c) a) d)) |
(* -1 (* a (+ (* -1 (/ (* b c) (* a (+ (pow c 2) (pow d 2))))) (/ d (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a (- (* -1 (/ (* b c) a)) (* -1 d)))) |
(- (* b c) (* a d)) |
(* b (+ (* -1 (/ (* a d) (* b (+ (pow c 2) (pow d 2))))) (/ c (+ (pow c 2) (pow d 2))))) |
(* b (+ c (* -1 (/ (* a d) b)))) |
(* -1 (* b (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (/ (* a d) (* b (+ (pow c 2) (pow d 2))))))) |
(* -1 (* b (+ (* -1 c) (/ (* a d) b)))) |
(* -1 (/ a d)) |
(+ (* -1 (/ a d)) (/ (* b c) (pow d 2))) |
(+ (* -1 (/ a d)) (* c (+ (/ b (pow d 2)) (/ (* a c) (pow d 3))))) |
(+ (* -1 (/ a d)) (* c (+ (* c (- (* -1 (/ (* b c) (pow d 4))) (* -1 (/ a (pow d 3))))) (/ b (pow d 2))))) |
(pow d 2) |
(+ (pow c 2) (pow d 2)) |
(/ b c) |
(/ (+ b (* -1 (/ (* a d) c))) c) |
(/ (+ b (+ (* -1 (/ (* a d) c)) (* -1 (/ (* b (pow d 2)) (pow c 2))))) c) |
(/ (- (+ b (+ (* -1 (/ (* a d) c)) (/ (* a (pow d 3)) (pow c 3)))) (/ (* b (pow d 2)) (pow c 2))) c) |
(* c (+ b (* -1 (/ (* a d) c)))) |
(pow c 2) |
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2)))) |
(* -1 (/ (+ (* -1 b) (/ (* a d) c)) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (* b (pow d 2)) c))) c))) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (- (* -1 (/ (* a (pow d 3)) c)) (* -1 (* b (pow d 2)))) c))) c))) c)) |
(* -1 (* c (+ (* -1 b) (/ (* a d) c)))) |
(+ (* -1 (/ (* a d) (pow c 2))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* -1 (/ (* b d) (pow c 3))))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* d (- (/ (* a d) (pow c 4)) (/ b (pow c 3)))))) (/ b c)) |
(/ (+ (* -1 a) (/ (* b c) d)) d) |
(/ (+ (* -1 a) (+ (/ (* a (pow c 2)) (pow d 2)) (/ (* b c) d))) d) |
(/ (- (+ (* -1 a) (+ (* -1 (/ (* b (pow c 3)) (pow d 3))) (/ (* b c) d))) (* -1 (/ (* a (pow c 2)) (pow d 2)))) d) |
(* d (- (/ (* b c) d) a)) |
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2)))) |
(* -1 (/ (+ a (* -1 (/ (* b c) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* b c) (/ (* a (pow c 2)) d)) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow c 3)) d) (* a (pow c 2))) d)) (* b c)) d))) d)) |
(* -1 (* d (- (* -1 (/ (* b c) d)) (* -1 a)))) |
| Outputs |
|---|
(/ (* b c) (+ (pow c 2) (pow d 2))) |
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2)))) |
(-.f64 (*.f64 b c) (*.f64 a d)) |
(* b c) |
(*.f64 b c) |
(+ (* -1 (* a d)) (* b c)) |
(*.f64 a d) |
(* a d) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
| Inputs |
|---|
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(-.f64 (*.f64 b c) (*.f64 a d)) |
(*.f64 b c) |
(*.f64 a d) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
| Outputs |
|---|
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(-.f64 (*.f64 b c) (*.f64 a d)) |
(*.f64 b c) |
(*.f64 a d) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
Compiled 190 to 27 computations (85.8% saved)
5 alts after pruning (4 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 6 | 4 | 10 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 6 | 5 | 11 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 59.3% | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ▶ | 11.1% | (/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ▶ | 39.1% | (/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ▶ | 19.9% | (/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ▶ | 3.8% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
Compiled 99 to 64 computations (35.4% saved)
| 1× | egg-herbie |
Found 16 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| cost-diff | 0 | #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| cost-diff | 0 | (*.f64 b c) | |
| cost-diff | 0 | (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) | |
| cost-diff | 0 | (/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| cost-diff | 0 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| cost-diff | 0 | (*.f64 b c) | |
| cost-diff | 0 | #s(approx (- (* b c) (* a d)) (*.f64 b c)) | |
| cost-diff | 0 | (/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| cost-diff | 0 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| cost-diff | 0 | (*.f64 a d) | |
| cost-diff | 0 | #s(approx (- (* b c) (* a d)) (*.f64 a d)) | |
| cost-diff | 0 | (/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| cost-diff | 0 | (*.f64 a d) | |
| cost-diff | 0 | (*.f64 b c) | |
| cost-diff | 0 | (-.f64 (*.f64 b c) (*.f64 a d)) | |
| cost-diff | 0 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
(-.f64 (*.f64 b c) (*.f64 a d)) |
(*.f64 b c) |
b |
c |
(*.f64 a d) |
a |
d |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (- (* b c) (* a d)) (*.f64 a d)) |
(*.f64 a d) |
a |
d |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
c |
(*.f64 d d) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (- (* b c) (* a d)) (*.f64 b c)) |
(*.f64 b c) |
b |
c |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
d |
(/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) |
(*.f64 b c) |
b |
c |
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
d |
| Outputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
(-.f64 (*.f64 b c) (*.f64 a d)) |
(*.f64 b c) |
b |
c |
(*.f64 a d) |
a |
d |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (- (* b c) (* a d)) (*.f64 a d)) |
(*.f64 a d) |
a |
d |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
c |
(*.f64 d d) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (- (* b c) (* a d)) (*.f64 b c)) |
(*.f64 b c) |
b |
c |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
d |
(/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) |
(*.f64 b c) |
b |
c |
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
d |
Found 16 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| accuracy | 0.0078125 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| accuracy | 0.6992146216604117 | (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) | |
| accuracy | 25.760275984917705 | (/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| accuracy | 56.383774088543646 | #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| accuracy | 0.0 | (*.f64 b c) | |
| accuracy | 0.0078125 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| accuracy | 25.760275984917705 | (/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| accuracy | 28.800248239553934 | #s(approx (- (* b c) (* a d)) (*.f64 b c)) | |
| accuracy | 0.0 | (*.f64 a d) | |
| accuracy | 0.0078125 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| accuracy | 25.760275984917705 | (/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| accuracy | 61.410189907574996 | #s(approx (- (* b c) (* a d)) (*.f64 a d)) | |
| accuracy | 0.0 | (*.f64 b c) | |
| accuracy | 0.0 | (*.f64 a d) | |
| accuracy | 0.6992146216604117 | (-.f64 (*.f64 b c) (*.f64 a d)) | |
| accuracy | 61.55832403418052 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
| 32.0ms | 256× | 0 | valid |
Compiled 366 to 38 computations (89.6% saved)
ival-mult: 11.0ms (73.9% of total)ival-div: 2.0ms (13.4% of total)ival-sub: 1.0ms (6.7% of total)ival-add: 1.0ms (6.7% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
(-.f64 (*.f64 b c) (*.f64 a d)) |
(*.f64 b c) |
(*.f64 a d) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (- (* b c) (* a d)) (*.f64 a d)) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (- (* b c) (* a d)) (*.f64 b c)) |
(/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) |
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
(/ (* b c) (+ (pow c 2) (pow d 2))) |
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2)))) |
(* b c) |
(+ (* -1 (* a d)) (* b c)) |
(* a d) |
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) |
(* a (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (/ (* b c) (* a (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a d)) |
(* a (- (/ (* b c) a) d)) |
(* -1 (* a (+ (* -1 (/ (* b c) (* a (+ (pow c 2) (pow d 2))))) (/ d (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a (- (* -1 (/ (* b c) a)) (* -1 d)))) |
(- (* b c) (* a d)) |
(* b (+ (* -1 (/ (* a d) (* b (+ (pow c 2) (pow d 2))))) (/ c (+ (pow c 2) (pow d 2))))) |
(* b (+ c (* -1 (/ (* a d) b)))) |
(* -1 (* b (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (/ (* a d) (* b (+ (pow c 2) (pow d 2))))))) |
(* -1 (* b (+ (* -1 c) (/ (* a d) b)))) |
(* -1 (/ a d)) |
(+ (* -1 (/ a d)) (/ (* b c) (pow d 2))) |
(+ (* -1 (/ a d)) (* c (+ (/ b (pow d 2)) (/ (* a c) (pow d 3))))) |
(+ (* -1 (/ a d)) (* c (+ (* c (- (* -1 (/ (* b c) (pow d 4))) (* -1 (/ a (pow d 3))))) (/ b (pow d 2))))) |
(pow d 2) |
(+ (pow c 2) (pow d 2)) |
(/ b c) |
(/ (+ b (* -1 (/ (* a d) c))) c) |
(/ (+ b (+ (* -1 (/ (* a d) c)) (* -1 (/ (* b (pow d 2)) (pow c 2))))) c) |
(/ (- (+ b (+ (* -1 (/ (* a d) c)) (/ (* a (pow d 3)) (pow c 3)))) (/ (* b (pow d 2)) (pow c 2))) c) |
(* c (+ b (* -1 (/ (* a d) c)))) |
(pow c 2) |
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2)))) |
(* -1 (/ (+ (* -1 b) (/ (* a d) c)) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (* b (pow d 2)) c))) c))) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (- (* -1 (/ (* a (pow d 3)) c)) (* -1 (* b (pow d 2)))) c))) c))) c)) |
(* -1 (* c (+ (* -1 b) (/ (* a d) c)))) |
(+ (* -1 (/ (* a d) (pow c 2))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* -1 (/ (* b d) (pow c 3))))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* d (- (/ (* a d) (pow c 4)) (/ b (pow c 3)))))) (/ b c)) |
(/ (+ (* -1 a) (/ (* b c) d)) d) |
(/ (+ (* -1 a) (+ (/ (* a (pow c 2)) (pow d 2)) (/ (* b c) d))) d) |
(/ (- (+ (* -1 a) (+ (* -1 (/ (* b (pow c 3)) (pow d 3))) (/ (* b c) d))) (* -1 (/ (* a (pow c 2)) (pow d 2)))) d) |
(* d (- (/ (* b c) d) a)) |
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2)))) |
(* -1 (/ (+ a (* -1 (/ (* b c) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* b c) (/ (* a (pow c 2)) d)) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow c 3)) d) (* a (pow c 2))) d)) (* b c)) d))) d)) |
(* -1 (* d (- (* -1 (/ (* b c) d)) (* -1 a)))) |
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | b | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (* a d) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (+ (* c c) (* d d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* a d)) |
| 1.0ms | c | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (* a d) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (+ (* c c) (* d d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* a d)) |
| 1.0ms | a | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (* a d) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (+ (* c c) (* d d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* a d)) |
| 1.0ms | d | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (* a d) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (+ (* c c) (* d d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* a d)) |
| 1.0ms | a | @ | 0 | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (* a d) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (+ (* c c) (* d d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* a d)) |
| 1× | egg-herbie |
| Inputs |
|---|
(/ (* b c) (+ (pow c 2) (pow d 2))) |
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2)))) |
(* b c) |
(+ (* -1 (* a d)) (* b c)) |
(* a d) |
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) |
(* a (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (/ (* b c) (* a (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a d)) |
(* a (- (/ (* b c) a) d)) |
(* -1 (* a (+ (* -1 (/ (* b c) (* a (+ (pow c 2) (pow d 2))))) (/ d (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a (- (* -1 (/ (* b c) a)) (* -1 d)))) |
(- (* b c) (* a d)) |
(* b (+ (* -1 (/ (* a d) (* b (+ (pow c 2) (pow d 2))))) (/ c (+ (pow c 2) (pow d 2))))) |
(* b (+ c (* -1 (/ (* a d) b)))) |
(* -1 (* b (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (/ (* a d) (* b (+ (pow c 2) (pow d 2))))))) |
(* -1 (* b (+ (* -1 c) (/ (* a d) b)))) |
(* -1 (/ a d)) |
(+ (* -1 (/ a d)) (/ (* b c) (pow d 2))) |
(+ (* -1 (/ a d)) (* c (+ (/ b (pow d 2)) (/ (* a c) (pow d 3))))) |
(+ (* -1 (/ a d)) (* c (+ (* c (- (* -1 (/ (* b c) (pow d 4))) (* -1 (/ a (pow d 3))))) (/ b (pow d 2))))) |
(pow d 2) |
(+ (pow c 2) (pow d 2)) |
(/ b c) |
(/ (+ b (* -1 (/ (* a d) c))) c) |
(/ (+ b (+ (* -1 (/ (* a d) c)) (* -1 (/ (* b (pow d 2)) (pow c 2))))) c) |
(/ (- (+ b (+ (* -1 (/ (* a d) c)) (/ (* a (pow d 3)) (pow c 3)))) (/ (* b (pow d 2)) (pow c 2))) c) |
(* c (+ b (* -1 (/ (* a d) c)))) |
(pow c 2) |
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2)))) |
(* -1 (/ (+ (* -1 b) (/ (* a d) c)) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (* b (pow d 2)) c))) c))) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (- (* -1 (/ (* a (pow d 3)) c)) (* -1 (* b (pow d 2)))) c))) c))) c)) |
(* -1 (* c (+ (* -1 b) (/ (* a d) c)))) |
(+ (* -1 (/ (* a d) (pow c 2))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* -1 (/ (* b d) (pow c 3))))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* d (- (/ (* a d) (pow c 4)) (/ b (pow c 3)))))) (/ b c)) |
(/ (+ (* -1 a) (/ (* b c) d)) d) |
(/ (+ (* -1 a) (+ (/ (* a (pow c 2)) (pow d 2)) (/ (* b c) d))) d) |
(/ (- (+ (* -1 a) (+ (* -1 (/ (* b (pow c 3)) (pow d 3))) (/ (* b c) d))) (* -1 (/ (* a (pow c 2)) (pow d 2)))) d) |
(* d (- (/ (* b c) d) a)) |
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2)))) |
(* -1 (/ (+ a (* -1 (/ (* b c) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* b c) (/ (* a (pow c 2)) d)) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow c 3)) d) (* a (pow c 2))) d)) (* b c)) d))) d)) |
(* -1 (* d (- (* -1 (/ (* b c) d)) (* -1 a)))) |
| Outputs |
|---|
(/ (* b c) (+ (pow c 2) (pow d 2))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2)))) |
(-.f64 (*.f64 b c) (*.f64 a d)) |
(* b c) |
(*.f64 b c) |
(+ (* -1 (* a d)) (* b c)) |
(*.f64 a d) |
(* a d) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) |
#s(approx (- (* b c) (* a d)) (*.f64 a d)) |
(* a (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (/ (* b c) (* a (+ (pow c 2) (pow d 2)))))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(* -1 (* a d)) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(* a (- (/ (* b c) a) d)) |
#s(approx (- (* b c) (* a d)) (*.f64 b c)) |
(* -1 (* a (+ (* -1 (/ (* b c) (* a (+ (pow c 2) (pow d 2))))) (/ d (+ (pow c 2) (pow d 2)))))) |
(/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(* -1 (* a (- (* -1 (/ (* b c) a)) (* -1 d)))) |
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) |
(- (* b c) (* a d)) |
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
(-.f64 (*.f64 b c) (*.f64 a d)) |
(*.f64 b c) |
(*.f64 a d) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (- (* b c) (* a d)) (*.f64 a d)) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (- (* b c) (* a d)) (*.f64 b c)) |
(/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) |
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
(-.f64 (*.f64 b c) (*.f64 a d)) |
(*.f64 b c) |
(*.f64 a d) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (- (* b c) (* a d)) (*.f64 a d)) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (- (* b c) (* a d)) (*.f64 b c)) |
(/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) |
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) |
Compiled 760 to 43 computations (94.3% saved)
9 alts after pruning (4 fresh and 5 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 24 | 4 | 28 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 4 | 4 |
| Done | 0 | 1 | 1 |
| Total | 24 | 9 | 33 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 59.3% | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 11.1% | (/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 39.1% | (/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 19.9% | (/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 3.8% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
| ▶ | 2.3% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ▶ | 2.3% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
| ▶ | 4.0% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
| ▶ | 4.6% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
Compiled 215 to 126 computations (41.4% saved)
| 1× | egg-herbie |
Found 14 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 (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| cost-diff | 0 | (*.f64 b c) | |
| cost-diff | 0 | (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) | |
| cost-diff | 0 | #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))) | |
| cost-diff | 0 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) | |
| cost-diff | 0 | (*.f64 b c) | |
| cost-diff | 0 | #s(approx (- (* b c) (* a d)) (*.f64 b c)) | |
| cost-diff | 0 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) | |
| cost-diff | 0 | (*.f64 a d) | |
| cost-diff | 0 | #s(approx (- (* b c) (* a d)) (*.f64 a d)) | |
| cost-diff | 0 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
#s(approx (- (* b c) (* a d)) (*.f64 a d)) |
(*.f64 a d) |
a |
d |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
#s(approx (- (* b c) (* a d)) (*.f64 b c)) |
(*.f64 b c) |
b |
c |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
#s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))) |
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) |
(*.f64 b c) |
b |
c |
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
d |
#s(approx (/ (- (* b c) (* a 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 (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
#s(approx (- (* b c) (* a d)) (*.f64 a d)) |
(*.f64 a d) |
a |
d |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
#s(approx (- (* b c) (* a d)) (*.f64 b c)) |
(*.f64 b c) |
b |
c |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
#s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))) |
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) |
(*.f64 b c) |
b |
c |
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(*.f64 c c) |
(*.f64 d d) |
d |
#s(approx (/ (- (* b c) (* a 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 14 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.55995142458805 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| accuracy | 0.0078125 | (+.f64 (*.f64 c c) (*.f64 d d)) | |
| accuracy | 0.6992146216604117 | (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) | |
| accuracy | 56.383774088543646 | #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) | |
| accuracy | 61.55832403418052 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) | |
| accuracy | 0.0 | (*.f64 b c) | |
| accuracy | 28.800248239553934 | #s(approx (- (* b c) (* a d)) (*.f64 b c)) | |
| accuracy | 61.55832403418052 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) | |
| accuracy | 0.0 | (*.f64 a d) | |
| accuracy | 61.410189907574996 | #s(approx (- (* b c) (* a d)) (*.f64 a d)) | |
| accuracy | 61.55832403418052 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
| 26.0ms | 256× | 0 | valid |
Compiled 368 to 38 computations (89.7% saved)
ival-mult: 7.0ms (66.3% of total)ival-sub: 1.0ms (9.5% of total)ival-div: 1.0ms (9.5% of total)ival-add: 1.0ms (9.5% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
#s(approx (- (* b c) (* a d)) (*.f64 a d)) |
(*.f64 a d) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
#s(approx (- (* b c) (* a d)) (*.f64 b c)) |
(*.f64 b c) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
#s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))) |
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) |
#s(approx (/ (- (* b c) (* a 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) |
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
(/ (* b c) (+ (pow c 2) (pow d 2))) |
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2)))) |
(* b c) |
(+ (* -1 (* a d)) (* b c)) |
(* a d) |
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) |
(* a (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (/ (* b c) (* a (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a d)) |
(* a (- (/ (* b c) a) d)) |
(* -1 (* a (+ (* -1 (/ (* b c) (* a (+ (pow c 2) (pow d 2))))) (/ d (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a (- (* -1 (/ (* b c) a)) (* -1 d)))) |
(- (* b c) (* a d)) |
(* b (+ (* -1 (/ (* a d) (* b (+ (pow c 2) (pow d 2))))) (/ c (+ (pow c 2) (pow d 2))))) |
(* b (+ c (* -1 (/ (* a d) b)))) |
(* -1 (* b (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (/ (* a d) (* b (+ (pow c 2) (pow d 2))))))) |
(* -1 (* b (+ (* -1 c) (/ (* a d) b)))) |
(* -1 (/ a d)) |
(+ (* -1 (/ a d)) (/ (* b c) (pow d 2))) |
(+ (* -1 (/ a d)) (* c (+ (/ b (pow d 2)) (/ (* a c) (pow d 3))))) |
(+ (* -1 (/ a d)) (* c (+ (* c (- (* -1 (/ (* b c) (pow d 4))) (* -1 (/ a (pow d 3))))) (/ b (pow d 2))))) |
(pow d 2) |
(+ (pow c 2) (pow d 2)) |
(pow c 2) |
(/ b c) |
(/ (+ b (* -1 (/ (* a d) c))) c) |
(/ (+ b (+ (* -1 (/ (* a d) c)) (* -1 (/ (* b (pow d 2)) (pow c 2))))) c) |
(/ (- (+ b (+ (* -1 (/ (* a d) c)) (/ (* a (pow d 3)) (pow c 3)))) (/ (* b (pow d 2)) (pow c 2))) c) |
(* c (+ b (* -1 (/ (* a d) c)))) |
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2)))) |
(* -1 (/ (+ (* -1 b) (/ (* a d) c)) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (* b (pow d 2)) c))) c))) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (- (* -1 (/ (* a (pow d 3)) c)) (* -1 (* b (pow d 2)))) c))) c))) c)) |
(* -1 (* c (+ (* -1 b) (/ (* a d) c)))) |
(+ (* -1 (/ (* a d) (pow c 2))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* -1 (/ (* b d) (pow c 3))))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* d (- (/ (* a d) (pow c 4)) (/ b (pow c 3)))))) (/ b c)) |
(/ (+ (* -1 a) (/ (* b c) d)) d) |
(/ (+ (* -1 a) (+ (/ (* a (pow c 2)) (pow d 2)) (/ (* b c) d))) d) |
(/ (- (+ (* -1 a) (+ (* -1 (/ (* b (pow c 3)) (pow d 3))) (/ (* b c) d))) (* -1 (/ (* a (pow c 2)) (pow d 2)))) d) |
(* d (- (/ (* b c) d) a)) |
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2)))) |
(* -1 (/ (+ a (* -1 (/ (* b c) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* b c) (/ (* a (pow c 2)) d)) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow c 3)) d) (* a (pow c 2))) d)) (* b c)) d))) d)) |
(* -1 (* d (- (* -1 (/ (* b c) d)) (* -1 a)))) |
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | c | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* a d) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (- (* b c) (* a d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d) (* a d)) |
| 1.0ms | d | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* a d) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (- (* b c) (* a d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d) (* a d)) |
| 1.0ms | d | @ | inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* a d) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (- (* b c) (* a d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d) (* a d)) |
| 1.0ms | a | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* a d) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (- (* b c) (* a d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d) (* a d)) |
| 1.0ms | c | @ | inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* a d) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* b c) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (- (* b c) (* a d)) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d) (* a d)) |
| 1× | egg-herbie |
| Inputs |
|---|
(/ (* b c) (+ (pow c 2) (pow d 2))) |
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2)))) |
(* b c) |
(+ (* -1 (* a d)) (* b c)) |
(* a d) |
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) |
(* a (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (/ (* b c) (* a (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a d)) |
(* a (- (/ (* b c) a) d)) |
(* -1 (* a (+ (* -1 (/ (* b c) (* a (+ (pow c 2) (pow d 2))))) (/ d (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a (- (* -1 (/ (* b c) a)) (* -1 d)))) |
(- (* b c) (* a d)) |
(* b (+ (* -1 (/ (* a d) (* b (+ (pow c 2) (pow d 2))))) (/ c (+ (pow c 2) (pow d 2))))) |
(* b (+ c (* -1 (/ (* a d) b)))) |
(* -1 (* b (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (/ (* a d) (* b (+ (pow c 2) (pow d 2))))))) |
(* -1 (* b (+ (* -1 c) (/ (* a d) b)))) |
(* -1 (/ a d)) |
(+ (* -1 (/ a d)) (/ (* b c) (pow d 2))) |
(+ (* -1 (/ a d)) (* c (+ (/ b (pow d 2)) (/ (* a c) (pow d 3))))) |
(+ (* -1 (/ a d)) (* c (+ (* c (- (* -1 (/ (* b c) (pow d 4))) (* -1 (/ a (pow d 3))))) (/ b (pow d 2))))) |
(pow d 2) |
(+ (pow c 2) (pow d 2)) |
(pow c 2) |
(/ b c) |
(/ (+ b (* -1 (/ (* a d) c))) c) |
(/ (+ b (+ (* -1 (/ (* a d) c)) (* -1 (/ (* b (pow d 2)) (pow c 2))))) c) |
(/ (- (+ b (+ (* -1 (/ (* a d) c)) (/ (* a (pow d 3)) (pow c 3)))) (/ (* b (pow d 2)) (pow c 2))) c) |
(* c (+ b (* -1 (/ (* a d) c)))) |
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2)))) |
(* -1 (/ (+ (* -1 b) (/ (* a d) c)) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (* b (pow d 2)) c))) c))) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (- (* -1 (/ (* a (pow d 3)) c)) (* -1 (* b (pow d 2)))) c))) c))) c)) |
(* -1 (* c (+ (* -1 b) (/ (* a d) c)))) |
(+ (* -1 (/ (* a d) (pow c 2))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* -1 (/ (* b d) (pow c 3))))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* d (- (/ (* a d) (pow c 4)) (/ b (pow c 3)))))) (/ b c)) |
(/ (+ (* -1 a) (/ (* b c) d)) d) |
(/ (+ (* -1 a) (+ (/ (* a (pow c 2)) (pow d 2)) (/ (* b c) d))) d) |
(/ (- (+ (* -1 a) (+ (* -1 (/ (* b (pow c 3)) (pow d 3))) (/ (* b c) d))) (* -1 (/ (* a (pow c 2)) (pow d 2)))) d) |
(* d (- (/ (* b c) d) a)) |
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2)))) |
(* -1 (/ (+ a (* -1 (/ (* b c) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* b c) (/ (* a (pow c 2)) d)) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow c 3)) d) (* a (pow c 2))) d)) (* b c)) d))) d)) |
(* -1 (* d (- (* -1 (/ (* b c) d)) (* -1 a)))) |
| Outputs |
|---|
(/ (* b c) (+ (pow c 2) (pow d 2))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2)))) |
#s(approx (- (* b c) (* a d)) (*.f64 a d)) |
(* b c) |
(*.f64 a d) |
(+ (* -1 (* a d)) (* b c)) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
(* a d) |
#s(approx (- (* b c) (* a d)) (*.f64 b c)) |
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) |
(*.f64 b c) |
(* a (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (/ (* b c) (* a (+ (pow c 2) (pow d 2)))))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
(* -1 (* a d)) |
#s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))) |
(* a (- (/ (* b c) a) d)) |
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) |
(* -1 (* a (+ (* -1 (/ (* b c) (* a (+ (pow c 2) (pow d 2))))) (/ d (+ (pow c 2) (pow d 2)))))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
(* -1 (* a (- (* -1 (/ (* b c) a)) (* -1 d)))) |
(+.f64 (*.f64 c c) (*.f64 d d)) |
(- (* b c) (* a d)) |
(*.f64 c c) |
(* b (+ (* -1 (/ (* a d) (* b (+ (pow c 2) (pow d 2))))) (/ c (+ (pow c 2) (pow d 2))))) |
(*.f64 d d) |
(* b (+ c (* -1 (/ (* a d) b)))) |
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
#s(approx (- (* b c) (* a d)) (*.f64 a d)) |
(*.f64 a d) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
#s(approx (- (* b c) (* a d)) (*.f64 b c)) |
(*.f64 b c) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
#s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))) |
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) |
#s(approx (/ (- (* b c) (* a 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) |
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
#s(approx (- (* b c) (* a d)) (*.f64 a d)) |
(*.f64 a d) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
#s(approx (- (* b c) (* a d)) (*.f64 b c)) |
(*.f64 b c) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
#s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))) |
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) |
#s(approx (/ (- (* b c) (* a 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) |
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))) |
Compiled 971 to 43 computations (95.6% saved)
11 alts after pruning (2 fresh and 9 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 27 | 2 | 29 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 4 | 4 |
| Done | 0 | 5 | 5 |
| Total | 27 | 11 | 38 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 59.3% | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 11.1% | (/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 39.1% | (/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 19.9% | (/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 3.8% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
| ✓ | 2.3% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ▶ | 6.0% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
| ✓ | 2.3% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
| ▶ | 4.7% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
| ✓ | 4.0% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
| ✓ | 4.6% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
Compiled 261 to 153 computations (41.4% saved)
| 1× | egg-herbie |
Found 5 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| cost-diff | 0 | (*.f64 d d) | |
| cost-diff | 0 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) | |
| cost-diff | 0 | (*.f64 c c) | |
| cost-diff | 0 | #s(approx (- (* b c) (* a d)) (*.f64 c c)) | |
| cost-diff | 0 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
#s(approx (- (* b c) (* a d)) (*.f64 c c)) |
(*.f64 c c) |
c |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
(*.f64 d d) |
d |
| Outputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
#s(approx (- (* b c) (* a d)) (*.f64 c c)) |
(*.f64 c c) |
c |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
(*.f64 d d) |
d |
Found 5 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| accuracy | 0.0 | (*.f64 d d) | |
| accuracy | 60.16726351560913 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) | |
| accuracy | 0.0 | (*.f64 c c) | |
| accuracy | 57.058678995640584 | #s(approx (- (* b c) (* a d)) (*.f64 c c)) | |
| accuracy | 61.55832403418052 | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
| 19.0ms | 256× | 0 | valid |
Compiled 112 to 29 computations (74.1% saved)
ival-mult: 6.0ms (57.1% of total)ival-sub: 1.0ms (9.5% of total)ival-div: 1.0ms (9.5% of total)ival-add: 1.0ms (9.5% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
#s(approx (- (* b c) (* a d)) (*.f64 c c)) |
(*.f64 c c) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
(*.f64 d d) |
| Outputs |
|---|
(/ (* b c) (+ (pow c 2) (pow d 2))) |
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2)))) |
(* b c) |
(+ (* -1 (* a d)) (* b c)) |
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) |
(* a (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (/ (* b c) (* a (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a d)) |
(* a (- (/ (* b c) a) d)) |
(* -1 (* a (+ (* -1 (/ (* b c) (* a (+ (pow c 2) (pow d 2))))) (/ d (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a (- (* -1 (/ (* b c) a)) (* -1 d)))) |
(- (* b c) (* a d)) |
(* b (+ (* -1 (/ (* a d) (* b (+ (pow c 2) (pow d 2))))) (/ c (+ (pow c 2) (pow d 2))))) |
(* b (+ c (* -1 (/ (* a d) b)))) |
(* -1 (* b (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (/ (* a d) (* b (+ (pow c 2) (pow d 2))))))) |
(* -1 (* b (+ (* -1 c) (/ (* a d) b)))) |
(* -1 (/ a d)) |
(+ (* -1 (/ a d)) (/ (* b c) (pow d 2))) |
(+ (* -1 (/ a d)) (* c (+ (/ b (pow d 2)) (/ (* a c) (pow d 3))))) |
(+ (* -1 (/ a d)) (* c (+ (* c (- (* -1 (/ (* b c) (pow d 4))) (* -1 (/ a (pow d 3))))) (/ b (pow d 2))))) |
(pow c 2) |
(/ b c) |
(/ (+ b (* -1 (/ (* a d) c))) c) |
(/ (+ b (+ (* -1 (/ (* a d) c)) (* -1 (/ (* b (pow d 2)) (pow c 2))))) c) |
(/ (- (+ b (+ (* -1 (/ (* a d) c)) (/ (* a (pow d 3)) (pow c 3)))) (/ (* b (pow d 2)) (pow c 2))) c) |
(* c (+ b (* -1 (/ (* a d) c)))) |
(* -1 (/ (+ (* -1 b) (/ (* a d) c)) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (* b (pow d 2)) c))) c))) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (- (* -1 (/ (* a (pow d 3)) c)) (* -1 (* b (pow d 2)))) c))) c))) c)) |
(* -1 (* c (+ (* -1 b) (/ (* a d) c)))) |
(+ (* -1 (/ (* a d) (pow c 2))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* -1 (/ (* b d) (pow c 3))))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* d (- (/ (* a d) (pow c 4)) (/ b (pow c 3)))))) (/ b c)) |
(pow d 2) |
(/ (+ (* -1 a) (/ (* b c) d)) d) |
(/ (+ (* -1 a) (+ (/ (* a (pow c 2)) (pow d 2)) (/ (* b c) d))) d) |
(/ (- (+ (* -1 a) (+ (* -1 (/ (* b (pow c 3)) (pow d 3))) (/ (* b c) d))) (* -1 (/ (* a (pow c 2)) (pow d 2)))) d) |
(* d (- (/ (* b c) d) a)) |
(* -1 (/ (+ a (* -1 (/ (* b c) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* b c) (/ (* a (pow c 2)) d)) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow c 3)) d) (* a (pow c 2))) d)) (* b c)) d))) d)) |
(* -1 (* d (- (* -1 (/ (* b c) d)) (* -1 a)))) |
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | c | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* c c) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (* d d)) |
| 1.0ms | d | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* c c) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (* d d)) |
| 1.0ms | a | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* c c) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (* d d)) |
| 1.0ms | d | @ | inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* c c) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (* d d)) |
| 1.0ms | b | @ | -inf | ((/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (- (* b c) (* a d)) (* c c) (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (* d d)) |
| 1× | egg-herbie |
| Inputs |
|---|
(/ (* b c) (+ (pow c 2) (pow d 2))) |
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2)))) |
(* b c) |
(+ (* -1 (* a d)) (* b c)) |
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) |
(* a (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (/ (* b c) (* a (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a d)) |
(* a (- (/ (* b c) a) d)) |
(* -1 (* a (+ (* -1 (/ (* b c) (* a (+ (pow c 2) (pow d 2))))) (/ d (+ (pow c 2) (pow d 2)))))) |
(* -1 (* a (- (* -1 (/ (* b c) a)) (* -1 d)))) |
(- (* b c) (* a d)) |
(* b (+ (* -1 (/ (* a d) (* b (+ (pow c 2) (pow d 2))))) (/ c (+ (pow c 2) (pow d 2))))) |
(* b (+ c (* -1 (/ (* a d) b)))) |
(* -1 (* b (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (/ (* a d) (* b (+ (pow c 2) (pow d 2))))))) |
(* -1 (* b (+ (* -1 c) (/ (* a d) b)))) |
(* -1 (/ a d)) |
(+ (* -1 (/ a d)) (/ (* b c) (pow d 2))) |
(+ (* -1 (/ a d)) (* c (+ (/ b (pow d 2)) (/ (* a c) (pow d 3))))) |
(+ (* -1 (/ a d)) (* c (+ (* c (- (* -1 (/ (* b c) (pow d 4))) (* -1 (/ a (pow d 3))))) (/ b (pow d 2))))) |
(pow c 2) |
(/ b c) |
(/ (+ b (* -1 (/ (* a d) c))) c) |
(/ (+ b (+ (* -1 (/ (* a d) c)) (* -1 (/ (* b (pow d 2)) (pow c 2))))) c) |
(/ (- (+ b (+ (* -1 (/ (* a d) c)) (/ (* a (pow d 3)) (pow c 3)))) (/ (* b (pow d 2)) (pow c 2))) c) |
(* c (+ b (* -1 (/ (* a d) c)))) |
(* -1 (/ (+ (* -1 b) (/ (* a d) c)) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (* b (pow d 2)) c))) c))) c)) |
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (- (* -1 (/ (* a (pow d 3)) c)) (* -1 (* b (pow d 2)))) c))) c))) c)) |
(* -1 (* c (+ (* -1 b) (/ (* a d) c)))) |
(+ (* -1 (/ (* a d) (pow c 2))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* -1 (/ (* b d) (pow c 3))))) (/ b c)) |
(+ (* d (+ (* -1 (/ a (pow c 2))) (* d (- (/ (* a d) (pow c 4)) (/ b (pow c 3)))))) (/ b c)) |
(pow d 2) |
(/ (+ (* -1 a) (/ (* b c) d)) d) |
(/ (+ (* -1 a) (+ (/ (* a (pow c 2)) (pow d 2)) (/ (* b c) d))) d) |
(/ (- (+ (* -1 a) (+ (* -1 (/ (* b (pow c 3)) (pow d 3))) (/ (* b c) d))) (* -1 (/ (* a (pow c 2)) (pow d 2)))) d) |
(* d (- (/ (* b c) d) a)) |
(* -1 (/ (+ a (* -1 (/ (* b c) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* b c) (/ (* a (pow c 2)) d)) d))) d)) |
(* -1 (/ (+ a (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow c 3)) d) (* a (pow c 2))) d)) (* b c)) d))) d)) |
(* -1 (* d (- (* -1 (/ (* b c) d)) (* -1 a)))) |
| Outputs |
|---|
(/ (* b c) (+ (pow c 2) (pow d 2))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2)))) |
#s(approx (- (* b c) (* a d)) (*.f64 c c)) |
(* b c) |
(*.f64 c c) |
(+ (* -1 (* a d)) (* b c)) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) |
(*.f64 d d) |
| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
#s(approx (- (* b c) (* a d)) (*.f64 c c)) |
(*.f64 c c) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
(*.f64 d d) |
| Outputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
#s(approx (- (* b c) (* a d)) (*.f64 c c)) |
(*.f64 c c) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
(*.f64 d d) |
Compiled 205 to 19 computations (90.7% saved)
11 alts after pruning (0 fresh and 11 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 7 | 0 | 7 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 2 | 2 |
| Done | 0 | 9 | 9 |
| Total | 7 | 11 | 18 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 59.3% | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 11.1% | (/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 39.1% | (/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 19.9% | (/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 3.8% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
| ✓ | 2.3% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
| ✓ | 6.0% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
| ✓ | 2.3% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
| ✓ | 4.7% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
| ✓ | 4.0% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
| ✓ | 4.6% | #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
Compiled 522 to 187 computations (64.2% saved)
| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
5 calls:
| 7.0ms | c |
| 4.0ms | d |
| 4.0ms | b |
| 4.0ms | a |
| 4.0ms | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 59.3% | 1 | a |
| 59.3% | 1 | b |
| 59.3% | 1 | c |
| 59.3% | 1 | d |
| 59.3% | 1 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
Compiled 19 to 27 computations (-42.1% saved)
| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
5 calls:
| 5.0ms | c |
| 4.0ms | a |
| 3.0ms | b |
| 3.0ms | d |
| 3.0ms | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 39.1% | 1 | d |
| 39.1% | 1 | b |
| 39.1% | 1 | c |
| 39.1% | 1 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| 39.1% | 1 | a |
Compiled 19 to 27 computations (-42.1% saved)
| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Outputs |
|---|
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
5 calls:
| 4.0ms | b |
| 3.0ms | c |
| 3.0ms | d |
| 3.0ms | a |
| 3.0ms | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 19.9% | 1 | a |
| 19.9% | 1 | d |
| 19.9% | 1 | b |
| 19.9% | 1 | c |
| 19.9% | 1 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
Compiled 19 to 27 computations (-42.1% saved)
| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))) |
| Outputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
5 calls:
| 4.0ms | d |
| 3.0ms | b |
| 3.0ms | c |
| 3.0ms | a |
| 3.0ms | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 6.0% | 1 | b |
| 6.0% | 1 | d |
| 6.0% | 1 | c |
| 6.0% | 1 | a |
| 6.0% | 1 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
Compiled 19 to 27 computations (-42.1% saved)
| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
| Outputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c))) |
5 calls:
| 2.0ms | c |
| 2.0ms | a |
| 2.0ms | b |
| 2.0ms | d |
| 2.0ms | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 4.7% | 1 | d |
| 4.7% | 1 | a |
| 6.5% | 2 | c |
| 4.7% | 1 | b |
| 4.7% | 1 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
Compiled 19 to 27 computations (-42.1% saved)
Total -1.6b remaining (-2.6%)
Threshold costs -1.6b (-2.6%)
| Inputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c))) |
| Outputs |
|---|
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
5 calls:
| 2.0ms | b |
| 1.0ms | c |
| 1.0ms | d |
| 1.0ms | a |
| 1.0ms | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 4.6% | 1 | b |
| 4.6% | 1 | d |
| 4.6% | 1 | a |
| 4.6% | 1 | (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
| 4.6% | 1 | c |
Compiled 19 to 27 computations (-42.1% saved)
| 1× | binary-search |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 15.0ms | -1.832453680024499e+107 | -2.276732189747335e+101 |
| 10.0ms | 144× | 0 | valid |
Compiled 504 to 288 computations (42.9% saved)
ival-mult: 4.0ms (67.9% of total)ival-sub: 1.0ms (17% of total)ival-div: 1.0ms (17% of total)ival-add: 1.0ms (17% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| 1× | egg-herbie |
| Inputs |
|---|
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
(if (<=.f64 c #s(literal -42000000000000003263327066623490596715516503484791441111337112716199323235536979866592698974757176999936 binary64)) #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c)))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
| Outputs |
|---|
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d))) |
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d)) |
(if (<=.f64 c #s(literal -42000000000000003263327066623490596715516503484791441111337112716199323235536979866592698974757176999936 binary64)) #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) #s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c)))) |
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d))) |
| 1× | done |
Compiled 157 to 29 computations (81.5% saved)
Compiled 418 to 122 computations (70.8% saved)
Loading profile data...