From Rump in a 1983 paper, rewritten

Time bar (total: 1.7s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%0%100%0%0%0%0
100%0%0%100%0%0%0%1
Compiler

Compiled 24 to 16 computations (33.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
ival-sub: 0.0ms (0% of total)
ival-and: 0.0ms (0% of total)
ival-mult: 0.0ms (0% of total)
ival-==: 0.0ms (0% of total)
const: 0.0ms (0% of total)
ival-pow: 0.0ms (0% of total)

sample989.0ms (59.4%)

Results
758.0ms8256×256valid
Precisions
Click to see histograms. Total time spent on operations: 524.0ms
ival-mult: 161.0ms (30.7% of total)
ival-pow: 157.0ms (29.9% of total)
ival-==: 97.0ms (18.5% of total)
ival-sub: 81.0ms (15.4% of total)
const: 19.0ms (3.6% of total)
ival-and: 9.0ms (1.7% of total)
Bogosity

preprocess300.0ms (18%)

Algorithm
egg-herbie
Rules
1405×fma-define
704×fma-neg
233×cancel-sign-sub-inv
229×distribute-lft-in
222×distribute-rgt-in
Iterations

Useful iterations: 8 (0.0ms)

IterNodesCost
034394
192394
2246386
3780357
41730357
53061357
64194357
74459357
84570349
94601349
104606349
115086349
125106349
135282349
145282349
155282349
165348349
175396349
Stop Event
saturated
Calls
Call 1
Inputs
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 (neg.f64 x) #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 (neg.f64 y) (neg.f64 y)) (-.f64 (*.f64 (neg.f64 y) (neg.f64 y)) #s(literal 2 binary64))))
(neg.f64 (-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 (neg.f64 x) #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64)))))
(neg.f64 (-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 (neg.f64 y) (neg.f64 y)) (-.f64 (*.f64 (neg.f64 y) (neg.f64 y)) #s(literal 2 binary64)))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 y #s(literal 4 binary64))) (*.f64 (*.f64 x x) (-.f64 (*.f64 x x) #s(literal 2 binary64))))
Outputs
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (fma.f64 y y #s(literal -2 binary64)) (*.f64 y y)))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 y (*.f64 y (fma.f64 y y #s(literal -2 binary64)))))
(fma.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64)) (-.f64 (*.f64 #s(literal 2 binary64) (*.f64 y y)) (pow.f64 y #s(literal 4 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 y (fma.f64 y #s(literal -2 binary64) (pow.f64 y #s(literal 3 binary64)))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (fma.f64 y y #s(literal -2 binary64)) (*.f64 y y)))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 y (*.f64 y (fma.f64 y y #s(literal -2 binary64)))))
(fma.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64)) (-.f64 (*.f64 #s(literal 2 binary64) (*.f64 y y)) (pow.f64 y #s(literal 4 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 y (fma.f64 y #s(literal -2 binary64) (pow.f64 y #s(literal 3 binary64)))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 (neg.f64 x) #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (fma.f64 y y #s(literal -2 binary64)) (*.f64 y y)))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 y (*.f64 y (fma.f64 y y #s(literal -2 binary64)))))
(fma.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64)) (-.f64 (*.f64 #s(literal 2 binary64) (*.f64 y y)) (pow.f64 y #s(literal 4 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 y (fma.f64 y #s(literal -2 binary64) (pow.f64 y #s(literal 3 binary64)))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 (neg.f64 y) (neg.f64 y)) (-.f64 (*.f64 (neg.f64 y) (neg.f64 y)) #s(literal 2 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (fma.f64 y y #s(literal -2 binary64)) (*.f64 y y)))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 y (*.f64 y (fma.f64 y y #s(literal -2 binary64)))))
(fma.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64)) (-.f64 (*.f64 #s(literal 2 binary64) (*.f64 y y)) (pow.f64 y #s(literal 4 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 y (fma.f64 y #s(literal -2 binary64) (pow.f64 y #s(literal 3 binary64)))))
(neg.f64 (-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 (neg.f64 x) #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64)))))
(neg.f64 (-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 (neg.f64 x) #s(literal 4 binary64))) (*.f64 (fma.f64 y y #s(literal -2 binary64)) (*.f64 y y))))
(+.f64 (neg.f64 (*.f64 #s(literal 9 binary64) (pow.f64 (neg.f64 x) #s(literal 4 binary64)))) (*.f64 y (*.f64 y (fma.f64 y y #s(literal -2 binary64)))))
(+.f64 (*.f64 y (*.f64 y (fma.f64 y y #s(literal -2 binary64)))) (*.f64 (pow.f64 (neg.f64 x) #s(literal 4 binary64)) #s(literal -9 binary64)))
(fma.f64 (pow.f64 (neg.f64 x) #s(literal 4 binary64)) #s(literal -9 binary64) (*.f64 y (fma.f64 y #s(literal -2 binary64) (pow.f64 y #s(literal 3 binary64)))))
(fma.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -9 binary64) (*.f64 y (fma.f64 y #s(literal -2 binary64) (pow.f64 y #s(literal 3 binary64)))))
(neg.f64 (-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 (neg.f64 y) (neg.f64 y)) (-.f64 (*.f64 (neg.f64 y) (neg.f64 y)) #s(literal 2 binary64)))))
(neg.f64 (-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 (neg.f64 x) #s(literal 4 binary64))) (*.f64 (fma.f64 y y #s(literal -2 binary64)) (*.f64 y y))))
(+.f64 (neg.f64 (*.f64 #s(literal 9 binary64) (pow.f64 (neg.f64 x) #s(literal 4 binary64)))) (*.f64 y (*.f64 y (fma.f64 y y #s(literal -2 binary64)))))
(+.f64 (*.f64 y (*.f64 y (fma.f64 y y #s(literal -2 binary64)))) (*.f64 (pow.f64 (neg.f64 x) #s(literal 4 binary64)) #s(literal -9 binary64)))
(fma.f64 (pow.f64 (neg.f64 x) #s(literal 4 binary64)) #s(literal -9 binary64) (*.f64 y (fma.f64 y #s(literal -2 binary64) (pow.f64 y #s(literal 3 binary64)))))
(fma.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -9 binary64) (*.f64 y (fma.f64 y #s(literal -2 binary64) (pow.f64 y #s(literal 3 binary64)))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 y #s(literal 4 binary64))) (*.f64 (*.f64 x x) (-.f64 (*.f64 x x) #s(literal 2 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 y #s(literal 4 binary64))) (*.f64 (*.f64 x x) (fma.f64 x x #s(literal -2 binary64))))
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 y #s(literal 4 binary64))) (*.f64 x (fma.f64 x #s(literal -2 binary64) (pow.f64 x #s(literal 3 binary64)))))
Symmetry

(abs x)

(abs y)

explain339.0ms (20.4%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
2560-0-(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64))))
00-0-x
00-0-(*.f64 y y)
00-0-(*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64)))
00-0-(pow.f64 x #s(literal 4 binary64))
00-0-y
00-0-#s(literal 2 binary64)
00-0-(-.f64 (*.f64 y y) #s(literal 2 binary64))
00-0-#s(literal 4 binary64)
00-0-#s(literal 9 binary64)
00-0-(*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64)))
Results
296.0ms512×256valid
Compiler

Compiled 113 to 35 computations (69% saved)

Precisions
Click to see histograms. Total time spent on operations: 261.0ms
ival-mult: 244.0ms (93.3% of total)
ival-pow: 12.0ms (4.6% of total)
ival-sub: 4.0ms (1.5% of total)
const: 1.0ms (0.4% of total)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune1.0ms (0.1%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
3.1%
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64))))
Compiler

Compiled 34 to 22 computations (35.3% saved)

simplify9.0ms (0.5%)

Algorithm
egg-herbie
Rules
74×unsub-neg
41×neg-mul-1
21×distribute-lft-neg-in
19×distribute-neg-out
14×distribute-lft-neg-out
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01658
12658
24458
35758
47758
58358
68858
711758
815958
916358
1018058
1124658
1230758
1330858
Stop Event
saturated
Calls
Call 1
Inputs
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64))))
Outputs
(-.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 (*.f64 y y) #s(literal 2 binary64))))
(+.f64 (*.f64 #s(literal 9 binary64) (pow.f64 x #s(literal 4 binary64))) (*.f64 (*.f64 y y) (-.f64 #s(literal 2 binary64) (*.f64 y y))))

soundness0.0ms (0%)

Stop Event
fuel
Compiler

Compiled 17 to 11 computations (35.3% saved)

preprocess25.0ms (1.5%)

Remove

(abs y)

(abs x)

Compiler

Compiled 204 to 132 computations (35.3% saved)

end0.0ms (0%)

Profiling

Loading profile data...