Herbie run

Date:Tuesday, June 18th, 2024
Commit:2f9055fd on zane-job-abstraction3
Hostname:nightly with Racket 8.11.1
Seed:2024170
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: 8.8min)

simplify2.5min (28%)

Algorithm
243×egg-herbie
Rules
194190×fma-define
115288×distribute-lft-in
102302×*-commutative
102004×times-frac
98384×fmm-def
Stop Event
57×saturated
186×node limit
Counts
93799 → 64962

soundness1.5min (17.5%)

Rules
87784×fma-define
59370×associate-*r*
55984×*-commutative
53122×times-frac
50968×distribute-lft-in
Stop Event
saturated
143×node limit
27×fuel
Compiler

Compiled 49750 to 10118 computations (79.7% saved)

sample1.2min (13.2%)

Results
52.8s222853×0valid
10.0ms69×0invalid
8.0ms59×1valid
Precisions
Click to see histograms. Total time spent on operations: 43.5s
ival-mult: 9.4s (21.6% of total)
...in/eval/compile.rkt:77:19: 6.1s (14% of total)
ival-<=: 5.1s (11.6% of total)
ival-div: 4.5s (10.2% of total)
ival-fabs: 2.1s (4.9% of total)
ival-log: 1.8s (4.2% of total)
ival-sub: 1.7s (3.9% of total)
ival-sin: 1.6s (3.7% of total)
ival-add: 1.5s (3.5% of total)
ival-sqrt: 1.2s (2.8% of total)
ival-and: 1.2s (2.7% of total)
ival-exp: 1.1s (2.5% of total)
ival-floor: 1.1s (2.4% of total)
ival-cos: 1.0s (2.3% of total)
ival-pi: 769.0ms (1.8% of total)
ival-neg: 544.0ms (1.2% of total)
ival-fmax: 472.0ms (1.1% of total)
ival-==: 407.0ms (0.9% of total)
ival-tan: 382.0ms (0.9% of total)
...in/eval/compile.rkt:76:19: 271.0ms (0.6% of total)
ival-<: 256.0ms (0.6% of total)
ival-log2: 239.0ms (0.5% of total)
ival-if: 223.0ms (0.5% of total)
ival->: 181.0ms (0.4% of total)
ival-atan: 157.0ms (0.4% of total)
ival-assert: 116.0ms (0.3% of total)
ival-sinh: 86.0ms (0.2% of total)
ival->=: 60.0ms (0.1% of total)
adjust: 1.0ms (0% of total)
Bogosity

prune36.9s (7%)

Counts
128504 → 3690
Compiler

Compiled 331898 to 124513 computations (62.5% saved)

localize31.6s (6%)

Results
12.2s24948×0valid
2.8s623×5exit
878.0ms1458×0invalid
717.0ms619×1valid
Compiler

