FastMath dist

Time bar (total: 1.9s)

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 11 to 7 computations (36.4% saved)

sample1.4s (73.1%)

Results
1.2s6522×body256valid
155.0ms1734×body256infinite
Bogosity

preprocess56.0ms (3%)

Algorithm
egg-herbie
Rules
1266×fma-def
140×unsub-neg
120×cancel-sign-sub-inv
106×distribute-lft-in
100×associate-*r*
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
026103
17397
214295
322895
444695
563295
6101995
7147495
8157595
9157795
Stop Event
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
(+.f64 (*.f64 (neg.f64 d1) d2) (*.f64 (neg.f64 d1) d3))
(+.f64 (*.f64 d1 (neg.f64 d2)) (*.f64 d1 d3))
(+.f64 (*.f64 d1 d2) (*.f64 d1 (neg.f64 d3)))
(+.f64 (*.f64 d2 d1) (*.f64 d2 d3))
(+.f64 (*.f64 d3 d2) (*.f64 d3 d1))
(+.f64 (*.f64 d1 d3) (*.f64 d1 d2))
Outputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 (neg.f64 d1) d2) (*.f64 (neg.f64 d1) d3))
(*.f64 (neg.f64 d1) (+.f64 d2 d3))
(*.f64 d1 (-.f64 (neg.f64 d2) d3))
(+.f64 (*.f64 d1 (neg.f64 d2)) (*.f64 d1 d3))
(*.f64 d1 (+.f64 (neg.f64 d2) d3))
(*.f64 d1 (fma.f64 -1 d2 d3))
(*.f64 d1 (-.f64 d3 d2))
(+.f64 (*.f64 d1 d2) (*.f64 d1 (neg.f64 d3)))
(*.f64 d1 (+.f64 d2 (neg.f64 d3)))
(*.f64 d1 (-.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d2 d3))
(*.f64 d2 (+.f64 d1 d3))
(+.f64 (*.f64 d3 d2) (*.f64 d3 d1))
(*.f64 d3 (+.f64 d2 d1))
(*.f64 d3 (+.f64 d1 d2))
(+.f64 (*.f64 d1 d3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 d2 d3))
Symmetry

(sort d2 d3)

Compiler

Compiled 13 to 9 computations (30.8% saved)

simplify3.0ms (0.2%)

Algorithm
egg-herbie
Rules
fma-def
*-commutative
+-commutative
distribute-lft-out
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0813
11513
22113
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
Outputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))

eval0.0ms (0%)

Compiler

Compiled 15 to 8 computations (46.7% saved)

prune1.0ms (0.1%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Accurracy
100.0%
Counts
3 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 d1 (+.f64 d2 d3))
100.0%
(*.f64 d1 (+.f64 d2 d3))
Compiler

Compiled 16 to 10 computations (37.5% saved)

