Disney BSSRDF, PDF of scattering profile

Time bar (total: 25.2s)

analyze32.0ms (0.1%)

Memory
11.6MiB live, 11.6MiB allocated
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 71 to 53 computations (25.4% saved)

sample25.0s (99.4%)

Memory
5.1MiB live, 4 978.3MiB allocated
Samples
5.5s7 742×0valid-sollya
1.0s7 742×0valid-baseline
1.0s7 742×0valid-rival
73.0ms514×0valid-rival+baseline-zero
Bogosity

preprocess93.0ms (0.4%)

Memory
-8.4MiB live, 22.0MiB allocated
Algorithm
egg-herbie
Rules
1 764×times-frac
1 088×fmm-def
976×distribute-frac-neg2
820×distribute-lft-neg-out
646×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 (exp.f32 (/.f32 r s)) r) (/.f32 (cbrt.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 (exp.f32 (/.f32 r s)) r) (/.f32 (cbrt.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 35 to 25 computations (28.6% saved)

eval0.0ms (0%)

Memory
0.3MiB live, 0.3MiB allocated
Compiler

Compiled 2 to 2 computations (0% saved)

prune1.0ms (0%)

Memory
1.1MiB live, 1.1MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.4%
(+.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)))
Compiler

Compiled 70 to 50 computations (28.6% saved)

simplify4.0ms (0%)

Memory
1.2MiB live, 1.2MiB allocated
Algorithm
egg-herbie
Rules
30×*-commutative
14×+-commutative
12×sub-neg
12×neg-sub0
12×neg-mul-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
031129
149129
259129
373129
481129
585129
686129
Stop Event
saturated
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)))
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) (exp.f32 (/.f32 (neg.f32 r) s))) (*.f32 r (*.f32 s (*.f32 #s(literal 2 binary32) (PI.f32))))) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 s #s(literal 3 binary32))))) (*.f32 r (*.f32 s (*.f32 (PI.f32) #s(literal 6 binary32))))))
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 r (neg.f32 s)))) (*.f32 r (*.f32 s (*.f32 #s(literal 2 binary32) (PI.f32))))) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 (neg.f32 r) (*.f32 s #s(literal 3 binary32))))) (*.f32 r (*.f32 s (*.f32 (PI.f32) #s(literal 6 binary32))))))
(+.f32 (/.f32 (*.f32 #s(literal 1/4 binary32) (exp.f32 (/.f32 r (neg.f32 s)))) (*.f32 r (*.f32 s (*.f32 #s(literal 2 binary32) (PI.f32))))) (/.f32 (*.f32 #s(literal 3/4 binary32) (exp.f32 (/.f32 r (*.f32 s (neg.f32 #s(literal 3 binary32)))))) (*.f32 r (*.f32 s (*.f32 (PI.f32) #s(literal 6 binary32))))))

soundness0.0ms (0%)

Memory
0.5MiB live, 0.5MiB allocated
Stop Event
fuel
Compiler

Compiled 35 to 26 computations (25.7% saved)

preprocess24.0ms (0.1%)

Memory
-6.4MiB live, 27.2MiB allocated
Compiler

Compiled 140 to 102 computations (27.1% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...