Disney BSSRDF, sample scattering profile, upper

Time bar (total: 2.3s)

analyze26.0ms (1.1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%0.1%99.9%0%0%0%0
0%0%0.1%99.9%0%0%0%1
0%0%0.1%99.9%0%0%0%2
50%0.1%0.1%99.9%0%0%0%3
50%0.1%0.1%99.9%0%0%0%4
75%0.1%0%99.9%0%0%0%5
75%0.1%0%99.9%0%0%0%6
87.5%0.1%0%99.9%0%0%0%7
87.5%0.1%0%99.9%0%0%0%8
93.8%0.1%0%99.9%0%0%0%9
93.8%0.1%0%99.9%0%0%0%10
96.9%0.1%0%99.9%0%0%0%11
96.9%0.1%0%99.9%0%0%0%12
Compiler

Compiled 62 to 44 computations (29% saved)

sample2.0s (89%)

Results
970.0ms8256×0valid-tuning
932.0ms8256×0valid-baseline
Bogosity

preprocess198.0ms (8.6%)

Algorithm
egg-herbie
Rules
1598×fma-define
1028×fma-neg
342×distribute-lft-neg-in
234×distribute-lft-in
230×unsub-neg
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
038331
1101261
2254245
3586229
41104217
51930217
62676217
73249217
83570217
93682217
103732217
113775217
123795217
Stop Event
saturated
Calls
Call 1
Inputs
(*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 u #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
(*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 u #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
(*.f32 (*.f32 #s(literal 3 binary32) (neg.f32 s)) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 u #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
(*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 (neg.f32 u) #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
(neg.f32 (*.f32 (*.f32 #s(literal 3 binary32) (neg.f32 s)) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 u #s(literal 1/4 binary32)) #s(literal 3/4 binary32)))))))
(neg.f32 (*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 (neg.f32 u) #s(literal 1/4 binary32)) #s(literal 3/4 binary32)))))))
(*.f32 (*.f32 #s(literal 3 binary32) u) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 s #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
Outputs
(*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 u #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
(*.f32 #s(literal 3 binary32) (*.f32 s (neg.f32 (log.f32 (-.f32 #s(literal 1 binary32) (-.f32 (/.f32 u #s(literal 3/4 binary32)) #s(literal 1/3 binary32)))))))
(*.f32 (*.f32 s #s(literal -3 binary32)) (log1p.f32 (/.f32 (+.f32 u #s(literal -1/4 binary32)) #s(literal -3/4 binary32))))
(*.f32 (*.f32 s #s(literal -3 binary32)) (log1p.f32 (+.f32 (*.f32 u #s(literal -4/3 binary32)) #s(literal 1/3 binary32))))
(*.f32 (*.f32 s #s(literal -3 binary32)) (log1p.f32 (fma.f32 u #s(literal -4/3 binary32) #s(literal 1/3 binary32))))
(*.f32 (*.f32 s #s(literal -3 binary32)) (log.f32 (fma.f32 u #s(literal -4/3 binary32) #s(literal 4/3 binary32))))
(*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 u #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
(*.f32 #s(literal 3 binary32) (*.f32 s (neg.f32 (log.f32 (-.f32 #s(literal 1 binary32) (-.f32 (/.f32 u #s(literal 3/4 binary32)) #s(literal 1/3 binary32)))))))
(*.f32 (*.f32 s #s(literal -3 binary32)) (log1p.f32 (/.f32 (+.f32 u #s(literal -1/4 binary32)) #s(literal -3/4 binary32))))
(*.f32 (*.f32 s #s(literal -3 binary32)) (log1p.f32 (+.f32 (*.f32 u #s(literal -4/3 binary32)) #s(literal 1/3 binary32))))
(*.f32 (*.f32 s #s(literal -3 binary32)) (log1p.f32 (fma.f32 u #s(literal -4/3 binary32) #s(literal 1/3 binary32))))
(*.f32 (*.f32 s #s(literal -3 binary32)) (log.f32 (fma.f32 u #s(literal -4/3 binary32) #s(literal 4/3 binary32))))
(*.f32 (*.f32 #s(literal 3 binary32) (neg.f32 s)) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 u #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
(*.f32 #s(literal 3 binary32) (*.f32 (neg.f32 s) (neg.f32 (log.f32 (-.f32 #s(literal 1 binary32) (-.f32 (/.f32 u #s(literal 3/4 binary32)) #s(literal 1/3 binary32)))))))
(*.f32 (neg.f32 (log1p.f32 (/.f32 (+.f32 u #s(literal -1/4 binary32)) #s(literal -3/4 binary32)))) (*.f32 s #s(literal -3 binary32)))
(*.f32 #s(literal 3 binary32) (*.f32 s (log1p.f32 (+.f32 (*.f32 u #s(literal -4/3 binary32)) #s(literal 1/3 binary32)))))
(*.f32 #s(literal 3 binary32) (*.f32 s (log1p.f32 (fma.f32 u #s(literal -4/3 binary32) #s(literal 1/3 binary32)))))
(*.f32 #s(literal 3 binary32) (*.f32 s (log.f32 (fma.f32 u #s(literal -4/3 binary32) #s(literal 4/3 binary32)))))
(*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 (neg.f32 u) #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
(*.f32 (*.f32 #s(literal 3 binary32) s) (neg.f32 (log.f32 (-.f32 #s(literal 1 binary32) (/.f32 (+.f32 (neg.f32 u) #s(literal -1/4 binary32)) #s(literal 3/4 binary32))))))
(*.f32 (*.f32 #s(literal 3 binary32) s) (neg.f32 (log1p.f32 (/.f32 (fma.f32 #s(literal -1 binary32) u #s(literal -1/4 binary32)) #s(literal -3/4 binary32)))))
(*.f32 s (*.f32 #s(literal -3 binary32) (log1p.f32 (/.f32 (-.f32 #s(literal -1/4 binary32) u) #s(literal -3/4 binary32)))))
(*.f32 s (*.f32 (log.f32 (+.f32 (*.f32 u #s(literal 4/3 binary32)) #s(literal 4/3 binary32))) #s(literal -3 binary32)))
(*.f32 s (*.f32 (log1p.f32 (fma.f32 u #s(literal 4/3 binary32) #s(literal 1/3 binary32))) #s(literal -3 binary32)))
(neg.f32 (*.f32 (*.f32 #s(literal 3 binary32) (neg.f32 s)) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 u #s(literal 1/4 binary32)) #s(literal 3/4 binary32)))))))
(*.f32 #s(literal 3 binary32) (*.f32 s (neg.f32 (log.f32 (-.f32 #s(literal 1 binary32) (-.f32 (/.f32 u #s(literal 3/4 binary32)) #s(literal 1/3 binary32)))))))
(*.f32 (*.f32 s #s(literal -3 binary32)) (log1p.f32 (/.f32 (+.f32 u #s(literal -1/4 binary32)) #s(literal -3/4 binary32))))
(*.f32 (*.f32 s #s(literal -3 binary32)) (log1p.f32 (+.f32 (*.f32 u #s(literal -4/3 binary32)) #s(literal 1/3 binary32))))
(*.f32 (*.f32 s #s(literal -3 binary32)) (log1p.f32 (fma.f32 u #s(literal -4/3 binary32) #s(literal 1/3 binary32))))
(*.f32 (*.f32 s #s(literal -3 binary32)) (log.f32 (fma.f32 u #s(literal -4/3 binary32) #s(literal 4/3 binary32))))
(neg.f32 (*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 (neg.f32 u) #s(literal 1/4 binary32)) #s(literal 3/4 binary32)))))))
(*.f32 (*.f32 #s(literal 3 binary32) (neg.f32 s)) (neg.f32 (log.f32 (-.f32 #s(literal 1 binary32) (/.f32 (+.f32 (neg.f32 u) #s(literal -1/4 binary32)) #s(literal 3/4 binary32))))))
(*.f32 (*.f32 #s(literal 3 binary32) s) (log1p.f32 (/.f32 (fma.f32 #s(literal -1 binary32) u #s(literal -1/4 binary32)) #s(literal -3/4 binary32))))
(*.f32 (*.f32 #s(literal 3 binary32) s) (log1p.f32 (/.f32 (-.f32 #s(literal -1/4 binary32) u) #s(literal -3/4 binary32))))
(*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (+.f32 (*.f32 u #s(literal 4/3 binary32)) #s(literal 4/3 binary32))))
(*.f32 #s(literal 3 binary32) (*.f32 s (log1p.f32 (fma.f32 u #s(literal 4/3 binary32) #s(literal 1/3 binary32)))))
(*.f32 (*.f32 #s(literal 3 binary32) u) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 s #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
(*.f32 #s(literal 3 binary32) (*.f32 u (neg.f32 (log.f32 (-.f32 #s(literal 1 binary32) (/.f32 (+.f32 s #s(literal -1/4 binary32)) #s(literal 3/4 binary32)))))))
(*.f32 #s(literal 3 binary32) (*.f32 u (neg.f32 (log1p.f32 (/.f32 (+.f32 s #s(literal -1/4 binary32)) #s(literal -3/4 binary32))))))
(*.f32 u (*.f32 #s(literal -3 binary32) (log1p.f32 (-.f32 (/.f32 s #s(literal -3/4 binary32)) #s(literal -1/3 binary32)))))
(*.f32 u (*.f32 (log.f32 (+.f32 (*.f32 s #s(literal -4/3 binary32)) #s(literal 4/3 binary32))) #s(literal -3 binary32)))
(*.f32 u (*.f32 (log.f32 (fma.f32 s #s(literal -4/3 binary32) #s(literal 4/3 binary32))) #s(literal -3 binary32)))
Symmetry

(negabs s)

Compiler

Compiled 16 to 13 computations (18.8% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
95.9%
(*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 u #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
Compiler

Compiled 32 to 26 computations (18.8% saved)

simplify8.0ms (0.3%)

Algorithm
egg-herbie
Rules
132×unsub-neg
74×neg-mul-1
38×distribute-neg-out
34×distribute-lft-neg-in
26×neg-sub0
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01947
13047
24147
35347
47447
58247
68847
711747
815947
916347
1018047
1123247
1228147
1328247
Stop Event
saturated
Calls
Call 1
Inputs
(*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 u #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
Outputs
(*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (/.f32 #s(literal 1 binary32) (-.f32 #s(literal 1 binary32) (/.f32 (-.f32 u #s(literal 1/4 binary32)) #s(literal 3/4 binary32))))))
(*.f32 (*.f32 #s(literal 3 binary32) s) (log.f32 (/.f32 #s(literal 1 binary32) (+.f32 #s(literal 1 binary32) (/.f32 (-.f32 #s(literal 1/4 binary32) u) #s(literal 3/4 binary32))))))

soundness0.0ms (0%)

Stop Event
fuel
Compiler

Compiled 16 to 13 computations (18.8% saved)

preprocess19.0ms (0.8%)

Remove

(negabs s)

Compiler

Compiled 128 to 104 computations (18.8% saved)

end0.0ms (0%)

Profiling

Loading profile data...