HairBSDF, gamma for a refracted ray

Time bar (total: 4.4s)

analyze181.0ms (4.1%)

Memory
-10.7MiB live, 71.0MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%6.3%93.7%0%0%0%0
0%0%6.3%93.7%0%0%0%1
0%0%6.3%93.7%0%0%0%2
0%0%6.3%93.7%0%0%0%3
0%0%6.3%93.7%0%0%0%4
0%0%6.3%93.7%0%0%0%5
12.5%0.8%5.5%93.7%0%0%0%6
12.5%0.8%5.5%93.7%0%0%0%7
16.7%1%4.9%93.7%0%0.4%0%8
23.7%1.4%4.4%93.7%0%0.5%0%9
26.2%1.4%3.9%93.7%0%1%0%10
33.9%1.5%3%93.7%0%1.8%0%11
38.9%1.7%2.7%93.7%0%1.9%0%12
Compiler

Compiled 42 to 29 computations (31% saved)

sample4.0s (90.7%)

Memory
8.5MiB live, 1 209.7MiB allocated
Samples
639.0ms8 256×0valid-baseline
616.0ms8 256×0valid-rival
588.0ms8 256×0valid-sollya
Bogosity

preprocess207.0ms (4.7%)

Memory
-5.0MiB live, 28.1MiB allocated
Algorithm
egg-herbie
Rules
1 562×fmm-def
1 486×fma-define
1 088×sub-neg
646×div-sub
570×unsub-neg
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
060856
1127856
2239856
3539856
41111856
52527856
63662856
75175856
86452856
97271856
107740856
Stop Event
node limit
Calls
Call 1
Inputs
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 (neg.f32 sinTheta_O) (neg.f32 sinTheta_O)) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 (neg.f32 sinTheta_O) (neg.f32 sinTheta_O)))))))))
(asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 (neg.f32 eta) (neg.f32 eta)) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 (neg.f32 sinTheta_O) (neg.f32 sinTheta_O)) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 (neg.f32 sinTheta_O) (neg.f32 sinTheta_O))))))))))
(neg.f32 (asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 (neg.f32 eta) (neg.f32 eta)) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))))))
(asin.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 h h) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 h h))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 sinTheta_O sinTheta_O) (/.f32 (*.f32 eta eta) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 eta eta))))))))
(asin.f32 (/.f32 eta (sqrt.f32 (-.f32 (*.f32 h h) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
Outputs
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))))))
(asin.f32 (/.f32 h (sqrt.f32 (fma.f32 sinTheta_O (/.f32 sinTheta_O (neg.f32 (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))) (*.f32 eta eta)))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))))))
(asin.f32 (/.f32 h (sqrt.f32 (fma.f32 sinTheta_O (/.f32 sinTheta_O (neg.f32 (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))) (*.f32 eta eta)))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 (neg.f32 sinTheta_O) (neg.f32 sinTheta_O)) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 (neg.f32 sinTheta_O) (neg.f32 sinTheta_O)))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))))))
(asin.f32 (/.f32 h (sqrt.f32 (fma.f32 sinTheta_O (/.f32 sinTheta_O (neg.f32 (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))) (*.f32 eta eta)))))
(asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))))))
(asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (fma.f32 sinTheta_O (/.f32 sinTheta_O (neg.f32 (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))) (*.f32 eta eta)))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 (neg.f32 eta) (neg.f32 eta)) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))))))
(asin.f32 (/.f32 h (sqrt.f32 (fma.f32 sinTheta_O (/.f32 sinTheta_O (neg.f32 (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))) (*.f32 eta eta)))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 (neg.f32 sinTheta_O) (neg.f32 sinTheta_O)) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 (neg.f32 sinTheta_O) (neg.f32 sinTheta_O))))))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (fma.f32 sinTheta_O (/.f32 sinTheta_O (neg.f32 (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))) (*.f32 eta eta))))))
(neg.f32 (asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))))))
(neg.f32 (asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))))
(neg.f32 (asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (fma.f32 sinTheta_O (/.f32 sinTheta_O (neg.f32 (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))) (*.f32 eta eta))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 (neg.f32 eta) (neg.f32 eta)) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (fma.f32 sinTheta_O (/.f32 sinTheta_O (neg.f32 (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))) (*.f32 eta eta))))))
(asin.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 h h) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 h h))))))))
(asin.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 h h) (sqrt.f32 (neg.f32 (fma.f32 h h #s(literal -1 binary32)))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 sinTheta_O sinTheta_O) (/.f32 (*.f32 eta eta) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 eta eta))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 sinTheta_O sinTheta_O) (*.f32 eta (/.f32 eta (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 eta eta)))))))))
(asin.f32 (/.f32 h (sqrt.f32 (fma.f32 (neg.f32 eta) (/.f32 eta (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 eta eta)))) (*.f32 sinTheta_O sinTheta_O)))))
(asin.f32 (/.f32 eta (sqrt.f32 (-.f32 (*.f32 h h) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 eta (sqrt.f32 (fma.f32 h h (/.f32 (*.f32 sinTheta_O (neg.f32 sinTheta_O)) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 eta (sqrt.f32 (-.f32 (*.f32 h h) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))))))
Symmetry

(abs sinTheta_O)

(abs eta)

Compiler

Compiled 21 to 13 computations (38.1% saved)

eval0.0ms (0%)

Memory
0.3MiB live, 0.3MiB allocated
Compiler

Compiled 3 to 3 computations (0% saved)

prune1.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
93.1%
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
Compiler

Compiled 42 to 26 computations (38.1% saved)

simplify3.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02076
13276
24576
35376
45876
55976
Stop Event
saturated
Calls
Call 1
Inputs
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))
Outputs
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))))))

soundness0.0ms (0%)

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

Compiled 21 to 13 computations (38.1% saved)

preprocess19.0ms (0.4%)

Memory
-5.4MiB live, 25.9MiB allocated
Remove

(abs eta)

(abs sinTheta_O)

Compiler

Compiled 252 to 156 computations (38.1% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...