UniformSampleCone, x

Time bar (total: 2.5s)

analyze204.0ms (8.2%)

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
0%0%0.1%99.9%0%0%0%3
50%0%0%99.9%0%0%0%4
50%0%0%99.9%0%0%0%5
50%0%0%99.9%0%0%0%6
75%0.1%0%99.9%0%0%0%7
75%0.1%0%99.9%0%0%0%8
75%0.1%0%99.9%0%0%0%9
87.5%0.1%0%99.9%0%0%0%10
87.5%0.1%0%99.9%0%0%0%11
87.5%0.1%0%99.9%0%0%0%12
Compiler

Compiled 51 to 37 computations (27.5% saved)

sample2.0s (81.1%)

Results
2.0s8256×body256valid
Bogosity

preprocess266.0ms (10.7%)

Algorithm
egg-herbie
Rules
1102×+-commutative
882×distribute-neg-in
776×distribute-rgt-in
772×distribute-lft-in
720×associate-+l-
Problems
217×(-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))
37×No Errors
(cos.f32 (*.f32 (*.f32 uy 2) (PI.f32)))
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0721142
12241034
2736973
33528967
Stop Event
node limit
Calls
Call 1
Inputs
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 (neg.f32 ux)) (*.f32 (neg.f32 ux) maxCos)) (+.f32 (-.f32 1 (neg.f32 ux)) (*.f32 (neg.f32 ux) maxCos))))))
(*.f32 (cos.f32 (*.f32 (*.f32 (neg.f32 uy) 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux (neg.f32 maxCos))) (+.f32 (-.f32 1 ux) (*.f32 ux (neg.f32 maxCos)))))))
(neg.f32 (*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 (neg.f32 ux)) (*.f32 (neg.f32 ux) maxCos)) (+.f32 (-.f32 1 (neg.f32 ux)) (*.f32 (neg.f32 ux) maxCos)))))))
(neg.f32 (*.f32 (cos.f32 (*.f32 (*.f32 (neg.f32 uy) 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)))))))
(neg.f32 (*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux (neg.f32 maxCos))) (+.f32 (-.f32 1 ux) (*.f32 ux (neg.f32 maxCos))))))))
(*.f32 (cos.f32 (*.f32 (*.f32 ux 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 uy) (*.f32 uy maxCos)) (+.f32 (-.f32 1 uy) (*.f32 uy maxCos))))))
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 maxCos) (*.f32 maxCos ux)) (+.f32 (-.f32 1 maxCos) (*.f32 maxCos ux))))))
(*.f32 (cos.f32 (*.f32 (*.f32 maxCos 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux uy)) (+.f32 (-.f32 1 ux) (*.f32 ux uy))))))
Outputs
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (fma.f32 ux maxCos (-.f32 1 ux))))))
(*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (fma.f32 (-.f32 (fma.f32 ux maxCos 1) ux) (+.f32 -1 (*.f32 ux (-.f32 1 maxCos))) 1)))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (fma.f32 (-.f32 (fma.f32 ux maxCos 1) ux) (+.f32 (*.f32 ux (-.f32 1 maxCos)) -1) 1)))
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (fma.f32 ux maxCos (-.f32 1 ux))))))
(*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (fma.f32 (-.f32 (fma.f32 ux maxCos 1) ux) (+.f32 -1 (*.f32 ux (-.f32 1 maxCos))) 1)))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (fma.f32 (-.f32 (fma.f32 ux maxCos 1) ux) (+.f32 (*.f32 ux (-.f32 1 maxCos)) -1) 1)))
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 (neg.f32 ux)) (*.f32 (neg.f32 ux) maxCos)) (+.f32 (-.f32 1 (neg.f32 ux)) (*.f32 (neg.f32 ux) maxCos))))))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 (neg.f32 ux)) (*.f32 ux (neg.f32 maxCos))) (+.f32 (-.f32 1 (neg.f32 ux)) (*.f32 ux (neg.f32 maxCos)))))))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 1 (-.f32 ux (*.f32 ux maxCos))) (+.f32 1 (-.f32 ux (*.f32 ux maxCos)))))))
(*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (fma.f32 (+.f32 1 (*.f32 ux (-.f32 1 maxCos))) (+.f32 -1 (*.f32 ux (+.f32 maxCos -1))) 1)))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (fma.f32 (-.f32 ux (fma.f32 ux maxCos -1)) (fma.f32 ux maxCos (-.f32 -1 ux)) 1)))
(*.f32 (cos.f32 (*.f32 (*.f32 (neg.f32 uy) 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos))))))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (fma.f32 ux maxCos (-.f32 1 ux))))))
(*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (fma.f32 (-.f32 (fma.f32 ux maxCos 1) ux) (+.f32 -1 (*.f32 ux (-.f32 1 maxCos))) 1)))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (fma.f32 (-.f32 (fma.f32 ux maxCos 1) ux) (+.f32 (*.f32 ux (-.f32 1 maxCos)) -1) 1)))
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux (neg.f32 maxCos))) (+.f32 (-.f32 1 ux) (*.f32 ux (neg.f32 maxCos)))))))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux (neg.f32 maxCos))) (+.f32 (-.f32 1 ux) (*.f32 ux (neg.f32 maxCos)))))))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (-.f32 1 (+.f32 ux (*.f32 ux maxCos))) (-.f32 1 (+.f32 ux (*.f32 ux maxCos)))))))
(*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (fma.f32 (-.f32 1 (*.f32 ux (+.f32 1 maxCos))) (+.f32 -1 (*.f32 ux (+.f32 1 maxCos))) 1)))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (fma.f32 (-.f32 1 (*.f32 ux (+.f32 1 maxCos))) (+.f32 ux (fma.f32 ux maxCos -1)) 1)))
(neg.f32 (*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 (neg.f32 ux)) (*.f32 (neg.f32 ux) maxCos)) (+.f32 (-.f32 1 (neg.f32 ux)) (*.f32 (neg.f32 ux) maxCos)))))))
(*.f32 (neg.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32))))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 (neg.f32 ux)) (*.f32 ux (neg.f32 maxCos))) (+.f32 (-.f32 1 (neg.f32 ux)) (*.f32 ux (neg.f32 maxCos)))))))
(*.f32 (sqrt.f32 (-.f32 1 (*.f32 (+.f32 1 (-.f32 ux (*.f32 ux maxCos))) (+.f32 1 (-.f32 ux (*.f32 ux maxCos)))))) (neg.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32))))))
(*.f32 (sqrt.f32 (fma.f32 (+.f32 1 (*.f32 ux (-.f32 1 maxCos))) (+.f32 -1 (*.f32 ux (+.f32 maxCos -1))) 1)) (neg.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))))
(*.f32 (sqrt.f32 (fma.f32 (-.f32 ux (fma.f32 ux maxCos -1)) (fma.f32 ux maxCos (-.f32 -1 ux)) 1)) (neg.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32))))))
(neg.f32 (*.f32 (cos.f32 (*.f32 (*.f32 (neg.f32 uy) 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)))))))
(*.f32 (cos.f32 (*.f32 (PI.f32) (*.f32 2 (neg.f32 uy)))) (neg.f32 (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)) (+.f32 (-.f32 1 ux) (*.f32 ux maxCos)))))))
(*.f32 (cos.f32 (*.f32 (PI.f32) (*.f32 uy -2))) (neg.f32 (sqrt.f32 (-.f32 1 (*.f32 (fma.f32 ux maxCos (-.f32 1 ux)) (fma.f32 ux maxCos (-.f32 1 ux)))))))
(*.f32 (sqrt.f32 (fma.f32 (-.f32 (fma.f32 ux maxCos 1) ux) (+.f32 -1 (*.f32 ux (-.f32 1 maxCos))) 1)) (neg.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))))
(*.f32 (sqrt.f32 (fma.f32 (-.f32 (fma.f32 ux maxCos 1) ux) (+.f32 (*.f32 ux (-.f32 1 maxCos)) -1) 1)) (neg.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32))))))
(neg.f32 (*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux (neg.f32 maxCos))) (+.f32 (-.f32 1 ux) (*.f32 ux (neg.f32 maxCos))))))))
(*.f32 (neg.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32))))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux (neg.f32 maxCos))) (+.f32 (-.f32 1 ux) (*.f32 ux (neg.f32 maxCos)))))))
(*.f32 (sqrt.f32 (-.f32 1 (*.f32 (-.f32 1 (+.f32 ux (*.f32 ux maxCos))) (-.f32 1 (+.f32 ux (*.f32 ux maxCos)))))) (neg.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32))))))
(*.f32 (sqrt.f32 (fma.f32 (-.f32 1 (*.f32 ux (+.f32 1 maxCos))) (+.f32 -1 (*.f32 ux (+.f32 1 maxCos))) 1)) (neg.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32))))))
(*.f32 (sqrt.f32 (fma.f32 (-.f32 1 (*.f32 ux (+.f32 1 maxCos))) (+.f32 ux (fma.f32 ux maxCos -1)) 1)) (neg.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32))))))
(*.f32 (cos.f32 (*.f32 (*.f32 ux 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 uy) (*.f32 uy maxCos)) (+.f32 (-.f32 1 uy) (*.f32 uy maxCos))))))
(*.f32 (cos.f32 (*.f32 (PI.f32) (*.f32 2 ux))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 uy) (*.f32 uy maxCos)) (+.f32 (-.f32 1 uy) (*.f32 uy maxCos))))))
(*.f32 (cos.f32 (*.f32 2 (*.f32 ux (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (fma.f32 uy maxCos (-.f32 1 uy)) (fma.f32 uy maxCos (-.f32 1 uy))))))
(*.f32 (cos.f32 (*.f32 (PI.f32) (*.f32 2 ux))) (sqrt.f32 (fma.f32 (-.f32 (fma.f32 uy maxCos 1) uy) (+.f32 -1 (*.f32 (-.f32 1 maxCos) uy)) 1)))
(*.f32 (cos.f32 (*.f32 2 (*.f32 (PI.f32) ux))) (sqrt.f32 (fma.f32 (fma.f32 uy maxCos (-.f32 1 uy)) (+.f32 (*.f32 uy (-.f32 1 maxCos)) -1) 1)))
(*.f32 (cos.f32 (*.f32 (*.f32 uy 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 maxCos) (*.f32 maxCos ux)) (+.f32 (-.f32 1 maxCos) (*.f32 maxCos ux))))))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (*.f32 ux maxCos) (-.f32 1 maxCos)) (+.f32 (*.f32 ux maxCos) (-.f32 1 maxCos))))))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (fma.f32 ux maxCos (-.f32 1 maxCos)) (fma.f32 ux maxCos (-.f32 1 maxCos))))))
(*.f32 (cos.f32 (*.f32 2 (*.f32 uy (PI.f32)))) (sqrt.f32 (fma.f32 (-.f32 (fma.f32 ux maxCos 1) maxCos) (+.f32 -1 (*.f32 (-.f32 1 ux) maxCos)) 1)))
(*.f32 (cos.f32 (*.f32 uy (*.f32 2 (PI.f32)))) (sqrt.f32 (fma.f32 (-.f32 (fma.f32 ux maxCos 1) maxCos) (+.f32 -1 (*.f32 (-.f32 1 ux) maxCos)) 1)))
(*.f32 (cos.f32 (*.f32 (*.f32 maxCos 2) (PI.f32))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 ux uy)) (+.f32 (-.f32 1 ux) (*.f32 ux uy))))))
(*.f32 (cos.f32 (*.f32 (PI.f32) (*.f32 2 maxCos))) (sqrt.f32 (-.f32 1 (*.f32 (+.f32 (-.f32 1 ux) (*.f32 uy ux)) (+.f32 (-.f32 1 ux) (*.f32 uy ux))))))
(*.f32 (cos.f32 (*.f32 2 (*.f32 maxCos (PI.f32)))) (sqrt.f32 (-.f32 1 (*.f32 (fma.f32 uy ux (-.f32 1 ux)) (fma.f32 uy ux (-.f32 1 ux))))))
(*.f32 (cos.f32 (*.f32 (PI.f32) (*.f32 2 maxCos))) (sqrt.f32 (fma.f32 (fma.f32 uy ux (-.f32 1 ux)) (-.f32 -1 (*.f32 ux (+.f32 -1 uy))) 1)))
(*.f32 (cos.f32 (*.f32 2 (*.f32 (PI.f32) maxCos))) (sqrt.f32 (fma.f32 (fma.f32 uy ux (-.f32 1 ux)) (+.f32 (*.f32 ux (-.f32 1 uy)) -1) 1)))
Symmetry

(abs uy)

Compiler

Compiled 112 to 63 computations (43.8% saved)

end0.0ms (0%)

Profiling

Loading profile data...