Herbie run

Date:Wednesday, June 5th, 2024
Commit:8a54fd57 on main
Hostname:nightly with Racket 8.11.1
Seed:2024157
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.4min)

simplify2.2min (23.5%)

Algorithm
268×egg-herbie
Rules
213074×fma-define
113926×distribute-lft-in
112704×times-frac
108902×*-commutative
103116×associate-*r*
Stop Event
69×saturated
199×node limit
Counts
100243 → 71536

sample1.6min (16.5%)

Results
1.2min247640×0valid
2.6s10625×0invalid
7.0ms40×1valid
Precisions
Click to see histograms. Total time spent on operations: 58.3s
ival-mult: 12.2s (21% of total)
ival-<=: 10.7s (18.3% of total)
...c/correct-round.rkt:168:19: 8.6s (14.8% of total)
ival-div: 5.3s (9.2% of total)
ival-add: 2.4s (4% of total)
ival-sin: 2.1s (3.5% of total)
ival-sub: 2.0s (3.5% of total)
ival-fabs: 2.0s (3.5% of total)
ival-sqrt: 1.6s (2.7% of total)
ival-and: 1.6s (2.7% of total)
ival-log: 1.5s (2.6% of total)
ival-floor: 1.2s (2% of total)
ival-cos: 997.0ms (1.7% of total)
ival-neg: 965.0ms (1.7% of total)
ival-exp: 830.0ms (1.4% of total)
ival-pi: 748.0ms (1.3% of total)
const: 611.0ms (1% of total)
ival-<: 409.0ms (0.7% of total)
ival-tan: 389.0ms (0.7% of total)
ival-if: 348.0ms (0.6% of total)
ival-fmax: 326.0ms (0.6% of total)
ival->: 304.0ms (0.5% of total)
ival-log2: 283.0ms (0.5% of total)
ival-assert: 255.0ms (0.4% of total)
ival-asin: 180.0ms (0.3% of total)
ival-==: 171.0ms (0.3% of total)
ival-atan: 122.0ms (0.2% of total)
ival-sinh: 91.0ms (0.2% of total)
ival->=: 80.0ms (0.1% of total)
adjust: 1.0ms (0% of total)
Bogosity

soundness1.3min (13.9%)

Rules
86274×fma-define
62240×associate-*r*
58126×*-commutative
57768×times-frac
48162×distribute-lft-in
Stop Event
saturated
150×node limit
29×fuel
done
Compiler

Compiled 69120 to 12049 computations (82.6% saved)

prune48.1s (8.5%)

Counts
142561 → 3955
Compiler

Compiled 368049 to 132120 computations (64.1% saved)

localize47.7s (8.4%)

Results
24.5s26405×0valid
4.1s554×5exit
3.6s2825×0invalid
2.3s680×1valid
Compiler

