Curve intersection, scale width based on ribbon orientation

Time bar (total: 18.5s)

analyze655.0ms (3.5%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%0.8%99.2%0%0%0%0
0%0%0.8%99.2%0%0%0%1
0%0%0.8%99.2%0%0%0%2
0%0%0.8%99.2%0%0%0%3
0%0%0.8%99.2%0%0%0%4
0%0%0.8%99.2%0%0%0%5
33.3%0.2%0.4%99.4%0%0%0%6
33.3%0.2%0.4%99.4%0%0%0%7
33.3%0.2%0.4%99.4%0%0%0%8
33.3%0.2%0.4%99.4%0%0%0%9
60%0.3%0.2%99.5%0%0%0%10
60%0.3%0.2%99.5%0%0%0%11
60%0.3%0.2%99.5%0%0%0%12
Compiler

Compiled 62 to 45 computations (27.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 219.0ms
Operation ival-mult, time spent: 67.0ms, 31.0% of total-time
Operation ival-<=, time spent: 63.0ms, 29.0% of total-time
Operation ival-div, time spent: 23.0ms, 11.0% of total-time
Operation ival-sin, time spent: 23.0ms, 11.0% of total-time
Operation ival-add, time spent: 11.0ms, 5.0% of total-time
Operation ival-sub, time spent: 10.0ms, 5.0% of total-time
Operation ival-and, time spent: 9.0ms, 4.0% of total-time
Operation ival-pi, time spent: 8.0ms, 4.0% of total-time
Operation const, time spent: 7.0ms, 3.0% of total-time

sample5.8s (31.5%)

Results
3.9s8255×0valid
1.4s2039×0precondition
0.0ms0valid
Precisions
Click to see histograms. Total time spent on operations: 3.0s
Operation ival-<=, time spent: 740.0ms, 25.0% of total-time
Operation ival-mult, time spent: 598.0ms, 20.0% of total-time
Operation ival-sin, time spent: 516.0ms, 17.0% of total-time
Operation ival-div, time spent: 476.0ms, 16.0% of total-time
Operation ival-sub, time spent: 191.0ms, 6.0% of total-time
Operation ival-add, time spent: 189.0ms, 6.0% of total-time
Operation ival-and, time spent: 94.0ms, 3.0% of total-time
Operation const, time spent: 86.0ms, 3.0% of total-time
Operation ival-pi, time spent: 60.0ms, 2.0% of total-time
Bogosity

preprocess4.5s (24.5%)

Algorithm
egg-herbie
Rules
1033×fma-def
498×unsub-neg
395×fma-neg
334×distribute-lft-neg-out
299×associate-/l*
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(sin.f32 (*.f32 (-.f32 1 u) normAngle))
00-0-(-.f32 1 u)
00-0-(sin.f32 (*.f32 u normAngle))
00-0-(sin.f32 normAngle)
00-0-u
00-0-(*.f32 (-.f32 1 u) normAngle)
00-0-(*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle)))
00-0-(/.f32 1 (sin.f32 normAngle))
00-0-normAngle
00-0-(*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i)
00-0-n0_i
00-0-(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
00-0-(*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle)))
00-0-n1_i
00-0-(*.f32 u normAngle)
00-0-(*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i)
00-0-1
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01151608
13041404
28321320
325181170
454221170
Stop Event
node limit
Calls
Call 1
Inputs
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) (neg.f32 normAngle))) (/.f32 1 (sin.f32 (neg.f32 normAngle)))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u (neg.f32 normAngle))) (/.f32 1 (sin.f32 (neg.f32 normAngle)))) n1_i))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 (neg.f32 u)) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 (neg.f32 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) (neg.f32 n0_i)) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) (neg.f32 n1_i)))
(neg.f32 (+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) (neg.f32 normAngle))) (/.f32 1 (sin.f32 (neg.f32 normAngle)))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u (neg.f32 normAngle))) (/.f32 1 (sin.f32 (neg.f32 normAngle)))) n1_i)))
(neg.f32 (+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 (neg.f32 u)) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 (neg.f32 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i)))
(neg.f32 (+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) (neg.f32 n0_i)) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i)))
(neg.f32 (+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) (neg.f32 n1_i))))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 normAngle) u)) (/.f32 1 (sin.f32 u))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 normAngle u)) (/.f32 1 (sin.f32 u))) n1_i))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) n0_i)) (/.f32 1 (sin.f32 n0_i))) normAngle) (*.f32 (*.f32 (sin.f32 (*.f32 u n0_i)) (/.f32 1 (sin.f32 n0_i))) n1_i))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) n1_i)) (/.f32 1 (sin.f32 n1_i))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u n1_i)) (/.f32 1 (sin.f32 n1_i))) normAngle))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 n0_i) normAngle)) (/.f32 1 (sin.f32 normAngle))) u) (*.f32 (*.f32 (sin.f32 (*.f32 n0_i normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 n1_i) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 n1_i normAngle)) (/.f32 1 (sin.f32 normAngle))) u))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i))
Outputs
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) (*.f32 (/.f32 1 (sin.f32 normAngle)) n1_i)))
(fma.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i (/.f32 (*.f32 n0_i (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle)))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) (*.f32 (/.f32 1 (sin.f32 normAngle)) n1_i)))
(fma.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i (/.f32 (*.f32 n0_i (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle)))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) (neg.f32 normAngle))) (/.f32 1 (sin.f32 (neg.f32 normAngle)))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u (neg.f32 normAngle))) (/.f32 1 (sin.f32 (neg.f32 normAngle)))) n1_i))
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) (*.f32 (/.f32 1 (sin.f32 normAngle)) n1_i)))
(fma.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i (/.f32 (*.f32 n0_i (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle)))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 (neg.f32 u)) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 (neg.f32 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(fma.f32 (*.f32 (/.f32 1 (sin.f32 normAngle)) (sin.f32 (*.f32 normAngle (-.f32 1 (neg.f32 u))))) n0_i (*.f32 (sin.f32 (*.f32 u (neg.f32 normAngle))) (*.f32 (/.f32 1 (sin.f32 normAngle)) n1_i)))
(fma.f32 n0_i (/.f32 (sin.f32 (*.f32 normAngle (+.f32 1 u))) (sin.f32 normAngle)) (*.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) (neg.f32 n1_i)))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 n0_i (sin.f32 (*.f32 normAngle (+.f32 1 u)))) (*.f32 (sin.f32 (*.f32 u normAngle)) (neg.f32 n1_i))))
(/.f32 (-.f32 (*.f32 n0_i (sin.f32 (fma.f32 u normAngle normAngle))) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) (neg.f32 n0_i)) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) (neg.f32 n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) (*.f32 (/.f32 1 (sin.f32 normAngle)) n1_i)))
(-.f32 (/.f32 (*.f32 n1_i (sin.f32 (*.f32 u normAngle))) (sin.f32 normAngle)) (/.f32 (*.f32 n0_i (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle)))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i) (*.f32 n0_i (sin.f32 (*.f32 normAngle (+.f32 u -1))))))
(/.f32 (fma.f32 n0_i (sin.f32 (*.f32 normAngle (+.f32 u -1))) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) (neg.f32 n1_i)))
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) (*.f32 (/.f32 1 (sin.f32 normAngle)) (neg.f32 n1_i))))
(-.f32 (/.f32 (*.f32 n0_i (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle)) (/.f32 (*.f32 n1_i (sin.f32 (*.f32 u normAngle))) (sin.f32 normAngle)))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (-.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
(/.f32 (-.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
(neg.f32 (+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) (neg.f32 normAngle))) (/.f32 1 (sin.f32 (neg.f32 normAngle)))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u (neg.f32 normAngle))) (/.f32 1 (sin.f32 (neg.f32 normAngle)))) n1_i)))
(neg.f32 (fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) (neg.f32 normAngle))) (/.f32 1 (neg.f32 (sin.f32 normAngle)))) n0_i (*.f32 n1_i (/.f32 (*.f32 (sin.f32 (*.f32 u (neg.f32 normAngle))) 1) (neg.f32 (sin.f32 normAngle))))))
(neg.f32 (fma.f32 n0_i (/.f32 (sin.f32 (*.f32 (-.f32 1 u) (neg.f32 normAngle))) (neg.f32 (sin.f32 normAngle))) (/.f32 (*.f32 (neg.f32 (sin.f32 (*.f32 u normAngle))) n1_i) (neg.f32 (sin.f32 normAngle)))))
(neg.f32 (*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i))))
(neg.f32 (/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle)))
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (neg.f32 (sin.f32 normAngle)))
(neg.f32 (+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 (neg.f32 u)) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 (neg.f32 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i)))
(neg.f32 (fma.f32 (*.f32 (/.f32 1 (sin.f32 normAngle)) (sin.f32 (*.f32 normAngle (-.f32 1 (neg.f32 u))))) n0_i (*.f32 (sin.f32 (*.f32 u (neg.f32 normAngle))) (*.f32 (/.f32 1 (sin.f32 normAngle)) n1_i))))
(-.f32 (/.f32 (*.f32 n1_i (sin.f32 (*.f32 u normAngle))) (sin.f32 normAngle)) (*.f32 n0_i (/.f32 (sin.f32 (*.f32 normAngle (+.f32 1 u))) (sin.f32 normAngle))))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (-.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i) (*.f32 n0_i (sin.f32 (*.f32 normAngle (+.f32 1 u))))))
(/.f32 (-.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i) (*.f32 n0_i (sin.f32 (fma.f32 u normAngle normAngle)))) (sin.f32 normAngle))
(neg.f32 (+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) (neg.f32 n0_i)) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i)))
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) (*.f32 (/.f32 1 (sin.f32 normAngle)) (neg.f32 n1_i))))
(-.f32 (/.f32 (*.f32 n0_i (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle)) (/.f32 (*.f32 n1_i (sin.f32 (*.f32 u normAngle))) (sin.f32 normAngle)))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (-.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
(/.f32 (-.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
(neg.f32 (+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) (neg.f32 n1_i))))
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) (neg.f32 n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) (*.f32 (/.f32 1 (sin.f32 normAngle)) n1_i)))
(-.f32 (/.f32 (*.f32 n1_i (sin.f32 (*.f32 u normAngle))) (sin.f32 normAngle)) (/.f32 (*.f32 n0_i (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle)))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i) (*.f32 n0_i (sin.f32 (*.f32 normAngle (+.f32 u -1))))))
(/.f32 (fma.f32 n0_i (sin.f32 (*.f32 normAngle (+.f32 u -1))) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 normAngle) u)) (/.f32 1 (sin.f32 u))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 normAngle u)) (/.f32 1 (sin.f32 u))) n1_i))
(fma.f32 (*.f32 (sin.f32 (*.f32 u (-.f32 1 normAngle))) (/.f32 1 (sin.f32 u))) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) (*.f32 (/.f32 1 (sin.f32 u)) n1_i)))
(fma.f32 n0_i (/.f32 (sin.f32 (*.f32 u (-.f32 1 normAngle))) (sin.f32 u)) (/.f32 (*.f32 n1_i (sin.f32 (*.f32 u normAngle))) (sin.f32 u)))
(*.f32 (/.f32 1 (sin.f32 u)) (+.f32 (*.f32 n0_i (sin.f32 (*.f32 u (-.f32 1 normAngle)))) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
(/.f32 (fma.f32 n0_i (sin.f32 (*.f32 u (-.f32 1 normAngle))) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 u))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) n0_i)) (/.f32 1 (sin.f32 n0_i))) normAngle) (*.f32 (*.f32 (sin.f32 (*.f32 u n0_i)) (/.f32 1 (sin.f32 n0_i))) n1_i))
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) n0_i)) (/.f32 1 (sin.f32 n0_i))) normAngle (*.f32 n1_i (*.f32 (/.f32 1 (sin.f32 n0_i)) (sin.f32 (*.f32 u n0_i)))))
(fma.f32 n1_i (/.f32 (sin.f32 (*.f32 u n0_i)) (sin.f32 n0_i)) (/.f32 (*.f32 normAngle (sin.f32 (*.f32 (-.f32 1 u) n0_i))) (sin.f32 n0_i)))
(*.f32 (/.f32 1 (sin.f32 n0_i)) (+.f32 (*.f32 normAngle (sin.f32 (*.f32 (-.f32 1 u) n0_i))) (*.f32 n1_i (sin.f32 (*.f32 u n0_i)))))
(/.f32 (fma.f32 normAngle (sin.f32 (*.f32 (-.f32 1 u) n0_i)) (*.f32 n1_i (sin.f32 (*.f32 u n0_i)))) (sin.f32 n0_i))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) n1_i)) (/.f32 1 (sin.f32 n1_i))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u n1_i)) (/.f32 1 (sin.f32 n1_i))) normAngle))
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) n1_i)) (/.f32 1 (sin.f32 n1_i))) n0_i (*.f32 normAngle (*.f32 (/.f32 1 (sin.f32 n1_i)) (sin.f32 (*.f32 u n1_i)))))
(fma.f32 normAngle (/.f32 (sin.f32 (*.f32 u n1_i)) (sin.f32 n1_i)) (*.f32 n0_i (/.f32 (sin.f32 (*.f32 (-.f32 1 u) n1_i)) (sin.f32 n1_i))))
(*.f32 (/.f32 1 (sin.f32 n1_i)) (+.f32 (*.f32 n0_i (sin.f32 (*.f32 (-.f32 1 u) n1_i))) (*.f32 normAngle (sin.f32 (*.f32 u n1_i)))))
(/.f32 (fma.f32 normAngle (sin.f32 (*.f32 u n1_i)) (*.f32 n0_i (sin.f32 (*.f32 (-.f32 1 u) n1_i)))) (sin.f32 n1_i))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 n0_i) normAngle)) (/.f32 1 (sin.f32 normAngle))) u) (*.f32 (*.f32 (sin.f32 (*.f32 n0_i normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(fma.f32 (*.f32 (/.f32 1 (sin.f32 normAngle)) (sin.f32 (*.f32 normAngle (-.f32 1 n0_i)))) u (*.f32 n1_i (*.f32 (/.f32 1 (sin.f32 normAngle)) (sin.f32 (*.f32 normAngle n0_i)))))
(fma.f32 (sin.f32 (*.f32 normAngle (-.f32 1 n0_i))) (/.f32 u (sin.f32 normAngle)) (*.f32 n1_i (/.f32 (sin.f32 (*.f32 normAngle n0_i)) (sin.f32 normAngle))))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 u (sin.f32 (*.f32 normAngle (-.f32 1 n0_i)))) (*.f32 n1_i (sin.f32 (*.f32 normAngle n0_i)))))
(/.f32 (fma.f32 u (sin.f32 (*.f32 normAngle (-.f32 1 n0_i))) (*.f32 n1_i (sin.f32 (*.f32 normAngle n0_i)))) (sin.f32 normAngle))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 n1_i) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 n1_i normAngle)) (/.f32 1 (sin.f32 normAngle))) u))
(fma.f32 (*.f32 (/.f32 1 (sin.f32 normAngle)) (sin.f32 (*.f32 normAngle (-.f32 1 n1_i)))) n0_i (*.f32 u (/.f32 (*.f32 (sin.f32 (*.f32 normAngle n1_i)) 1) (sin.f32 normAngle))))
(fma.f32 u (/.f32 (sin.f32 (*.f32 normAngle n1_i)) (sin.f32 normAngle)) (*.f32 n0_i (/.f32 (sin.f32 (*.f32 normAngle (-.f32 1 n1_i))) (sin.f32 normAngle))))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 n0_i (sin.f32 (*.f32 normAngle (-.f32 1 n1_i)))) (*.f32 u (sin.f32 (*.f32 normAngle n1_i)))))
(/.f32 (fma.f32 n0_i (sin.f32 (*.f32 normAngle (-.f32 1 n1_i))) (*.f32 u (sin.f32 (*.f32 normAngle n1_i)))) (sin.f32 normAngle))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i))
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i (*.f32 n0_i (*.f32 (/.f32 1 (sin.f32 normAngle)) (sin.f32 (*.f32 u normAngle)))))
(fma.f32 (/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n1_i (*.f32 n0_i (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle))))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n1_i) (*.f32 n0_i (sin.f32 (*.f32 u normAngle)))))
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n1_i (*.f32 n0_i (sin.f32 (*.f32 u normAngle)))) (sin.f32 normAngle))
Symmetry