localize21.0ms (1.1%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
100.0%
(*.f64 d1 (+.f64 d2 d3))
Compiler

Compiled 15 to 6 computations (60% saved)

series3.0ms (0.1%)

Counts
1 → 24
Calls

9 calls:

TimeVariablePointExpression
0.0ms
d1
@0
(*.f64 d1 (+.f64 d2 d3))
0.0ms
d2
@-inf
(*.f64 d1 (+.f64 d2 d3))
0.0ms
d1
@-inf
(*.f64 d1 (+.f64 d2 d3))
0.0ms
d2
@inf
(*.f64 d1 (+.f64 d2 d3))
0.0ms
d1
@inf
(*.f64 d1 (+.f64 d2 d3))

rewrite58.0ms (3.1%)

Algorithm
batch-egg-rewrite
Rules
1754×pow1
1626×add-exp-log
1626×log1p-expm1-u
1626×expm1-log1p-u
1596×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
115413
2222113
Stop Event
node limit
Counts
1 → 24
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 d2 d3))
Outputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
(+.f64 (*.f64 d1 d3) (*.f64 d1 d2))
(+.f64 (*.f64 (*.f64 d1 d2) 1) (*.f64 (*.f64 d1 d3) 1))
(-.f64 (+.f64 1 (*.f64 d1 (+.f64 d2 d3))) 1)
(/.f64 (+.f64 (pow.f64 (*.f64 d1 d2) 3) (pow.f64 (*.f64 d1 d3) 3)) (+.f64 (*.f64 (*.f64 d1 d2) (*.f64 d1 d2)) (-.f64 (*.f64 (*.f64 d1 d3) (*.f64 d1 d3)) (*.f64 (*.f64 d1 d2) (*.f64 d1 d3)))))
(/.f64 (-.f64 (*.f64 (*.f64 d1 d2) (*.f64 d1 d2)) (*.f64 (*.f64 d1 d3) (*.f64 d1 d3))) (-.f64 (*.f64 d1 d2) (*.f64 d1 d3)))
(/.f64 (*.f64 d1 (+.f64 (pow.f64 d3 3) (pow.f64 d2 3))) (fma.f64 d2 d2 (*.f64 d3 (-.f64 d3 d2))))
(/.f64 (*.f64 d1 (fma.f64 d2 d2 (neg.f64 (*.f64 d3 d3)))) (-.f64 d2 d3))
(/.f64 (*.f64 (+.f64 (pow.f64 d3 3) (pow.f64 d2 3)) d1) (fma.f64 d2 d2 (*.f64 d3 (-.f64 d3 d2))))
(/.f64 (*.f64 (fma.f64 d2 d2 (neg.f64 (*.f64 d3 d3))) d1) (-.f64 d2 d3))
(pow.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) 3)
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 d3))) 2)
(sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 2))
(log.f64 (pow.f64 (exp.f64 (+.f64 d2 d3)) d1))
(cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 3))
(cbrt.f64 (*.f64 (pow.f64 d1 3) (pow.f64 (+.f64 d2 d3) 3)))
(cbrt.f64 (*.f64 (pow.f64 (+.f64 d2 d3) 3) (pow.f64 d1 3)))
(expm1.f64 (log1p.f64 (*.f64 d1 (+.f64 d2 d3))))
(exp.f64 (log.f64 (*.f64 d1 (+.f64 d2 d3))))
(log1p.f64 (expm1.f64 (*.f64 d1 (+.f64 d2 d3))))
(fma.f64 d1 d2 (*.f64 d1 d3))
(fma.f64 d2 d1 (*.f64 d1 d3))

simplify50.0ms (2.7%)

