Profiling results ----------------- Total cpu time observed: 153854ms (out of 154796ms) Number of samples taken: 446 (once every 345ms) (Hiding functions with self<1.0% and local<2.0%: 6 of 208 hidden) =========================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee =========================================================================== ??? [59] 100.0% [1] 138740(90.2%) 0(0.0%) profile-thunk16 ...t/pkgs/profile-lib/main.rkt:9:0 run [15] 100.0% --------------------------------------------------------------------------- ??? [59] 100.0% [2] 119776(77.9%) 0(0.0%) run-improve50 ...lt-testing/src/mainloop.rkt:225:0 for-loop [16] 95.3% get-final-combination [19] 4.4% loop [81] 0.3% --------------------------------------------------------------------------- ??? [128] 100.0% [3] 109652(71.3%) 364(0.2%) iterate-egraph!13 ...g/src/core/simplify.rkt:105:0 one-iter [17] 98.1% map-enodes [21] 1.6% --------------------------------------------------------------------------- ??? [128] 100.0% [4] 5666(3.7%) 0(0.0%) loop ...ie/alt-testing/src/core/simplify.rkt:237:2 pass [18] 100.0% --------------------------------------------------------------------------- matcher [107] 8.0% substitute-e [52] 17.1% match-e [39] 75.0% [5] 4068(2.6%) 0(0.0%) variable? ...t-testing/src/syntax/syntax.rkt:665:0 ??? [50] 100.0% --------------------------------------------------------------------------- ??? [125] 100.0% [6] 3076(2.0%) 0(0.0%) approximate9 ...t-testing/src/core/taylor.rkt:12:0 loop [20] 89.6% taylor-sqrt [27] 10.4% --------------------------------------------------------------------------- hash-ref! [129] 100.0% [7] 1386(0.9%) 0(0.0%) ??? ...rbie/alt-testing/src/core/taylor.rkt:295:23 for-loop [22] 100.0% --------------------------------------------------------------------------- copying-mergesort [199] 100.0% [8] 1088(0.7%) 0(0.0%) jloop ...t/collects/racket/private/sort.rkt:121:23 ??? [115] 100.0% --------------------------------------------------------------------------- map [155] 100.0% [9] 678(0.4%) 0(0.0%) simplify-node ...-testing/src/core/reduce.rkt:50:0 make-addition-node* [24] 52.8% append-map [26] 47.2% --------------------------------------------------------------------------- hash-ref! [129] 100.0% [10] 652(0.4%) 0(0.0%) ??? ...rbie/alt-testing/src/core/taylor.rkt:285:26 for-loop [23] 100.0% --------------------------------------------------------------------------- f172 [144] 100.0% [11] 360(0.2%) 0(0.0%) taylor-invert ...testing/src/core/taylor.rkt:312:0 first-nonzero-exp [34] 100.0% --------------------------------------------------------------------------- hash-ref! [129] 100.0% [12] 336(0.2%) 0(0.0%) ??? ...rbie/alt-testing/src/core/taylor.rkt:392:23 for-loop [25] 100.0% --------------------------------------------------------------------------- loop [169] 100.0% [13] 336(0.2%) 0(0.0%) ??? ...ket/collects/racket/private/list.rkt:323:18 hash-ref! [129] 50.0% map [155] 50.0% --------------------------------------------------------------------------- f172 [144] 100.0% [14] 320(0.2%) 0(0.0%) combine-mterms ...esting/src/core/reduce.rkt:191:0 for-loop [28] 100.0% --------------------------------------------------------------------------- profile-thunk16 [1] 100.0% [15] 138740(90.2%) 0(0.0%) run ...share/racket/pkgs/profile-lib/main.rkt:39:2 ??? [59] 100.0% --------------------------------------------------------------------------- run-improve50 [2] 100.0% [16] 114118(74.2%) 0(0.0%) for-loop ...ie/alt-testing/src/mainloop.rkt:240:10 run-iter! [29] 100.0% --------------------------------------------------------------------------- iterate-egraph!13 [3] 100.0% [17] 107568(69.9%) 1736(1.1%) one-iter ...lt-testing/src/core/simplify.rkt:116:0 for-loop [30] 65.7% for-loop [31] 32.4% --------------------------------------------------------------------------- loop [4] 100.0% [18] 5666(3.7%) 0(0.0%) pass ...ie/alt-testing/src/core/simplify.rkt:227:2 for-loop [32] 100.0% --------------------------------------------------------------------------- run-improve50 [2] 100.0% [19] 5302(3.4%) 0(0.0%) get-final-combination ...ng/src/mainloop.rkt:255:0 split-table [33] 100.0% --------------------------------------------------------------------------- approximate9 [6] 100.0% [20] 2756(1.8%) 0(0.0%) loop ...erbie/alt-testing/src/core/taylor.rkt:86:4 hash-ref! [129] 100.0% --------------------------------------------------------------------------- iterate-egraph!13 [3] 100.0% [21] 1720(1.1%) 0(0.0%) map-enodes ...lt-testing/src/core/egraph.rkt:140:0 loop [169] 60.6% for-loop [180] 39.4% --------------------------------------------------------------------------- ??? [7] 100.0% [22] 1386(0.9%) 0(0.0%) for-loop ...alt-testing/src/core/taylor.rkt:298:27 hash-ref! [129] 100.0% --------------------------------------------------------------------------- ??? [10] 100.0% [23] 652(0.4%) 0(0.0%) for-loop ...alt-testing/src/core/taylor.rkt:285:52 ??? [150] 100.0% --------------------------------------------------------------------------- simplify-node [9] 100.0% [24] 358(0.2%) 0(0.0%) make-addition-node* ...g/src/core/reduce.rkt:222:0 make-addition-node [35] 100.0% --------------------------------------------------------------------------- ??? [12] 100.0% [25] 336(0.2%) 0(0.0%) for-loop ...alt-testing/src/core/taylor.rkt:396:33 for-loop [36] 100.0% --------------------------------------------------------------------------- simplify-node [9] 100.0% [26] 320(0.2%) 0(0.0%) append-map ...acket/collects/racket/list.rkt:565:2 parse-loop12 [163] 100.0% --------------------------------------------------------------------------- approximate9 [6] 100.0% [27] 320(0.2%) 0(0.0%) taylor-sqrt ...t-testing/src/core/taylor.rkt:346:0 first-nonzero-exp [34] 100.0% --------------------------------------------------------------------------- combine-mterms [14] 100.0% [28] 320(0.2%) 0(0.0%) for-loop .../alt-testing/src/core/reduce.rkt:195:5 hash-ref! [129] 100.0% --------------------------------------------------------------------------- for-loop [16] 100.0% [29] 114118(74.2%) 0(0.0%) run-iter! ...ie/alt-testing/src/mainloop.rkt:206:0 simplify! [37] 88.7% finalize-iter! [40] 6.8% gen-series! [41] 2.7% choose-best-alt! [44] 0.9% localize-error [45] 0.6% gen-rewrites! [47] 0.3% --------------------------------------------------------------------------- one-iter [17] 100.0% [30] 70666(45.9%) 0(0.0%) for-loop ...lt-testing/src/core/simplify.rkt:166:2 for-loop [38] 89.5% match-e [39] 7.1% update-leader! [62] 2.9% --------------------------------------------------------------------------- for-loop [31] 49.5% one-iter [17] 50.5% [31] 34826(22.6%) 5426(3.5%) for-loop ...t-testing/src/core/simplify.rkt:126:12 for-loop [31] 49.5% match-e [39] 42.2% --------------------------------------------------------------------------- pass [18] 100.0% [32] 5666(3.7%) 0(0.0%) for-loop ...t-testing/src/core/simplify.rkt:230:29 argmin [42] 53.0% loop [43] 47.0% --------------------------------------------------------------------------- get-final-combination [19] 100.0% [33] 5302(3.4%) 0(0.0%) split-table ...rbie/alt-testing/src/glue.rkt:162:0 f172 [144] 100.0% --------------------------------------------------------------------------- taylor-sqrt [27] 47.1% taylor-invert [11] 52.9% [34] 680(0.4%) 0(0.0%) first-nonzero-exp ...ing/src/core/taylor.rkt:260:0 hash-ref! [129] 100.0% --------------------------------------------------------------------------- make-addition-node* [24] 100.0% [35] 358(0.2%) 0(0.0%) make-addition-node ...ng/src/core/reduce.rkt:208:0 partition [46] 100.0% --------------------------------------------------------------------------- for-loop [25] 100.0% [36] 336(0.2%) 0(0.0%) for-loop ...alt-testing/src/core/taylor.rkt:398:39 hash-ref! [129] 100.0% --------------------------------------------------------------------------- run-iter! [29] 100.0% [37] 101184(65.8%) 0(0.0%) simplify! ...ie/alt-testing/src/mainloop.rkt:146:0 for-loop [48] 100.0% --------------------------------------------------------------------------- for-loop [30] 100.0% [38] 63232(41.1%) 716(0.5%) for-loop ...t-testing/src/core/simplify.rkt:148:10 loop! [176] 32.0% mk-enode! [60] 28.5% merge-egraph-nodes! [51] 23.6% substitute-e [52] 12.2% list-member? [55] 2.6% --------------------------------------------------------------------------- for-loop [30] 7.8% for-loop [61] 25.0% for-loop [31] 67.2% [39] 34440(22.4%) 12670(8.2%) match-e ...ie/alt-testing/src/core/ematch.rkt:46:0 for-loop [49] 49.6% for-loop [61] 7.6% ??? [50] 5.1% variable? [5] 3.5% list-cartesian-product [66] 2.0% loop [169] 0.9% curry* [57] 0.5% --------------------------------------------------------------------------- run-iter! [29] 100.0% [40] 7782(5.1%) 0(0.0%) finalize-iter! ...t-testing/src/mainloop.rkt:160:0 ??? [50] 100.0% --------------------------------------------------------------------------- run-iter! [29] 100.0% [41] 3076(2.0%) 0(0.0%) gen-series! .../alt-testing/src/mainloop.rkt:120:0 for-loop [54] 100.0% --------------------------------------------------------------------------- for-loop [32] 100.0% [42] 3002(2.0%) 0(0.0%) argmin ...re/racket/collects/racket/list.rkt:743:0 for-loop [53] 66.4% expression-cost [56] 33.6% --------------------------------------------------------------------------- for-loop [32] 100.0% [43] 2664(1.7%) 0(0.0%) loop ...hare/racket/collects/racket/list.rkt:729:4 for-loop [53] 100.0% --------------------------------------------------------------------------- run-iter! [29] 100.0% [44] 1040(0.7%) 0(0.0%) choose-best-alt! ...testing/src/mainloop.rkt:106:0 ??? [50] 100.0% --------------------------------------------------------------------------- run-iter! [29] 100.0% [45] 712(0.5%) 0(0.0%) localize-error ...sting/src/core/localize.rkt:47:0 hash-ref! [129] 100.0% --------------------------------------------------------------------------- make-addition-node [35] 100.0% [46] 358(0.2%) 358(0.2%) partition ...racket/collects/racket/list.rkt:547:0 --------------------------------------------------------------------------- run-iter! [29] 100.0% [47] 324(0.2%) 0(0.0%) gen-rewrites! ...lt-testing/src/mainloop.rkt:133:0 for-loop [58] 100.0% --------------------------------------------------------------------------- simplify! [37] 100.0% [48] 101184(65.8%) 0(0.0%) for-loop ...bie/alt-testing/src/mainloop.rkt:150:6 ??? [59] 100.0% --------------------------------------------------------------------------- match-e [39] 100.0% [49] 21780(14.2%) 8296(5.4%) for-loop .../alt-testing/src/core/ematch.rkt:59:11 for-loop [61] 54.2% loop [169] 4.8% list-cartesian-product [66] 4.5% --------------------------------------------------------------------------- choose-best-alt! [44] 4.9% substitute-e [52] 6.6% get-sigs [99] 12.2% variable? [5] 19.2% match-e [39] 20.4% finalize-iter! [40] 36.7% [50] 21194(13.8%) 6740(4.4%) ??? ...contract/private/arrow-val-first.rkt:357:18 for-loop [63] 31.8% hash-has-key? [80] 26.6% atab-pick-alt8 [69] 4.9% atab-add-altns [70] 4.9% --------------------------------------------------------------------------- merge-egraph-nodes! [51] 3.4% for-loop [65] 5.7% for-loop [38] 90.8% [51] 14898(9.7%) 0(0.0%) merge-egraph-nodes! ...g/src/core/egraph.rkt:153:0 update-leader! [62] 65.9% for-loop [65] 12.3% for-loop [67] 11.5% loop! [176] 4.5% merge-egraph-nodes! [51] 3.4% enode-merge! [74] 2.2% --------------------------------------------------------------------------- substitute-e [52] 14.3% for-loop [38] 85.7% [52] 7684(5.0%) 0(0.0%) substitute-e ...t-testing/src/core/ematch.rkt:71:0 mk-enode! [60] 72.8% substitute-e [52] 14.3% ??? [50] 9.1% variable? [5] 3.8% --------------------------------------------------------------------------- argmin [42] 42.8% loop [43] 57.2% [53] 4658(3.0%) 0(0.0%) for-loop ...bie/alt-testing/src/programs.rkt:210:2 ??? [128] 65.2% ...sting/src/common.rkt:47:2 [111] 34.8% --------------------------------------------------------------------------- gen-series! [41] 100.0% [54] 3076(2.0%) 0(0.0%) for-loop ...bie/alt-testing/src/mainloop.rkt:126:7 taylor-alt [64] 100.0% --------------------------------------------------------------------------- for-loop [38] 100.0% [55] 1672(1.1%) 0(0.0%) list-member? ...llects/racket/private/set.rkt:24:0 loop [68] 77.9% member [73] 22.1% --------------------------------------------------------------------------- argmin [42] 100.0% [56] 1008(0.7%) 0(0.0%) expression-cost ...-testing/src/programs.rkt:209:0 compile [71] 100.0% --------------------------------------------------------------------------- match-e [39] 100.0% [57] 378(0.2%) 0(0.0%) curry* ...racket/collects/racket/function.rkt:44:2 procedure-arity [72] 100.0% --------------------------------------------------------------------------- gen-rewrites! [47] 100.0% [58] 324(0.2%) 0(0.0%) for-loop ...ie/alt-testing/src/mainloop.rkt:138:11 ??? [75] 100.0% --------------------------------------------------------------------------- for-loop [48] 22.1% run [15] 34.4% [59] 152850(99.3%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 34.4% ??? [128] 31.3% run-improve50 [2] 28.1% prepare-points [77] 5.1% loop [81] 1.1% --------------------------------------------------------------------------- mk-enode-rec! [152] 1.3% substitute-e [52] 23.4% for-loop [38] 75.4% [60] 23928(15.6%) 1358(0.9%) mk-enode! ...alt-testing/src/core/egraph.rkt:102:0 new-enode [76] 85.7% hash-has-key? [80] 8.6% --------------------------------------------------------------------------- match-e [39] 27.8% for-loop [49] 72.2% [61] 16184(10.5%) 348(0.2%) for-loop .../alt-testing/src/core/ematch.rkt:65:37 match-e [39] 91.7% ??? [83] 6.2% --------------------------------------------------------------------------- for-loop [30] 16.5% merge-egraph-nodes! [51] 83.5% [62] 12588(8.2%) 726(0.5%) update-leader! ...esting/src/core/egraph.rkt:218:0 for-loop [78] 91.8% custom-set-union! [88] 2.5% --------------------------------------------------------------------------- ??? [50] 100.0% [63] 6750(4.4%) 0(0.0%) for-loop ...lt-testing/src/core/alt-table.rkt:52:2 atab-add-altn [79] 100.0% --------------------------------------------------------------------------- for-loop [54] 100.0% [64] 3076(2.0%) 0(0.0%) taylor-alt ...erbie/alt-testing/src/glue.rkt:134:0 for-loop [82] 100.0% --------------------------------------------------------------------------- merge-egraph-nodes! [51] 100.0% [65] 2694(1.8%) 0(0.0%) for-loop ...alt-testing/src/core/egraph.rkt:201:10 merge-egraph-nodes! [51] 63.5% loop! [176] 36.5% --------------------------------------------------------------------------- match-e [39] 16.7% list-cartesian-product [66] 34.5% for-loop [49] 48.8% [66] 2018(1.3%) 2018(1.3%) list-cartesian-product ...src/core/ematch.rkt:20:0 list-cartesian-product [66] 34.5% --------------------------------------------------------------------------- merge-egraph-nodes! [51] 100.0% [67] 1720(1.1%) 1358(0.9%) for-loop .../alt-testing/src/core/egraph.rkt:233:6 update-en-expr [185] 21.0% --------------------------------------------------------------------------- list-member? [55] 100.0% [68] 1302(0.8%) 1302(0.8%) loop (unknown source) --------------------------------------------------------------------------- ??? [50] 100.0% [69] 1040(0.7%) 0(0.0%) atab-pick-alt8 ...ting/src/core/alt-table.rkt:61:0 for-loop [84] 69.2% for-loop [87] 30.8% --------------------------------------------------------------------------- ??? [50] 100.0% [70] 1032(0.7%) 0(0.0%) atab-add-altns ...ting/src/core/alt-table.rkt:51:0 atab-add-altn [79] 100.0% --------------------------------------------------------------------------- expression-cost [56] 100.0% [71] 1008(0.7%) 0(0.0%) compile ...rbie/alt-testing/src/programs.rkt:186:0 hash-ref! [129] 100.0% --------------------------------------------------------------------------- curry* [57] 100.0% [72] 378(0.2%) 378(0.2%) procedure-arity ...ket/private/norm-arity.rkt:7:27 --------------------------------------------------------------------------- list-member? [55] 100.0% [73] 370(0.2%) 370(0.2%) member (unknown source) --------------------------------------------------------------------------- merge-egraph-nodes! [51] 100.0% [74] 332(0.2%) 0(0.0%) enode-merge! ...t-testing/src/core/enode.rkt:129:0 adopt-enode! [85] 100.0% --------------------------------------------------------------------------- for-loop [58] 100.0% [75] 324(0.2%) 0(0.0%) ??? ...herbie/alt-testing/src/alternative.rkt:88:0 rewriter [86] 100.0% --------------------------------------------------------------------------- mk-enode! [60] 100.0% [76] 20508(13.3%) 0(0.0%) new-enode ...e/alt-testing/src/core/enode.rkt:97:0 type-of-enode-expr [89] 100.0% --------------------------------------------------------------------------- ??? [59] 100.0% [77] 15516(10.1%) 0(0.0%) prepare-points ...alt-testing/src/points.rkt:214:0 loop [101] 38.6% make-exacts* [102] 36.1% loop [92] 20.9% for-loop [93] 4.4% --------------------------------------------------------------------------- update-leader! [62] 100.0% [78] 11552(7.5%) 0(0.0%) for-loop .../alt-testing/src/core/egraph.rkt:223:6 for-loop [90] 100.0% --------------------------------------------------------------------------- atab-add-altns [70] 13.3% for-loop [63] 86.7% [79] 7782(5.1%) 0(0.0%) atab-add-altn ...ting/src/core/alt-table.rkt:243:0 best-and-tied-at-points [91] 95.6% hash-set-lsts [95] 4.4% --------------------------------------------------------------------------- mk-enode! [60] 26.8% ??? [50] 73.2% [80] 7694(5.0%) 4048(2.6%) hash-has-key? ...et/private/more-scheme.rkt:368:13 ??? [135] 38.5% ??? [94] 8.8% --------------------------------------------------------------------------- run-improve50 [2] 9.4% ??? [59] 90.6% [81] 3804(2.5%) 0(0.0%) loop ...es/herbie/alt-testing/src/points.rkt:238:2 loop [101] 45.6% make-exacts* [102] 26.9% loop [92] 17.8% for-loop [93] 9.7% --------------------------------------------------------------------------- taylor-alt [64] 100.0% [82] 3076(2.0%) 0(0.0%) for-loop .../herbie/alt-testing/src/glue.rkt:139:6 ??? [125] 100.0% --------------------------------------------------------------------------- for-loop [61] 100.0% [83] 996(0.6%) 660(0.4%) ??? ...herbie/alt-testing/src/core/ematch.rkt:50:5 for-loop [96] 33.7% --------------------------------------------------------------------------- atab-pick-alt8 [69] 100.0% [84] 720(0.5%) 720(0.5%) for-loop ...lt-testing/src/core/alt-table.rkt:81:2 --------------------------------------------------------------------------- enode-merge! [74] 100.0% [85] 332(0.2%) 0(0.0%) adopt-enode! ...t-testing/src/core/enode.rkt:105:0 custom-set-union [183] 100.0% --------------------------------------------------------------------------- matcher [107] 50.0% ??? [75] 50.0% [86] 324(0.2%) 0(0.0%) rewriter ...alt-testing/src/core/matcher.rkt:131:2 for-loop [97] 100.0% --------------------------------------------------------------------------- atab-pick-alt8 [69] 100.0% [87] 320(0.2%) 320(0.2%) for-loop ...lt-testing/src/core/alt-table.rkt:88:2 --------------------------------------------------------------------------- update-leader! [62] 100.0% [88] 310(0.2%) 0(0.0%) custom-set-union! ...t/private/set-types.rkt:245:0 for-loop [98] 100.0% --------------------------------------------------------------------------- new-enode [76] 100.0% [89] 20508(13.3%) 350(0.2%) type-of-enode-expr ...ting/src/core/enode.rkt:68:0 get-sigs [99] 98.3% --------------------------------------------------------------------------- for-loop [78] 100.0% [90] 11552(7.5%) 0(0.0%) for-loop .../alt-testing/src/core/egraph.rkt:224:8 hash-update! [100] 100.0% --------------------------------------------------------------------------- atab-add-altn [79] 100.0% [91] 7436(4.8%) 0(0.0%) best-and-tied-at-points ...ore/alt-table.rkt:157:0 errors [103] 95.2% for-loop [105] 4.8% --------------------------------------------------------------------------- loop [81] 17.3% prepare-points [77] 82.7% [92] 3922(2.5%) 0(0.0%) loop ...es/herbie/alt-testing/src/points.rkt:158:2 loop [101] 53.6% make-exacts* [102] 46.4% --------------------------------------------------------------------------- loop [81] 35.3% prepare-points [77] 64.7% [93] 1048(0.7%) 0(0.0%) for-loop ...rbie/alt-testing/src/points.rkt:255:26 ??? [104] 100.0% --------------------------------------------------------------------------- hash-has-key? [80] 100.0% [94] 680(0.4%) 680(0.4%) ??? ...ects/racket/contract/private/hash.rkt:245:7 --------------------------------------------------------------------------- atab-add-altn [79] 100.0% [95] 346(0.2%) 0(0.0%) hash-set-lsts ...ting/src/core/alt-table.rkt:146:0 loop [106] 100.0% --------------------------------------------------------------------------- ??? [83] 100.0% [96] 336(0.2%) 336(0.2%) for-loop ...e/alt-testing/src/core/ematch.rkt:51:7 --------------------------------------------------------------------------- rewriter [86] 100.0% [97] 324(0.2%) 0(0.0%) for-loop ...lt-testing/src/core/matcher.rkt:134:10 matcher [107] 100.0% --------------------------------------------------------------------------- custom-set-union! [88] 100.0% [98] 310(0.2%) 310(0.2%) for-loop ...cts/racket/private/set-types.rkt:253:4 --------------------------------------------------------------------------- type-of-enode-expr [89] 100.0% [99] 20158(13.1%) 692(0.4%) get-sigs ...bie/alt-testing/src/type-check.rkt:5:0 ??? [109] 39.3% ??? [128] 29.5% ...sting/src/common.rkt:47:2 [111] 15.0% ??? [50] 12.8% --------------------------------------------------------------------------- for-loop [90] 100.0% [100] 11552(7.5%) 0(0.0%) hash-update! ...ket/private/more-scheme.rkt:362:13 ??? [108] 100.0% --------------------------------------------------------------------------- loop [81] 17.6% loop [92] 21.4% prepare-points [77] 61.0% [101] 9834(6.4%) 672(0.4%) loop ...es/herbie/alt-testing/src/points.rkt:141:4 loop [169] 93.2% --------------------------------------------------------------------------- loop [81] 12.1% loop [92] 21.5% prepare-points [77] 66.3% [102] 8438(5.5%) 0(0.0%) make-exacts* ...e/alt-testing/src/points.rkt:138:0 loop [169] 95.6% eval-prog [112] 4.4% --------------------------------------------------------------------------- option-on-expr [178] 8.9% best-and-tied-at-points [91] 91.1% [103] 7766(5.0%) 0(0.0%) errors .../herbie/alt-testing/src/points.rkt:271:0 for-loop [110] 86.9% eval-prog [112] 13.1% --------------------------------------------------------------------------- for-loop [93] 100.0% [104] 1048(0.7%) 0(0.0%) ??? ...ies/herbie/alt-testing/src/points.rkt:230:7 for-loop [113] 100.0% --------------------------------------------------------------------------- best-and-tied-at-points [91] 100.0% [105] 358(0.2%) 358(0.2%) for-loop ...-testing/src/core/alt-table.rkt:159:16 --------------------------------------------------------------------------- hash-set-lsts [95] 100.0% [106] 346(0.2%) 346(0.2%) loop ...e/alt-testing/src/core/alt-table.rkt:141:2 --------------------------------------------------------------------------- for-loop [114] 33.3% for-loop [97] 66.7% [107] 324(0.2%) 0(0.0%) matcher .../alt-testing/src/core/matcher.rkt:167:2 for-loop [114] 33.3% rewriter [86] 33.3% variable? [5] 33.3% --------------------------------------------------------------------------- hash-update! [100] 100.0% [108] 11552(7.5%) 0(0.0%) ??? ...rbie/alt-testing/src/core/egraph.rkt:226:24 for-loop [116] 100.0% --------------------------------------------------------------------------- get-sigs [99] 100.0% [109] 7916(5.1%) 360(0.2%) ??? ...ts/racket/contract/private/arr-i.rkt:804:10 ??? [117] 49.8% for-loop [118] 32.9% get/build-late-neg-projection [148] 12.7% --------------------------------------------------------------------------- errors [103] 100.0% [110] 6748(4.4%) 666(0.4%) for-loop ...erbie/alt-testing/src/points.rkt:274:4 ??? [115] 65.0% ??? [125] 20.5% ulp-difference [123] 4.6% --------------------------------------------------------------------------- for-loop [53] 35.0% get-sigs [99] 65.0% [111] 4640(3.0%) 1624(1.1%) ...sting/src/common.rkt:47:2 ...e/arr-i.rkt:906:19 ??? [119] 36.9% ??? [120] 28.1% --------------------------------------------------------------------------- make-exacts* [102] 26.7% errors [103] 73.3% [112] 1388(0.9%) 324(0.2%) eval-prog ...ie/alt-testing/src/programs.rkt:150:0 f172 [144] 26.7% parse-app [121] 25.6% ??? [122] 24.4% --------------------------------------------------------------------------- ??? [104] 100.0% [113] 1048(0.7%) 0(0.0%) for-loop ...erbie/alt-testing/src/points.rkt:231:9 ??? [125] 100.0% --------------------------------------------------------------------------- matcher [107] 100.0% [114] 324(0.2%) 0(0.0%) for-loop ...lt-testing/src/core/matcher.rkt:183:21 matcher [107] 100.0% --------------------------------------------------------------------------- jloop [8] 4.5% loop [201] 7.2% for-loop [110] 18.1% loop [169] 70.2% [115] 24184(15.7%) 370(0.2%) ??? ...s/herbie/alt-testing/src/programs.rkt:156:4 ??? [124] 46.7% ??? [177] 26.2% loop [169] 16.8% ??? [125] 8.7% --------------------------------------------------------------------------- ??? [108] 100.0% [116] 11552(7.5%) 9542(6.2%) for-loop ...alt-testing/src/core/egraph.rkt:227:26 update-en-expr [185] 17.4% --------------------------------------------------------------------------- ??? [109] 100.0% [117] 3944(2.6%) 350(0.2%) ??? ...ects/racket/contract/private/hash.rkt:217:4 ??? [126] 91.1% --------------------------------------------------------------------------- for-loop [146] 10.7% ??? [109] 89.3% [118] 2920(1.9%) 300(0.2%) for-loop ...racket/contract/private/hash.rkt:239:6 ??? [145] 89.7% --------------------------------------------------------------------------- ...sting/src/common.rkt:47:2 [111] 100.0% [119] 1712(1.1%) 1056(0.7%) ??? ...s/racket/contract/private/arr-i.rkt:1268:39 return/no-unsupplied [170] 19.5% ??? [136] 18.8% --------------------------------------------------------------------------- for-loop [159] 11.9% ...sting/src/common.rkt:47:2 [111] 88.1% [120] 1304(0.8%) 0(0.0%) ??? ...ects/racket/contract/private/list.rkt:342:4 ??? [145] 88.1% ??? [162] 11.9% --------------------------------------------------------------------------- eval-prog [112] 100.0% [121] 356(0.2%) 356(0.2%) parse-app .../collects/racket/private/kw.rkt:951:2 --------------------------------------------------------------------------- eval-prog [112] 100.0% [122] 338(0.2%) 0(0.0%) ??? ...collects/racket/private/qq-and-or.rkt:155:9 ??? [127] 100.0% --------------------------------------------------------------------------- for-loop [110] 100.0% [123] 312(0.2%) 312(0.2%) ulp-difference ...e/alt-testing/src/float.rkt:19:0 --------------------------------------------------------------------------- ??? [115] 100.0% [124] 11296(7.3%) 6228(4.0%) ??? ...acket/collects/racket/private/kw.rkt:444:14 bf* [131] 19.1% ??? [137] 13.5% ??? [132] 6.2% ??? [133] 3.2% parse-loop12 [163] 3.0% --------------------------------------------------------------------------- loop [201] 3.6% f172 [144] 3.7% loop [171] 3.7% ??? [139] 9.1% for-loop [113] 10.4% ??? [128] 10.7% for-loop [82] 10.7% loop [169] 13.1% for-loop [110] 13.8% ??? [115] 21.0% [125] 10042(6.5%) 1432(0.9%) ??? ...tract/private/arrow-higher-order.rkt:342:33 ??? [128] 65.9% approximate9 [6] 10.7% hash-ref! [129] 9.1% --------------------------------------------------------------------------- ??? [117] 100.0% [126] 3594(2.3%) 308(0.2%) ??? ...ects/racket/contract/private/list.rkt:169:2 ??? [130] 91.4% --------------------------------------------------------------------------- ??? [122] 100.0% [127] 338(0.2%) 338(0.2%) ??? ...ollects/racket/private/qq-and-or.rkt:164:21 --------------------------------------------------------------------------- for-loop [53] 0.8% get-sigs [99] 1.6% ??? [125] 6.3% ??? [128] 7.1% for-loop [134] 38.7% ??? [59] 45.2% [128] 124230(80.7%) 3726(2.4%) ??? ...llects/racket/private/norm-define.rkt:53:83 iterate-egraph!13 [3] 43.5% for-loop [134] 38.7% ??? [128] 7.1% ??? [135] 2.1% ??? [125] 1.9% loop [4] 1.9% ??? [136] 1.9% return/no-unsupplied [170] 0.8% mk-egraph [143] 0.1% --------------------------------------------------------------------------- for-loop [28] 1.1% for-loop [36] 1.2% ??? [13] 3.5% ??? [141] 4.3% first-nonzero-exp [34] 4.6% for-loop [22] 5.2% ??? [150] 6.6% compile [71] 9.3% localize-error [45] 11.3% ??? [142] 11.7% ??? [125] 12.8% loop [20] 12.8% ??? [139] 14.7% [129] 4796(3.1%) 974(0.6%) hash-ref! ...racket/private/more-scheme.rkt:373:13 ??? [139] 27.6% parse-loop12 [163] 14.8% ??? [142] 14.2% simplify [140] 11.4% ??? [141] 6.8% ??? [7] 5.2% ??? [10] 4.1% f172 [144] 3.6% taylor [158] 2.5% ??? [12] 1.2% --------------------------------------------------------------------------- ??? [126] 100.0% [130] 3286(2.1%) 300(0.2%) ??? ...ects/racket/contract/private/list.rkt:678:5 for-loop [138] 90.9% --------------------------------------------------------------------------- ??? [124] 100.0% [131] 2154(1.4%) 0(0.0%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [137] 100.0% --------------------------------------------------------------------------- ??? [124] 100.0% [132] 696(0.5%) 0(0.0%) ??? ...ie/alt-testing/src/syntax/syntax.rkt:156:17 ??? [136] 100.0% --------------------------------------------------------------------------- ??? [124] 100.0% [133] 358(0.2%) 358(0.2%) ??? ...rivate/unconstrained-domain-arrow.rkt:40:13 --------------------------------------------------------------------------- ??? [128] 100.0% [134] 98746(64.2%) 0(0.0%) for-loop ...lt-testing/src/core/simplify.rkt:66:12 ??? [128] 100.0% --------------------------------------------------------------------------- hash-has-key? [80] 29.7% ??? [128] 70.3% [135] 9980(6.5%) 4680(3.0%) ??? ...ects/racket/contract/private/list.rkt:737:4 for-loop [146] 36.7% ??? [153] 9.8% ??? [145] 3.4% arrow-higher-order:lnp [151] 3.2% --------------------------------------------------------------------------- ??? [119] 8.6% ??? [132] 18.5% ??? [128] 73.0% [136] 3764(2.4%) 1022(0.7%) ??? ...racket/collects/racket/private/kw.rkt:761:9 ??? [179] 72.8% --------------------------------------------------------------------------- ??? [124] 41.4% bf* [131] 58.6% [137] 3678(2.4%) 812(0.5%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfmul [147] 77.9% --------------------------------------------------------------------------- ??? [130] 100.0% [138] 2986(1.9%) 0(0.0%) for-loop ...racket/contract/private/list.rkt:680:9 add-list-context [149] 55.8% get/build-late-neg-projection [148] 44.2% --------------------------------------------------------------------------- hash-ref! [129] 100.0% [139] 2756(1.8%) 0(0.0%) ??? ...erbie/alt-testing/src/core/taylor.rkt:67:15 hash-ref! [129] 51.8% ??? [125] 48.2% --------------------------------------------------------------------------- hash-ref! [129] 100.0% [140] 2386(1.6%) 0(0.0%) simplify ...e/alt-testing/src/core/reduce.rkt:16:0 f172 [144] 71.5% simplify* [166] 28.5% --------------------------------------------------------------------------- hash-ref! [129] 100.0% [141] 1706(1.1%) 0(0.0%) ??? ...erbie/alt-testing/src/core/taylor.rkt:44:15 hash-ref! [129] 78.9% ??? [150] 21.1% --------------------------------------------------------------------------- hash-ref! [129] 100.0% [142] 1008(0.7%) 354(0.2%) ??? ...s/herbie/alt-testing/src/programs.rkt:194:5 hash-ref! [129] 88.3% --------------------------------------------------------------------------- ??? [128] 100.0% [143] 302(0.2%) 0(0.0%) mk-egraph ...alt-testing/src/core/egraph.rkt:131:0 mk-enode-rec! [152] 100.0% --------------------------------------------------------------------------- for-loop [173] 0.6% hash-ref! [129] 1.2% parse-loop12 [163] 2.2% eval-prog [112] 4.8% simplify [140] 4.9% f172 [144] 7.8% map [155] 8.9% split-table [33] 68.8% [144] 7710(5.0%) 336(0.2%) f172 .../collects/racket/match/compiler.rkt:507:40 loop [169] 50.9% option-on-expr [178] 17.9% map [155] 15.1% f172 [144] 7.8% ??? [125] 4.8% taylor [158] 0.7% combine-mterms [14] 0.6% taylor-invert [11] 0.5% --------------------------------------------------------------------------- ??? [135] 8.0% ??? [120] 30.6% for-loop [118] 61.4% [145] 4266(2.8%) 1314(0.9%) ??? ...cts/racket/contract/private/list.rkt:187:10 ??? [154] 53.6% for-loop [159] 15.6% --------------------------------------------------------------------------- ??? [135] 100.0% [146] 3660(2.4%) 1686(1.1%) for-loop ...acket/contract/private/list.rkt:743:12 ??? [153] 36.3% ??? [160] 9.1% for-loop [118] 8.5% --------------------------------------------------------------------------- ??? [137] 100.0% [147] 2866(1.9%) 2866(1.9%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:819:4 --------------------------------------------------------------------------- ??? [157] 21.6% ??? [109] 21.6% for-loop [138] 56.8% [148] 2324(1.5%) 1048(0.7%) get/build-late-neg-projection ...te/guts.rkt:691:0 ??? [156] 48.1% ??? [157] 21.6% --------------------------------------------------------------------------- for-loop [138] 100.0% [149] 1666(1.1%) 1666(1.1%) add-list-context ...ontract/private/list.rkt:752:0 --------------------------------------------------------------------------- ??? [141] 35.6% for-loop [23] 64.4% [150] 1012(0.7%) 0(0.0%) ??? ...rbie/alt-testing/src/core/taylor.rkt:288:19 hash-ref! [129] 100.0% --------------------------------------------------------------------------- ??? [135] 100.0% [151] 324(0.2%) 0(0.0%) arrow-higher-order:lnp ...w-higher-order.rkt:597:7 ??? [161] 100.0% --------------------------------------------------------------------------- mk-egraph [143] 100.0% [152] 302(0.2%) 0(0.0%) mk-enode-rec! ...testing/src/core/egraph.rkt:122:0 mk-enode! [60] 100.0% --------------------------------------------------------------------------- ??? [135] 42.3% for-loop [146] 57.7% [153] 2304(1.5%) 652(0.4%) ??? ...private/unconstrained-domain-arrow.rkt:74:4 make-keyword-procedure [164] 71.7% --------------------------------------------------------------------------- ??? [145] 100.0% [154] 2286(1.5%) 312(0.2%) ??? ...ects/racket/contract/private/list.rkt:686:7 ??? [162] 86.4% --------------------------------------------------------------------------- ??? [13] 19.7% f172 [144] 80.3% [155] 1706(1.1%) 668(0.4%) map ...acket/collects/racket/private/map.rkt:20:13 f172 [144] 50.0% parse-loop12 [163] 9.7% simplify-node [9] 6.6% simplify* [166] 4.2% --------------------------------------------------------------------------- get/build-late-neg-projection [148]100.0% [156] 1276(0.8%) 0(0.0%) ??? ...cts/racket/contract/private/prop.rkt:314:12 build-compound-type-name [165] 100.0% --------------------------------------------------------------------------- get/build-late-neg-projection [148]100.0% [157] 1004(0.7%) 0(0.0%) ??? ...ects/racket/contract/private/hash.rkt:211:2 get/build-late-neg-projection [148]100.0% --------------------------------------------------------------------------- f172 [144] 48.1% hash-ref! [129] 51.9% [158] 690(0.4%) 0(0.0%) taylor ...ie/alt-testing/src/core/taylor.rkt:163:0 debug-print [167] 51.9% curried [202] 48.1% --------------------------------------------------------------------------- ??? [145] 100.0% [159] 666(0.4%) 356(0.2%) for-loop ...acket/contract/private/list.rkt:190:15 ??? [120] 46.5% --------------------------------------------------------------------------- for-loop [146] 100.0% [160] 332(0.2%) 0(0.0%) ??? ...ects/racket/contract/private/hash.rkt:222:6 check-hash/c [168] 100.0% --------------------------------------------------------------------------- arrow-higher-order:lnp [151] 100.0% [161] 324(0.2%) 324(0.2%) ??? ...et/contract/private/arity-checking.rkt:19:2 --------------------------------------------------------------------------- ??? [120] 13.6% ??? [154] 86.4% [162] 2284(1.5%) 1974(1.3%) ??? ...ects/racket/contract/private/guts.rkt:644:8 contract? [174] 13.6% --------------------------------------------------------------------------- append-map [26] 18.8% map [155] 19.5% ??? [124] 19.8% hash-ref! [129] 41.9% [163] 1700(1.1%) 336(0.2%) parse-loop12 ...s/racket/match/compiler.rkt:418:15 loop [171] 22.1% loop [169] 19.8% f172 [144] 19.5% for-loop [173] 18.8% --------------------------------------------------------------------------- ??? [153] 100.0% [164] 1652(1.1%) 1652(1.1%) make-keyword-procedure ...ket/private/kw.rkt:260:4 --------------------------------------------------------------------------- ??? [156] 100.0% [165] 1276(0.8%) 992(0.6%) build-compound-type-name ...private/guts.rkt:448:0 contract-struct-name [175] 22.3% --------------------------------------------------------------------------- map [155] 34.6% simplify [140] 65.4% [166] 1040(0.7%) 320(0.2%) simplify* .../alt-testing/src/core/reduce.rkt:31:0 ??? [172] 34.6% return/no-unsupplied [170] 34.6% --------------------------------------------------------------------------- taylor [158] 100.0% [167] 358(0.2%) 358(0.2%) debug-print ...bie/alt-testing/src/debug.rkt:107:0 --------------------------------------------------------------------------- ??? [160] 100.0% [168] 332(0.2%) 332(0.2%) check-hash/c ...ket/contract/private/hash.rkt:83:0 --------------------------------------------------------------------------- parse-loop12 [163] 0.0% match-e [39] 0.0% make-exacts* [102] 0.1% option-on-expr [178] 0.1% map-enodes [21] 0.4% loop [101] 1.1% ??? [115] 1.4% for-loop [49] 1.7% loop! [176] 7.4% f172 [144] 7.7% loop [169] 80.1% [169] 39316(25.6%) 3140(2.0%) loop ...cket/collects/racket/private/map.rkt:25:19 loop [169] 80.1% option-on-expr [178] 7.7% loop! [176] 7.0% ??? [115] 1.2% ??? [125] 0.9% curried [202] 0.8% for-loop [180] 0.4% ??? [13] 0.0% ??? [177] 0.0% --------------------------------------------------------------------------- ??? [119] 19.4% simplify* [166] 20.9% ??? [128] 59.7% [170] 1724(1.1%) 736(0.5%) return/no-unsupplied ...ct/private/arr-i.rkt:533:0 filter [181] 57.3% --------------------------------------------------------------------------- parse-loop12 [163] 1.2% loop [171] 98.8% [171] 376(0.2%) 0(0.0%) loop ...cket/collects/racket/private/map.rkt:36:19 loop [171] 98.8% ??? [125] 1.2% --------------------------------------------------------------------------- simplify* [166] 100.0% [172] 360(0.2%) 0(0.0%) ??? ...racket/collects/racket/private/kw.rkt:762:9 ??? [179] 100.0% --------------------------------------------------------------------------- parse-loop12 [163] 100.0% [173] 320(0.2%) 0(0.0%) for-loop .../alt-testing/src/core/reduce.rkt:99:13 f172 [144] 100.0% --------------------------------------------------------------------------- ??? [162] 100.0% [174] 310(0.2%) 310(0.2%) contract? ...acket/contract/private/guts.rkt:109:0 --------------------------------------------------------------------------- build-compound-type-name [165] 100.0% [175] 284(0.2%) 284(0.2%) contract-struct-name ...ract/private/prop.rkt:89:0 --------------------------------------------------------------------------- for-loop [65] 2.2% merge-egraph-nodes! [51] 5.0% loop [169] 30.2% for-loop [38] 62.6% [176] 22560(14.7%) 5718(3.7%) loop! ...rbie/alt-testing/src/core/enode.rkt:192:2 loop [169] 37.1% custom-set-union [183] 32.7% set [184] 10.9% update-en-expr [185] 4.4% --------------------------------------------------------------------------- loop [169] 32.1% ??? [115] 67.9% [177] 9350(6.1%) 698(0.5%) ??? ...contract/private/../../private/kw.rkt:761:9 real->bigfloat [182] 92.5% --------------------------------------------------------------------------- f172 [144] 26.0% loop [169] 74.0% [178] 5302(3.4%) 0(0.0%) option-on-expr ...esting/src/core/regimes.rkt:83:0 sort-context-on-expr [186] 60.1% loop [169] 13.7% err-lsts->split-indices [187] 13.2% errors [103] 13.0% --------------------------------------------------------------------------- ??? [172] 11.6% ??? [136] 88.4% [179] 3102(2.0%) 3102(2.0%) ??? ...s/racket/contract/private/arr-i.rkt:1233:27 --------------------------------------------------------------------------- map-enodes [21] 39.4% loop [169] 60.6% [180] 1720(1.1%) 362(0.2%) for-loop ...lt-testing/src/core/simplify.rkt:195:2 setfindf [188] 39.8% composed [189] 20.8% compose [190] 18.4% --------------------------------------------------------------------------- return/no-unsupplied [170] 100.0% [181] 988(0.6%) 988(0.6%) filter ...t/collects/racket/private/list.rkt:256:2 --------------------------------------------------------------------------- ??? [177] 100.0% [182] 8652(5.6%) 7146(4.6%) real->bigfloat .../private/bigfloat/mpfr.rkt:451:0 ??? [194] 17.4% --------------------------------------------------------------------------- adopt-enode! [85] 3.9% loop! [176] 96.1% [183] 8418(5.5%) 2748(1.8%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [191] 46.8% for-loop [193] 20.6% --------------------------------------------------------------------------- loop! [176] 100.0% [184] 5032(3.3%) 5032(3.3%) set ...collects/racket/private/set-types.rkt:981:0 --------------------------------------------------------------------------- for-loop [67] 8.3% loop! [176] 45.4% for-loop [116] 46.2% [185] 4348(2.8%) 4348(2.8%) update-en-expr ...esting/src/core/egraph.rkt:212:0 --------------------------------------------------------------------------- option-on-expr [178] 100.0% [186] 3188(2.1%) 0(0.0%) sort-context-on-expr ...sting/src/points.rkt:115:0 ??? [192] 100.0% --------------------------------------------------------------------------- option-on-expr [178] 100.0% [187] 700(0.5%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:239:0 add-splitpoint [195] 100.0% --------------------------------------------------------------------------- for-loop [180] 100.0% [188] 684(0.4%) 684(0.4%) setfindf ...erbie/alt-testing/src/common.rkt:186:0 --------------------------------------------------------------------------- for-loop [180] 100.0% [189] 358(0.2%) 358(0.2%) composed ...ollects/racket/private/list.rkt:321:16 --------------------------------------------------------------------------- for-loop [180] 100.0% [190] 316(0.2%) 316(0.2%) compose ...collects/racket/private/list.rkt:385:12 --------------------------------------------------------------------------- custom-set-union [183] 100.0% [191] 3940(2.6%) 986(0.6%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [197] 75.0% --------------------------------------------------------------------------- sort-context-on-expr [186] 100.0% [192] 3188(2.1%) 0(0.0%) ??? ...cket/collects/racket/private/sort.rkt:403:3 generic-sort/key [196] 100.0% --------------------------------------------------------------------------- custom-set-union [183] 100.0% [193] 1730(1.1%) 1730(1.1%) for-loop ...cts/racket/private/set-types.rkt:152:2 --------------------------------------------------------------------------- real->bigfloat [182] 100.0% [194] 1506(1.0%) 1506(1.0%) ??? .../share/racket/collects/ffi/unsafe.rkt:861:4 --------------------------------------------------------------------------- err-lsts->split-indices [187] 100.0% [195] 700(0.5%) 0(0.0%) add-splitpoint ...sting/src/core/regimes.rkt:253:2 for-loop [198] 100.0% --------------------------------------------------------------------------- ??? [192] 100.0% [196] 3188(2.1%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:185:2 copying-mergesort [199] 89.8% loop [201] 10.2% --------------------------------------------------------------------------- for-loop [191] 100.0% [197] 2954(1.9%) 2954(1.9%) for-loop ...cts/racket/private/set-types.rkt:178:5 --------------------------------------------------------------------------- add-splitpoint [195] 100.0% [198] 700(0.5%) 0(0.0%) for-loop ...alt-testing/src/core/regimes.rkt:255:4 for-loop [200] 100.0% --------------------------------------------------------------------------- generic-sort/key [196] 49.2% copying-mergesort [199] 50.8% [199] 2864(1.9%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:130:8 copying-mergesort [199] 50.8% loop [201] 39.7% jloop [8] 9.5% --------------------------------------------------------------------------- for-loop [198] 100.0% [200] 700(0.5%) 340(0.2%) for-loop ...alt-testing/src/core/regimes.rkt:259:8 curried [202] 51.4% --------------------------------------------------------------------------- generic-sort/key [196] 15.4% copying-mergesort [199] 84.6% [201] 2100(1.4%) 0(0.0%) loop ...ket/collects/racket/private/sort.rkt:97:12 ??? [115] 82.9% ??? [125] 17.1% --------------------------------------------------------------------------- taylor [158] 19.7% for-loop [200] 21.3% loop [169] 59.0% [202] 1688(1.1%) 1688(1.1%) curried ...cket/collects/racket/function.rkt:71:18 ---------------------------------------------------------------------------