Compiled 103565 to 5339 computations (94.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 12.8s
ival-mult: 3.6s (28.2% of total)
ival-div: 1.7s (13.1% of total)
ival-pow: 895.0ms (7% of total)
ival-add: 783.0ms (6.1% of total)
ival-pow2: 696.0ms (5.4% of total)
ival-sin: 556.0ms (4.3% of total)
ival-sqrt: 455.0ms (3.6% of total)
ival-hypot: 443.0ms (3.5% of total)
ival-sub: 384.0ms (3% of total)
ival-exp: 340.0ms (2.7% of total)
ival-log: 319.0ms (2.5% of total)
adjust: 280.0ms (2.2% of total)
ival-log1p: 272.0ms (2.1% of total)
...in/eval/compile.rkt:77:19: 266.0ms (2.1% of total)
ival-cbrt: 237.0ms (1.9% of total)
ival-tan: 231.0ms (1.8% of total)
ival-cos: 224.0ms (1.8% of total)
ival-fmax: 160.0ms (1.3% of total)
ival-log2: 153.0ms (1.2% of total)
ival-neg: 140.0ms (1.1% of total)
ival-if: 126.0ms (1% of total)
ival-floor: 115.0ms (0.9% of total)
ival-expm1: 104.0ms (0.8% of total)
ival-atan: 81.0ms (0.6% of total)
ival-pi: 61.0ms (0.5% of total)
...in/eval/compile.rkt:76:19: 38.0ms (0.3% of total)
ival-fabs: 35.0ms (0.3% of total)
ival->=: 27.0ms (0.2% of total)
ival-true: 27.0ms (0.2% of total)
ival->: 22.0ms (0.2% of total)
ival-assert: 18.0ms (0.1% of total)
ival-sinh: 11.0ms (0.1% of total)
ival-<: 9.0ms (0.1% of total)
ival-e: 2.0ms (0% of total)

series31.5s (6%)

Counts
1797 → 53453
Calls

12897 calls:

TimeVariablePointExpression
413.0ms
h
@inf
(* (log (fmax (pow (sqrt (+ (* (* dX.v (floor h)) (* dX.v (floor h))) (* (* dX.w (floor d)) (* dX.w (floor d))))) 2) (pow (sqrt (+ (* (* (floor d) dY.w) (* (floor d) dY.w)) (* (sqrt (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v)))) (sqrt (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v))))))) 2))) 1/2)
348.0ms
dX.v
@0
(if (< (if (> (/ (fmax (+ (* (floor w) (* (* dX.u dX.u) (floor w))) (* dX.v (* dX.v (* (floor h) (floor h))))) (+ (* (floor w) (* (* dY.u dY.u) (floor w))) (* (* (floor h) (floor h)) (* dY.v dY.v)))) (fabs (* (floor w) (+ (* dY.v (* dX.u (floor h))) (* (* (floor h) (neg dX.v)) dY.u))))) (floor maxAniso)) (/ (sqrt (fmax (+ (* (floor w) (* (* dX.u dX.u) (floor w))) (* dX.v (* dX.v (* (floor h) (floor h))))) (+ (* (floor w) (* (* dY.u dY.u) (floor w))) (* (* (floor h) (floor h)) (* dY.v dY.v))))) (floor maxAniso)) (/ (fabs (* (floor w) (+ (* dY.v (* dX.u (floor h))) (* (* (floor h) (neg dX.v)) dY.u)))) (sqrt (fmax (+ (* (floor w) (* (* dX.u dX.u) (floor w))) (* dX.v (* dX.v (* (floor h) (floor h))))) (+ (* (floor w) (* (* dY.u dY.u) (floor w))) (* (* (floor h) (floor h)) (* dY.v dY.v))))))) 1) (fmax 1 (* (if (> (/ (fmax (pow (sqrt (+ (* (* (floor h) dX.v) (* (floor h) dX.v)) (* (* dX.u (floor w)) (* dX.u (floor w))))) 2) (pow (sqrt (+ (* (* dY.v (floor h)) (* dY.v (floor h))) (* (* (floor w) dY.u) (* (floor w) dY.u)))) 2)) (* (floor h) (* (floor w) (- (* dX.u dY.v) (* dX.v dY.u))))) (floor maxAniso)) (/ (sqrt (fmax (pow (sqrt (+ (* (* (floor h) dX.v) (* (floor h) dX.v)) (* (* dX.u (floor w)) (* dX.u (floor w))))) 2) (pow (sqrt (+ (* (* dY.v (floor h)) (* dY.v (floor h))) (* (* (floor w) dY.u) (* (floor w) dY.u)))) 2))) (floor maxAniso)) (/ (* (floor h) (* (floor w) (- (* dX.u dY.v) (* dX.v dY.u)))) (sqrt (fmax (pow (sqrt (+ (* (* (floor h) dX.v) (* (floor h) dX.v)) (* (* dX.u (floor w)) (* dX.u (floor w))))) 2) (pow (sqrt (+ (* (* dY.v (floor h)) (* dY.v (floor h))) (* (* (floor w) dY.u) (* (floor w) dY.u)))) 2))))) (if (> (/ (fmax (pow (sqrt (+ (* (* (floor h) dX.v) (* (floor h) dX.v)) (* (* dX.u (floor w)) (* dX.u (floor w))))) 2) (pow (sqrt (+ (* (* dY.v (floor h)) (* dY.v (floor h))) (* (* (floor w) dY.u) (* (floor w) dY.u)))) 2)) (* (floor h) (* (floor w) (- (* dX.u dY.v) (* dX.v dY.u))))) (floor maxAniso)) (floor maxAniso) (/ (fmax (pow (sqrt (+ (* (* (floor h) dX.v) (* (floor h) dX.v)) (* (* dX.u (floor w)) (* dX.u (floor w))))) 2) (pow (sqrt (+ (* (* dY.v (floor h)) (* dY.v (floor h))) (* (* (floor w) dY.u) (* (floor w) dY.u)))) 2)) (* (floor h) (* (floor w) (- (* dX.u dY.v) (* dX.v dY.u)))))))) (if (> (/ (fmax (+ (* (floor w) (* (* dX.u dX.u) (floor w))) (* dX.v (* dX.v (* (floor h) (floor h))))) (+ (* (floor w) (* (* dY.u dY.u) (floor w))) (* (* (floor h) (floor h)) (* dY.v dY.v)))) (fabs (* (floor w) (+ (* dY.v (* dX.u (floor h))) (* (* (floor h) (neg dX.v)) dY.u))))) (floor maxAniso)) (floor maxAniso) (/ (fmax (+ (* (floor w) (* (* dX.u dX.u) (floor w))) (* dX.v (* dX.v (* (floor h) (floor h))))) (+ (* (floor w) (* (* dY.u dY.u) (floor w))) (* (* (floor h) (floor h)) (* dY.v dY.v)))) (fabs (* (floor w) (+ (* dY.v (* dX.u (floor h))) (* (* (floor h) (neg dX.v)) dY.u)))))))
336.0ms
s
@0
(* s (- (log (+ 1 (* u 4))) (log (+ 1 (* (pow u 2) -16)))))
334.0ms
dX.v
@0
(if (>= (+ (* (* (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)))) (* (/ 1 (sqrt (fmax (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (pow dX.v 2) (pow (floor h) 2))) (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v)))))) (* (floor w) dX.u)) (* (/ 1 (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) dY.u)))
302.0ms
h
@-inf
(log2 (if (> (/ (fmax (pow (sqrt (+ (* (* dX.u (floor w)) (* dX.u (floor w))) (* (* dX.v (floor h)) (* dX.v (floor h))))) 2) (pow (sqrt (+ (* (* (floor h) dY.v) (* (floor h) dY.v)) (* (* (floor w) dY.u) (* (floor w) dY.u)))) 2)) (* (floor w) (* (floor h) (* dX.v (neg dY.u))))) (floor maxAniso)) (/ (sqrt (fmax (pow (sqrt (+ (* (* (floor h) dX.v) (* (floor h) dX.v)) (* (* dX.u (floor w)) (* dX.u (floor w))))) 2) (pow (sqrt (+ (* (* dY.v (floor h)) (* dY.v (floor h))) (* (* (floor w) dY.u) (* (floor w) dY.u)))) 2))) (floor maxAniso)) (* dX.u (* (sqrt (/ 1 (fmax (pow (sqrt (+ (* (* dX.u (floor w)) (* dX.u (floor w))) (* (* dX.v (floor h)) (* dX.v (floor h))))) 2) (pow (sqrt (+ (* (* (floor h) dY.v) (* (floor h) dY.v)) (* (* (floor w) dY.u) (* (floor w) dY.u)))) 2)))) (* (floor w) (* (floor h) dY.v))))))