(abs normAngle)

Compiler

Compiled 241 to 130 computations (46.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 3.1s
Operation ival-sin, time spent: 1.9s, 61.0% of total-time
Operation ival-mult, time spent: 443.0ms, 14.0% of total-time
Operation ival-sub, time spent: 382.0ms, 12.0% of total-time
Operation ival-div, time spent: 272.0ms, 9.0% of total-time
Operation ival-add, time spent: 76.0ms, 2.0% of total-time
Operation const, time spent: 45.0ms, 1.0% of total-time

eval1.0ms (0%)

Compiler

Compiled 85 to 43 computations (49.4% saved)

prune6.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
79.5%
(fma.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i (/.f32 (*.f32 n0_i (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle)))
96.7%
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) (*.f32 (/.f32 1 (sin.f32 normAngle)) n1_i)))
73.7%
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
96.9%
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
73.5%
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
Compiler

Compiled 252 to 170 computations (32.5% saved)

localize7.0s (38.2%)

Compiler

Compiled 410 to 176 computations (57.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 4.8s
Operation ival-sin, time spent: 2.2s, 47.0% of total-time
Operation ival-mult, time spent: 1.0s, 21.0% of total-time
Operation ival-sub, time spent: 900.0ms, 19.0% of total-time
Operation ival-div, time spent: 337.0ms, 7.0% of total-time
Operation ival-fma, time spent: 101.0ms, 2.0% of total-time
Operation ival-add, time spent: 90.0ms, 2.0% of total-time
Operation const, time spent: 67.0ms, 1.0% of total-time

eval0.0ms (0%)

Compiler

Compiled 4 to 4 computations (0% saved)

prune5.0ms (0%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New000
Fresh000
Picked055
Done000
Total055
Accuracy
97.6%
Counts
5 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
79.5%
(fma.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i (/.f32 (*.f32 n0_i (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle)))
96.7%
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) (*.f32 (/.f32 1 (sin.f32 normAngle)) n1_i)))
73.7%
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
96.9%
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
73.5%
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
Compiler

