Profiling results ----------------- Total cpu time observed: 51032ms (out of 51376ms) Number of samples taken: 188 (once every 271ms) (Hiding functions with self<1.0% and local<2.0%: 1 of 209 hidden) ============================================================================ Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ============================================================================ ??? [27] 100.0% [1] 51032(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [15] 100.0% ---------------------------------------------------------------------------- ??? [27] 100.0% [2] 2796(5.5%) 0(0.0%) get-final-combination ...up/src/mainloop.rkt:360:0 infer-splitpoints [16] 100.0% ---------------------------------------------------------------------------- ??? [90] 100.0% [3] 2152(4.2%) 0(0.0%) approximate9 ...s-cleanup/src/core/taylor.rkt:12:0 loop [19] 63.2% for-loop [21] 25.8% taylor [29] 11.0% ---------------------------------------------------------------------------- ??? [90] 13.9% hash-ref! [133] 86.1% [4] 1616(3.2%) 0(0.0%) simplify ...rious-cleanup/src/core/reduce.rkt:16:0 f67 [17] 100.0% ---------------------------------------------------------------------------- matcher [108] 100.0% [5] 1614(3.2%) 0(0.0%) ??? ...various-cleanup/src/core/matcher.rkt:130:11 for-loop [18] 100.0% ---------------------------------------------------------------------------- copying-mergesort [67] 100.0% [6] 1262(2.5%) 0(0.0%) jloop ...0/collects/racket/private/sort.rkt:120:23 ??? [62] 100.0% ---------------------------------------------------------------------------- hash-ref! [133] 100.0% [7] 878(1.7%) 0(0.0%) ??? ...e/various-cleanup/src/core/taylor.rkt:68:15 hash-ref! [133] 51.0% ??? [90] 49.0% ---------------------------------------------------------------------------- hash-ref! [133] 100.0% [8] 878(1.7%) 0(0.0%) ??? ...e/various-cleanup/src/core/taylor.rkt:45:15 hash-ref! [133] 76.5% ??? [26] 23.5% ---------------------------------------------------------------------------- hash-ref! [133] 100.0% [9] 672(1.3%) 0(0.0%) ??? .../various-cleanup/src/core/taylor.rkt:291:26 for-loop [20] 100.0% ---------------------------------------------------------------------------- map [47] 100.0% [10] 514(1.0%) 0(0.0%) taylor-invert ...cleanup/src/core/taylor.rkt:318:0 first-nonzero-exp [22] 100.0% ---------------------------------------------------------------------------- for-loop [196] 100.0% [11] 506(1.0%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [23] 100.0% ---------------------------------------------------------------------------- hash-ref! [133] 100.0% [12] 466(0.9%) 0(0.0%) ??? .../various-cleanup/src/core/taylor.rkt:301:23 for-loop [24] 100.0% ---------------------------------------------------------------------------- map [47] 100.0% [13] 450(0.9%) 224(0.4%) simplify* ...ious-cleanup/src/core/reduce.rkt:31:0 variable? [163] 50.2% ---------------------------------------------------------------------------- loop [190] 100.0% [14] 210(0.4%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [25] 100.0% ---------------------------------------------------------------------------- profile-thunk16 [1] 100.0% [15] 51032(100.0%) 0(0.0%) run ...et-7.0/share/pkgs/profile-lib/main.rkt:39:2 ??? [27] 100.0% ---------------------------------------------------------------------------- get-final-combination [2] 100.0% [16] 2796(5.5%) 0(0.0%) infer-splitpoints ...nup/src/core/regimes.rkt:34:0 for-loop [28] 100.0% ---------------------------------------------------------------------------- map [47] 22.1% simplify [4] 77.9% [17] 1616(3.2%) 0(0.0%) f67 ...0/collects/racket/match/compiler.rkt:507:40 map [47] 87.3% eval-const-expr [66] 12.7% ---------------------------------------------------------------------------- ??? [5] 100.0% [18] 1614(3.2%) 0(0.0%) for-loop ...us-cleanup/src/core/matcher.rkt:132:15 matcher [108] 100.0% ---------------------------------------------------------------------------- approximate9 [3] 100.0% [19] 1360(2.7%) 0(0.0%) loop ...e/various-cleanup/src/core/taylor.rkt:87:4 hash-ref! [133] 64.6% ??? [90] 35.4% ---------------------------------------------------------------------------- ??? [9] 100.0% [20] 672(1.3%) 0(0.0%) for-loop ...ous-cleanup/src/core/taylor.rkt:291:52 hash-ref! [133] 100.0% ---------------------------------------------------------------------------- approximate9 [3] 100.0% [21] 556(1.1%) 278(0.5%) for-loop ...ious-cleanup/src/core/taylor.rkt:30:18 taylor [29] 50.0% ---------------------------------------------------------------------------- taylor-invert [10] 100.0% [22] 514(1.0%) 0(0.0%) first-nonzero-exp ...nup/src/core/taylor.rkt:266:0 hash-ref! [133] 100.0% ---------------------------------------------------------------------------- expand-implicit [11] 100.0% [23] 506(1.0%) 206(0.4%) resolve+shift28 (unknown source) fallback-loop [30] 59.3% ---------------------------------------------------------------------------- ??? [12] 100.0% [24] 466(0.9%) 0(0.0%) for-loop ...ous-cleanup/src/core/taylor.rkt:304:27 hash-ref! [133] 100.0% ---------------------------------------------------------------------------- syntax-e [14] 100.0% [25] 210(0.4%) 0(0.0%) syntax-e/no-taint (unknown source) loop [190] 100.0% ---------------------------------------------------------------------------- ??? [8] 100.0% [26] 206(0.4%) 0(0.0%) ??? .../various-cleanup/src/core/taylor.rkt:294:19 hash-ref! [133] 100.0% ---------------------------------------------------------------------------- for-loop [125] 0.2% for-loop [104] 3.5% run [15] 48.1% [27] 51032(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 48.1% run-improve43 [31] 37.1% prepare-points [32] 4.7% get-final-combination [2] 2.4% ??? [62] 2.2% oracle-error [34] 2.0% ulp-difference [149] 0.6% errors [92] 0.6% eval-errors [124] 0.6% ??? [90] 0.5% baseline-error [35] 0.3% errors-score [36] 0.3% eval-const-expr [66] 0.2% ordinary-value? [145] 0.2% ---------------------------------------------------------------------------- infer-splitpoints [16] 100.0% [28] 2796(5.5%) 0(0.0%) for-loop ...ious-cleanup/src/core/regimes.rkt:46:6 option-on-expr [33] 100.0% ---------------------------------------------------------------------------- approximate9 [3] 16.4% for-loop [21] 19.3% hash-ref! [133] 28.6% taylor [29] 35.7% [29] 720(1.4%) 0(0.0%) taylor ...arious-cleanup/src/core/taylor.rkt:170:0 taylor [29] 35.7% map [47] 35.7% debug-print [37] 28.6% ---------------------------------------------------------------------------- resolve+shift28 [23] 100.0% [30] 300(0.6%) 0(0.0%) fallback-loop (unknown source) for-loop [196] 100.0% ---------------------------------------------------------------------------- ??? [27] 100.0% [31] 39194(76.8%) 0(0.0%) run-improve43 ...us-cleanup/src/mainloop.rkt:339:0 for-loop [38] 100.0% ---------------------------------------------------------------------------- ??? [27] 100.0% [32] 4824(9.5%) 0(0.0%) prepare-points ...ous-cleanup/src/points.rkt:166:0 loop [39] 100.0% ---------------------------------------------------------------------------- for-loop [28] 100.0% [33] 2796(5.5%) 0(0.0%) option-on-expr ...eanup/src/core/regimes.rkt:123:0 sort-context-on-expr [41] 55.7% for-loop [42] 32.4% err-lsts->split-indices [43] 11.9% ---------------------------------------------------------------------------- ??? [27] 100.0% [34] 2080(4.1%) 0(0.0%) oracle-error ...rious-cleanup/src/points.rkt:207:0 for-loop [40] 100.0% ---------------------------------------------------------------------------- ??? [27] 100.0% [35] 300(0.6%) 0(0.0%) baseline-error ...ous-cleanup/src/points.rkt:211:0 argmin [93] 100.0% ---------------------------------------------------------------------------- ??? [27] 100.0% [36] 288(0.6%) 0(0.0%) errors-score ...rious-cleanup/src/points.rkt:215:0 loop [44] 100.0% ---------------------------------------------------------------------------- taylor [29] 100.0% [37] 206(0.4%) 0(0.0%) debug-print ...various-cleanup/src/debug.rkt:110:0 for-loop [45] 100.0% ---------------------------------------------------------------------------- run-improve43 [31] 100.0% [38] 39194(76.8%) 0(0.0%) for-loop ...various-cleanup/src/mainloop.rkt:354:4 run-iter! [46] 100.0% ---------------------------------------------------------------------------- prepare-points [32] 100.0% [39] 4824(9.5%) 300(0.6%) loop ...erbie/various-cleanup/src/points.rkt:143:4 loop [48] 40.3% ??? [49] 34.0% andmap [51] 19.5% ---------------------------------------------------------------------------- oracle-error [34] 100.0% [40] 2080(4.1%) 0(0.0%) for-loop ...e/various-cleanup/src/points.rkt:208:2 loop [73] 71.7% map [47] 28.3% ---------------------------------------------------------------------------- option-on-expr [33] 100.0% [41] 1556(3.0%) 0(0.0%) sort-context-on-expr ...src/core/regimes.rkt:118:0 ??? [50] 100.0% ---------------------------------------------------------------------------- option-on-expr [33] 100.0% [42] 906(1.8%) 0(0.0%) for-loop ...ous-cleanup/src/core/regimes.rkt:131:4 errors [92] 100.0% ---------------------------------------------------------------------------- option-on-expr [33] 100.0% [43] 334(0.7%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:254:0 loop [52] 100.0% ---------------------------------------------------------------------------- errors-score [36] 100.0% [44] 288(0.6%) 0(0.0%) loop .../racket-7.0/collects/racket/list.rkt:559:2 ordinary-value? [145] 100.0% ---------------------------------------------------------------------------- debug-print [37] 100.0% [45] 206(0.4%) 206(0.4%) for-loop ...ie/various-cleanup/src/debug.rkt:116:2 ---------------------------------------------------------------------------- for-loop [38] 100.0% [46] 39194(76.8%) 0(0.0%) run-iter! ...arious-cleanup/src/mainloop.rkt:320:0 simplify! [53] 75.2% finalize-iter! [54] 14.6% gen-series! [55] 6.1% gen-rewrites! [56] 4.1% ---------------------------------------------------------------------------- taylor [29] 12.9% for-loop [40] 29.4% f67 [17] 57.7% [47] 1998(3.9%) 0(0.0%) map ...t-7.0/collects/racket/private/map.rkt:35:13 parse-loop80 [58] 35.2% ??? [86] 29.4% f67 [17] 17.8% taylor-invert [10] 12.9% simplify* [13] 4.7% ---------------------------------------------------------------------------- loop [39] 100.0% [48] 1944(3.8%) 646(1.3%) loop ...erbie/various-cleanup/src/points.rkt:102:2 ??? [62] 50.0% ??? [63] 16.8% ---------------------------------------------------------------------------- loop [39] 100.0% [49] 1638(3.2%) 0(0.0%) ??? ...herbie/various-cleanup/src/points.rkt:127:2 ??? [90] 81.7% loop [73] 18.3% ---------------------------------------------------------------------------- sort-context-on-expr [41] 100.0% [50] 1556(3.0%) 0(0.0%) ??? ...-7.0/collects/racket/private/sort.rkt:369:3 generic-sort/key [57] 81.1% loop [60] 18.9% ---------------------------------------------------------------------------- loop [39] 100.0% [51] 942(1.8%) 0(0.0%) andmap ...0/collects/racket/private/map.rkt:102:13 ordinary-value? [145] 100.0% ---------------------------------------------------------------------------- err-lsts->split-indices [43] 100.0% [52] 334(0.7%) 0(0.0%) loop ...various-cleanup/src/core/regimes.rkt:305:4 for-loop [59] 100.0% ---------------------------------------------------------------------------- run-iter! [46] 100.0% [53] 29474(57.8%) 0(0.0%) simplify! ...arious-cleanup/src/mainloop.rkt:217:0 ??? [61] 99.0% for-loop [69] 1.0% ---------------------------------------------------------------------------- run-iter! [46] 100.0% [54] 5730(11.2%) 0(0.0%) finalize-iter! ...s-cleanup/src/mainloop.rkt:271:0 ??? [63] 100.0% ---------------------------------------------------------------------------- run-iter! [46] 100.0% [55] 2376(4.7%) 0(0.0%) gen-series! ...ious-cleanup/src/mainloop.rkt:153:0 for-loop [64] 100.0% ---------------------------------------------------------------------------- run-iter! [46] 100.0% [56] 1614(3.2%) 0(0.0%) gen-rewrites! ...us-cleanup/src/mainloop.rkt:176:0 for-loop [65] 100.0% ---------------------------------------------------------------------------- ??? [50] 100.0% [57] 1262(2.5%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [67] 100.0% ---------------------------------------------------------------------------- map [47] 100.0% [58] 960(1.9%) 0(0.0%) parse-loop80 ...s/racket/match/compiler.rkt:418:15 eval-const-expr [66] 100.0% ---------------------------------------------------------------------------- loop [52] 100.0% [59] 334(0.7%) 0(0.0%) for-loop ...ous-cleanup/src/core/regimes.rkt:270:4 for-loop [68] 100.0% ---------------------------------------------------------------------------- ??? [50] 100.0% [60] 294(0.6%) 0(0.0%) loop ...7.0/collects/racket/private/sort.rkt:96:12 ??? [62] 100.0% ---------------------------------------------------------------------------- simplify! [53] 100.0% [61] 29180(57.2%) 0(0.0%) ??? .../various-cleanup/src/core/simplify.rkt:26:0 one-iter [81] 50.8% for-loop [70] 25.2% loop [71] 23.1% for-loop [78] 0.9% ---------------------------------------------------------------------------- loop [60] 4.0% loop [73] 4.0% loop [48] 13.1% ??? [86] 15.9% jloop [6] 17.0% ??? [27] 46.0% [62] 7432(14.6%) 1054(2.1%) ??? ...erbie/various-cleanup/src/programs.rkt:99:2 ??? [90] 57.5% loop [73] 23.4% ??? [76] 5.0% ---------------------------------------------------------------------------- variable? [163] 3.3% loop [48] 4.8% match-e [131] 7.3% finalize-iter! [54] 84.6% [63] 6776(13.3%) 1046(2.0%) ??? ...contract/private/arrow-val-first.rkt:388:18 for-loop [72] 77.6% atab-add-altns [79] 3.6% ??? [80] 3.3% ---------------------------------------------------------------------------- gen-series! [55] 100.0% [64] 2376(4.7%) 0(0.0%) for-loop ...various-cleanup/src/mainloop.rkt:160:7 taylor-alt [74] 100.0% ---------------------------------------------------------------------------- gen-rewrites! [56] 100.0% [65] 1614(3.2%) 0(0.0%) for-loop ...arious-cleanup/src/mainloop.rkt:184:11 rewrite-expression-head20 [75] 100.0% ---------------------------------------------------------------------------- f67 [17] 14.2% ??? [27] 19.6% parse-loop80 [58] 66.2% [66] 1450(2.8%) 0(0.0%) eval-const-expr ...-cleanup/src/programs.rkt:102:0 eval-prog [106] 100.0% ---------------------------------------------------------------------------- generic-sort/key [57] 27.2% copying-mergesort [67] 72.8% [67] 1262(2.5%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 copying-mergesort [67] 72.8% jloop [6] 27.2% ---------------------------------------------------------------------------- for-loop [59] 100.0% [68] 334(0.7%) 334(0.7%) for-loop ...ous-cleanup/src/core/regimes.rkt:274:8 ---------------------------------------------------------------------------- simplify! [53] 100.0% [69] 294(0.6%) 0(0.0%) for-loop ...various-cleanup/src/mainloop.rkt:255:6 for-loop [77] 100.0% ---------------------------------------------------------------------------- ??? [61] 100.0% [70] 7340(14.4%) 0(0.0%) for-loop ...ous-cleanup/src/core/simplify.rkt:33:2 one-iter [81] 100.0% ---------------------------------------------------------------------------- ??? [61] 100.0% [71] 6736(13.2%) 0(0.0%) loop ...arious-cleanup/src/core/simplify.rkt:142:2 for-loop [82] 100.0% ---------------------------------------------------------------------------- ??? [63] 100.0% [72] 5260(10.3%) 0(0.0%) for-loop ...us-cleanup/src/core/alt-table.rkt:56:2 errors [92] 52.3% atab-add-altn [83] 47.7% ---------------------------------------------------------------------------- for-loop [142] 0.8% loop! [159] 3.6% mk-enode-rec! [87] 5.5% ??? [49] 6.1% loop [73] 23.9% for-loop [40] 27.5% ??? [62] 32.5% [73] 4884(9.6%) 652(1.3%) loop ...-7.0/collects/racket/private/map.rkt:40:19 ??? [90] 33.7% loop [73] 23.9% ??? [86] 9.2% ulp-difference [149] 6.1% ordinary-value? [145] 6.1% ??? [62] 6.1% mk-enode-rec! [87] 5.5% loop! [159] 3.4% ---------------------------------------------------------------------------- for-loop [64] 100.0% [74] 2376(4.7%) 0(0.0%) taylor-alt ...rious-cleanup/src/mainloop.rkt:139:0 for-loop [84] 100.0% ---------------------------------------------------------------------------- for-loop [65] 100.0% [75] 1614(3.2%) 0(0.0%) rewrite-expression-head20 ...core/matcher.rkt:87:0 rewriter [85] 100.0% ---------------------------------------------------------------------------- ??? [62] 100.0% [76] 372(0.7%) 0(0.0%) ??? ...t-7.0/collects/racket/private/kw.rkt:592:14 ??? [90] 100.0% ---------------------------------------------------------------------------- for-loop [69] 100.0% [77] 294(0.6%) 0(0.0%) for-loop ...various-cleanup/src/mainloop.rkt:256:8 expression-cost [105] 100.0% ---------------------------------------------------------------------------- ??? [61] 100.0% [78] 268(0.5%) 0(0.0%) for-loop ...us-cleanup/src/core/simplify.rkt:31:14 mk-enode-rec! [87] 100.0% ---------------------------------------------------------------------------- ??? [63] 100.0% [79] 244(0.5%) 0(0.0%) atab-add-altns ...anup/src/core/alt-table.rkt:50:0 atab-add-altn [83] 100.0% ---------------------------------------------------------------------------- ??? [63] 100.0% [80] 226(0.4%) 0(0.0%) ??? ...cts/racket/contract/private/list.rkt:209:10 for-loop [88] 100.0% ---------------------------------------------------------------------------- for-loop [70] 33.1% ??? [61] 66.9% [81] 22176(43.5%) 0(0.0%) one-iter ...ous-cleanup/src/core/simplify.rkt:85:0 for-loop [89] 55.1% find-matches [91] 42.0% for-loop [97] 3.0% ---------------------------------------------------------------------------- loop [71] 100.0% [82] 6736(13.2%) 222(0.4%) for-loop ...us-cleanup/src/core/simplify.rkt:148:4 argmin [93] 40.4% loop [94] 30.9% expression-cost [105] 15.8% for-loop [98] 9.6% ---------------------------------------------------------------------------- atab-add-altns [79] 8.9% for-loop [72] 91.1% [83] 2752(5.4%) 0(0.0%) atab-add-altn ...anup/src/core/alt-table.rkt:202:0 errors [92] 88.7% override-at-pnts [99] 11.3% ---------------------------------------------------------------------------- taylor-alt [74] 100.0% [84] 2376(4.7%) 0(0.0%) for-loop ...various-cleanup/src/mainloop.rkt:145:6 ??? [90] 100.0% ---------------------------------------------------------------------------- rewrite-expression-head20 [75] 43.6% matcher [108] 56.4% [85] 1614(3.2%) 208(0.4%) rewriter ...ious-cleanup/src/core/matcher.rkt:90:2 for-loop [95] 79.6% *rules* [96] 16.1% ---------------------------------------------------------------------------- map [47] 49.7% loop [73] 50.3% [86] 1184(2.3%) 0(0.0%) ??? ...erbie/various-cleanup/src/points.rkt:209:26 ??? [62] 100.0% ---------------------------------------------------------------------------- for-loop [78] 33.3% loop [73] 66.7% [87] 268(0.5%) 0(0.0%) mk-enode-rec! ...cleanup/src/core/egraph.rkt:117:0 loop [73] 66.7% hash-has-key? [100] 33.3% ---------------------------------------------------------------------------- ??? [80] 100.0% [88] 226(0.4%) 226(0.4%) for-loop ...acket/contract/private/list.rkt:212:15 ---------------------------------------------------------------------------- one-iter [81] 100.0% [89] 12208(23.9%) 0(0.0%) for-loop ...ous-cleanup/src/core/simplify.rkt:94:2 loop [101] 91.9% update-leader! [156] 4.6% reduce-to-single! [115] 3.5% ---------------------------------------------------------------------------- loop [19] 1.5% ??? [7] 2.7% ??? [76] 3.4% ??? [27] 7.1% location-do [107] 8.8% for-loop [84] 8.8% ??? [49] 12.2% loop [73] 16.4% ??? [62] 39.1% [90] 10928(21.4%) 1038(2.0%) ??? ...tract/private/arrow-higher-order.rkt:357:33 ->flonum [103] 54.4% location-do [107] 8.8% approximate9 [3] 7.8% sample-multi-bounded [112] 5.5% mk-ival [113] 5.5% hash-ref! [133] 4.1% ival-mult [116] 3.4% simplify [4] 1.0% ---------------------------------------------------------------------------- one-iter [81] 100.0% [91] 9306(18.2%) 0(0.0%) find-matches ...cleanup/src/core/simplify.rkt:55:0 for-loop [102] 100.0% ---------------------------------------------------------------------------- for-loop [42] 12.9% ??? [27] 13.4% atab-add-altn [83] 34.7% for-loop [72] 39.1% [92] 7040(13.8%) 0(0.0%) errors ...bie/various-cleanup/src/points.rkt:223:0 for-loop [104] 84.3% eval-prog [106] 15.7% ---------------------------------------------------------------------------- baseline-error [35] 9.9% for-loop [82] 90.1% [93] 3024(5.9%) 296(0.6%) argmin ...acket-7.0/collects/racket/list.rkt:765:0 expression-cost [105] 55.6% for-loop [109] 24.7% ??? [118] 9.9% ---------------------------------------------------------------------------- for-loop [82] 100.0% [94] 2082(4.1%) 0(0.0%) loop .../racket-7.0/collects/racket/list.rkt:751:4 expression-cost [105] 61.1% for-loop [109] 38.9% ---------------------------------------------------------------------------- rewriter [85] 100.0% [95] 1614(3.2%) 0(0.0%) for-loop ...ious-cleanup/src/core/matcher.rkt:92:4 matcher [108] 96.2% for-loop [119] 3.8% ---------------------------------------------------------------------------- rewriter [85] 100.0% [96] 744(1.5%) 274(0.5%) *rules* ...ious-cleanup/src/syntax/rules.rkt:666:0 for-loop [114] 63.2% ---------------------------------------------------------------------------- one-iter [81] 100.0% [97] 662(1.3%) 0(0.0%) for-loop ...us-cleanup/src/core/simplify.rkt:110:2 set-precompute! [110] 100.0% ---------------------------------------------------------------------------- for-loop [82] 100.0% [98] 646(1.3%) 0(0.0%) for-loop ...s-cleanup/src/core/simplify.rkt:152:16 for-loop [111] 100.0% ---------------------------------------------------------------------------- atab-add-altn [83] 100.0% [99] 310(0.6%) 0(0.0%) override-at-pnts ...p/src/core/alt-table.rkt:138:0 for-loop [117] 100.0% ---------------------------------------------------------------------------- mk-enode-rec! [87] 100.0% [100] 268(0.5%) 268(0.5%) hash-has-key? ...ket/private/more-scheme.rkt:371:2 ---------------------------------------------------------------------------- for-loop [89] 100.0% [101] 11214(22.0%) 274(0.5%) loop ...various-cleanup/src/core/simplify.rkt:99:4 apply-match [120] 97.6% ---------------------------------------------------------------------------- for-loop [102] 49.1% find-matches [91] 50.9% [102] 9306(18.2%) 1186(2.3%) for-loop ...ous-cleanup/src/core/simplify.rkt:57:8 for-loop [102] 49.1% match-e [131] 43.6% ---------------------------------------------------------------------------- ??? [90] 100.0% [103] 5942(11.6%) 596(1.2%) ->flonum ...ie/various-cleanup/src/float.rkt:149:0 ??? [121] 90.0% ---------------------------------------------------------------------------- errors [92] 100.0% [104] 5934(11.6%) 528(1.0%) for-loop ...e/various-cleanup/src/points.rkt:225:2 ??? [27] 91.1% ---------------------------------------------------------------------------- for-loop [77] 6.8% for-loop [82] 24.6% loop [94] 29.5% argmin [93] 39.0% [105] 4310(8.4%) 0(0.0%) expression-cost ...-cleanup/src/programs.rkt:157:0 compile [122] 100.0% ---------------------------------------------------------------------------- errors [92] 43.3% eval-const-expr [66] 56.7% [106] 2556(5.0%) 0(0.0%) eval-prog ...various-cleanup/src/programs.rkt:83:0 temp68_2 [123] 82.7% inductor [130] 9.2% loop [190] 8.1% ---------------------------------------------------------------------------- location-do [107] 44.3% ??? [90] 55.7% [107] 2376(4.7%) 0(0.0%) location-do ...rious-cleanup/src/programs.rkt:64:0 ??? [90] 55.7% location-do [107] 44.3% ---------------------------------------------------------------------------- for-loop [18] 47.9% for-loop [95] 52.1% [108] 1614(3.2%) 416(0.8%) matcher ...ious-cleanup/src/core/matcher.rkt:118:2 ??? [5] 47.9% rewriter [85] 41.4% ---------------------------------------------------------------------------- argmin [93] 47.9% loop [94] 52.1% [109] 1556(3.0%) 244(0.5%) for-loop ...various-cleanup/src/programs.rkt:158:2 table-ref [136] 84.3% ---------------------------------------------------------------------------- for-loop [97] 100.0% [110] 662(1.3%) 0(0.0%) set-precompute! ...nup/src/core/simplify.rkt:116:0 for-loop [125] 100.0% ---------------------------------------------------------------------------- for-loop [98] 100.0% [111] 646(1.3%) 646(1.3%) for-loop ...s-cleanup/src/core/simplify.rkt:156:23 ---------------------------------------------------------------------------- ??? [90] 100.0% [112] 600(1.2%) 600(1.2%) sample-multi-bounded ...leanup/src/points.rkt:15:0 ---------------------------------------------------------------------------- ??? [90] 100.0% [113] 600(1.2%) 0(0.0%) mk-ival ...arious-cleanup/src/biginterval.rkt:57:0 bf [126] 100.0% ---------------------------------------------------------------------------- *rules* [96] 100.0% [114] 470(0.9%) 210(0.4%) for-loop ...ie/various-cleanup/src/common.rkt:70:9 ormap [128] 55.3% ---------------------------------------------------------------------------- for-loop [89] 100.0% [115] 430(0.8%) 0(0.0%) reduce-to-single! ...nup/src/core/egraph.rkt:318:0 for-loop [127] 100.0% ---------------------------------------------------------------------------- ??? [90] 100.0% [116] 372(0.7%) 372(0.7%) ival-mult ...ous-cleanup/src/biginterval.rkt:112:0 ---------------------------------------------------------------------------- override-at-pnts [99] 100.0% [117] 310(0.6%) 310(0.6%) for-loop ...-cleanup/src/core/alt-table.rkt:139:22 ---------------------------------------------------------------------------- argmin [93] 100.0% [118] 300(0.6%) 0(0.0%) ??? ...erbie/various-cleanup/src/points.rkt:212:27 eval-errors [124] 100.0% ---------------------------------------------------------------------------- for-loop [95] 100.0% [119] 246(0.5%) 0(0.0%) for-loop ...ious-cleanup/src/core/matcher.rkt:99:8 fix-up-variables [129] 100.0% ---------------------------------------------------------------------------- loop [101] 100.0% [120] 10940(21.4%) 310(0.6%) apply-match ...-cleanup/src/core/simplify.rkt:64:0 for-loop [132] 83.4% match-e [131] 11.9% set [191] 1.9% ---------------------------------------------------------------------------- ->flonum [103] 100.0% [121] 5346(10.5%) 0(0.0%) ??? ...s/herbie/various-cleanup/src/float.rkt:23:2 for-loop [134] 100.0% ---------------------------------------------------------------------------- expression-cost [105] 100.0% [122] 4310(8.4%) 0(0.0%) compile .../various-cleanup/src/programs.rkt:134:0 hash-ref! [133] 100.0% ---------------------------------------------------------------------------- eval-prog [106] 100.0% [123] 2114(4.1%) 0(0.0%) temp68_2 (unknown source) compile16 [135] 100.0% ---------------------------------------------------------------------------- ??? [118] 33.0% ??? [27] 67.0% [124] 910(1.8%) 0(0.0%) eval-errors ...arious-cleanup/src/points.rkt:198:0 for-loop [137] 100.0% ---------------------------------------------------------------------------- set-precompute! [110] 100.0% [125] 662(1.3%) 0(0.0%) for-loop ...us-cleanup/src/core/simplify.rkt:118:2 ??? [27] 42.9% merge-egraph-nodes! [143] 31.4% setfindf [141] 25.7% ---------------------------------------------------------------------------- mk-ival [113] 100.0% [126] 600(1.2%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 ??? [138] 100.0% ---------------------------------------------------------------------------- reduce-to-single! [115] 100.0% [127] 430(0.8%) 264(0.5%) for-loop ...ious-cleanup/src/core/egraph.rkt:319:8 constant? [147] 38.6% ---------------------------------------------------------------------------- for-loop [114] 100.0% [128] 260(0.5%) 0(0.0%) ormap ....0/collects/racket/private/map.rkt:141:13 flag-set? [139] 100.0% ---------------------------------------------------------------------------- for-loop [119] 100.0% [129] 246(0.5%) 0(0.0%) fix-up-variables ...nup/src/core/matcher.rkt:111:2 pattern-match [140] 100.0% ---------------------------------------------------------------------------- eval-prog [106] 100.0% [130] 236(0.5%) 0(0.0%) inductor .../various-cleanup/src/programs.rkt:88:4 table-ref [136] 100.0% ---------------------------------------------------------------------------- apply-match [120] 6.4% for-loop [157] 28.2% for-loop [102] 65.4% [131] 9422(18.5%) 674(1.3%) match-e ...arious-cleanup/src/core/ematch.rkt:39:0 for-loop [142] 77.5% constant? [147] 9.6% make-sequence [152] 3.1% variable? [163] 2.1% ??? [63] 1.7% ---------------------------------------------------------------------------- apply-match [120] 100.0% [132] 9120(17.9%) 0(0.0%) for-loop ...ous-cleanup/src/core/simplify.rkt:77:2 merge-egraph-nodes! [143] 76.5% dedup-children! [161] 12.6% mk-enode! [177] 5.5% substitute-e [150] 5.5% ---------------------------------------------------------------------------- for-loop [24] 0.9% for-loop [20] 1.4% ??? [8] 1.4% ??? [26] 1.7% ??? [7] 2.8% loop [19] 3.1% first-nonzero-exp [22] 8.3% ??? [90] 9.2% compile [122] 21.3% ??? [144] 48.4% [133] 6184(12.1%) 3528(6.9%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [144] 53.3% simplify [4] 11.4% ??? [7] 5.9% ??? [8] 3.1% taylor [29] 1.7% ??? [9] 1.4% ??? [12] 0.9% ---------------------------------------------------------------------------- ??? [121] 100.0% [134] 5346(10.5%) 1800(3.5%) for-loop ...bie/various-cleanup/src/float.rkt:24:5 return/no-unsupplied [148] 32.0% ??? [184] 28.7% ??? [151] 5.6% ---------------------------------------------------------------------------- temp68_2 [123] 100.0% [135] 2114(4.1%) 0(0.0%) compile16 (unknown source) temp74_0 [146] 100.0% ---------------------------------------------------------------------------- inductor [130] 15.2% for-loop [109] 84.8% [136] 1548(3.0%) 1370(2.7%) table-ref ...e/various-cleanup/src/common.rkt:41:0 for-loop [154] 11.5% ---------------------------------------------------------------------------- eval-errors [124] 100.0% [137] 910(1.8%) 0(0.0%) for-loop ...e/various-cleanup/src/points.rkt:200:2 ordinary-value? [145] 67.0% ulp-difference [149] 33.0% ---------------------------------------------------------------------------- bf [126] 100.0% [138] 600(1.2%) 600(1.2%) ??? /opt/racket-7.0/collects/ffi/unsafe.rkt:898:4 ---------------------------------------------------------------------------- ormap [128] 100.0% [139] 260(0.5%) 0(0.0%) flag-set? ...e/various-cleanup/src/config.rkt:28:0 ??? [184] 100.0% ---------------------------------------------------------------------------- fix-up-variables [129] 100.0% [140] 246(0.5%) 0(0.0%) pattern-match ...cleanup/src/core/matcher.rkt:30:0 for-loop [153] 100.0% ---------------------------------------------------------------------------- for-loop [125] 100.0% [141] 170(0.3%) 0(0.0%) setfindf ...e/various-cleanup/src/common.rkt:138:0 for-loop [155] 100.0% ---------------------------------------------------------------------------- match-e [131] 100.0% [142] 8212(16.1%) 3204(6.3%) for-loop ...ious-cleanup/src/core/ematch.rkt:52:11 for-loop [157] 43.4% cartesian-product [162] 15.1% curry* [164] 4.6% loop [73] 2.5% curried [169] 2.0% ---------------------------------------------------------------------------- for-loop [125] 2.9% for-loop [166] 3.8% merge-egraph-nodes! [143] 14.1% for-loop [132] 79.2% [143] 7184(14.1%) 258(0.5%) merge-egraph-nodes! ...p/src/core/egraph.rkt:143:0 update-leader! [156] 50.8% loop! [159] 25.6% merge-egraph-nodes! [143] 14.1% for-loop [166] 3.8% dedup-children! [161] 2.1% ---------------------------------------------------------------------------- hash-ref! [133] 100.0% [144] 4310(8.4%) 1058(2.1%) ??? ...rbie/various-cleanup/src/programs.rkt:142:5 hash-ref! [133] 93.0% ---------------------------------------------------------------------------- ??? [27] 10.2% loop [44] 12.1% loop [73] 12.5% for-loop [137] 25.6% andmap [51] 39.5% [145] 2382(4.7%) 0(0.0%) ordinary-value? ...ious-cleanup/src/float.rkt:80:0 special-value? [158] 100.0% ---------------------------------------------------------------------------- compile16 [135] 100.0% [146] 2114(4.1%) 0(0.0%) temp74_0 (unknown source) expand-single [160] 85.8% compile-top9 [170] 14.2% ---------------------------------------------------------------------------- for-loop [127] 9.1% match-e [131] 90.9% [147] 1824(3.6%) 0(0.0%) constant? ...s-cleanup/src/syntax/syntax.rkt:721:0 value? [173] 100.0% ---------------------------------------------------------------------------- for-loop [134] 100.0% [148] 1712(3.4%) 1378(2.7%) return/no-unsupplied ...ct/private/arr-i.rkt:534:0 filter [168] 19.5% ---------------------------------------------------------------------------- for-loop [137] 19.2% loop [73] 19.2% ??? [27] 61.5% [149] 1560(3.1%) 928(1.8%) ulp-difference ...rious-cleanup/src/float.rkt:46:0 infer-representation [165] 40.5% ---------------------------------------------------------------------------- for-loop [167] 27.3% for-loop [132] 72.7% [150] 498(1.0%) 0(0.0%) substitute-e ...s-cleanup/src/core/ematch.rkt:64:0 for-loop [167] 86.3% variable? [163] 13.7% ---------------------------------------------------------------------------- for-loop [134] 100.0% [151] 300(0.6%) 300(0.6%) ??? ...ects/racket/contract/private/guts.rkt:746:8 ---------------------------------------------------------------------------- match-e [131] 100.0% [152] 290(0.6%) 290(0.6%) make-sequence ...ects/racket/private/for.rkt:528:2 ---------------------------------------------------------------------------- pattern-match [140] 100.0% [153] 246(0.5%) 0(0.0%) for-loop ...ious-cleanup/src/core/matcher.rkt:27:9 core651 [171] 100.0% ---------------------------------------------------------------------------- table-ref [136] 100.0% [154] 178(0.3%) 178(0.3%) for-loop ...ie/various-cleanup/src/common.rkt:43:4 ---------------------------------------------------------------------------- setfindf [141] 100.0% [155] 170(0.3%) 170(0.3%) for-loop ...e/various-cleanup/src/common.rkt:139:2 ---------------------------------------------------------------------------- for-loop [89] 11.4% merge-egraph-nodes! [143] 88.6% [156] 4930(9.7%) 0(0.0%) update-leader! ...leanup/src/core/egraph.rkt:211:0 for-loop [172] 100.0% ---------------------------------------------------------------------------- for-loop [142] 100.0% [157] 4782(9.4%) 0(0.0%) for-loop ...ious-cleanup/src/core/ematch.rkt:58:37 match-e [131] 100.0% ---------------------------------------------------------------------------- ordinary-value? [145] 100.0% [158] 2382(4.7%) 588(1.2%) special-value? ...rious-cleanup/src/float.rkt:76:0 for-loop [175] 75.3% ---------------------------------------------------------------------------- loop [73] 24.1% merge-egraph-nodes! [143] 75.9% [159] 2252(4.4%) 900(1.8%) loop! .../various-cleanup/src/core/enode.rkt:190:2 loop [73] 33.1% custom-set-union [179] 22.2% set [191] 14.4% ---------------------------------------------------------------------------- temp74_0 [146] 100.0% [160] 1814(3.6%) 0(0.0%) expand-single (unknown source) expand-capturing-lifts [174] 100.0% ---------------------------------------------------------------------------- merge-egraph-nodes! [143] 21.2% for-loop [132] 78.8% [161] 1456(2.9%) 0(0.0%) dedup-children! ...leanup/src/core/enode.rkt:198:0 loop [176] 64.0% loop [178] 36.0% ---------------------------------------------------------------------------- for-loop [142] 100.0% [162] 1370(2.7%) 1370(2.7%) cartesian-product ...ollects/racket/list.rkt:822:0 ---------------------------------------------------------------------------- substitute-e [150] 23.2% simplify* [13] 25.7% match-e [131] 51.0% [163] 878(1.7%) 0(0.0%) variable? ...s-cleanup/src/syntax/syntax.rkt:724:0 value? [173] 74.3% ??? [63] 25.7% ---------------------------------------------------------------------------- for-loop [142] 100.0% [164] 748(1.5%) 478(0.9%) curry* ...et-7.0/collects/racket/function.rkt:44:2 procedure-arity [181] 36.1% ---------------------------------------------------------------------------- ulp-difference [149] 100.0% [165] 632(1.2%) 632(1.2%) infer-representation ...cleanup/src/float.rkt:15:0 ---------------------------------------------------------------------------- merge-egraph-nodes! [143] 100.0% [166] 548(1.1%) 0(0.0%) for-loop ...ious-cleanup/src/core/egraph.rkt:197:4 merge-egraph-nodes! [143] 100.0% ---------------------------------------------------------------------------- substitute-e [150] 100.0% [167] 498(1.0%) 0(0.0%) for-loop ...ious-cleanup/src/core/ematch.rkt:73:24 mk-enode! [177] 59.0% substitute-e [150] 41.0% ---------------------------------------------------------------------------- return/no-unsupplied [148] 100.0% [168] 334(0.7%) 334(0.7%) filter ...0/collects/racket/private/list.rkt:256:2 ---------------------------------------------------------------------------- for-loop [142] 100.0% [169] 330(0.6%) 330(0.6%) curried ...-7.0/collects/racket/function.rkt:71:18 ---------------------------------------------------------------------------- temp74_0 [146] 100.0% [170] 300(0.6%) 0(0.0%) compile-top9 (unknown source) extract-namespace-scopes/values [180]100.0% ---------------------------------------------------------------------------- for-loop [153] 100.0% [171] 246(0.5%) 0(0.0%) core651 ...acket/contract/private/arr-i.rkt:918:19 un-dep/maybe-chaperone [182] 100.0% ---------------------------------------------------------------------------- update-leader! [156] 100.0% [172] 4930(9.7%) 206(0.4%) for-loop ...ious-cleanup/src/core/egraph.rkt:216:6 for-loop [183] 58.0% hash-update! [189] 37.8% ---------------------------------------------------------------------------- variable? [163] 26.3% constant? [147] 73.7% [173] 2476(4.9%) 2476(4.9%) value? ...arious-cleanup/src/syntax/types.rkt:18:0 ---------------------------------------------------------------------------- loop [190] 10.2% expand-single [160] 89.8% [174] 2020(4.0%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [185] 76.0% loop [190] 13.8% dispatch-transformer41 [200] 10.2% ---------------------------------------------------------------------------- special-value? [158] 100.0% [175] 1794(3.5%) 1190(2.3%) for-loop ...bie/various-cleanup/src/float.rkt:17:3 ??? [184] 33.7% ---------------------------------------------------------------------------- dedup-children! [161] 21.1% loop [176] 78.9% [176] 932(1.8%) 414(0.8%) loop ...racket-7.0/collects/racket/list.rkt:417:34 loop [176] 78.9% loop [190] 6.3% ---------------------------------------------------------------------------- for-loop [167] 37.1% for-loop [132] 62.9% [177] 792(1.6%) 540(1.1%) mk-enode! ...ious-cleanup/src/core/egraph.rkt:97:0 new-enode [187] 31.8% ---------------------------------------------------------------------------- dedup-children! [161] 8.0% loop [178] 92.0% [178] 524(1.0%) 524(1.0%) loop ...racket-7.0/collects/racket/list.rkt:434:17 loop [178] 92.0% ---------------------------------------------------------------------------- loop! [159] 100.0% [179] 500(1.0%) 0(0.0%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [186] 100.0% ---------------------------------------------------------------------------- compile-top9 [170] 100.0% [180] 300(0.6%) 300(0.6%) extract-namespace-scopes/values (unknown source) ---------------------------------------------------------------------------- curry* [164] 100.0% [181] 270(0.5%) 270(0.5%) procedure-arity ...ket/private/norm-arity.rkt:7:27 ---------------------------------------------------------------------------- core651 [171] 100.0% [182] 246(0.5%) 0(0.0%) un-dep/maybe-chaperone ...private/arr-i.rkt:1097:2 ??? [188] 100.0% ---------------------------------------------------------------------------- for-loop [172] 100.0% [183] 2860(5.6%) 0(0.0%) for-loop ...ious-cleanup/src/core/egraph.rkt:217:8 hash-update! [189] 100.0% ---------------------------------------------------------------------------- flag-set? [139] 10.8% for-loop [175] 25.2% for-loop [134] 64.0% [184] 2398(4.7%) 2398(4.7%) ??? ...s/racket/contract/private/arr-i.rkt:1252:29 ---------------------------------------------------------------------------- expand-capturing-lifts [174] 100.0% [185] 1536(3.0%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [192] 67.8% loop [190] 32.2% ---------------------------------------------------------------------------- custom-set-union [179] 100.0% [186] 500(1.0%) 278(0.5%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [194] 44.4% ---------------------------------------------------------------------------- mk-enode! [177] 100.0% [187] 252(0.5%) 0(0.0%) new-enode ...rious-cleanup/src/core/enode.rkt:95:0 set [191] 100.0% ---------------------------------------------------------------------------- un-dep/maybe-chaperone [182] 100.0% [188] 246(0.5%) 0(0.0%) ??? ...llects/racket/contract/private/orc.rkt:88:2 ??? [193] 100.0% ---------------------------------------------------------------------------- for-loop [172] 39.5% for-loop [183] 60.5% [189] 4724(9.3%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [195] 100.0% ---------------------------------------------------------------------------- syntax-e/no-taint [25] 4.7% syntax->list [208] 4.7% eval-prog [106] 13.8% expand-capturing-lifts [174] 18.6% lambda-clause-expander [185] 23.7% loop [176] 34.6% [190] 1496(2.9%) 796(1.6%) loop (unknown source) dispatch-transformer41 [200] 23.7% expand-capturing-lifts [174] 13.8% syntax-e [14] 4.7% gf [197] 4.7% ---------------------------------------------------------------------------- apply-match [120] 18.7% new-enode [187] 22.7% loop! [159] 58.6% [191] 1110(2.2%) 902(1.8%) set ...collects/racket/private/set-types.rkt:981:0 for-loop [198] 18.7% ---------------------------------------------------------------------------- lambda-clause-expander [185] 19.8% for-loop [196] 80.2% [192] 1042(2.0%) 0(0.0%) finish-bodys (unknown source) for-loop [196] 100.0% ---------------------------------------------------------------------------- ??? [188] 100.0% [193] 246(0.5%) 246(0.5%) ??? ...ntract/private/arrow-higher-order.rkt:554:2 ---------------------------------------------------------------------------- for-loop [186] 100.0% [194] 222(0.4%) 222(0.4%) for-loop ...cts/racket/private/set-types.rkt:178:5 ---------------------------------------------------------------------------- hash-update! [189] 100.0% [195] 4724(9.3%) 0(0.0%) ??? .../various-cleanup/src/core/egraph.rkt:219:24 for-loop [199] 100.0% ---------------------------------------------------------------------------- fallback-loop [30] 3.2% for-loop [196] 15.7% finish-bodys [192] 81.1% [196] 1042(2.0%) 540(1.1%) for-loop (unknown source) finish-bodys [192] 65.4% for-loop [196] 15.7% dispatch-transformer41 [200] 7.1% expand-implicit [11] 6.0% ---------------------------------------------------------------------------- loop [190] 100.0% [197] 210(0.4%) 0(0.0%) gf (unknown source) cache-or-reuse-set [201] 100.0% ---------------------------------------------------------------------------- set [191] 100.0% [198] 208(0.4%) 208(0.4%) for-loop ...cts/racket/private/set-types.rkt:937:4 ---------------------------------------------------------------------------- ??? [195] 100.0% [199] 4724(9.3%) 4530(8.9%) for-loop ...ous-cleanup/src/core/egraph.rkt:220:26 update-en-expr [203] 4.1% ---------------------------------------------------------------------------- expand-capturing-lifts [174] 20.7% for-loop [196] 29.7% loop [190] 49.6% [200] 996(2.0%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [202] 100.0% ---------------------------------------------------------------------------- gf [197] 100.0% [201] 210(0.4%) 210(0.4%) cache-or-reuse-set (unknown source) ---------------------------------------------------------------------------- dispatch-transformer41 [200] 100.0% [202] 996(2.0%) 284(0.6%) apply-transformer52 (unknown source) apply-transformer-in-context [204] 71.5% ---------------------------------------------------------------------------- for-loop [199] 100.0% [203] 194(0.4%) 194(0.4%) update-en-expr ...leanup/src/core/egraph.rkt:205:0 ---------------------------------------------------------------------------- apply-transformer52 [202] 100.0% [204] 712(1.4%) 296(0.6%) apply-transformer-in-context (unknown source) ??? [205] 29.5% new-lambda [206] 28.9% ---------------------------------------------------------------------------- apply-transformer-in-context [204] 100.0% [205] 210(0.4%) 0(0.0%) ??? ...collects/racket/private/qq-and-or.rkt:155:9 ??? [207] 100.0% ---------------------------------------------------------------------------- apply-transformer-in-context [204] 100.0% [206] 206(0.4%) 206(0.4%) new-lambda ...ollects/racket/private/kw.rkt:822:11 ---------------------------------------------------------------------------- ??? [205] 100.0% [207] 210(0.4%) 0(0.0%) ??? ...ollects/racket/private/qq-and-or.rkt:164:21 syntax->list [208] 100.0% ---------------------------------------------------------------------------- ??? [207] 100.0% [208] 210(0.4%) 0(0.0%) syntax->list (unknown source) loop [190] 100.0% ----------------------------------------------------------------------------