
Time bar (total: 893.0ms)
| 1× | search |
| Probability | Valid | Unknown | Precondition | Infinite | Domain | Can't | Iter |
|---|---|---|---|---|---|---|---|
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 0 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 1 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 2 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 3 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 4 |
| 30.8% | 25% | 56.2% | 0.1% | 0% | 18.7% | 0% | 5 |
| 32% | 25% | 53.1% | 0.1% | 0% | 21.9% | 0% | 6 |
| 55.8% | 37.5% | 29.7% | 0.1% | 0% | 32.8% | 0% | 7 |
| 57.8% | 37.5% | 27.3% | 0.1% | 0% | 35.1% | 0% | 8 |
| 74.2% | 43.7% | 15.2% | 0.1% | 0% | 41% | 0% | 9 |
| 75.9% | 43.7% | 13.9% | 0.1% | 0% | 42.3% | 0% | 10 |
| 85.9% | 46.8% | 7.7% | 0.1% | 0% | 45.4% | 0% | 11 |
| 87% | 46.8% | 7% | 0.1% | 0% | 46.1% | 0% | 12 |
Compiled 10 to 8 computations (20% saved)
| 399.0ms | 8 256× | 0 | valid |
| 31.0ms | 641× | 0 | invalid |
ival-mult: 128.0ms (52.6% of total)ival-sqrt: 65.0ms (26.7% of total)ival-sub: 40.0ms (16.4% of total)ival-true: 7.0ms (2.9% of total)ival-assert: 4.0ms (1.6% of total)| Ground Truth | Overpredictions | Example | Underpredictions | Example | Subexpression |
|---|---|---|---|---|---|
| 134 | 0 | - | 0 | - | (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
| 16 | 0 | - | 0 | - | (-.f64 (*.f64 a a) (*.f64 b b)) |
| 0 | 0 | - | 0 | - | (*.f64 a a) |
| 0 | 0 | - | 0 | - | a |
| 0 | 0 | - | 0 | - | b |
| 0 | 0 | - | 0 | - | (*.f64 b b) |
| Operator | Subexpression | Explanation | Count | |
|---|---|---|---|---|
sqrt.f64 | (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) | oflow-rescue | 117 | 0 |
| ↳ | (*.f64 b b) | overflow | 16 | |
| ↳ | (-.f64 (*.f64 a a) (*.f64 b b)) | overflow | 117 | |
| ↳ | (*.f64 a a) | overflow | 117 | |
sqrt.f64 | (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) | uflow-rescue | 17 | 0 |
| ↳ | (*.f64 b b) | underflow | 111 | |
| ↳ | (-.f64 (*.f64 a a) (*.f64 b b)) | underflow | 17 | |
| ↳ | (*.f64 a a) | underflow | 17 | |
-.f64 | (-.f64 (*.f64 a a) (*.f64 b b)) | nan-rescue | 16 | 0 |
| ↳ | (*.f64 a a) | overflow | 117 | |
| ↳ | (*.f64 b b) | overflow | 16 |
| Predicted + | Predicted - | |
|---|---|---|
| + | 134 | 0 |
| - | 0 | 122 |
| Predicted + | Predicted Maybe | Predicted - | |
|---|---|---|---|
| + | 134 | 0 | 0 |
| - | 0 | 0 | 122 |
| number | freq |
|---|---|
| 0 | 122 |
| 1 | 118 |
| 2 | 16 |
| Predicted + | Predicted Maybe | Predicted - | |
|---|---|---|---|
| + | 1 | 0 | 0 |
| - | 0 | 0 | 0 |
| 29.0ms | 512× | 0 | valid |
Compiled 81 to 28 computations (65.4% saved)
ival-mult: 10.0ms (60.2% of total)ival-sqrt: 4.0ms (24.1% of total)ival-sub: 2.0ms (12% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| 1× | egg-herbie |
| Inputs |
|---|
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
| Outputs |
|---|
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
Compiled 8 to 6 computations (25% saved)
Compiled 0 to 2 computations (-∞% saved)
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 50.9% | (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
Compiled 8 to 6 computations (25% saved)
| 1× | egg-herbie |
Found 4 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| cost-diff | 0 | (*.f64 b b) | |
| cost-diff | 0 | (*.f64 a a) | |
| cost-diff | 0 | (-.f64 (*.f64 a a) (*.f64 b b)) | |
| cost-diff | 0 | (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
| Inputs |
|---|
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
(-.f64 (*.f64 a a) (*.f64 b b)) |
(*.f64 a a) |
a |
(*.f64 b b) |
b |
| Outputs |
|---|
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
(-.f64 (*.f64 a a) (*.f64 b b)) |
(*.f64 a a) |
a |
(*.f64 b b) |
b |
Found 4 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| accuracy | 0.0 | (*.f64 b b) | |
| accuracy | 0.0 | (*.f64 a a) | |
| accuracy | 3.19140625 | (-.f64 (*.f64 a a) (*.f64 b b)) | |
| accuracy | 31.106929925090846 | (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
| 13.0ms | 256× | 0 | valid |
Compiled 48 to 14 computations (70.8% saved)
ival-mult: 4.0ms (59.5% of total)ival-sqrt: 2.0ms (29.8% of total)ival-sub: 1.0ms (14.9% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
(-.f64 (*.f64 a a) (*.f64 b b)) |
(*.f64 a a) |
(*.f64 b b) |
| Outputs |
|---|
(* b (sqrt -1)) |
(+ (* 1/2 (/ (pow a 2) (* b (sqrt -1)))) (* b (sqrt -1))) |
(+ (* b (sqrt -1)) (* (pow a 2) (+ (* -1/8 (/ (pow a 2) (* (pow b 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* b (sqrt -1))))))) |
(+ (* b (sqrt -1)) (* (pow a 2) (+ (* (pow a 2) (- (* 1/16 (/ (pow a 2) (* (pow b 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow b 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* b (sqrt -1))))))) |
(* -1 (pow b 2)) |
(- (pow a 2) (pow b 2)) |
(pow a 2) |
a |
(* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2))))) |
(* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4)))))) |
(* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6))))))) |
(* (pow a 2) (+ 1 (* -1 (/ (pow b 2) (pow a 2))))) |
(* -1 a) |
(* -1 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2)))))) |
(* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4))))))) |
(* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6)))))))) |
(+ a (* -1/2 (/ (pow b 2) a))) |
(+ a (* (pow b 2) (- (* -1/8 (/ (pow b 2) (pow a 3))) (* 1/2 (/ 1 a))))) |
(+ a (* (pow b 2) (- (* (pow b 2) (- (* -1/16 (/ (pow b 2) (pow a 5))) (* 1/8 (/ 1 (pow a 3))))) (* 1/2 (/ 1 a))))) |
(+ (* -1 (pow b 2)) (pow a 2)) |
(pow b 2) |
(* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))) |
(* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))) |
(* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))) |
(* (pow b 2) (- (/ (pow a 2) (pow b 2)) 1)) |
(* -1 (* b (sqrt -1))) |
(* -1 (* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))) |
(* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))) |
(* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))) |
6 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | a | @ | 0 | ((sqrt (- (* a a) (* b b))) (- (* a a) (* b b)) (* a a) (* b b)) |
| 1.0ms | b | @ | inf | ((sqrt (- (* a a) (* b b))) (- (* a a) (* b b)) (* a a) (* b b)) |
| 1.0ms | a | @ | inf | ((sqrt (- (* a a) (* b b))) (- (* a a) (* b b)) (* a a) (* b b)) |
| 1.0ms | a | @ | -inf | ((sqrt (- (* a a) (* b b))) (- (* a a) (* b b)) (* a a) (* b b)) |
| 1.0ms | b | @ | 0 | ((sqrt (- (* a a) (* b b))) (- (* a a) (* b b)) (* a a) (* b b)) |
| 1× | egg-herbie |
| Inputs |
|---|
(* b (sqrt -1)) |
(+ (* 1/2 (/ (pow a 2) (* b (sqrt -1)))) (* b (sqrt -1))) |
(+ (* b (sqrt -1)) (* (pow a 2) (+ (* -1/8 (/ (pow a 2) (* (pow b 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* b (sqrt -1))))))) |
(+ (* b (sqrt -1)) (* (pow a 2) (+ (* (pow a 2) (- (* 1/16 (/ (pow a 2) (* (pow b 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow b 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* b (sqrt -1))))))) |
(* -1 (pow b 2)) |
(- (pow a 2) (pow b 2)) |
(pow a 2) |
a |
(* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2))))) |
(* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4)))))) |
(* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6))))))) |
(* (pow a 2) (+ 1 (* -1 (/ (pow b 2) (pow a 2))))) |
(* -1 a) |
(* -1 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2)))))) |
(* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4))))))) |
(* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6)))))))) |
(+ a (* -1/2 (/ (pow b 2) a))) |
(+ a (* (pow b 2) (- (* -1/8 (/ (pow b 2) (pow a 3))) (* 1/2 (/ 1 a))))) |
(+ a (* (pow b 2) (- (* (pow b 2) (- (* -1/16 (/ (pow b 2) (pow a 5))) (* 1/8 (/ 1 (pow a 3))))) (* 1/2 (/ 1 a))))) |
(+ (* -1 (pow b 2)) (pow a 2)) |
(pow b 2) |
(* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))) |
(* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))) |
(* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))) |
(* (pow b 2) (- (/ (pow a 2) (pow b 2)) 1)) |
(* -1 (* b (sqrt -1))) |
(* -1 (* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))) |
(* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))) |
(* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))) |
| Outputs |
|---|
(* b (sqrt -1)) |
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
(+ (* 1/2 (/ (pow a 2) (* b (sqrt -1)))) (* b (sqrt -1))) |
(-.f64 (*.f64 a a) (*.f64 b b)) |
(+ (* b (sqrt -1)) (* (pow a 2) (+ (* -1/8 (/ (pow a 2) (* (pow b 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* b (sqrt -1))))))) |
(*.f64 a a) |
(+ (* b (sqrt -1)) (* (pow a 2) (+ (* (pow a 2) (- (* 1/16 (/ (pow a 2) (* (pow b 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow b 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* b (sqrt -1))))))) |
(*.f64 b b) |
| Inputs |
|---|
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
(-.f64 (*.f64 a a) (*.f64 b b)) |
(*.f64 a a) |
(*.f64 b b) |
| Outputs |
|---|
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
(-.f64 (*.f64 a a) (*.f64 b b)) |
(*.f64 a a) |
(*.f64 b b) |
Compiled 89 to 14 computations (84.3% saved)
3 alts after pruning (2 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 6 | 2 | 8 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 6 | 3 | 9 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 50.9% | (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
| ▶ | 4.1% | #s(approx (sqrt (- (* a a) (* b b))) (*.f64 b b)) |
| ▶ | 7.1% | #s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
Compiled 32 to 22 computations (31.3% saved)
| 1× | egg-herbie |
Found 4 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| cost-diff | 0 | (*.f64 b b) | |
| cost-diff | 0 | #s(approx (sqrt (- (* a a) (* b b))) (*.f64 b b)) | |
| cost-diff | 0 | (*.f64 a a) | |
| cost-diff | 0 | #s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
| Inputs |
|---|
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
(*.f64 a a) |
a |
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 b b)) |
(*.f64 b b) |
b |
| Outputs |
|---|
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
(*.f64 a a) |
a |
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 b b)) |
(*.f64 b b) |
b |
Found 4 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| accuracy | 0.0 | (*.f64 b b) | |
| accuracy | 61.348414733559 | #s(approx (sqrt (- (* a a) (* b b))) (*.f64 b b)) | |
| accuracy | 0.0 | (*.f64 a a) | |
| accuracy | 59.42988485536432 | #s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
| 13.0ms | 256× | 0 | valid |
Compiled 58 to 18 computations (69% saved)
ival-mult: 4.0ms (59.6% of total)ival-sqrt: 2.0ms (29.8% of total)ival-sub: 1.0ms (14.9% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
(*.f64 a a) |
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 b b)) |
(*.f64 b b) |
| Outputs |
|---|
(* b (sqrt -1)) |
(+ (* 1/2 (/ (pow a 2) (* b (sqrt -1)))) (* b (sqrt -1))) |
(+ (* b (sqrt -1)) (* (pow a 2) (+ (* -1/8 (/ (pow a 2) (* (pow b 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* b (sqrt -1))))))) |
(+ (* b (sqrt -1)) (* (pow a 2) (+ (* (pow a 2) (- (* 1/16 (/ (pow a 2) (* (pow b 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow b 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* b (sqrt -1))))))) |
(pow a 2) |
a |
(* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2))))) |
(* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4)))))) |
(* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6))))))) |
(* -1 a) |
(* -1 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2)))))) |
(* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4))))))) |
(* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6)))))))) |
(+ a (* -1/2 (/ (pow b 2) a))) |
(+ a (* (pow b 2) (- (* -1/8 (/ (pow b 2) (pow a 3))) (* 1/2 (/ 1 a))))) |
(+ a (* (pow b 2) (- (* (pow b 2) (- (* -1/16 (/ (pow b 2) (pow a 5))) (* 1/8 (/ 1 (pow a 3))))) (* 1/2 (/ 1 a))))) |
(pow b 2) |
(* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))) |
(* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))) |
(* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))) |
(* -1 (* b (sqrt -1))) |
(* -1 (* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))) |
(* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))) |
(* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))) |
6 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | a | @ | inf | ((sqrt (- (* a a) (* b b))) (* a a) (sqrt (- (* a a) (* b b))) (* b b)) |
| 0.0ms | b | @ | -inf | ((sqrt (- (* a a) (* b b))) (* a a) (sqrt (- (* a a) (* b b))) (* b b)) |
| 0.0ms | b | @ | inf | ((sqrt (- (* a a) (* b b))) (* a a) (sqrt (- (* a a) (* b b))) (* b b)) |
| 0.0ms | a | @ | -inf | ((sqrt (- (* a a) (* b b))) (* a a) (sqrt (- (* a a) (* b b))) (* b b)) |
| 0.0ms | a | @ | 0 | ((sqrt (- (* a a) (* b b))) (* a a) (sqrt (- (* a a) (* b b))) (* b b)) |
| 1× | egg-herbie |
| Inputs |
|---|
(* b (sqrt -1)) |
(+ (* 1/2 (/ (pow a 2) (* b (sqrt -1)))) (* b (sqrt -1))) |
(+ (* b (sqrt -1)) (* (pow a 2) (+ (* -1/8 (/ (pow a 2) (* (pow b 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* b (sqrt -1))))))) |
(+ (* b (sqrt -1)) (* (pow a 2) (+ (* (pow a 2) (- (* 1/16 (/ (pow a 2) (* (pow b 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow b 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* b (sqrt -1))))))) |
(pow a 2) |
a |
(* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2))))) |
(* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4)))))) |
(* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6))))))) |
(* -1 a) |
(* -1 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2)))))) |
(* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4))))))) |
(* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6)))))))) |
(+ a (* -1/2 (/ (pow b 2) a))) |
(+ a (* (pow b 2) (- (* -1/8 (/ (pow b 2) (pow a 3))) (* 1/2 (/ 1 a))))) |
(+ a (* (pow b 2) (- (* (pow b 2) (- (* -1/16 (/ (pow b 2) (pow a 5))) (* 1/8 (/ 1 (pow a 3))))) (* 1/2 (/ 1 a))))) |
(pow b 2) |
(* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))) |
(* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))) |
(* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))) |
(* -1 (* b (sqrt -1))) |
(* -1 (* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))) |
(* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))) |
(* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))) |
| Outputs |
|---|
(* b (sqrt -1)) |
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
(+ (* 1/2 (/ (pow a 2) (* b (sqrt -1)))) (* b (sqrt -1))) |
(*.f64 a a) |
(+ (* b (sqrt -1)) (* (pow a 2) (+ (* -1/8 (/ (pow a 2) (* (pow b 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* b (sqrt -1))))))) |
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 b b)) |
(+ (* b (sqrt -1)) (* (pow a 2) (+ (* (pow a 2) (- (* 1/16 (/ (pow a 2) (* (pow b 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow b 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* b (sqrt -1))))))) |
(*.f64 b b) |
| Inputs |
|---|
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
(*.f64 a a) |
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 b b)) |
(*.f64 b b) |
| Outputs |
|---|
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
(*.f64 a a) |
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 b b)) |
(*.f64 b b) |
Compiled 90 to 12 computations (86.7% saved)
3 alts after pruning (0 fresh and 3 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 6 | 0 | 6 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 2 | 2 |
| Done | 0 | 1 | 1 |
| Total | 6 | 3 | 9 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 50.9% | (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
| ✓ | 4.1% | #s(approx (sqrt (- (* a a) (* b b))) (*.f64 b b)) |
| ✓ | 7.1% | #s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
Compiled 64 to 34 computations (46.9% saved)
| Inputs |
|---|
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 b b)) |
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
| Outputs |
|---|
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
6 calls:
| 7.0ms | (*.f64 a a) |
| 2.0ms | b |
| 2.0ms | a |
| 2.0ms | (-.f64 (*.f64 a a) (*.f64 b b)) |
| 2.0ms | (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 50.9% | 1 | a |
| 50.9% | 1 | b |
| 50.9% | 1 | (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
| 50.9% | 1 | (-.f64 (*.f64 a a) (*.f64 b b)) |
| 50.9% | 1 | (*.f64 a a) |
| 50.9% | 1 | (*.f64 b b) |
Compiled 23 to 21 computations (8.7% saved)
Total -2.0b remaining (-3.4%)
Threshold costs -2b (-3.4%)
| Inputs |
|---|
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 b b)) |
| Outputs |
|---|
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
6 calls:
| 1.0ms | b |
| 1.0ms | a |
| 1.0ms | (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
| 1.0ms | (-.f64 (*.f64 a a) (*.f64 b b)) |
| 1.0ms | (*.f64 a a) |
| Accuracy | Segments | Branch |
|---|---|---|
| 7.1% | 1 | (*.f64 a a) |
| 7.1% | 1 | b |
| 7.1% | 1 | (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
| 7.1% | 1 | (-.f64 (*.f64 a a) (*.f64 b b)) |
| 7.1% | 1 | a |
| 7.1% | 1 | (*.f64 b b) |
Compiled 23 to 21 computations (8.7% saved)
| 1× | egg-herbie |
| Inputs |
|---|
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
| Outputs |
|---|
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) |
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 a a)) |
| 1× | done |
Compiled 20 to 11 computations (45% saved)
Compiled 82 to 52 computations (36.6% saved)
Loading profile data...