Linear.Quaternion:$c/ from linear-1.19.1.3, D

Time bar (total: 3.8s)

analyze0.0ms (0%)

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

Compiled 19 to 10 computations (47.4% saved)

sample2.2s (57.7%)

Results
1.1s5009×body256valid
278.0ms657×body1024valid
251.0ms364×body2048valid
224.0ms1476×body256infinite
203.0ms453×body512valid
33.0ms178×body512infinite
27.0ms118×body1024infinite
0.0msbody4096valid
Bogosity

preprocess304.0ms (8.1%)

Algorithm
egg-herbie
Rules
1150×sub-neg
1112×unsub-neg
748×fma-def
650×distribute-lft-out--
606×distribute-lft-neg-in
Problems
138×No Errors
104×(+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y))
11×(-.f64 (*.f64 x y) (*.f64 y y))
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
048662
1183367
2641264
32529250
45645250
57367250
Stop Event
node limit
Calls
Call 1
Inputs
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
(-.f64 (+.f64 (-.f64 (*.f64 (neg.f64 x) y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
(-.f64 (+.f64 (-.f64 (*.f64 x (neg.f64 y)) (*.f64 (neg.f64 y) (neg.f64 y))) (*.f64 (neg.f64 y) (neg.f64 y))) (*.f64 (neg.f64 y) z))
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y (neg.f64 z)))
(neg.f64 (-.f64 (+.f64 (-.f64 (*.f64 (neg.f64 x) y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z)))
(neg.f64 (-.f64 (+.f64 (-.f64 (*.f64 x (neg.f64 y)) (*.f64 (neg.f64 y) (neg.f64 y))) (*.f64 (neg.f64 y) (neg.f64 y))) (*.f64 (neg.f64 y) z)))
(neg.f64 (-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y (neg.f64 z))))
(-.f64 (+.f64 (-.f64 (*.f64 y x) (*.f64 x x)) (*.f64 x x)) (*.f64 x z))
(-.f64 (+.f64 (-.f64 (*.f64 z y) (*.f64 y y)) (*.f64 y y)) (*.f64 y x))
(-.f64 (+.f64 (-.f64 (*.f64 x z) (*.f64 z z)) (*.f64 z z)) (*.f64 z y))
Outputs
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
(+.f64 (*.f64 y (-.f64 x y)) (-.f64 (*.f64 y y) (*.f64 y z)))
(-.f64 (*.f64 x y) (*.f64 y z))
(*.f64 y (-.f64 x z))
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
(+.f64 (*.f64 y (-.f64 x y)) (-.f64 (*.f64 y y) (*.f64 y z)))
(-.f64 (*.f64 x y) (*.f64 y z))
(*.f64 y (-.f64 x z))
(-.f64 (+.f64 (-.f64 (*.f64 (neg.f64 x) y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
(+.f64 (*.f64 y (-.f64 (neg.f64 x) y)) (-.f64 (*.f64 y y) (*.f64 y z)))
(-.f64 (neg.f64 (*.f64 x y)) (*.f64 y z))
(*.f64 (neg.f64 y) (+.f64 z x))
(*.f64 y (-.f64 (neg.f64 z) x))
(-.f64 (+.f64 (-.f64 (*.f64 x (neg.f64 y)) (*.f64 (neg.f64 y) (neg.f64 y))) (*.f64 (neg.f64 y) (neg.f64 y))) (*.f64 (neg.f64 y) z))
(+.f64 (+.f64 (*.f64 y y) (*.f64 y (-.f64 (neg.f64 x) y))) (*.f64 y z))
(+.f64 (fma.f64 x (neg.f64 y) 0) (*.f64 y z))
(*.f64 (neg.f64 y) (-.f64 x z))
(*.f64 y (-.f64 z x))
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y (neg.f64 z)))
(+.f64 (*.f64 y (-.f64 x y)) (-.f64 (*.f64 y y) (*.f64 y (neg.f64 z))))
(+.f64 (fma.f64 x y 0) (*.f64 y z))
(*.f64 y (+.f64 x z))
(neg.f64 (-.f64 (+.f64 (-.f64 (*.f64 (neg.f64 x) y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z)))
(+.f64 (*.f64 y (-.f64 x y)) (-.f64 (*.f64 y y) (*.f64 y (neg.f64 z))))
(+.f64 (fma.f64 x y 0) (*.f64 y z))
(*.f64 y (+.f64 x z))
(neg.f64 (-.f64 (+.f64 (-.f64 (*.f64 x (neg.f64 y)) (*.f64 (neg.f64 y) (neg.f64 y))) (*.f64 (neg.f64 y) (neg.f64 y))) (*.f64 (neg.f64 y) z)))
(+.f64 (*.f64 y (-.f64 x y)) (-.f64 (*.f64 y y) (*.f64 y z)))
(-.f64 (*.f64 x y) (*.f64 y z))
(*.f64 y (-.f64 x z))
(neg.f64 (-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (-.f64 (neg.f64 x) y)) (-.f64 (*.f64 y y) (*.f64 y z)))
(-.f64 (neg.f64 (*.f64 x y)) (*.f64 y z))
(*.f64 (neg.f64 y) (+.f64 z x))
(*.f64 y (-.f64 (neg.f64 z) x))
(-.f64 (+.f64 (-.f64 (*.f64 y x) (*.f64 x x)) (*.f64 x x)) (*.f64 x z))
(+.f64 (*.f64 x (-.f64 y x)) (-.f64 (*.f64 x x) (*.f64 x z)))
(-.f64 (fma.f64 x y 0) (*.f64 x z))
(*.f64 x (-.f64 (-.f64 y 0) z))
(*.f64 x (-.f64 y z))
(-.f64 (+.f64 (-.f64 (*.f64 z y) (*.f64 y y)) (*.f64 y y)) (*.f64 y x))
(+.f64 (+.f64 (*.f64 y y) (*.f64 y (-.f64 (neg.f64 x) y))) (*.f64 y z))
(+.f64 (fma.f64 x (neg.f64 y) 0) (*.f64 y z))
(*.f64 (neg.f64 y) (-.f64 x z))
(*.f64 y (-.f64 z x))
(-.f64 (+.f64 (-.f64 (*.f64 x z) (*.f64 z z)) (*.f64 z z)) (*.f64 z y))
(+.f64 (*.f64 z (-.f64 x z)) (-.f64 (*.f64 z z) (*.f64 y z)))
(-.f64 (*.f64 x z) (*.f64 y z))
(*.f64 z (-.f64 x y))
Symmetry

(negabs y)

Compiler

Compiled 67 to 19 computations (71.6% saved)

eval1.0ms (0%)

Compiler

Compiled 28 to 13 computations (53.6% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 y (-.f64 x z))
100.0%
(*.f64 y (-.f64 x z))
Compiler

Compiled 16 to 10 computations (37.5% saved)

localize25.0ms (0.7%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
100.0%
(*.f64 y (-.f64 x z))
Compiler

Compiled 15 to 6 computations (60% saved)

series4.0ms (0.1%)

Counts
1 → 24
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(*.f64 y (-.f64 x z))
1.0ms
y
@0
(*.f64 y (-.f64 x z))
0.0ms
x
@inf
(*.f64 y (-.f64 x z))
0.0ms
y
@-inf
(*.f64 y (-.f64 x z))
0.0ms
y
@inf
(*.f64 y (-.f64 x z))

rewrite248.0ms (6.6%)

Algorithm
batch-egg-rewrite
Rules
820×unpow-prod-down
718×prod-diff
577×log1p-expm1-u
577×expm1-log1p-u
572×log-prod
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01122
111722
2152522
Stop Event
node limit
Counts
1 → 34
Calls
Call 1
Inputs
(*.f64 y (-.f64 x z))
Outputs
(+.f64 0 (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 y x) (*.f64 y (neg.f64 z)))
(+.f64 (*.f64 x y) (*.f64 (neg.f64 z) y))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))))
(-.f64 (exp.f64 (log1p.f64 (*.f64 y (-.f64 x z)))) 1)
(/.f64 (*.f64 y (-.f64 (pow.f64 x 3) (pow.f64 z 3))) (fma.f64 z (+.f64 x z) (pow.f64 x 2)))
(/.f64 (*.f64 y (-.f64 (pow.f64 x 2) (pow.f64 z 2))) (+.f64 x z))
(/.f64 (*.f64 (-.f64 (pow.f64 x 3) (pow.f64 z 3)) y) (fma.f64 z (+.f64 x z) (pow.f64 x 2)))
(/.f64 (*.f64 (-.f64 (pow.f64 x 2) (pow.f64 z 2)) y) (+.f64 x z))
(pow.f64 (*.f64 y (-.f64 x z)) 1)
(pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 3)
(pow.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2) 1/2)
(pow.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 y (-.f64 x z))) 2)
(sqrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2))
(log.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))
(cbrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3))
(expm1.f64 (log1p.f64 (*.f64 y (-.f64 x z))))
(exp.f64 (log.f64 (*.f64 y (-.f64 x z))))
(exp.f64 (*.f64 (log.f64 (*.f64 y (-.f64 x z))) 1))
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 y (-.f64 x z))) 1) 1))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 y (-.f64 x z)))) 3))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3)) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 y (-.f64 x z)))) 2))
(exp.f64 (+.f64 (log.f64 y) (*.f64 (log.f64 (-.f64 x z)) 1)))
(exp.f64 (+.f64 (*.f64 (log.f64 y) 1) (log.f64 (-.f64 x z))))
(exp.f64 (+.f64 (*.f64 (log.f64 y) 1) (*.f64 (log.f64 (-.f64 x z)) 1)))
(exp.f64 (+.f64 (log.f64 (-.f64 x z)) (*.f64 (log.f64 y) 1)))
(exp.f64 (+.f64 (*.f64 (log.f64 (-.f64 x z)) 1) (log.f64 y)))
(exp.f64 (+.f64 (*.f64 (log.f64 (-.f64 x z)) 1) (*.f64 (log.f64 y) 1)))
(log1p.f64 (expm1.f64 (*.f64 y (-.f64 x z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(fma.f64 x y (*.f64 (neg.f64 z) y))

simplify114.0ms (3%)

Algorithm
egg-herbie
Rules
1370×log-prod
868×associate-*r*
804×associate-*l*
692×prod-exp
434×fma-def
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01081451
12341412
26111412
340801364
469731364
Stop Event
node limit
Counts
58 → 52
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 x y)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 x y)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 x y)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(+.f64 0 (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 y x) (*.f64 y (neg.f64 z)))
(+.f64 (*.f64 x y) (*.f64 (neg.f64 z) y))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))))
(-.f64 (exp.f64 (log1p.f64 (*.f64 y (-.f64 x z)))) 1)
(/.f64 (*.f64 y (-.f64 (pow.f64 x 3) (pow.f64 z 3))) (fma.f64 z (+.f64 x z) (pow.f64 x 2)))
(/.f64 (*.f64 y (-.f64 (pow.f64 x 2) (pow.f64 z 2))) (+.f64 x z))
(/.f64 (*.f64 (-.f64 (pow.f64 x 3) (pow.f64 z 3)) y) (fma.f64 z (+.f64 x z) (pow.f64 x 2)))
(/.f64 (*.f64 (-.f64 (pow.f64 x 2) (pow.f64 z 2)) y) (+.f64 x z))
(pow.f64 (*.f64 y (-.f64 x z)) 1)
(pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 3)
(pow.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2) 1/2)
(pow.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 y (-.f64 x z))) 2)
(sqrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2))
(log.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))
(cbrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3))
(expm1.f64 (log1p.f64 (*.f64 y (-.f64 x z))))
(exp.f64 (log.f64 (*.f64 y (-.f64 x z))))
(exp.f64 (*.f64 (log.f64 (*.f64 y (-.f64 x z))) 1))
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 y (-.f64 x z))) 1) 1))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 y (-.f64 x z)))) 3))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3)) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 y (-.f64 x z)))) 2))
(exp.f64 (+.f64 (log.f64 y) (*.f64 (log.f64 (-.f64 x z)) 1)))
(exp.f64 (+.f64 (*.f64 (log.f64 y) 1) (log.f64 (-.f64 x z))))
(exp.f64 (+.f64 (*.f64 (log.f64 y) 1) (*.f64 (log.f64 (-.f64 x z)) 1)))
(exp.f64 (+.f64 (log.f64 (-.f64 x z)) (*.f64 (log.f64 y) 1)))
(exp.f64 (+.f64 (*.f64 (log.f64 (-.f64 x z)) 1) (log.f64 y)))
(exp.f64 (+.f64 (*.f64 (log.f64 (-.f64 x z)) 1) (*.f64 (log.f64 y) 1)))
(log1p.f64 (expm1.f64 (*.f64 y (-.f64 x z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(fma.f64 x y (*.f64 (neg.f64 z) y))
Outputs
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(*.f64 x y)
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(*.f64 x y)
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(*.f64 x y)
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(+.f64 0 (*.f64 y (-.f64 x z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 x y) (*.f64 (neg.f64 z) y))
(*.f64 y (-.f64 x z))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))))
(*.f64 3 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))))
(*.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))) 3)
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))))
(*.f64 y (-.f64 x z))
(-.f64 (exp.f64 (log1p.f64 (*.f64 y (-.f64 x z)))) 1)
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 y (-.f64 (pow.f64 x 3) (pow.f64 z 3))) (fma.f64 z (+.f64 x z) (pow.f64 x 2)))
(/.f64 (*.f64 y (-.f64 (pow.f64 x 3) (pow.f64 z 3))) (fma.f64 z (+.f64 z x) (pow.f64 x 2)))
(*.f64 (/.f64 y (fma.f64 z (+.f64 z x) (pow.f64 x 2))) (-.f64 (pow.f64 x 3) (pow.f64 z 3)))
(*.f64 y (/.f64 (-.f64 (pow.f64 x 3) (pow.f64 z 3)) (fma.f64 z (+.f64 z x) (pow.f64 x 2))))
(*.f64 (-.f64 (pow.f64 x 3) (pow.f64 z 3)) (/.f64 y (fma.f64 z (+.f64 z x) (pow.f64 x 2))))
(/.f64 (*.f64 y (-.f64 (pow.f64 x 2) (pow.f64 z 2))) (+.f64 x z))
(/.f64 (-.f64 (pow.f64 x 2) (pow.f64 z 2)) (/.f64 (+.f64 z x) y))
(*.f64 (/.f64 y (+.f64 z x)) (-.f64 (pow.f64 x 2) (pow.f64 z 2)))
(*.f64 (-.f64 (pow.f64 x 2) (pow.f64 z 2)) (/.f64 y (+.f64 z x)))
(*.f64 (/.f64 y 1) (-.f64 x z))
(/.f64 (*.f64 (-.f64 (pow.f64 x 3) (pow.f64 z 3)) y) (fma.f64 z (+.f64 x z) (pow.f64 x 2)))
(/.f64 (*.f64 y (-.f64 (pow.f64 x 3) (pow.f64 z 3))) (fma.f64 z (+.f64 z x) (pow.f64 x 2)))
(*.f64 (/.f64 y (fma.f64 z (+.f64 z x) (pow.f64 x 2))) (-.f64 (pow.f64 x 3) (pow.f64 z 3)))
(*.f64 y (/.f64 (-.f64 (pow.f64 x 3) (pow.f64 z 3)) (fma.f64 z (+.f64 z x) (pow.f64 x 2))))
(*.f64 (-.f64 (pow.f64 x 3) (pow.f64 z 3)) (/.f64 y (fma.f64 z (+.f64 z x) (pow.f64 x 2))))
(/.f64 (*.f64 (-.f64 (pow.f64 x 2) (pow.f64 z 2)) y) (+.f64 x z))
(/.f64 (-.f64 (pow.f64 x 2) (pow.f64 z 2)) (/.f64 (+.f64 z x) y))
(*.f64 (/.f64 y (+.f64 z x)) (-.f64 (pow.f64 x 2) (pow.f64 z 2)))
(*.f64 (-.f64 (pow.f64 x 2) (pow.f64 z 2)) (/.f64 y (+.f64 z x)))
(*.f64 (/.f64 y 1) (-.f64 x z))
(pow.f64 (*.f64 y (-.f64 x z)) 1)
(*.f64 y (-.f64 x z))
(pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 3)
(*.f64 y (-.f64 x z))
(pow.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2) 1/2)
(*.f64 y (-.f64 x z))
(pow.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3) 1/3)
(*.f64 y (-.f64 x z))
(pow.f64 (sqrt.f64 (*.f64 y (-.f64 x z))) 2)
(*.f64 y (-.f64 x z))
(sqrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2))
(*.f64 y (-.f64 x z))
(log.f64 (pow.f64 (exp.f64 y) (-.f64 x z)))
(*.f64 y (-.f64 x z))
(cbrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3))
(*.f64 y (-.f64 x z))
(expm1.f64 (log1p.f64 (*.f64 y (-.f64 x z))))
(*.f64 y (-.f64 x z))
(exp.f64 (log.f64 (*.f64 y (-.f64 x z))))
(*.f64 y (-.f64 x z))
(exp.f64 (*.f64 (log.f64 (*.f64 y (-.f64 x z))) 1))
(*.f64 y (-.f64 x z))
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 y (-.f64 x z))) 1) 1))
(*.f64 y (-.f64 x z))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 y (-.f64 x z)))) 3))
(*.f64 y (-.f64 x z))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3)) 1/3))
(*.f64 y (-.f64 x z))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 y (-.f64 x z)))) 2))
(*.f64 y (-.f64 x z))
(exp.f64 (+.f64 (log.f64 y) (*.f64 (log.f64 (-.f64 x z)) 1)))
(*.f64 y (-.f64 x z))
(exp.f64 (+.f64 (*.f64 (log.f64 y) 1) (log.f64 (-.f64 x z))))
(*.f64 y (-.f64 x z))
(exp.f64 (+.f64 (*.f64 (log.f64 y) 1) (*.f64 (log.f64 (-.f64 x z)) 1)))
(*.f64 y (-.f64 x z))
(exp.f64 (+.f64 (log.f64 (-.f64 x z)) (*.f64 (log.f64 y) 1)))
(*.f64 y (-.f64 x z))
(exp.f64 (+.f64 (*.f64 (log.f64 (-.f64 x z)) 1) (log.f64 y)))
(*.f64 y (-.f64 x z))
(exp.f64 (+.f64 (*.f64 (log.f64 (-.f64 x z)) 1) (*.f64 (log.f64 y) 1)))
(*.f64 y (-.f64 x z))
(log1p.f64 (expm1.f64 (*.f64 y (-.f64 x z))))
(*.f64 y (-.f64 x z))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 x y (*.f64 (neg.f64 z) y))
(*.f64 y (-.f64 x z))

