HairBSDF, gamma for a refracted ray

Time bar (total: 4.6s)

analyze599.0ms (13.1%)

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 44 to 30 computations (31.8% saved)

sample3.7s (80.5%)

Results
2.1s8256×body256valid
1.5s8254×body256invalid
Bogosity

preprocess291.0ms (6.4%)

Algorithm
egg-herbie
Rules
1130×associate-+r+
910×fma-neg
758×*-commutative
738×+-commutative
730×associate-+r-
Problems
227×No Errors
29×(sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O))))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
060856
1129856
2233856
3569856
41510856
52706856
63962856
75522856
87415856
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 1 (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 1 (*.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 1 (*.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 1 (*.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 1 (*.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 1 (*.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 1 (*.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 1 (*.f32 sinTheta_O sinTheta_O)))))))))
(asin.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 h h) (sqrt.f32 (-.f32 1 (*.f32 h h))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 sinTheta_O sinTheta_O) (/.f32 (*.f32 eta eta) (sqrt.f32 (-.f32 1 (*.f32 eta eta))))))))
(asin.f32 (/.f32 eta (sqrt.f32 (-.f32 (*.f32 h h) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 1 (*.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 1 (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O)))) sinTheta_O)))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O)))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 sinTheta_O (/.f32 (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O))) sinTheta_O))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O)))) sinTheta_O)))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O)))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 sinTheta_O (/.f32 (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O 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 1 (*.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 1 (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O)))) sinTheta_O)))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O)))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 sinTheta_O (/.f32 (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O))) sinTheta_O))))))
(asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O 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 1 (*.f32 sinTheta_O sinTheta_O)))))))))
(asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 sinTheta_O (/.f32 (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O 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 1 (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O)))) sinTheta_O)))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 sinTheta_O (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O)))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 sinTheta_O (/.f32 (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O 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 1 (*.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 1 (*.f32 sinTheta_O sinTheta_O)))))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O 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 1 (*.f32 sinTheta_O sinTheta_O))))))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 sinTheta_O (/.f32 (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O))) 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 1 (*.f32 sinTheta_O sinTheta_O)))))))))
(neg.f32 (asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O 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 1 (*.f32 sinTheta_O sinTheta_O))))))))))
(neg.f32 (asin.f32 (/.f32 (neg.f32 h) (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 sinTheta_O (/.f32 (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O 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 1 (*.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 1 (*.f32 sinTheta_O sinTheta_O)))))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (*.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O 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 1 (*.f32 sinTheta_O sinTheta_O))))))))))
(neg.f32 (asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 sinTheta_O (/.f32 (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O))) sinTheta_O)))))))
(asin.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 h h) (sqrt.f32 (-.f32 1 (*.f32 h h))))))))
(asin.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 h (/.f32 (sqrt.f32 (-.f32 1 (*.f32 h h))) h))))))
(asin.f32 (/.f32 sinTheta_O (sqrt.f32 (fma.f32 eta eta (/.f32 h (/.f32 (sqrt.f32 (-.f32 1 (*.f32 h h))) (neg.f32 h)))))))
(asin.f32 (/.f32 sinTheta_O (sqrt.f32 (fma.f32 (neg.f32 h) (/.f32 h (sqrt.f32 (-.f32 1 (*.f32 h h)))) (*.f32 eta eta)))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 sinTheta_O sinTheta_O) (/.f32 (*.f32 eta eta) (sqrt.f32 (-.f32 1 (*.f32 eta eta))))))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 sinTheta_O sinTheta_O) (*.f32 (/.f32 eta (sqrt.f32 (-.f32 1 (*.f32 eta eta)))) eta)))))
(asin.f32 (/.f32 h (sqrt.f32 (fma.f32 sinTheta_O sinTheta_O (*.f32 (/.f32 (neg.f32 eta) (sqrt.f32 (-.f32 1 (*.f32 eta eta)))) eta)))))
(asin.f32 (/.f32 h (sqrt.f32 (-.f32 (*.f32 sinTheta_O sinTheta_O) (*.f32 eta (/.f32 eta (sqrt.f32 (-.f32 1 (*.f32 eta eta)))))))))
(asin.f32 (/.f32 h (sqrt.f32 (fma.f32 eta (/.f32 (neg.f32 eta) (sqrt.f32 (-.f32 1 (*.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 1 (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 eta (sqrt.f32 (-.f32 (*.f32 h h) (*.f32 (/.f32 sinTheta_O (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O)))) sinTheta_O)))))
(asin.f32 (/.f32 eta (sqrt.f32 (fma.f32 h h (/.f32 (neg.f32 (*.f32 sinTheta_O sinTheta_O)) (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O))))))))
(asin.f32 (/.f32 eta (sqrt.f32 (-.f32 (*.f32 h h) (/.f32 sinTheta_O (/.f32 (sqrt.f32 (-.f32 1 (*.f32 sinTheta_O sinTheta_O))) sinTheta_O))))))
Symmetry

(abs sinTheta_O)

(abs eta)

Compiler

Compiled 99 to 42 computations (57.6% saved)

end0.0ms (0%)

Profiling

Loading profile data...