Algorithm
egg-herbie
Rules
1064×associate-/r*
716×fma-def
638×associate-*r/
520×associate-+r+
442×div-sub
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
081738
1239732
2945730
33878720
Stop Event
node limit
Counts
48 → 36
Calls
Call 1
Inputs
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
(+.f64 (*.f64 d1 d3) (*.f64 d1 d2))
(+.f64 (*.f64 (*.f64 d1 d2) 1) (*.f64 (*.f64 d1 d3) 1))
(-.f64 (+.f64 1 (*.f64 d1 (+.f64 d2 d3))) 1)
(/.f64 (+.f64 (pow.f64 (*.f64 d1 d2) 3) (pow.f64 (*.f64 d1 d3) 3)) (+.f64 (*.f64 (*.f64 d1 d2) (*.f64 d1 d2)) (-.f64 (*.f64 (*.f64 d1 d3) (*.f64 d1 d3)) (*.f64 (*.f64 d1 d2) (*.f64 d1 d3)))))
(/.f64 (-.f64 (*.f64 (*.f64 d1 d2) (*.f64 d1 d2)) (*.f64 (*.f64 d1 d3) (*.f64 d1 d3))) (-.f64 (*.f64 d1 d2) (*.f64 d1 d3)))
(/.f64 (*.f64 d1 (+.f64 (pow.f64 d3 3) (pow.f64 d2 3))) (fma.f64 d2 d2 (*.f64 d3 (-.f64 d3 d2))))
(/.f64 (*.f64 d1 (fma.f64 d2 d2 (neg.f64 (*.f64 d3 d3)))) (-.f64 d2 d3))
(/.f64 (*.f64 (+.f64 (pow.f64 d3 3) (pow.f64 d2 3)) d1) (fma.f64 d2 d2 (*.f64 d3 (-.f64 d3 d2))))
(/.f64 (*.f64 (fma.f64 d2 d2 (neg.f64 (*.f64 d3 d3))) d1) (-.f64 d2 d3))
(pow.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) 3)
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 d3))) 2)
(sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 2))
(log.f64 (pow.f64 (exp.f64 (+.f64 d2 d3)) d1))
(cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 3))
(cbrt.f64 (*.f64 (pow.f64 d1 3) (pow.f64 (+.f64 d2 d3) 3)))
(cbrt.f64 (*.f64 (pow.f64 (+.f64 d2 d3) 3) (pow.f64 d1 3)))
(expm1.f64 (log1p.f64 (*.f64 d1 (+.f64 d2 d3))))
(exp.f64 (log.f64 (*.f64 d1 (+.f64 d2 d3))))
(log1p.f64 (expm1.f64 (*.f64 d1 (+.f64 d2 d3))))
(fma.f64 d1 d2 (*.f64 d1 d3))
(fma.f64 d2 d1 (*.f64 d1 d3))
Outputs
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d1 d3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 (*.f64 d1 d2) 1) (*.f64 (*.f64 d1 d3) 1))
(*.f64 d1 (+.f64 d3 d2))
(-.f64 (+.f64 1 (*.f64 d1 (+.f64 d2 d3))) 1)
(*.f64 d1 (+.f64 d3 d2))
(/.f64 (+.f64 (pow.f64 (*.f64 d1 d2) 3) (pow.f64 (*.f64 d1 d3) 3)) (+.f64 (*.f64 (*.f64 d1 d2) (*.f64 d1 d2)) (-.f64 (*.f64 (*.f64 d1 d3) (*.f64 d1 d3)) (*.f64 (*.f64 d1 d2) (*.f64 d1 d3)))))
(/.f64 (+.f64 (pow.f64 (*.f64 d1 d2) 3) (pow.f64 (*.f64 d1 d3) 3)) (fma.f64 (*.f64 d1 d2) (*.f64 d1 d2) (*.f64 (*.f64 d1 d3) (-.f64 (*.f64 d1 d3) (*.f64 d1 d2)))))
(/.f64 (+.f64 (pow.f64 (*.f64 d1 d2) 3) (pow.f64 (*.f64 d1 d3) 3)) (fma.f64 d1 (*.f64 d2 (*.f64 d1 d2)) (*.f64 d1 (*.f64 d3 (*.f64 d1 (-.f64 d3 d2))))))
(/.f64 (*.f64 (+.f64 (pow.f64 d3 3) (pow.f64 d2 3)) (pow.f64 d1 3)) (*.f64 d1 (+.f64 (*.f64 d1 (*.f64 d2 d2)) (*.f64 d3 (*.f64 d1 (-.f64 d3 d2))))))
(/.f64 (*.f64 (+.f64 (pow.f64 d3 3) (pow.f64 d2 3)) (pow.f64 d1 3)) (*.f64 d1 (*.f64 d1 (fma.f64 d3 (-.f64 d3 d2) (*.f64 d2 d2)))))
(/.f64 (-.f64 (*.f64 (*.f64 d1 d2) (*.f64 d1 d2)) (*.f64 (*.f64 d1 d3) (*.f64 d1 d3))) (-.f64 (*.f64 d1 d2) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 d3 d2))
(/.f64 (*.f64 d1 (+.f64 (pow.f64 d3 3) (pow.f64 d2 3))) (fma.f64 d2 d2 (*.f64 d3 (-.f64 d3 d2))))
(/.f64 (+.f64 (pow.f64 d3 3) (pow.f64 d2 3)) (/.f64 (fma.f64 d2 d2 (*.f64 d3 (-.f64 d3 d2))) d1))
(*.f64 (/.f64 d1 (fma.f64 d2 d2 (*.f64 d3 (-.f64 d3 d2)))) (+.f64 (pow.f64 d3 3) (pow.f64 d2 3)))
(*.f64 (+.f64 (pow.f64 d3 3) (pow.f64 d2 3)) (/.f64 d1 (fma.f64 d3 (-.f64 d3 d2) (*.f64 d2 d2))))
(/.f64 (*.f64 d1 (fma.f64 d2 d2 (neg.f64 (*.f64 d3 d3)))) (-.f64 d2 d3))
(*.f64 d1 (+.f64 d3 d2))
(/.f64 (*.f64 (+.f64 (pow.f64 d3 3) (pow.f64 d2 3)) d1) (fma.f64 d2 d2 (*.f64 d3 (-.f64 d3 d2))))
(/.f64 (+.f64 (pow.f64 d3 3) (pow.f64 d2 3)) (/.f64 (fma.f64 d2 d2 (*.f64 d3 (-.f64 d3 d2))) d1))
(*.f64 (/.f64 d1 (fma.f64 d2 d2 (*.f64 d3 (-.f64 d3 d2)))) (+.f64 (pow.f64 d3 3) (pow.f64 d2 3)))
(*.f64 (+.f64 (pow.f64 d3 3) (pow.f64 d2 3)) (/.f64 d1 (fma.f64 d3 (-.f64 d3 d2) (*.f64 d2 d2))))
(/.f64 (*.f64 (fma.f64 d2 d2 (neg.f64 (*.f64 d3 d3))) d1) (-.f64 d2 d3))
(*.f64 d1 (+.f64 d3 d2))
(pow.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(*.f64 d1 (+.f64 d3 d2))
(pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) 3)
(*.f64 d1 (+.f64 d3 d2))
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 3) 1/3)
(*.f64 d1 (+.f64 d3 d2))
(pow.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 d3))) 2)
(*.f64 d1 (+.f64 d3 d2))
(sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 2))
(*.f64 d1 (+.f64 d3 d2))
(log.f64 (pow.f64 (exp.f64 (+.f64 d2 d3)) d1))
(*.f64 d1 (+.f64 d3 d2))
(cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 3))
(*.f64 d1 (+.f64 d3 d2))
(cbrt.f64 (*.f64 (pow.f64 d1 3) (pow.f64 (+.f64 d2 d3) 3)))
(*.f64 d1 (+.f64 d3 d2))
(cbrt.f64 (*.f64 (pow.f64 (+.f64 d2 d3) 3) (pow.f64 d1 3)))
(*.f64 d1 (+.f64 d3 d2))
(expm1.f64 (log1p.f64 (*.f64 d1 (+.f64 d2 d3))))
(*.f64 d1 (+.f64 d3 d2))
(exp.f64 (log.f64 (*.f64 d1 (+.f64 d2 d3))))
(*.f64 d1 (+.f64 d3 d2))
(log1p.f64 (expm1.f64 (*.f64 d1 (+.f64 d2 d3))))
(*.f64 d1 (+.f64 d3 d2))
(fma.f64 d1 d2 (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(fma.f64 d2 d1 (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))

eval6.0ms (0.3%)

Compiler

Compiled 449 to 168 computations (62.6% saved)

prune8.0ms (0.4%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New33336
Fresh000
Picked011
Done000
Total33437
Accurracy
100.0%
Counts
37 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.4%
(fma.f64 d2 d1 (*.f64 d1 d3))
52.6%
(*.f64 d2 d1)
100.0%
(*.f64 d1 (+.f64 d2 d3))
54.8%
(*.f64 d1 d3)
98.4%
(fma.f64 d2 d1 (*.f64 d1 d3))
52.6%
(*.f64 d2 d1)
100.0%
(*.f64 d1 (+.f64 d2 d3))
54.8%
(*.f64 d1 d3)
Compiler

Compiled 58 to 36 computations (37.9% saved)

localize35.0ms (1.9%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
98.4%
(fma.f64 d2 d1 (*.f64 d1 d3))
Compiler

Compiled 26 to 7 computations (73.1% saved)

series4.0ms (0.2%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
1.0ms
d1
@0
(fma.f64 d2 d1 (*.f64 d1 d3))
1.0ms
d1
@inf
(fma.f64 d2 d1 (*.f64 d1 d3))
1.0ms
d1
@-inf
(fma.f64 d2 d1 (*.f64 d1 d3))
0.0ms
d2
@0
(fma.f64 d2 d1 (*.f64 d1 d3))
0.0ms
d2
@-inf
(fma.f64 d2 d1 (*.f64 d1 d3))

rewrite51.0ms (2.7%)

Algorithm
batch-egg-rewrite
Rules
1518×pow1
1380×add-exp-log
1380×log1p-expm1-u
1380×expm1-log1p-u
1348×add-log-exp
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0815
115713
2186913
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(fma.f64 d2 d1 (*.f64 d1 d3))
Outputs
(+.f64 (*.f64 d1 d3) (*.f64 d2 d1))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 (*.f64 d2 d1) 1) (*.f64 d1 d3))
(-.f64 (+.f64 1 (*.f64 d1 (+.f64 d2 d3))) 1)
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(*.f64 1 (*.f64 d1 (+.f64 d2 d3)))
(*.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) 2))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) 2) (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))))
(*.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 d3))) (sqrt.f64 (*.f64 d1 (+.f64 d2 d3))))
(/.f64 (+.f64 (pow.f64 (*.f64 d2 d1) 3) (pow.f64 (*.f64 d1 d3) 3)) (+.f64 (*.f64 (*.f64 d2 d1) (*.f64 d2 d1)) (-.f64 (pow.f64 (*.f64 d1 d3) 2) (*.f64 (*.f64 d2 d1) (*.f64 d1 d3)))))
(/.f64 (-.f64 (*.f64 (*.f64 d2 d1) (*.f64 d2 d1)) (pow.f64 (*.f64 d1 d3) 2)) (-.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(pow.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) 3)
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 d3))) 2)
(sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 2))
(log.f64 (exp.f64 (*.f64 d1 (+.f64 d2 d3))))
(cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 3))
(expm1.f64 (log1p.f64 (*.f64 d1 (+.f64 d2 d3))))
(exp.f64 (log.f64 (*.f64 d1 (+.f64 d2 d3))))
(log1p.f64 (expm1.f64 (*.f64 d1 (+.f64 d2 d3))))