eval13.0ms (0.3%)

Compiler

Compiled 537 to 225 computations (58.1% saved)

prune13.0ms (0.3%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New50252
Fresh000
Picked011
Done000
Total50353
Accuracy
100.0%
Counts
53 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
50.0%
(*.f64 z (neg.f64 y))
100.0%
(*.f64 y (-.f64 x z))
58.6%
(*.f64 y x)
50.0%
(*.f64 z (neg.f64 y))
100.0%
(*.f64 y (-.f64 x z))
58.6%
(*.f64 y x)
Compiler

Compiled 42 to 28 computations (33.3% saved)

localize48.0ms (1.3%)

Compiler

Compiled 17 to 7 computations (58.8% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New000
Fresh000
Picked022
Done011
Total033
Accuracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
50.0%
(*.f64 z (neg.f64 y))
100.0%
(*.f64 y (-.f64 x z))
58.6%
(*.f64 y x)
Compiler

Compiled 51 to 28 computations (45.1% saved)

regimes18.0ms (0.5%)

Counts
4 → 1
Calls
Call 1
Inputs
(*.f64 y x)
(*.f64 z (neg.f64 y))
(*.f64 y (-.f64 x z))
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
Outputs
(*.f64 y (-.f64 x z))
Calls

4 calls:

5.0ms
z
4.0ms
y
4.0ms
x
4.0ms
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
Results
AccuracySegmentsBranch
100.0%1x
100.0%1y
100.0%1z
100.0%1(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
Compiler

Compiled 60 to 32 computations (46.7% saved)

regimes133.0ms (3.5%)

Counts
2 → 5
Calls
Call 1
Inputs
(*.f64 y x)
(*.f64 z (neg.f64 y))
Outputs
(*.f64 z (neg.f64 y))
(*.f64 y x)
(*.f64 z (neg.f64 y))
(*.f64 y x)
(*.f64 z (neg.f64 y))
Calls

3 calls:

106.0ms
y
16.0ms
z
10.0ms
x
Results
AccuracySegmentsBranch
80.8%3x
69.8%7y
84.4%5z
Compiler

Compiled 22 to 15 computations (31.8% saved)

regimes9.0ms (0.2%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 y x)
Outputs
(*.f64 y x)
Calls

3 calls:

3.0ms
z
3.0ms
x
3.0ms
y
Results
AccuracySegmentsBranch
58.6%1y
58.6%1x
58.6%1z
Compiler

Compiled 18 to 13 computations (27.8% saved)

bsearch76.0ms (2%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
narrow-enough
narrow-enough
Steps
TimeLeftRight
16.0ms
5.7127579193801e+199
2.8439364452338996e+202
20.0ms
8.764388974954745e+140
9.607589885434021e+142
16.0ms
4.7690754779013443e+82
1.3596876076708425e+84
24.0ms
-17758582591797.125
-4266854.72227218
Results
41.0ms346×body256valid
16.0ms91×body256infinite
5.0ms22×body1024valid
5.0ms22×body512valid
2.0msbody1024infinite
1.0msbody512infinite
Compiler

Compiled 489 to 355 computations (27.4% saved)

simplify10.0ms (0.3%)

Algorithm
egg-herbie
Rules
14×*-commutative
sub-neg
not-or
+-commutative
neg-mul-1
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
030150
146144
259134
371130
477130
581130
682130
783130
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 y (-.f64 x z))
(if (<=.f64 z -2500000000000) (*.f64 z (neg.f64 y)) (if (<=.f64 z 49000000000000000565928364967025195667396821918058166132283919805092815954126045184) (*.f64 y x) (if (<=.f64 z 95000000000000000089667875539968399908186421781940664500262708786315856454554782038803977957382894942307862298855765638613490687543017258090496) (*.f64 z (neg.f64 y)) (if (<=.f64 z 125000000000000004714848161632068786467724214271375990583792072320444331735548805624202380779518698661634426763635923712456941447904364351344500703752365677891099149098885108365277599999000415576260608) (*.f64 y x) (*.f64 z (neg.f64 y))))))
(*.f64 y x)
Outputs
(*.f64 y (-.f64 x z))
(if (<=.f64 z -2500000000000) (*.f64 z (neg.f64 y)) (if (<=.f64 z 49000000000000000565928364967025195667396821918058166132283919805092815954126045184) (*.f64 y x) (if (<=.f64 z 95000000000000000089667875539968399908186421781940664500262708786315856454554782038803977957382894942307862298855765638613490687543017258090496) (*.f64 z (neg.f64 y)) (if (<=.f64 z 125000000000000004714848161632068786467724214271375990583792072320444331735548805624202380779518698661634426763635923712456941447904364351344500703752365677891099149098885108365277599999000415576260608) (*.f64 y x) (*.f64 z (neg.f64 y))))))
(if (<=.f64 z -2500000000000) (*.f64 z (neg.f64 y)) (if (<=.f64 z 49000000000000000565928364967025195667396821918058166132283919805092815954126045184) (*.f64 y x) (if (or (<=.f64 z 95000000000000000089667875539968399908186421781940664500262708786315856454554782038803977957382894942307862298855765638613490687543017258090496) (not (<=.f64 z 125000000000000004714848161632068786467724214271375990583792072320444331735548805624202380779518698661634426763635923712456941447904364351344500703752365677891099149098885108365277599999000415576260608))) (*.f64 z (neg.f64 y)) (*.f64 y x))))
(if (<=.f64 z -2500000000000) (*.f64 z (neg.f64 y)) (if (or (<=.f64 z 49000000000000000565928364967025195667396821918058166132283919805092815954126045184) (not (or (<=.f64 z 95000000000000000089667875539968399908186421781940664500262708786315856454554782038803977957382894942307862298855765638613490687543017258090496) (not (<=.f64 z 125000000000000004714848161632068786467724214271375990583792072320444331735548805624202380779518698661634426763635923712456941447904364351344500703752365677891099149098885108365277599999000415576260608))))) (*.f64 y x) (*.f64 z (neg.f64 y))))
(if (or (<=.f64 z -2500000000000) (not (or (<=.f64 z 49000000000000000565928364967025195667396821918058166132283919805092815954126045184) (not (or (<=.f64 z 95000000000000000089667875539968399908186421781940664500262708786315856454554782038803977957382894942307862298855765638613490687543017258090496) (not (<=.f64 z 125000000000000004714848161632068786467724214271375990583792072320444331735548805624202380779518698661634426763635923712456941447904364351344500703752365677891099149098885108365277599999000415576260608))))))) (*.f64 z (neg.f64 y)) (*.f64 y x))
(if (or (<=.f64 z -2500000000000) (not (or (<=.f64 z 49000000000000000565928364967025195667396821918058166132283919805092815954126045184) (and (not (<=.f64 z 95000000000000000089667875539968399908186421781940664500262708786315856454554782038803977957382894942307862298855765638613490687543017258090496)) (<=.f64 z 125000000000000004714848161632068786467724214271375990583792072320444331735548805624202380779518698661634426763635923712456941447904364351344500703752365677891099149098885108365277599999000415576260608))))) (*.f64 z (neg.f64 y)) (*.f64 y x))
(if (or (<=.f64 z -2500000000000) (and (not (<=.f64 z 49000000000000000565928364967025195667396821918058166132283919805092815954126045184)) (or (<=.f64 z 95000000000000000089667875539968399908186421781940664500262708786315856454554782038803977957382894942307862298855765638613490687543017258090496) (not (<=.f64 z 125000000000000004714848161632068786467724214271375990583792072320444331735548805624202380779518698661634426763635923712456941447904364351344500703752365677891099149098885108365277599999000415576260608))))) (*.f64 z (neg.f64 y)) (*.f64 y x))
(*.f64 y x)
Compiler

Compiled 42 to 29 computations (31% saved)

soundness473.0ms (12.6%)

Rules
1370×log-prod
1370×log-prod
1150×sub-neg
1112×unsub-neg
868×associate-*r*
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
048662
1183367
2641264
32529250
45645250
57367250
01081451
12341412
26111412
340801364
469731364
01081451
12341412
26111412
340801364
469731364
Stop Event
node limit
node limit
node limit
Compiler

Compiled 100 to 40 computations (60% saved)

end0.0ms (0%)

preprocess99.0ms (2.6%)

Remove

(negabs y)

Compiler

Compiled 172 to 102 computations (40.7% saved)

Profiling

Loading profile data...