Compiled 103228 to 5581 computations (94.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 14.6s
ival-mult: 3.8s (25.8% of total)
ival-div: 1.7s (11.5% of total)
ival-pow: 1.5s (10.3% of total)
ival-add: 786.0ms (5.4% of total)
ival-fma: 691.0ms (4.7% of total)
ival-exp: 686.0ms (4.7% of total)
ival-sqrt: 620.0ms (4.2% of total)
adjust: 529.0ms (3.6% of total)
ival-sin: 512.0ms (3.5% of total)
...c/correct-round.rkt:168:19: 453.0ms (3.1% of total)
ival-log: 411.0ms (2.8% of total)
ival-hypot: 334.0ms (2.3% of total)
ival-sub: 294.0ms (2% of total)
ival-fmax: 286.0ms (2% of total)
ival-log1p: 274.0ms (1.9% of total)
ival-tan: 232.0ms (1.6% of total)
ival-floor: 216.0ms (1.5% of total)
ival-log2: 189.0ms (1.3% of total)
ival-neg: 172.0ms (1.2% of total)
ival-if: 153.0ms (1% of total)
ival-cos: 150.0ms (1% of total)
ival-pi: 119.0ms (0.8% of total)
const: 81.0ms (0.6% of total)
ival-atan: 70.0ms (0.5% of total)
ival-cbrt: 59.0ms (0.4% of total)
ival-true: 58.0ms (0.4% of total)
ival-expm1: 47.0ms (0.3% of total)
ival->=: 46.0ms (0.3% of total)
ival->: 39.0ms (0.3% of total)
ival-assert: 39.0ms (0.3% of total)
ival-asin: 34.0ms (0.2% of total)
ival-fabs: 31.0ms (0.2% of total)
ival-<: 14.0ms (0.1% of total)
ival-sinh: 12.0ms (0.1% of total)
ival-e: 8.0ms (0.1% of total)
ival-acos: 2.0ms (0% of total)

rewrite32.9s (5.8%)

Algorithm
119×batch-egg-rewrite
Rules
61141×log1p-expm1-u
49945×expm1-log1p-u
37209×pow1
35224×add-exp-log
35204×log-prod
Stop Event
119×node limit
Counts
1957 → 44735

series30.6s (5.4%)

Counts
1957 → 55508
Calls

13494 calls:

TimeVariablePointExpression
526.0ms
d
@0
(* (log (fmax (pow (sqrt (+ (* (* (floor d) dX.w) (* (floor d) dX.w)) (* (sqrt (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v)))) (sqrt (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))))))) 2) (pow (sqrt (+ (* (* (floor w) dY.u) (* (floor w) dY.u)) (* (* (floor h) dY.v) (* (floor h) dY.v)))) 2))) 1/2)
425.0ms
w
@-inf
(if (< (if (> (/ (fmax (pow (sqrt (+ (* (* dX.u (floor w)) (* dX.u (floor w))) (* (* (floor h) dX.v) (* (floor h) dX.v)))) 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 (+ (* (* (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 maxAniso)) (/ (fabs (- (* (* (floor w) dX.u) (* (floor h) dY.v)) (* (* (floor h) dX.v) (* (floor w) dY.u)))) (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))))))) 1) (fmax 1 (* (if (> (/ (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)))) (fabs (- (* (* (floor w) dX.u) (* (floor h) dY.v)) (* (* (floor h) dX.v) (* (floor w) dY.u))))) (floor maxAniso)) (floor maxAniso) (/ (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)))) (fabs (- (* (* (floor w) dX.u) (* (floor h) dY.v)) (* (* (floor h) dX.v) (* (floor w) dY.u)))))) (if (> (/ (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)))) (fabs (- (* (* (floor w) dX.u) (* (floor h) dY.v)) (* (* (floor h) dX.v) (* (floor w) dY.u))))) (floor maxAniso)) (/ (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 maxAniso)) (/ (fabs (- (* (* (floor w) dX.u) (* (floor h) dY.v)) (* (* (floor h) dX.v) (* (floor w) dY.u)))) (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))))))))) (if (> (/ (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)))) (fabs (- (* (* (floor w) dX.u) (* (floor h) dY.v)) (* (* (floor h) dX.v) (* (floor w) dY.u))))) (floor maxAniso)) (floor maxAniso) (/ (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)))) (fabs (- (* (* (floor w) dX.u) (* (floor h) dY.v)) (* (* (floor h) dX.v) (* (floor w) dY.u)))))))
414.0ms
dX.u
@0
(/ (* 1 (* (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)))))))
318.0ms
w
@-inf
(log (log2 (sqrt (fmax (pow (sqrt (+ (* (* (floor d) dX.w) (* (floor d) dX.w)) (* (sqrt (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v)))) (sqrt (+ (* (* (floor w) dX.u) (* (floor w) dX.u)) (* (* (floor h) dX.v) (* (floor h) dX.v))))))) 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)))))
304.0ms
maxAniso
@-inf
(* (if (> (/ (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)))) (fabs (- (* (* (floor w) dX.u) (* (floor h) dY.v)) (* (* (floor h) dX.v) (* (floor w) dY.u))))) (floor maxAniso)) (floor maxAniso) (/ (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)))) (fabs (- (* (* (floor w) dX.u) (* (floor h) dY.v)) (* (* (floor h) dX.v) (* (floor w) dY.u)))))) (if (> (/ (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)))) (fabs (- (* (* (floor w) dX.u) (* (floor h) dY.v)) (* (* (floor h) dX.v) (* (floor w) dY.u))))) (floor maxAniso)) (/ (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 maxAniso)) (/ (fabs (- (* (* (floor w) dX.u) (* (floor h) dY.v)) (* (* (floor h) dX.v) (* (floor w) dY.u)))) (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))))))))

eval27.5s (4.9%)

Compiler

Compiled 13642992 to 592838 computations (95.7% saved)

regimes27.0s (4.8%)

Counts
9412 → 387
Calls

145 calls:

839.0ms
(floor.f32 h)
670.0ms
dY.v
621.0ms
uy
598.0ms
dY.u
585.0ms
cosTheta_i
Compiler

Compiled 13047 to 9120 computations (30.1% saved)

analyze26.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
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
Compiler

Compiled 2586 to 1076 computations (58.4% saved)

