Curve intersection, scale width based on ribbon orientation

Time bar (total: 16.2s)

analyze572.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: 189.0ms
Operation ival-mult, time spent: 60.0ms, 32.0% of total-time
Operation ival-<=, time spent: 45.0ms, 24.0% of total-time
Operation ival-sin, time spent: 27.0ms, 14.0% of total-time
Operation ival-div, time spent: 21.0ms, 11.0% of total-time
Operation ival-sub, time spent: 9.0ms, 5.0% of total-time
Operation ival-and, time spent: 9.0ms, 5.0% of total-time
Operation const, time spent: 7.0ms, 4.0% of total-time
Operation ival-pi, time spent: 7.0ms, 4.0% of total-time
Operation ival-add, time spent: 6.0ms, 3.0% of total-time

sample6.1s (37.5%)

Results
4.3s8255×0valid
1.2s2134×0precondition
0.0ms0valid
Precisions
Click to see histograms. Total time spent on operations: 3.5s
Operation ival-mult, time spent: 825.0ms, 24.0% of total-time
Operation ival-<=, time spent: 612.0ms, 18.0% of total-time
Operation ival-sin, time spent: 599.0ms, 17.0% of total-time
Operation ival-sub, time spent: 579.0ms, 17.0% of total-time
Operation ival-div, time spent: 335.0ms, 10.0% of total-time
Operation ival-add, time spent: 216.0ms, 6.0% of total-time
Operation ival-and, time spent: 128.0ms, 4.0% of total-time
Operation const, time spent: 120.0ms, 3.0% of total-time
Operation ival-pi, time spent: 79.0ms, 2.0% of total-time
Bogosity

preprocess3.3s (20.6%)

