Profiling results ----------------- Total cpu time observed: 36484ms (out of 36644ms) Number of samples taken: 138 (once every 264ms) (Hiding functions with self<1.0% and local<2.0%: 1 of 207 hidden) =================================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee =================================================================================== ??? [121] 100.0% [1] 36484(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [14] 100.0% ----------------------------------------------------------------------------------- ??? [121] 100.0% [2] 27530(75.5%) 0(0.0%) run-improve40 ...dirty-bits/src/mainloop.rkt:336:0 for-loop [15] 100.0% ----------------------------------------------------------------------------------- ??? [186] 100.0% [3] 6424(17.6%) 0(0.0%) approximate9 ...irty-bits/src/core/taylor.rkt:12:0 loop [17] 93.1% taylor [31] 4.4% for-loop [25] 2.6% ----------------------------------------------------------------------------------- hash-ref! [190] 100.0% [4] 5166(14.2%) 0(0.0%) ??? ...ie/no-dirty-bits/src/core/taylor.rkt:407:23 for-loop [18] 100.0% ----------------------------------------------------------------------------------- hash-ref! [190] 100.0% [5] 4540(12.4%) 0(0.0%) ??? ...ie/no-dirty-bits/src/core/taylor.rkt:301:23 for-loop [19] 100.0% ----------------------------------------------------------------------------------- loop [163] 9.9% for-loop [187] 90.1% [6] 2784(7.6%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [20] 100.0% ----------------------------------------------------------------------------------- loop [163] 39.2% for-loop [187] 60.8% [7] 1558(4.3%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [21] 100.0% ----------------------------------------------------------------------------------- ??? [121] 100.0% [8] 926(2.5%) 0(0.0%) get-final-combination ...ts/src/mainloop.rkt:357:0 infer-splitpoints [22] 100.0% ----------------------------------------------------------------------------------- for-loop [187] 100.0% [9] 564(1.5%) 0(0.0%) expand-identifier (unknown source) resolve+shift28 [182] 100.0% ----------------------------------------------------------------------------------- substitute-e [118] 37.6% match-e [113] 62.4% [10] 442(1.2%) 0(0.0%) variable? ...rty-bits/src/syntax/syntax.rkt:1159:0 ??? [46] 100.0% ----------------------------------------------------------------------------------- hash-ref! [190] 100.0% [11] 302(0.8%) 0(0.0%) ??? ...ie/no-dirty-bits/src/core/taylor.rkt:510:23 for-loop [23] 100.0% ----------------------------------------------------------------------------------- taylor [31] 100.0% [12] 282(0.8%) 0(0.0%) taylor-invert ...ty-bits/src/core/taylor.rkt:318:0 simplify [16] 100.0% ----------------------------------------------------------------------------------- matcher [110] 100.0% [13] 266(0.7%) 0(0.0%) ??? ...e/no-dirty-bits/src/core/matcher.rkt:175:11 for-loop [24] 100.0% ----------------------------------------------------------------------------------- profile-thunk16 [1] 100.0% [14] 36484(100.0%) 0(0.0%) run ...et-7.0/share/pkgs/profile-lib/main.rkt:39:2 ??? [121] 100.0% ----------------------------------------------------------------------------------- run-improve40 [2] 100.0% [15] 27530(75.5%) 0(0.0%) for-loop ...e/no-dirty-bits/src/mainloop.rkt:351:4 run-iter! [26] 100.0% ----------------------------------------------------------------------------------- taylor-invert [12] 4.6% hash-ref! [190] 95.4% [16] 6102(16.7%) 0(0.0%) simplify ...no-dirty-bits/src/core/reduce.rkt:16:0 parse-loop80 [45] 57.2% f46 [28] 38.2% debug-print [32] 4.6% ----------------------------------------------------------------------------------- approximate9 [3] 100.0% [17] 5978(16.4%) 0(0.0%) loop ...bie/no-dirty-bits/src/core/taylor.rkt:87:4 ??? [186] 97.3% hash-ref! [190] 2.7% ----------------------------------------------------------------------------------- ??? [4] 100.0% [18] 5166(14.2%) 322(0.9%) for-loop ...-dirty-bits/src/core/taylor.rkt:411:33 for-loop [27] 93.8% ----------------------------------------------------------------------------------- ??? [5] 100.0% [19] 4540(12.4%) 0(0.0%) for-loop ...-dirty-bits/src/core/taylor.rkt:304:27 hash-ref! [190] 100.0% ----------------------------------------------------------------------------------- expand-id-application-form17 [176] 11.7% syntax-e [6] 88.3% [20] 3154(8.6%) 0(0.0%) syntax-e/no-taint (unknown source) loop [163] 100.0% ----------------------------------------------------------------------------------- dispatch-transformer41 [7] 100.0% [21] 1558(4.3%) 370(1.0%) apply-transformer52 (unknown source) apply-transformer-in-context [30] 39.2% loop [163] 37.1% ----------------------------------------------------------------------------------- get-final-combination [8] 100.0% [22] 926(2.5%) 0(0.0%) infer-splitpoints ...its/src/core/regimes.rkt:34:0 for-loop [29] 100.0% ----------------------------------------------------------------------------------- ??? [11] 100.0% [23] 302(0.8%) 0(0.0%) for-loop ...-dirty-bits/src/core/taylor.rkt:514:35 parse-loop80 [45] 100.0% ----------------------------------------------------------------------------------- ??? [13] 100.0% [24] 266(0.7%) 0(0.0%) for-loop ...dirty-bits/src/core/matcher.rkt:179:21 matcher [110] 100.0% ----------------------------------------------------------------------------------- approximate9 [3] 100.0% [25] 164(0.4%) 0(0.0%) for-loop ...o-dirty-bits/src/core/taylor.rkt:30:18 taylor [31] 100.0% ----------------------------------------------------------------------------------- for-loop [15] 100.0% [26] 27530(75.5%) 0(0.0%) run-iter! .../no-dirty-bits/src/mainloop.rkt:317:0 simplify! [33] 59.6% gen-series! [34] 23.3% finalize-iter! [35] 15.0% localize! [38] 1.1% gen-rewrites! [41] 1.0% ----------------------------------------------------------------------------------- for-loop [18] 100.0% [27] 4844(13.3%) 0(0.0%) for-loop ...-dirty-bits/src/core/taylor.rkt:413:39 hash-ref! [190] 100.0% ----------------------------------------------------------------------------------- map [36] 28.5% simplify [16] 71.5% [28] 2332(6.4%) 0(0.0%) f46 ...0/collects/racket/match/compiler.rkt:507:40 map [36] 87.0% eval-const-expr [55] 13.0% ----------------------------------------------------------------------------------- infer-splitpoints [22] 100.0% [29] 926(2.5%) 0(0.0%) for-loop ...o-dirty-bits/src/core/regimes.rkt:46:6 option-on-expr [37] 100.0% ----------------------------------------------------------------------------------- apply-transformer52 [21] 100.0% [30] 610(1.7%) 304(0.8%) apply-transformer-in-context (unknown source) go [39] 50.2% ----------------------------------------------------------------------------------- approximate9 [3] 15.8% for-loop [25] 36.8% taylor [31] 47.4% [31] 446(1.2%) 0(0.0%) taylor .../no-dirty-bits/src/core/taylor.rkt:170:0 taylor [31] 47.4% taylor-quotient [42] 36.8% taylor-invert [12] 15.8% ----------------------------------------------------------------------------------- simplify [16] 100.0% [32] 282(0.8%) 0(0.0%) debug-print ...e/no-dirty-bits/src/debug.rkt:110:0 build-list [40] 100.0% ----------------------------------------------------------------------------------- run-iter! [26] 100.0% [33] 16410(45.0%) 0(0.0%) simplify! .../no-dirty-bits/src/mainloop.rkt:213:0 ??? [43] 98.2% for-loop [51] 1.8% ----------------------------------------------------------------------------------- run-iter! [26] 100.0% [34] 6424(17.6%) 0(0.0%) gen-series! ...o-dirty-bits/src/mainloop.rkt:149:0 for-loop [44] 100.0% ----------------------------------------------------------------------------------- run-iter! [26] 100.0% [35] 4118(11.3%) 0(0.0%) finalize-iter! ...irty-bits/src/mainloop.rkt:268:0 ??? [46] 100.0% ----------------------------------------------------------------------------------- loop [165] 13.3% f46 [28] 86.7% [36] 2342(6.4%) 0(0.0%) map ...t-7.0/collects/racket/private/map.rkt:35:13 parse-loop80 [45] 58.3% f46 [28] 28.3% ??? [186] 13.3% ----------------------------------------------------------------------------------- for-loop [29] 100.0% [37] 926(2.5%) 0(0.0%) option-on-expr ...-bits/src/core/regimes.rkt:150:0 err-lsts->split-indices [47] 34.8% for-loop [48] 34.8% sort-context-on-expr [52] 30.5% ----------------------------------------------------------------------------------- run-iter! [26] 100.0% [38] 312(0.9%) 0(0.0%) localize! .../no-dirty-bits/src/mainloop.rkt:116:0 localize-error [49] 100.0% ----------------------------------------------------------------------------------- apply-transformer-in-context [30] 100.0% [39] 306(0.8%) 0(0.0%) go .../collects/racket/private/qq-and-or.rkt:50:20 loop [50] 100.0% ----------------------------------------------------------------------------------- debug-print [32] 100.0% [40] 282(0.8%) 282(0.8%) build-list ...llects/racket/private/list.rkt:296:2 ----------------------------------------------------------------------------------- run-iter! [26] 100.0% [41] 266(0.7%) 0(0.0%) gen-rewrites! ...dirty-bits/src/mainloop.rkt:172:0 for-loop [53] 100.0% ----------------------------------------------------------------------------------- taylor [31] 100.0% [42] 164(0.4%) 0(0.0%) taylor-quotient ...-bits/src/core/taylor.rkt:334:0 first-nonzero-exp [54] 100.0% ----------------------------------------------------------------------------------- simplify! [33] 100.0% [43] 16108(44.2%) 0(0.0%) ??? ...ie/no-dirty-bits/src/core/simplify.rkt:26:0 one-iter [68] 56.7% loop [58] 23.2% for-loop [59] 18.5% for-loop [65] 1.7% ----------------------------------------------------------------------------------- gen-series! [34] 100.0% [44] 6424(17.6%) 0(0.0%) for-loop ...e/no-dirty-bits/src/mainloop.rkt:156:7 taylor-alt [56] 100.0% ----------------------------------------------------------------------------------- parse-loop80 [45] 1.3% for-loop [23] 4.9% hash-ref! [190] 5.1% map [36] 31.8% simplify [16] 56.9% [45] 6132(16.8%) 0(0.0%) parse-loop80 ...s/racket/match/compiler.rkt:418:15 eval-const-expr [55] 88.6% loop [165] 5.1% for-loop [63] 4.9% parse-loop80 [45] 1.3% ----------------------------------------------------------------------------------- match-e [113] 5.4% loop [164] 5.4% variable? [10] 8.6% finalize-iter! [35] 80.6% [46] 5112(14.0%) 828(2.3%) ??? ...contract/private/arrow-val-first.rkt:388:18 for-loop [57] 80.6% ??? [67] 3.2% ----------------------------------------------------------------------------------- option-on-expr [37] 100.0% [47] 322(0.9%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:281:0 loop [60] 100.0% ----------------------------------------------------------------------------------- option-on-expr [37] 100.0% [48] 322(0.9%) 0(0.0%) for-loop ...-dirty-bits/src/core/regimes.rkt:158:4 errors [81] 100.0% ----------------------------------------------------------------------------------- localize! [38] 100.0% [49] 312(0.9%) 0(0.0%) localize-error ...-bits/src/core/localize.rkt:52:0 hash-ref! [190] 100.0% ----------------------------------------------------------------------------------- loop [50] 50.0% go [39] 50.0% [50] 306(0.8%) 0(0.0%) loop ...llects/racket/private/qq-and-or.rkt:101:61 loop [50] 50.0% datum->syntax6 [61] 50.0% ----------------------------------------------------------------------------------- simplify! [33] 100.0% [51] 302(0.8%) 0(0.0%) for-loop ...e/no-dirty-bits/src/mainloop.rkt:252:6 for-loop [62] 100.0% ----------------------------------------------------------------------------------- option-on-expr [37] 100.0% [52] 282(0.8%) 0(0.0%) sort-context-on-expr ...src/core/regimes.rkt:145:0 ??? [64] 100.0% ----------------------------------------------------------------------------------- gen-rewrites! [41] 100.0% [53] 266(0.7%) 0(0.0%) for-loop .../no-dirty-bits/src/mainloop.rkt:180:11 rewrite-expression-head20 [66] 100.0% ----------------------------------------------------------------------------------- taylor-quotient [42] 100.0% [54] 164(0.4%) 0(0.0%) first-nonzero-exp ...its/src/core/taylor.rkt:266:0 hash-ref! [190] 100.0% ----------------------------------------------------------------------------------- f46 [28] 4.3% ??? [121] 16.4% parse-loop80 [45] 79.3% [55] 6960(19.1%) 0(0.0%) eval-const-expr ...rty-bits/src/programs.rkt:149:0 eval-prog [69] 100.0% ----------------------------------------------------------------------------------- for-loop [44] 100.0% [56] 6424(17.6%) 0(0.0%) taylor-alt ...no-dirty-bits/src/mainloop.rkt:135:0 for-loop [70] 100.0% ----------------------------------------------------------------------------------- ??? [46] 100.0% [57] 4118(11.3%) 0(0.0%) for-loop ...dirty-bits/src/core/alt-table.rkt:56:2 atab-add-altn [72] 76.3% loop [73] 23.7% ----------------------------------------------------------------------------------- ??? [43] 100.0% [58] 3730(10.2%) 0(0.0%) loop .../no-dirty-bits/src/core/simplify.rkt:106:2 for-loop [71] 100.0% ----------------------------------------------------------------------------------- ??? [43] 100.0% [59] 2972(8.1%) 0(0.0%) for-loop ...-dirty-bits/src/core/simplify.rkt:33:2 one-iter [68] 100.0% ----------------------------------------------------------------------------------- err-lsts->split-indices [47] 100.0% [60] 322(0.9%) 0(0.0%) loop ...e/no-dirty-bits/src/core/regimes.rkt:332:4 for-loop [74] 100.0% ----------------------------------------------------------------------------------- loop [50] 100.0% [61] 306(0.8%) 0(0.0%) datum->syntax6 (unknown source) loop [163] 100.0% ----------------------------------------------------------------------------------- for-loop [51] 100.0% [62] 302(0.8%) 0(0.0%) for-loop ...e/no-dirty-bits/src/mainloop.rkt:253:8 expression-cost [100] 100.0% ----------------------------------------------------------------------------------- parse-loop80 [45] 100.0% [63] 302(0.8%) 0(0.0%) for-loop ...-dirty-bits/src/core/taylor.rkt:517:59 hash-ref! [190] 100.0% ----------------------------------------------------------------------------------- sort-context-on-expr [52] 100.0% [64] 282(0.8%) 0(0.0%) ??? ...-7.0/collects/racket/private/sort.rkt:369:3 generic-sort/key [75] 100.0% ----------------------------------------------------------------------------------- ??? [43] 100.0% [65] 278(0.8%) 0(0.0%) for-loop ...dirty-bits/src/core/simplify.rkt:31:14 mk-enode-rec! [76] 100.0% ----------------------------------------------------------------------------------- for-loop [53] 100.0% [66] 266(0.7%) 0(0.0%) rewrite-expression-head20 ...ore/matcher.rkt:126:0 rewriter [77] 100.0% ----------------------------------------------------------------------------------- ??? [46] 100.0% [67] 166(0.5%) 166(0.5%) ??? ...ects/racket/contract/private/guts.rkt:746:8 ----------------------------------------------------------------------------------- for-loop [59] 24.6% ??? [43] 75.4% [68] 12100(33.2%) 0(0.0%) one-iter ...-dirty-bits/src/core/simplify.rkt:66:0 find-matches [79] 43.5% for-loop [80] 37.2% for-loop [83] 11.4% for-loop [85] 5.6% hash-keys [91] 2.3% ----------------------------------------------------------------------------------- prepare-points-intervals [137] 3.4% loop [165] 3.5% errors [81] 9.1% eval-const-expr [55] 84.1% [69] 8274(22.7%) 792(2.2%) eval-prog .../no-dirty-bits/src/programs.rkt:130:0 temp68_2 [78] 81.7% inductor [87] 5.4% eval [93] 3.4% ----------------------------------------------------------------------------------- taylor-alt [56] 100.0% [70] 6424(17.6%) 0(0.0%) for-loop ...e/no-dirty-bits/src/mainloop.rkt:141:6 ??? [186] 100.0% ----------------------------------------------------------------------------------- loop [58] 100.0% [71] 3730(10.2%) 248(0.7%) for-loop ...dirty-bits/src/core/simplify.rkt:112:4 loop [82] 34.1% argmin [84] 24.5% expression-cost [100] 13.5% for-loop [102] 11.9% for-loop [88] 9.4% ----------------------------------------------------------------------------------- for-loop [57] 100.0% [72] 3140(8.6%) 0(0.0%) atab-add-altn ...bits/src/core/alt-table.rkt:202:0 errors [81] 100.0% ----------------------------------------------------------------------------------- for-loop [57] 100.0% [73] 978(2.7%) 218(0.6%) loop ...no-dirty-bits/src/core/alt-table.rkt:176:2 loop [86] 48.9% curry* [89] 28.8% ----------------------------------------------------------------------------------- loop [60] 100.0% [74] 322(0.9%) 322(0.9%) for-loop ...-dirty-bits/src/core/regimes.rkt:297:4 ----------------------------------------------------------------------------------- ??? [64] 100.0% [75] 282(0.8%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [90] 100.0% ----------------------------------------------------------------------------------- for-loop [65] 100.0% [76] 278(0.8%) 0(0.0%) mk-enode-rec! ...ty-bits/src/core/egraph.rkt:119:0 hash-has-key? [92] 100.0% ----------------------------------------------------------------------------------- rewrite-expression-head20 [66] 33.3% matcher [110] 66.7% [77] 266(0.7%) 0(0.0%) rewriter ...-dirty-bits/src/core/matcher.rkt:128:2 for-loop [95] 66.7% *rules* [94] 33.3% ----------------------------------------------------------------------------------- eval-prog [69] 100.0% [78] 6758(18.5%) 0(0.0%) temp68_2 (unknown source) compile16 [96] 100.0% ----------------------------------------------------------------------------------- one-iter [68] 100.0% [79] 5262(14.4%) 0(0.0%) find-matches ...ty-bits/src/core/simplify.rkt:56:0 for-loop [97] 100.0% ----------------------------------------------------------------------------------- one-iter [68] 100.0% [80] 4500(12.3%) 0(0.0%) for-loop ...-dirty-bits/src/core/simplify.rkt:68:2 for-loop [98] 100.0% ----------------------------------------------------------------------------------- ??? [121] 7.9% for-loop [48] 8.6% atab-add-altn [72] 83.5% [81] 3760(10.3%) 0(0.0%) errors ...erbie/no-dirty-bits/src/points.rkt:228:0 for-loop [99] 80.1% eval-prog [69] 19.9% ----------------------------------------------------------------------------------- baseline-error [144] 18.9% for-loop [71] 81.1% [82] 1568(4.3%) 0(0.0%) loop .../racket-7.0/collects/racket/list.rkt:751:4 expression-cost [100] 52.0% for-loop [102] 29.1% ??? [104] 18.9% ----------------------------------------------------------------------------------- one-iter [68] 100.0% [83] 1376(3.8%) 0(0.0%) for-loop ...-dirty-bits/src/core/simplify.rkt:73:2 set-precompute! [101] 100.0% ----------------------------------------------------------------------------------- for-loop [71] 100.0% [84] 914(2.5%) 0(0.0%) argmin ...acket-7.0/collects/racket/list.rkt:765:0 expression-cost [100] 79.6% for-loop [102] 20.4% ----------------------------------------------------------------------------------- one-iter [68] 100.0% [85] 682(1.9%) 0(0.0%) for-loop ...-dirty-bits/src/core/simplify.rkt:76:2 update-leader! [124] 100.0% ----------------------------------------------------------------------------------- loop [73] 9.5% loop [86] 90.5% [86] 478(1.3%) 478(1.3%) loop ...racket-7.0/collects/racket/list.rkt:434:28 loop [86] 90.5% ----------------------------------------------------------------------------------- inductor [87] 18.4% eval-prog [69] 81.6% [87] 446(1.2%) 282(0.8%) inductor ...e/no-dirty-bits/src/programs.rkt:135:4 inductor [87] 18.4% ??? [111] 18.4% ----------------------------------------------------------------------------------- for-loop [71] 100.0% [88] 350(1.0%) 0(0.0%) for-loop ...irty-bits/src/core/simplify.rkt:116:16 for-loop [103] 100.0% ----------------------------------------------------------------------------------- loop [73] 100.0% [89] 282(0.8%) 0(0.0%) curry* ...et-7.0/collects/racket/function.rkt:44:2 procedure-arity [105] 100.0% ----------------------------------------------------------------------------------- copying-mergesort [90] 50.0% generic-sort/key [75] 50.0% [90] 282(0.8%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 copying-mergesort [90] 50.0% loop [106] 50.0% ----------------------------------------------------------------------------------- one-iter [68] 100.0% [91] 280(0.8%) 0(0.0%) hash-keys .../collects/racket/private/hash.rkt:2:2 loop [107] 100.0% ----------------------------------------------------------------------------------- mk-enode-rec! [76] 100.0% [92] 278(0.8%) 278(0.8%) hash-has-key? ...ket/private/more-scheme.rkt:371:2 ----------------------------------------------------------------------------------- eval-prog [69] 100.0% [93] 278(0.8%) 0(0.0%) eval (unknown source) namespace-syntax-introduce3 [108] 100.0% ----------------------------------------------------------------------------------- rewriter [77] 100.0% [94] 266(0.7%) 0(0.0%) *rules* ...o-dirty-bits/src/syntax/rules.rkt:783:0 for-loop [109] 100.0% ----------------------------------------------------------------------------------- rewriter [77] 100.0% [95] 266(0.7%) 0(0.0%) for-loop ...dirty-bits/src/core/matcher.rkt:131:10 matcher [110] 100.0% ----------------------------------------------------------------------------------- temp68_2 [78] 100.0% [96] 6758(18.5%) 0(0.0%) compile16 (unknown source) temp74_0 [112] 100.0% ----------------------------------------------------------------------------------- for-loop [97] 50.0% find-matches [79] 50.0% [97] 5262(14.4%) 0(0.0%) for-loop ...-dirty-bits/src/core/simplify.rkt:58:8 for-loop [97] 50.0% match-e [113] 50.0% ----------------------------------------------------------------------------------- for-loop [80] 100.0% [98] 4500(12.3%) 0(0.0%) for-loop ...-dirty-bits/src/core/simplify.rkt:71:4 merge-egraph-nodes! [114] 66.9% dedup-children! [125] 18.5% substitute-e [118] 14.6% ----------------------------------------------------------------------------------- errors [81] 100.0% [99] 3010(8.3%) 504(1.4%) for-loop ...bie/no-dirty-bits/src/points.rkt:230:2 ??? [121] 83.3% ----------------------------------------------------------------------------------- for-loop [62] 12.9% for-loop [71] 21.4% argmin [84] 31.0% loop [82] 34.8% [100] 2348(6.4%) 188(0.5%) expression-cost ...rty-bits/src/programs.rkt:204:0 compile [115] 92.0% ----------------------------------------------------------------------------------- for-loop [83] 100.0% [101] 1376(3.8%) 0(0.0%) set-precompute! ...bits/src/core/simplify.rkt:80:0 for-loop [116] 100.0% ----------------------------------------------------------------------------------- argmin [84] 17.1% for-loop [71] 40.9% loop [82] 42.0% [102] 1086(3.0%) 0(0.0%) for-loop ...e/no-dirty-bits/src/programs.rkt:205:2 table-ref [117] 100.0% ----------------------------------------------------------------------------------- for-loop [88] 100.0% [103] 350(1.0%) 350(1.0%) for-loop ...irty-bits/src/core/simplify.rkt:120:23 ----------------------------------------------------------------------------------- loop [82] 100.0% [104] 296(0.8%) 0(0.0%) ??? .../herbie/no-dirty-bits/src/points.rkt:217:27 eval-errors [119] 100.0% ----------------------------------------------------------------------------------- curry* [89] 100.0% [105] 282(0.8%) 282(0.8%) procedure-arity ...ket/private/norm-arity.rkt:7:27 ----------------------------------------------------------------------------------- copying-mergesort [90] 100.0% [106] 282(0.8%) 0(0.0%) loop ...7.0/collects/racket/private/sort.rkt:96:12 ??? [179] 100.0% ----------------------------------------------------------------------------------- hash-keys [91] 0.2% loop [107] 99.8% [107] 280(0.8%) 280(0.8%) loop ...t-7.0/collects/racket/private/hash.rkt:3:4 loop [107] 99.8% ----------------------------------------------------------------------------------- eval [93] 100.0% [108] 278(0.8%) 278(0.8%) namespace-syntax-introduce3 (unknown source) ----------------------------------------------------------------------------------- *rules* [94] 100.0% [109] 266(0.7%) 0(0.0%) for-loop ...rbie/no-dirty-bits/src/common.rkt:71:9 ormap [120] 100.0% ----------------------------------------------------------------------------------- for-loop [24] 50.0% for-loop [95] 50.0% [110] 266(0.7%) 0(0.0%) matcher ...o-dirty-bits/src/core/matcher.rkt:163:2 ??? [13] 50.0% rewriter [77] 50.0% ----------------------------------------------------------------------------------- inductor [87] 100.0% [111] 164(0.4%) 164(0.4%) ??? ...lects/racket/contract/private/orc.rkt:83:14 ----------------------------------------------------------------------------------- compile16 [96] 100.0% [112] 6758(18.5%) 0(0.0%) temp74_0 (unknown source) expand-single [122] 92.9% compile-top9 [128] 7.1% ----------------------------------------------------------------------------------- for-loop [138] 29.7% for-loop [97] 70.3% [113] 5262(14.4%) 1158(3.2%) match-e .../no-dirty-bits/src/core/ematch.rkt:39:0 for-loop [123] 75.5% custom-in-set [135] 3.9% variable? [10] 1.7% ??? [46] 1.7% ----------------------------------------------------------------------------------- merge-egraph-nodes! [114] 3.3% for-loop [130] 5.9% for-loop [98] 90.7% [114] 3010(8.3%) 0(0.0%) merge-egraph-nodes! ...s/src/core/egraph.rkt:145:0 update-leader! [124] 51.9% loop! [126] 26.2% enode-merge! [132] 9.3% for-loop [130] 5.9% merge-egraph-nodes! [114] 3.3% dedup-children! [125] 3.3% ----------------------------------------------------------------------------------- expression-cost [100] 100.0% [115] 2160(5.9%) 294(0.8%) compile ...ie/no-dirty-bits/src/programs.rkt:181:0 hash-ref! [190] 86.4% ----------------------------------------------------------------------------------- set-precompute! [101] 100.0% [116] 1376(3.8%) 0(0.0%) for-loop ...-dirty-bits/src/core/simplify.rkt:82:2 ??? [121] 82.8% setfindf [134] 17.2% ----------------------------------------------------------------------------------- for-loop [102] 100.0% [117] 1086(3.0%) 632(1.7%) table-ref ...bie/no-dirty-bits/src/common.rkt:42:0 for-loop [129] 41.8% ----------------------------------------------------------------------------------- for-loop [127] 38.8% for-loop [98] 61.2% [118] 656(1.8%) 288(0.8%) substitute-e ...irty-bits/src/core/ematch.rkt:64:0 for-loop [127] 69.6% variable? [10] 8.4% ----------------------------------------------------------------------------------- ??? [104] 100.0% [119] 296(0.8%) 0(0.0%) eval-errors .../no-dirty-bits/src/points.rkt:203:0 for-loop [131] 100.0% ----------------------------------------------------------------------------------- for-loop [109] 100.0% [120] 266(0.7%) 0(0.0%) ormap ....0/collects/racket/private/map.rkt:141:13 flag-set? [133] 100.0% ----------------------------------------------------------------------------------- for-loop [116] 1.0% for-loop [99] 2.3% run [14] 48.3% [121] 36484(100.0%) 282(0.8%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 48.3% run-improve40 [2] 36.2% prepare-points-intervals [137] 7.0% oracle-error [140] 2.4% ??? [179] 1.7% get-final-combination [8] 1.1% eval-const-expr [55] 1.0% errors [81] 0.4% baseline-error [144] 0.4% loop [165] 0.4% errors-score [146] 0.4% ??? [186] 0.3% ----------------------------------------------------------------------------------- temp74_0 [112] 100.0% [122] 6280(17.2%) 0(0.0%) expand-single (unknown source) expand-capturing-lifts [136] 100.0% ----------------------------------------------------------------------------------- match-e [113] 100.0% [123] 4408(12.1%) 2124(5.8%) for-loop ...o-dirty-bits/src/core/ematch.rkt:52:11 for-loop [138] 58.3% loop [165] 6.0% foldl [148] 3.0% ----------------------------------------------------------------------------------- for-loop [85] 28.1% merge-egraph-nodes! [114] 71.9% [124] 2424(6.6%) 0(0.0%) update-leader! ...y-bits/src/core/egraph.rkt:213:0 for-loop [139] 87.3% custom-set-union! [143] 12.7% ----------------------------------------------------------------------------------- merge-egraph-nodes! [114] 19.3% for-loop [98] 80.7% [125] 1034(2.8%) 0(0.0%) dedup-children! ...y-bits/src/core/enode.rkt:196:0 loop [141] 83.9% loop [151] 16.1% ----------------------------------------------------------------------------------- merge-egraph-nodes! [114] 100.0% [126] 788(2.2%) 0(0.0%) loop! ...ie/no-dirty-bits/src/core/enode.rkt:188:2 custom-set-union [156] 57.6% loop [165] 42.4% ----------------------------------------------------------------------------------- substitute-e [118] 100.0% [127] 656(1.8%) 0(0.0%) for-loop ...o-dirty-bits/src/core/ematch.rkt:73:24 substitute-e [118] 69.2% mk-enode! [150] 30.8% ----------------------------------------------------------------------------------- temp74_0 [112] 100.0% [128] 478(1.3%) 0(0.0%) compile-top9 (unknown source) compile-forms31 [142] 100.0% ----------------------------------------------------------------------------------- table-ref [117] 100.0% [129] 454(1.2%) 454(1.2%) for-loop ...rbie/no-dirty-bits/src/common.rkt:44:4 ----------------------------------------------------------------------------------- merge-egraph-nodes! [114] 100.0% [130] 358(1.0%) 0(0.0%) for-loop ...o-dirty-bits/src/core/egraph.rkt:199:4 merge-egraph-nodes! [114] 100.0% ----------------------------------------------------------------------------------- eval-errors [119] 100.0% [131] 296(0.8%) 0(0.0%) for-loop ...bie/no-dirty-bits/src/points.rkt:205:2 ??? [179] 100.0% ----------------------------------------------------------------------------------- merge-egraph-nodes! [114] 100.0% [132] 280(0.8%) 0(0.0%) enode-merge! ...irty-bits/src/core/enode.rkt:125:0 adopt-enode! [145] 100.0% ----------------------------------------------------------------------------------- ormap [120] 100.0% [133] 266(0.7%) 0(0.0%) flag-set? ...bie/no-dirty-bits/src/config.rkt:28:0 return/no-unsupplied [147] 100.0% ----------------------------------------------------------------------------------- for-loop [116] 100.0% [134] 236(0.6%) 0(0.0%) setfindf ...bie/no-dirty-bits/src/common.rkt:139:0 for-loop [149] 100.0% ----------------------------------------------------------------------------------- match-e [113] 100.0% [135] 204(0.6%) 204(0.6%) custom-in-set ...acket/private/set-types.rkt:577:0 ----------------------------------------------------------------------------------- expand-single [122] 100.0% [136] 6280(17.2%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [152] 100.0% ----------------------------------------------------------------------------------- ??? [121] 100.0% [137] 5126(14.0%) 0(0.0%) prepare-points-intervals ...s/src/points.rkt:133:0 loop [153] 94.6% eval-prog [69] 5.4% ----------------------------------------------------------------------------------- for-loop [123] 100.0% [138] 3384(9.3%) 454(1.2%) for-loop ...o-dirty-bits/src/core/ematch.rkt:58:37 match-e [113] 83.2% ??? [160] 7.1% ----------------------------------------------------------------------------------- update-leader! [124] 100.0% [139] 2116(5.8%) 0(0.0%) for-loop ...o-dirty-bits/src/core/egraph.rkt:218:6 for-loop [154] 83.1% hash-update! [166] 16.9% ----------------------------------------------------------------------------------- ??? [121] 100.0% [140] 1746(4.8%) 0(0.0%) oracle-error ...no-dirty-bits/src/points.rkt:212:0 for-loop [155] 100.0% ----------------------------------------------------------------------------------- dedup-children! [125] 3.2% loop [141] 96.8% [141] 868(2.4%) 868(2.4%) loop ...racket-7.0/collects/racket/list.rkt:434:17 loop [141] 96.8% ----------------------------------------------------------------------------------- compile-top9 [128] 100.0% [142] 478(1.3%) 0(0.0%) compile-forms31 (unknown source) for-loop [187] 100.0% ----------------------------------------------------------------------------------- update-leader! [124] 100.0% [143] 308(0.8%) 0(0.0%) custom-set-union! ...t/private/set-types.rkt:245:0 for-loop [157] 100.0% ----------------------------------------------------------------------------------- ??? [121] 100.0% [144] 296(0.8%) 0(0.0%) baseline-error ...-dirty-bits/src/points.rkt:216:0 loop [82] 100.0% ----------------------------------------------------------------------------------- enode-merge! [132] 100.0% [145] 280(0.8%) 0(0.0%) adopt-enode! ...irty-bits/src/core/enode.rkt:103:0 custom-set-union [156] 100.0% ----------------------------------------------------------------------------------- ??? [121] 100.0% [146] 276(0.8%) 0(0.0%) errors-score ...no-dirty-bits/src/points.rkt:220:0 loop [158] 100.0% ----------------------------------------------------------------------------------- flag-set? [133] 100.0% [147] 266(0.7%) 266(0.7%) return/no-unsupplied ...ct/private/arr-i.rkt:534:0 ----------------------------------------------------------------------------------- for-loop [123] 100.0% [148] 266(0.7%) 0(0.0%) foldl ....0/collects/racket/private/list.rkt:229:4 merge2 [159] 100.0% ----------------------------------------------------------------------------------- setfindf [134] 100.0% [149] 236(0.6%) 236(0.6%) for-loop ...bie/no-dirty-bits/src/common.rkt:140:2 ----------------------------------------------------------------------------------- for-loop [127] 100.0% [150] 202(0.6%) 0(0.0%) mk-enode! ...o-dirty-bits/src/core/egraph.rkt:99:0 new-enode [161] 100.0% ----------------------------------------------------------------------------------- dedup-children! [125] 33.3% loop [151] 66.7% [151] 166(0.5%) 0(0.0%) loop ...racket-7.0/collects/racket/list.rkt:417:34 loop [151] 66.7% loop [163] 33.3% ----------------------------------------------------------------------------------- expand-capturing-lifts [136] 100.0% [152] 6280(17.2%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [162] 90.3% loop [163] 9.7% ----------------------------------------------------------------------------------- prepare-points-intervals [137] 100.0% [153] 4848(13.3%) 0(0.0%) loop .../herbie/no-dirty-bits/src/points.rkt:145:4 loop [164] 70.0% ??? [167] 24.0% ordinary-value? [168] 6.0% ----------------------------------------------------------------------------------- for-loop [139] 100.0% [154] 1758(4.8%) 0(0.0%) for-loop ...o-dirty-bits/src/core/egraph.rkt:219:8 hash-update! [166] 100.0% ----------------------------------------------------------------------------------- oracle-error [140] 100.0% [155] 1746(4.8%) 0(0.0%) for-loop ...bie/no-dirty-bits/src/points.rkt:213:2 loop [165] 100.0% ----------------------------------------------------------------------------------- adopt-enode! [145] 38.1% loop! [126] 61.9% [156] 734(2.0%) 286(0.8%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [169] 38.1% for-loop [172] 22.9% ----------------------------------------------------------------------------------- custom-set-union! [143] 100.0% [157] 308(0.8%) 308(0.8%) for-loop ...cts/racket/private/set-types.rkt:253:4 ----------------------------------------------------------------------------------- errors-score [146] 100.0% [158] 276(0.8%) 0(0.0%) loop .../racket-7.0/collects/racket/list.rkt:559:2 ordinary-value? [168] 100.0% ----------------------------------------------------------------------------------- foldl [148] 100.0% [159] 266(0.7%) 266(0.7%) merge2 ...e/no-dirty-bits/src/core/ematch.rkt:24:0 ----------------------------------------------------------------------------------- for-loop [138] 100.0% [160] 240(0.7%) 0(0.0%) ??? ...rbie/no-dirty-bits/src/core/ematch.rkt:43:5 for-loop [170] 100.0% ----------------------------------------------------------------------------------- mk-enode! [150] 100.0% [161] 202(0.6%) 0(0.0%) new-enode ...no-dirty-bits/src/core/enode.rkt:95:0 type-of-enode-expr [171] 100.0% ----------------------------------------------------------------------------------- lambda-clause-expander [152] 14.1% for-loop [187] 85.9% [162] 5670(15.5%) 0(0.0%) finish-bodys (unknown source) for-loop [187] 100.0% ----------------------------------------------------------------------------------- datum->syntax6 [61] 3.4% loop [151] 3.6% apply-transformer52 [21] 9.6% lambda-clause-expander [152] 10.0% for-loop [187] 11.3% syntax-e/no-taint [20] 62.0% [163] 4564(12.5%) 472(1.3%) loop (unknown source) gf [173] 62.0% expand-id-application-form17 [176] 11.3% dispatch-transformer41 [7] 10.0% core-form-sym [177] 6.6% syntax-e [6] 3.0% ----------------------------------------------------------------------------------- loop [153] 100.0% [164] 3394(9.3%) 298(0.8%) loop .../herbie/no-dirty-bits/src/points.rkt:104:2 ??? [179] 55.5% ??? [186] 27.6% ??? [46] 8.2% ----------------------------------------------------------------------------------- parse-loop80 [45] 0.4% for-loop [123] 2.3% loop! [126] 3.8% ??? [121] 9.7% for-loop [155] 41.7% loop [165] 42.2% [165] 2944(8.1%) 600(1.6%) loop ...-7.0/collects/racket/private/map.rkt:40:19 loop [165] 42.2% ??? [179] 20.7% ??? [175] 16.3% eval-prog [69] 9.7% ??? [186] 4.7% hash-ref! [190] 0.2% map [36] 0.2% ----------------------------------------------------------------------------------- for-loop [139] 16.9% for-loop [154] 83.1% [166] 2116(5.8%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [174] 100.0% ----------------------------------------------------------------------------------- loop [153] 100.0% [167] 1164(3.2%) 292(0.8%) ??? ...s/herbie/no-dirty-bits/src/points.rkt:129:2 ??? [186] 51.0% compose [178] 23.9% ----------------------------------------------------------------------------------- loop [158] 48.8% loop [153] 51.2% [168] 566(1.6%) 566(1.6%) ordinary-value? ...o-dirty-bits/src/float.rkt:54:0 ----------------------------------------------------------------------------------- custom-set-union [156] 100.0% [169] 280(0.8%) 280(0.8%) for-loop ...cts/racket/private/set-types.rkt:174:3 ----------------------------------------------------------------------------------- ??? [160] 100.0% [170] 240(0.7%) 240(0.7%) for-loop ...no-dirty-bits/src/core/ematch.rkt:44:7 ----------------------------------------------------------------------------------- new-enode [161] 100.0% [171] 202(0.6%) 202(0.6%) type-of-enode-expr ...bits/src/core/enode.rkt:68:0 ----------------------------------------------------------------------------------- custom-set-union [156] 100.0% [172] 168(0.5%) 168(0.5%) for-loop ...cts/racket/private/set-types.rkt:152:2 ----------------------------------------------------------------------------------- loop [163] 100.0% [173] 3154(8.6%) 574(1.6%) gf (unknown source) propagation-apply [180] 81.8% ----------------------------------------------------------------------------------- hash-update! [166] 100.0% [174] 2116(5.8%) 234(0.6%) ??? ...ie/no-dirty-bits/src/core/egraph.rkt:221:24 for-loop [181] 88.9% ----------------------------------------------------------------------------------- loop [165] 100.0% [175] 860(2.4%) 290(0.8%) ??? .../herbie/no-dirty-bits/src/points.rkt:214:26 ??? [186] 34.4% ??? [179] 31.9% ----------------------------------------------------------------------------------- loop [163] 100.0% [176] 702(1.9%) 0(0.0%) expand-id-application-form17 (unknown source) syntax-e/no-taint [20] 52.7% resolve+shift28 [182] 47.3% ----------------------------------------------------------------------------------- loop [163] 100.0% [177] 302(0.8%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [182] 100.0% ----------------------------------------------------------------------------------- ??? [167] 100.0% [178] 278(0.8%) 278(0.8%) compose ...collects/racket/private/list.rkt:385:12 ----------------------------------------------------------------------------------- ??? [175] 5.2% loop [106] 5.4% for-loop [131] 5.6% loop [165] 11.6% loop [164] 35.9% ??? [121] 36.3% [179] 5244(14.4%) 206(0.6%) ??? ...herbie/no-dirty-bits/src/programs.rkt:146:2 ??? [183] 66.8% ??? [186] 29.3% ----------------------------------------------------------------------------------- gf [173] 100.0% [180] 2580(7.1%) 2580(7.1%) propagation-apply (unknown source) ----------------------------------------------------------------------------------- ??? [174] 100.0% [181] 1882(5.2%) 1448(4.0%) for-loop ...-dirty-bits/src/core/egraph.rkt:222:26 update-en-expr [185] 23.1% ----------------------------------------------------------------------------------- core-form-sym [177] 25.2% expand-id-application-form17 [176] 27.7% expand-identifier [9] 47.1% [182] 1198(3.3%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [184] 100.0% ----------------------------------------------------------------------------------- ??? [179] 100.0% [183] 3502(9.6%) 574(1.6%) ??? ...t-7.0/collects/racket/private/kw.rkt:592:14 ??? [188] 39.7% ??? [186] 26.3% ??? [189] 17.6% ----------------------------------------------------------------------------------- resolve+shift28 [182] 100.0% [184] 1198(3.3%) 286(0.8%) fallback-loop (unknown source) for-loop [187] 76.1% ----------------------------------------------------------------------------------- for-loop [181] 100.0% [185] 434(1.2%) 434(1.2%) update-en-expr ...y-bits/src/core/egraph.rkt:207:0 ----------------------------------------------------------------------------------- loop [165] 2.4% ??? [175] 2.5% map [36] 2.7% ??? [121] 2.8% ??? [167] 5.1% ??? [183] 7.9% loop [164] 8.1% ??? [179] 13.2% loop [17] 16.7% location-do [191] 19.1% for-loop [70] 19.1% [186] 11618(31.8%) 1558(4.3%) ??? ...tract/private/arrow-higher-order.rkt:357:33 location-do [191] 19.1% approximate9 [3] 19.1% ->flonum [192] 18.0% hash-ref! [190] 17.2% ival-mult [193] 7.9% mk-ival [196] 3.0% sample-multi-bounded [199] 2.4% ----------------------------------------------------------------------------------- fallback-loop [184] 1.7% for-loop [187] 7.7% compile-forms31 [142] 7.8% finish-bodys [162] 82.9% [187] 6148(16.9%) 1402(3.8%) for-loop (unknown source) finish-bodys [162] 71.9% for-loop [187] 7.7% syntax-e [6] 5.7% module-uses-extract-extra-inspectorsss [197] 5.1% dispatch-transformer41 [7] 3.0% expand-identifier [9] 0.8% loop [163] 0.7% add-local-binding!37 [194] 0.7% ----------------------------------------------------------------------------------- ??? [183] 100.0% [188] 1392(3.8%) 1104(3.0%) ??? .../no-dirty-bits/src/syntax/syntax.rkt:317:17 ??? [198] 20.7% ----------------------------------------------------------------------------------- ??? [183] 100.0% [189] 616(1.7%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:361:33 ival-div [195] 100.0% ----------------------------------------------------------------------------------- for-loop [63] 0.6% loop [17] 0.7% loop [165] 1.9% localize-error [49] 1.9% first-nonzero-exp [54] 2.0% ??? [201] 11.1% compile [115] 11.4% for-loop [27] 14.8% for-loop [19] 15.8% ??? [200] 20.0% ??? [186] 20.0% [190] 8320(22.8%) 1390(3.8%) hash-ref! .../racket/private/more-scheme.rkt:376:2 simplify [16] 20.7% ??? [200] 20.0% ??? [4] 16.0% ??? [5] 15.8% ??? [201] 14.4% parse-loop80 [45] 3.8% ??? [11] 0.6% ----------------------------------------------------------------------------------- ??? [186] 28.8% location-do [191] 71.2% [191] 6424(17.6%) 0(0.0%) location-do ...o-dirty-bits/src/programs.rkt:111:0 location-do [191] 71.2% ??? [186] 28.8% ----------------------------------------------------------------------------------- ??? [186] 100.0% [192] 2092(5.7%) 2092(5.7%) ->flonum ...ie/no-dirty-bits/src/programs.rkt:38:0 ----------------------------------------------------------------------------------- ??? [186] 100.0% [193] 920(2.5%) 0(0.0%) ival-mult ...-dirty-bits/src/biginterval.rkt:105:0 classify-ival [202] 100.0% ----------------------------------------------------------------------------------- for-loop [187] 100.0% [194] 622(1.7%) 622(1.7%) add-local-binding!37 (unknown source) ----------------------------------------------------------------------------------- ??? [189] 100.0% [195] 616(1.7%) 0(0.0%) ival-div ...o-dirty-bits/src/biginterval.rkt:141:0 classify-ival [202] 100.0% ----------------------------------------------------------------------------------- ??? [186] 100.0% [196] 346(0.9%) 0(0.0%) mk-ival .../no-dirty-bits/src/biginterval.rkt:59:0 bf [203] 100.0% ----------------------------------------------------------------------------------- for-loop [187] 100.0% [197] 314(0.9%) 314(0.9%) module-uses-extract-extra-inspectorsss ... source) ----------------------------------------------------------------------------------- ??? [188] 100.0% [198] 288(0.8%) 288(0.8%) ??? ...s/racket/contract/private/arr-i.rkt:1252:29 ----------------------------------------------------------------------------------- ??? [186] 100.0% [199] 278(0.8%) 278(0.8%) sample-multi-bounded ...y-bits/src/points.rkt:16:0 ----------------------------------------------------------------------------------- hash-ref! [190] 100.0% [200] 5978(16.4%) 0(0.0%) ??? ...bie/no-dirty-bits/src/core/taylor.rkt:45:15 hash-ref! [190] 100.0% ----------------------------------------------------------------------------------- hash-ref! [190] 100.0% [201] 1540(4.2%) 476(1.3%) ??? ...herbie/no-dirty-bits/src/programs.rkt:189:5 hash-ref! [190] 82.1% ----------------------------------------------------------------------------------- ival-div [195] 40.1% ival-mult [193] 59.9% [202] 1536(4.2%) 914(2.5%) classify-ival ...ty-bits/src/biginterval.rkt:310:0 force [205] 21.0% ...higher-order.rkt:357:33 [206] 19.5% ----------------------------------------------------------------------------------- mk-ival [196] 100.0% [203] 346(0.9%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 ??? [204] 100.0% ----------------------------------------------------------------------------------- bf [203] 100.0% [204] 346(0.9%) 346(0.9%) ??? /opt/racket-7.0/collects/ffi/unsafe.rkt:898:4 ----------------------------------------------------------------------------------- classify-ival [202] 100.0% [205] 322(0.9%) 322(0.9%) force ...collects/racket/private/promise.rkt:109:0 ----------------------------------------------------------------------------------- classify-ival [202] 100.0% [206] 300(0.8%) 300(0.8%) ...higher-order.rkt:357:33 (unknown source) -----------------------------------------------------------------------------------