Profiling results ----------------- Total cpu time observed: 280288ms (out of 281584ms) Number of samples taken: 862 (once every 325ms) (Hiding functions with self<1.0% and local<2.0%: 13 of 213 hidden) ============================================================================ Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ============================================================================ run [19] 50.0% [1] 280288(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [10] 50.0% run-improve40 [11] 31.0% oracle-error [12] 12.0% loop [22] 3.2% get-final-combination [13] 1.3% eval-errors [94] 1.1% errors [80] 1.1% baseline-error [15] 0.3% loop [125] 0.1% ---------------------------------------------------------------------------- loop [125] 100.0% [2] 6364(2.3%) 0(0.0%) composed ...ollects/racket/private/list.rkt:321:16 ??? [142] 100.0% ---------------------------------------------------------------------------- eval4 [109] 7.2% for-loop [168] 92.8% [3] 4266(1.5%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [14] 100.0% ---------------------------------------------------------------------------- loop [127] 100.0% [4] 2864(1.0%) 0(0.0%) ??? .../simplify-tweak/src/core/localize.rkt:43:32 ??? [148] 100.0% ---------------------------------------------------------------------------- substitute-e [106] 22.2% match-e [92] 77.8% [5] 1596(0.6%) 0(0.0%) variable? ...fy-tweak/src/syntax/syntax.rkt:1159:0 ??? [43] 100.0% ---------------------------------------------------------------------------- expand-capturing-lifts [143] 24.0% for-loop [168] 26.2% loop [158] 49.8% [6] 1268(0.5%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [16] 100.0% ---------------------------------------------------------------------------- for-loop [168] 100.0% [7] 332(0.1%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [17] 100.0% ---------------------------------------------------------------------------- matcher [90] 100.0% [8] 326(0.1%) 0(0.0%) ??? .../simplify-tweak/src/core/matcher.rkt:175:11 for-loop [18] 100.0% ---------------------------------------------------------------------------- copying-mergesort [75] 100.0% [9] 298(0.1%) 0(0.0%) jloop ...0/collects/racket/private/sort.rkt:120:23 ??? [142] 100.0% ---------------------------------------------------------------------------- ??? [1] 100.0% [10] 280288(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [19] 100.0% ---------------------------------------------------------------------------- ??? [1] 100.0% [11] 173592(61.9%) 0(0.0%) run-improve40 ...lify-tweak/src/mainloop.rkt:340:0 for-loop [20] 98.8% loop [22] 0.7% ??? [43] 0.3% finalize-iter! [33] 0.2% ---------------------------------------------------------------------------- ??? [1] 100.0% [12] 67064(23.9%) 0(0.0%) oracle-error ...implify-tweak/src/points.rkt:212:0 for-loop [21] 100.0% ---------------------------------------------------------------------------- ??? [1] 100.0% [13] 7208(2.6%) 0(0.0%) get-final-combination ...ak/src/mainloop.rkt:361:0 infer-splitpoints [23] 100.0% ---------------------------------------------------------------------------- expand-id-application-form17 [178] 6.5% syntax-e [3] 93.5% [14] 4564(1.6%) 0(0.0%) syntax-e/no-taint (unknown source) loop [158] 100.0% ---------------------------------------------------------------------------- ??? [1] 100.0% [15] 1852(0.7%) 0(0.0%) baseline-error ...plify-tweak/src/points.rkt:216:0 loop [73] 64.8% argmin [74] 35.2% ---------------------------------------------------------------------------- dispatch-transformer41 [6] 100.0% [16] 1268(0.5%) 0(0.0%) apply-transformer52 (unknown source) apply-transformer-in-context [24] 100.0% ---------------------------------------------------------------------------- expand-implicit [7] 100.0% [17] 332(0.1%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [25] 100.0% ---------------------------------------------------------------------------- ??? [8] 100.0% [18] 326(0.1%) 0(0.0%) for-loop ...lify-tweak/src/core/matcher.rkt:179:21 matcher [90] 100.0% ---------------------------------------------------------------------------- profile-thunk16 [10] 100.0% [19] 280288(100.0%) 0(0.0%) run ...et-7.0/share/pkgs/profile-lib/main.rkt:39:2 ??? [1] 100.0% ---------------------------------------------------------------------------- run-improve40 [11] 100.0% [20] 171532(61.2%) 0(0.0%) for-loop .../simplify-tweak/src/mainloop.rkt:355:4 run-iter! [26] 100.0% ---------------------------------------------------------------------------- oracle-error [12] 100.0% [21] 67064(23.9%) 0(0.0%) for-loop ...ie/simplify-tweak/src/points.rkt:213:2 loop [125] 64.5% map [70] 35.5% ---------------------------------------------------------------------------- run-improve40 [11] 6.1% ??? [1] 93.9% [22] 18910(6.7%) 0(0.0%) loop ...herbie/simplify-tweak/src/points.rkt:303:2 loop [35] 65.0% loop [28] 27.1% make-exacts-walkup [39] 2.5% make-exacts-halfpoints [30] 2.2% for-loop [31] 1.6% filter-p&e [32] 1.6% ---------------------------------------------------------------------------- get-final-combination [13] 100.0% [23] 7208(2.6%) 0(0.0%) infer-splitpoints ...eak/src/core/regimes.rkt:34:0 for-loop [27] 100.0% ---------------------------------------------------------------------------- apply-transformer52 [16] 100.0% [24] 1268(0.5%) 632(0.2%) apply-transformer-in-context (unknown source) datum->syntax6 [29] 50.2% ---------------------------------------------------------------------------- resolve+shift28 [17] 100.0% [25] 332(0.1%) 0(0.0%) fallback-loop (unknown source) for-loop [168] 100.0% ---------------------------------------------------------------------------- for-loop [20] 100.0% [26] 171532(61.2%) 0(0.0%) run-iter! ...simplify-tweak/src/mainloop.rkt:321:0 finalize-iter! [33] 72.4% simplify! [34] 18.7% localize! [36] 5.4% choose-best-alt! [38] 3.2% gen-rewrites! [40] 0.2% ---------------------------------------------------------------------------- infer-splitpoints [23] 100.0% [27] 7208(2.6%) 0(0.0%) for-loop ...mplify-tweak/src/core/regimes.rkt:46:6 option-on-expr [37] 100.0% ---------------------------------------------------------------------------- loop [22] 100.0% [28] 5126(1.8%) 0(0.0%) loop ...herbie/simplify-tweak/src/points.rkt:264:2 loop [35] 60.0% make-exacts-walkup [39] 33.6% eval-prog [93] 6.4% ---------------------------------------------------------------------------- apply-transformer-in-context [24] 100.0% [29] 636(0.2%) 0(0.0%) datum->syntax6 (unknown source) loop [158] 100.0% ---------------------------------------------------------------------------- loop [22] 100.0% [30] 422(0.2%) 0(0.0%) make-exacts-halfpoints ...eak/src/points.rkt:262:0 loop [35] 50.7% make-exacts-walkup [39] 49.3% ---------------------------------------------------------------------------- loop [22] 100.0% [31] 310(0.1%) 0(0.0%) for-loop ...e/simplify-tweak/src/points.rkt:322:31 for-loop [41] 100.0% ---------------------------------------------------------------------------- loop [22] 100.0% [32] 294(0.1%) 0(0.0%) filter-p&e .../simplify-tweak/src/points.rkt:277:0 for-loop [42] 100.0% ---------------------------------------------------------------------------- run-improve40 [11] 0.3% run-iter! [26] 99.7% [33] 124580(44.4%) 0(0.0%) finalize-iter! ...ify-tweak/src/mainloop.rkt:272:0 ??? [43] 100.0% ---------------------------------------------------------------------------- run-iter! [26] 100.0% [34] 32156(11.5%) 0(0.0%) simplify! ...simplify-tweak/src/mainloop.rkt:217:0 ??? [44] 100.0% ---------------------------------------------------------------------------- make-exacts-halfpoints [30] 1.4% loop [28] 19.8% loop [22] 78.9% [35] 15584(5.6%) 0(0.0%) loop ...herbie/simplify-tweak/src/points.rkt:247:4 loop [125] 97.9% loop [48] 2.1% ---------------------------------------------------------------------------- run-iter! [26] 100.0% [36] 9328(3.3%) 0(0.0%) localize! ...simplify-tweak/src/mainloop.rkt:120:0 localize-error [45] 100.0% ---------------------------------------------------------------------------- for-loop [27] 100.0% [37] 7208(2.6%) 0(0.0%) option-on-expr ...tweak/src/core/regimes.rkt:150:0 for-loop [46] 78.0% sort-context-on-expr [47] 17.5% for-loop [49] 4.5% ---------------------------------------------------------------------------- run-iter! [26] 100.0% [38] 5456(1.9%) 0(0.0%) choose-best-alt! ...y-tweak/src/mainloop.rkt:111:0 ??? [43] 100.0% ---------------------------------------------------------------------------- make-exacts-halfpoints [30] 8.7% loop [22] 19.5% loop [28] 71.8% [39] 2394(0.9%) 0(0.0%) make-exacts-walkup ...y-tweak/src/points.rkt:244:0 loop [125] 67.4% eval-prog [93] 32.6% ---------------------------------------------------------------------------- run-iter! [26] 100.0% [40] 326(0.1%) 0(0.0%) gen-rewrites! ...lify-tweak/src/mainloop.rkt:176:0 for-loop [50] 100.0% ---------------------------------------------------------------------------- for-loop [31] 100.0% [41] 310(0.1%) 0(0.0%) for-loop ...e/simplify-tweak/src/points.rkt:323:32 random-posit16 [51] 100.0% ---------------------------------------------------------------------------- filter-p&e [32] 100.0% [42] 294(0.1%) 0(0.0%) for-loop ...ie/simplify-tweak/src/points.rkt:279:2 ordinary-value? [52] 100.0% ---------------------------------------------------------------------------- match-e [92] 0.2% run-improve40 [11] 0.4% variable? [5] 1.2% choose-best-alt! [38] 4.1% finalize-iter! [33] 94.0% [43] 132528(47.3%) 1896(0.7%) ??? ...contract/private/arrow-val-first.rkt:388:18 for-loop [53] 94.0% ??? [55] 4.1% make-alt-table [58] 0.4% ---------------------------------------------------------------------------- simplify! [34] 100.0% [44] 32156(11.5%) 0(0.0%) ??? ...e/simplify-tweak/src/core/simplify.rkt:26:0 for-loop [54] 59.0% one-iter [62] 25.0% loop [56] 14.9% loop [125] 1.0% ---------------------------------------------------------------------------- localize! [36] 100.0% [45] 9328(3.3%) 0(0.0%) localize-error ...tweak/src/core/localize.rkt:52:0 hash-ref! [100] 100.0% ---------------------------------------------------------------------------- option-on-expr [37] 100.0% [46] 5624(2.0%) 0(0.0%) for-loop ...plify-tweak/src/core/regimes.rkt:158:4 errors [80] 100.0% ---------------------------------------------------------------------------- option-on-expr [37] 100.0% [47] 1258(0.4%) 0(0.0%) sort-context-on-expr ...src/core/regimes.rkt:145:0 ??? [57] 100.0% ---------------------------------------------------------------------------- loop [35] 100.0% [48] 326(0.1%) 326(0.1%) loop ...-7.0/collects/racket/private/map.rkt:277:4 ---------------------------------------------------------------------------- option-on-expr [37] 100.0% [49] 326(0.1%) 0(0.0%) for-loop ...lify-tweak/src/core/regimes.rkt:156:39 posit16< [59] 100.0% ---------------------------------------------------------------------------- gen-rewrites! [40] 100.0% [50] 326(0.1%) 0(0.0%) for-loop ...simplify-tweak/src/mainloop.rkt:184:11 rewrite-expression-head20 [60] 100.0% ---------------------------------------------------------------------------- for-loop [41] 100.0% [51] 310(0.1%) 310(0.1%) random-posit16 ...softposit-rkt/softposit.rkt:64:0 ---------------------------------------------------------------------------- for-loop [42] 100.0% [52] 294(0.1%) 294(0.1%) ordinary-value? ...mplify-tweak/src/float.rkt:54:0 ---------------------------------------------------------------------------- ??? [43] 100.0% [53] 124580(44.4%) 0(0.0%) for-loop ...lify-tweak/src/core/alt-table.rkt:51:2 atab-add-altn [61] 99.2% loop [65] 0.8% ---------------------------------------------------------------------------- ??? [44] 100.0% [54] 18980(6.8%) 0(0.0%) for-loop ...plify-tweak/src/core/simplify.rkt:33:2 one-iter [62] 100.0% ---------------------------------------------------------------------------- ??? [43] 100.0% [55] 5456(1.9%) 0(0.0%) ??? .../simplify-tweak/src/core/alt-table.rkt:54:0 ??? [148] 100.0% ---------------------------------------------------------------------------- ??? [44] 100.0% [56] 4804(1.7%) 322(0.1%) loop ...simplify-tweak/src/core/simplify.rkt:132:2 for-loop [63] 93.3% ---------------------------------------------------------------------------- sort-context-on-expr [47] 100.0% [57] 1258(0.4%) 0(0.0%) ??? ...-7.0/collects/racket/private/sort.rkt:369:3 generic-sort/key [64] 100.0% ---------------------------------------------------------------------------- ??? [43] 100.0% [58] 596(0.2%) 0(0.0%) make-alt-table ...weak/src/core/alt-table.rkt:33:0 for-loop [66] 54.7% errors [80] 45.3% ---------------------------------------------------------------------------- for-loop [49] 100.0% [59] 326(0.1%) 0(0.0%) posit16< ...pkgs/softposit-rkt/softposit.rkt:224:0 get-ffi-obj* [179] 100.0% ---------------------------------------------------------------------------- for-loop [50] 100.0% [60] 326(0.1%) 0(0.0%) rewrite-expression-head20 ...ore/matcher.rkt:126:0 rewriter [67] 100.0% ---------------------------------------------------------------------------- for-loop [53] 100.0% [61] 123624(44.1%) 330(0.1%) atab-add-altn ...weak/src/core/alt-table.rkt:200:0 best-and-tied-at-points [68] 53.3% override-at-pnts [69] 45.6% map [70] 0.3% ---------------------------------------------------------------------------- ??? [44] 29.8% for-loop [54] 70.2% [62] 27022(9.6%) 0(0.0%) one-iter ...plify-tweak/src/core/simplify.rkt:86:0 find-matches [71] 75.0% for-loop [72] 25.0% ---------------------------------------------------------------------------- loop [56] 100.0% [63] 4482(1.6%) 0(0.0%) for-loop ...lify-tweak/src/core/simplify.rkt:138:4 loop [73] 43.4% argmin [74] 27.8% for-loop [76] 14.1% make-sequence [105] 8.0% expression-cost [83] 6.6% ---------------------------------------------------------------------------- ??? [57] 100.0% [64] 1258(0.4%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [75] 100.0% ---------------------------------------------------------------------------- for-loop [53] 100.0% [65] 956(0.3%) 362(0.1%) loop ...implify-tweak/src/core/alt-table.rkt:174:2 loop [125] 31.2% argmax [79] 31.0% ---------------------------------------------------------------------------- make-alt-table [58] 100.0% [66] 326(0.1%) 326(0.1%) for-loop ...ify-tweak/src/core/alt-table.rkt:35:15 ---------------------------------------------------------------------------- rewrite-expression-head20 [60] 33.3% matcher [90] 66.7% [67] 326(0.1%) 0(0.0%) rewriter ...plify-tweak/src/core/matcher.rkt:128:2 for-loop [78] 66.7% *rules* [77] 33.3% ---------------------------------------------------------------------------- atab-add-altn [61] 100.0% [68] 65916(23.5%) 294(0.1%) best-and-tied-at-points ...ore/alt-table.rkt:112:0 errors [80] 97.6% make-sequence [105] 0.5% ---------------------------------------------------------------------------- atab-add-altn [61] 100.0% [69] 56376(20.1%) 302(0.1%) override-at-pnts ...k/src/core/alt-table.rkt:135:0 errors [80] 99.5% ---------------------------------------------------------------------------- atab-add-altn [61] 1.1% parse-loop15 [110] 1.8% loop [125] 8.1% f9 [149] 15.0% for-loop [21] 74.0% [70] 32134(11.5%) 300(0.1%) map ...t-7.0/collects/racket/private/map.rkt:35:13 loop [125] 52.9% ??? [135] 20.6% hash-ref! [100] 8.8% ??? [148] 7.6% loop [127] 6.6% loop [88] 1.1% point-error [138] 0.9% ??? [151] 0.5% ---------------------------------------------------------------------------- one-iter [62] 100.0% [71] 20262(7.2%) 0(0.0%) find-matches ...y-tweak/src/core/simplify.rkt:56:0 for-loop [81] 100.0% ---------------------------------------------------------------------------- one-iter [62] 100.0% [72] 6760(2.4%) 0(0.0%) for-loop ...plify-tweak/src/core/simplify.rkt:95:2 apply-match [82] 100.0% ---------------------------------------------------------------------------- baseline-error [15] 38.1% for-loop [63] 61.9% [73] 3146(1.1%) 0(0.0%) loop .../racket-7.0/collects/racket/list.rkt:751:4 expression-cost [83] 51.3% ??? [84] 38.1% for-loop [85] 10.6% ---------------------------------------------------------------------------- baseline-error [15] 34.3% for-loop [63] 65.7% [74] 1900(0.7%) 0(0.0%) argmin ...acket-7.0/collects/racket/list.rkt:765:0 ??? [84] 34.3% for-loop [85] 34.1% expression-cost [83] 31.6% ---------------------------------------------------------------------------- copying-mergesort [75] 17.8% generic-sort/key [64] 82.2% [75] 1258(0.4%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 loop [86] 76.3% copying-mergesort [75] 17.8% jloop [9] 5.9% ---------------------------------------------------------------------------- for-loop [63] 100.0% [76] 630(0.2%) 0(0.0%) for-loop ...ify-tweak/src/core/simplify.rkt:142:16 for-loop [87] 100.0% ---------------------------------------------------------------------------- rewriter [67] 100.0% [77] 326(0.1%) 0(0.0%) *rules* ...mplify-tweak/src/syntax/rules.rkt:783:0 for-loop [89] 100.0% ---------------------------------------------------------------------------- rewriter [67] 100.0% [78] 326(0.1%) 0(0.0%) for-loop ...lify-tweak/src/core/matcher.rkt:131:10 matcher [90] 100.0% ---------------------------------------------------------------------------- loop [65] 100.0% [79] 296(0.1%) 0(0.0%) argmax ...acket-7.0/collects/racket/list.rkt:766:0 expression-cost [83] 100.0% ---------------------------------------------------------------------------- make-alt-table [58] 0.2% ??? [180] 4.0% for-loop [46] 4.1% ??? [1] 4.4% override-at-pnts [69] 40.7% best-and-tied-at-points [68] 46.7% [80] 137828(49.2%) 0(0.0%) errors ...rbie/simplify-tweak/src/points.rkt:228:0 for-loop [91] 94.4% eval-prog [93] 5.6% ---------------------------------------------------------------------------- for-loop [81] 46.8% find-matches [71] 53.2% [81] 20262(7.2%) 3888(1.4%) for-loop ...plify-tweak/src/core/simplify.rkt:58:8 for-loop [81] 46.8% match-e [92] 40.4% ---------------------------------------------------------------------------- for-loop [72] 100.0% [82] 6760(2.4%) 0(0.0%) apply-match ...fy-tweak/src/core/simplify.rkt:65:0 for-loop [95] 67.2% match-e [92] 28.5% set [99] 4.4% ---------------------------------------------------------------------------- argmax [79] 10.5% for-loop [63] 10.6% argmin [74] 21.4% loop [73] 57.5% [83] 2808(1.0%) 0(0.0%) expression-cost ...fy-tweak/src/programs.rkt:204:0 compile [96] 100.0% ---------------------------------------------------------------------------- argmin [74] 35.2% loop [73] 64.8% [84] 1852(0.7%) 0(0.0%) ??? ...herbie/simplify-tweak/src/points.rkt:217:27 eval-errors [94] 100.0% ---------------------------------------------------------------------------- loop [73] 33.9% argmin [74] 66.1% [85] 980(0.3%) 0(0.0%) for-loop .../simplify-tweak/src/programs.rkt:205:2 table-ref [97] 100.0% ---------------------------------------------------------------------------- copying-mergesort [75] 100.0% [86] 960(0.3%) 360(0.1%) loop ...7.0/collects/racket/private/sort.rkt:96:12 ??? [142] 62.5% ---------------------------------------------------------------------------- for-loop [76] 100.0% [87] 630(0.2%) 630(0.2%) for-loop ...ify-tweak/src/core/simplify.rkt:146:23 ---------------------------------------------------------------------------- map [70] 0.8% loop [88] 99.2% [88] 352(0.1%) 352(0.1%) loop ...7.0/collects/racket/private/list.rkt:82:16 loop [88] 99.2% ---------------------------------------------------------------------------- *rules* [77] 100.0% [89] 326(0.1%) 0(0.0%) for-loop ...bie/simplify-tweak/src/common.rkt:71:9 flag-set? [98] 100.0% ---------------------------------------------------------------------------- for-loop [18] 50.0% for-loop [78] 50.0% [90] 326(0.1%) 0(0.0%) matcher ...mplify-tweak/src/core/matcher.rkt:163:2 ??? [8] 50.0% rewriter [67] 50.0% ---------------------------------------------------------------------------- errors [80] 100.0% [91] 130118(46.4%) 4352(1.6%) for-loop ...ie/simplify-tweak/src/points.rkt:230:2 ??? [142] 90.5% ??? [148] 3.2% ??? [151] 1.2% point-error [138] 1.0% keyword-apply [170] 0.3% ulp-difference [145] 0.3% ---------------------------------------------------------------------------- apply-match [82] 6.1% for-loop [111] 21.5% for-loop [81] 72.4% [92] 18298(6.5%) 5390(1.9%) match-e ...simplify-tweak/src/core/ematch.rkt:39:0 for-loop [101] 62.9% make-sequence [105] 5.1% variable? [5] 2.3% custom-in-set [129] 1.6% ??? [43] 0.5% ---------------------------------------------------------------------------- loop [125] 3.6% loop [28] 3.6% make-exacts-walkup [39] 8.5% errors [80] 84.3% [93] 9144(3.3%) 0(0.0%) eval-prog ...simplify-tweak/src/programs.rkt:130:0 temp68_2 [103] 77.9% hash-ref! [100] 9.5% loop [158] 5.6% eval [107] 3.6% eval4 [109] 3.3% ---------------------------------------------------------------------------- ??? [84] 22.3% ??? [1] 77.7% [94] 8292(3.0%) 0(0.0%) eval-errors ...simplify-tweak/src/points.rkt:203:0 for-loop [102] 100.0% ---------------------------------------------------------------------------- apply-match [82] 100.0% [95] 4540(1.6%) 0(0.0%) for-loop ...plify-tweak/src/core/simplify.rkt:78:2 merge-egraph-nodes! [104] 84.4% substitute-e [106] 15.6% ---------------------------------------------------------------------------- expression-cost [83] 100.0% [96] 2808(1.0%) 0(0.0%) compile ...e/simplify-tweak/src/programs.rkt:181:0 hash-ref! [100] 100.0% ---------------------------------------------------------------------------- for-loop [85] 100.0% [97] 980(0.3%) 658(0.2%) table-ref ...ie/simplify-tweak/src/common.rkt:42:0 for-loop [108] 32.9% ---------------------------------------------------------------------------- for-loop [89] 100.0% [98] 326(0.1%) 326(0.1%) flag-set? ...ie/simplify-tweak/src/config.rkt:28:0 ---------------------------------------------------------------------------- apply-match [82] 100.0% [99] 296(0.1%) 296(0.1%) set ...collects/racket/private/set-types.rkt:981:0 ---------------------------------------------------------------------------- eval-prog [93] 2.7% compile [96] 6.5% map [70] 11.0% ??? [113] 15.1% localize-error [45] 27.1% loop [125] 37.5% [100] 13008(4.6%) 2768(1.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 parse-loop15 [110] 55.5% ??? [113] 20.9% f9 [149] 16.2% bigfloat-hash [124] 1.0% ---------------------------------------------------------------------------- match-e [92] 100.0% [101] 12346(4.4%) 7324(2.6%) for-loop ...mplify-tweak/src/core/ematch.rkt:52:11 for-loop [111] 43.5% loop [125] 4.9% foldr [119] 2.7% foldl [121] 2.5% filter [182] 1.3% curry* [122] 1.2% ---------------------------------------------------------------------------- eval-errors [94] 100.0% [102] 8292(3.0%) 928(0.3%) for-loop ...ie/simplify-tweak/src/points.rkt:205:2 ??? [142] 88.8% ---------------------------------------------------------------------------- eval-prog [93] 100.0% [103] 7122(2.5%) 0(0.0%) temp68_2 (unknown source) compile16 [112] 100.0% ---------------------------------------------------------------------------- for-loop [115] 13.0% for-loop [95] 87.0% [104] 3830(1.4%) 298(0.1%) merge-egraph-nodes! ...k/src/core/egraph.rkt:145:0 update-leader! [114] 66.4% for-loop [115] 13.0% dedup-children! [120] 8.4% enode-merge! [117] 4.4% ---------------------------------------------------------------------------- best-and-tied-at-points [68] 19.1% for-loop [63] 22.6% match-e [92] 58.3% [105] 1592(0.6%) 1288(0.5%) make-sequence ...ects/racket/private/for.rkt:528:2 ??? [123] 19.1% ---------------------------------------------------------------------------- for-loop [116] 33.2% for-loop [95] 66.8% [106] 710(0.3%) 0(0.0%) substitute-e ...ify-tweak/src/core/ematch.rkt:64:0 for-loop [116] 83.4% variable? [5] 16.6% ---------------------------------------------------------------------------- eval-prog [93] 100.0% [107] 332(0.1%) 0(0.0%) eval (unknown source) namespace-syntax-introduce3 [118] 100.0% ---------------------------------------------------------------------------- table-ref [97] 100.0% [108] 322(0.1%) 322(0.1%) for-loop ...bie/simplify-tweak/src/common.rkt:44:4 ---------------------------------------------------------------------------- eval-prog [93] 100.0% [109] 306(0.1%) 0(0.0%) eval4 (unknown source) syntax-e [3] 100.0% ---------------------------------------------------------------------------- hash-ref! [100] 100.0% [110] 9328(3.3%) 0(0.0%) parse-loop15 ...s/racket/match/compiler.rkt:418:15 loop [125] 83.2% loop [127] 11.0% map [70] 5.8% ---------------------------------------------------------------------------- for-loop [101] 100.0% [111] 7940(2.8%) 592(0.2%) for-loop ...mplify-tweak/src/core/ematch.rkt:58:37 match-e [92] 92.5% ---------------------------------------------------------------------------- temp68_2 [103] 100.0% [112] 7122(2.5%) 0(0.0%) compile16 (unknown source) temp74_0 [126] 100.0% ---------------------------------------------------------------------------- hash-ref! [100] 100.0% [113] 3680(1.3%) 656(0.2%) ??? ...erbie/simplify-tweak/src/programs.rkt:189:5 hash-ref! [100] 69.6% loop [125] 23.7% ---------------------------------------------------------------------------- merge-egraph-nodes! [104] 100.0% [114] 2874(1.0%) 0(0.0%) update-leader! ...-tweak/src/core/egraph.rkt:213:0 for-loop [128] 89.6% custom-in-set [129] 10.4% ---------------------------------------------------------------------------- merge-egraph-nodes! [104] 100.0% [115] 996(0.4%) 0(0.0%) for-loop ...mplify-tweak/src/core/egraph.rkt:199:4 merge-egraph-nodes! [104] 100.0% ---------------------------------------------------------------------------- substitute-e [106] 100.0% [116] 710(0.3%) 0(0.0%) for-loop ...mplify-tweak/src/core/ematch.rkt:73:24 mk-enode! [130] 50.1% substitute-e [106] 49.9% ---------------------------------------------------------------------------- merge-egraph-nodes! [104] 100.0% [117] 336(0.1%) 0(0.0%) enode-merge! ...ify-tweak/src/core/enode.rkt:128:0 adopt-enode! [131] 100.0% ---------------------------------------------------------------------------- eval [107] 100.0% [118] 332(0.1%) 332(0.1%) namespace-syntax-introduce3 (unknown source) ---------------------------------------------------------------------------- for-loop [101] 100.0% [119] 328(0.1%) 328(0.1%) foldr ....0/collects/racket/private/list.rkt:242:4 ---------------------------------------------------------------------------- merge-egraph-nodes! [104] 100.0% [120] 322(0.1%) 0(0.0%) dedup-children! ...-tweak/src/core/enode.rkt:199:0 loop [132] 100.0% ---------------------------------------------------------------------------- for-loop [101] 100.0% [121] 312(0.1%) 312(0.1%) foldl ....0/collects/racket/private/list.rkt:229:4 ---------------------------------------------------------------------------- for-loop [101] 100.0% [122] 306(0.1%) 0(0.0%) curry* ...et-7.0/collects/racket/function.rkt:44:2 procedure-arity [133] 100.0% ---------------------------------------------------------------------------- make-sequence [105] 100.0% [123] 304(0.1%) 304(0.1%) ??? ...-7.0/collects/racket/private/for.rkt:1203:9 ---------------------------------------------------------------------------- hash-ref! [100] 100.0% [124] 256(0.1%) 0(0.0%) bigfloat-hash ...h/private/bigfloat/mpfr.rkt:167:0 bigfloat->sig+exp [134] 100.0% ---------------------------------------------------------------------------- make-exacts-walkup [39] 0.0% loop [65] 0.0% ??? [44] 0.1% for-loop [101] 0.2% loop [35] 0.2% ??? [1] 0.4% ??? [113] 1.0% parse-loop15 [110] 4.9% map [70] 14.3% for-loop [21] 21.8% loop [125] 57.1% [125] 88138(31.4%) 2184(0.8%) loop ...-7.0/collects/racket/private/map.rkt:40:19 loop [125] 57.1% ??? [135] 21.4% ??? [142] 13.1% hash-ref! [100] 5.8% eval-prog [93] 0.4% point-error [138] 0.3% ??? [151] 0.3% ??? [148] 0.2% map [70] 0.2% composed [2] 0.2% double->posit16 [167] 0.0% bf-quire16-fdp-sub [139] 0.0% ---------------------------------------------------------------------------- compile16 [112] 100.0% [126] 7122(2.5%) 0(0.0%) temp74_0 (unknown source) expand-single [136] 95.3% compile-top9 [140] 4.7% ---------------------------------------------------------------------------- parse-loop15 [110] 1.2% map [70] 6.2% loop [127] 92.5% [127] 4560(1.6%) 0(0.0%) loop ...-7.0/collects/racket/private/map.rkt:54:19 loop [127] 92.5% ??? [4] 6.2% ??? [148] 1.0% ??? [151] 0.2% ---------------------------------------------------------------------------- update-leader! [114] 100.0% [128] 2574(0.9%) 0(0.0%) for-loop ...mplify-tweak/src/core/egraph.rkt:218:6 for-loop [137] 75.8% hash-update! [144] 24.2% ---------------------------------------------------------------------------- match-e [92] 49.7% update-leader! [114] 50.3% [129] 596(0.2%) 596(0.2%) custom-in-set ...acket/private/set-types.rkt:577:0 ---------------------------------------------------------------------------- for-loop [116] 100.0% [130] 356(0.1%) 356(0.1%) mk-enode! ...mplify-tweak/src/core/egraph.rkt:99:0 ---------------------------------------------------------------------------- enode-merge! [117] 100.0% [131] 336(0.1%) 336(0.1%) adopt-enode! ...ify-tweak/src/core/enode.rkt:104:0 ---------------------------------------------------------------------------- dedup-children! [120] 14.3% loop [132] 85.7% [132] 322(0.1%) 0(0.0%) loop ...racket-7.0/collects/racket/list.rkt:417:34 loop [132] 85.7% loop [158] 14.3% ---------------------------------------------------------------------------- curry* [122] 100.0% [133] 306(0.1%) 306(0.1%) procedure-arity ...ket/private/norm-arity.rkt:7:27 ---------------------------------------------------------------------------- bigfloat-hash [124] 100.0% [134] 256(0.1%) 0(0.0%) bigfloat->sig+exp ...ivate/bigfloat/mpfr.rkt:372:0 new-mpz [141] 100.0% ---------------------------------------------------------------------------- map [70] 18.0% loop [125] 82.0% [135] 36610(13.1%) 330(0.1%) ??? ...herbie/simplify-tweak/src/points.rkt:214:26 ??? [142] 89.6% ??? [148] 8.7% ??? [151] 0.8% ---------------------------------------------------------------------------- temp74_0 [126] 100.0% [136] 6788(2.4%) 0(0.0%) expand-single (unknown source) expand-capturing-lifts [143] 100.0% ---------------------------------------------------------------------------- for-loop [128] 100.0% [137] 1950(0.7%) 0(0.0%) for-loop ...mplify-tweak/src/core/egraph.rkt:219:8 hash-update! [144] 100.0% ---------------------------------------------------------------------------- loop [125] 15.6% map [70] 15.7% for-loop [91] 68.7% [138] 1912(0.7%) 298(0.1%) point-error ...simplify-tweak/src/points.rkt:195:0 ulp-difference [145] 50.0% keyword-apply [170] 34.4% ---------------------------------------------------------------------------- loop [125] 100.0% [139] 366(0.1%) 0(0.0%) bf-quire16-fdp-sub ...c/syntax/softposit.rkt:164:0 bf* [175] 100.0% ---------------------------------------------------------------------------- temp74_0 [126] 100.0% [140] 334(0.1%) 0(0.0%) compile-top9 (unknown source) compile-forms31 [146] 100.0% ---------------------------------------------------------------------------- bigfloat->sig+exp [134] 100.0% [141] 256(0.1%) 256(0.1%) new-mpz ...-lib/math/private/bigfloat/gmp.rkt:73:0 ---------------------------------------------------------------------------- jloop [9] 0.2% loop [86] 0.3% composed [2] 3.2% for-loop [102] 3.8% loop [125] 15.8% ??? [135] 16.7% for-loop [91] 60.0% [142] 196256(70.0%) 1908(0.7%) ??? ...erbie/simplify-tweak/src/programs.rkt:146:2 ??? [147] 87.5% ??? [148] 6.7% ->bf [152] 3.0% ??? [151] 1.8% ---------------------------------------------------------------------------- loop [158] 7.0% expand-single [136] 93.0% [143] 7300(2.6%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [150] 93.0% dispatch-transformer41 [6] 4.2% loop [158] 2.8% ---------------------------------------------------------------------------- for-loop [128] 24.2% for-loop [137] 75.8% [144] 2574(0.9%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [153] 100.0% ---------------------------------------------------------------------------- for-loop [91] 25.9% point-error [138] 74.1% [145] 1290(0.5%) 628(0.2%) ulp-difference ...implify-tweak/src/float.rkt:14:0 f9 [149] 51.3% ---------------------------------------------------------------------------- compile-top9 [140] 100.0% [146] 334(0.1%) 0(0.0%) compile-forms31 (unknown source) for-loop [168] 100.0% ---------------------------------------------------------------------------- ??? [142] 100.0% [147] 171818(61.3%) 28334(10.1%) ??? ...t-7.0/collects/racket/private/kw.rkt:592:14 double->posit16 [167] 48.3% posit16-neg [154] 20.3% create-quire1633 [156] 10.3% ??? [173] 1.4% keyword-apply [170] 1.0% big-posit16-mul [163] 1.0% big-posit16-sqrt [164] 0.4% big-posit16-div [165] 0.4% big-posit16-neg [166] 0.4% ---------------------------------------------------------------------------- loop [127] 3.3% ??? [4] 7.2% ??? [135] 7.9% map [70] 9.3% for-loop [91] 9.9% ??? [55] 12.1% loop [125] 18.6% ??? [142] 31.7% [148] 40052(14.3%) 1710(0.6%) ??? ...tract/private/arrow-higher-order.rkt:357:33 ->flonum [155] 55.9% double->posit16 [167] 25.9% best-alt [159] 12.1% create-quire1633 [156] 1.0% ---------------------------------------------------------------------------- ulp-difference [145] 9.5% hash-ref! [100] 90.5% [149] 6970(2.5%) 662(0.2%) f9 ....0/collects/racket/match/compiler.rkt:507:40 map [70] 90.5% ---------------------------------------------------------------------------- expand-capturing-lifts [143] 100.0% [150] 6788(2.4%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [157] 90.7% loop [158] 9.3% ---------------------------------------------------------------------------- ??? [135] 4.5% map [70] 5.0% loop [127] 5.4% loop [125] 9.0% for-loop [91] 23.6% ??? [142] 52.6% [151] 6624(2.4%) 1286(0.5%) ??? ...ects/racket/contract/private/prop.rkt:519:4 ??? [160] 80.6% ---------------------------------------------------------------------------- ??? [142] 100.0% [152] 5900(2.1%) 2068(0.7%) ->bf ...erbie/simplify-tweak/src/programs.rkt:62:0 bf [161] 64.9% ---------------------------------------------------------------------------- hash-update! [144] 100.0% [153] 2574(0.9%) 0(0.0%) ??? ...e/simplify-tweak/src/core/egraph.rkt:221:24 for-loop [162] 100.0% ---------------------------------------------------------------------------- ??? [147] 100.0% [154] 34820(12.4%) 2190(0.8%) posit16-neg ...s/softposit-rkt/softposit.rkt:212:0 double->posit16 [167] 93.7% ---------------------------------------------------------------------------- ??? [148] 100.0% [155] 23006(8.2%) 14126(5.0%) ->flonum ...e/simplify-tweak/src/programs.rkt:38:0 return/no-unsupplied [169] 22.0% ??? [174] 10.9% keyword-apply [170] 4.3% ---------------------------------------------------------------------------- ??? [148] 2.2% ??? [147] 97.8% [156] 18072(6.4%) 3166(1.1%) create-quire1633 ...tposit-rkt/softposit.rkt:175:0 double->posit16 [167] 82.5% ---------------------------------------------------------------------------- lambda-clause-expander [150] 13.0% for-loop [168] 87.0% [157] 6156(2.2%) 0(0.0%) finish-bodys (unknown source) for-loop [168] 100.0% ---------------------------------------------------------------------------- expand-capturing-lifts [143] 1.1% for-loop [168] 2.5% datum->syntax6 [29] 2.6% eval-prog [93] 3.7% lambda-clause-expander [150] 5.1% loop [132] 5.3% loop [158] 6.5% syntax-e/no-taint [14] 73.2% [158] 6030(2.2%) 1264(0.5%) loop (unknown source) gf [171] 68.1% loop [158] 6.5% dispatch-transformer41 [6] 5.1% expand-capturing-lifts [143] 3.7% expand-id-application-form17 [178] 2.5% for-loop [168] 1.1% ---------------------------------------------------------------------------- ??? [148] 100.0% [159] 5456(1.9%) 0(0.0%) best-alt .../simplify-tweak/src/mainloop.rkt:106:0 loop [172] 76.2% argmins [176] 23.8% ---------------------------------------------------------------------------- ??? [151] 100.0% [160] 5338(1.9%) 4112(1.5%) ??? ...lects/racket/contract/private/orc.rkt:83:14 ??? [173] 11.8% keyword-apply [170] 11.2% ---------------------------------------------------------------------------- ->bf [152] 100.0% [161] 3832(1.4%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 new-mpfr [194] 89.4% ??? [195] 10.6% ---------------------------------------------------------------------------- ??? [153] 100.0% [162] 2574(0.9%) 2574(0.9%) for-loop ...plify-tweak/src/core/egraph.rkt:222:26 ---------------------------------------------------------------------------- ??? [147] 100.0% [163] 1654(0.6%) 0(0.0%) big-posit16-mul .../src/syntax/softposit.rkt:110:0 bf* [175] 100.0% ---------------------------------------------------------------------------- ??? [147] 100.0% [164] 708(0.3%) 0(0.0%) big-posit16-sqrt ...src/syntax/softposit.rkt:112:0 ??? [181] 100.0% ---------------------------------------------------------------------------- ??? [147] 100.0% [165] 706(0.3%) 0(0.0%) big-posit16-div .../src/syntax/softposit.rkt:111:0 ??? [181] 53.5% ...higher-order.rkt:361:33 [177] 46.5% ---------------------------------------------------------------------------- ??? [147] 100.0% [166] 704(0.3%) 0(0.0%) big-posit16-neg .../src/syntax/softposit.rkt:113:0 ??? [181] 100.0% ---------------------------------------------------------------------------- loop [125] 0.2% ??? [148] 7.3% create-quire1633 [156] 10.6% posit16-neg [154] 23.1% ??? [147] 58.8% [167] 141160(50.4%) 598(0.2%) double->posit16 ...ftposit-rkt/softposit.rkt:248:0 get-ffi-obj* [179] 99.6% ---------------------------------------------------------------------------- fallback-loop [25] 0.2% loop [158] 1.6% compile-forms31 [146] 5.0% for-loop [168] 6.0% finish-bodys [157] 85.7% [168] 6698(2.4%) 1268(0.5%) for-loop (unknown source) finish-bodys [157] 74.6% for-loop [168] 6.0% syntax-e [3] 5.2% [running body] [188] 1.6% loop [158] 0.3% expand-implicit [7] 0.2% dispatch-transformer41 [6] 0.2% ---------------------------------------------------------------------------- ->flonum [155] 100.0% [169] 5072(1.8%) 1798(0.6%) return/no-unsupplied ...ct/private/arr-i.rkt:534:0 filter [182] 64.6% ---------------------------------------------------------------------------- for-loop [91] 8.2% ??? [160] 13.6% point-error [138] 15.0% ->flonum [155] 22.3% ??? [147] 41.0% [170] 4400(1.6%) 4400(1.6%) keyword-apply ...lects/racket/private/kw.rkt:421:2 ---------------------------------------------------------------------------- loop [158] 100.0% [171] 4258(1.5%) 376(0.1%) gf (unknown source) propagation-apply [183] 46.3% propagation-merge [184] 31.0% propagation-apply-shifted [186] 14.0% ---------------------------------------------------------------------------- best-alt [159] 100.0% [172] 4158(1.5%) 0(0.0%) loop .../herbie/simplify-tweak/src/common.rkt:94:2 ??? [180] 100.0% ---------------------------------------------------------------------------- ??? [160] 20.2% ??? [147] 79.8% [173] 3104(1.1%) 3104(1.1%) ??? ...-7.0/collects/racket/lazy-require.rkt:106:6 ---------------------------------------------------------------------------- ->flonum [155] 100.0% [174] 2498(0.9%) 1228(0.4%) ??? ...s/racket/contract/private/arr-i.rkt:1252:29 ??? [185] 50.8% ---------------------------------------------------------------------------- bf-quire16-fdp-sub [139] 18.1% big-posit16-mul [163] 81.9% [175] 2020(0.7%) 0(0.0%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [181] 100.0% ---------------------------------------------------------------------------- best-alt [159] 100.0% [176] 1298(0.5%) 0(0.0%) argmins ...rbie/simplify-tweak/src/common.rkt:93:0 ??? [180] 100.0% ---------------------------------------------------------------------------- big-posit16-div [165] 100.0% [177] 328(0.1%) 0(0.0%) ...higher-order.rkt:361:33 (unknown source) ??? [187] 100.0% ---------------------------------------------------------------------------- loop [158] 100.0% [178] 298(0.1%) 0(0.0%) expand-id-application-form17 (unknown source) syntax-e/no-taint [14] 100.0% ---------------------------------------------------------------------------- posit16< [59] 0.2% double->posit16 [167] 99.5% [179] 141272(50.4%) 28704(10.2%) get-ffi-obj* ...-7.0/collects/ffi/unsafe.rkt:209:2 get-ffi-lib9 [189] 79.7% ---------------------------------------------------------------------------- argmins [176] 23.8% loop [172] 76.2% [180] 5456(1.9%) 0(0.0%) ??? ...rbie/simplify-tweak/src/mainloop.rkt:108:19 errors [80] 100.0% ---------------------------------------------------------------------------- big-posit16-div [165] 9.9% big-posit16-neg [166] 18.5% big-posit16-sqrt [164] 18.6% bf* [175] 53.0% [181] 3810(1.4%) 354(0.1%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfmul [190] 72.1% bfsqrt [191] 18.6% ---------------------------------------------------------------------------- for-loop [101] 9.2% return/no-unsupplied [169] 90.8% [182] 3606(1.3%) 3606(1.3%) filter ...0/collects/racket/private/list.rkt:256:2 ---------------------------------------------------------------------------- gf [171] 100.0% [183] 1970(0.7%) 1970(0.7%) propagation-apply (unknown source) ---------------------------------------------------------------------------- gf [171] 100.0% [184] 1318(0.5%) 1318(0.5%) propagation-merge (unknown source) ---------------------------------------------------------------------------- ??? [174] 100.0% [185] 1270(0.5%) 1270(0.5%) ??? ...ects/racket/contract/private/prop.rkt:274:4 ---------------------------------------------------------------------------- gf [171] 100.0% [186] 594(0.2%) 594(0.2%) propagation-apply-shifted (unknown source) ---------------------------------------------------------------------------- ...higher-order.rkt:361:33 [177] 100.0% [187] 328(0.1%) 328(0.1%) ??? ...cts/racket/contract/private/list.rkt:209:10 ---------------------------------------------------------------------------- for-loop [168] 100.0% [188] 208(0.1%) 0(0.0%) [running body] ...ollects/syntax/id-table.rkt":##f ??? [192] 100.0% ---------------------------------------------------------------------------- get-ffi-obj* [179] 100.0% [189] 112568(40.2%) 50624(18.1%) get-ffi-lib9 ...-7.0/collects/ffi/unsafe.rkt:121:0 get-cross-lib-search-dirs [193] 52.8% ---------------------------------------------------------------------------- ??? [181] 100.0% [190] 2748(1.0%) 0(0.0%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:821:4 new-mpfr [194] 65.1% ??? [195] 34.9% ---------------------------------------------------------------------------- ??? [181] 100.0% [191] 708(0.3%) 0(0.0%) bfsqrt ...lib/math/private/bigfloat/mpfr.rkt:618:4 ??? [195] 50.3% new-mpfr [194] 49.7% ---------------------------------------------------------------------------- [running body] [188] 100.0% [192] 208(0.1%) 0(0.0%) ??? ...ects/racket/contract/private/list.rkt:798:4 ??? [196] 100.0% ---------------------------------------------------------------------------- get-ffi-lib9 [189] 100.0% [193] 59394(21.2%) 54322(19.4%) get-cross-lib-search-dirs ...rivate/dirs.rkt:168:7 ??? [197] 8.5% ---------------------------------------------------------------------------- bfsqrt [191] 6.3% bfmul [190] 32.1% bf [161] 61.5% [194] 5568(2.0%) 5568(2.0%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 ---------------------------------------------------------------------------- bfsqrt [191] 20.7% bf [161] 23.6% bfmul [190] 55.7% [195] 1720(0.6%) 1720(0.6%) ??? /opt/racket-7.0/collects/ffi/unsafe.rkt:898:4 ---------------------------------------------------------------------------- ??? [192] 100.0% [196] 208(0.1%) 0(0.0%) ??? ...s/racket/contract/private/vector.rkt:477:12 ??? [198] 100.0% ---------------------------------------------------------------------------- get-cross-lib-search-dirs [193] 100.0% [197] 5072(1.8%) 4128(1.5%) ??? ...racket-7.0/collects/racket/promise.rkt:42:2 call-with-exception-handler [199] 18.6% ---------------------------------------------------------------------------- ??? [196] 100.0% [198] 208(0.1%) 208(0.1%) ??? ...ects/racket/contract/private/guts.rkt:746:8 ---------------------------------------------------------------------------- ??? [197] 100.0% [199] 944(0.3%) 0(0.0%) call-with-exception-handler ...re-scheme.rkt:265:2 ??? [200] 100.0% ---------------------------------------------------------------------------- call-with-exception-handler [199] 100.0% [200] 944(0.3%) 944(0.3%) ??? ...acket-7.0/collects/racket/promise.rkt:74:15 ----------------------------------------------------------------------------