simplify66.0ms (3.5%)

Algorithm
egg-herbie
Rules
1702×fma-neg
896×associate-/l*
670×log-prod
564×fma-def
500×exp-prod
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
062846
1186828
2739820
32757790
46930790
Stop Event
node limit
Counts
58 → 35
Calls
Call 1
Inputs
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d1 d3) (*.f64 d2 d1))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 (*.f64 d2 d1) 1) (*.f64 d1 d3))
(-.f64 (+.f64 1 (*.f64 d1 (+.f64 d2 d3))) 1)
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(*.f64 1 (*.f64 d1 (+.f64 d2 d3)))
(*.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) 2))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) 2) (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))))
(*.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 d3))) (sqrt.f64 (*.f64 d1 (+.f64 d2 d3))))
(/.f64 (+.f64 (pow.f64 (*.f64 d2 d1) 3) (pow.f64 (*.f64 d1 d3) 3)) (+.f64 (*.f64 (*.f64 d2 d1) (*.f64 d2 d1)) (-.f64 (pow.f64 (*.f64 d1 d3) 2) (*.f64 (*.f64 d2 d1) (*.f64 d1 d3)))))
(/.f64 (-.f64 (*.f64 (*.f64 d2 d1) (*.f64 d2 d1)) (pow.f64 (*.f64 d1 d3) 2)) (-.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(pow.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) 3)
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 d3))) 2)
(sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 2))
(log.f64 (exp.f64 (*.f64 d1 (+.f64 d2 d3))))
(cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 3))
(expm1.f64 (log1p.f64 (*.f64 d1 (+.f64 d2 d3))))
(exp.f64 (log.f64 (*.f64 d1 (+.f64 d2 d3))))
(log1p.f64 (expm1.f64 (*.f64 d1 (+.f64 d2 d3))))
Outputs
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d1 d3) (*.f64 d2 d1))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(+.f64 (*.f64 (*.f64 d2 d1) 1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(-.f64 (+.f64 1 (*.f64 d1 (+.f64 d2 d3))) 1)
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(*.f64 d1 (+.f64 d3 d2))
(*.f64 1 (*.f64 d1 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) 2))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) 2) (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 d3))) (sqrt.f64 (*.f64 d1 (+.f64 d2 d3))))
(*.f64 d1 (+.f64 d3 d2))
(/.f64 (+.f64 (pow.f64 (*.f64 d2 d1) 3) (pow.f64 (*.f64 d1 d3) 3)) (+.f64 (*.f64 (*.f64 d2 d1) (*.f64 d2 d1)) (-.f64 (pow.f64 (*.f64 d1 d3) 2) (*.f64 (*.f64 d2 d1) (*.f64 d1 d3)))))
(/.f64 (+.f64 (pow.f64 (*.f64 d1 d2) 3) (pow.f64 (*.f64 d1 d3) 3)) (fma.f64 (*.f64 d1 d2) (*.f64 d1 d2) (-.f64 (pow.f64 (*.f64 d1 d3) 2) (*.f64 (*.f64 d1 d3) (*.f64 d1 d2)))))
(/.f64 (+.f64 (pow.f64 (*.f64 d1 d2) 3) (pow.f64 (*.f64 d1 d3) 3)) (fma.f64 d2 (*.f64 d1 (*.f64 d1 d2)) (*.f64 (*.f64 d1 d3) (-.f64 (*.f64 d1 d3) (*.f64 d1 d2)))))
(/.f64 (+.f64 (pow.f64 (*.f64 d1 d2) 3) (pow.f64 (*.f64 d1 d3) 3)) (+.f64 (pow.f64 (*.f64 d1 d3) 2) (*.f64 (*.f64 d1 d2) (*.f64 d1 (-.f64 d2 d3)))))
(/.f64 (pow.f64 d1 3) (/.f64 (*.f64 d1 (+.f64 (*.f64 d3 (*.f64 d1 (-.f64 d3 d2))) (*.f64 d1 (*.f64 d2 d2)))) (+.f64 (pow.f64 d2 3) (pow.f64 d3 3))))
(/.f64 (-.f64 (*.f64 (*.f64 d2 d1) (*.f64 d2 d1)) (pow.f64 (*.f64 d1 d3) 2)) (-.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(/.f64 (fma.f64 (*.f64 d1 d2) (*.f64 d1 d2) (neg.f64 (pow.f64 (*.f64 d1 d3) 2))) (-.f64 (*.f64 d1 d2) (*.f64 d1 d3)))
(/.f64 (*.f64 (*.f64 d1 (+.f64 d3 d2)) (*.f64 d1 (-.f64 d2 d3))) (*.f64 d1 (-.f64 d2 d3)))
(/.f64 (*.f64 d1 (+.f64 d3 d2)) (/.f64 (*.f64 d1 (-.f64 d2 d3)) (*.f64 d1 (-.f64 d2 d3))))
(*.f64 d1 (/.f64 (+.f64 d3 d2) 1))
(pow.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(*.f64 d1 (+.f64 d3 d2))
(pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 d3))) 3)
(*.f64 d1 (+.f64 d3 d2))
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 3) 1/3)
(*.f64 d1 (+.f64 d3 d2))
(pow.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 d3))) 2)
(*.f64 d1 (+.f64 d3 d2))
(sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 2))
(*.f64 d1 (+.f64 d3 d2))
(log.f64 (exp.f64 (*.f64 d1 (+.f64 d2 d3))))
(*.f64 d1 (+.f64 d3 d2))
(cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 d3)) 3))
(*.f64 d1 (+.f64 d3 d2))
(expm1.f64 (log1p.f64 (*.f64 d1 (+.f64 d2 d3))))
(*.f64 d1 (+.f64 d3 d2))
(exp.f64 (log.f64 (*.f64 d1 (+.f64 d2 d3))))
(*.f64 d1 (+.f64 d3 d2))
(log1p.f64 (expm1.f64 (*.f64 d1 (+.f64 d2 d3))))
(*.f64 d1 (+.f64 d3 d2))

