Profiling results ----------------- Total cpu time observed: 65794ms (out of 66296ms) Number of samples taken: 202 (once every 326ms) (Hiding functions with self<1.0% and local<2.0%: 3 of 212 hidden) =================================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee =================================================================================== ??? [82] 100.0% [1] 65794(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [11] 100.0% ----------------------------------------------------------------------------------- ??? [82] 100.0% [2] 48602(73.9%) 0(0.0%) run-improve40 ...ie/develop/src/mainloop.rkt:336:0 for-loop [12] 64.0% simplify! [25] 36.0% ----------------------------------------------------------------------------------- ??? [186] 100.0% [3] 2530(3.8%) 0(0.0%) approximate9 ...e/develop/src/core/taylor.rkt:12:0 loop [13] 88.1% for-loop [20] 11.9% ----------------------------------------------------------------------------------- hash-ref! [189] 100.0% [4] 1894(2.9%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:301:23 for-loop [14] 100.0% ----------------------------------------------------------------------------------- match-e [83] 100.0% [5] 1290(2.0%) 0(0.0%) variable? .../develop/src/syntax/syntax.rkt:1159:0 ??? [32] 100.0% ----------------------------------------------------------------------------------- matcher [71] 100.0% [6] 1224(1.9%) 0(0.0%) ??? .../herbie/develop/src/core/matcher.rkt:130:11 for-loop [15] 90.9% for-loop [18] 9.1% ----------------------------------------------------------------------------------- hash-ref! [189] 100.0% [7] 960(1.5%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:291:26 for-loop [16] 100.0% ----------------------------------------------------------------------------------- for-loop [154] 100.0% [8] 336(0.5%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [145] 100.0% ----------------------------------------------------------------------------------- hash-ref! [189] 100.0% [9] 330(0.5%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:407:23 for-loop [19] 100.0% ----------------------------------------------------------------------------------- for-loop [154] 100.0% [10] 310(0.5%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [17] 100.0% ----------------------------------------------------------------------------------- profile-thunk16 [1] 100.0% [11] 65794(100.0%) 0(0.0%) run ...et-7.0/share/pkgs/profile-lib/main.rkt:39:2 ??? [82] 100.0% ----------------------------------------------------------------------------------- run-improve40 [2] 100.0% [12] 31124(47.3%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:351:4 run-iter! [21] 100.0% ----------------------------------------------------------------------------------- approximate9 [3] 100.0% [13] 2230(3.4%) 0(0.0%) loop ...es/herbie/develop/src/core/taylor.rkt:87:4 ??? [186] 100.0% ----------------------------------------------------------------------------------- ??? [4] 100.0% [14] 1894(2.9%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:304:27 hash-ref! [189] 100.0% ----------------------------------------------------------------------------------- ??? [6] 100.0% [15] 1224(1.9%) 0(0.0%) for-loop ...ie/develop/src/core/matcher.rkt:132:15 matcher [71] 100.0% ----------------------------------------------------------------------------------- ??? [7] 100.0% [16] 960(1.5%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:291:52 hash-ref! [189] 84.5% ??? [24] 15.5% ----------------------------------------------------------------------------------- expand-identifier [175] 49.5% expand-implicit [10] 50.5% [17] 614(0.9%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [22] 100.0% ----------------------------------------------------------------------------------- ??? [6] 100.0% [18] 334(0.5%) 0(0.0%) for-loop ...bie/develop/src/core/matcher.rkt:106:4 foldl [107] 100.0% ----------------------------------------------------------------------------------- ??? [9] 100.0% [19] 330(0.5%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:411:33 hash-ref! [189] 100.0% ----------------------------------------------------------------------------------- approximate9 [3] 100.0% [20] 300(0.5%) 0(0.0%) for-loop ...rbie/develop/src/core/taylor.rkt:30:18 taylor [23] 100.0% ----------------------------------------------------------------------------------- for-loop [12] 100.0% [21] 31124(47.3%) 0(0.0%) run-iter! ...herbie/develop/src/mainloop.rkt:317:0 simplify! [25] 77.9% finalize-iter! [26] 9.0% gen-series! [27] 8.1% gen-rewrites! [28] 3.9% localize! [29] 1.1% ----------------------------------------------------------------------------------- resolve+shift28 [17] 100.0% [22] 614(0.9%) 310(0.5%) fallback-loop (unknown source) for-loop [154] 49.5% ----------------------------------------------------------------------------------- taylor [23] 50.0% for-loop [20] 50.0% [23] 300(0.5%) 0(0.0%) taylor ...herbie/develop/src/core/taylor.rkt:170:0 taylor [23] 50.0% taylor-invert [30] 50.0% ----------------------------------------------------------------------------------- for-loop [16] 100.0% [24] 298(0.5%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:294:19 hash-ref! [189] 100.0% ----------------------------------------------------------------------------------- run-improve40 [2] 41.9% run-iter! [21] 58.1% [25] 41730(63.4%) 0(0.0%) simplify! ...herbie/develop/src/mainloop.rkt:213:0 ??? [31] 100.0% ----------------------------------------------------------------------------------- run-iter! [21] 100.0% [26] 2788(4.2%) 0(0.0%) finalize-iter! ...e/develop/src/mainloop.rkt:268:0 ??? [32] 100.0% ----------------------------------------------------------------------------------- run-iter! [21] 100.0% [27] 2530(3.8%) 0(0.0%) gen-series! ...rbie/develop/src/mainloop.rkt:149:0 for-loop [33] 100.0% ----------------------------------------------------------------------------------- run-iter! [21] 100.0% [28] 1224(1.9%) 0(0.0%) gen-rewrites! ...ie/develop/src/mainloop.rkt:172:0 for-loop [35] 100.0% ----------------------------------------------------------------------------------- run-iter! [21] 100.0% [29] 330(0.5%) 0(0.0%) localize! ...herbie/develop/src/mainloop.rkt:116:0 localize-error [36] 100.0% ----------------------------------------------------------------------------------- taylor [23] 100.0% [30] 300(0.5%) 0(0.0%) taylor-invert ...develop/src/core/taylor.rkt:318:0 simplify [34] 100.0% ----------------------------------------------------------------------------------- ??? [115] 0.8% simplify! [25] 99.2% [31] 42058(63.9%) 0(0.0%) ??? ...s/herbie/develop/src/core/simplify.rkt:26:0 for-loop [37] 61.8% loop [38] 24.0% one-iter [44] 14.1% ----------------------------------------------------------------------------------- match-e [83] 19.5% variable? [5] 25.5% finalize-iter! [26] 55.0% [32] 5068(7.7%) 2280(3.5%) ??? ...contract/private/arrow-val-first.rkt:388:18 for-loop [39] 55.0% ----------------------------------------------------------------------------------- gen-series! [27] 100.0% [33] 2530(3.8%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:156:7 taylor-alt [41] 100.0% ----------------------------------------------------------------------------------- taylor-invert [30] 11.9% hash-ref! [189] 88.1% [34] 2530(3.8%) 0(0.0%) simplify ...erbie/develop/src/core/reduce.rkt:16:0 parse-loop80 [40] 88.2% debug-print [43] 11.8% ----------------------------------------------------------------------------------- gen-rewrites! [28] 100.0% [35] 1224(1.9%) 0(0.0%) for-loop ...herbie/develop/src/mainloop.rkt:180:11 rewrite-expression-head20 [42] 100.0% ----------------------------------------------------------------------------------- localize! [29] 100.0% [36] 330(0.5%) 0(0.0%) localize-error ...velop/src/core/localize.rkt:52:0 hash-ref! [189] 100.0% ----------------------------------------------------------------------------------- ??? [31] 100.0% [37] 26012(39.5%) 0(0.0%) for-loop ...bie/develop/src/core/simplify.rkt:33:2 one-iter [44] 100.0% ----------------------------------------------------------------------------------- ??? [31] 100.0% [38] 10108(15.4%) 298(0.5%) loop ...herbie/develop/src/core/simplify.rkt:143:2 for-loop [45] 97.1% ----------------------------------------------------------------------------------- ??? [32] 100.0% [39] 2788(4.2%) 0(0.0%) for-loop ...ie/develop/src/core/alt-table.rkt:56:2 atab-add-altn [48] 77.5% loop [50] 22.5% ----------------------------------------------------------------------------------- hash-ref! [189] 12.9% simplify [34] 87.1% [40] 2562(3.9%) 0(0.0%) parse-loop80 ...s/racket/match/compiler.rkt:418:15 eval-const-expr [46] 87.1% loop [122] 12.9% ----------------------------------------------------------------------------------- for-loop [33] 100.0% [41] 2530(3.8%) 0(0.0%) taylor-alt ...erbie/develop/src/mainloop.rkt:135:0 for-loop [47] 100.0% ----------------------------------------------------------------------------------- for-loop [35] 100.0% [42] 1224(1.9%) 0(0.0%) rewrite-expression-head20 ...core/matcher.rkt:87:0 rewriter [49] 100.0% ----------------------------------------------------------------------------------- simplify [34] 100.0% [43] 298(0.5%) 0(0.0%) debug-print .../herbie/develop/src/debug.rkt:110:0 for-loop [51] 100.0% ----------------------------------------------------------------------------------- ??? [31] 18.6% for-loop [37] 81.4% [44] 31950(48.6%) 0(0.0%) one-iter ...bie/develop/src/core/simplify.rkt:86:0 find-matches [52] 43.1% for-loop [53] 40.2% for-loop [54] 16.7% ----------------------------------------------------------------------------------- loop [38] 100.0% [45] 9810(14.9%) 306(0.5%) for-loop ...ie/develop/src/core/simplify.rkt:149:4 loop [56] 37.4% argmin [58] 25.4% expression-cost [66] 18.8% for-loop [60] 9.2% for-loop [69] 6.1% ----------------------------------------------------------------------------------- ??? [82] 41.9% parse-loop80 [40] 58.1% [46] 3844(5.8%) 0(0.0%) eval-const-expr .../develop/src/programs.rkt:149:0 eval-prog [55] 100.0% ----------------------------------------------------------------------------------- taylor-alt [41] 100.0% [47] 2530(3.8%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:141:6 ??? [186] 100.0% ----------------------------------------------------------------------------------- for-loop [39] 100.0% [48] 2162(3.3%) 0(0.0%) atab-add-altn ...elop/src/core/alt-table.rkt:202:0 errors [57] 100.0% ----------------------------------------------------------------------------------- rewrite-expression-head20 [42] 31.3% matcher [71] 68.7% [49] 1224(1.9%) 0(0.0%) rewriter ...rbie/develop/src/core/matcher.rkt:89:2 for-loop [59] 94.0% *rules* [63] 6.0% ----------------------------------------------------------------------------------- for-loop [39] 100.0% [50] 626(1.0%) 0(0.0%) loop ...erbie/develop/src/core/alt-table.rkt:176:2 loop [61] 52.7% argmax [62] 47.3% ----------------------------------------------------------------------------------- debug-print [43] 100.0% [51] 298(0.5%) 298(0.5%) for-loop ...ies/herbie/develop/src/debug.rkt:116:2 ----------------------------------------------------------------------------------- one-iter [44] 100.0% [52] 13776(20.9%) 0(0.0%) find-matches ...develop/src/core/simplify.rkt:56:0 for-loop [64] 100.0% ----------------------------------------------------------------------------------- one-iter [44] 100.0% [53] 12832(19.5%) 0(0.0%) for-loop ...bie/develop/src/core/simplify.rkt:95:2 loop [65] 83.5% update-leader! [105] 16.5% ----------------------------------------------------------------------------------- one-iter [44] 100.0% [54] 5342(8.1%) 0(0.0%) for-loop ...ie/develop/src/core/simplify.rkt:111:2 set-precompute! [67] 100.0% ----------------------------------------------------------------------------------- errors [57] 13.6% eval-const-expr [46] 86.4% [55] 4448(6.8%) 0(0.0%) eval-prog ...herbie/develop/src/programs.rkt:130:0 temp68_2 [68] 64.4% loop [163] 14.7% eval-one-top12 [74] 7.4% hash-ref! [189] 6.7% eval [75] 6.7% ----------------------------------------------------------------------------------- for-loop [45] 100.0% [56] 3670(5.6%) 0(0.0%) loop .../racket-7.0/collects/racket/list.rkt:751:4 expression-cost [66] 58.1% for-loop [69] 41.9% ----------------------------------------------------------------------------------- ??? [82] 30.7% atab-add-altn [48] 69.3% [57] 3120(4.7%) 0(0.0%) errors ...lies/herbie/develop/src/points.rkt:228:0 for-loop [70] 80.6% eval-prog [55] 19.4% ----------------------------------------------------------------------------------- for-loop [45] 100.0% [58] 2488(3.8%) 0(0.0%) argmin ...acket-7.0/collects/racket/list.rkt:765:0 expression-cost [66] 74.3% for-loop [69] 25.7% ----------------------------------------------------------------------------------- rewriter [49] 100.0% [59] 1224(1.9%) 0(0.0%) for-loop ...rbie/develop/src/core/matcher.rkt:91:4 matcher [71] 83.8% for-loop [73] 16.2% ----------------------------------------------------------------------------------- for-loop [45] 100.0% [60] 902(1.4%) 300(0.5%) for-loop ...e/develop/src/core/simplify.rkt:153:16 for-loop [72] 66.7% ----------------------------------------------------------------------------------- loop [50] 100.0% [61] 330(0.5%) 330(0.5%) loop ...erbie/develop/src/core/alt-table.rkt:101:2 ----------------------------------------------------------------------------------- loop [50] 100.0% [62] 296(0.4%) 296(0.4%) argmax ...acket-7.0/collects/racket/list.rkt:766:0 ----------------------------------------------------------------------------------- rewriter [49] 100.0% [63] 296(0.4%) 296(0.4%) *rules* ...rbie/develop/src/syntax/rules.rkt:783:0 ----------------------------------------------------------------------------------- for-loop [64] 50.0% find-matches [52] 50.0% [64] 13776(20.9%) 2766(4.2%) for-loop ...bie/develop/src/core/simplify.rkt:58:8 for-loop [64] 50.0% match-e [83] 40.0% ----------------------------------------------------------------------------------- for-loop [53] 100.0% [65] 10718(16.3%) 0(0.0%) loop ...herbie/develop/src/core/simplify.rkt:100:4 apply-match [76] 100.0% ----------------------------------------------------------------------------------- for-loop [45] 31.7% argmin [58] 31.7% loop [56] 36.6% [66] 5828(8.9%) 296(0.4%) expression-cost .../develop/src/programs.rkt:204:0 compile [77] 94.9% ----------------------------------------------------------------------------------- for-loop [54] 100.0% [67] 5342(8.1%) 0(0.0%) set-precompute! ...lop/src/core/simplify.rkt:117:0 for-loop [78] 100.0% ----------------------------------------------------------------------------------- eval-prog [55] 100.0% [68] 2866(4.4%) 0(0.0%) temp68_2 (unknown source) compile16 [79] 100.0% ----------------------------------------------------------------------------------- for-loop [45] 21.5% argmin [58] 23.1% loop [56] 55.4% [69] 2774(4.2%) 950(1.4%) for-loop .../herbie/develop/src/programs.rkt:205:2 table-ref [164] 65.8% ----------------------------------------------------------------------------------- errors [57] 100.0% [70] 2516(3.8%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:230:2 ??? [82] 100.0% ----------------------------------------------------------------------------------- for-loop [15] 47.3% for-loop [59] 52.7% [71] 1224(1.9%) 0(0.0%) matcher ...rbie/develop/src/core/matcher.rkt:118:2 ??? [6] 52.7% rewriter [49] 47.3% ----------------------------------------------------------------------------------- for-loop [60] 100.0% [72] 602(0.9%) 602(0.9%) for-loop ...e/develop/src/core/simplify.rkt:157:23 ----------------------------------------------------------------------------------- for-loop [59] 100.0% [73] 594(0.9%) 0(0.0%) for-loop ...rbie/develop/src/core/matcher.rkt:99:8 fix-up-variables [80] 100.0% ----------------------------------------------------------------------------------- eval-prog [55] 100.0% [74] 328(0.5%) 0(0.0%) eval-one-top12 (unknown source) for-loop [154] 100.0% ----------------------------------------------------------------------------------- eval-prog [55] 100.0% [75] 300(0.5%) 0(0.0%) eval (unknown source) datum->syntax6 [81] 100.0% ----------------------------------------------------------------------------------- loop [65] 100.0% [76] 10718(16.3%) 0(0.0%) apply-match .../develop/src/core/simplify.rkt:65:0 for-loop [84] 61.2% match-e [83] 32.4% set [157] 3.4% custom-set-intersect [86] 3.0% ----------------------------------------------------------------------------------- expression-cost [66] 100.0% [77] 5532(8.4%) 298(0.5%) compile ...s/herbie/develop/src/programs.rkt:181:0 hash-ref! [189] 94.6% ----------------------------------------------------------------------------------- set-precompute! [67] 100.0% [78] 5342(8.1%) 326(0.5%) for-loop ...ie/develop/src/core/simplify.rkt:119:2 merge-egraph-nodes! [92] 52.3% ??? [82] 35.9% setfindf [87] 5.6% ----------------------------------------------------------------------------------- temp68_2 [68] 100.0% [79] 2866(4.4%) 0(0.0%) compile16 (unknown source) temp74_0 [85] 100.0% ----------------------------------------------------------------------------------- for-loop [73] 100.0% [80] 594(0.9%) 0(0.0%) fix-up-variables ...lop/src/core/matcher.rkt:111:2 pattern-match [88] 50.5% for-loop [89] 49.5% ----------------------------------------------------------------------------------- eval [75] 100.0% [81] 300(0.5%) 0(0.0%) datum->syntax6 (unknown source) loop [163] 100.0% ----------------------------------------------------------------------------------- for-loop [78] 1.0% for-loop [70] 1.3% run [11] 48.9% [82] 65794(100.0%) 308(0.5%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 48.9% run-improve40 [2] 36.1% prepare-points-intervals [90] 10.2% get-final-combination [94] 1.4% ??? [184] 1.3% eval-const-expr [46] 0.8% oracle-error [96] 0.5% errors [57] 0.5% eval-errors [99] 0.2% ----------------------------------------------------------------------------------- apply-match [76] 12.3% for-loop [104] 35.1% for-loop [64] 52.6% [83] 14484(22.0%) 1586(2.4%) match-e ...herbie/develop/src/core/ematch.rkt:39:0 for-loop [91] 82.7% variable? [5] 3.3% ??? [32] 2.3% make-sequence [100] 2.1% ----------------------------------------------------------------------------------- apply-match [76] 100.0% [84] 6558(10.0%) 0(0.0%) for-loop ...bie/develop/src/core/simplify.rkt:78:2 merge-egraph-nodes! [92] 76.1% dedup-children! [124] 14.7% mk-enode! [129] 4.7% substitute-e [102] 4.5% ----------------------------------------------------------------------------------- compile16 [79] 100.0% [85] 2866(4.4%) 0(0.0%) temp74_0 (unknown source) expand-single [93] 65.4% compile-top9 [95] 34.6% ----------------------------------------------------------------------------------- apply-match [76] 100.0% [86] 326(0.5%) 0(0.0%) custom-set-intersect ...rivate/set-types.rkt:195:0 for-loop [98] 100.0% ----------------------------------------------------------------------------------- for-loop [78] 100.0% [87] 300(0.5%) 0(0.0%) setfindf ...es/herbie/develop/src/common.rkt:139:0 for-loop [101] 100.0% ----------------------------------------------------------------------------------- fix-up-variables [80] 100.0% [88] 300(0.5%) 0(0.0%) pattern-match ...develop/src/core/matcher.rkt:30:0 for-loop [97] 100.0% ----------------------------------------------------------------------------------- fix-up-variables [80] 100.0% [89] 294(0.4%) 0(0.0%) for-loop ...rbie/develop/src/core/matcher.rkt:42:9 for-loop [97] 100.0% ----------------------------------------------------------------------------------- ??? [82] 100.0% [90] 13400(20.4%) 0(0.0%) prepare-points-intervals ...p/src/points.rkt:133:0 loop [103] 100.0% ----------------------------------------------------------------------------------- match-e [83] 100.0% [91] 12894(19.6%) 4698(7.1%) for-loop ...rbie/develop/src/core/ematch.rkt:52:11 for-loop [104] 51.2% loop [122] 7.7% foldl [107] 6.1% foldr [112] 4.7% loop [143] 2.4% curry* [118] 2.4% ----------------------------------------------------------------------------------- for-loop [108] 5.4% merge-egraph-nodes! [92] 13.8% for-loop [78] 26.1% for-loop [84] 54.7% [92] 7786(11.8%) 0(0.0%) merge-egraph-nodes! ...p/src/core/egraph.rkt:145:0 update-leader! [105] 41.4% loop! [139] 20.5% merge-egraph-nodes! [92] 13.8% enode-merge! [111] 11.7% for-loop [108] 8.8% dedup-children! [124] 3.8% ----------------------------------------------------------------------------------- temp74_0 [85] 100.0% [93] 1874(2.8%) 0(0.0%) expand-single (unknown source) expand-capturing-lifts [106] 100.0% ----------------------------------------------------------------------------------- ??? [82] 100.0% [94] 1828(2.8%) 0(0.0%) get-final-combination ...op/src/mainloop.rkt:357:0 infer-splitpoints [109] 82.1% ??? [115] 17.9% ----------------------------------------------------------------------------------- temp74_0 [85] 100.0% [95] 992(1.5%) 0(0.0%) compile-top9 (unknown source) compile-forms31 [110] 100.0% ----------------------------------------------------------------------------------- ??? [82] 100.0% [96] 696(1.1%) 0(0.0%) oracle-error ...erbie/develop/src/points.rkt:212:0 for-loop [113] 100.0% ----------------------------------------------------------------------------------- for-loop [89] 49.5% pattern-match [88] 50.5% [97] 594(0.9%) 0(0.0%) for-loop ...rbie/develop/src/core/matcher.rkt:27:9 core651 [114] 100.0% ----------------------------------------------------------------------------------- custom-set-intersect [86] 100.0% [98] 326(0.5%) 0(0.0%) for-loop ...cts/racket/private/set-types.rkt:207:3 for-loop [116] 100.0% ----------------------------------------------------------------------------------- ??? [82] 100.0% [99] 310(0.5%) 0(0.0%) eval-errors ...herbie/develop/src/points.rkt:203:0 for-loop [117] 100.0% ----------------------------------------------------------------------------------- match-e [83] 100.0% [100] 302(0.5%) 302(0.5%) make-sequence ...ects/racket/private/for.rkt:528:2 ----------------------------------------------------------------------------------- setfindf [87] 100.0% [101] 300(0.5%) 300(0.5%) for-loop ...es/herbie/develop/src/common.rkt:140:2 ----------------------------------------------------------------------------------- for-loop [84] 100.0% [102] 296(0.4%) 0(0.0%) substitute-e ...e/develop/src/core/ematch.rkt:64:0 for-loop [119] 100.0% ----------------------------------------------------------------------------------- prepare-points-intervals [90] 100.0% [103] 13400(20.4%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:145:4 loop [120] 84.3% ??? [123] 15.7% ----------------------------------------------------------------------------------- for-loop [91] 100.0% [104] 9734(14.8%) 902(1.4%) for-loop ...rbie/develop/src/core/ematch.rkt:58:37 match-e [83] 93.8% ----------------------------------------------------------------------------------- for-loop [53] 34.3% merge-egraph-nodes! [92] 65.7% [105] 6164(9.4%) 0(0.0%) update-leader! ...evelop/src/core/egraph.rkt:213:0 for-loop [121] 94.6% for-loop [133] 5.4% ----------------------------------------------------------------------------------- loop [163] 25.9% expand-single [93] 74.1% [106] 2528(3.8%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [125] 74.1% loop [163] 13.1% expand-id-application-form17 [128] 12.7% ----------------------------------------------------------------------------------- for-loop [18] 20.9% for-loop [91] 79.1% [107] 1596(2.4%) 302(0.5%) foldl ....0/collects/racket/private/list.rkt:229:4 merge2 [127] 60.2% ??? [132] 20.9% ----------------------------------------------------------------------------------- merge-egraph-nodes! [92] 100.0% [108] 1520(2.3%) 0(0.0%) for-loop ...rbie/develop/src/core/egraph.rkt:199:4 merge-egraph-nodes! [92] 68.8% dedup-children! [124] 31.2% ----------------------------------------------------------------------------------- get-final-combination [94] 100.0% [109] 1500(2.3%) 0(0.0%) infer-splitpoints ...lop/src/core/regimes.rkt:34:0 for-loop [126] 100.0% ----------------------------------------------------------------------------------- compile-top9 [95] 100.0% [110] 992(1.5%) 302(0.5%) compile-forms31 (unknown source) for-loop [154] 69.6% ----------------------------------------------------------------------------------- merge-egraph-nodes! [92] 100.0% [111] 908(1.4%) 0(0.0%) enode-merge! ...e/develop/src/core/enode.rkt:128:0 custom-set-intersect! [131] 64.8% adopt-enode! [134] 35.2% ----------------------------------------------------------------------------------- for-loop [91] 100.0% [112] 902(1.4%) 302(0.5%) foldr ....0/collects/racket/private/list.rkt:242:4 cp-2 [130] 66.5% ----------------------------------------------------------------------------------- oracle-error [96] 100.0% [113] 696(1.1%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:213:2 map [144] 51.7% loop [122] 48.3% ----------------------------------------------------------------------------------- for-loop [97] 100.0% [114] 594(0.9%) 0(0.0%) core651 ...acket/contract/private/arr-i.rkt:918:19 un-dep/maybe-chaperone [136] 50.5% ??? [137] 49.5% ----------------------------------------------------------------------------------- get-final-combination [94] 100.0% [115] 328(0.5%) 0(0.0%) ??? ...s/herbie/develop/src/core/simplify.rkt:22:0 ??? [31] 100.0% ----------------------------------------------------------------------------------- for-loop [98] 100.0% [116] 326(0.5%) 326(0.5%) for-loop ...cts/racket/private/set-types.rkt:201:4 ----------------------------------------------------------------------------------- eval-errors [99] 100.0% [117] 310(0.5%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:205:2 ??? [184] 100.0% ----------------------------------------------------------------------------------- for-loop [91] 100.0% [118] 306(0.5%) 0(0.0%) curry* ...et-7.0/collects/racket/function.rkt:44:2 procedure-arity [135] 100.0% ----------------------------------------------------------------------------------- substitute-e [102] 100.0% [119] 296(0.4%) 0(0.0%) for-loop ...rbie/develop/src/core/ematch.rkt:73:24 mk-enode! [129] 100.0% ----------------------------------------------------------------------------------- loop [103] 100.0% [120] 11292(17.2%) 610(0.9%) loop ...htlies/herbie/develop/src/points.rkt:104:2 ??? [184] 88.7% ??? [186] 5.9% ----------------------------------------------------------------------------------- update-leader! [105] 100.0% [121] 5834(8.9%) 296(0.4%) for-loop ...rbie/develop/src/core/egraph.rkt:218:6 for-loop [138] 51.4% hash-update! [153] 43.5% ----------------------------------------------------------------------------------- loop! [139] 1.6% ??? [199] 13.1% parse-loop80 [40] 14.4% for-loop [113] 14.7% for-loop [91] 17.6% loop [122] 38.5% [122] 2288(3.5%) 988(1.5%) loop ...-7.0/collects/racket/private/map.rkt:40:19 loop [122] 38.5% ??? [186] 14.7% map [144] 14.4% loop! [139] 1.6% loop [143] 1.5% ----------------------------------------------------------------------------------- loop [103] 100.0% [123] 2108(3.2%) 0(0.0%) ??? ...ghtlies/herbie/develop/src/points.rkt:129:2 ??? [186] 85.7% compose [149] 14.3% ----------------------------------------------------------------------------------- merge-egraph-nodes! [92] 15.6% for-loop [108] 33.1% for-loop [84] 51.3% [124] 1884(2.9%) 0(0.0%) dedup-children! ...evelop/src/core/enode.rkt:199:0 loop [141] 82.8% loop [147] 17.2% ----------------------------------------------------------------------------------- expand-capturing-lifts [106] 100.0% [125] 1874(2.8%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [140] 100.0% ----------------------------------------------------------------------------------- infer-splitpoints [109] 100.0% [126] 1500(2.3%) 0(0.0%) for-loop ...rbie/develop/src/core/regimes.rkt:46:6 option-on-expr [142] 100.0% ----------------------------------------------------------------------------------- foldl [107] 100.0% [127] 960(1.5%) 960(1.5%) merge2 .../herbie/develop/src/core/ematch.rkt:24:0 ----------------------------------------------------------------------------------- loop [163] 48.2% expand-capturing-lifts [106] 51.8% [128] 622(0.9%) 0(0.0%) expand-id-application-form17 (unknown source) binding-lookup50 [148] 51.8% syntax-e/no-taint [145] 48.2% ----------------------------------------------------------------------------------- for-loop [119] 49.2% for-loop [84] 50.8% [129] 602(0.9%) 306(0.5%) mk-enode! ...rbie/develop/src/core/egraph.rkt:99:0 new-enode [151] 49.2% ----------------------------------------------------------------------------------- foldr [112] 100.0% [130] 600(0.9%) 0(0.0%) cp-2 .../racket-7.0/collects/racket/list.rkt:826:2 for-loop [146] 100.0% ----------------------------------------------------------------------------------- enode-merge! [111] 100.0% [131] 588(0.9%) 588(0.9%) custom-set-intersect! ...ivate/set-types.rkt:269:0 ----------------------------------------------------------------------------------- foldl [107] 100.0% [132] 334(0.5%) 334(0.5%) ??? ...es/herbie/develop/src/core/matcher.rkt:26:7 ----------------------------------------------------------------------------------- update-leader! [105] 100.0% [133] 330(0.5%) 330(0.5%) for-loop ...rbie/develop/src/core/egraph.rkt:228:6 ----------------------------------------------------------------------------------- enode-merge! [111] 100.0% [134] 320(0.5%) 0(0.0%) adopt-enode! ...e/develop/src/core/enode.rkt:104:0 custom-set-union [155] 100.0% ----------------------------------------------------------------------------------- curry* [118] 100.0% [135] 306(0.5%) 306(0.5%) procedure-arity ...ket/private/norm-arity.rkt:7:27 ----------------------------------------------------------------------------------- core651 [114] 100.0% [136] 300(0.5%) 0(0.0%) un-dep/maybe-chaperone ...private/arr-i.rkt:1097:2 ??? [150] 100.0% ----------------------------------------------------------------------------------- core651 [114] 100.0% [137] 294(0.4%) 0(0.0%) ??? ...s/racket/contract/private/arr-i.rkt:1249:27 build-unary-very-simple--> [152] 100.0% ----------------------------------------------------------------------------------- for-loop [121] 100.0% [138] 3000(4.6%) 0(0.0%) for-loop ...rbie/develop/src/core/egraph.rkt:219:8 hash-update! [153] 100.0% ----------------------------------------------------------------------------------- loop [122] 8.7% merge-egraph-nodes! [92] 91.3% [139] 1910(2.9%) 624(0.9%) loop! ...s/herbie/develop/src/core/enode.rkt:191:2 custom-set-union [155] 41.0% set [157] 17.6% loop [122] 8.7% ----------------------------------------------------------------------------------- lambda-clause-expander [125] 25.5% for-loop [154] 74.5% [140] 1874(2.8%) 0(0.0%) finish-bodys (unknown source) for-loop [154] 100.0% ----------------------------------------------------------------------------------- dedup-children! [124] 16.3% loop [141] 83.7% [141] 1560(2.4%) 0(0.0%) loop ...racket-7.0/collects/racket/list.rkt:417:34 loop [141] 83.7% loop [163] 16.3% ----------------------------------------------------------------------------------- for-loop [126] 100.0% [142] 1500(2.3%) 0(0.0%) option-on-expr ...velop/src/core/regimes.rkt:150:0 err-lsts->split-indices [156] 80.0% sort-context-on-expr [160] 20.0% ----------------------------------------------------------------------------------- loop [122] 32.4% for-loop [91] 67.6% [143] 926(1.4%) 926(1.4%) loop ...cket-7.0/collects/racket/function.rkt:53:6 ----------------------------------------------------------------------------------- loop [122] 47.8% for-loop [113] 52.2% [144] 690(1.0%) 0(0.0%) map ...t-7.0/collects/racket/private/map.rkt:35:13 ??? [158] 52.2% ??? [186] 47.8% ----------------------------------------------------------------------------------- expand-id-application-form17 [128] 47.2% syntax-e [8] 52.8% [145] 636(1.0%) 0(0.0%) syntax-e/no-taint (unknown source) loop [163] 100.0% ----------------------------------------------------------------------------------- cp-2 [130] 100.0% [146] 600(0.9%) 600(0.9%) for-loop ...ket-7.0/collects/racket/list.rkt:827:4 ----------------------------------------------------------------------------------- loop [147] 50.0% dedup-children! [124] 50.0% [147] 324(0.5%) 324(0.5%) loop ...racket-7.0/collects/racket/list.rkt:434:17 loop [147] 50.0% ----------------------------------------------------------------------------------- expand-id-application-form17 [128] 100.0% [148] 322(0.5%) 322(0.5%) binding-lookup50 (unknown source) ----------------------------------------------------------------------------------- ??? [123] 100.0% [149] 302(0.5%) 302(0.5%) compose ...collects/racket/private/list.rkt:385:12 ----------------------------------------------------------------------------------- un-dep/maybe-chaperone [136] 100.0% [150] 300(0.5%) 0(0.0%) ??? ...llects/racket/contract/private/orc.rkt:88:2 ??? [159] 100.0% ----------------------------------------------------------------------------------- mk-enode! [129] 100.0% [151] 296(0.4%) 0(0.0%) new-enode ...erbie/develop/src/core/enode.rkt:96:0 type-of-enode-expr [161] 100.0% ----------------------------------------------------------------------------------- ??? [137] 100.0% [152] 294(0.4%) 294(0.4%) build-unary-very-simple--> ...val-first.rkt:1014:0 ----------------------------------------------------------------------------------- for-loop [121] 45.8% for-loop [138] 54.2% [153] 5538(8.4%) 310(0.5%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [162] 94.4% ----------------------------------------------------------------------------------- fallback-loop [22] 0.8% for-loop [154] 5.2% eval-one-top12 [74] 11.3% compile-forms31 [110] 23.9% finish-bodys [140] 58.9% [154] 2892(4.4%) 1586(2.4%) for-loop (unknown source) finish-bodys [140] 43.2% module-uses-extract-extra-inspectorsss [167] 12.4% for-loop [154] 5.2% loop [163] 1.6% expand-implicit [10] 1.2% syntax-e [8] 1.2% ----------------------------------------------------------------------------------- adopt-enode! [134] 25.2% loop! [139] 74.8% [155] 1270(1.9%) 638(1.0%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [166] 49.8% ----------------------------------------------------------------------------------- option-on-expr [142] 100.0% [156] 1200(1.8%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:281:0 loop [165] 100.0% ----------------------------------------------------------------------------------- loop! [139] 48.3% apply-match [76] 51.7% [157] 696(1.1%) 336(0.5%) set ...collects/racket/private/set-types.rkt:981:0 for-loop [168] 51.7% ----------------------------------------------------------------------------------- map [144] 100.0% [158] 360(0.5%) 0(0.0%) ??? ...htlies/herbie/develop/src/points.rkt:214:26 ??? [184] 100.0% ----------------------------------------------------------------------------------- ??? [150] 100.0% [159] 300(0.5%) 0(0.0%) ??? ...ntract/private/arrow-higher-order.rkt:554:2 get-blame-party-info [169] 100.0% ----------------------------------------------------------------------------------- option-on-expr [142] 100.0% [160] 300(0.5%) 0(0.0%) sort-context-on-expr ...src/core/regimes.rkt:145:0 ??? [170] 100.0% ----------------------------------------------------------------------------------- new-enode [151] 100.0% [161] 296(0.4%) 0(0.0%) type-of-enode-expr ...elop/src/core/enode.rkt:69:0 table-ref [164] 100.0% ----------------------------------------------------------------------------------- hash-update! [153] 100.0% [162] 5228(7.9%) 0(0.0%) ??? ...s/herbie/develop/src/core/egraph.rkt:221:24 for-loop [171] 100.0% ----------------------------------------------------------------------------------- datum->syntax6 [81] 1.1% expand-capturing-lifts [106] 4.8% loop [163] 7.6% for-loop [154] 13.1% syntax-e/no-taint [145] 14.1% eval-prog [55] 14.1% loop [141] 45.2% [163] 3454(5.2%) 2192(3.3%) loop (unknown source) expand-capturing-lifts [106] 14.1% gf [173] 14.1% expand-identifier [175] 8.8% loop [163] 7.6% expand-id-application-form17 [128] 4.3% ----------------------------------------------------------------------------------- type-of-enode-expr [161] 14.0% for-loop [69] 86.0% [164] 2120(3.2%) 1822(2.8%) table-ref ...es/herbie/develop/src/common.rkt:42:0 for-loop [178] 14.1% ----------------------------------------------------------------------------------- err-lsts->split-indices [156] 100.0% [165] 1200(1.8%) 0(0.0%) loop .../herbie/develop/src/core/regimes.rkt:332:4 for-loop [172] 100.0% ----------------------------------------------------------------------------------- custom-set-union [155] 100.0% [166] 632(1.0%) 0(0.0%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [174] 100.0% ----------------------------------------------------------------------------------- for-loop [154] 100.0% [167] 360(0.5%) 360(0.5%) module-uses-extract-extra-inspectorsss ... source) ----------------------------------------------------------------------------------- set [157] 100.0% [168] 360(0.5%) 360(0.5%) for-loop ...cts/racket/private/set-types.rkt:937:4 ----------------------------------------------------------------------------------- ??? [159] 100.0% [169] 300(0.5%) 0(0.0%) get-blame-party-info ...ate/arrow-common.rkt:136:0 show-blame-negative [176] 100.0% ----------------------------------------------------------------------------------- sort-context-on-expr [160] 100.0% [170] 300(0.5%) 0(0.0%) ??? ...-7.0/collects/racket/private/sort.rkt:369:3 generic-sort/key [177] 100.0% ----------------------------------------------------------------------------------- ??? [162] 100.0% [171] 5228(7.9%) 5228(7.9%) for-loop ...bie/develop/src/core/egraph.rkt:222:26 ----------------------------------------------------------------------------------- loop [165] 100.0% [172] 1200(1.8%) 300(0.5%) for-loop ...bie/develop/src/core/regimes.rkt:297:4 for-loop [179] 75.0% ----------------------------------------------------------------------------------- loop [163] 100.0% [173] 636(1.0%) 0(0.0%) gf (unknown source) propagation-apply [180] 52.8% propagation-apply-shifted [181] 47.2% ----------------------------------------------------------------------------------- for-loop [166] 100.0% [174] 632(1.0%) 632(1.0%) for-loop ...cts/racket/private/set-types.rkt:178:5 ----------------------------------------------------------------------------------- loop [163] 100.0% [175] 304(0.5%) 0(0.0%) expand-identifier (unknown source) resolve+shift28 [17] 100.0% ----------------------------------------------------------------------------------- get-blame-party-info [169] 100.0% [176] 300(0.5%) 300(0.5%) show-blame-negative ...act/private/blame.rkt:342:0 ----------------------------------------------------------------------------------- ??? [170] 100.0% [177] 300(0.5%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [182] 100.0% ----------------------------------------------------------------------------------- table-ref [164] 100.0% [178] 298(0.5%) 298(0.5%) for-loop ...ies/herbie/develop/src/common.rkt:44:4 ----------------------------------------------------------------------------------- for-loop [172] 100.0% [179] 900(1.4%) 900(1.4%) for-loop ...bie/develop/src/core/regimes.rkt:301:8 ----------------------------------------------------------------------------------- gf [173] 100.0% [180] 336(0.5%) 336(0.5%) propagation-apply (unknown source) ----------------------------------------------------------------------------------- gf [173] 100.0% [181] 300(0.5%) 300(0.5%) propagation-apply-shifted (unknown source) ----------------------------------------------------------------------------------- copying-mergesort [182] 50.0% generic-sort/key [177] 50.0% [182] 300(0.5%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 copying-mergesort [182] 50.0% loop [183] 50.0% ----------------------------------------------------------------------------------- copying-mergesort [182] 100.0% [183] 300(0.5%) 0(0.0%) loop ...7.0/collects/racket/private/sort.rkt:96:12 ??? [184] 100.0% ----------------------------------------------------------------------------------- loop [183] 2.2% for-loop [117] 2.3% ??? [158] 2.7% ??? [82] 18.6% loop [120] 74.2% [184] 13498(20.5%) 1016(1.5%) ??? ...tlies/herbie/develop/src/programs.rkt:146:2 ??? [185] 64.9% ??? [186] 27.6% ----------------------------------------------------------------------------------- ??? [184] 100.0% [185] 8754(13.3%) 0(0.0%) ??? ...t-7.0/collects/racket/private/kw.rkt:592:14 ??? [187] 81.4% ??? [188] 11.6% ??? [186] 7.0% ----------------------------------------------------------------------------------- map [144] 3.3% loop [122] 3.4% ??? [185] 6.1% loop [120] 6.7% loop [13] 7.4% location-do [191] 8.9% for-loop [47] 8.9% ??? [123] 18.0% ??? [184] 37.2% [186] 10014(15.2%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:357:33 ->flonum [190] 34.7% sample-multi-bounded [193] 18.0% mk-ival [195] 15.9% location-do [191] 8.9% approximate9 [3] 8.9% hash-ref! [189] 7.4% ival-mult [197] 6.1% ----------------------------------------------------------------------------------- ??? [185] 100.0% [187] 7122(10.8%) 1622(2.5%) ??? ...tract/private/arrow-higher-order.rkt:361:33 ival-div [192] 34.4% ival-exp [194] 24.3% ival-add [196] 14.3% ival-sub [198] 4.2% ----------------------------------------------------------------------------------- ??? [185] 100.0% [188] 1018(1.5%) 326(0.5%) ??? ...herbie/develop/src/syntax/syntax.rkt:317:17 ??? [202] 68.0% ----------------------------------------------------------------------------------- for-loop [19] 0.6% ??? [24] 0.6% for-loop [16] 2.6% ??? [204] 3.4% eval-prog [55] 3.7% localize-error [36] 4.1% ??? [201] 6.1% ??? [186] 6.1% for-loop [14] 6.5% ??? [199] 31.4% compile [77] 33.3% [189] 8094(12.3%) 5234(8.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [199] 35.1% ??? [4] 6.5% ??? [201] 6.1% simplify [34] 6.1% parse-loop80 [40] 4.1% ??? [204] 3.4% ??? [7] 3.2% ??? [9] 0.6% ----------------------------------------------------------------------------------- ??? [186] 100.0% [190] 3470(5.3%) 1828(2.8%) ->flonum ...s/herbie/develop/src/programs.rkt:38:0 ??? [202] 27.8% list-member? [206] 10.0% return/no-unsupplied [207] 9.5% ----------------------------------------------------------------------------------- location-do [191] 31.4% ??? [186] 68.6% [191] 2530(3.8%) 0(0.0%) location-do ...rbie/develop/src/programs.rkt:111:0 ??? [186] 68.6% location-do [191] 31.4% ----------------------------------------------------------------------------------- ??? [187] 100.0% [192] 2450(3.7%) 0(0.0%) ival-div ...rbie/develop/src/biginterval.rkt:150:0 bfdiv [200] 100.0% ----------------------------------------------------------------------------------- ??? [186] 100.0% [193] 1806(2.7%) 1806(2.7%) sample-multi-bounded ...evelop/src/points.rkt:16:0 ----------------------------------------------------------------------------------- ??? [187] 100.0% [194] 1732(2.6%) 1328(2.0%) ival-exp ...rbie/develop/src/biginterval.rkt:182:0 bfexp [205] 23.3% ----------------------------------------------------------------------------------- ??? [186] 100.0% [195] 1594(2.4%) 0(0.0%) mk-ival ...herbie/develop/src/biginterval.rkt:59:0 bf [203] 100.0% ----------------------------------------------------------------------------------- ??? [187] 100.0% [196] 1016(1.5%) 0(0.0%) ival-add ...erbie/develop/src/biginterval.rkt:96:0 bfdiv [200] 100.0% ----------------------------------------------------------------------------------- ??? [186] 100.0% [197] 614(0.9%) 314(0.5%) ival-mult ...bie/develop/src/biginterval.rkt:114:0 bfdiv [200] 48.9% ----------------------------------------------------------------------------------- ??? [187] 100.0% [198] 302(0.5%) 0(0.0%) ival-sub ...rbie/develop/src/biginterval.rkt:102:0 bfdiv [200] 100.0% ----------------------------------------------------------------------------------- hash-ref! [189] 100.0% [199] 4332(6.6%) 0(0.0%) ??? ...tlies/herbie/develop/src/programs.rkt:189:5 hash-ref! [189] 93.1% loop [122] 6.9% ----------------------------------------------------------------------------------- ival-mult [197] 7.4% ival-sub [198] 7.4% ival-add [196] 25.0% ival-div [192] 60.2% [200] 4068(6.2%) 0(0.0%) bfdiv ...-lib/math/private/bigfloat/mpfr.rkt:821:4 new-mpfr [208] 77.9% ??? [209] 22.1% ----------------------------------------------------------------------------------- hash-ref! [189] 100.0% [201] 2230(3.4%) 0(0.0%) ??? ...es/herbie/develop/src/core/taylor.rkt:45:15 hash-ref! [189] 100.0% ----------------------------------------------------------------------------------- ??? [188] 41.7% ->flonum [190] 58.3% [202] 1658(2.5%) 1658(2.5%) ??? ...s/racket/contract/private/arr-i.rkt:1252:29 ----------------------------------------------------------------------------------- mk-ival [195] 100.0% [203] 1594(2.4%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 new-mpfr [208] 100.0% ----------------------------------------------------------------------------------- hash-ref! [189] 100.0% [204] 1296(2.0%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:328:33 hash-ref! [189] 100.0% ----------------------------------------------------------------------------------- ival-exp [194] 100.0% [205] 404(0.6%) 0(0.0%) bfexp ...-lib/math/private/bigfloat/mpfr.rkt:618:4 new-mpfr [208] 100.0% ----------------------------------------------------------------------------------- ->flonum [190] 100.0% [206] 346(0.5%) 346(0.5%) list-member? ...llects/racket/private/set.rkt:24:0 ----------------------------------------------------------------------------------- ->flonum [190] 100.0% [207] 330(0.5%) 330(0.5%) return/no-unsupplied ...ct/private/arr-i.rkt:534:0 ----------------------------------------------------------------------------------- bfexp [205] 7.8% bf [203] 30.9% bfdiv [200] 61.3% [208] 5166(7.9%) 5166(7.9%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 ----------------------------------------------------------------------------------- bfdiv [200] 100.0% [209] 900(1.4%) 900(1.4%) ??? /opt/racket-7.0/collects/ffi/unsafe.rkt:898:4 -----------------------------------------------------------------------------------