Profiling results ----------------- Total cpu time observed: 1014106ms (out of 1021100ms) Number of samples taken: 2902 (once every 349ms) (Hiding functions with self<1.0% and local<2.0%: 30 of 303 hidden) ============================================================================================ Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ============================================================================================ ??? [65] 100.0% [1] 941194(92.8%) 0(0.0%) profile-thunk16 ...t/pkgs/profile-lib/main.rkt:9:0 run [18] 100.0% -------------------------------------------------------------------------------------------- ??? [65] 100.0% [2] 901610(88.9%) 368(0.0%) run-improve50 ...ie/develop/src/mainloop.rkt:234:0 get-final-combination [19] 51.8% for-loop [20] 47.8% loop [129] 0.4% setup-alt-simplified [34] 0.0% -------------------------------------------------------------------------------------------- ->flonum [225] 100.0% [3] 368598(36.3%) 0(0.0%) iterate-egraph!13 ...p/src/core/simplify.rkt:102:0 one-iter [21] 98.3% debug7 [54] 0.1% -------------------------------------------------------------------------------------------- ??? [220] 100.0% [4] 53310(5.3%) 0(0.0%) approximate9 ...e/develop/src/core/taylor.rkt:12:0 loop [22] 96.7% f45 [45] 2.7% taylor [163] 0.7% -------------------------------------------------------------------------------------------- hash-ref! [222] 100.0% [5] 47728(4.7%) 0(0.0%) ??? ...es/herbie/develop/src/core/taylor.rkt:44:15 ??? [40] 87.2% hash-ref! [222] 10.1% simplify [39] 2.7% -------------------------------------------------------------------------------------------- ->flonum [225] 100.0% [6] 42270(4.2%) 0(0.0%) loop ...herbie/develop/src/core/simplify.rkt:215:2 pass [23] 100.0% -------------------------------------------------------------------------------------------- hash-ref! [222] 100.0% [7] 40902(4.0%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:285:26 for-loop [24] 100.0% -------------------------------------------------------------------------------------------- hash-ref! [222] 100.0% [8] 37856(3.7%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:295:23 for-loop [25] 100.0% -------------------------------------------------------------------------------------------- hash-ref! [222] 100.0% [9] 31078(3.1%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:322:33 for-loop [26] 100.0% -------------------------------------------------------------------------------------------- hash-ref! [222] 100.0% [10] 22958(2.3%) 0(0.0%) ??? ...es/herbie/develop/src/core/taylor.rkt:67:15 ??? [220] 85.7% hash-ref! [222] 14.3% -------------------------------------------------------------------------------------------- hash-ref! [222] 100.0% [11] 20760(2.0%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:392:23 for-loop [27] 100.0% -------------------------------------------------------------------------------------------- loop [231] 100.0% [12] 5470(0.5%) 0(0.0%) for-loop ...ie/develop/src/core/simplify.rkt:173:2 eval-const-expr [28] 50.3% setfindf [29] 43.5% curried [252] 6.1% -------------------------------------------------------------------------------------------- copying-mergesort [114] 100.0% [13] 2152(0.2%) 0(0.0%) jloop ...t/collects/racket/private/sort.rkt:121:23 ??? [150] 100.0% -------------------------------------------------------------------------------------------- hash-ref! [222] 100.0% [14] 1766(0.2%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:483:23 for-loop [30] 100.0% -------------------------------------------------------------------------------------------- hash-ref! [222] 100.0% [15] 1422(0.1%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:338:33 for-loop [31] 100.0% -------------------------------------------------------------------------------------------- f45 [45] 100.0% [16] 992(0.1%) 0(0.0%) combine-mterms ...evelop/src/core/reduce.rkt:191:0 for-loop [32] 100.0% -------------------------------------------------------------------------------------------- hash-ref! [222] 100.0% [17] 328(0.0%) 0(0.0%) taylor-quotient ...velop/src/core/taylor.rkt:328:0 first-nonzero-exp [33] 100.0% -------------------------------------------------------------------------------------------- profile-thunk16 [1] 100.0% [18] 941194(92.8%) 0(0.0%) run ...share/racket/pkgs/profile-lib/main.rkt:39:2 ??? [65] 100.0% -------------------------------------------------------------------------------------------- run-improve50 [2] 100.0% [19] 467124(46.1%) 0(0.0%) get-final-combination ...op/src/mainloop.rkt:264:0 split-table [35] 99.9% ??? [220] 0.1% -------------------------------------------------------------------------------------------- run-improve50 [2] 99.2% [20] 434166(42.8%) 0(0.0%) for-loop ...herbie/develop/src/mainloop.rkt:249:10 run-iter! [36] 100.0% -------------------------------------------------------------------------------------------- iterate-egraph!13 [3] 100.0% [21] 362464(35.7%) 3156(0.3%) one-iter ...ie/develop/src/core/simplify.rkt:113:0 loop [37] 68.1% for-loop [38] 27.5% apply-match [47] 3.4% -------------------------------------------------------------------------------------------- approximate9 [4] 100.0% [22] 51548(5.1%) 0(0.0%) loop ...es/herbie/develop/src/core/taylor.rkt:86:4 ??? [220] 55.5% hash-ref! [222] 44.5% -------------------------------------------------------------------------------------------- loop [6] 100.0% [23] 42270(4.2%) 0(0.0%) pass ...herbie/develop/src/core/simplify.rkt:205:2 for-loop [41] 99.2% -------------------------------------------------------------------------------------------- ??? [7] 100.0% [24] 40902(4.0%) 358(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:285:52 ??? [40] 63.6% hash-ref! [222] 33.4% simplify [39] 2.8% -------------------------------------------------------------------------------------------- ??? [8] 100.0% [25] 37856(3.7%) 298(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:298:27 hash-ref! [222] 99.2% -------------------------------------------------------------------------------------------- ??? [9] 100.0% [26] 31078(3.1%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:324:46 hash-ref! [222] 100.0% -------------------------------------------------------------------------------------------- ??? [11] 100.0% [27] 20760(2.0%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:396:33 for-loop [42] 100.0% -------------------------------------------------------------------------------------------- for-loop [12] 100.0% [28] 2752(0.3%) 326(0.0%) eval-const-expr .../develop/src/programs.rkt:166:0 f45 [45] 37.1% ??? [155] 26.2% ??? [185] 24.9% -------------------------------------------------------------------------------------------- for-loop [12] 100.0% [29] 2382(0.2%) 1052(0.1%) setfindf ...es/herbie/develop/src/common.rkt:179:0 for-loop [43] 55.8% -------------------------------------------------------------------------------------------- ??? [14] 100.0% [30] 1766(0.2%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:487:35 parse-loop12 [151] 100.0% -------------------------------------------------------------------------------------------- ??? [15] 100.0% [31] 1422(0.1%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:341:46 hash-ref! [222] 100.0% -------------------------------------------------------------------------------------------- combine-mterms [16] 100.0% [32] 992(0.1%) 690(0.1%) for-loop ...rbie/develop/src/core/reduce.rkt:195:5 hash-ref! [222] 30.4% -------------------------------------------------------------------------------------------- taylor-quotient [17] 100.0% [33] 328(0.0%) 0(0.0%) first-nonzero-exp ...lop/src/core/taylor.rkt:260:0 hash-ref! [222] 100.0% -------------------------------------------------------------------------------------------- run-improve50 [2] 100.0% [34] 326(0.0%) 0(0.0%) setup-alt-simplified .../develop/src/glue.rkt:49:0 simplify-alt [44] 100.0% -------------------------------------------------------------------------------------------- get-final-combination [19] 100.0% [35] 466760(46.0%) 0(0.0%) split-table ...s/herbie/develop/src/glue.rkt:162:0 f45 [45] 99.9% ??? [190] 0.1% -------------------------------------------------------------------------------------------- for-loop [20] 100.0% [36] 434166(42.8%) 0(0.0%) run-iter! ...herbie/develop/src/mainloop.rkt:215:0 simplify! [46] 81.9% gen-series! [48] 12.4% finalize-iter! [50] 4.9% gen-rewrites! [52] 0.7% -------------------------------------------------------------------------------------------- one-iter [21] 100.0% [37] 246842(24.3%) 1026(0.1%) loop ...cket/collects/racket/private/map.rkt:52:19 apply-match [47] 99.6% -------------------------------------------------------------------------------------------- for-loop [38] 49.0% one-iter [21] 51.0% [38] 99696(9.8%) 21446(2.1%) for-loop ...e/develop/src/core/simplify.rkt:123:12 for-loop [38] 49.0% match-e [58] 38.9% ??? [98] 0.4% -------------------------------------------------------------------------------------------- parse-loop12 [151] 0.6% loop [231] 0.6% ??? [5] 2.6% for-loop [24] 4.0% hash-ref! [222] 88.7% [39] 50584(5.0%) 0(0.0%) simplify ...erbie/develop/src/core/reduce.rkt:16:0 f45 [45] 60.6% parse-loop12 [151] 30.0% debug-print [172] 4.7% simplify* [160] 1.9% simplify-node [153] 1.4% debug7 [54] 1.4% -------------------------------------------------------------------------------------------- ??? [5] 40.2% for-loop [24] 59.8% [40] 43386(4.3%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:288:19 hash-ref! [222] 100.0% -------------------------------------------------------------------------------------------- pass [23] 100.0% [41] 41944(4.1%) 324(0.0%) for-loop ...e/develop/src/core/simplify.rkt:208:29 argmin [49] 74.0% loop [51] 20.4% for-loop [53] 4.8% -------------------------------------------------------------------------------------------- for-loop [27] 100.0% [42] 20760(2.0%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:398:39 hash-ref! [222] 100.0% -------------------------------------------------------------------------------------------- setfindf [29] 100.0% [43] 1330(0.1%) 1330(0.1%) for-loop ...es/herbie/develop/src/common.rkt:180:2 -------------------------------------------------------------------------------------------- setup-alt-simplified [34] 100.0% [44] 326(0.0%) 0(0.0%) simplify-alt ...s/herbie/develop/src/glue.rkt:76:0 ->flonum [225] 100.0% -------------------------------------------------------------------------------------------- for-loop [162] 0.0% ->flonum [225] 0.0% rewriter [88] 0.0% ??? [154] 0.0% composed [240] 0.1% mterm->expr [206] 0.1% approximate9 [4] 0.1% hash-ref! [222] 0.1% simplify-node [153] 0.2% for-loop [215] 0.2% eval-const-expr [28] 0.2% append-map [61] 0.3% loop [231] 0.3% eval-prog [147] 0.6% parse-loop12 [151] 0.6% f45 [45] 1.5% simplify [39] 2.0% map [148] 2.9% split-table [35] 90.7% [45] 507654(50.1%) 4524(0.4%) f45 ...t/collects/racket/match/compiler.rkt:507:40 loop [231] 78.9% option-on-expr [55] 11.8% map [148] 5.5% f45 [45] 1.5% ??? [220] 0.5% append-map [61] 0.4% ??? [130] 0.2% parse-app [161] 0.1% ??? [190] 0.1% ...velop/src/common.rkt:47:2 [132] 0.1% parse-loop12 [151] 0.1% make-keyword-procedure [266] 0.1% composed [240] 0.1% combine-mterms [16] 0.1% expression->type [210] 0.1% ->flonum [225] 0.0% taylor [163] 0.0% variable? [82] 0.0% -------------------------------------------------------------------------------------------- run-iter! [36] 100.0% [46] 355426(35.0%) 0(0.0%) simplify! ...herbie/develop/src/mainloop.rkt:155:0 for-loop [56] 100.0% -------------------------------------------------------------------------------------------- one-iter [21] 4.8% loop [37] 95.2% [47] 258288(25.5%) 1038(0.1%) apply-match ...develop/src/core/simplify.rkt:130:2 for-loop [57] 87.3% match-e [58] 10.4% update-leader! [81] 1.2% reduce-to-single! [64] 0.7% -------------------------------------------------------------------------------------------- run-iter! [36] 100.0% [48] 53644(5.3%) 0(0.0%) gen-series! ...rbie/develop/src/mainloop.rkt:129:0 for-loop [59] 100.0% -------------------------------------------------------------------------------------------- for-loop [41] 100.0% [49] 31050(3.1%) 0(0.0%) argmin ...re/racket/collects/racket/list.rkt:743:0 for-loop [60] 90.2% expression-cost [62] 9.8% -------------------------------------------------------------------------------------------- run-iter! [36] 100.0% [50] 21120(2.1%) 0(0.0%) finalize-iter! ...e/develop/src/mainloop.rkt:169:0 ??? [190] 100.0% -------------------------------------------------------------------------------------------- for-loop [41] 100.0% [51] 8538(0.8%) 0(0.0%) loop ...hare/racket/collects/racket/list.rkt:729:4 for-loop [60] 88.1% expression-cost [62] 11.9% -------------------------------------------------------------------------------------------- run-iter! [36] 100.0% [52] 2962(0.3%) 0(0.0%) gen-rewrites! ...ie/develop/src/mainloop.rkt:142:0 for-loop [63] 100.0% -------------------------------------------------------------------------------------------- for-loop [41] 100.0% [53] 2032(0.2%) 2032(0.2%) for-loop ...e/develop/src/core/simplify.rkt:195:13 -------------------------------------------------------------------------------------------- iterate-egraph!13 [3] 31.5% simplify [39] 68.5% [54] 1040(0.1%) 678(0.1%) debug7 ...tlies/herbie/develop/src/debug.rkt:102:0 ??? [237] 34.8% -------------------------------------------------------------------------------------------- f45 [45] 13.0% loop [231] 87.0% [55] 466426(46.0%) 0(0.0%) option-on-expr ...velop/src/core/regimes.rkt:103:0 sindices->spoints [66] 96.8% sort-context-on-expr [71] 1.0% err-lsts->split-indices [72] 0.9% errors [214] 0.7% loop [231] 0.7% -------------------------------------------------------------------------------------------- simplify! [46] 100.0% [56] 355426(35.0%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:159:6 ??? [65] 100.0% -------------------------------------------------------------------------------------------- apply-match [47] 100.0% [57] 225462(22.2%) 674(0.1%) for-loop ...e/develop/src/core/simplify.rkt:145:10 mk-enode! [78] 26.9% merge-egraph-nodes! [68] 26.1% loop! [94] 22.2% substitute-e [70] 20.3% list-member? [236] 4.2% -------------------------------------------------------------------------------------------- apply-match [47] 16.1% for-loop [80] 25.7% for-loop [38] 58.1% [58] 104480(10.3%) 30504(3.0%) match-e ...herbie/develop/src/core/ematch.rkt:46:0 for-loop [67] 47.6% for-loop [80] 9.8% ??? [190] 8.3% list-cartesian-product [83] 4.1% variable? [82] 3.5% loop [231] 2.5% curry* [90] 0.6% -------------------------------------------------------------------------------------------- gen-series! [48] 100.0% [59] 53644(5.3%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:135:7 taylor-alt [69] 100.0% -------------------------------------------------------------------------------------------- loop [51] 21.2% argmin [49] 78.8% [60] 35528(3.5%) 680(0.1%) for-loop .../herbie/develop/src/programs.rkt:199:2 ->flonum [225] 66.3% ...velop/src/common.rkt:47:2 [132] 27.7% ??? [130] 4.1% -------------------------------------------------------------------------------------------- simplify-node [153] 10.5% f45 [45] 89.5% [61] 5698(0.6%) 366(0.0%) append-map ...acket/collects/racket/list.rkt:565:2 f45 [45] 54.2% parse-loop12 [151] 27.7% free-variables [75] 15.9% -------------------------------------------------------------------------------------------- loop [51] 25.0% argmin [49] 75.0% [62] 4060(0.4%) 0(0.0%) expression-cost .../develop/src/programs.rkt:198:0 compile [73] 100.0% -------------------------------------------------------------------------------------------- gen-rewrites! [52] 100.0% [63] 2962(0.3%) 0(0.0%) for-loop ...herbie/develop/src/mainloop.rkt:147:11 ??? [74] 100.0% -------------------------------------------------------------------------------------------- apply-match [47] 100.0% [64] 1740(0.2%) 690(0.1%) reduce-to-single! ...lop/src/core/egraph.rkt:324:0 for-loop [76] 60.3% -------------------------------------------------------------------------------------------- for-loop [56] 11.8% run [18] 41.1% [65] 1001540(98.8%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 41.1% run-improve50 [2] 39.3% ->flonum [225] 17.5% loop [129] 2.2% -------------------------------------------------------------------------------------------- option-on-expr [55] 100.0% [66] 451448(44.5%) 0(0.0%) sindices->spoints ...op/src/core/regimes.rkt:116:0 loop [77] 99.9% for-loop [91] 0.1% -------------------------------------------------------------------------------------------- match-e [58] 100.0% [67] 63122(6.2%) 24596(2.4%) for-loop ...rbie/develop/src/core/ematch.rkt:59:11 for-loop [80] 53.4% list-cartesian-product [83] 6.8% loop [231] 2.4% curry* [90] 1.1% foldl [247] 0.8% filter [248] 0.5% curried [252] 0.3% -------------------------------------------------------------------------------------------- for-loop [85] 3.7% merge-egraph-nodes! [68] 6.0% for-loop [57] 90.3% [68] 58882(5.8%) 1348(0.1%) merge-egraph-nodes! ...p/src/core/egraph.rkt:152:0 update-leader! [81] 46.7% loop! [94] 18.8% for-loop [84] 15.2% merge-egraph-nodes! [68] 6.0% for-loop [85] 5.1% enode-merge! [89] 4.8% make-sequence [263] 0.6% for-loop [118] 0.6% -------------------------------------------------------------------------------------------- for-loop [59] 100.0% [69] 53644(5.3%) 0(0.0%) taylor-alt ...es/herbie/develop/src/glue.rkt:134:0 for-loop [79] 99.4% expression->type [210] 0.6% -------------------------------------------------------------------------------------------- substitute-e [70] 4.6% for-loop [57] 95.4% [70] 45706(4.5%) 2482(0.2%) substitute-e ...e/develop/src/core/ematch.rkt:71:0 mk-enode! [78] 89.0% substitute-e [70] 4.6% variable? [82] 1.2% ??? [190] 0.9% -------------------------------------------------------------------------------------------- option-on-expr [55] 100.0% [71] 4596(0.5%) 0(0.0%) sort-context-on-expr ...velop/src/points.rkt:115:0 ??? [86] 100.0% -------------------------------------------------------------------------------------------- option-on-expr [55] 100.0% [72] 4160(0.4%) 370(0.0%) err-lsts->split-indices .../core/regimes.rkt:222:0 add-splitpoint [87] 91.1% -------------------------------------------------------------------------------------------- expression-cost [62] 100.0% [73] 4060(0.4%) 360(0.0%) compile ...s/herbie/develop/src/programs.rkt:175:0 hash-ref! [222] 91.1% -------------------------------------------------------------------------------------------- for-loop [63] 100.0% [74] 2962(0.3%) 0(0.0%) ??? ...ies/herbie/develop/src/alternative.rkt:88:0 rewriter [88] 100.0% -------------------------------------------------------------------------------------------- mterm->expr [206] 16.7% append-map [61] 83.3% [75] 1950(0.2%) 978(0.1%) free-variables ...e/develop/src/programs.rkt:100:0 variable? [82] 49.8% -------------------------------------------------------------------------------------------- reduce-to-single! [64] 100.0% [76] 1050(0.1%) 1050(0.1%) for-loop ...rbie/develop/src/core/egraph.rkt:325:8 -------------------------------------------------------------------------------------------- loop [77] 24.0% sindices->spoints [66] 76.0% [77] 451120(44.5%) 0(0.0%) loop ...cket/collects/racket/private/map.rkt:36:19 sidx->spoint [92] 76.0% loop [77] 24.0% -------------------------------------------------------------------------------------------- mk-egraph [241] 0.3% expr->enode [249] 2.2% substitute-e [70] 39.1% for-loop [57] 58.4% [78] 104006(10.3%) 5198(0.5%) mk-enode! ...bie/develop/src/core/egraph.rkt:101:0 new-enode [93] 91.7% hash-has-key? [199] 2.9% mutable-set [105] 0.3% -------------------------------------------------------------------------------------------- taylor-alt [69] 100.0% [79] 53310(5.3%) 0(0.0%) for-loop ...lies/herbie/develop/src/glue.rkt:139:6 ??? [220] 100.0% -------------------------------------------------------------------------------------------- match-e [58] 31.6% for-loop [67] 68.4% [80] 53270(5.3%) 3364(0.3%) for-loop ...rbie/develop/src/core/ematch.rkt:65:37 match-e [58] 90.4% ??? [98] 4.3% -------------------------------------------------------------------------------------------- apply-match [47] 9.4% merge-egraph-nodes! [68] 90.6% [81] 32958(3.2%) 3792(0.4%) update-leader! ...evelop/src/core/egraph.rkt:217:0 for-loop [95] 81.3% update-en-expr [144] 4.1% custom-set-union! [103] 2.1% hash-ref! [222] 1.0% -------------------------------------------------------------------------------------------- f45 [45] 2.7% expression->type [210] 5.5% free-variables [75] 7.7% substitute-e [70] 11.5% match-e [58] 72.6% [82] 12660(1.2%) 346(0.0%) variable? ...e/develop/src/syntax/syntax.rkt:567:0 ??? [190] 97.3% -------------------------------------------------------------------------------------------- list-cartesian-product [83] 25.3% match-e [58] 34.2% for-loop [67] 40.5% [83] 10976(1.1%) 9902(1.0%) list-cartesian-product ...src/core/ematch.rkt:20:0 list-cartesian-product [83] 25.3% for-loop [102] 6.5% -------------------------------------------------------------------------------------------- merge-egraph-nodes! [68] 100.0% [84] 9300(0.9%) 7526(0.7%) for-loop ...rbie/develop/src/core/egraph.rkt:232:6 update-en-expr [144] 19.1% -------------------------------------------------------------------------------------------- merge-egraph-nodes! [68] 100.0% [85] 5400(0.5%) 0(0.0%) for-loop ...bie/develop/src/core/egraph.rkt:200:10 merge-egraph-nodes! [68] 81.1% loop! [94] 18.9% -------------------------------------------------------------------------------------------- sort-context-on-expr [71] 100.0% [86] 4596(0.5%) 0(0.0%) ??? ...cket/collects/racket/private/sort.rkt:403:3 generic-sort/key [96] 92.2% loop [126] 7.8% -------------------------------------------------------------------------------------------- err-lsts->split-indices [72] 100.0% [87] 3790(0.4%) 0(0.0%) add-splitpoint ...velop/src/core/regimes.rkt:235:2 for-loop [97] 100.0% -------------------------------------------------------------------------------------------- ??? [74] 36.5% matcher [115] 63.5% [88] 2962(0.3%) 636(0.1%) rewriter ...bie/develop/src/core/matcher.rkt:131:2 for-loop [99] 68.7% *rules* [101] 13.4% expression->type [210] 6.1% f45 [45] 2.8% -------------------------------------------------------------------------------------------- merge-egraph-nodes! [68] 100.0% [89] 2810(0.3%) 706(0.1%) enode-merge! ...e/develop/src/core/enode.rkt:129:0 adopt-enode! [100] 62.3% custom-set-intersect! [106] 12.6% -------------------------------------------------------------------------------------------- match-e [58] 49.1% for-loop [67] 50.9% [90] 1356(0.1%) 1000(0.1%) curry* ...racket/collects/racket/function.rkt:44:2 procedure-arity [104] 26.3% -------------------------------------------------------------------------------------------- sindices->spoints [66] 100.0% [91] 328(0.0%) 0(0.0%) for-loop ...bie/develop/src/core/regimes.rkt:117:2 ??? [107] 100.0% -------------------------------------------------------------------------------------------- loop [77] 100.0% [92] 451120(44.5%) 0(0.0%) sidx->spoint ...develop/src/core/regimes.rkt:126:2 binary-search [108] 73.8% binary-search-floats [109] 26.2% -------------------------------------------------------------------------------------------- mk-enode! [78] 100.0% [93] 95420(9.4%) 332(0.0%) new-enode ...erbie/develop/src/core/enode.rkt:97:0 type-of-enode-expr [110] 97.9% set [113] 1.4% -------------------------------------------------------------------------------------------- for-loop [85] 1.0% merge-egraph-nodes! [68] 14.6% loop [231] 27.5% for-loop [57] 56.9% [94] 64934(6.4%) 7750(0.8%) loop! ...s/herbie/develop/src/core/enode.rkt:192:2 custom-set-union [111] 41.9% loop [231] 31.7% set [113] 13.5% update-en-expr [144] 5.9% -------------------------------------------------------------------------------------------- update-leader! [81] 100.0% [95] 26784(2.6%) 1054(0.1%) for-loop ...rbie/develop/src/core/egraph.rkt:222:6 for-loop [112] 96.1% -------------------------------------------------------------------------------------------- ??? [86] 100.0% [96] 4236(0.4%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:185:2 copying-mergesort [114] 91.5% loop [126] 8.5% -------------------------------------------------------------------------------------------- add-splitpoint [87] 100.0% [97] 3790(0.4%) 324(0.0%) for-loop ...bie/develop/src/core/regimes.rkt:237:4 for-loop [116] 73.4% loop [119] 18.0% -------------------------------------------------------------------------------------------- for-loop [38] 22.4% for-loop [80] 77.6% [98] 3156(0.3%) 1772(0.2%) ??? ...ies/herbie/develop/src/core/ematch.rkt:50:5 for-loop [117] 43.9% -------------------------------------------------------------------------------------------- rewriter [88] 100.0% [99] 2962(0.3%) 0(0.0%) for-loop ...ie/develop/src/core/matcher.rkt:134:10 matcher [115] 100.0% -------------------------------------------------------------------------------------------- enode-merge! [89] 100.0% [100] 1750(0.2%) 710(0.1%) adopt-enode! ...e/develop/src/core/enode.rkt:105:0 custom-set-union [111] 59.4% -------------------------------------------------------------------------------------------- rewriter [88] 100.0% [101] 1324(0.1%) 360(0.0%) *rules* ...rbie/develop/src/syntax/rules.rkt:484:0 for-loop [118] 72.8% -------------------------------------------------------------------------------------------- list-cartesian-product [83] 100.0% [102] 1074(0.1%) 1074(0.1%) for-loop ...erbie/develop/src/core/ematch.rkt:24:8 -------------------------------------------------------------------------------------------- update-leader! [81] 100.0% [103] 692(0.1%) 692(0.1%) custom-set-union! ...t/private/set-types.rkt:245:0 -------------------------------------------------------------------------------------------- curry* [90] 100.0% [104] 356(0.0%) 356(0.0%) procedure-arity ...ket/private/norm-arity.rkt:7:27 -------------------------------------------------------------------------------------------- mk-enode! [78] 100.0% [105] 356(0.0%) 0(0.0%) mutable-set .../racket/private/set-types.rkt:999:0 for-loop [120] 100.0% -------------------------------------------------------------------------------------------- enode-merge! [89] 100.0% [106] 354(0.0%) 354(0.0%) custom-set-intersect! ...ivate/set-types.rkt:269:0 -------------------------------------------------------------------------------------------- for-loop [91] 100.0% [107] 328(0.0%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:346:33 ->flonum [225] 100.0% -------------------------------------------------------------------------------------------- sidx->spoint [92] 100.0% [108] 332840(32.8%) 0(0.0%) binary-search ...rbie/develop/src/common.rkt:221:0 pred [121] 100.0% -------------------------------------------------------------------------------------------- sidx->spoint [92] 100.0% [109] 118280(11.7%) 0(0.0%) binary-search-floats ...velop/src/common.rkt:236:0 pred [121] 100.0% -------------------------------------------------------------------------------------------- new-enode [93] 100.0% [110] 93402(9.2%) 1678(0.2%) type-of-enode-expr ...elop/src/core/enode.rkt:68:0 get-sigs [122] 98.2% -------------------------------------------------------------------------------------------- adopt-enode! [100] 3.4% loop! [94] 96.6% [111] 30930(3.0%) 10346(1.0%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [124] 52.1% for-loop [125] 14.4% -------------------------------------------------------------------------------------------- for-loop [95] 100.0% [112] 25730(2.5%) 332(0.0%) for-loop ...rbie/develop/src/core/egraph.rkt:223:8 hash-update! [123] 98.7% -------------------------------------------------------------------------------------------- new-enode [93] 7.4% loop! [94] 92.6% [113] 17922(1.8%) 17922(1.8%) set ...collects/racket/private/set-types.rkt:981:0 -------------------------------------------------------------------------------------------- generic-sort/key [96] 47.8% copying-mergesort [114] 52.2% [114] 3876(0.4%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:130:8 copying-mergesort [114] 52.2% loop [126] 33.9% jloop [13] 13.9% -------------------------------------------------------------------------------------------- for-loop [127] 22.0% matcher [115] 26.3% for-loop [99] 51.7% [115] 2962(0.3%) 306(0.0%) matcher ...rbie/develop/src/core/matcher.rkt:167:2 rewriter [88] 48.3% matcher [115] 26.3% for-loop [127] 22.0% -------------------------------------------------------------------------------------------- for-loop [97] 100.0% [116] 2782(0.3%) 2782(0.3%) for-loop ...bie/develop/src/core/regimes.rkt:241:8 -------------------------------------------------------------------------------------------- ??? [98] 100.0% [117] 1384(0.1%) 688(0.1%) for-loop ...erbie/develop/src/core/ematch.rkt:51:7 ??? [190] 50.3% -------------------------------------------------------------------------------------------- merge-egraph-nodes! [68] 25.2% *rules* [101] 74.8% [118] 1288(0.1%) 668(0.1%) for-loop ...ies/herbie/develop/src/common.rkt:94:9 ormap [128] 48.1% -------------------------------------------------------------------------------------------- for-loop [97] 3.6% loop [119] 96.4% [119] 684(0.1%) 684(0.1%) loop ...hare/racket/collects/racket/list.rkt:154:2 loop [119] 96.4% -------------------------------------------------------------------------------------------- mutable-set [105] 100.0% [120] 356(0.0%) 356(0.0%) for-loop ...cts/racket/private/set-types.rkt:943:2 -------------------------------------------------------------------------------------------- binary-search-floats [109] 26.2% binary-search [108] 73.8% [121] 451120(44.5%) 0(0.0%) pred ...herbie/develop/src/core/regimes.rkt:132:17 loop [129] 97.5% errors [214] 2.4% -------------------------------------------------------------------------------------------- type-of-enode-expr [110] 100.0% [122] 91724(9.0%) 1692(0.2%) get-sigs .../herbie/develop/src/type-check.rkt:5:0 ??? [130] 48.3% ->flonum [225] 26.2% ...velop/src/common.rkt:47:2 [132] 12.6% ??? [190] 11.0% -------------------------------------------------------------------------------------------- for-loop [112] 100.0% [123] 25398(2.5%) 330(0.0%) hash-update! ...ket/private/more-scheme.rkt:362:13 ??? [131] 98.7% -------------------------------------------------------------------------------------------- custom-set-union [111] 100.0% [124] 16124(1.6%) 5382(0.5%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [133] 66.6% -------------------------------------------------------------------------------------------- custom-set-union [111] 100.0% [125] 4460(0.4%) 4460(0.4%) for-loop ...cts/racket/private/set-types.rkt:152:2 -------------------------------------------------------------------------------------------- generic-sort/key [96] 14.7% ??? [86] 14.7% copying-mergesort [114] 70.5% [126] 2444(0.2%) 0(0.0%) loop ...ket/collects/racket/private/sort.rkt:97:12 ??? [150] 100.0% -------------------------------------------------------------------------------------------- matcher [115] 100.0% [127] 1978(0.2%) 0(0.0%) for-loop ...ie/develop/src/core/matcher.rkt:183:21 matcher [115] 100.0% -------------------------------------------------------------------------------------------- for-loop [118] 100.0% [128] 620(0.1%) 322(0.0%) ormap ...et/collects/racket/private/map.rkt:105:13 flag-set? [134] 48.1% -------------------------------------------------------------------------------------------- run-improve50 [2] 0.7% ??? [65] 8.9% pred [121] 90.5% [129] 486128(47.9%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:193:2 loop [135] 92.3% loop [141] 4.7% make-exacts* [142] 2.9% for-loop [140] 0.1% -------------------------------------------------------------------------------------------- for-loop [60] 2.9% ??? [220] 3.5% f45 [45] 3.6% get-sigs [122] 89.9% [130] 49254(4.9%) 3042(0.3%) ??? ...ts/racket/contract/private/arr-i.rkt:804:10 ??? [138] 44.8% for-loop [137] 39.7% get/build-late-neg-projection [159] 5.7% ??? [259] 1.5% ??? [255] 0.7% -------------------------------------------------------------------------------------------- hash-update! [123] 100.0% [131] 25068(2.5%) 334(0.0%) ??? ...s/herbie/develop/src/core/egraph.rkt:225:24 for-loop [136] 98.7% -------------------------------------------------------------------------------------------- ??? [220] 3.0% f45 [45] 3.0% for-loop [60] 42.6% get-sigs [122] 50.0% [132] 23140(2.3%) 8006(0.8%) ...velop/src/common.rkt:47:2 ...e/arr-i.rkt:906:19 ??? [139] 36.8% ??? [201] 27.1% -------------------------------------------------------------------------------------------- for-loop [124] 100.0% [133] 10742(1.1%) 10742(1.1%) for-loop ...cts/racket/private/set-types.rkt:178:5 -------------------------------------------------------------------------------------------- ormap [128] 100.0% [134] 298(0.0%) 298(0.0%) flag-set? ...es/herbie/develop/src/config.rkt:32:0 -------------------------------------------------------------------------------------------- loop [129] 100.0% [135] 448640(44.2%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:151:2 eval-prog [147] 96.3% loop [141] 1.9% make-exacts* [142] 1.8% -------------------------------------------------------------------------------------------- ??? [131] 100.0% [136] 24734(2.4%) 20962(2.1%) for-loop ...bie/develop/src/core/egraph.rkt:226:26 update-en-expr [144] 15.3% -------------------------------------------------------------------------------------------- for-loop [242] 14.5% ??? [130] 85.5% [137] 22856(2.3%) 2700(0.3%) for-loop ...racket/contract/private/hash.rkt:239:6 ??? [184] 86.8% ??? [261] 1.4% -------------------------------------------------------------------------------------------- ??? [130] 100.0% [138] 22062(2.2%) 2400(0.2%) ??? ...ects/racket/contract/private/hash.rkt:217:4 ??? [143] 89.1% -------------------------------------------------------------------------------------------- ...velop/src/common.rkt:47:2 [132] 100.0% [139] 8506(0.8%) 1298(0.1%) ??? ...s/racket/contract/private/arr-i.rkt:1268:39 ??? [237] 41.1% return/no-unsupplied [239] 27.7% assoc-ref [145] 16.0% -------------------------------------------------------------------------------------------- loop [129] 100.0% [140] 368(0.0%) 0(0.0%) for-loop ...s/herbie/develop/src/points.rkt:200:24 for-loop [146] 100.0% -------------------------------------------------------------------------------------------- loop [135] 27.1% loop [129] 72.9% [141] 31410(3.1%) 328(0.0%) loop ...htlies/herbie/develop/src/points.rkt:141:4 map [148] 95.6% loop [231] 3.3% -------------------------------------------------------------------------------------------- loop [135] 36.1% loop [129] 63.9% [142] 22252(2.2%) 0(0.0%) make-exacts* ...erbie/develop/src/points.rkt:138:0 map [148] 47.3% loop [231] 36.8% eval-prog [147] 15.9% -------------------------------------------------------------------------------------------- ??? [138] 100.0% [143] 19662(1.9%) 2370(0.2%) ??? ...ects/racket/contract/private/list.rkt:169:2 ??? [149] 87.9% -------------------------------------------------------------------------------------------- update-leader! [81] 9.1% for-loop [84] 12.0% for-loop [136] 25.4% loop! [94] 53.5% [144] 14832(1.5%) 14832(1.5%) update-en-expr ...evelop/src/core/egraph.rkt:211:0 -------------------------------------------------------------------------------------------- ??? [139] 100.0% [145] 1358(0.1%) 1358(0.1%) assoc-ref ...collects/racket/private/dict.rkt:56:0 -------------------------------------------------------------------------------------------- for-loop [140] 100.0% [146] 368(0.0%) 0(0.0%) for-loop ...s/herbie/develop/src/points.rkt:201:26 ??? [220] 100.0% -------------------------------------------------------------------------------------------- make-exacts* [142] 0.8% errors [214] 2.2% loop [135] 97.0% [147] 445286(43.9%) 10686(1.1%) eval-prog ...herbie/develop/src/programs.rkt:148:0 hash-ref! [222] 94.8% f45 [45] 2.1% ??? [220] 0.3% ??? [155] 0.2% parse-app [161] 0.1% ??? [250] 0.1% go [156] 0.1% -------------------------------------------------------------------------------------------- parse-loop12 [151] 2.6% make-exacts* [142] 13.7% loop [141] 39.0% f45 [45] 44.7% [148] 76936(7.6%) 1056(0.1%) map ...acket/collects/racket/private/map.rkt:20:13 loop [231] 42.8% f45 [45] 25.0% parse-loop12 [151] 13.1% ??? [150] 10.6% simplify-node [153] 2.0% simplify* [160] 1.9% ??? [154] 1.1% make-multiplication-node [170] 1.0% ??? [220] 0.4% ??? [164] 0.1% taylor [163] 0.1% -------------------------------------------------------------------------------------------- ??? [143] 100.0% [149] 17292(1.7%) 726(0.1%) ??? ...ects/racket/contract/private/list.rkt:678:5 for-loop [152] 95.8% -------------------------------------------------------------------------------------------- jloop [13] 3.0% loop [126] 3.4% map [148] 11.3% for-loop [218] 30.9% loop [231] 51.5% [150] 72286(7.1%) 2096(0.2%) ??? ...tlies/herbie/develop/src/programs.rkt:154:4 ??? [157] 69.4% ??? [223] 16.8% ??? [220] 9.4% ??? [250] 1.5% -------------------------------------------------------------------------------------------- ??? [157] 1.1% hash-ref! [222] 1.9% f45 [45] 3.5% append-map [61] 3.7% for-loop [30] 4.4% loop [231] 5.0% simplify [39] 19.9% parse-loop12 [151] 23.3% map [148] 37.2% [151] 36224(3.6%) 18724(1.8%) parse-loop12 ...s/racket/match/compiler.rkt:418:15 parse-loop12 [151] 23.3% loop [231] 11.3% f45 [45] 11.2% map [148] 4.8% make-multiplication-node [170] 4.5% for-loop [162] 4.1% for-loop [165] 3.5% parse-app [161] 3.1% simplify* [160] 2.4% ??? [164] 1.1% ??? [185] 1.0% simplify [39] 0.9% -------------------------------------------------------------------------------------------- ??? [149] 100.0% [152] 16566(1.6%) 3416(0.3%) for-loop ...racket/contract/private/list.rkt:680:9 add-list-context [158] 54.8% get/build-late-neg-projection [159] 24.6% -------------------------------------------------------------------------------------------- simplify [39] 12.5% map [148] 87.5% [153] 5794(0.6%) 0(0.0%) simplify-node .../develop/src/core/reduce.rkt:50:0 f45 [45] 58.7% combine-aterms [167] 23.7% append-map [61] 17.5% -------------------------------------------------------------------------------------------- loop [231] 12.6% map [148] 87.4% [154] 2044(0.2%) 0(0.0%) ??? ...ket/collects/racket/private/list.rkt:323:18 f45 [45] 51.8% taylor [163] 32.5% hash-ref! [222] 15.8% -------------------------------------------------------------------------------------------- eval-prog [147] 49.9% eval-const-expr [28] 50.1% [155] 1436(0.1%) 0(0.0%) ??? ...cket/collects/racket/private/kw.rkt:1633:36 unpack245 [166] 100.0% -------------------------------------------------------------------------------------------- eval-prog [147] 100.0% [156] 356(0.0%) 0(0.0%) go .../collects/racket/private/qq-and-or.rkt:50:20 loop [168] 100.0% -------------------------------------------------------------------------------------------- ??? [150] 100.0% [157] 50156(4.9%) 21622(2.1%) ??? ...acket/collects/racket/private/kw.rkt:444:14 ??? [185] 25.3% bf* [169] 19.8% ??? [173] 6.1% ??? [174] 2.6% ...higher-order.rkt:346:33 [178] 2.2% parse-loop12 [151] 0.8% -------------------------------------------------------------------------------------------- for-loop [152] 100.0% [158] 9074(0.9%) 9074(0.9%) add-list-context ...ontract/private/list.rkt:752:0 -------------------------------------------------------------------------------------------- unconstrained-domain->-projection [182] 4.9% ??? [175] 7.6% ??? [130] 28.2% for-loop [152] 59.3% [159] 6878(0.7%) 2396(0.2%) get/build-late-neg-projection ...te/guts.rkt:691:0 ??? [171] 47.3% ??? [175] 12.8% unconstrained-domain->-projection [182] 4.9% listof-late-neg-projection [183] 2.6% -------------------------------------------------------------------------------------------- simplify [39] 14.5% parse-loop12 [151] 19.8% map [148] 65.7% [160] 6656(0.7%) 2988(0.3%) simplify* ...rbie/develop/src/core/reduce.rkt:31:0 hash-ref! [222] 30.2% ??? [177] 19.8% ??? [190] 5.1% -------------------------------------------------------------------------------------------- eval-prog [147] 11.0% f45 [45] 30.0% parse-loop12 [151] 59.0% [161] 3524(0.3%) 2472(0.2%) parse-app .../collects/racket/private/kw.rkt:951:2 loop [180] 29.9% -------------------------------------------------------------------------------------------- parse-loop12 [151] 100.0% [162] 2384(0.2%) 0(0.0%) for-loop ...rbie/develop/src/core/reduce.rkt:99:13 make-multiplication-node [170] 87.3% f45 [45] 12.7% -------------------------------------------------------------------------------------------- approximate9 [4] 16.9% map [148] 17.3% ??? [154] 32.2% f45 [45] 33.6% [163] 2064(0.2%) 1012(0.1%) taylor ...herbie/develop/src/core/taylor.rkt:163:0 debug-print [172] 35.2% loop [231] 15.8% -------------------------------------------------------------------------------------------- loop [231] 15.7% map [148] 32.9% parse-loop12 [151] 51.5% [164] 2056(0.2%) 682(0.1%) ??? ...ies/herbie/develop/src/core/reduce.rkt:61:5 for-loop [176] 66.8% -------------------------------------------------------------------------------------------- parse-loop12 [151] 100.0% [165] 1442(0.1%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:490:59 hash-ref! [222] 100.0% -------------------------------------------------------------------------------------------- ??? [155] 100.0% [166] 1436(0.1%) 358(0.0%) unpack245 ...private/arrow-higher-order.rkt:354:44 maybe-cons-kwd [179] 75.1% -------------------------------------------------------------------------------------------- simplify-node [153] 100.0% [167] 1376(0.1%) 684(0.1%) combine-aterms ...evelop/src/core/reduce.rkt:183:0 for-loop [181] 50.3% -------------------------------------------------------------------------------------------- go [156] 14.3% loop [168] 85.7% [168] 356(0.0%) 356(0.0%) loop ...llects/racket/private/qq-and-or.rkt:101:61 loop [168] 85.7% -------------------------------------------------------------------------------------------- ??? [157] 100.0% [169] 9928(1.0%) 368(0.0%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [185] 96.3% -------------------------------------------------------------------------------------------- for-loop [162] 31.3% map [148] 32.1% parse-loop12 [151] 36.6% [170] 6646(0.7%) 0(0.0%) make-multiplication-node .../core/reduce.rkt:230:0 make-multiplication-subnode [186] 100.0% -------------------------------------------------------------------------------------------- get/build-late-neg-projection [159] 100.0% [171] 3766(0.4%) 636(0.1%) ??? ...cts/racket/contract/private/prop.rkt:314:12 build-compound-type-name [187] 83.1% -------------------------------------------------------------------------------------------- taylor [163] 23.4% simplify [39] 76.6% [172] 3100(0.3%) 1060(0.1%) debug-print .../herbie/develop/src/debug.rkt:107:0 for-loop [188] 65.8% -------------------------------------------------------------------------------------------- ??? [157] 100.0% [173] 3078(0.3%) 3078(0.3%) ??? ...rivate/unconstrained-domain-arrow.rkt:40:13 -------------------------------------------------------------------------------------------- loop [231] 19.5% ??? [157] 80.5% [174] 1650(0.2%) 970(0.1%) ??? ...herbie/develop/src/syntax/syntax.rkt:122:17 ??? [237] 21.7% return/no-unsupplied [239] 19.5% -------------------------------------------------------------------------------------------- get/build-late-neg-projection [159] 100.0% [175] 1408(0.1%) 358(0.0%) ??? ...ects/racket/contract/private/hash.rkt:211:2 get/build-late-neg-projection [159] 74.6% -------------------------------------------------------------------------------------------- ??? [164] 100.0% [176] 1374(0.1%) 356(0.0%) for-loop ...erbie/develop/src/core/reduce.rkt:62:7 pattern-match [189] 74.1% -------------------------------------------------------------------------------------------- simplify* [160] 100.0% [177] 1318(0.1%) 332(0.0%) ??? ...racket/collects/racket/private/kw.rkt:762:9 ??? [245] 74.8% -------------------------------------------------------------------------------------------- ??? [157] 100.0% [178] 1126(0.1%) 770(0.1%) ...higher-order.rkt:346:33 (unknown source) ??? [184] 31.6% -------------------------------------------------------------------------------------------- unpack245 [166] 100.0% [179] 1078(0.1%) 0(0.0%) maybe-cons-kwd ...ate/arrow-higher-order.rkt:498:0 successfully-got-the-right-kind-of-function [260] 66.4% arrow-higher-order:lnp [262] 33.6% -------------------------------------------------------------------------------------------- loop [180] 17.4% parse-app [161] 82.6% [180] 1052(0.1%) 1052(0.1%) loop .../collects/racket/private/stxcase.rkt:112:7 loop [180] 17.4% -------------------------------------------------------------------------------------------- combine-aterms [167] 100.0% [181] 692(0.1%) 360(0.0%) for-loop ...rbie/develop/src/core/reduce.rkt:185:4 hash-ref! [222] 48.0% -------------------------------------------------------------------------------------------- get/build-late-neg-projection [159] 100.0% [182] 676(0.1%) 0(0.0%) unconstrained-domain->-projection ...rrow.rkt:60:0 get/build-late-neg-projection [159] 100.0% -------------------------------------------------------------------------------------------- get/build-late-neg-projection [159] 100.0% [183] 358(0.0%) 358(0.0%) listof-late-neg-projection ...ivate/list.rkt:162:0 -------------------------------------------------------------------------------------------- ??? [234] 1.2% ...higher-order.rkt:346:33 [178] 1.3% ??? [201] 22.4% for-loop [137] 75.0% [184] 26448(2.6%) 3814(0.4%) ??? ...cts/racket/contract/private/list.rkt:187:10 ??? [191] 71.1% for-loop [196] 6.6% ??? [201] 5.3% ??? [243] 1.3% ??? [261] 1.2% -------------------------------------------------------------------------------------------- parse-loop12 [151] 1.6% eval-const-expr [28] 2.9% bf* [169] 41.1% ??? [157] 54.4% [185] 23284(2.3%) 3836(0.4%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfsub [192] 65.8% bfneg [194] 17.7% -------------------------------------------------------------------------------------------- make-multiplication-node [170] 100.0% [186] 6646(0.7%) 0(0.0%) make-multiplication-subnode ...re/reduce.rkt:240:0 for-loop [193] 84.3% group-by68 [197] 15.7% -------------------------------------------------------------------------------------------- contract-struct-name [195] 11.4% ??? [171] 88.6% [187] 3130(0.3%) 2094(0.2%) build-compound-type-name ...private/guts.rkt:448:0 contract-struct-name [195] 44.5% -------------------------------------------------------------------------------------------- debug-print [172] 100.0% [188] 2040(0.2%) 2040(0.2%) for-loop ...ies/herbie/develop/src/debug.rkt:113:2 -------------------------------------------------------------------------------------------- for-loop [198] 16.5% for-loop [176] 83.5% [189] 1018(0.1%) 322(0.0%) pattern-match ...develop/src/core/matcher.rkt:48:0 for-loop [198] 51.9% ??? [190] 16.5% -------------------------------------------------------------------------------------------- split-table [35] 0.5% pattern-match [189] 0.5% simplify* [160] 0.5% for-loop [117] 1.1% substitute-e [70] 1.6% f45 [45] 2.2% ??? [243] 4.4% get-sigs [122] 15.3% variable? [82] 18.7% match-e [58] 22.9% finalize-iter! [50] 31.7% [190] 66008(6.5%) 23146(2.3%) ??? ...contract/private/arrow-val-first.rkt:357:18 hash-has-key? [199] 31.2% for-loop [200] 30.4% atab-add-altns [203] 1.3% ??? [243] 1.0% split-atab [204] 0.5% -------------------------------------------------------------------------------------------- ??? [184] 100.0% [191] 18812(1.9%) 1000(0.1%) ??? ...ects/racket/contract/private/list.rkt:686:7 ??? [243] 93.1% ??? [261] 1.6% -------------------------------------------------------------------------------------------- ??? [185] 100.0% [192] 15332(1.5%) 9664(1.0%) bfsub ...-lib/math/private/bigfloat/mpfr.rkt:819:4 ??? [235] 37.0% -------------------------------------------------------------------------------------------- make-multiplication-subnode [186] 100.0% [193] 5600(0.6%) 0(0.0%) for-loop ...rbie/develop/src/core/reduce.rkt:242:3 make-multiplication-subsubsubnode [202] 55.8% mterm->expr [206] 44.2% -------------------------------------------------------------------------------------------- ??? [185] 100.0% [194] 4116(0.4%) 3726(0.4%) bfneg ...-lib/math/private/bigfloat/mpfr.rkt:616:4 ??? [235] 9.5% -------------------------------------------------------------------------------------------- build-compound-type-name [187] 100.0% [195] 1750(0.2%) 1036(0.1%) contract-struct-name ...ract/private/prop.rkt:89:0 build-compound-type-name [187] 40.8% -------------------------------------------------------------------------------------------- ??? [184] 100.0% [196] 1750(0.2%) 360(0.0%) for-loop ...acket/contract/private/list.rkt:190:15 ??? [201] 79.4% -------------------------------------------------------------------------------------------- make-multiplication-subnode [186] 100.0% [197] 1046(0.1%) 1046(0.1%) group-by68 ...acket/collects/racket/list.rkt:749:0 -------------------------------------------------------------------------------------------- pattern-match [189] 100.0% [198] 696(0.1%) 360(0.0%) for-loop ...rbie/develop/src/core/matcher.rkt:66:9 pattern-match [189] 48.3% -------------------------------------------------------------------------------------------- mk-enode! [78] 12.8% ??? [190] 87.2% [199] 23778(2.3%) 5304(0.5%) hash-has-key? ...et/private/more-scheme.rkt:368:13 ??? [234] 71.8% ??? [207] 5.9% -------------------------------------------------------------------------------------------- ??? [190] 100.0% [200] 20082(2.0%) 0(0.0%) for-loop ...ie/develop/src/core/alt-table.rkt:51:2 atab-add-altn [205] 100.0% -------------------------------------------------------------------------------------------- for-loop [196] 11.1% ??? [184] 11.1% ...velop/src/common.rkt:47:2 [132] 77.8% [201] 6270(0.6%) 696(0.1%) ??? ...ects/racket/contract/private/list.rkt:342:4 ??? [184] 72.5% ??? [243] 16.6% ??? [259] 5.3% -------------------------------------------------------------------------------------------- make-multiplication-subsubsubnode [202] 10.9% for-loop [193] 89.1% [202] 3124(0.3%) 336(0.0%) make-multiplication-subsubsubnode ...uce.rkt:262:0 mterm->expr [206] 78.3% make-multiplication-subsubsubnode [202] 10.9% -------------------------------------------------------------------------------------------- ??? [190] 100.0% [203] 1038(0.1%) 0(0.0%) atab-add-altns ...elop/src/core/alt-table.rkt:50:0 atab-add-altn [205] 100.0% -------------------------------------------------------------------------------------------- ??? [190] 100.0% [204] 334(0.0%) 0(0.0%) split-atab .../develop/src/core/alt-table.rkt:74:0 for-loop [208] 100.0% -------------------------------------------------------------------------------------------- atab-add-altns [203] 4.9% for-loop [200] 95.1% [205] 21120(2.1%) 0(0.0%) atab-add-altn ...elop/src/core/alt-table.rkt:208:0 best-and-tied-at-points [209] 88.4% override-at-pnts [211] 9.8% loop [231] 1.7% -------------------------------------------------------------------------------------------- for-loop [193] 47.0% make-multiplication-subsubsubnode [202] 53.0% [206] 5264(0.5%) 634(0.1%) mterm->expr ...e/develop/src/core/reduce.rkt:270:0 f45 [45] 41.1% expression->type [210] 27.0% ??? [237] 6.9% type-of [212] 6.8% free-variables [75] 6.2% -------------------------------------------------------------------------------------------- hash-has-key? [199] 100.0% [207] 1396(0.1%) 1396(0.1%) ??? ...ects/racket/contract/private/hash.rkt:245:7 -------------------------------------------------------------------------------------------- split-atab [204] 100.0% [208] 334(0.0%) 0(0.0%) for-loop ...ie/develop/src/core/alt-table.rkt:75:2 for-loop [213] 100.0% -------------------------------------------------------------------------------------------- atab-add-altn [205] 100.0% [209] 18680(1.8%) 334(0.0%) best-and-tied-at-points ...ore/alt-table.rkt:122:0 errors [214] 94.8% for-loop [216] 3.4% -------------------------------------------------------------------------------------------- taylor-alt [69] 5.9% rewriter [88] 6.4% f45 [45] 14.7% mterm->expr [206] 33.1% for-loop [215] 39.9% [210] 2826(0.3%) 0(0.0%) expression->type ...evelop/src/type-check.rkt:45:0 for-loop [215] 75.5% variable? [82] 24.5% -------------------------------------------------------------------------------------------- atab-add-altn [205] 100.0% [211] 2080(0.2%) 0(0.0%) override-at-pnts ...p/src/core/alt-table.rkt:145:0 errors [214] 100.0% -------------------------------------------------------------------------------------------- mterm->expr [206] 100.0% [212] 360(0.0%) 360(0.0%) type-of .../herbie/develop/src/type-check.rkt:38:0 -------------------------------------------------------------------------------------------- for-loop [208] 100.0% [213] 334(0.0%) 0(0.0%) for-loop ...e/develop/src/core/alt-table.rkt:86:30 ??? [217] 100.0% -------------------------------------------------------------------------------------------- composed [240] 0.9% override-at-pnts [211] 5.6% loop [231] 8.3% option-on-expr [55] 8.4% pred [121] 29.5% best-and-tied-at-points [209] 47.4% [214] 37366(3.7%) 314(0.0%) errors ...lies/herbie/develop/src/points.rkt:218:0 for-loop [218] 73.3% eval-prog [147] 25.8% -------------------------------------------------------------------------------------------- expression->type [210] 100.0% [215] 2134(0.2%) 360(0.0%) for-loop ...herbie/develop/src/type-check.rkt:52:5 expression->type [210] 52.8% f45 [45] 44.4% -------------------------------------------------------------------------------------------- best-and-tied-at-points [209] 100.0% [216] 636(0.1%) 636(0.1%) for-loop .../develop/src/core/alt-table.rkt:124:16 -------------------------------------------------------------------------------------------- for-loop [213] 100.0% [217] 334(0.0%) 0(0.0%) ??? ...s/herbie/develop/src/core/regimes.rkt:284:4 ??? [219] 100.0% -------------------------------------------------------------------------------------------- errors [214] 100.0% [218] 27406(2.7%) 1422(0.1%) for-loop ...es/herbie/develop/src/points.rkt:221:4 ??? [150] 81.4% ??? [220] 6.1% ulp-difference [221] 6.0% -------------------------------------------------------------------------------------------- ??? [217] 100.0% [219] 334(0.0%) 0(0.0%) ??? ...s/herbie/develop/src/core/regimes.rkt:177:2 ??? [220] 100.0% -------------------------------------------------------------------------------------------- map [148] 0.4% ??? [219] 0.4% get-final-combination [19] 0.5% for-loop [146] 0.5% eval-prog [147] 1.7% for-loop [218] 2.2% loop [231] 4.4% ??? [150] 8.8% ??? [10] 9.9% f45 [45] 11.4% loop [22] 12.4% ->flonum [225] 23.5% for-loop [79] 23.5% [220] 76990(7.6%) 2326(0.2%) ??? ...tract/private/arrow-higher-order.rkt:342:33 ->flonum [225] 41.5% approximate9 [4] 23.5% hash-ref! [222] 22.3% ??? [243] 3.6% ??? [130] 2.3% ...velop/src/common.rkt:47:2 [132] 0.9% ??? [223] 0.9% best-alt [224] 0.4% ??? [250] 0.4% -------------------------------------------------------------------------------------------- for-loop [218] 100.0% [221] 1648(0.2%) 634(0.1%) ulp-difference ...erbie/develop/src/float.rkt:19:0 return/no-unsupplied [239] 61.5% -------------------------------------------------------------------------------------------- for-loop [32] 0.0% first-nonzero-exp [33] 0.0% for-loop [181] 0.0% for-loop [165] 0.0% for-loop [31] 0.0% simplify* [160] 0.1% ??? [154] 0.1% update-leader! [81] 0.1% ??? [5] 0.2% ??? [10] 0.3% for-loop [42] 0.4% ??? [227] 0.4% compile [73] 0.4% for-loop [26] 0.6% for-loop [24] 0.8% loop [22] 1.0% ??? [220] 1.8% for-loop [25] 2.0% ??? [40] 3.5% eval-prog [147] 38.2% loop [231] 49.9% [222] 478964(47.2%) 8106(0.8%) hash-ref! ...racket/private/more-scheme.rkt:373:13 ??? [227] 50.4% bigfloat-hash [226] 37.9% ??? [7] 3.4% ??? [8] 2.0% ??? [5] 1.4% simplify [39] 1.4% ??? [10] 1.3% ??? [9] 0.6% ??? [11] 0.4% f45 [45] 0.3% parse-loop12 [151] 0.1% ??? [15] 0.0% ??? [14] 0.0% taylor-quotient [17] 0.0% -------------------------------------------------------------------------------------------- ??? [220] 5.3% ??? [150] 94.7% [223] 12830(1.3%) 0(0.0%) ??? ...contract/private/../../private/kw.rkt:761:9 real->bigfloat [228] 97.3% integer->bigfloat [229] 2.7% -------------------------------------------------------------------------------------------- ??? [220] 100.0% [224] 328(0.0%) 0(0.0%) best-alt ...tlies/herbie/develop/src/glue.rkt:71:0 loop [230] 100.0% -------------------------------------------------------------------------------------------- simplify-alt [44] 0.0% ??? [107] 0.1% f45 [45] 0.1% for-loop [60] 1.6% get-sigs [122] 1.7% ->flonum [225] 10.3% ??? [220] 10.6% for-loop [233] 34.3% ??? [65] 41.1% [225] 482316(47.6%) 21394(2.1%) ->flonum ...s/racket/private/norm-define.rkt:53:83 iterate-egraph!13 [3] 37.4% for-loop [233] 34.4% ->flonum [225] 10.3% ??? [220] 7.8% loop [6] 3.6% ??? [234] 2.5% ??? [237] 0.7% return/no-unsupplied [239] 0.5% mk-egraph [241] 0.3% list-member? [236] 0.1% f45 [45] 0.1% -------------------------------------------------------------------------------------------- hash-ref! [222] 100.0% [226] 419558(41.4%) 1396(0.1%) bigfloat-hash ...h/private/bigfloat/mpfr.rkt:165:0 bfcanonicalize [232] 97.5% sig+exp->bigfloat [238] 1.9% bigfloat->sig+exp [246] 0.2% -------------------------------------------------------------------------------------------- hash-ref! [222] 100.0% [227] 367770(36.3%) 682(0.1%) ??? ...tlies/herbie/develop/src/programs.rkt:183:5 loop [231] 99.2% hash-ref! [222] 0.7% -------------------------------------------------------------------------------------------- ??? [223] 100.0% [228] 12480(1.2%) 8622(0.9%) real->bigfloat .../private/bigfloat/mpfr.rkt:451:0 ??? [235] 30.9% -------------------------------------------------------------------------------------------- ??? [223] 100.0% [229] 350(0.0%) 0(0.0%) integer->bigfloat ...ivate/bigfloat/mpfr.rkt:399:0 ??? [235] 100.0% -------------------------------------------------------------------------------------------- best-alt [224] 100.0% [230] 328(0.0%) 0(0.0%) loop ...htlies/herbie/develop/src/common.rkt:146:2 composed [240] 100.0% -------------------------------------------------------------------------------------------- loop [141] 0.0% make-exacts* [142] 0.0% atab-add-altn [205] 0.0% taylor [163] 0.1% for-loop [67] 0.2% option-on-expr [55] 0.3% match-e [58] 0.5% map [148] 1.1% parse-loop12 [151] 1.4% loop! [94] 1.6% loop [231] 21.0% f45 [45] 30.0% ??? [227] 43.7% [231] 557292(55.0%) 5514(0.5%) loop ...cket/collects/racket/private/map.rkt:25:19 hash-ref! [222] 43.7% option-on-expr [55] 30.0% loop [231] 21.0% loop! [94] 1.4% parse-loop12 [151] 1.1% ??? [150] 0.7% f45 [45] 0.6% errors [214] 0.3% foldl [247] 0.2% for-loop [12] 0.1% simplify [39] 0.1% ??? [164] 0.1% ??? [220] 0.1% set-precompute! [254] 0.0% ??? [154] 0.0% curried [252] 0.0% ??? [174] 0.0% ??? [250] 0.0% -------------------------------------------------------------------------------------------- bigfloat-hash [226] 100.0% [232] 409132(40.3%) 404760(39.9%) bfcanonicalize .../private/bigfloat/mpfr.rkt:155:0 bigfloat->sig+exp [246] 1.1% -------------------------------------------------------------------------------------------- ->flonum [225] 100.0% [233] 343918(33.9%) 0(0.0%) for-loop ...ie/develop/src/core/simplify.rkt:63:12 ->flonum [225] 99.9% -------------------------------------------------------------------------------------------- hash-has-key? [199] 35.0% ->flonum [225] 65.0% [234] 48790(4.8%) 16794(1.7%) ??? ...ects/racket/contract/private/list.rkt:737:4 for-loop [242] 58.7% ??? [255] 4.9% ??? [184] 0.7% ??? [243] 0.7% -------------------------------------------------------------------------------------------- integer->bigfloat [229] 3.4% bfneg [194] 3.8% real->bigfloat [228] 37.6% bfsub [192] 55.2% [235] 10266(1.0%) 10266(1.0%) ??? .../share/racket/collects/ffi/unsafe.rkt:861:4 -------------------------------------------------------------------------------------------- ->flonum [225] 6.3% for-loop [57] 93.7% [236] 10092(1.0%) 960(0.1%) list-member? ...llects/racket/private/set.rkt:24:0 loop [244] 80.1% member [253] 10.4% -------------------------------------------------------------------------------------------- ??? [174] 3.7% debug7 [54] 3.8% mterm->expr [206] 3.8% ??? [139] 36.5% ->flonum [225] 52.2% [237] 9580(0.9%) 2678(0.3%) ??? ...racket/collects/racket/private/kw.rkt:761:9 ??? [245] 57.6% ??? [243] 14.4% -------------------------------------------------------------------------------------------- bigfloat-hash [226] 100.0% [238] 8014(0.8%) 6674(0.7%) sig+exp->bigfloat ...ivate/bigfloat/mpfr.rkt:385:0 integer->mpz [251] 16.7% -------------------------------------------------------------------------------------------- ??? [174] 4.8% ulp-difference [221] 15.1% ??? [139] 35.1% ->flonum [225] 44.9% [239] 6706(0.7%) 4716(0.5%) return/no-unsupplied ...ct/private/arr-i.rkt:533:0 filter [248] 29.7% -------------------------------------------------------------------------------------------- loop [230] 12.3% f45 [45] 87.7% [240] 2668(0.3%) 0(0.0%) composed ...ollects/racket/private/list.rkt:321:16 f45 [45] 87.7% errors [214] 12.3% -------------------------------------------------------------------------------------------- ->flonum [225] 100.0% [241] 2626(0.3%) 0(0.0%) mk-egraph ...bie/develop/src/core/egraph.rkt:123:0 expr->enode [249] 87.4% mk-enode! [78] 12.6% -------------------------------------------------------------------------------------------- ??? [234] 100.0% [242] 28628(2.8%) 17318(1.7%) for-loop ...acket/contract/private/list.rkt:743:12 ??? [255] 20.8% for-loop [137] 11.5% arrow-higher-order:lnp [262] 2.5% ??? [259] 2.4% successfully-got-the-right-kind-of-function [260] 2.4% -------------------------------------------------------------------------------------------- ??? [234] 0.7% ??? [184] 1.4% ??? [190] 2.1% ??? [237] 5.6% ??? [201] 8.4% ??? [220] 9.7% ??? [191] 70.7% [243] 24768(2.4%) 20256(2.0%) ??? ...ects/racket/contract/private/guts.rkt:644:8 ??? [190] 11.2% contract? [258] 8.4% -------------------------------------------------------------------------------------------- list-member? [236] 100.0% [244] 8082(0.8%) 8082(0.8%) loop (unknown source) -------------------------------------------------------------------------------------------- ??? [177] 15.2% ??? [237] 84.8% [245] 6508(0.6%) 5824(0.6%) ??? ...s/racket/contract/private/arr-i.rkt:1233:27 ??? [264] 10.5% -------------------------------------------------------------------------------------------- bigfloat-hash [226] 13.6% bfcanonicalize [232] 86.4% [246] 5060(0.5%) 1734(0.2%) bigfloat->sig+exp ...ivate/bigfloat/mpfr.rkt:370:0 size+limbs->integer [256] 59.1% new-mpz [265] 6.6% -------------------------------------------------------------------------------------------- for-loop [67] 28.4% loop [231] 71.6% [247] 2426(0.2%) 0(0.0%) foldl ...et/collects/racket/private/list.rkt:229:4 merge2 [257] 100.0% -------------------------------------------------------------------------------------------- for-loop [67] 14.2% return/no-unsupplied [239] 85.8% [248] 2320(0.2%) 2320(0.2%) filter ...t/collects/racket/private/list.rkt:256:2 -------------------------------------------------------------------------------------------- mk-egraph [241] 44.6% expr->enode [249] 55.4% [249] 2294(0.2%) 0(0.0%) expr->enode ...e/develop/src/core/egraph.rkt:124:2 expr->enode [249] 55.4% mk-enode! [78] 44.6% -------------------------------------------------------------------------------------------- ??? [220] 15.1% loop [231] 17.1% eval-prog [147] 17.9% ??? [150] 49.9% [250] 2148(0.2%) 1780(0.2%) ??? ...tract/private/arrow-higher-order.rkt:145:21 ??? [261] 17.1% -------------------------------------------------------------------------------------------- sig+exp->bigfloat [238] 100.0% [251] 1340(0.1%) 1340(0.1%) integer->mpz ...math/private/bigfloat/gmp.rkt:87:0 -------------------------------------------------------------------------------------------- for-loop [12] 31.7% loop [231] 33.6% for-loop [67] 34.7% [252] 1060(0.1%) 1060(0.1%) curried ...cket/collects/racket/function.rkt:71:18 -------------------------------------------------------------------------------------------- list-member? [236] 100.0% [253] 1050(0.1%) 1050(0.1%) member (unknown source) -------------------------------------------------------------------------------------------- loop [231] 100.0% [254] 336(0.0%) 0(0.0%) set-precompute! ...lop/src/core/simplify.rkt:172:0 make-sequence [263] 100.0% -------------------------------------------------------------------------------------------- ??? [130] 4.1% ??? [234] 27.6% for-loop [242] 68.3% [255] 8694(0.9%) 5454(0.5%) ??? ...private/unconstrained-domain-arrow.rkt:74:4 make-keyword-procedure [266] 37.3% -------------------------------------------------------------------------------------------- bigfloat->sig+exp [246] 100.0% [256] 2992(0.3%) 2992(0.3%) size+limbs->integer ...vate/bigfloat/gmp.rkt:103:0 -------------------------------------------------------------------------------------------- foldl [247] 100.0% [257] 2426(0.2%) 2426(0.2%) merge2 .../herbie/develop/src/core/ematch.rkt:31:0 -------------------------------------------------------------------------------------------- ??? [243] 100.0% [258] 2084(0.2%) 2084(0.2%) contract? ...acket/contract/private/guts.rkt:109:0 -------------------------------------------------------------------------------------------- ??? [201] 19.3% for-loop [242] 39.1% ??? [130] 41.6% [259] 1734(0.2%) 666(0.1%) ??? ...ects/racket/contract/private/hash.rkt:222:6 check-hash/c [267] 61.6% -------------------------------------------------------------------------------------------- for-loop [242] 48.5% maybe-cons-kwd [179] 51.5% [260] 1390(0.1%) 716(0.1%) successfully-got-the-right-kind-of-function ...9:4 arity-checking-wrapper [269] 48.5% -------------------------------------------------------------------------------------------- ??? [191] 23.1% ??? [184] 24.6% for-loop [137] 24.6% ??? [250] 27.8% [261] 1326(0.1%) 1020(0.1%) ??? ...ects/racket/contract/private/prop.rkt:493:4 ??? [270] 23.1% -------------------------------------------------------------------------------------------- maybe-cons-kwd [179] 33.7% for-loop [242] 66.3% [262] 1074(0.1%) 362(0.0%) arrow-higher-order:lnp ...w-higher-order.rkt:597:7 ??? [268] 66.3% -------------------------------------------------------------------------------------------- set-precompute! [254] 48.3% merge-egraph-nodes! [68] 51.7% [263] 696(0.1%) 696(0.1%) make-sequence ...ects/racket/private/for.rkt:509:2 -------------------------------------------------------------------------------------------- ??? [245] 100.0% [264] 684(0.1%) 684(0.1%) ??? ...ects/racket/contract/private/prop.rkt:256:4 -------------------------------------------------------------------------------------------- bigfloat->sig+exp [246] 100.0% [265] 334(0.0%) 334(0.0%) new-mpz ...-lib/math/private/bigfloat/gmp.rkt:73:0 -------------------------------------------------------------------------------------------- f45 [45] 9.9% ??? [255] 90.1% [266] 3598(0.4%) 3598(0.4%) make-keyword-procedure ...ket/private/kw.rkt:260:4 -------------------------------------------------------------------------------------------- ??? [259] 100.0% [267] 1068(0.1%) 708(0.1%) check-hash/c ...ket/contract/private/hash.rkt:83:0 flat-contract? [272] 33.7% -------------------------------------------------------------------------------------------- arrow-higher-order:lnp [262] 100.0% [268] 712(0.1%) 712(0.1%) ??? ...et/contract/private/arity-checking.rkt:19:2 -------------------------------------------------------------------------------------------- successfully-got-the-right-kind-of-function [260]100.0% [269] 674(0.1%) 0(0.0%) arity-checking-wrapper ...w-higher-order.rkt:402:0 matches-arity-exactly? [271] 100.0% -------------------------------------------------------------------------------------------- ??? [261] 100.0% [270] 306(0.0%) 0(0.0%) ??? ...lects/racket/contract/private/orc.rkt:83:14 ??? [273] 100.0% -------------------------------------------------------------------------------------------- arity-checking-wrapper [269] 100.0% [271] 674(0.1%) 674(0.1%) matches-arity-exactly? ...te/arrow-common.rkt:70:0 -------------------------------------------------------------------------------------------- check-hash/c [267] 100.0% [272] 360(0.0%) 360(0.0%) flat-contract? .../contract/private/guts.rkt:111:0 -------------------------------------------------------------------------------------------- ??? [270] 100.0% [273] 306(0.0%) 306(0.0%) ??? ...ects/racket/contract/private/list.rkt:141:5 --------------------------------------------------------------------------------------------