eval5.0ms (0.3%)

Compiler

Compiled 430 to 143 computations (66.7% saved)

prune11.0ms (0.6%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New35035
Fresh000
Picked033
Done011
Total35439
Accurracy
100.0%
Counts
39 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.4%
(fma.f64 d2 d1 (*.f64 d1 d3))
52.6%
(*.f64 d2 d1)
100.0%
(*.f64 d1 (+.f64 d2 d3))
54.8%
(*.f64 d1 d3)
Compiler

Compiled 56 to 28 computations (50% saved)

regimes17.0ms (0.9%)

Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 d1 d3)
(*.f64 d2 d1)
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
(fma.f64 d2 d1 (*.f64 d1 d3))
Outputs
(*.f64 d1 (+.f64 d2 d3))
Calls

4 calls:

5.0ms
d2
4.0ms
d1
4.0ms
d3
3.0ms
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
Results
AccuracySegmentsBranch
100.0%1d1
100.0%1d2
100.0%1d3
100.0%1(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
Compiler

Compiled 49 to 25 computations (49% saved)

regimes38.0ms (2%)

Counts
2 → 2
Calls
Call 1
Inputs
(*.f64 d1 d3)
(*.f64 d2 d1)
Outputs
(*.f64 d2 d1)
(*.f64 d1 d3)
Calls

3 calls:

21.0ms
d1
11.0ms
d2
5.0ms
d3
Results
AccuracySegmentsBranch
69.9%8d1
89.6%4d2
87.8%2d3
Compiler

Compiled 21 to 14 computations (33.3% saved)

regimes8.0ms (0.4%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 d1 d3)
Outputs
(*.f64 d1 d3)
Calls

3 calls:

2.0ms
d3
2.0ms
d1
2.0ms
d2
Results
AccuracySegmentsBranch
54.8%1d1
54.8%1d2
54.8%1d3
Compiler

Compiled 18 to 13 computations (27.8% saved)

bsearch13.0ms (0.7%)

Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
12.0ms
2.8909112813236485e-86
1.5857123705652114e-82
Results
10.0ms114×body256valid
1.0ms14×body256infinite
Compiler

Compiled 128 to 91 computations (28.9% saved)

simplify5.0ms (0.3%)

Algorithm
egg-herbie
Rules
*-commutative
+-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01543
11943
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 d2 d3))
(if (<=.f64 d3 546812681195753/273406340597876490546562778389702670669146178861651554553221325801244124899921990402939147127881728) (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
Outputs
(*.f64 d1 (+.f64 d2 d3))
(if (<=.f64 d3 546812681195753/273406340597876490546562778389702670669146178861651554553221325801244124899921990402939147127881728) (*.f64 d2 d1) (*.f64 d1 d3))
(if (<=.f64 d3 546812681195753/273406340597876490546562778389702670669146178861651554553221325801244124899921990402939147127881728) (*.f64 d1 d2) (*.f64 d1 d3))
(*.f64 d1 d3)
Compiler

Compiled 27 to 17 computations (37% saved)

soundness13.0ms (0.7%)

Rules
fma-def
*-commutative
+-commutative
distribute-lft-out
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0813
11513
22113
Stop Event
saturated
Compiler

Compiled 15 to 8 computations (46.7% saved)

end0.0ms (0%)

preprocess35.0ms (1.9%)

Remove

(sort d2 d3)

Compiler

Compiled 94 to 52 computations (44.7% saved)

Profiling

Loading profile data...