Profiling results ----------------- Total cpu time observed: 400008ms (out of 402700ms) Number of samples taken: 1179 (once every 339ms) (Hiding functions with self<1.0% and local<2.0%: 16 of 208 hidden) ========================================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ========================================================================================== ??? [41] 100.0% [1] 355570(88.9%) 0(0.0%) profile-thunk16 ...t/pkgs/profile-lib/main.rkt:9:0 run [10] 100.0% ------------------------------------------------------------------------------------------ ??? [41] 100.0% [2] 128440(32.1%) 0(0.0%) run-improve48 ...-operators/src/mainloop.rkt:256:0 for-loop [11] 96.2% setup-prog!41 [14] 2.7% ------------------------------------------------------------------------------------------ override-at-pnts [178] 1.6% composed [80] 3.8% best-and-tied-at-points [174] 19.6% loop [141] 75.0% [3] 106922(26.7%) 310(0.1%) errors ...arametric-operators/src/points.rkt:271:0 for-loop [12] 83.6% eval-prog [93] 15.8% ------------------------------------------------------------------------------------------ ??? [50] 100.0% [4] 22736(5.7%) 0(0.0%) loop ...tric-operators/src/core/simplify.rkt:228:2 pass [13] 100.0% ------------------------------------------------------------------------------------------ generic-sort/key [103] 2.1% copying-mergesort [113] 97.9% [5] 16294(4.1%) 310(0.1%) jloop ...t/collects/racket/private/sort.rkt:121:23 ??? [19] 93.8% ??? [47] 2.2% errors-score [18] 2.1% ------------------------------------------------------------------------------------------ hash-ref! [106] 100.0% [6] 1310(0.3%) 0(0.0%) simplify ...ric-operators/src/core/reduce.rkt:16:0 parse-loop12 [120] 51.0% f6 [49] 49.0% ------------------------------------------------------------------------------------------ ??? [47] 100.0% [7] 1310(0.3%) 0(0.0%) approximate9 ...operators/src/core/taylor.rkt:12:0 loop [15] 100.0% ------------------------------------------------------------------------------------------ hash-ref! [106] 100.0% [8] 1002(0.3%) 0(0.0%) ??? ...metric-operators/src/core/taylor.rkt:285:26 for-loop [16] 100.0% ------------------------------------------------------------------------------------------ hash-ref! [106] 100.0% [9] 670(0.2%) 0(0.0%) ??? ...metric-operators/src/core/taylor.rkt:295:23 for-loop [17] 100.0% ------------------------------------------------------------------------------------------ profile-thunk16 [1] 100.0% [10] 355570(88.9%) 0(0.0%) run ...share/racket/pkgs/profile-lib/main.rkt:39:2 ??? [41] 100.0% ------------------------------------------------------------------------------------------ run-improve48 [2] 100.0% [11] 123542(30.9%) 0(0.0%) for-loop ...etric-operators/src/mainloop.rkt:271:8 run-iter! [20] 100.0% ------------------------------------------------------------------------------------------ errors [3] 100.0% [12] 89368(22.3%) 3532(0.9%) for-loop ...ametric-operators/src/points.rkt:274:4 ??? [19] 93.0% ulp-difference [22] 2.3% ??? [47] 0.8% ------------------------------------------------------------------------------------------ loop [4] 100.0% [13] 22736(5.7%) 0(0.0%) pass ...tric-operators/src/core/simplify.rkt:218:2 for-loop [21] 100.0% ------------------------------------------------------------------------------------------ run-improve48 [2] 100.0% [14] 3532(0.9%) 0(0.0%) setup-prog!41 ...c-operators/src/mainloop.rkt:63:0 prepare-points [46] 100.0% ------------------------------------------------------------------------------------------ approximate9 [7] 100.0% [15] 1310(0.3%) 0(0.0%) loop ...ametric-operators/src/core/taylor.rkt:86:4 hash-ref! [106] 76.5% ??? [47] 23.5% ------------------------------------------------------------------------------------------ ??? [8] 100.0% [16] 1002(0.3%) 0(0.0%) for-loop ...c-operators/src/core/taylor.rkt:285:52 hash-ref! [106] 100.0% ------------------------------------------------------------------------------------------ ??? [9] 100.0% [17] 670(0.2%) 0(0.0%) for-loop ...c-operators/src/core/taylor.rkt:298:27 hash-ref! [106] 100.0% ------------------------------------------------------------------------------------------ jloop [5] 100.0% [18] 336(0.1%) 0(0.0%) errors-score ...ric-operators/src/points.rkt:281:0 loop [141] 100.0% ------------------------------------------------------------------------------------------ option-on-expr [58] 0.2% loop [60] 0.2% ??? [152] 4.7% jloop [5] 7.0% loop [125] 16.1% loop [141] 34.1% for-loop [12] 37.8% [19] 219600(54.9%) 1902(0.5%) ??? ...parametric-operators/src/programs.rkt:156:4 ??? [23] 88.1% ??? [47] 5.2% loop [141] 4.0% ??? [154] 1.6% ------------------------------------------------------------------------------------------ for-loop [11] 100.0% [20] 123542(30.9%) 0(0.0%) run-iter! ...tric-operators/src/mainloop.rkt:237:0 simplify! [24] 74.4% finalize-iter! [25] 19.1% choose-best-alt! [28] 2.5% localize-error [29] 2.4% gen-series! [30] 1.1% gen-rewrites! [31] 0.5% ------------------------------------------------------------------------------------------ pass [13] 100.0% [21] 22736(5.7%) 0(0.0%) for-loop ...operators/src/core/simplify.rkt:221:29 argmin [26] 64.1% loop [27] 33.0% for-loop [32] 2.9% ------------------------------------------------------------------------------------------ for-loop [12] 100.0% [22] 2044(0.5%) 688(0.2%) ulp-difference ...ric-operators/src/float.rkt:19:0 return/no-unsupplied [115] 34.3% ??? [77] 32.0% ------------------------------------------------------------------------------------------ ??? [19] 100.0% [23] 193464(48.4%) 79558(19.9%) ??? ...acket/collects/racket/private/kw.rkt:444:14 ??? [150] 27.9% ??? [34] 23.2% ??? [36] 4.7% bf* [37] 2.0% ??? [189] 0.8% ------------------------------------------------------------------------------------------ run-iter! [20] 100.0% [24] 91892(23.0%) 0(0.0%) simplify! ...tric-operators/src/mainloop.rkt:177:0 for-loop [33] 100.0% ------------------------------------------------------------------------------------------ run-iter! [20] 100.0% [25] 23646(5.9%) 0(0.0%) finalize-iter! ...operators/src/mainloop.rkt:191:0 ??? [142] 100.0% ------------------------------------------------------------------------------------------ for-loop [21] 100.0% [26] 14564(3.6%) 0(0.0%) argmin ...re/racket/collects/racket/list.rkt:743:0 for-loop [35] 84.4% expression-cost [38] 15.6% ------------------------------------------------------------------------------------------ for-loop [21] 100.0% [27] 7510(1.9%) 0(0.0%) loop ...hare/racket/collects/racket/list.rkt:729:4 for-loop [35] 100.0% ------------------------------------------------------------------------------------------ run-iter! [20] 100.0% [28] 3050(0.8%) 0(0.0%) choose-best-alt! ...erators/src/mainloop.rkt:113:0 ??? [142] 100.0% ------------------------------------------------------------------------------------------ run-iter! [20] 100.0% [29] 2978(0.7%) 0(0.0%) localize-error ...ators/src/core/localize.rkt:47:0 hash-ref! [106] 88.7% ??? [90] 11.3% ------------------------------------------------------------------------------------------ run-iter! [20] 100.0% [30] 1310(0.3%) 0(0.0%) gen-series! ...ic-operators/src/mainloop.rkt:151:0 for-loop [39] 100.0% ------------------------------------------------------------------------------------------ run-iter! [20] 100.0% [31] 666(0.2%) 0(0.0%) gen-rewrites! ...-operators/src/mainloop.rkt:164:0 for-loop [40] 100.0% ------------------------------------------------------------------------------------------ for-loop [21] 100.0% [32] 662(0.2%) 662(0.2%) for-loop ...operators/src/core/simplify.rkt:208:13 ------------------------------------------------------------------------------------------ simplify! [24] 100.0% [33] 91892(23.0%) 0(0.0%) for-loop ...etric-operators/src/mainloop.rkt:181:6 ??? [41] 100.0% ------------------------------------------------------------------------------------------ ??? [23] 100.0% [34] 44964(11.2%) 26206(6.6%) ??? ...tric-operators/src/syntax/syntax.rkt:183:17 ??? [77] 23.0% return/no-unsupplied [115] 16.5% list-member? [122] 2.2% ------------------------------------------------------------------------------------------ loop [27] 37.9% argmin [26] 62.1% [35] 19804(5.0%) 310(0.1%) for-loop ...etric-operators/src/programs.rkt:210:2 ??? [50] 69.6% ...ators/src/common.rkt:48:2 [52] 27.1% ??? [54] 1.7% ------------------------------------------------------------------------------------------ ??? [23] 100.0% [36] 9038(2.3%) 9038(2.3%) ??? ...rivate/unconstrained-domain-arrow.rkt:40:13 ------------------------------------------------------------------------------------------ ??? [23] 100.0% [37] 3868(1.0%) 0(0.0%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [150] 100.0% ------------------------------------------------------------------------------------------ argmin [26] 100.0% [38] 2270(0.6%) 0(0.0%) expression-cost ...perators/src/programs.rkt:209:0 compile [42] 100.0% ------------------------------------------------------------------------------------------ gen-series! [30] 100.0% [39] 1310(0.3%) 0(0.0%) for-loop ...etric-operators/src/mainloop.rkt:157:7 taylor-alt [43] 100.0% ------------------------------------------------------------------------------------------ gen-rewrites! [31] 100.0% [40] 666(0.2%) 0(0.0%) for-loop ...tric-operators/src/mainloop.rkt:169:11 ??? [44] 100.0% ------------------------------------------------------------------------------------------ for-loop [33] 8.1% run [10] 43.0% [41] 377854(94.5%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 43.0% get-final-combination [45] 21.4% run-improve48 [2] 13.0% ??? [50] 12.6% prepare-points [46] 10.0% ------------------------------------------------------------------------------------------ expression-cost [38] 100.0% [42] 2270(0.6%) 0(0.0%) compile ...metric-operators/src/programs.rkt:186:0 hash-ref! [106] 100.0% ------------------------------------------------------------------------------------------ for-loop [39] 100.0% [43] 1310(0.3%) 0(0.0%) taylor-alt ...ric-operators/src/mainloop.rkt:136:0 ??? [47] 100.0% ------------------------------------------------------------------------------------------ for-loop [40] 100.0% [44] 666(0.2%) 0(0.0%) ??? ...rametric-operators/src/alternative.rkt:63:0 rewriter [48] 100.0% ------------------------------------------------------------------------------------------ ??? [41] 100.0% [45] 157066(39.3%) 0(0.0%) get-final-combination ...rs/src/mainloop.rkt:288:0 f6 [49] 100.0% ------------------------------------------------------------------------------------------ setup-prog!41 [14] 4.5% ??? [41] 95.5% [46] 78728(19.7%) 0(0.0%) prepare-points ...c-operators/src/points.rkt:214:0 loop [51] 36.2% loop [60] 34.4% make-exacts* [61] 28.6% for-loop [56] 0.8% ------------------------------------------------------------------------------------------ loop [15] 0.2% ??? [152] 0.8% jloop [5] 0.8% ??? [50] 1.0% taylor-alt [43] 1.0% for-loop [86] 1.5% loop [137] 1.5% map [65] 1.6% for-loop [12] 1.6% loop [125] 3.1% ??? [157] 6.7% loop [141] 15.9% ??? [19] 26.9% f6 [49] 34.1% [47] 42736(10.7%) 4666(1.2%) ??? ...tract/private/arrow-higher-order.rkt:342:33 ??? [50] 60.0% ??? [95] 11.7% best-alt [53] 9.1% ...ators/src/common.rkt:48:2 [52] 3.9% ??? [54] 2.4% approximate9 [7] 1.0% hash-ref! [106] 1.0% ------------------------------------------------------------------------------------------ matcher [68] 50.0% ??? [44] 50.0% [48] 666(0.2%) 332(0.1%) rewriter ...c-operators/src/core/matcher.rkt:130:2 for-loop [55] 50.0% *rules* [57] 25.1% ------------------------------------------------------------------------------------------ free-variables [109] 0.0% map [65] 0.1% simplify [6] 0.3% hash-ref! [106] 1.3% eval-prog [93] 1.4% f6 [49] 6.8% get-final-combination [45] 90.0% [49] 161694(40.4%) 360(0.1%) f6 ...et/collects/racket/match/compiler.rkt:507:40 loop [141] 85.5% f6 [49] 6.8% option-on-expr [58] 4.5% map [65] 1.6% ??? [47] 1.4% ------------------------------------------------------------------------------------------ for-loop [62] 3.0% for-loop [35] 3.4% ??? [47] 18.6% ??? [50] 36.2% ??? [41] 38.3% [50] 137022(34.3%) 13994(3.5%) ??? ...llects/racket/private/norm-define.rkt:53:83 ??? [50] 36.2% iterate-egraph!13 [59] 31.7% loop [4] 6.6% ??? [166] 5.5% ??? [77] 4.1% return/no-unsupplied [115] 3.2% for-loop [62] 3.0% loop [69] 0.5% *simplify-rules* [70] 0.5% ??? [186] 0.2% ??? [74] 0.2% list-member? [122] 0.2% ??? [47] 0.1% ------------------------------------------------------------------------------------------ prepare-points [46] 100.0% [51] 28494(7.1%) 0(0.0%) loop ...-parametric-operators/src/points.rkt:158:2 loop [60] 51.5% make-exacts* [61] 48.5% ------------------------------------------------------------------------------------------ ??? [47] 23.7% for-loop [35] 76.3% [52] 7044(1.8%) 1000(0.2%) ...ators/src/common.rkt:48:2 ...e/arr-i.rkt:906:19 ??? [63] 52.8% ??? [66] 28.4% coerce-contract [73] 4.6% ------------------------------------------------------------------------------------------ ??? [47] 100.0% [53] 4054(1.0%) 0(0.0%) best-alt ...etric-operators/src/mainloop.rkt:108:0 loop [64] 74.8% argmins [67] 25.2% ------------------------------------------------------------------------------------------ for-loop [35] 24.7% ??? [47] 75.3% [54] 1362(0.3%) 682(0.2%) ??? ...ts/racket/contract/private/arr-i.rkt:804:10 get/build-late-neg-projection [72] 26.4% ??? [181] 23.5% ------------------------------------------------------------------------------------------ rewriter [48] 100.0% [55] 666(0.2%) 0(0.0%) for-loop ...-operators/src/core/matcher.rkt:133:10 matcher [68] 100.0% ------------------------------------------------------------------------------------------ prepare-points [46] 100.0% [56] 644(0.2%) 0(0.0%) for-loop ...metric-operators/src/points.rkt:255:26 ??? [71] 100.0% ------------------------------------------------------------------------------------------ rewriter [48] 100.0% [57] 334(0.1%) 0(0.0%) *rules* ...ic-operators/src/syntax/rules.rkt:599:0 for-loop [87] 100.0% ------------------------------------------------------------------------------------------ f6 [49] 5.1% loop [141] 94.9% [58] 157066(39.3%) 686(0.2%) option-on-expr ...rators/src/core/regimes.rkt:83:0 loop [141] 57.1% sort-context-on-expr [76] 35.0% pick-errors [78] 3.3% err-lsts->split-indices [79] 2.7% sindices->spoints [82] 0.4% eval-prog [93] 0.4% ??? [19] 0.2% ??? [152] 0.2% ------------------------------------------------------------------------------------------ ??? [50] 100.0% [59] 86982(21.7%) 0(0.0%) iterate-egraph!13 ...s/src/core/simplify.rkt:105:0 one-iter [75] 99.2% map-enodes [83] 0.8% ------------------------------------------------------------------------------------------ loop [51] 35.1% prepare-points [46] 64.9% [60] 41790(10.4%) 0(0.0%) loop ...-parametric-operators/src/points.rkt:141:4 loop [141] 99.2% ??? [19] 0.8% ------------------------------------------------------------------------------------------ loop [51] 37.7% prepare-points [46] 61.3% [61] 36654(9.2%) 0(0.0%) make-exacts* ...ric-operators/src/points.rkt:138:0 loop [141] 87.2% eval-prog [93] 12.8% ------------------------------------------------------------------------------------------ ??? [50] 100.0% [62] 8208(2.1%) 0(0.0%) for-loop ...-operators/src/core/simplify.rkt:66:12 ??? [50] 100.0% ------------------------------------------------------------------------------------------ ...ators/src/common.rkt:48:2 [52] 100.0% [63] 3722(0.9%) 318(0.1%) ??? ...s/racket/contract/private/arr-i.rkt:1268:39 return/no-unsupplied [115] 56.6% assoc-ref [84] 17.5% ??? [77] 17.3% ------------------------------------------------------------------------------------------ best-alt [53] 100.0% [64] 3032(0.8%) 0(0.0%) loop ...-parametric-operators/src/common.rkt:154:2 composed [80] 100.0% ------------------------------------------------------------------------------------------ ??? [81] 9.1% loop [141] 11.9% f6 [49] 79.0% [65] 3024(0.8%) 0(0.0%) map ...acket/collects/racket/private/map.rkt:20:13 ??? [81] 43.8% loop [141] 19.9% f6 [49] 11.0% parse-loop12 [120] 10.3% ??? [47] 9.1% loop [137] 6.0% ------------------------------------------------------------------------------------------ ...ators/src/common.rkt:48:2 [52] 100.0% [66] 1998(0.5%) 0(0.0%) ??? ...ects/racket/contract/private/list.rkt:342:4 ??? [186] 100.0% ------------------------------------------------------------------------------------------ best-alt [53] 100.0% [67] 1022(0.3%) 0(0.0%) argmins ...rametric-operators/src/common.rkt:153:0 composed [80] 100.0% ------------------------------------------------------------------------------------------ matcher [68] 50.0% for-loop [55] 50.0% [68] 666(0.2%) 0(0.0%) matcher ...ic-operators/src/core/matcher.rkt:166:2 matcher [68] 50.0% rewriter [48] 50.0% ------------------------------------------------------------------------------------------ ??? [50] 100.0% [69] 644(0.2%) 0(0.0%) loop ...o-parametric-operators/src/points.rkt:66:6 random-exp [85] 100.0% ------------------------------------------------------------------------------------------ ??? [50] 100.0% [70] 644(0.2%) 346(0.1%) *simplify-rules* ...ors/src/syntax/rules.rkt:604:0 for-loop [87] 46.3% ------------------------------------------------------------------------------------------ for-loop [56] 100.0% [71] 644(0.2%) 0(0.0%) ??? ...o-parametric-operators/src/points.rkt:230:7 for-loop [86] 100.0% ------------------------------------------------------------------------------------------ unconstrained-domain->-projection [89] 50.0% ??? [54] 50.0% [72] 360(0.1%) 0(0.0%) get/build-late-neg-projection ...te/guts.rkt:691:0 unconstrained-domain->-projection [89] 50.0% ??? [88] 50.0% ------------------------------------------------------------------------------------------ ...ators/src/common.rkt:48:2 [52] 100.0% [73] 324(0.1%) 324(0.1%) coerce-contract ...contract/private/guts.rkt:257:0 ------------------------------------------------------------------------------------------ ??? [50] 100.0% [74] 300(0.1%) 0(0.0%) ??? ...-racket/utils/simple-result-arrow.rkt:60:15 ??? [176] 100.0% ------------------------------------------------------------------------------------------ iterate-egraph!13 [59] 100.0% [75] 86288(21.6%) 2842(0.7%) one-iter ...-operators/src/core/simplify.rkt:116:0 for-loop [91] 60.6% for-loop [92] 35.4% ------------------------------------------------------------------------------------------ option-on-expr [58] 100.0% [76] 54946(13.7%) 0(0.0%) sort-context-on-expr ...ators/src/points.rkt:115:0 ??? [90] 96.9% eval-prog [93] 3.1% ------------------------------------------------------------------------------------------ ??? [63] 3.6% ulp-difference [22] 3.7% ??? [50] 34.3% ??? [34] 58.4% [77] 17708(4.4%) 5008(1.3%) ??? ...racket/collects/racket/private/kw.rkt:761:9 ??? [94] 58.8% ??? [95] 12.9% ------------------------------------------------------------------------------------------ option-on-expr [58] 100.0% [78] 5248(1.3%) 0(0.0%) pick-errors ...perators/src/core/regimes.rkt:201:0 for-loop [96] 100.0% ------------------------------------------------------------------------------------------ option-on-expr [58] 100.0% [79] 4202(1.1%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:239:0 add-splitpoint [97] 92.1% for-loop [101] 7.9% ------------------------------------------------------------------------------------------ argmins [67] 25.2% loop [64] 74.8% [80] 4054(1.0%) 0(0.0%) composed ...ollects/racket/private/list.rkt:321:16 errors [3] 100.0% ------------------------------------------------------------------------------------------ map [65] 16.2% loop [141] 83.8% [81] 2342(0.6%) 0(0.0%) ??? ...ket/collects/racket/private/list.rkt:323:18 hash-ref! [106] 96.4% map [65] 3.6% ------------------------------------------------------------------------------------------ option-on-expr [58] 100.0% [82] 706(0.2%) 0(0.0%) sindices->spoints ...rs/src/core/regimes.rkt:136:0 for-loop [100] 51.0% eval-prog [93] 49.0% ------------------------------------------------------------------------------------------ iterate-egraph!13 [59] 100.0% [83] 694(0.2%) 0(0.0%) map-enodes ...-operators/src/core/egraph.rkt:140:0 loop [141] 51.9% for-loop [161] 48.1% ------------------------------------------------------------------------------------------ ??? [63] 100.0% [84] 652(0.2%) 652(0.2%) assoc-ref ...collects/racket/private/dict.rkt:56:0 ------------------------------------------------------------------------------------------ loop [69] 100.0% [85] 644(0.2%) 644(0.2%) random-exp ...etric-operators/src/common.rkt:254:0 ------------------------------------------------------------------------------------------ ??? [71] 100.0% [86] 644(0.2%) 0(0.0%) for-loop ...ametric-operators/src/points.rkt:231:9 ??? [47] 100.0% ------------------------------------------------------------------------------------------ *simplify-rules* [70] 47.2% *rules* [57] 52.8% [87] 632(0.2%) 0(0.0%) for-loop ...ametric-operators/src/common.rkt:100:9 ormap [98] 100.0% ------------------------------------------------------------------------------------------ get/build-late-neg-projection [72] 100.0% [88] 360(0.1%) 0(0.0%) ??? ...cts/racket/contract/private/prop.rkt:314:12 build-compound-type-name [99] 100.0% ------------------------------------------------------------------------------------------ get/build-late-neg-projection [72] 100.0% [89] 360(0.1%) 0(0.0%) unconstrained-domain->-projection ...rrow.rkt:60:0 get/build-late-neg-projection [72] 100.0% ------------------------------------------------------------------------------------------ localize-error [29] 0.6% sort-context-on-expr [76] 99.4% [90] 53600(13.4%) 0(0.0%) ??? ...cket/collects/racket/private/sort.rkt:403:3 generic-sort/key [103] 87.0% loop [125] 13.0% ------------------------------------------------------------------------------------------ for-loop [91] 49.7% one-iter [75] 50.3% [91] 52254(13.1%) 14272(3.6%) for-loop ...operators/src/core/simplify.rkt:126:12 for-loop [91] 49.7% match-e [104] 36.1% ??? [145] 0.3% ------------------------------------------------------------------------------------------ one-iter [75] 100.0% [92] 30524(7.6%) 0(0.0%) for-loop ...-operators/src/core/simplify.rkt:164:2 for-loop [105] 84.0% match-e [104] 16.0% ------------------------------------------------------------------------------------------ sindices->spoints [82] 1.4% option-on-expr [58] 2.8% sort-context-on-expr [76] 6.9% make-exacts* [61] 19.2% errors [3] 69.6% [93] 24298(6.1%) 3626(0.9%) eval-prog ...tric-operators/src/programs.rkt:150:0 f6 [49] 60.6% hash-ref! [106] 21.8% ??? [112] 1.3% ------------------------------------------------------------------------------------------ ??? [77] 100.0% [94] 10408(2.6%) 10050(2.5%) ??? ...s/racket/contract/private/arr-i.rkt:1233:27 ??? [110] 3.4% ------------------------------------------------------------------------------------------ ??? [77] 31.5% ??? [47] 68.5% [95] 7286(1.8%) 1980(0.5%) ??? ...ects/racket/contract/private/guts.rkt:644:8 ??? [142] 68.5% dict? [111] 4.3% ------------------------------------------------------------------------------------------ pick-errors [78] 100.0% [96] 5248(1.3%) 0(0.0%) for-loop ...c-operators/src/core/regimes.rkt:203:2 ??? [152] 100.0% ------------------------------------------------------------------------------------------ err-lsts->split-indices [79] 100.0% [97] 3868(1.0%) 0(0.0%) add-splitpoint ...ators/src/core/regimes.rkt:253:2 for-loop [107] 100.0% ------------------------------------------------------------------------------------------ for-loop [87] 100.0% [98] 632(0.2%) 0(0.0%) ormap ...et/collects/racket/private/map.rkt:105:13 flag-set? [108] 100.0% ------------------------------------------------------------------------------------------ ??? [88] 100.0% [99] 360(0.1%) 360(0.1%) build-compound-type-name ...private/guts.rkt:448:0 ------------------------------------------------------------------------------------------ sindices->spoints [82] 100.0% [100] 360(0.1%) 0(0.0%) for-loop ...c-operators/src/core/regimes.rkt:137:2 free-variables [109] 100.0% ------------------------------------------------------------------------------------------ err-lsts->split-indices [79] 100.0% [101] 334(0.1%) 334(0.1%) for-loop ...c-operators/src/core/regimes.rkt:279:4 ------------------------------------------------------------------------------------------ loop [102] 98.2% [102] 292(0.1%) 292(0.1%) loop ...etric-operators/src/core/regimes.rkt:176:2 loop [102] 98.2% ------------------------------------------------------------------------------------------ ??? [90] 100.0% [103] 46646(11.7%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:185:2 copying-mergesort [113] 89.4% loop [125] 9.9% jloop [5] 0.7% ------------------------------------------------------------------------------------------ for-loop [92] 6.7% for-loop [126] 22.4% for-loop [91] 70.9% [104] 42550(10.6%) 16758(4.2%) match-e ...tric-operators/src/core/ematch.rkt:46:0 for-loop [114] 44.8% for-loop [126] 8.2% ??? [142] 6.0% variable? [128] 3.4% list-cartesian-product [133] 2.5% ------------------------------------------------------------------------------------------ for-loop [92] 100.0% [105] 25650(6.4%) 360(0.1%) for-loop ...operators/src/core/simplify.rkt:146:10 loop! [127] 41.4% merge-egraph-nodes! [116] 28.7% substitute-e [119] 15.4% list-member? [122] 6.6% mk-enode! [129] 6.4% ------------------------------------------------------------------------------------------ for-loop [17] 1.2% for-loop [16] 1.9% loop [15] 1.9% ??? [123] 3.2% ??? [47] 3.2% localize-error [29] 5.7% compile [42] 7.9% eval-prog [93] 9.0% ??? [117] 11.7% ??? [81] 17.2% loop [141] 37.0% [106] 11526(2.9%) 2292(0.6%) hash-ref! ...racket/private/more-scheme.rkt:373:13 ??? [117] 50.6% parse-loop12 [120] 19.0% bigfloat-hash [118] 8.2% f6 [49] 4.0% ??? [123] 3.2% simplify [6] 3.2% ??? [8] 1.9% ??? [9] 1.2% ------------------------------------------------------------------------------------------ add-splitpoint [97] 100.0% [107] 3868(1.0%) 326(0.1%) for-loop ...c-operators/src/core/regimes.rkt:255:4 for-loop [121] 91.6% ------------------------------------------------------------------------------------------ ormap [98] 100.0% [108] 632(0.2%) 334(0.1%) flag-set? ...ametric-operators/src/config.rkt:34:0 return/no-unsupplied [115] 47.2% ------------------------------------------------------------------------------------------ for-loop [100] 100.0% [109] 360(0.1%) 0(0.0%) free-variables ...operators/src/programs.rkt:102:0 f6 [49] 100.0% ------------------------------------------------------------------------------------------ ??? [94] 100.0% [110] 358(0.1%) 358(0.1%) ??? ...ects/racket/contract/private/prop.rkt:256:4 ------------------------------------------------------------------------------------------ ??? [95] 100.0% [111] 312(0.1%) 312(0.1%) dict? ...ollects/racket/private/generic.rkt:146:11 ------------------------------------------------------------------------------------------ eval-prog [93] 100.0% [112] 312(0.1%) 0(0.0%) ??? ...collects/racket/private/qq-and-or.rkt:155:9 ??? [124] 100.0% ------------------------------------------------------------------------------------------ generic-sort/key [103] 42.9% copying-mergesort [113] 57.1% [113] 41686(10.4%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:130:8 copying-mergesort [113] 57.1% loop [125] 33.4% jloop [5] 9.6% ------------------------------------------------------------------------------------------ match-e [104] 100.0% [114] 25318(6.3%) 9522(2.4%) for-loop ...ic-operators/src/core/ematch.rkt:59:11 for-loop [126] 52.3% loop [141] 9.2% list-cartesian-product [133] 2.6% ------------------------------------------------------------------------------------------ flag-set? [108] 2.0% ulp-difference [22] 4.7% ??? [63] 14.2% ??? [50] 29.2% ??? [34] 49.9% [115] 14880(3.7%) 12874(3.2%) return/no-unsupplied ...ct/private/arr-i.rkt:533:0 filter [132] 13.5% ------------------------------------------------------------------------------------------ merge-egraph-nodes! [116] 2.2% for-loop [140] 2.2% for-loop [105] 95.6% [116] 7372(1.8%) 686(0.2%) merge-egraph-nodes! ...s/src/core/egraph.rkt:153:0 update-leader! [131] 37.4% for-loop [135] 18.2% loop! [127] 13.3% enode-merge! [138] 13.3% make-sequence [146] 4.1% for-loop [140] 2.2% merge-egraph-nodes! [116] 2.2% ------------------------------------------------------------------------------------------ hash-ref! [106] 100.0% [117] 7286(1.8%) 606(0.2%) ??? ...parametric-operators/src/programs.rkt:194:5 loop [141] 72.0% hash-ref! [106] 25.1% ------------------------------------------------------------------------------------------ hash-ref! [106] 100.0% [118] 4676(1.2%) 0(0.0%) bigfloat-hash ...h/private/bigfloat/mpfr.rkt:165:0 bfcanonicalize [130] 67.8% sig+exp->bigfloat [134] 32.2% ------------------------------------------------------------------------------------------ substitute-e [119] 29.0% for-loop [105] 71.0% [119] 3960(1.0%) 322(0.1%) substitute-e ...operators/src/core/ematch.rkt:71:0 mk-enode! [129] 41.9% substitute-e [119] 29.0% ??? [142] 16.7% variable? [128] 4.2% ------------------------------------------------------------------------------------------ map [65] 2.9% loop [141] 5.0% parse-loop12 [120] 5.7% simplify [6] 13.5% hash-ref! [106] 73.0% [120] 3620(0.9%) 978(0.2%) parse-loop12 ...s/racket/match/compiler.rkt:418:15 loop [141] 67.7% loop [137] 10.3% parse-loop12 [120] 5.7% ------------------------------------------------------------------------------------------ for-loop [107] 100.0% [121] 3542(0.9%) 3542(0.9%) for-loop ...c-operators/src/core/regimes.rkt:259:8 ------------------------------------------------------------------------------------------ ??? [50] 10.0% ??? [34] 33.3% for-loop [105] 56.7% [122] 2994(0.7%) 1296(0.3%) list-member? ...llects/racket/private/set.rkt:24:0 loop [136] 44.8% member [139] 11.9% ------------------------------------------------------------------------------------------ hash-ref! [106] 100.0% [123] 1310(0.3%) 0(0.0%) ??? ...ametric-operators/src/core/taylor.rkt:44:15 hash-ref! [106] 100.0% ------------------------------------------------------------------------------------------ ??? [112] 100.0% [124] 312(0.1%) 312(0.1%) ??? ...ollects/racket/private/qq-and-or.rkt:164:21 ------------------------------------------------------------------------------------------ generic-sort/key [103] 12.4% ??? [90] 18.6% copying-mergesort [113] 69.0% [125] 37306(9.3%) 678(0.2%) loop ...ket/collects/racket/private/sort.rkt:97:12 ??? [19] 94.6% ??? [47] 3.6% ------------------------------------------------------------------------------------------ match-e [104] 31.9% for-loop [114] 68.1% [126] 18276(4.6%) 934(0.2%) for-loop ...ic-operators/src/core/ematch.rkt:65:37 match-e [104] 91.2% ??? [145] 3.7% ------------------------------------------------------------------------------------------ merge-egraph-nodes! [116] 5.0% loop [141] 30.7% for-loop [105] 64.3% [127] 11934(3.0%) 2932(0.7%) loop! ...metric-operators/src/core/enode.rkt:175:2 loop [141] 35.9% custom-set-union [156] 31.5% set [155] 18.2% ------------------------------------------------------------------------------------------ substitute-e [119] 9.0% match-e [104] 91.0% [128] 3708(0.9%) 324(0.1%) variable? ...operators/src/syntax/syntax.rkt:698:0 ??? [142] 91.3% ------------------------------------------------------------------------------------------ for-loop [105] 49.6% substitute-e [119] 50.4% [129] 3292(0.8%) 1332(0.3%) mk-enode! ...c-operators/src/core/egraph.rkt:102:0 hash-has-key? [153] 50.5% new-enode [149] 9.1% ------------------------------------------------------------------------------------------ bigfloat-hash [118] 100.0% [130] 3170(0.8%) 3170(0.8%) bfcanonicalize .../private/bigfloat/mpfr.rkt:155:0 ------------------------------------------------------------------------------------------ merge-egraph-nodes! [116] 100.0% [131] 2754(0.7%) 0(0.0%) update-leader! ...rators/src/core/egraph.rkt:218:0 for-loop [143] 78.4% custom-set-union! [148] 11.3% make-sequence [146] 10.3% ------------------------------------------------------------------------------------------ return/no-unsupplied [115] 100.0% [132] 2006(0.5%) 2006(0.5%) filter ...t/collects/racket/private/list.rkt:256:2 ------------------------------------------------------------------------------------------ list-cartesian-product [133] 19.3% for-loop [114] 29.1% match-e [104] 51.5% [133] 1712(0.4%) 1378(0.3%) list-cartesian-product ...src/core/ematch.rkt:20:0 for-loop [147] 19.5% list-cartesian-product [133] 19.3% ------------------------------------------------------------------------------------------ bigfloat-hash [118] 100.0% [134] 1506(0.4%) 1506(0.4%) sig+exp->bigfloat ...ivate/bigfloat/mpfr.rkt:385:0 ------------------------------------------------------------------------------------------ merge-egraph-nodes! [116] 100.0% [135] 1344(0.3%) 1018(0.3%) for-loop ...ic-operators/src/core/egraph.rkt:233:6 update-en-expr [162] 24.3% ------------------------------------------------------------------------------------------ list-member? [122] 100.0% [136] 1342(0.3%) 1342(0.3%) loop (unknown source) ------------------------------------------------------------------------------------------ map [65] 1.0% parse-loop12 [120] 19.1% loop [137] 79.9% [137] 1020(0.3%) 0(0.0%) loop ...cket/collects/racket/private/map.rkt:36:19 loop [137] 79.9% ??? [47] 19.1% ------------------------------------------------------------------------------------------ merge-egraph-nodes! [116] 100.0% [138] 980(0.2%) 0(0.0%) enode-merge! ...operators/src/core/enode.rkt:112:0 adopt-enode! [144] 100.0% ------------------------------------------------------------------------------------------ list-member? [122] 100.0% [139] 356(0.1%) 356(0.1%) member (unknown source) ------------------------------------------------------------------------------------------ merge-egraph-nodes! [116] 100.0% [140] 324(0.1%) 0(0.0%) for-loop ...c-operators/src/core/egraph.rkt:201:10 merge-egraph-nodes! [116] 100.0% ------------------------------------------------------------------------------------------ map-enodes [83] 0.0% map [65] 0.0% errors-score [18] 0.0% make-exacts* [61] 0.1% loop [60] 0.2% parse-loop12 [120] 0.5% loop! [127] 0.7% ??? [19] 0.8% for-loop [114] 0.8% ??? [117] 2.1% option-on-expr [58] 6.7% f6 [49] 15.4% loop [141] 72.6% [141] 246646(61.7%) 3632(0.9%) loop ...cket/collects/racket/private/map.rkt:25:19 loop [141] 72.6% option-on-expr [58] 15.4% errors [3] 6.6% hash-ref! [106] 2.1% ??? [47] 0.7% loop! [127] 0.7% ??? [81] 0.4% ??? [19] 0.3% foldl [160] 0.3% ??? [152] 0.1% parse-loop12 [120] 0.1% ??? [150] 0.0% for-loop [161] 0.0% ??? [154] 0.0% map [65] 0.0% ------------------------------------------------------------------------------------------ substitute-e [119] 3.9% choose-best-alt! [28] 7.3% variable? [128] 8.1% ??? [95] 11.1% match-e [104] 14.1% finalize-iter! [25] 55.6% [142] 41966(10.5%) 7744(1.9%) ??? ...contract/private/arrow-val-first.rkt:357:18 for-loop [151] 52.5% hash-has-key? [153] 18.7% ??? [157] 7.3% atab-add-altns [159] 3.1% ------------------------------------------------------------------------------------------ update-leader! [131] 100.0% [143] 2160(0.5%) 298(0.1%) for-loop ...ic-operators/src/core/egraph.rkt:223:6 for-loop [158] 71.9% update-en-expr [162] 14.4% ------------------------------------------------------------------------------------------ enode-merge! [138] 100.0% [144] 980(0.2%) 364(0.1%) adopt-enode! ...-operators/src/core/enode.rkt:88:0 custom-set-union [156] 62.9% ------------------------------------------------------------------------------------------ for-loop [91] 31.4% for-loop [126] 68.6% [145] 976(0.2%) 628(0.2%) ??? ...rametric-operators/src/core/ematch.rkt:50:5 for-loop [163] 35.7% ------------------------------------------------------------------------------------------ update-leader! [131] 48.5% merge-egraph-nodes! [116] 51.5% [146] 586(0.1%) 586(0.1%) make-sequence ...ects/racket/private/for.rkt:509:2 ------------------------------------------------------------------------------------------ list-cartesian-product [133] 100.0% [147] 334(0.1%) 334(0.1%) for-loop ...ric-operators/src/core/ematch.rkt:24:8 ------------------------------------------------------------------------------------------ update-leader! [131] 100.0% [148] 310(0.1%) 0(0.0%) custom-set-union! ...t/private/set-types.rkt:245:0 for-loop [164] 100.0% ------------------------------------------------------------------------------------------ mk-enode! [129] 100.0% [149] 298(0.1%) 0(0.0%) new-enode ...ric-operators/src/core/enode.rkt:80:0 set [155] 100.0% ------------------------------------------------------------------------------------------ loop [141] 1.6% bf* [37] 6.6% ??? [23] 91.8% [150] 58864(14.7%) 46260(11.6%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfsub [167] 16.5% bfsqrt [169] 4.9% ------------------------------------------------------------------------------------------ ??? [142] 100.0% [151] 22364(5.6%) 0(0.0%) for-loop ...-operators/src/core/alt-table.rkt:51:2 atab-add-altn [165] 100.0% ------------------------------------------------------------------------------------------ option-on-expr [58] 3.1% loop [141] 47.4% for-loop [96] 49.5% [152] 10592(2.6%) 0(0.0%) ??? ...metric-operators/src/core/regimes.rkt:194:2 ??? [19] 96.8% ??? [47] 3.2% ------------------------------------------------------------------------------------------ mk-enode! [129] 16.9% ??? [142] 83.1% [153] 9852(2.5%) 4852(1.2%) hash-has-key? ...et/private/more-scheme.rkt:368:13 ??? [166] 44.1% ??? [173] 6.6% ------------------------------------------------------------------------------------------ loop [141] 41.5% ??? [19] 58.5% [154] 6028(1.5%) 0(0.0%) ??? ...contract/private/../../private/kw.rkt:761:9 real->bigfloat [168] 100.0% ------------------------------------------------------------------------------------------ new-enode [149] 6.3% loop! [127] 93.7% [155] 4748(1.2%) 4748(1.2%) set ...collects/racket/private/set-types.rkt:981:0 ------------------------------------------------------------------------------------------ adopt-enode! [144] 13.5% loop! [127] 86.5% [156] 4548(1.1%) 1936(0.5%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [170] 57.4% ------------------------------------------------------------------------------------------ ??? [142] 100.0% [157] 3050(0.8%) 0(0.0%) ??? ...etric-operators/src/core/alt-table.rkt:54:0 ??? [47] 100.0% ------------------------------------------------------------------------------------------ for-loop [143] 100.0% [158] 1552(0.4%) 0(0.0%) for-loop ...ic-operators/src/core/egraph.rkt:224:8 hash-update! [171] 100.0% ------------------------------------------------------------------------------------------ ??? [142] 100.0% [159] 1282(0.3%) 0(0.0%) atab-add-altns ...tors/src/core/alt-table.rkt:50:0 atab-add-altn [165] 100.0% ------------------------------------------------------------------------------------------ loop [141] 100.0% [160] 994(0.2%) 0(0.0%) foldl ...et/collects/racket/private/list.rkt:229:4 merge2 [172] 100.0% ------------------------------------------------------------------------------------------ map-enodes [83] 48.1% loop [141] 51.9% [161] 694(0.2%) 694(0.2%) for-loop ...-operators/src/core/simplify.rkt:186:2 ------------------------------------------------------------------------------------------ for-loop [143] 48.7% for-loop [135] 51.3% [162] 636(0.2%) 636(0.2%) update-en-expr ...rators/src/core/egraph.rkt:212:0 ------------------------------------------------------------------------------------------ ??? [145] 100.0% [163] 348(0.1%) 348(0.1%) for-loop ...ric-operators/src/core/ematch.rkt:51:7 ------------------------------------------------------------------------------------------ custom-set-union! [148] 100.0% [164] 310(0.1%) 310(0.1%) for-loop ...cts/racket/private/set-types.rkt:253:4 ------------------------------------------------------------------------------------------ atab-add-altns [159] 5.4% for-loop [151] 94.6% [165] 23646(5.9%) 0(0.0%) atab-add-altn ...tors/src/core/alt-table.rkt:208:0 best-and-tied-at-points [174] 92.9% override-at-pnts [178] 7.1% ------------------------------------------------------------------------------------------ hash-has-key? [153] 24.9% ??? [50] 75.1% [166] 17490(4.4%) 6190(1.5%) ??? ...ects/racket/contract/private/list.rkt:737:4 for-loop [175] 46.2% ??? [181] 11.1% ??? [186] 5.5% arrow-higher-order:lnp [180] 1.9% ------------------------------------------------------------------------------------------ ??? [150] 100.0% [167] 9716(2.4%) 7196(1.8%) bfsub ...-lib/math/private/bigfloat/mpfr.rkt:819:4 ??? [176] 25.9% ------------------------------------------------------------------------------------------ ??? [154] 100.0% [168] 6028(1.5%) 4714(1.2%) real->bigfloat .../private/bigfloat/mpfr.rkt:451:0 ??? [176] 21.8% ------------------------------------------------------------------------------------------ ??? [150] 100.0% [169] 2888(0.7%) 1886(0.5%) bfsqrt ...lib/math/private/bigfloat/mpfr.rkt:616:4 ??? [176] 34.7% ------------------------------------------------------------------------------------------ custom-set-union [156] 100.0% [170] 2612(0.7%) 360(0.1%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [177] 86.2% ------------------------------------------------------------------------------------------ for-loop [158] 100.0% [171] 1552(0.4%) 0(0.0%) hash-update! ...ket/private/more-scheme.rkt:362:13 ??? [179] 100.0% ------------------------------------------------------------------------------------------ foldl [160] 100.0% [172] 994(0.2%) 994(0.2%) merge2 ...etric-operators/src/core/ematch.rkt:31:0 ------------------------------------------------------------------------------------------ hash-has-key? [153] 100.0% [173] 652(0.2%) 652(0.2%) ??? ...ects/racket/contract/private/hash.rkt:245:7 ------------------------------------------------------------------------------------------ atab-add-altn [165] 100.0% [174] 21974(5.5%) 310(0.1%) best-and-tied-at-points ...ore/alt-table.rkt:122:0 errors [3] 95.4% ------------------------------------------------------------------------------------------ ??? [166] 100.0% [175] 8084(2.0%) 3480(0.9%) for-loop ...acket/contract/private/list.rkt:743:12 ??? [181] 36.8% for-loop [183] 16.2% successfully-got-the-right-kind-of-function [185] 3.9% ------------------------------------------------------------------------------------------ ??? [74] 5.8% bfsqrt [169] 19.5% real->bigfloat [168] 25.6% bfsub [167] 49.1% [176] 5136(1.3%) 5136(1.3%) ??? .../share/racket/collects/ffi/unsafe.rkt:861:4 ------------------------------------------------------------------------------------------ for-loop [170] 100.0% [177] 2252(0.6%) 2252(0.6%) for-loop ...cts/racket/private/set-types.rkt:178:5 ------------------------------------------------------------------------------------------ atab-add-altn [165] 100.0% [178] 1672(0.4%) 0(0.0%) override-at-pnts ...s/src/core/alt-table.rkt:145:0 errors [3] 100.0% ------------------------------------------------------------------------------------------ hash-update! [171] 100.0% [179] 1552(0.4%) 0(0.0%) ??? ...metric-operators/src/core/egraph.rkt:226:24 for-loop [182] 100.0% ------------------------------------------------------------------------------------------ ??? [166] 100.0% [180] 324(0.1%) 0(0.0%) arrow-higher-order:lnp ...w-higher-order.rkt:597:7 ??? [184] 100.0% ------------------------------------------------------------------------------------------ ??? [54] 6.1% ??? [166] 37.0% for-loop [175] 56.9% [181] 5234(1.3%) 2620(0.7%) ??? ...private/unconstrained-domain-arrow.rkt:74:4 make-keyword-procedure [187] 49.9% ------------------------------------------------------------------------------------------ ??? [179] 100.0% [182] 1552(0.4%) 1552(0.4%) for-loop ...c-operators/src/core/egraph.rkt:227:26 ------------------------------------------------------------------------------------------ for-loop [175] 100.0% [183] 1308(0.3%) 276(0.1%) for-loop ...racket/contract/private/hash.rkt:239:6 ??? [186] 78.9% ------------------------------------------------------------------------------------------ arrow-higher-order:lnp [180] 100.0% [184] 324(0.1%) 324(0.1%) ??? ...et/contract/private/arity-checking.rkt:19:2 ------------------------------------------------------------------------------------------ for-loop [175] 100.0% [185] 318(0.1%) 0(0.0%) successfully-got-the-right-kind-of-function ...9:4 arity-checking-wrapper [188] 100.0% ------------------------------------------------------------------------------------------ ??? [50] 7.7% ??? [166] 22.1% for-loop [183] 23.9% ??? [66] 46.3% [186] 4318(1.1%) 2306(0.6%) ??? ...cts/racket/contract/private/list.rkt:187:10 ??? [190] 23.9% ??? [189] 14.9% for-loop [191] 7.8% ------------------------------------------------------------------------------------------ ??? [181] 100.0% [187] 2614(0.7%) 2614(0.7%) make-keyword-procedure ...ket/private/kw.rkt:260:4 ------------------------------------------------------------------------------------------ successfully-got-the-right-kind-of-function [185]100.0% [188] 318(0.1%) 0(0.0%) arity-checking-wrapper ...w-higher-order.rkt:402:0 matches-arity-exactly? [192] 100.0% ------------------------------------------------------------------------------------------ ??? [186] 28.2% ??? [23] 71.8% [189] 2282(0.6%) 2282(0.6%) ??? ...ects/racket/contract/private/prop.rkt:493:4 ------------------------------------------------------------------------------------------ ??? [186] 100.0% [190] 1032(0.3%) 1032(0.3%) ??? ...ects/racket/contract/private/list.rkt:686:7 ------------------------------------------------------------------------------------------ ??? [186] 100.0% [191] 336(0.1%) 336(0.1%) for-loop ...acket/contract/private/list.rkt:190:15 ------------------------------------------------------------------------------------------ arity-checking-wrapper [188] 100.0% [192] 318(0.1%) 318(0.1%) matches-arity-exactly? ...te/arrow-common.rkt:70:0 ------------------------------------------------------------------------------------------