
Time bar (total: 1.4s)
| 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 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 5 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 6 |
| 30.8% | 25% | 56.2% | 0.1% | 0% | 18.7% | 0% | 7 |
| 30.8% | 25% | 56.2% | 0.1% | 0% | 18.7% | 0% | 8 |
| 32% | 25% | 53% | 0.1% | 0% | 21.8% | 0% | 9 |
| 55.8% | 37.4% | 29.6% | 0.1% | 0% | 32.8% | 0% | 10 |
| 55.8% | 37.4% | 29.6% | 0.1% | 0% | 32.8% | 0% | 11 |
| 57.8% | 37.4% | 27.3% | 0.1% | 0% | 35.1% | 0% | 12 |
Compiled 12 to 10 computations (16.7% saved)
| 479.0ms | 8 256× | 0 | valid |
| 158.0ms | 2 468× | 0 | invalid |
ival-mult: 220.0ms (60.3% of total)ival-sqrt: 86.0ms (23.6% of total)ival-sub: 48.0ms (13.2% of total)ival-true: 8.0ms (2.2% of total)ival-assert: 4.0ms (1.1% of total)| Ground Truth | Overpredictions | Example | Underpredictions | Example | Subexpression |
|---|---|---|---|---|---|
| 126 | 0 | - | 1 | (5.130842830229881e-103 1.1462232805108843e-155 -4.8172272728142435e-179) | (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
| 22 | 0 | - | 0 | - | (-.f64 (*.f64 y y) (*.f64 z z)) |
| 0 | 0 | - | 0 | - | (*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| 0 | 0 | - | 0 | - | y |
| 0 | 0 | - | 0 | - | (*.f64 z z) |
| 0 | 0 | - | 0 | - | (*.f64 y y) |
| 0 | 0 | - | 0 | - | z |
| 0 | 0 | - | 0 | - | x |
| Operator | Subexpression | Explanation | Count | |
|---|---|---|---|---|
sqrt.f64 | (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) | oflow-rescue | 109 | 0 |
| ↳ | (*.f64 y y) | overflow | 109 | |
| ↳ | (-.f64 (*.f64 y y) (*.f64 z z)) | overflow | 109 | |
| ↳ | (*.f64 z z) | overflow | 22 | |
-.f64 | (-.f64 (*.f64 y y) (*.f64 z z)) | nan-rescue | 22 | 0 |
| ↳ | (*.f64 y y) | overflow | 109 | |
| ↳ | (*.f64 z z) | overflow | 22 | |
sqrt.f64 | (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) | uflow-rescue | 16 | 0 |
| ↳ | (*.f64 y y) | underflow | 16 | |
| ↳ | (-.f64 (*.f64 y y) (*.f64 z z)) | underflow | 16 | |
| ↳ | (*.f64 z z) | underflow | 111 |
| Predicted + | Predicted - | |
|---|---|---|
| + | 85 | 1 |
| - | 40 | 130 |
| Predicted + | Predicted Maybe | Predicted - | |
|---|---|---|---|
| + | 85 | 0 | 1 |
| - | 40 | 0 | 130 |
| number | freq |
|---|---|
| 0 | 131 |
| 1 | 103 |
| 2 | 22 |
| Predicted + | Predicted Maybe | Predicted - | |
|---|---|---|---|
| + | 1 | 0 | 0 |
| - | 0 | 0 | 0 |
| 31.0ms | 512× | 0 | valid |
Compiled 116 to 36 computations (69% saved)
ival-mult: 10.0ms (60.8% of total)ival-sqrt: 4.0ms (24.3% of total)ival-sub: 2.0ms (12.2% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| 1× | egg-herbie |
| Inputs |
|---|
(*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| Outputs |
|---|
(*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
Compiled 10 to 8 computations (20% saved)
Compiled 0 to 3 computations (-∞% saved)
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 67.8% | (*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
Compiled 10 to 8 computations (20% saved)
| 1× | egg-herbie |
Found 4 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| cost-diff | 0 | (*.f64 y y) | |
| cost-diff | 0 | (-.f64 (*.f64 y y) (*.f64 z z)) | |
| cost-diff | 0 | (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) | |
| cost-diff | 0 | (*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| Inputs |
|---|
(*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
x |
(sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(*.f64 y y) |
y |
(*.f64 z z) |
z |
| Outputs |
|---|
(*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
x |
(sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(*.f64 y y) |
y |
(*.f64 z z) |
z |
Found 4 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| accuracy | 0.0 | (*.f64 y y) | |
| accuracy | 0.0 | (*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) | |
| accuracy | 4.382812500000001 | (-.f64 (*.f64 y y) (*.f64 z z)) | |
| accuracy | 29.121438066902208 | (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
| 15.0ms | 256× | 0 | valid |
Compiled 70 to 18 computations (74.3% saved)
ival-mult: 5.0ms (62.5% of total)ival-sqrt: 2.0ms (25% of total)ival-sub: 1.0ms (12.5% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
(*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
(sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(*.f64 y y) |
| Outputs |
|---|
(* x (sqrt (- (pow y 2) (pow z 2)))) |
(* x (* z (sqrt -1))) |
(+ (* 1/2 (/ (* x (pow y 2)) (* z (sqrt -1)))) (* x (* z (sqrt -1)))) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* -1/8 (/ (* x (pow y 2)) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ x (* z (sqrt -1))))))) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* 1/2 (/ x (* z (sqrt -1)))) (* (pow y 2) (+ (* -1/8 (/ x (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/16 (/ (* x (pow y 2)) (* (pow z 5) (pow (sqrt -1) 5))))))))) |
(* z (sqrt -1)) |
(+ (* 1/2 (/ (pow y 2) (* z (sqrt -1)))) (* z (sqrt -1))) |
(+ (* z (sqrt -1)) (* (pow y 2) (+ (* -1/8 (/ (pow y 2) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* z (sqrt -1))))))) |
(+ (* z (sqrt -1)) (* (pow y 2) (+ (* (pow y 2) (- (* 1/16 (/ (pow y 2) (* (pow z 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow z 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* z (sqrt -1))))))) |
(* -1 (pow z 2)) |
(- (pow y 2) (pow z 2)) |
(pow y 2) |
(* x y) |
(* y (+ x (* -1/2 (/ (* x (pow z 2)) (pow y 2))))) |
(* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (* -1/8 (/ (* x (pow z 4)) (pow y 4)))))) |
(* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (+ (* -1/8 (/ (* x (pow z 4)) (pow y 4))) (* -1/16 (/ (* x (pow z 6)) (pow y 6))))))) |
y |
(* y (+ 1 (* -1/2 (/ (pow z 2) (pow y 2))))) |
(* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (* -1/8 (/ (pow z 4) (pow y 4)))))) |
(* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (+ (* -1/8 (/ (pow z 4) (pow y 4))) (* -1/16 (/ (pow z 6) (pow y 6))))))) |
(* (pow y 2) (+ 1 (* -1 (/ (pow z 2) (pow y 2))))) |
(* -1 (* x y)) |
(* -1 (* y (+ x (* -1/2 (/ (* x (pow z 2)) (pow y 2)))))) |
(* -1 (* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (* -1/8 (/ (* x (pow z 4)) (pow y 4))))))) |
(* -1 (* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (+ (* -1/8 (/ (* x (pow z 4)) (pow y 4))) (* -1/16 (/ (* x (pow z 6)) (pow y 6)))))))) |
(* -1 y) |
(* -1 (* y (+ 1 (* -1/2 (/ (pow z 2) (pow y 2)))))) |
(* -1 (* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (* -1/8 (/ (pow z 4) (pow y 4))))))) |
(* -1 (* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (+ (* -1/8 (/ (pow z 4) (pow y 4))) (* -1/16 (/ (pow z 6) (pow y 6)))))))) |
(+ (* -1/2 (/ (* x (pow z 2)) y)) (* x y)) |
(+ (* x y) (* (pow z 2) (+ (* -1/2 (/ x y)) (* -1/8 (/ (* x (pow z 2)) (pow y 3)))))) |
(+ (* x y) (* (pow z 2) (+ (* -1/2 (/ x y)) (* (pow z 2) (+ (* -1/8 (/ x (pow y 3))) (* -1/16 (/ (* x (pow z 2)) (pow y 5)))))))) |
(+ y (* -1/2 (/ (pow z 2) y))) |
(+ y (* (pow z 2) (- (* -1/8 (/ (pow z 2) (pow y 3))) (* 1/2 (/ 1 y))))) |
(+ y (* (pow z 2) (- (* (pow z 2) (- (* -1/16 (/ (pow z 2) (pow y 5))) (* 1/8 (/ 1 (pow y 3))))) (* 1/2 (/ 1 y))))) |
(+ (* -1 (pow z 2)) (pow y 2)) |
(* z (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))) |
(* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))) |
(* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (* x (pow y 6)) (* (pow z 6) (pow (sqrt -1) 5)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))))) |
(* z (+ (sqrt -1) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))) |
(* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))) |
(* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow y 6) (* (pow z 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))))) |
(* (pow z 2) (- (/ (pow y 2) (pow z 2)) 1)) |
(* -1 (* x (* z (sqrt -1)))) |
(* -1 (* z (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))) |
(* -1 (* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))))) |
(* -1 (* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (* x (pow y 6)) (* (pow z 6) (pow (sqrt -1) 5)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))))) |
(* -1 (* z (sqrt -1))) |
(* -1 (* z (+ (sqrt -1) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))) |
(* -1 (* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))))) |
(* -1 (* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow y 6) (* (pow z 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))))) |
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 3.0ms | x | @ | 0 | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (- (* y y) (* z z)) (* y y)) |
| 2.0ms | y | @ | inf | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (- (* y y) (* z z)) (* y y)) |
| 1.0ms | z | @ | inf | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (- (* y y) (* z z)) (* y y)) |
| 1.0ms | y | @ | 0 | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (- (* y y) (* z z)) (* y y)) |
| 1.0ms | x | @ | -inf | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (- (* y y) (* z z)) (* y y)) |
| 1× | egg-herbie |
| Inputs |
|---|
(* x (sqrt (- (pow y 2) (pow z 2)))) |
(* x (* z (sqrt -1))) |
(+ (* 1/2 (/ (* x (pow y 2)) (* z (sqrt -1)))) (* x (* z (sqrt -1)))) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* -1/8 (/ (* x (pow y 2)) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ x (* z (sqrt -1))))))) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* 1/2 (/ x (* z (sqrt -1)))) (* (pow y 2) (+ (* -1/8 (/ x (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/16 (/ (* x (pow y 2)) (* (pow z 5) (pow (sqrt -1) 5))))))))) |
(* z (sqrt -1)) |
(+ (* 1/2 (/ (pow y 2) (* z (sqrt -1)))) (* z (sqrt -1))) |
(+ (* z (sqrt -1)) (* (pow y 2) (+ (* -1/8 (/ (pow y 2) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* z (sqrt -1))))))) |
(+ (* z (sqrt -1)) (* (pow y 2) (+ (* (pow y 2) (- (* 1/16 (/ (pow y 2) (* (pow z 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow z 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* z (sqrt -1))))))) |
(* -1 (pow z 2)) |
(- (pow y 2) (pow z 2)) |
(pow y 2) |
(* x y) |
(* y (+ x (* -1/2 (/ (* x (pow z 2)) (pow y 2))))) |
(* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (* -1/8 (/ (* x (pow z 4)) (pow y 4)))))) |
(* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (+ (* -1/8 (/ (* x (pow z 4)) (pow y 4))) (* -1/16 (/ (* x (pow z 6)) (pow y 6))))))) |
y |
(* y (+ 1 (* -1/2 (/ (pow z 2) (pow y 2))))) |
(* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (* -1/8 (/ (pow z 4) (pow y 4)))))) |
(* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (+ (* -1/8 (/ (pow z 4) (pow y 4))) (* -1/16 (/ (pow z 6) (pow y 6))))))) |
(* (pow y 2) (+ 1 (* -1 (/ (pow z 2) (pow y 2))))) |
(* -1 (* x y)) |
(* -1 (* y (+ x (* -1/2 (/ (* x (pow z 2)) (pow y 2)))))) |
(* -1 (* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (* -1/8 (/ (* x (pow z 4)) (pow y 4))))))) |
(* -1 (* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (+ (* -1/8 (/ (* x (pow z 4)) (pow y 4))) (* -1/16 (/ (* x (pow z 6)) (pow y 6)))))))) |
(* -1 y) |
(* -1 (* y (+ 1 (* -1/2 (/ (pow z 2) (pow y 2)))))) |
(* -1 (* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (* -1/8 (/ (pow z 4) (pow y 4))))))) |
(* -1 (* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (+ (* -1/8 (/ (pow z 4) (pow y 4))) (* -1/16 (/ (pow z 6) (pow y 6)))))))) |
(+ (* -1/2 (/ (* x (pow z 2)) y)) (* x y)) |
(+ (* x y) (* (pow z 2) (+ (* -1/2 (/ x y)) (* -1/8 (/ (* x (pow z 2)) (pow y 3)))))) |
(+ (* x y) (* (pow z 2) (+ (* -1/2 (/ x y)) (* (pow z 2) (+ (* -1/8 (/ x (pow y 3))) (* -1/16 (/ (* x (pow z 2)) (pow y 5)))))))) |
(+ y (* -1/2 (/ (pow z 2) y))) |
(+ y (* (pow z 2) (- (* -1/8 (/ (pow z 2) (pow y 3))) (* 1/2 (/ 1 y))))) |
(+ y (* (pow z 2) (- (* (pow z 2) (- (* -1/16 (/ (pow z 2) (pow y 5))) (* 1/8 (/ 1 (pow y 3))))) (* 1/2 (/ 1 y))))) |
(+ (* -1 (pow z 2)) (pow y 2)) |
(* z (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))) |
(* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))) |
(* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (* x (pow y 6)) (* (pow z 6) (pow (sqrt -1) 5)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))))) |
(* z (+ (sqrt -1) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))) |
(* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))) |
(* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow y 6) (* (pow z 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))))) |
(* (pow z 2) (- (/ (pow y 2) (pow z 2)) 1)) |
(* -1 (* x (* z (sqrt -1)))) |
(* -1 (* z (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))) |
(* -1 (* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))))) |
(* -1 (* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (* x (pow y 6)) (* (pow z 6) (pow (sqrt -1) 5)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))))) |
(* -1 (* z (sqrt -1))) |
(* -1 (* z (+ (sqrt -1) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))) |
(* -1 (* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))))) |
(* -1 (* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow y 6) (* (pow z 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))))) |
| Outputs |
|---|
(* x (sqrt (- (pow y 2) (pow z 2)))) |
(*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
(* x (* z (sqrt -1))) |
(sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
(+ (* 1/2 (/ (* x (pow y 2)) (* z (sqrt -1)))) (* x (* z (sqrt -1)))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* -1/8 (/ (* x (pow y 2)) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ x (* z (sqrt -1))))))) |
(*.f64 y y) |
| Inputs |
|---|
(*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
(sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(*.f64 y y) |
| Outputs |
|---|
(*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
(sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(*.f64 y y) |
Compiled 112 to 17 computations (84.8% saved)
4 alts after pruning (3 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 5 | 3 | 8 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 5 | 4 | 9 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 67.8% | (*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| ▶ | 13.1% | #s(approx (* x (sqrt (- (* y y) (* z z)))) (-.f64 (*.f64 y y) (*.f64 z z))) |
| ▶ | 15.6% | #s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) |
| ▶ | 13.0% | #s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
Compiled 61 to 43 computations (29.5% saved)
| 1× | egg-herbie |
Found 10 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| cost-diff | 0 | (*.f64 z z) | |
| cost-diff | 0 | (*.f64 y y) | |
| cost-diff | 0 | (-.f64 (*.f64 y y) (*.f64 z z)) | |
| cost-diff | 0 | #s(approx (* x (sqrt (- (* y y) (* z z)))) (-.f64 (*.f64 y y) (*.f64 z z))) | |
| cost-diff | 0 | (*.f64 y y) | |
| cost-diff | 0 | #s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) | |
| cost-diff | 0 | (*.f64 y y) | |
| cost-diff | 0 | (-.f64 (*.f64 y y) (*.f64 z z)) | |
| cost-diff | 0 | (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) | |
| cost-diff | 0 | #s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| Inputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
(sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(*.f64 y y) |
y |
(*.f64 z z) |
z |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) |
(*.f64 y y) |
y |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (-.f64 (*.f64 y y) (*.f64 z z))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(*.f64 y y) |
y |
(*.f64 z z) |
z |
| Outputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
(sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(*.f64 y y) |
y |
(*.f64 z z) |
z |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) |
(*.f64 y y) |
y |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (-.f64 (*.f64 y y) (*.f64 z z))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(*.f64 y y) |
y |
(*.f64 z z) |
z |
Found 10 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| accuracy | 0.0 | (*.f64 z z) | |
| accuracy | 0.0 | (*.f64 y y) | |
| accuracy | 4.382812500000001 | (-.f64 (*.f64 y y) (*.f64 z z)) | |
| accuracy | 54.0144370665782 | #s(approx (* x (sqrt (- (* y y) (* z z)))) (-.f64 (*.f64 y y) (*.f64 z z))) | |
| accuracy | 0.0 | (*.f64 y y) | |
| accuracy | 54.0144370665782 | #s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) | |
| accuracy | 0.0 | (*.f64 y y) | |
| accuracy | 4.382812500000001 | (-.f64 (*.f64 y y) (*.f64 z z)) | |
| accuracy | 29.121438066902208 | (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) | |
| accuracy | 61.628709053015584 | #s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| 23.0ms | 256× | 0 | valid |
Compiled 167 to 25 computations (85% saved)
ival-mult: 5.0ms (62.6% of total)ival-sqrt: 2.0ms (25% of total)ival-sub: 1.0ms (12.5% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
(sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(*.f64 y y) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (-.f64 (*.f64 y y) (*.f64 z z))) |
(*.f64 z z) |
| Outputs |
|---|
(* x (sqrt (- (pow y 2) (pow z 2)))) |
(* x (* z (sqrt -1))) |
(+ (* 1/2 (/ (* x (pow y 2)) (* z (sqrt -1)))) (* x (* z (sqrt -1)))) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* -1/8 (/ (* x (pow y 2)) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ x (* z (sqrt -1))))))) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* 1/2 (/ x (* z (sqrt -1)))) (* (pow y 2) (+ (* -1/8 (/ x (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/16 (/ (* x (pow y 2)) (* (pow z 5) (pow (sqrt -1) 5))))))))) |
(* z (sqrt -1)) |
(+ (* 1/2 (/ (pow y 2) (* z (sqrt -1)))) (* z (sqrt -1))) |
(+ (* z (sqrt -1)) (* (pow y 2) (+ (* -1/8 (/ (pow y 2) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* z (sqrt -1))))))) |
(+ (* z (sqrt -1)) (* (pow y 2) (+ (* (pow y 2) (- (* 1/16 (/ (pow y 2) (* (pow z 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow z 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* z (sqrt -1))))))) |
(* -1 (pow z 2)) |
(- (pow y 2) (pow z 2)) |
(pow y 2) |
(* x y) |
(* y (+ x (* -1/2 (/ (* x (pow z 2)) (pow y 2))))) |
(* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (* -1/8 (/ (* x (pow z 4)) (pow y 4)))))) |
(* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (+ (* -1/8 (/ (* x (pow z 4)) (pow y 4))) (* -1/16 (/ (* x (pow z 6)) (pow y 6))))))) |
y |
(* y (+ 1 (* -1/2 (/ (pow z 2) (pow y 2))))) |
(* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (* -1/8 (/ (pow z 4) (pow y 4)))))) |
(* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (+ (* -1/8 (/ (pow z 4) (pow y 4))) (* -1/16 (/ (pow z 6) (pow y 6))))))) |
(* (pow y 2) (+ 1 (* -1 (/ (pow z 2) (pow y 2))))) |
(* -1 (* x y)) |
(* -1 (* y (+ x (* -1/2 (/ (* x (pow z 2)) (pow y 2)))))) |
(* -1 (* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (* -1/8 (/ (* x (pow z 4)) (pow y 4))))))) |
(* -1 (* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (+ (* -1/8 (/ (* x (pow z 4)) (pow y 4))) (* -1/16 (/ (* x (pow z 6)) (pow y 6)))))))) |
(* -1 y) |
(* -1 (* y (+ 1 (* -1/2 (/ (pow z 2) (pow y 2)))))) |
(* -1 (* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (* -1/8 (/ (pow z 4) (pow y 4))))))) |
(* -1 (* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (+ (* -1/8 (/ (pow z 4) (pow y 4))) (* -1/16 (/ (pow z 6) (pow y 6)))))))) |
(+ (* -1/2 (/ (* x (pow z 2)) y)) (* x y)) |
(+ (* x y) (* (pow z 2) (+ (* -1/2 (/ x y)) (* -1/8 (/ (* x (pow z 2)) (pow y 3)))))) |
(+ (* x y) (* (pow z 2) (+ (* -1/2 (/ x y)) (* (pow z 2) (+ (* -1/8 (/ x (pow y 3))) (* -1/16 (/ (* x (pow z 2)) (pow y 5)))))))) |
(+ y (* -1/2 (/ (pow z 2) y))) |
(+ y (* (pow z 2) (- (* -1/8 (/ (pow z 2) (pow y 3))) (* 1/2 (/ 1 y))))) |
(+ y (* (pow z 2) (- (* (pow z 2) (- (* -1/16 (/ (pow z 2) (pow y 5))) (* 1/8 (/ 1 (pow y 3))))) (* 1/2 (/ 1 y))))) |
(+ (* -1 (pow z 2)) (pow y 2)) |
(pow z 2) |
(* z (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))) |
(* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))) |
(* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (* x (pow y 6)) (* (pow z 6) (pow (sqrt -1) 5)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))))) |
(* z (+ (sqrt -1) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))) |
(* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))) |
(* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow y 6) (* (pow z 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))))) |
(* (pow z 2) (- (/ (pow y 2) (pow z 2)) 1)) |
(* -1 (* x (* z (sqrt -1)))) |
(* -1 (* z (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))) |
(* -1 (* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))))) |
(* -1 (* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (* x (pow y 6)) (* (pow z 6) (pow (sqrt -1) 5)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))))) |
(* -1 (* z (sqrt -1))) |
(* -1 (* z (+ (sqrt -1) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))) |
(* -1 (* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))))) |
(* -1 (* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow y 6) (* (pow z 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))))) |
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 2.0ms | x | @ | inf | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (- (* y y) (* z z)) (* y y) (* x (sqrt (- (* y y) (* z z)))) (* x (sqrt (- (* y y) (* z z)))) (* z z)) |
| 1.0ms | x | @ | -inf | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (- (* y y) (* z z)) (* y y) (* x (sqrt (- (* y y) (* z z)))) (* x (sqrt (- (* y y) (* z z)))) (* z z)) |
| 1.0ms | z | @ | -inf | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (- (* y y) (* z z)) (* y y) (* x (sqrt (- (* y y) (* z z)))) (* x (sqrt (- (* y y) (* z z)))) (* z z)) |
| 1.0ms | x | @ | 0 | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (- (* y y) (* z z)) (* y y) (* x (sqrt (- (* y y) (* z z)))) (* x (sqrt (- (* y y) (* z z)))) (* z z)) |
| 1.0ms | z | @ | inf | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (- (* y y) (* z z)) (* y y) (* x (sqrt (- (* y y) (* z z)))) (* x (sqrt (- (* y y) (* z z)))) (* z z)) |
| 1× | egg-herbie |
| Inputs |
|---|
(* x (sqrt (- (pow y 2) (pow z 2)))) |
(* x (* z (sqrt -1))) |
(+ (* 1/2 (/ (* x (pow y 2)) (* z (sqrt -1)))) (* x (* z (sqrt -1)))) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* -1/8 (/ (* x (pow y 2)) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ x (* z (sqrt -1))))))) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* 1/2 (/ x (* z (sqrt -1)))) (* (pow y 2) (+ (* -1/8 (/ x (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/16 (/ (* x (pow y 2)) (* (pow z 5) (pow (sqrt -1) 5))))))))) |
(* z (sqrt -1)) |
(+ (* 1/2 (/ (pow y 2) (* z (sqrt -1)))) (* z (sqrt -1))) |
(+ (* z (sqrt -1)) (* (pow y 2) (+ (* -1/8 (/ (pow y 2) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* z (sqrt -1))))))) |
(+ (* z (sqrt -1)) (* (pow y 2) (+ (* (pow y 2) (- (* 1/16 (/ (pow y 2) (* (pow z 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow z 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* z (sqrt -1))))))) |
(* -1 (pow z 2)) |
(- (pow y 2) (pow z 2)) |
(pow y 2) |
(* x y) |
(* y (+ x (* -1/2 (/ (* x (pow z 2)) (pow y 2))))) |
(* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (* -1/8 (/ (* x (pow z 4)) (pow y 4)))))) |
(* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (+ (* -1/8 (/ (* x (pow z 4)) (pow y 4))) (* -1/16 (/ (* x (pow z 6)) (pow y 6))))))) |
y |
(* y (+ 1 (* -1/2 (/ (pow z 2) (pow y 2))))) |
(* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (* -1/8 (/ (pow z 4) (pow y 4)))))) |
(* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (+ (* -1/8 (/ (pow z 4) (pow y 4))) (* -1/16 (/ (pow z 6) (pow y 6))))))) |
(* (pow y 2) (+ 1 (* -1 (/ (pow z 2) (pow y 2))))) |
(* -1 (* x y)) |
(* -1 (* y (+ x (* -1/2 (/ (* x (pow z 2)) (pow y 2)))))) |
(* -1 (* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (* -1/8 (/ (* x (pow z 4)) (pow y 4))))))) |
(* -1 (* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (+ (* -1/8 (/ (* x (pow z 4)) (pow y 4))) (* -1/16 (/ (* x (pow z 6)) (pow y 6)))))))) |
(* -1 y) |
(* -1 (* y (+ 1 (* -1/2 (/ (pow z 2) (pow y 2)))))) |
(* -1 (* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (* -1/8 (/ (pow z 4) (pow y 4))))))) |
(* -1 (* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (+ (* -1/8 (/ (pow z 4) (pow y 4))) (* -1/16 (/ (pow z 6) (pow y 6)))))))) |
(+ (* -1/2 (/ (* x (pow z 2)) y)) (* x y)) |
(+ (* x y) (* (pow z 2) (+ (* -1/2 (/ x y)) (* -1/8 (/ (* x (pow z 2)) (pow y 3)))))) |
(+ (* x y) (* (pow z 2) (+ (* -1/2 (/ x y)) (* (pow z 2) (+ (* -1/8 (/ x (pow y 3))) (* -1/16 (/ (* x (pow z 2)) (pow y 5)))))))) |
(+ y (* -1/2 (/ (pow z 2) y))) |
(+ y (* (pow z 2) (- (* -1/8 (/ (pow z 2) (pow y 3))) (* 1/2 (/ 1 y))))) |
(+ y (* (pow z 2) (- (* (pow z 2) (- (* -1/16 (/ (pow z 2) (pow y 5))) (* 1/8 (/ 1 (pow y 3))))) (* 1/2 (/ 1 y))))) |
(+ (* -1 (pow z 2)) (pow y 2)) |
(pow z 2) |
(* z (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))) |
(* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))) |
(* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (* x (pow y 6)) (* (pow z 6) (pow (sqrt -1) 5)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))))) |
(* z (+ (sqrt -1) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))) |
(* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))) |
(* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow y 6) (* (pow z 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))))) |
(* (pow z 2) (- (/ (pow y 2) (pow z 2)) 1)) |
(* -1 (* x (* z (sqrt -1)))) |
(* -1 (* z (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))) |
(* -1 (* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))))) |
(* -1 (* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (* x (pow y 6)) (* (pow z 6) (pow (sqrt -1) 5)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))))) |
(* -1 (* z (sqrt -1))) |
(* -1 (* z (+ (sqrt -1) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))) |
(* -1 (* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))))) |
(* -1 (* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow y 6) (* (pow z 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))))) |
| Outputs |
|---|
(* x (sqrt (- (pow y 2) (pow z 2)))) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
(* x (* z (sqrt -1))) |
(sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
(+ (* 1/2 (/ (* x (pow y 2)) (* z (sqrt -1)))) (* x (* z (sqrt -1)))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* -1/8 (/ (* x (pow y 2)) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ x (* z (sqrt -1))))))) |
(*.f64 y y) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* 1/2 (/ x (* z (sqrt -1)))) (* (pow y 2) (+ (* -1/8 (/ x (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/16 (/ (* x (pow y 2)) (* (pow z 5) (pow (sqrt -1) 5))))))))) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) |
(* z (sqrt -1)) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (-.f64 (*.f64 y y) (*.f64 z z))) |
(+ (* 1/2 (/ (pow y 2) (* z (sqrt -1)))) (* z (sqrt -1))) |
(*.f64 z z) |
| Inputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
(sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(*.f64 y y) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (-.f64 (*.f64 y y) (*.f64 z z))) |
(*.f64 z z) |
| Outputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
(sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
(-.f64 (*.f64 y y) (*.f64 z z)) |
(*.f64 y y) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (-.f64 (*.f64 y y) (*.f64 z z))) |
(*.f64 z z) |
Compiled 311 to 21 computations (93.2% saved)
4 alts after pruning (1 fresh and 3 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 14 | 1 | 15 |
| Fresh | 0 | 0 | 0 |
| Picked | 1 | 2 | 3 |
| Done | 0 | 1 | 1 |
| Total | 15 | 4 | 19 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 67.8% | (*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| ✓ | 15.6% | #s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) |
| ✓ | 13.0% | #s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| ▶ | 9.3% | #s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
Compiled 66 to 42 computations (36.4% saved)
| 1× | egg-herbie |
Found 3 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| cost-diff | 0 | (*.f64 z z) | |
| cost-diff | 0 | #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z)) | |
| cost-diff | 0 | #s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
| Inputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
#s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z)) |
(*.f64 z z) |
z |
| Outputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
#s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z)) |
(*.f64 z z) |
z |
Found 3 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| accuracy | 0.0 | (*.f64 z z) | |
| accuracy | 61.067498150893016 | #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z)) | |
| accuracy | 61.628709053015584 | #s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
| 15.0ms | 256× | 0 | valid |
Compiled 63 to 21 computations (66.7% saved)
ival-mult: 5.0ms (56.2% of total)ival-sqrt: 3.0ms (33.7% of total)ival-sub: 1.0ms (11.2% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
#s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z)) |
(*.f64 z z) |
| Outputs |
|---|
(* x (sqrt (- (pow y 2) (pow z 2)))) |
(* x (* z (sqrt -1))) |
(+ (* 1/2 (/ (* x (pow y 2)) (* z (sqrt -1)))) (* x (* z (sqrt -1)))) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* -1/8 (/ (* x (pow y 2)) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ x (* z (sqrt -1))))))) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* 1/2 (/ x (* z (sqrt -1)))) (* (pow y 2) (+ (* -1/8 (/ x (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/16 (/ (* x (pow y 2)) (* (pow z 5) (pow (sqrt -1) 5))))))))) |
(* z (sqrt -1)) |
(+ (* 1/2 (/ (pow y 2) (* z (sqrt -1)))) (* z (sqrt -1))) |
(+ (* z (sqrt -1)) (* (pow y 2) (+ (* -1/8 (/ (pow y 2) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* z (sqrt -1))))))) |
(+ (* z (sqrt -1)) (* (pow y 2) (+ (* (pow y 2) (- (* 1/16 (/ (pow y 2) (* (pow z 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow z 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* z (sqrt -1))))))) |
(* x y) |
(* y (+ x (* -1/2 (/ (* x (pow z 2)) (pow y 2))))) |
(* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (* -1/8 (/ (* x (pow z 4)) (pow y 4)))))) |
(* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (+ (* -1/8 (/ (* x (pow z 4)) (pow y 4))) (* -1/16 (/ (* x (pow z 6)) (pow y 6))))))) |
y |
(* y (+ 1 (* -1/2 (/ (pow z 2) (pow y 2))))) |
(* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (* -1/8 (/ (pow z 4) (pow y 4)))))) |
(* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (+ (* -1/8 (/ (pow z 4) (pow y 4))) (* -1/16 (/ (pow z 6) (pow y 6))))))) |
(* -1 (* x y)) |
(* -1 (* y (+ x (* -1/2 (/ (* x (pow z 2)) (pow y 2)))))) |
(* -1 (* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (* -1/8 (/ (* x (pow z 4)) (pow y 4))))))) |
(* -1 (* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (+ (* -1/8 (/ (* x (pow z 4)) (pow y 4))) (* -1/16 (/ (* x (pow z 6)) (pow y 6)))))))) |
(* -1 y) |
(* -1 (* y (+ 1 (* -1/2 (/ (pow z 2) (pow y 2)))))) |
(* -1 (* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (* -1/8 (/ (pow z 4) (pow y 4))))))) |
(* -1 (* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (+ (* -1/8 (/ (pow z 4) (pow y 4))) (* -1/16 (/ (pow z 6) (pow y 6)))))))) |
(+ (* -1/2 (/ (* x (pow z 2)) y)) (* x y)) |
(+ (* x y) (* (pow z 2) (+ (* -1/2 (/ x y)) (* -1/8 (/ (* x (pow z 2)) (pow y 3)))))) |
(+ (* x y) (* (pow z 2) (+ (* -1/2 (/ x y)) (* (pow z 2) (+ (* -1/8 (/ x (pow y 3))) (* -1/16 (/ (* x (pow z 2)) (pow y 5)))))))) |
(+ y (* -1/2 (/ (pow z 2) y))) |
(+ y (* (pow z 2) (- (* -1/8 (/ (pow z 2) (pow y 3))) (* 1/2 (/ 1 y))))) |
(+ y (* (pow z 2) (- (* (pow z 2) (- (* -1/16 (/ (pow z 2) (pow y 5))) (* 1/8 (/ 1 (pow y 3))))) (* 1/2 (/ 1 y))))) |
(pow z 2) |
(* z (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))) |
(* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))) |
(* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (* x (pow y 6)) (* (pow z 6) (pow (sqrt -1) 5)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))))) |
(* z (+ (sqrt -1) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))) |
(* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))) |
(* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow y 6) (* (pow z 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))))) |
(* -1 (* x (* z (sqrt -1)))) |
(* -1 (* z (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))) |
(* -1 (* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))))) |
(* -1 (* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (* x (pow y 6)) (* (pow z 6) (pow (sqrt -1) 5)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))))) |
(* -1 (* z (sqrt -1))) |
(* -1 (* z (+ (sqrt -1) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))) |
(* -1 (* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))))) |
(* -1 (* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow y 6) (* (pow z 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))))) |
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | x | @ | -inf | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (* z z)) |
| 1.0ms | x | @ | inf | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (* z z)) |
| 1.0ms | x | @ | 0 | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (* z z)) |
| 0.0ms | z | @ | -inf | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (* z z)) |
| 0.0ms | z | @ | inf | ((* x (sqrt (- (* y y) (* z z)))) (sqrt (- (* y y) (* z z))) (* z z)) |
| 1× | egg-herbie |
| Inputs |
|---|
(* x (sqrt (- (pow y 2) (pow z 2)))) |
(* x (* z (sqrt -1))) |
(+ (* 1/2 (/ (* x (pow y 2)) (* z (sqrt -1)))) (* x (* z (sqrt -1)))) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* -1/8 (/ (* x (pow y 2)) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ x (* z (sqrt -1))))))) |
(+ (* x (* z (sqrt -1))) (* (pow y 2) (+ (* 1/2 (/ x (* z (sqrt -1)))) (* (pow y 2) (+ (* -1/8 (/ x (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/16 (/ (* x (pow y 2)) (* (pow z 5) (pow (sqrt -1) 5))))))))) |
(* z (sqrt -1)) |
(+ (* 1/2 (/ (pow y 2) (* z (sqrt -1)))) (* z (sqrt -1))) |
(+ (* z (sqrt -1)) (* (pow y 2) (+ (* -1/8 (/ (pow y 2) (* (pow z 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* z (sqrt -1))))))) |
(+ (* z (sqrt -1)) (* (pow y 2) (+ (* (pow y 2) (- (* 1/16 (/ (pow y 2) (* (pow z 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow z 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* z (sqrt -1))))))) |
(* x y) |
(* y (+ x (* -1/2 (/ (* x (pow z 2)) (pow y 2))))) |
(* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (* -1/8 (/ (* x (pow z 4)) (pow y 4)))))) |
(* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (+ (* -1/8 (/ (* x (pow z 4)) (pow y 4))) (* -1/16 (/ (* x (pow z 6)) (pow y 6))))))) |
y |
(* y (+ 1 (* -1/2 (/ (pow z 2) (pow y 2))))) |
(* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (* -1/8 (/ (pow z 4) (pow y 4)))))) |
(* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (+ (* -1/8 (/ (pow z 4) (pow y 4))) (* -1/16 (/ (pow z 6) (pow y 6))))))) |
(* -1 (* x y)) |
(* -1 (* y (+ x (* -1/2 (/ (* x (pow z 2)) (pow y 2)))))) |
(* -1 (* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (* -1/8 (/ (* x (pow z 4)) (pow y 4))))))) |
(* -1 (* y (+ x (+ (* -1/2 (/ (* x (pow z 2)) (pow y 2))) (+ (* -1/8 (/ (* x (pow z 4)) (pow y 4))) (* -1/16 (/ (* x (pow z 6)) (pow y 6)))))))) |
(* -1 y) |
(* -1 (* y (+ 1 (* -1/2 (/ (pow z 2) (pow y 2)))))) |
(* -1 (* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (* -1/8 (/ (pow z 4) (pow y 4))))))) |
(* -1 (* y (+ 1 (+ (* -1/2 (/ (pow z 2) (pow y 2))) (+ (* -1/8 (/ (pow z 4) (pow y 4))) (* -1/16 (/ (pow z 6) (pow y 6)))))))) |
(+ (* -1/2 (/ (* x (pow z 2)) y)) (* x y)) |
(+ (* x y) (* (pow z 2) (+ (* -1/2 (/ x y)) (* -1/8 (/ (* x (pow z 2)) (pow y 3)))))) |
(+ (* x y) (* (pow z 2) (+ (* -1/2 (/ x y)) (* (pow z 2) (+ (* -1/8 (/ x (pow y 3))) (* -1/16 (/ (* x (pow z 2)) (pow y 5)))))))) |
(+ y (* -1/2 (/ (pow z 2) y))) |
(+ y (* (pow z 2) (- (* -1/8 (/ (pow z 2) (pow y 3))) (* 1/2 (/ 1 y))))) |
(+ y (* (pow z 2) (- (* (pow z 2) (- (* -1/16 (/ (pow z 2) (pow y 5))) (* 1/8 (/ 1 (pow y 3))))) (* 1/2 (/ 1 y))))) |
(pow z 2) |
(* z (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))) |
(* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))) |
(* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (* x (pow y 6)) (* (pow z 6) (pow (sqrt -1) 5)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))))) |
(* z (+ (sqrt -1) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))) |
(* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))) |
(* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow y 6) (* (pow z 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))))) |
(* -1 (* x (* z (sqrt -1)))) |
(* -1 (* z (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))) |
(* -1 (* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1)))))) |
(* -1 (* z (+ (* -1/8 (/ (* x (pow y 4)) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (* x (pow y 6)) (* (pow z 6) (pow (sqrt -1) 5)))) (+ (* 1/2 (/ (* x (pow y 2)) (* (pow z 2) (sqrt -1)))) (* x (sqrt -1))))))) |
(* -1 (* z (sqrt -1))) |
(* -1 (* z (+ (sqrt -1) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))) |
(* -1 (* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1)))))))) |
(* -1 (* z (+ (sqrt -1) (+ (* -1/8 (/ (pow y 4) (* (pow z 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow y 6) (* (pow z 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow y 2) (* (pow z 2) (sqrt -1))))))))) |
| Outputs |
|---|
(* x (sqrt (- (pow y 2) (pow z 2)))) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
(* x (* z (sqrt -1))) |
#s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z)) |
(+ (* 1/2 (/ (* x (pow y 2)) (* z (sqrt -1)))) (* x (* z (sqrt -1)))) |
(*.f64 z z) |
| Inputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
#s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z)) |
(*.f64 z z) |
| Outputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
#s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z)) |
(*.f64 z z) |
Compiled 117 to 13 computations (88.9% saved)
4 alts after pruning (0 fresh and 4 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 5 | 0 | 5 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 3 | 3 |
| Total | 5 | 4 | 9 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 67.8% | (*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| ✓ | 15.6% | #s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) |
| ✓ | 13.0% | #s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| ✓ | 9.3% | #s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
Compiled 150 to 60 computations (60% saved)
| Inputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (-.f64 (*.f64 y y) (*.f64 z z))) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
(*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| Outputs |
|---|
(*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
8 calls:
| 3.0ms | z |
| 2.0ms | y |
| 2.0ms | (*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| 2.0ms | (-.f64 (*.f64 y y) (*.f64 z z)) |
| 2.0ms | x |
| Accuracy | Segments | Branch |
|---|---|---|
| 67.8% | 1 | x |
| 67.8% | 1 | y |
| 67.8% | 1 | z |
| 70.3% | 2 | (*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| 70.3% | 2 | (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
| 70.3% | 2 | (-.f64 (*.f64 y y) (*.f64 z z)) |
| 67.8% | 1 | (*.f64 y y) |
| 70.3% | 2 | (*.f64 z z) |
Compiled 34 to 38 computations (-11.8% saved)
| Inputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (-.f64 (*.f64 y y) (*.f64 z z))) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| Outputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
#s(approx (* x (sqrt (- (* y y) (* z z)))) (*.f64 y y)) |
8 calls:
| 4.0ms | y |
| 2.0ms | z |
| 2.0ms | x |
| 2.0ms | (-.f64 (*.f64 y y) (*.f64 z z)) |
| 2.0ms | (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 15.6% | 1 | z |
| 15.6% | 1 | (*.f64 y y) |
| 17.5% | 2 | x |
| 15.6% | 1 | y |
| 15.6% | 1 | (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
| 15.6% | 1 | (-.f64 (*.f64 y y) (*.f64 z z)) |
| 15.6% | 1 | (*.f64 z z) |
| 17.4% | 2 | (*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
Compiled 34 to 38 computations (-11.8% saved)
| Inputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
| Outputs |
|---|
#s(approx (* x (sqrt (- (* y y) (* z z)))) #s(approx (sqrt (- (* y y) (* z z))) (*.f64 z z))) |
8 calls:
| 1.0ms | (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
| 1.0ms | x |
| 1.0ms | y |
| 1.0ms | z |
| 1.0ms | (*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| Accuracy | Segments | Branch |
|---|---|---|
| 9.3% | 1 | (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z))) |
| 9.3% | 1 | (-.f64 (*.f64 y y) (*.f64 z z)) |
| 9.3% | 1 | (*.f64 y y) |
| 9.3% | 1 | (*.f64 z z) |
| 9.3% | 1 | y |
| 9.3% | 1 | z |
| 9.3% | 1 | (*.f64 x (sqrt.f64 (-.f64 (*.f64 y y) (*.f64 z z)))) |
| 9.3% | 1 | x |
Compiled 34 to 38 computations (-11.8% saved)
| 1× | left-value |
| Time | Left | Right |
|---|---|---|
| 0.0ms | +inf | NaN |
Compiled 13 to 14 computations (-7.7% saved)
| 1× | binary-search |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 11.0ms | 1.2325854404754221e-124 | 3.6585715698741345e-123 |
| 6.0ms | 112× | 0 | valid |
Compiled 272 to 175 computations (35.7% saved)
ival-mult: 2.0ms (57.4% of total)ival-sqrt: 1.0ms (28.7% of total)ival-sub: 0.0ms (0% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)Loading profile data...