bug323 (missed optimization)

Details

Time bar (total: 7.0s)

analyze1.1s (16.3%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%49.2%50.8%0%0%0%0
0%0%96.9%3.1%0%0%0%1
0%0%191.1%-91.1%0%0%0%2
0%0%376.5%-276.5%0%0%0%3
0%0%741.6%-641.6%0%0%0%4
0%0%1460.6%-1360.6%0%0%0%5
0%0%2875.8%-2775.8%0%0%0%6
0%0%5660.9%-5560.9%0%0%0%7
0%0%11140.6%-11040.6%0%0%0%8
0%0%21918.8%-21818.8%0%0%0%9
0%0%43112.5%-43012.5%0%0%0%10
0%0%84775%-84675%0%0%0%11
0%0%166650%-166550%0%0%0%12
Compiler

Compiled 12 to 9 computations (25% saved)

sample5.6s (79.5%)

Results
2.7s5050×body1024valid
1.7s8263×body256precondition
823.0ms2362×body512valid
359.0ms546×body2048valid
61.0ms298×body256valid
Bogosity

preprocess14.0ms (0.2%)

Algorithm
egg-herbie
Rules
16×sub-neg
12×fma-def
+-commutative
associate--r+
associate-+l-
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
11111
21511
32211
43011
54011
65111
76311
86611
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(acos.f64 (-.f64 1 x))
Outputs
(acos.f64 (-.f64 1 x))
Compiler

Compiled 6 to 5 computations (16.7% saved)

simplify15.0ms (0.2%)

Algorithm
egg-herbie
Rules
16×sub-neg
12×fma-def
+-commutative
associate--r+
associate-+l-
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
11111
21511
32211
43011
54011
65111
76311
86611
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(acos.f64 (-.f64 1 x))
Outputs
(acos.f64 (-.f64 1 x))

eval0.0ms (0%)

Compiler

Compiled 5 to 4 computations (20% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Accurracy
4.0%
Counts
2 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
4.0%
(acos.f64 (-.f64 1 x))
4.0%
(acos.f64 (-.f64 1 x))
Compiler

Compiled 10 to 8 computations (20% saved)

localize113.0ms (1.6%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
4.0%
(acos.f64 (-.f64 1 x))
Compiler

Compiled 11 to 8 computations (27.3% saved)

series0.0ms (0%)

Counts
1 → 4
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(acos.f64 (-.f64 1 x))
0.0ms
x
@-inf
(acos.f64 (-.f64 1 x))
0.0ms
x
@inf
(acos.f64 (-.f64 1 x))

rewrite51.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
1478×pow1
1368×add-exp-log
1366×log1p-expm1-u
1366×expm1-log1p-u
1344×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
114611
2179511
Stop Event
node limit
Counts
1 → 20
Calls
Call 1
Inputs
(acos.f64 (-.f64 1 x))
Outputs
(+.f64 (*.f64 (PI.f64) 1/2) (neg.f64 (asin.f64 (-.f64 1 x))))
(-.f64 (*.f64 (PI.f64) 1/2) (asin.f64 (-.f64 1 x)))
(-.f64 (+.f64 1 (acos.f64 (-.f64 1 x))) 1)
(*.f64 1 (acos.f64 (-.f64 1 x)))
(*.f64 (acos.f64 (-.f64 1 x)) 1)
(*.f64 (cbrt.f64 (acos.f64 (-.f64 1 x))) (pow.f64 (cbrt.f64 (acos.f64 (-.f64 1 x))) 2))
(*.f64 (pow.f64 (cbrt.f64 (acos.f64 (-.f64 1 x))) 2) (cbrt.f64 (acos.f64 (-.f64 1 x))))
(*.f64 (sqrt.f64 (acos.f64 (-.f64 1 x))) (sqrt.f64 (acos.f64 (-.f64 1 x))))
(/.f64 (-.f64 (pow.f64 (*.f64 (PI.f64) 1/2) 3) (pow.f64 (asin.f64 (-.f64 1 x)) 3)) (+.f64 (*.f64 (*.f64 (PI.f64) 1/2) (*.f64 (PI.f64) 1/2)) (+.f64 (*.f64 (asin.f64 (-.f64 1 x)) (asin.f64 (-.f64 1 x))) (*.f64 (*.f64 (PI.f64) 1/2) (asin.f64 (-.f64 1 x))))))
(/.f64 (-.f64 (*.f64 (*.f64 (PI.f64) 1/2) (*.f64 (PI.f64) 1/2)) (*.f64 (asin.f64 (-.f64 1 x)) (asin.f64 (-.f64 1 x)))) (+.f64 (*.f64 (PI.f64) 1/2) (asin.f64 (-.f64 1 x))))
(pow.f64 (acos.f64 (-.f64 1 x)) 1)
(pow.f64 (cbrt.f64 (acos.f64 (-.f64 1 x))) 3)
(pow.f64 (pow.f64 (acos.f64 (-.f64 1 x)) 3) 1/3)
(pow.f64 (sqrt.f64 (acos.f64 (-.f64 1 x))) 2)
(sqrt.f64 (pow.f64 (acos.f64 (-.f64 1 x)) 2))
(log.f64 (exp.f64 (acos.f64 (-.f64 1 x))))
(cbrt.f64 (pow.f64 (acos.f64 (-.f64 1 x)) 3))
(expm1.f64 (log1p.f64 (acos.f64 (-.f64 1 x))))
(exp.f64 (log.f64 (acos.f64 (-.f64 1 x))))
(log1p.f64 (expm1.f64 (acos.f64 (-.f64 1 x))))

simplify54.0ms (0.8%)

Algorithm
egg-herbie
Rules
1020×fma-def
712×log-prod
616×associate-/l*
494×associate-*r*
412×associate-*l*
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
060396
1147392
2495392
32261392
45297392
Stop Event
node limit
Counts
24 → 26
Calls
Call 1
Inputs
(acos.f64 (+.f64 1 (*.f64 -1 x)))
(acos.f64 (+.f64 1 (*.f64 -1 x)))
(acos.f64 (+.f64 1 (*.f64 -1 x)))
(acos.f64 (+.f64 1 (*.f64 -1 x)))
(+.f64 (*.f64 (PI.f64) 1/2) (neg.f64 (asin.f64 (-.f64 1 x))))
(-.f64 (*.f64 (PI.f64) 1/2) (asin.f64 (-.f64 1 x)))
(-.f64 (+.f64 1 (acos.f64 (-.f64 1 x))) 1)
(*.f64 1 (acos.f64 (-.f64 1 x)))
(*.f64 (acos.f64 (-.f64 1 x)) 1)
(*.f64 (cbrt.f64 (acos.f64 (-.f64 1 x))) (pow.f64 (cbrt.f64 (acos.f64 (-.f64 1 x))) 2))
(*.f64 (pow.f64 (cbrt.f64 (acos.f64 (-.f64 1 x))) 2) (cbrt.f64 (acos.f64 (-.f64 1 x))))
(*.f64 (sqrt.f64 (acos.f64 (-.f64 1 x))) (sqrt.f64 (acos.f64 (-.f64 1 x))))
(/.f64 (-.f64 (pow.f64 (*.f64 (PI.f64) 1/2) 3) (pow.f64 (asin.f64 (-.f64 1 x)) 3)) (+.f64 (*.f64 (*.f64 (PI.f64) 1/2) (*.f64 (PI.f64) 1/2)) (+.f64 (*.f64 (asin.f64 (-.f64 1 x)) (asin.f64 (-.f64 1 x))) (*.f64 (*.f64 (PI.f64) 1/2) (asin.f64 (-.f64 1 x))))))
(/.f64 (-.f64 (*.f64 (*.f64 (PI.f64) 1/2) (*.f64 (PI.f64) 1/2)) (*.f64 (asin.f64 (-.f64 1 x)) (asin.f64 (-.f64 1 x)))) (+.f64 (*.f64 (PI.f64) 1/2) (asin.f64 (-.f64 1 x))))
(pow.f64 (acos.f64 (-.f64 1 x)) 1)
(pow.f64 (cbrt.f64 (acos.f64 (-.f64 1 x))) 3)
(pow.f64 (pow.f64 (acos.f64 (-.f64 1 x)) 3) 1/3)
(pow.f64 (sqrt.f64 (acos.f64 (-.f64 1 x))) 2)
(sqrt.f64 (pow.f64 (acos.f64 (-.f64 1 x)) 2))
(log.f64 (exp.f64 (acos.f64 (-.f64 1 x))))
(cbrt.f64 (pow.f64 (acos.f64 (-.f64 1 x)) 3))
(expm1.f64 (log1p.f64 (acos.f64 (-.f64 1 x))))
(exp.f64 (log.f64 (acos.f64 (-.f64 1 x))))
(log1p.f64 (expm1.f64 (acos.f64 (-.f64 1 x))))
Outputs
(acos.f64 (+.f64 1 (*.f64 -1 x)))
(acos.f64 (-.f64 1 x))
(acos.f64 (+.f64 1 (*.f64 -1 x)))
(acos.f64 (-.f64 1 x))
(acos.f64 (+.f64 1 (*.f64 -1 x)))
(acos.f64 (-.f64 1 x))
(acos.f64 (+.f64 1 (*.f64 -1 x)))
(acos.f64 (-.f64 1 x))
(+.f64 (*.f64 (PI.f64) 1/2) (neg.f64 (asin.f64 (-.f64 1 x))))
(-.f64 (*.f64 (PI.f64) 1/2) (asin.f64 (-.f64 1 x)))
(-.f64 (*.f64 (PI.f64) 1/2) (asin.f64 (-.f64 1 x)))
(-.f64 (+.f64 1 (acos.f64 (-.f64 1 x))) 1)
(acos.f64 (-.f64 1 x))
(*.f64 1 (acos.f64 (-.f64 1 x)))
(acos.f64 (-.f64 1 x))
(*.f64 (acos.f64 (-.f64 1 x)) 1)
(acos.f64 (-.f64 1 x))
(*.f64 (cbrt.f64 (acos.f64 (-.f64 1 x))) (pow.f64 (cbrt.f64 (acos.f64 (-.f64 1 x))) 2))
(acos.f64 (-.f64 1 x))
(*.f64 (pow.f64 (cbrt.f64 (acos.f64 (-.f64 1 x))) 2) (cbrt.f64 (acos.f64 (-.f64 1 x))))
(acos.f64 (-.f64 1 x))
(*.f64 (sqrt.f64 (acos.f64 (-.f64 1 x))) (sqrt.f64 (acos.f64 (-.f64 1 x))))
(acos.f64 (-.f64 1 x))
(/.f64 (-.f64 (pow.f64 (*.f64 (PI.f64) 1/2) 3) (pow.f64 (asin.f64 (-.f64 1 x)) 3)) (+.f64 (*.f64 (*.f64 (PI.f64) 1/2) (*.f64 (PI.f64) 1/2)) (+.f64 (*.f64 (asin.f64 (-.f64 1 x)) (asin.f64 (-.f64 1 x))) (*.f64 (*.f64 (PI.f64) 1/2) (asin.f64 (-.f64 1 x))))))
(/.f64 (-.f64 (pow.f64 (*.f64 (PI.f64) 1/2) 3) (pow.f64 (asin.f64 (-.f64 1 x)) 3)) (+.f64 (*.f64 (*.f64 (PI.f64) (PI.f64)) 1/4) (*.f64 (asin.f64 (-.f64 1 x)) (fma.f64 (PI.f64) 1/2 (asin.f64 (-.f64 1 x))))))
(/.f64 (-.f64 (pow.f64 (*.f64 (PI.f64) 1/2) 3) (pow.f64 (asin.f64 (-.f64 1 x)) 3)) (fma.f64 (asin.f64 (-.f64 1 x)) (fma.f64 (PI.f64) 1/2 (asin.f64 (-.f64 1 x))) (*.f64 (PI.f64) (*.f64 1/4 (PI.f64)))))
(/.f64 (-.f64 (*.f64 (pow.f64 (PI.f64) 3) 1/8) (pow.f64 (asin.f64 (-.f64 1 x)) 3)) (fma.f64 (asin.f64 (-.f64 1 x)) (fma.f64 (PI.f64) 1/2 (asin.f64 (-.f64 1 x))) (*.f64 (*.f64 (PI.f64) (PI.f64)) 1/4)))
(/.f64 (-.f64 (*.f64 (pow.f64 (PI.f64) 3) 1/8) (pow.f64 (asin.f64 (-.f64 1 x)) 3)) (fma.f64 (asin.f64 (-.f64 1 x)) (fma.f64 (PI.f64) 1/2 (asin.f64 (-.f64 1 x))) (*.f64 (PI.f64) (*.f64 (PI.f64) 1/4))))
(/.f64 (-.f64 (*.f64 (*.f64 (PI.f64) 1/2) (*.f64 (PI.f64) 1/2)) (*.f64 (asin.f64 (-.f64 1 x)) (asin.f64 (-.f64 1 x)))) (+.f64 (*.f64 (PI.f64) 1/2) (asin.f64 (-.f64 1 x))))
(-.f64 (*.f64 (PI.f64) 1/2) (asin.f64 (-.f64 1 x)))
(pow.f64 (acos.f64 (-.f64 1 x)) 1)
(acos.f64 (-.f64 1 x))
(pow.f64 (cbrt.f64 (acos.f64 (-.f64 1 x))) 3)
(acos.f64 (-.f64 1 x))
(pow.f64 (pow.f64 (acos.f64 (-.f64 1 x)) 3) 1/3)
(acos.f64 (-.f64 1 x))
(pow.f64 (sqrt.f64 (acos.f64 (-.f64 1 x))) 2)
(acos.f64 (-.f64 1 x))
(sqrt.f64 (pow.f64 (acos.f64 (-.f64 1 x)) 2))
(acos.f64 (-.f64 1 x))
(log.f64 (exp.f64 (acos.f64 (-.f64 1 x))))
(acos.f64 (-.f64 1 x))
(cbrt.f64 (pow.f64 (acos.f64 (-.f64 1 x)) 3))
(acos.f64 (-.f64 1 x))
(expm1.f64 (log1p.f64 (acos.f64 (-.f64 1 x))))
(acos.f64 (-.f64 1 x))
(exp.f64 (log.f64 (acos.f64 (-.f64 1 x))))
(acos.f64 (-.f64 1 x))
(log1p.f64 (expm1.f64 (acos.f64 (-.f64 1 x))))
(acos.f64 (-.f64 1 x))

eval8.0ms (0.1%)

Compiler

Compiled 337 to 270 computations (19.9% saved)

prune3.0ms (0%)

Pruning

1 alts after pruning (0 fresh and 1 done)

PrunedKeptTotal
New26026
Fresh000
Picked011
Done000
Total26127
Accurracy
4.0%
Counts
27 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
4.0%
(acos.f64 (-.f64 1 x))
Compiler

Compiled 10 to 8 computations (20% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Rules
sub-neg
+-commutative
1-exp
neg-mul-1
*-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
11111
21511
31711
41811
Stop Event
done
saturated
Calls
Call 1
Inputs
(acos.f64 (-.f64 1 x))
Outputs
(acos.f64 (-.f64 1 x))
Compiler

Compiled 5 to 4 computations (20% saved)

soundness0.0ms (0%)

end32.0ms (0.5%)

Compiler

Compiled 36 to 30 computations (16.7% saved)

Profiling

Loading profile data...