Algorithm
egg-herbie
Rules
755×fma-neg
545×fma-define
506×times-frac
470×unsub-neg
316×distribute-lft-neg-out
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
13041396
28281320
324121170
445951170
577891170
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 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n0_i (*.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i))
(*.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 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n0_i (*.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i))
(*.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 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n0_i (*.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i))
(*.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)))
(fma.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i (/.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (neg.f32 n0_i)) (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 (sin.f32 (*.f32 u normAngle)) n1_i (*.f32 n0_i (sin.f32 (*.f32 normAngle (+.f32 u -1))))) (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))))
(fma.f32 (/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n0_i (*.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) (neg.f32 n1_i)))
(*.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))
(/.f32 (neg.f32 (fma.f32 (sin.f32 (*.f32 u normAngle)) n1_i (*.f32 n0_i (sin.f32 (*.f32 normAngle (+.f32 u -1)))))) (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 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i)))
(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 n0_i (sin.f32 (*.f32 normAngle (+.f32 u -1))) (*.f32 (sin.f32 (*.f32 u normAngle)) (neg.f32 n1_i))) (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 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i) (*.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))))
(fma.f32 (/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n0_i (*.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) (neg.f32 n1_i)))
(*.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))
(/.f32 (neg.f32 (fma.f32 (sin.f32 (*.f32 u normAngle)) n1_i (*.f32 n0_i (sin.f32 (*.f32 normAngle (+.f32 u -1)))))) (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)))
(fma.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i (/.f32 (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (neg.f32 n0_i)) (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 (sin.f32 (*.f32 u normAngle)) n1_i (*.f32 n0_i (sin.f32 (*.f32 normAngle (+.f32 u -1))))) (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 n1_i (/.f32 (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 normAngle (/.f32 (sin.f32 (*.f32 (-.f32 1 u) n0_i)) (sin.f32 n0_i)) (*.f32 n1_i (/.f32 (sin.f32 (*.f32 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 n0_i (sin.f32 (*.f32 (-.f32 1 u) n1_i)) (*.f32 normAngle (sin.f32 (*.f32 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 u (sin.f32 (*.f32 normAngle n1_i)) (*.f32 n0_i (sin.f32 (*.f32 normAngle (-.f32 1 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: 1.6s
Operation ival-mult, time spent: 452.0ms, 28.0% of total-time
Operation ival-sub, time spent: 446.0ms, 28.0% of total-time
Operation ival-sin, time spent: 369.0ms, 23.0% of total-time
Operation ival-div, time spent: 217.0ms, 14.0% of total-time
Operation ival-add, time spent: 60.0ms, 4.0% of total-time
Operation const, time spent: 55.0ms, 3.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
97.1%
(fma.f32 (/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n0_i (*.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i))
96.4%
(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)))
77.3%
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
96.5%
(+.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))
77.2%
(*.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)

localize5.4s (33.3%)

Compiler

Compiled 409 to 170 computations (58.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 3.1s
Operation ival-mult, time spent: 945.0ms, 31.0% of total-time
Operation ival-sub, time spent: 855.0ms, 28.0% of total-time
Operation ival-sin, time spent: 452.0ms, 15.0% of total-time
Operation ival-div, time spent: 307.0ms, 10.0% of total-time
Operation ival-add, time spent: 223.0ms, 7.0% of total-time
Operation composed, time spent: 211.0ms, 7.0% of total-time
Operation const, time spent: 88.0ms, 3.0% of total-time

eval0.0ms (0%)

Compiler

Compiled 4 to 4 computations (0% saved)

prune9.0ms (0.1%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New000
Fresh000
Picked055
Done000
Total055
Accuracy
97.3%
Counts
5 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
97.1%
(fma.f32 (/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n0_i (*.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i))
96.4%
(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)))
77.3%
(/.f32 (fma.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) n0_i (*.f32 (sin.f32 (*.f32 u normAngle)) n1_i)) (sin.f32 normAngle))
96.5%
(+.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))
77.2%
(*.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)

regimes30.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 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n0_i (*.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (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)))
Outputs
(fma.f32 (/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n0_i (*.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (sin.f32 normAngle)) n1_i))
Calls

5 calls:

8.0ms
n1_i
7.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))
4.0ms
n0_i
4.0ms
u
Results
AccuracySegmentsBranch
97.1%1normAngle
97.1%1u
97.1%1n0_i
97.1%1n1_i
97.1%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)

regimes25.0ms (0.2%)

Counts
3 → 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))
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:

10.0ms
n0_i
4.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))
3.0ms
n1_i
3.0ms
u
3.0ms
normAngle
Results
AccuracySegmentsBranch
96.5%1normAngle
96.5%1u
96.5%1n0_i
96.5%1n1_i
96.5%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)

regimes15.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:

5.0ms
n0_i
3.0ms
u
3.0ms
n1_i
3.0ms
normAngle
Results
AccuracySegmentsBranch
77.3%1normAngle
77.3%1u
77.3%1n0_i
77.3%1n1_i
Compiler

Compiled 20 to 16 computations (20% saved)

regimes13.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:

5.0ms
normAngle
3.0ms
n1_i
3.0ms
n0_i
2.0ms
u
Results
AccuracySegmentsBranch
77.2%1n0_i
77.2%1normAngle
77.2%1u
77.2%1n1_i
Compiler

Compiled 20 to 16 computations (20% saved)

simplify8.0ms (0%)

Algorithm
egg-herbie
Rules
11×*-commutative
+-commutative
1-exp
sub-neg
neg-sub0
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
036340
155340
259340
361340
462340
Stop Event
done
saturated
Calls
Call 1
Inputs
(fma.f32 (/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n0_i (*.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (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 (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
(fma.f32 (/.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (sin.f32 normAngle)) n0_i (*.f32 (/.f32 (sin.f32 (*.f32 u normAngle)) (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 n0_i (*.f32 (sin.f32 (*.f32 (-.f32 1 u) normAngle)) (/.f32 1 (sin.f32 normAngle)))) (*.f32 n1_i (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 1 (sin.f32 normAngle)))))
(/.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 98 to 66 computations (32.7% saved)

soundness624.0ms (3.8%)

Rules
755×fma-neg
755×fma-neg
755×fma-neg
545×fma-define
545×fma-define
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01151608
13041396
28281320
324121170
445951170
577891170
01151608
13041396
28281320
324121170
445951170
577891170
01151608
13041396
28281320
324121170
445951170
577891170
Stop Event
node limit
node limit
node limit
Compiler

Compiled 640 to 335 computations (47.7% saved)

end0.0ms (0%)

preprocess82.0ms (0.5%)

Remove

(abs normAngle)

Compiler

Compiled 470 to 278 computations (40.9% saved)

Profiling

Loading profile data...