Disney BSSRDF, PDF of scattering profile

Time bar (total: 3.3s)

analyze64.0ms (1.9%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%2.1%97.9%0%0%0%0
0%0%2.1%97.9%0%0%0%1
50%1%1%97.9%0%0%0%2
50%1%1%97.9%0%0%0%3
75%1.5%0.5%97.9%0%0%0%4
75%1.5%0.5%97.9%0%0%0%5
87.5%1.8%0.3%97.9%0%0%0%6
87.5%1.8%0.3%97.9%0%0%0%7
93.7%1.9%0.1%97.9%0%0%0%8
93.7%1.9%0.1%97.9%0%0%0%9
96.9%2%0.1%97.9%0%0%0%10
96.9%2%0.1%97.9%0%0%0%11
98.4%2%0%97.9%0%0%0%12
Compiler

Compiled 50 to 36 computations (28% saved)

Precisions
Click to see histograms. Total time spent on operations: 28.0ms
Operation ival-mult, time spent: 11.0ms, 39.0% of total-time
Operation ival-exp, time spent: 7.0ms, 25.0% of total-time
Operation ival-div, time spent: 3.0ms, 11.0% of total-time
Operation ival-<=, time spent: 2.0ms, 7.0% of total-time
Operation ival-pi, time spent: 1.0ms, 4.0% of total-time
Operation ival-add, time spent: 1.0ms, 4.0% of total-time
Operation ival-and, time spent: 1.0ms, 4.0% of total-time
Operation const, time spent: 1.0ms, 4.0% of total-time
Operation ival-neg, time spent: 1.0ms, 4.0% of total-time
Operation ival-<, time spent: 1.0ms, 4.0% of total-time

sample2.9s (85.9%)

Results
2.5s8255×256valid
0.0ms256valid
Precisions
Click to see histograms. Total time spent on operations: 1.4s
Operation ival-mult, time spent: 586.0ms, 41.0% of total-time
Operation ival-div, time spent: 278.0ms, 20.0% of total-time
Operation ival-exp, time spent: 174.0ms, 12.0% of total-time
Operation ival-<=, time spent: 81.0ms, 6.0% of total-time
Operation ival-<, time spent: 66.0ms, 5.0% of total-time
Operation ival-neg, time spent: 59.0ms, 4.0% of total-time
Operation ival-add, time spent: 58.0ms, 4.0% of total-time
Operation const, time spent: 44.0ms, 3.0% of total-time
Operation ival-pi, time spent: 38.0ms, 3.0% of total-time
Operation ival-and, time spent: 30.0ms, 2.0% of total-time
Bogosity

preprocess405.0ms (12.1%)

Algorithm
egg-herbie
Rules
882×times-frac
544×fma-neg
488×distribute-frac-neg2
410×distribute-lft-neg-out
325×distribute-rgt-neg-out
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
074943
1230771
21095606
35165606
Stop Event
node limit
Calls
Call 1
Inputs
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (neg.f32 s)))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) (neg.f32 s)) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) (neg.f32 s))))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) (neg.f32 s)) r)))
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) (neg.f32 r))) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) (neg.f32 r))))
(neg.f32 (+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (neg.f32 s)))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) (neg.f32 s)) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) (neg.f32 s))))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) (neg.f32 s)) r))))
(neg.f32 (+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) (neg.f32 r))) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) (neg.f32 r)))))
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 s) r))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) r) s)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 s) (*.f32 #s(literal 3 binary32) r)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) r) s)))
Outputs
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
(+.f32 (*.f32 (/.f32 #s(literal 1/4 binary32) (*.f32 s (*.f32 #s(literal 2 binary32) (PI.f32)))) (/.f32 (exp.f32 (neg.f32 (/.f32 r s))) r)) (*.f32 #s(literal 3/4 binary32) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (*.f32 s #s(literal 3 binary32)))) (*.f32 r (*.f32 #s(literal 6 binary32) (*.f32 (PI.f32) s))))))
(fma.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (/.f32 (exp.f32 (*.f32 #s(literal -1/3 binary32) (/.f32 r s))) r) (*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (/.f32 (exp.f32 (/.f32 r (neg.f32 s))) r)))
(*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (+.f32 (/.f32 (exp.f32 (/.f32 r (neg.f32 s))) r) (/.f32 (pow.f32 (exp.f32 #s(literal -1/3 binary32)) (/.f32 r s)) r)))
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) r)))
(+.f32 (*.f32 (/.f32 #s(literal 1/4 binary32) (*.f32 s (*.f32 #s(literal 2 binary32) (PI.f32)))) (/.f32 (exp.f32 (neg.f32 (/.f32 r s))) r)) (*.f32 #s(literal 3/4 binary32) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (*.f32 s #s(literal 3 binary32)))) (*.f32 r (*.f32 #s(literal 6 binary32) (*.f32 (PI.f32) s))))))
(fma.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (/.f32 (exp.f32 (*.f32 #s(literal -1/3 binary32) (/.f32 r s))) r) (*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (/.f32 (exp.f32 (/.f32 r (neg.f32 s))) r)))
(*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (+.f32 (/.f32 (exp.f32 (/.f32 r (neg.f32 s))) r) (/.f32 (pow.f32 (exp.f32 #s(literal -1/3 binary32)) (/.f32 r s)) r)))
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (neg.f32 s)))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) (neg.f32 s)) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) (neg.f32 s))))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) (neg.f32 s)) r)))
(+.f32 (*.f32 (/.f32 #s(literal 1/4 binary32) (*.f32 #s(literal 2 binary32) (*.f32 (PI.f32) (neg.f32 s)))) (/.f32 (exp.f32 (/.f32 r s)) r)) (*.f32 #s(literal 3/4 binary32) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) (neg.f32 s)))) (*.f32 r (*.f32 #s(literal 6 binary32) (*.f32 (PI.f32) (neg.f32 s)))))))
(fma.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (/.f32 (exp.f32 (/.f32 r s)) (neg.f32 r)) (*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (/.f32 (exp.f32 (/.f32 r (*.f32 s #s(literal 3 binary32)))) (neg.f32 r))))
(*.f32 (/.f32 #s(literal -1/8 binary32) (*.f32 s (PI.f32))) (+.f32 (/.f32 (cbrt.f32 (exp.f32 (/.f32 r s))) r) (/.f32 (exp.f32 (/.f32 r s)) r)))
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) (neg.f32 r))) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) (neg.f32 r))))
(+.f32 (*.f32 (/.f32 #s(literal 1/4 binary32) (*.f32 #s(literal 2 binary32) (*.f32 (PI.f32) (neg.f32 s)))) (/.f32 (exp.f32 (/.f32 r s)) r)) (*.f32 #s(literal 3/4 binary32) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) (neg.f32 s)))) (*.f32 r (*.f32 #s(literal 6 binary32) (*.f32 (PI.f32) (neg.f32 s)))))))
(fma.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (/.f32 (exp.f32 (/.f32 r s)) (neg.f32 r)) (*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (/.f32 (exp.f32 (/.f32 r (*.f32 s #s(literal 3 binary32)))) (neg.f32 r))))
(*.f32 (/.f32 #s(literal -1/8 binary32) (*.f32 s (PI.f32))) (+.f32 (/.f32 (cbrt.f32 (exp.f32 (/.f32 r s))) r) (/.f32 (exp.f32 (/.f32 r s)) r)))
(neg.f32 (+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (neg.f32 s)))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) (neg.f32 s)) r)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) (neg.f32 s))))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) (neg.f32 s)) r))))
(neg.f32 (+.f32 (*.f32 (/.f32 #s(literal 1/4 binary32) (*.f32 #s(literal 2 binary32) (*.f32 (PI.f32) (neg.f32 s)))) (/.f32 (exp.f32 (/.f32 r s)) r)) (*.f32 #s(literal 3/4 binary32) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) (neg.f32 s)))) (*.f32 r (*.f32 #s(literal 6 binary32) (*.f32 (PI.f32) (neg.f32 s))))))))
(+.f32 (*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (/.f32 (exp.f32 (/.f32 r (*.f32 s #s(literal 3 binary32)))) r)) (*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (/.f32 (exp.f32 (/.f32 r s)) r)))
(*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (+.f32 (/.f32 (cbrt.f32 (exp.f32 (/.f32 r s))) r) (/.f32 (exp.f32 (/.f32 r s)) r)))
(neg.f32 (+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) s))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) s) (neg.f32 r))) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) (*.f32 #s(literal 3 binary32) s)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) s) (neg.f32 r)))))
(neg.f32 (+.f32 (*.f32 (/.f32 #s(literal 1/4 binary32) (*.f32 #s(literal 2 binary32) (*.f32 (PI.f32) (neg.f32 s)))) (/.f32 (exp.f32 (/.f32 r s)) r)) (*.f32 #s(literal 3/4 binary32) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (*.f32 #s(literal 3 binary32) (neg.f32 s)))) (*.f32 r (*.f32 #s(literal 6 binary32) (*.f32 (PI.f32) (neg.f32 s))))))))
(+.f32 (*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (/.f32 (exp.f32 (/.f32 r (*.f32 s #s(literal 3 binary32)))) r)) (*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (/.f32 (exp.f32 (/.f32 r s)) r)))
(*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 s (PI.f32))) (+.f32 (/.f32 (cbrt.f32 (exp.f32 (/.f32 r s))) r) (/.f32 (exp.f32 (/.f32 r s)) r)))
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 (neg.f32 s) r))) (*.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) r) s)) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 s) (*.f32 #s(literal 3 binary32) r)))) (*.f32 (*.f32 (*.f32 #s(literal 6 binary32) (PI.f32)) r) s)))
(+.f32 (*.f32 #s(literal 1/4 binary32) (/.f32 (exp.f32 (neg.f32 (/.f32 s r))) (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) (*.f32 r s)))) (*.f32 #s(literal 3/4 binary32) (/.f32 (exp.f32 (/.f32 (neg.f32 s) (*.f32 r #s(literal 3 binary32)))) (*.f32 (*.f32 (PI.f32) #s(literal 6 binary32)) (*.f32 r s)))))
(fma.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 r (PI.f32))) (/.f32 (exp.f32 (*.f32 #s(literal -1/3 binary32) (/.f32 s r))) s) (*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 r (PI.f32))) (/.f32 (exp.f32 (/.f32 s (neg.f32 r))) s)))
(*.f32 (/.f32 #s(literal 1/8 binary32) (*.f32 r (PI.f32))) (+.f32 (/.f32 (exp.f32 (/.f32 s (neg.f32 r))) s) (/.f32 (pow.f32 (exp.f32 #s(literal -1/3 binary32)) (/.f32 s r)) s)))
Compiler

Compiled 158 to 84 computations (46.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 102.0ms
Operation ival-mult, time spent: 63.0ms, 62.0% of total-time
Operation ival-div, time spent: 19.0ms, 19.0% of total-time
Operation ival-exp, time spent: 12.0ms, 12.0% of total-time
Operation const, time spent: 4.0ms, 4.0% of total-time
Operation ival-add, time spent: 1.0ms, 1.0% of total-time
Operation ival-pi, time spent: 1.0ms, 1.0% of total-time
Operation ival-neg, time spent: 1.0ms, 1.0% of total-time

end0.0ms (0%)

Profiling

Loading profile data...