
| Date: | Thursday, August 22nd, 2024 |
|---|---|
| Commit: | efa1c98c on faster-localize |
| Hostname: | nightly with Racket 8.11.1 |
| Seed: | 2024235 |
| Parameters: | 256 points for 4 iterations |
| Flags: | localize:costslocalize:errorsreduce:regimesreduce:avg-errorreduce:binary-searchreduce:branch-expressionssetup:simplifysetup:searchrules:arithmeticrules:polynomialsrules:fractionsrules:exponentsrules:trigonometryrules:hyperbolicrules:numericsrules:specialrules:boolsrules:branchesgenerate:rrgenerate:taylorgenerate:simplifygenerate:proofs default |
Time bar (total: 9.9min)
Compiled 421 939 to 159 118 computations (62.3% saved)
| 52.6s | 247 603× | 0 | valid |
| 1.9s | 10 743× | 0 | invalid |
| 8.0ms | 77× | 1 | valid |
ival-mult: 9.4s (21.6% of total)const: 6.5s (14.9% of total)ival-<=: 6.2s (14.1% of total)ival-div: 4.4s (10% of total)ival-sin: 2.6s (5.9% of total)ival-sub: 1.7s (3.9% of total)ival-add: 1.6s (3.7% of total)ival-fabs: 1.4s (3.3% of total)ival-log: 1.4s (3.1% of total)ival-sqrt: 1.3s (3% of total)ival-and: 1.1s (2.6% of total)ival-exp: 825.0ms (1.9% of total)ival-cos: 779.0ms (1.8% of total)ival-floor: 682.0ms (1.6% of total)ival-neg: 587.0ms (1.3% of total)ival-pi: 586.0ms (1.3% of total)exact: 400.0ms (0.9% of total)ival-fmax: 354.0ms (0.8% of total)ival-tan: 322.0ms (0.7% of total)ival->: 272.0ms (0.6% of total)ival-if: 209.0ms (0.5% of total)ival-<: 206.0ms (0.5% of total)ival-log2: 188.0ms (0.4% of total)ival-==: 130.0ms (0.3% of total)ival-sinh: 120.0ms (0.3% of total)ival-atan: 119.0ms (0.3% of total)ival-asin: 110.0ms (0.3% of total)ival-assert: 90.0ms (0.2% of total)ival->=: 63.0ms (0.1% of total)adjust: 2.0ms (0% of total)| 269× | egg-herbie |
| 2 448 516× | lower-fma.f64 |
| 2 447 744× | lower-fma.f32 |
| 1 104 188× | lower-*.f64 |
| 1 100 980× | lower-*.f32 |
| 624 464× | lower-+.f64 |
| 363× | iter limit |
| 205× | node limit |
| 61× | saturated |
| 3× | unsound |
Compiled 38 571 791 to 483 040 computations (98.7% saved)
| 29.5s | 294× | 5 | exit |
| 12.2s | 26 779× | 0 | valid |
| 1.5s | 1 083× | 1 | valid |
| 923.0ms | 1 726× | 0 | invalid |
| 395.0ms | 762× | 0 | exit |
| 25.0ms | 76× | 1 | exit |
Compiled 142 028 to 6 436 computations (95.5% saved)
ival-sin: 24.6s (60.7% of total)ival-mult: 4.5s (11.2% of total)ival-cos: 3.8s (9.4% of total)ival-div: 1.9s (4.6% of total)ival-add: 1.2s (3% of total)const: 654.0ms (1.6% of total)adjust: 593.0ms (1.5% of total)ival-sub: 493.0ms (1.2% of total)ival-sqrt: 406.0ms (1% of total)ival-log: 323.0ms (0.8% of total)ival-exp: 305.0ms (0.8% of total)ival-pow2: 283.0ms (0.7% of total)ival-neg: 215.0ms (0.5% of total)ival-tan: 212.0ms (0.5% of total)ival-pow: 212.0ms (0.5% of total)ival-log1p: 112.0ms (0.3% of total)ival-pi: 100.0ms (0.2% of total)ival-if: 89.0ms (0.2% of total)ival-atan: 78.0ms (0.2% of total)ival-fmax: 75.0ms (0.2% of total)ival-floor: 71.0ms (0.2% of total)ival-log2: 67.0ms (0.2% of total)exact: 51.0ms (0.1% of total)ival-fabs: 42.0ms (0.1% of total)ival-true: 26.0ms (0.1% of total)ival-assert: 14.0ms (0% of total)ival->: 13.0ms (0% of total)ival-asin: 13.0ms (0% of total)ival-hypot: 11.0ms (0% of total)ival->=: 10.0ms (0% of total)ival-expm1: 10.0ms (0% of total)ival-acos: 9.0ms (0% of total)ival-sinh: 9.0ms (0% of total)ival-<: 4.0ms (0% of total)ival-e: 2.0ms (0% of total)| 1 603 184× | lower-fma.f64 |
| 1 602 704× | lower-fma.f32 |
| 994 194× | lower-*.f64 |
| 992 052× | lower-*.f32 |
| 499 966× | lower-+.f64 |
| 263× | iter limit |
| 180× | node limit |
| 28× | fuel |
| 1× | done |
Compiled 46 770 to 16 036 computations (65.7% saved)
144 calls:
| 1.8s | s |
| 1.3s | u1 |
| 1.2s | cosTheta_i |
| 1.2s | u2 |
| 850.0ms | (*.f32 (*.f32 uy #s(literal 2 binary32)) (PI.f32)) |
Compiled 35 875 to 21 268 computations (40.7% saved)
| 591 386× | lower-fma.f64 |
| 590 618× | lower-fma.f32 |
| 544 358× | lower-*.f64 |
| 541 260× | lower-*.f32 |
| 404 056× | lower-/.f64 |
| 243× | iter limit |
| 117× | node limit |
| 3× | unsound |
1245 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 398.0ms | dX.u | @ | inf | ((/ 1 (/ (sqrt (fmax (+ (pow (* dX.v (floor h)) 2) (pow (* dX.u (floor w)) 2)) (+ (pow (* dY.v (floor h)) 2) (pow (* dY.u (floor w)) 2)))) (* dY.v (floor h)))) (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v)) (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v)) (exp (* (log (* dY.v (floor h))) 2)) (exp (* (log (fmax (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (pow (* dY.u (floor w)) 2) (pow (* dY.v (floor h)) 2)))) 1/2)) (sqrt (fmax (+ (pow (* dX.v (floor h)) 2) (pow (* dX.u (floor w)) 2)) (+ (pow (* dY.v (floor h)) 2) (pow (* dY.u (floor w)) 2)))) (sqrt (fmax (+ (pow (* (floor h) dX.v) 2) (pow (* (floor w) dX.u) 2)) (+ (pow (* dY.u (floor w)) 2) (pow (* dY.v (floor h)) 2)))) (>= (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v)))) (pow (* dX.v (floor h)) 2) (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (sqrt (fmax (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))))) (>= (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (pow (* dY.u (floor w)) 2) (* (* (floor h) dY.v) (* (floor h) dY.v)))) (sqrt (fmax (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (exp (* (log (* dY.v (floor h))) 2))))) (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (log (fmax (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (pow (* dY.u (floor w)) 2) (pow (* dY.v (floor h)) 2)))) (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (sqrt (fmax (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v)))))) |
| 332.0ms | s | @ | -inf | ((neg (- (log (+ 1 (neg (* (* 16 u) u)))) (log (+ 1 (* 4 u))))) (neg (* (* 16 u) u)) (* (neg (- (log (+ 1 (neg (* (* 16 u) u)))) (log (+ 1 (* 4 u))))) s) (- (log (+ 1 (neg (* (* 16 u) u)))) (log (+ 1 (* 4 u)))) (* s (log (/ 1 (- 1 (* 4 u))))) (* (* (+ (* 8 u) 4) s) u) (* (+ (* 8 u) 4) s) (+ (* 8 u) 4) (+ (* (+ (* 64/3 u) 8) u) 4) (* s (log (/ 1 (- 1 (* 4 u))))) (log (/ 1 (- 1 (* 4 u)))) (* (+ (* (+ (* 64/3 u) 8) u) 4) u) (+ (* (+ (* (+ (* 64 (* u s)) (* 64/3 s)) u) (* 8 s)) u) (* 4 s)) (+ (* (+ (* 64 (* u s)) (* 64/3 s)) u) (* 8 s)) (+ (* 64 (* u s)) (* 64/3 s)) (* (neg (log (+ 1 (* -4 u)))) s) (log (/ 1 (+ (* u -4) 1))) (* s (log (/ 1 (+ (* u -4) 1)))) (/ 1 (+ (* u -4) 1)) (+ (* u -4) 1) (log (+ 1 (neg (* (* 16 u) u)))) (log (+ 1 (* 4 u))) (* (+ (* 64/3 u) 8) u) (* 64/3 s) (* (+ (* (+ (* (+ (* 64 (* u s)) (* 64/3 s)) u) (* 8 s)) u) (* 4 s)) u)) |
| 327.0ms | d | @ | inf | ((exp (+ (* (log (floor d)) 2) (* (log dX.w) 2))) (exp (* (log (* dY.v (floor h))) 2)) (* (* (floor d) dY.w) (* (floor d) dY.w)) (+ (* (log (floor d)) 2) (* (log dX.w) 2)) (log2 (sqrt (fmax (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w)))))) (sqrt (fmax (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w))))) (fmax (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w)))) (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (* (* (pow (floor h) 2) dX.v) dX.v) (* (* (pow (floor h) 2) dY.v) dY.v) (log2 (sqrt (fmax (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w)))))) (sqrt (fmax (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w))))) (+ (* (pow (floor d) 2) (* dX.w dX.w)) (pow (* (floor h) dX.v) 2)) (log2 (sqrt (fmax (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w)))))) (sqrt (fmax (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w))))) (exp (* (log (fmax (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w))))) 1/2)) (log2 (exp (* (log (fmax (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w))))) 1/2))) (* (log (fmax (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w))))) 1/2) (log (fmax (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w))))) (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (sqrt (fmax (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (exp (* (log (* dY.v (floor h))) 2))) (* (* (floor d) dY.w) (* (floor d) dY.w))))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w))) (pow (* dY.w (floor d)) 2) (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w))) (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w))) (pow (* (floor h) dX.v) 2) (+ (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (* (* (floor d) dY.w) (* (floor d) dY.w))) (+ (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (* (* (floor d) dX.w) (* (floor d) dX.w)))) |
| 283.0ms | v | @ | -inf | ((- (- (* cosTheta_O cosTheta_i) (* sinTheta_O sinTheta_i)) 1) (/ (exp (+ 6931/10000 (/ (- (- (* cosTheta_O cosTheta_i) (* sinTheta_O sinTheta_i)) 1) v))) (* 2 v)) (exp (+ 6931/10000 (/ (- (- (* cosTheta_O cosTheta_i) (* sinTheta_O sinTheta_i)) 1) v))) (+ 6931/10000 (/ (- (- (* cosTheta_O cosTheta_i) (* sinTheta_O sinTheta_i)) 1) v)) (* (* (exp 6931/10000) 1/2) (/ 1 v)) (exp (+ (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) (log (/ 1 (* 2 v))))) (* (exp 6931/10000) 1/2) (exp 6931/10000) (* (+ (* sinTheta_i sinTheta_O) 1) (/ -1 v)) (+ 6931/10000 (* (+ (* sinTheta_i sinTheta_O) 1) (/ -1 v))) (exp (+ (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) (log (/ 1 (* 2 v))))) (* (/ 1/2 v) (exp (+ 6931/10000 (* (+ (* sinTheta_i sinTheta_O) 1) (/ -1 v))))) (exp (+ (+ (log (/ 1/2 v)) (/ (+ (* cosTheta_i cosTheta_O) -1) v)) 6931/10000)) (log (/ 1/2 v)) (+ (log (/ 1/2 v)) (/ (+ (* cosTheta_i cosTheta_O) -1) v)) (exp (+ (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) (log (/ 1 (* 2 v))))) (exp (+ (+ (- (- (/ (* cosTheta_i cosTheta_O) v) (/ (* sinTheta_i sinTheta_O) v)) (/ 1 v)) 6931/10000) (log (/ 1 (* 2 v))))) (* (- (/ (/ (+ (* cosTheta_i cosTheta_O) -1) v) sinTheta_i) (/ sinTheta_O v)) sinTheta_i) (/ (/ (+ (* cosTheta_i cosTheta_O) -1) v) sinTheta_i) (/ 1 (* 2 v)) (- (* cosTheta_O cosTheta_i) (* sinTheta_O sinTheta_i)) (exp (+ 6931/10000 (* (+ (* sinTheta_i sinTheta_O) 1) (/ -1 v)))) (+ (+ (log (/ 1/2 v)) (/ (+ (* cosTheta_i cosTheta_O) -1) v)) 6931/10000) (log (/ 1 (* 2 v)))) |
| 262.0ms | dY.u | @ | 0 | ((/ 1 (/ (sqrt (fmax (+ (pow (* dX.v (floor h)) 2) (pow (* dX.u (floor w)) 2)) (+ (pow (* dY.v (floor h)) 2) (pow (* dY.u (floor w)) 2)))) (* dY.v (floor h)))) (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v)) (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v)) (exp (* (log (* dY.v (floor h))) 2)) (exp (* (log (fmax (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (pow (* dY.u (floor w)) 2) (pow (* dY.v (floor h)) 2)))) 1/2)) (sqrt (fmax (+ (pow (* dX.v (floor h)) 2) (pow (* dX.u (floor w)) 2)) (+ (pow (* dY.v (floor h)) 2) (pow (* dY.u (floor w)) 2)))) (sqrt (fmax (+ (pow (* (floor h) dX.v) 2) (pow (* (floor w) dX.u) 2)) (+ (pow (* dY.u (floor w)) 2) (pow (* dY.v (floor h)) 2)))) (>= (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v)))) (pow (* dX.v (floor h)) 2) (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (sqrt (fmax (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))))) (>= (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (pow (* dY.u (floor w)) 2) (* (* (floor h) dY.v) (* (floor h) dY.v)))) (sqrt (fmax (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (exp (* (log (* dY.v (floor h))) 2))))) (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (log (fmax (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (pow (* dY.u (floor w)) 2) (pow (* dY.v (floor h)) 2)))) (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))) (sqrt (fmax (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))) (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v)))))) |
| 30× | search |
| Probability | Valid | Unknown | Precondition | Infinite | Domain | Can't | Iter |
|---|---|---|---|---|---|---|---|
| 0% | 0% | 2.6% | 97.4% | 0% | 0% | 0% | 0 |
| 0% | 0% | 2.6% | 97.4% | 0% | 0% | 0% | 1 |
| 7.8% | 0.2% | 2.4% | 97.4% | 0% | 0% | 0% | 2 |
| 8.5% | 0.2% | 2.4% | 97.4% | 0% | 0% | 0% | 3 |
| 12.8% | 0.3% | 2.3% | 97.4% | 0% | 0% | 0% | 4 |
| 47% | 1.2% | 1.4% | 97.4% | 0% | 0% | 0% | 5 |
| 51.8% | 1.3% | 1.2% | 97.4% | 0% | 0.1% | 0% | 6 |
| 69.5% | 1.8% | 0.8% | 97.4% | 0% | 0.1% | 0% | 7 |
| 71.6% | 1.8% | 0.7% | 97.4% | 0% | 0.1% | 0% | 8 |
| 81.1% | 2.1% | 0.5% | 97.4% | 0% | 0.1% | 0% | 9 |
| 82.6% | 2.1% | 0.4% | 97.4% | 0% | 0.1% | 0% | 10 |
| 88.3% | 2.2% | 0.3% | 97.4% | 0% | 0.1% | 0% | 11 |
| 89.1% | 2.2% | 0.3% | 97.4% | 0% | 0.1% | 0% | 12 |
Compiled 2 586 to 1 076 computations (58.4% saved)
| 30× | egg-herbie |
| 132 696× | lower-fma.f64 |
| 132 696× | lower-fma.f32 |
| 46 474× | lower-*.f64 |
| 46 188× | lower-*.f32 |
| 27 984× | unsub-neg |
| 60× | iter limit |
| 31× | saturated |
| 29× | node limit |
Compiled 58 730 to 17 170 computations (70.8% saved)
| Operator | Subexpression | Explanation | Count | |
|---|---|---|---|---|
log.f32 | #f | sensitivity | 1029 | 84 |
-.f32 | #f | cancellation | 411 | 34 |
sqrt.f32 | #f | oflow-rescue | 350 | 0 |
tan.f32 | (tan.f32 (+.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) u1) (*.f32 #s(literal 1/2 binary32) (PI.f32)))) | cancellation | 176 | 19 |
cos.f32 | #f | sensitivity | 173 | 17 |
/.f32 | #f | o/n | 136 | 0 |
exp.f32 | #f | sensitivity | 35 | 25 |
sqrt.f32 | (sqrt.f32 (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))) | uflow-rescue | 15 | 0 |
| ↳ | (*.f32 sinTheta_O sinTheta_O) | underflow | 294 | |
| ↳ | (-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))) | underflow | 15 | |
| ↳ | (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))) | underflow | 147 | |
| ↳ | (*.f32 eta eta) | underflow | 15 | |
/.f32 | #f | u/n | 14 | 0 |
/.f32 | #f | o/o | 10 | 0 |
/.f32 | (/.f32 (neg.f32 (log.f32 (-.f32 #s(literal 1 binary32) u0))) (+.f32 (/.f32 cos2phi (*.f32 alphax alphax)) (/.f32 sin2phi (*.f32 alphay alphay)))) | n/o | 5 | 0 |
| ↳ | (/.f32 sin2phi (*.f32 alphay alphay)) | overflow | 12 | |
| ↳ | (+.f32 (/.f32 cos2phi (*.f32 alphax alphax)) (/.f32 sin2phi (*.f32 alphay alphay))) | overflow | 12 | |
*.f32 | #f | n*o | 3 | 0 |
*.f32 | (*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 #s(literal 1 binary32) (sin.f32 normAngle))) | n*u | 2 | 0 |
log.f32 | (log.f32 (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v))) | oflow-rescue | 1 | 0 |
| ↳ | (/.f32 #s(literal 1 binary32) (*.f32 #s(literal 2 binary32) v)) | overflow | 1 |
| Predicted + | Predicted - | |
|---|---|---|
| + | 1665 | 55 |
| - | 389 | 5571 |
| Predicted + | Predicted Maybe | Predicted - | |
|---|---|---|---|
| + | 1665 | 36 | 19 |
| - | 389 | 121 | 5450 |
| number | freq |
|---|---|
| 0 | 5626 |
| 1 | 1758 |
| 2 | 286 |
| 3 | 10 |
| Predicted + | Predicted Maybe | Predicted - | |
|---|---|---|---|
| + | 20 | 1 | 0 |
| - | 5 | 0 | 4 |
| 2.9s | 15 290× | 0 | valid |
| 21.0ms | 70× | 1 | valid |
Compiled 16 488 to 1 722 computations (89.6% saved)
ival-mult: 535.0ms (25% of total)ival-div: 482.0ms (22.5% of total)ival-sub: 271.0ms (12.7% of total)ival-log: 188.0ms (8.8% of total)ival-sin: 109.0ms (5.1% of total)ival-add: 90.0ms (4.2% of total)ival-cos: 76.0ms (3.5% of total)ival-pi: 60.0ms (2.8% of total)ival-sqrt: 59.0ms (2.8% of total)ival-floor: 44.0ms (2.1% of total)ival-exp: 41.0ms (1.9% of total)ival-fabs: 27.0ms (1.3% of total)ival-neg: 23.0ms (1.1% of total)const: 22.0ms (1% of total)ival-tan: 18.0ms (0.8% of total)ival-fmax: 15.0ms (0.7% of total)ival-true: 14.0ms (0.7% of total)ival-if: 13.0ms (0.6% of total)ival-log2: 13.0ms (0.6% of total)exact: 12.0ms (0.6% of total)ival-assert: 6.0ms (0.3% of total)ival-atan: 6.0ms (0.3% of total)ival-sinh: 5.0ms (0.2% of total)ival-asin: 4.0ms (0.2% of total)ival->=: 3.0ms (0.1% of total)adjust: 2.0ms (0.1% of total)ival->: 2.0ms (0.1% of total)ival-<: 1.0ms (0% of total)| 75× | left-value |
| 49× | binary-search |
| 49× | narrow-enough |
Compiled 5 601 to 2 985 computations (46.7% saved)
Loading profile data...