rewrite27.3s (5.2%)

Algorithm
108×batch-egg-rewrite
Rules
54398×log1p-expm1-u
45555×expm1-log1p-u
33503×pow1
33076×log-prod
32210×add-exp-log
Stop Event
108×node limit
Counts
1797 → 40346

eval25.0s (4.8%)

Compiler

Compiled 11858095 to 538073 computations (95.5% saved)

analyze24.8s (4.7%)

Algorithm
30×search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%2.6%97.4%0%0%0%0
0%0%2.6%97.4%0%0%0%1
0%0%2.6%97.4%0%0%0%2
0%0%2.6%97.4%0%0%0%3
0.6%0%2.6%97.4%0%0%0%4
16.9%0.4%2.2%97.4%0%0%0%5
17.3%0.5%2.2%97.4%0%0%0%6
30.4%0.8%1.8%97.4%0%0%0%7
33.6%0.9%1.7%97.4%0%0%0%8
41.4%1.1%1.5%97.4%0%0%0%9
43.7%1.2%1.5%97.4%0%0%0%10
47.2%1.2%1.4%97.4%0%0%0%11
48.5%1.3%1.4%97.4%0%0%0%12
Compiler

Compiled 2586 to 1076 computations (58.4% saved)

regimes24.1s (4.6%)

