Disney BSSRDF, PDF of scattering profile

Time bar (total: 2.6s)

analyze40.0ms (1.6%)

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)

sample2.2s (86.5%)

Results
2.2s8256×body256valid
Bogosity

preprocess307.0ms (11.9%)

Algorithm
egg-herbie
Rules
1458×distribute-rgt-in
1458×distribute-lft-in
1324×times-frac
1308×associate-/l*
752×associate-+r+
Problems
236×No Errors
11×(exp.f32 (/.f32 (neg.f32 r) s))
(exp.f32 (/.f32 (neg.f32 r) (*.f32 3 s)))
(/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 s)))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) s) r))
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
074975
1227827
21030622
35654622
Stop Event
node limit
Calls
Call 1
Inputs
(+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) s) r)) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 s)))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) s) r)))
(+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) s) r)) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 s)))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) s) r)))
(+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 r) (neg.f32 s)))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) (neg.f32 s)) r)) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 (neg.f32 s))))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) (neg.f32 s)) r)))
(+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) s))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) s) (neg.f32 r))) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) (*.f32 3 s)))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) s) (neg.f32 r))))
(neg.f32 (+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 r) (neg.f32 s)))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) (neg.f32 s)) r)) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 (neg.f32 s))))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) (neg.f32 s)) r))))
(neg.f32 (+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) s))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) s) (neg.f32 r))) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) (*.f32 3 s)))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) s) (neg.f32 r)))))
(+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 s) r))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) r) s)) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 s) (*.f32 3 r)))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) r) s)))
Outputs
(+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) s) r)) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 s)))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) s) r)))
(+.f32 (*.f32 (/.f32 1/4 (*.f32 s (*.f32 2 (PI.f32)))) (/.f32 (exp.f32 (neg.f32 (/.f32 r s))) r)) (/.f32 3/4 (/.f32 (*.f32 r (*.f32 6 (*.f32 (PI.f32) s))) (exp.f32 (/.f32 (neg.f32 r) (*.f32 s 3))))))
(fma.f32 (/.f32 1/8 (*.f32 s (PI.f32))) (/.f32 (exp.f32 (*.f32 -1/3 (/.f32 r s))) r) (*.f32 (/.f32 1/8 (*.f32 s (PI.f32))) (/.f32 (exp.f32 (/.f32 (neg.f32 r) s)) r)))
(*.f32 (/.f32 1/8 (*.f32 s (PI.f32))) (+.f32 (/.f32 (exp.f32 (/.f32 r (neg.f32 s))) r) (/.f32 (pow.f32 (exp.f32 -1/3) (/.f32 r s)) r)))
(*.f32 (/.f32 1/8 (*.f32 s (PI.f32))) (+.f32 (/.f32 (pow.f32 (exp.f32 -1/3) (/.f32 r s)) r) (/.f32 (exp.f32 (/.f32 r (neg.f32 s))) r)))
(+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) s) r)) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 s)))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) s) r)))
(+.f32 (*.f32 (/.f32 1/4 (*.f32 s (*.f32 2 (PI.f32)))) (/.f32 (exp.f32 (neg.f32 (/.f32 r s))) r)) (/.f32 3/4 (/.f32 (*.f32 r (*.f32 6 (*.f32 (PI.f32) s))) (exp.f32 (/.f32 (neg.f32 r) (*.f32 s 3))))))
(fma.f32 (/.f32 1/8 (*.f32 s (PI.f32))) (/.f32 (exp.f32 (*.f32 -1/3 (/.f32 r s))) r) (*.f32 (/.f32 1/8 (*.f32 s (PI.f32))) (/.f32 (exp.f32 (/.f32 (neg.f32 r) s)) r)))
(*.f32 (/.f32 1/8 (*.f32 s (PI.f32))) (+.f32 (/.f32 (exp.f32 (/.f32 r (neg.f32 s))) r) (/.f32 (pow.f32 (exp.f32 -1/3) (/.f32 r s)) r)))
(*.f32 (/.f32 1/8 (*.f32 s (PI.f32))) (+.f32 (/.f32 (pow.f32 (exp.f32 -1/3) (/.f32 r s)) r) (/.f32 (exp.f32 (/.f32 r (neg.f32 s))) r)))
(+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 r) (neg.f32 s)))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) (neg.f32 s)) r)) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 (neg.f32 s))))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) (neg.f32 s)) r)))
(+.f32 (*.f32 (/.f32 1/4 (*.f32 2 (*.f32 (PI.f32) (neg.f32 s)))) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (neg.f32 s))) r)) (*.f32 (/.f32 3/4 (*.f32 6 (*.f32 (PI.f32) (neg.f32 s)))) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 (neg.f32 s)))) r)))
(fma.f32 (/.f32 1/8 (*.f32 (PI.f32) (neg.f32 s))) (/.f32 (exp.f32 (*.f32 1 (/.f32 r s))) r) (*.f32 (/.f32 1/8 (*.f32 (PI.f32) (neg.f32 s))) (/.f32 (exp.f32 (*.f32 -1/3 (/.f32 r (neg.f32 s)))) r)))
(*.f32 (/.f32 1/8 (*.f32 s (neg.f32 (PI.f32)))) (+.f32 (/.f32 (exp.f32 (/.f32 r s)) r) (/.f32 (cbrt.f32 (exp.f32 (/.f32 r s))) r)))
(+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) s))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) s) (neg.f32 r))) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) (*.f32 3 s)))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) s) (neg.f32 r))))
(+.f32 (*.f32 (/.f32 1/4 (*.f32 2 (*.f32 (PI.f32) (neg.f32 s)))) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (neg.f32 s))) r)) (*.f32 (/.f32 3/4 (*.f32 6 (*.f32 (PI.f32) (neg.f32 s)))) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 (neg.f32 s)))) r)))
(fma.f32 (/.f32 1/8 (*.f32 (PI.f32) (neg.f32 s))) (/.f32 (exp.f32 (*.f32 1 (/.f32 r s))) r) (*.f32 (/.f32 1/8 (*.f32 (PI.f32) (neg.f32 s))) (/.f32 (exp.f32 (*.f32 -1/3 (/.f32 r (neg.f32 s)))) r)))
(*.f32 (/.f32 1/8 (*.f32 s (neg.f32 (PI.f32)))) (+.f32 (/.f32 (exp.f32 (/.f32 r s)) r) (/.f32 (cbrt.f32 (exp.f32 (/.f32 r s))) r)))
(neg.f32 (+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 r) (neg.f32 s)))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) (neg.f32 s)) r)) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 (neg.f32 s))))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) (neg.f32 s)) r))))
(neg.f32 (+.f32 (*.f32 (/.f32 1/4 (*.f32 2 (*.f32 (PI.f32) (neg.f32 s)))) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (neg.f32 s))) r)) (*.f32 (/.f32 3/4 (*.f32 6 (*.f32 (PI.f32) (neg.f32 s)))) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 (neg.f32 s)))) r))))
(neg.f32 (fma.f32 (/.f32 1/8 (*.f32 (PI.f32) (neg.f32 s))) (/.f32 (exp.f32 (*.f32 1 (/.f32 r s))) r) (*.f32 (/.f32 1/8 (*.f32 (PI.f32) (neg.f32 s))) (/.f32 (exp.f32 (*.f32 -1/3 (/.f32 r (neg.f32 s)))) r))))
(*.f32 (/.f32 -1/8 (*.f32 s (neg.f32 (PI.f32)))) (+.f32 (/.f32 (exp.f32 (/.f32 r s)) r) (/.f32 (cbrt.f32 (exp.f32 (/.f32 r s))) r)))
(neg.f32 (+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) s))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) s) (neg.f32 r))) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 (neg.f32 r)) (*.f32 3 s)))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) s) (neg.f32 r)))))
(neg.f32 (+.f32 (*.f32 (/.f32 1/4 (*.f32 2 (*.f32 (PI.f32) (neg.f32 s)))) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (neg.f32 s))) r)) (*.f32 (/.f32 3/4 (*.f32 6 (*.f32 (PI.f32) (neg.f32 s)))) (/.f32 (exp.f32 (/.f32 (neg.f32 r) (*.f32 3 (neg.f32 s)))) r))))
(neg.f32 (fma.f32 (/.f32 1/8 (*.f32 (PI.f32) (neg.f32 s))) (/.f32 (exp.f32 (*.f32 1 (/.f32 r s))) r) (*.f32 (/.f32 1/8 (*.f32 (PI.f32) (neg.f32 s))) (/.f32 (exp.f32 (*.f32 -1/3 (/.f32 r (neg.f32 s)))) r))))
(*.f32 (/.f32 -1/8 (*.f32 s (neg.f32 (PI.f32)))) (+.f32 (/.f32 (exp.f32 (/.f32 r s)) r) (/.f32 (cbrt.f32 (exp.f32 (/.f32 r s))) r)))
(+.f32 (/.f32 (*.f32 1/4 (exp.f32 (/.f32 (neg.f32 s) r))) (*.f32 (*.f32 (*.f32 2 (PI.f32)) r) s)) (/.f32 (*.f32 3/4 (exp.f32 (/.f32 (neg.f32 s) (*.f32 3 r)))) (*.f32 (*.f32 (*.f32 6 (PI.f32)) r) s)))
(+.f32 (*.f32 (/.f32 1/4 (*.f32 r (*.f32 2 (PI.f32)))) (/.f32 (exp.f32 (/.f32 (neg.f32 s) r)) s)) (*.f32 (/.f32 3/4 (*.f32 r (*.f32 (PI.f32) 6))) (/.f32 (exp.f32 (/.f32 (neg.f32 s) (*.f32 r 3))) s)))
(fma.f32 (/.f32 1/8 (*.f32 r (PI.f32))) (/.f32 (exp.f32 (*.f32 -1/3 (/.f32 s r))) s) (*.f32 (/.f32 1/8 (*.f32 r (PI.f32))) (/.f32 (exp.f32 (/.f32 (neg.f32 s) r)) s)))
(*.f32 (/.f32 1/8 (*.f32 r (PI.f32))) (+.f32 (/.f32 (exp.f32 (/.f32 s (neg.f32 r))) s) (/.f32 (pow.f32 (exp.f32 -1/3) (/.f32 s r)) s)))
(*.f32 (/.f32 1/8 (*.f32 r (PI.f32))) (+.f32 (/.f32 (pow.f32 (exp.f32 -1/3) (/.f32 s r)) s) (/.f32 (exp.f32 (/.f32 s (neg.f32 r))) s)))
Compiler

Compiled 149 to 84 computations (43.6% saved)

end0.0ms (0%)

Profiling

Loading profile data...