Compiled 236 to 141 computations (40.3% saved)

regimes29.0ms (0.2%)

Counts
5 → 1
Calls
Call 1
Inputs
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(fma.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i (/.f32 (*.f32 n0_i (sin.f32 (*.f32 (-.f32 1 u) normAngle))) (sin.f32 normAngle)))
(fma.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) (*.f32 (/.f32 1 (sin.f32 normAngle)) n1_i)))
Outputs
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
Calls

5 calls:

8.0ms
n1_i
5.0ms
normAngle
5.0ms
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
5.0ms
u
4.0ms
n0_i
Results
AccuracySegmentsBranch
96.9%1normAngle
96.9%1u
96.9%1n0_i
96.9%1n1_i
96.9%1(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
Compiler

Compiled 49 to 36 computations (26.5% saved)

regimes13.0ms (0.1%)

Counts
2 → 1
Calls
Call 1
Inputs
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
Outputs
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
Calls

4 calls:

3.0ms
n1_i
3.0ms
normAngle
3.0ms
u
3.0ms
n0_i
Results
AccuracySegmentsBranch
73.7%1normAngle
73.7%1u
73.7%1n0_i
73.7%1n1_i
Compiler

Compiled 20 to 16 computations (20% saved)

regimes15.0ms (0.1%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
Outputs
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
Calls

4 calls:

7.0ms
u
3.0ms
n1_i
3.0ms
n0_i
3.0ms
normAngle
Results
AccuracySegmentsBranch
73.5%1n0_i
73.5%1normAngle
73.5%1n1_i
73.5%1u
Compiler

Compiled 20 to 16 computations (20% saved)

simplify6.0ms (0%)

Algorithm
egg-herbie
Rules
10×*-commutative
+-commutative
1-exp
sub-neg
neg-mul-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
032255
150255
254255
356255
457255
Stop Event
done
saturated
Calls
Call 1
Inputs
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
Outputs
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle))) n1_i))
(+.f32 (*.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle))) n0_i) (*.f32 (*.f32 (/.f32 1 (sin.f32 normAngle)) (sin.f32 (*.f32 u normAngle))) n1_i))
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i) (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)))
(*.f32 (/.f32 1 (sin.f32 normAngle)) (+.f32 (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i) (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i)))
Compiler

Compiled 74 to 51 computations (31.1% saved)

soundness302.0ms (1.6%)

Rules
1033×fma-def
1033×fma-def
498×unsub-neg
498×unsub-neg
395×fma-neg
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01151608
13041404
28321320
325181170
454221170
01151608
13041404
28321320
325181170
454221170
Stop Event
node limit
node limit
Compiler

Compiled 391 to 200 computations (48.8% saved)

end0.0ms (0%)

preprocess48.0ms (0.3%)

Remove

(abs normAngle)

Compiler

Compiled 422 to 272 computations (35.5% saved)

Profiling

Loading profile data...