Disney BSSRDF, sample scattering profile, upper

Time bar (total: 2.7s)

analyze29.0ms (1.1%)

Memory
-5.7MiB live, 10.1MiB allocated
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 33 to 29 computations (12.1% saved)

sample2.4s (90.2%)

Memory
35.0MiB live, 695.0MiB allocated
Samples
646.0ms8 256×73valid-baseline
539.0ms8 256×73valid-rival
437.0ms8 256×73valid-sollya
Precisions
Click to see Rival histograms. Total time spent on operations: 389.0ms
ival-mult: 102.0ms (26.2% of total)
ival-div: 102.0ms (26.2% of total)
ival-log: 97.0ms (24.9% of total)
ival-sub: 68.0ms (17.5% of total)
...in/eval/compile.rkt:110:19: 9.0ms (2.3% of total)
ival-true: 8.0ms (2.1% of total)
ival-assert: 3.0ms (0.8% of total)
Precisions
Click to see Base histograms. Total time spent on operations: 386.0ms
ival-div: 105.0ms (27.2% of total)
ival-mult: 100.0ms (25.9% of total)
ival-log: 87.0ms (22.5% of total)
ival-sub: 73.0ms (18.9% of total)
const: 20.0ms (5.2% of total)
Bogosity

preprocess212.0ms (7.8%)

Memory
-12.5MiB live, 21.6MiB allocated
Algorithm
egg-herbie
Rules
1 598×fma-define
1 028×fmm-def
346×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
83572217
93684217
103734217
113777217
123797217
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%)

Memory
0.2MiB live, 0.2MiB allocated
Compiler

Compiled 2 to 2 computations (0% saved)

prune1.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
95.7%
(*.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)

simplify7.0ms (0.3%)

Memory
1.0MiB live, 1.0MiB allocated
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%)

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

Compiled 16 to 13 computations (18.8% saved)

preprocess17.0ms (0.6%)

Memory
8.1MiB live, 23.6MiB allocated
Remove

(negabs s)

Compiler

Compiled 128 to 104 computations (18.8% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...