Counts
8214 → 360
Calls

131 calls:

757.0ms
u1
715.0ms
(floor.f32 w)
649.0ms
u
634.0ms
(floor.f32 h)
604.0ms
(*.f32 (*.f32 uy #s(literal 2 binary32)) (PI.f32))
Compiler

Compiled 13330 to 9270 computations (30.5% saved)

preprocess8.2s (1.6%)

Algorithm
27×egg-herbie
Rules
27386×fma-define
17798×fmm-def
13540×distribute-lft-neg-in
12704×unsub-neg
11034×associate-*r*
Stop Event
11×saturated
16×node limit
Compiler

Compiled 53258 to 14994 computations (71.8% saved)

explain7.7s (1.5%)

Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
log.f32#fsensitivity101781
-.f32#fcancellation40728
sqrt.f32#foflow-rescue3120
cos.f32#fsensitivity18113
tan.f32(tan.f32 (+.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) u1) (*.f32 #s(literal 1/2 binary32) (PI.f32))))cancellation17918
/.f32#fo/n1100
exp.f32#fsensitivity2516
/.f32#fo/o60
/.f32#fu/n30
/.f32(/.f32 (neg.f32 (log.f32 (-.f32 #s(literal 1 binary32) u0))) (+.f32 (/.f32 cos2phi (*.f32 alphax alphax)) (/.f32 sin2phi (*.f32 alphay alphay))))n/o10
(/.f32 sin2phi (*.f32 alphay alphay))overflow11
(+.f32 (/.f32 cos2phi (*.f32 alphax alphax)) (/.f32 sin2phi (*.f32 alphay alphay)))overflow11
Confusion
Predicted +Predicted -
+161042
-3504910
Precision
0.8214285714285714
Recall
0.9745762711864406
Confusion?
Predicted +Predicted MaybePredicted -
+16103012
-3501124798
Precision?
0.780209324452902
Recall?
0.9927360774818402
Freqs
test
numberfreq
04952
11685
2269
36
Total Confusion?
Predicted +Predicted MaybePredicted -
+1712
-412
Precision?
0.782608695652174
Recall?
0.9
Results
2.2s13780×0valid
18.0ms44×1valid
Compiler

Compiled 17450 to 2040 computations (88.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 1.3s
ival-mult: 491.0ms (36.8% of total)
ival-div: 174.0ms (13% of total)
ival-add: 76.0ms (5.7% of total)
ival-log: 73.0ms (5.5% of total)
ival-sin: 67.0ms (5% of total)
ival-sub: 64.0ms (4.8% of total)
ival-sqrt: 61.0ms (4.6% of total)
ival-cos: 45.0ms (3.4% of total)
ival-floor: 43.0ms (3.2% of total)
ival-exp: 42.0ms (3.1% of total)
ival-neg: 34.0ms (2.5% of total)
ival-pi: 21.0ms (1.6% of total)
ival-tan: 19.0ms (1.4% of total)
ival-fmax: 18.0ms (1.3% of total)
...in/eval/compile.rkt:77:19: 17.0ms (1.3% of total)
ival-log2: 16.0ms (1.2% of total)
ival-if: 14.0ms (1% of total)
ival-true: 14.0ms (1% of total)
ival-assert: 9.0ms (0.7% of total)
ival-fabs: 9.0ms (0.7% of total)
...in/eval/compile.rkt:76:19: 8.0ms (0.6% of total)
ival-atan: 7.0ms (0.5% of total)
ival-sinh: 5.0ms (0.4% of total)
ival->=: 4.0ms (0.3% of total)
ival->: 3.0ms (0.2% of total)
adjust: 1.0ms (0.1% of total)
ival-<: 1.0ms (0.1% of total)

bsearch36.0ms (0%)

Algorithm
62×binary-search
18×left-value
Stop Event
62×narrow-enough
Compiler

Compiled 3599 to 1823 computations (49.3% saved)

end0.0ms (0%)

Profiling

Loading profile data...