explain10.9s (1.9%)

Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
log.f32#fsensitivity105968
-.f32#fcancellation40235
sqrt.f32#foflow-rescue3570
cos.f32(cos.f32 (atan.f32 (*.f32 (/.f32 alphay alphax) (tan.f32 (+.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) u1) (*.f32 #s(literal 1/2 binary32) (PI.f32)))))))sensitivity20120
tan.f32(tan.f32 (+.f32 (*.f32 (*.f32 #s(literal 2 binary32) (PI.f32)) u1) (*.f32 #s(literal 1/2 binary32) (PI.f32))))cancellation19615
/.f32#fo/n1260
exp.f32#fsensitivity3421
/.f32#fu/n230
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-rescue170
(*.f32 sinTheta_O sinTheta_O)underflow286
(-.f32 (*.f32 eta eta) (/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O)))))underflow17
(/.f32 (*.f32 sinTheta_O sinTheta_O) (sqrt.f32 (-.f32 #s(literal 1 binary32) (*.f32 sinTheta_O sinTheta_O))))underflow143
(*.f32 eta eta)underflow17
/.f32#fo/o100
*.f32#fn*o40
sin.f32#fcancellation20
/.f32(/.f32 (neg.f32 (log.f32 (-.f32 #s(literal 1 binary32) u0))) (+.f32 (/.f32 cos2phi (*.f32 alphax alphax)) (/.f32 sin2phi (*.f32 alphay alphay))))n/o20
(/.f32 sin2phi (*.f32 alphay alphay))overflow12
(+.f32 (/.f32 cos2phi (*.f32 alphax alphax)) (/.f32 sin2phi (*.f32 alphay alphay)))overflow12
*.f32(*.f32 (sin.f32 (*.f32 u normAngle)) (/.f32 #s(literal 1 binary32) (sin.f32 normAngle)))n*u10
Confusion
Predicted +Predicted -
+168758
-4175518
Precision
0.8018060836501901
Recall
0.9667621776504298
Confusion?
Predicted +Predicted MaybePredicted -
+16873424
-4171125406
Precision?
0.7648888888888888
Recall?
0.9862464183381089
Freqs
test
numberfreq
05576
11784
2310
310
Total Confusion?
Predicted +Predicted MaybePredicted -
+2110
-314
Precision?
0.8461538461538461
Recall?
1.0
Results
4.3s15282×0valid
68.0ms78×1valid
Compiler

Compiled 18280 to 2256 computations (87.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 1.9s
ival-mult: 691.0ms (37.1% of total)
ival-div: 238.0ms (12.8% of total)
ival-sub: 146.0ms (7.8% of total)
ival-add: 109.0ms (5.8% of total)
ival-sin: 96.0ms (5.2% of total)
ival-log: 88.0ms (4.7% of total)
ival-sqrt: 83.0ms (4.5% of total)
ival-floor: 47.0ms (2.5% of total)
ival-cos: 47.0ms (2.5% of total)
ival-exp: 46.0ms (2.5% of total)
ival-neg: 31.0ms (1.7% of total)
ival-pi: 28.0ms (1.5% of total)
...c/correct-round.rkt:168:19: 28.0ms (1.5% of total)
ival-true: 27.0ms (1.4% of total)
ival-tan: 20.0ms (1.1% of total)
ival-fmax: 18.0ms (1% of total)
ival-if: 18.0ms (1% of total)
ival-assert: 18.0ms (1% of total)
const: 17.0ms (0.9% of total)
ival-log2: 16.0ms (0.9% of total)
ival-fabs: 10.0ms (0.5% of total)
ival-sinh: 10.0ms (0.5% of total)
ival-atan: 8.0ms (0.4% of total)
ival->=: 7.0ms (0.4% of total)
ival->: 5.0ms (0.3% of total)
ival-asin: 5.0ms (0.3% of total)
adjust: 4.0ms (0.2% of total)
ival-<: 4.0ms (0.2% of total)

preprocess9.0s (1.6%)

Algorithm
30×egg-herbie
Rules
30620×fma-define
21784×fmm-def
14698×distribute-lft-neg-in
14266×unsub-neg
11858×distribute-rgt-neg-in
Stop Event
11×saturated
19×node limit
Compiler

Compiled 51492 to 17310 computations (66.4% saved)

bsearch46.0ms (0%)

Algorithm
60×binary-search
15×left-value
Stop Event
60×narrow-enough
Compiler

Compiled 3883 to 1916 computations (50.7% saved)

end0.0ms (0%)

Profiling

Loading profile data...