Profiling results ----------------- Total cpu time observed: 1192870ms (out of 1199084ms) Number of samples taken: 3471 (once every 344ms) (Hiding functions with self<1.0% and local<2.0%: 16 of 291 hidden) =========================================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee =========================================================================================== ??? [80] 100.0% [1] 965106(80.9%) 0(0.0%) profile-thunk16 ...t/pkgs/profile-lib/main.rkt:9:0 run [19] 100.0% ------------------------------------------------------------------------------------------- ??? [80] 100.0% [2] 812976(68.2%) 0(0.0%) run-improve50 ...lt-testing/src/mainloop.rkt:234:0 for-loop [20] 92.1% get-final-combination [23] 6.0% loop [94] 1.0% prepare-points [95] 0.5% setup-alt-simplified [31] 0.2% ??? [128] 0.1% ------------------------------------------------------------------------------------------- ??? [181] 100.0% [3] 678084(56.8%) 336(0.0%) iterate-egraph!13 ...g/src/core/simplify.rkt:105:0 one-iter [21] 97.6% map-enodes [24] 2.3% debug-print [228] 0.0% ------------------------------------------------------------------------------------------- ??? [181] 100.0% [4] 123958(10.4%) 0(0.0%) loop ...ie/alt-testing/src/core/simplify.rkt:237:2 pass [22] 100.0% ------------------------------------------------------------------------------------------- hash-ref! [183] 100.0% [5] 54430(4.6%) 2314(0.2%) ??? ...s/herbie/alt-testing/src/programs.rkt:194:5 loop [146] 81.2% hash-ref! [183] 16.7% ------------------------------------------------------------------------------------------- map-enodes [24] 9.1% loop [146] 90.9% [6] 15390(1.3%) 4314(0.4%) for-loop ...lt-testing/src/core/simplify.rkt:195:2 eval-const-expr [26] 37.5% setfindf [27] 25.9% compose [34] 6.4% curried [153] 2.1% ------------------------------------------------------------------------------------------- rewriter [97] 100.0% [7] 10896(0.9%) 320(0.0%) *rules* .../alt-testing/src/syntax/rules.rkt:565:0 for-loop [25] 94.0% ormap [46] 3.1% ------------------------------------------------------------------------------------------- copying-mergesort [186] 100.0% [8] 6490(0.5%) 0(0.0%) jloop ...t/collects/racket/private/sort.rkt:121:23 ??? [164] 89.3% ??? [126] 5.5% ??? [174] 5.1% ------------------------------------------------------------------------------------------- hash-ref! [183] 100.0% [9] 3950(0.3%) 0(0.0%) ??? ...rbie/alt-testing/src/core/taylor.rkt:295:23 for-loop [28] 100.0% ------------------------------------------------------------------------------------------- hash-ref! [183] 100.0% [10] 3608(0.3%) 0(0.0%) ??? ...rbie/alt-testing/src/core/taylor.rkt:392:23 for-loop [29] 100.0% ------------------------------------------------------------------------------------------- matcher [119] 100.0% [11] 2000(0.2%) 326(0.0%) for-loop ...alt-testing/src/core/matcher.rkt:159:6 pattern-match [33] 50.7% foldl [152] 17.4% pattern-substitute [35] 15.6% ------------------------------------------------------------------------------------------- hash-ref! [183] 100.0% [12] 1298(0.1%) 0(0.0%) ??? ...rbie/alt-testing/src/core/taylor.rkt:483:23 for-loop [32] 100.0% ------------------------------------------------------------------------------------------- f137 [116] 100.0% [13] 682(0.1%) 0(0.0%) loop ...erbie/alt-testing/src/core/reduce.rkt:18:2 expression->type [102] 100.0% ------------------------------------------------------------------------------------------- f137 [116] 100.0% [14] 630(0.1%) 0(0.0%) taylor-sqrt ...t-testing/src/core/taylor.rkt:346:0 simplify [221] 100.0% ------------------------------------------------------------------------------------------- append-map [252] 100.0% [15] 326(0.0%) 0(0.0%) free-variables ...t-testing/src/programs.rkt:102:0 variable? [122] 100.0% ------------------------------------------------------------------------------------------- ??? [181] 100.0% [16] 322(0.0%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:346:33 pattern-substitute [35] 100.0% ------------------------------------------------------------------------------------------- parse-loop12 [258] 100.0% [17] 318(0.0%) 0(0.0%) for-loop .../alt-testing/src/core/reduce.rkt:99:13 make-multiplication-node [30] 100.0% ------------------------------------------------------------------------------------------- f137 [116] 100.0% [18] 310(0.0%) 0(0.0%) combine-mterms ...esting/src/core/reduce.rkt:191:0 for-loop [36] 100.0% ------------------------------------------------------------------------------------------- profile-thunk16 [1] 100.0% [19] 965468(80.9%) 0(0.0%) run ...share/racket/pkgs/profile-lib/main.rkt:39:2 ??? [80] 100.0% ------------------------------------------------------------------------------------------- run-improve50 [2] 100.0% [20] 748898(62.8%) 0(0.0%) for-loop ...ie/alt-testing/src/mainloop.rkt:249:10 run-iter! [37] 100.0% ------------------------------------------------------------------------------------------- iterate-egraph!13 [3] 100.0% [21] 661704(55.5%) 5996(0.5%) one-iter ...lt-testing/src/core/simplify.rkt:116:0 for-loop [38] 78.6% for-loop [39] 20.3% ------------------------------------------------------------------------------------------- loop [4] 100.0% [22] 123958(10.4%) 998(0.1%) pass ...ie/alt-testing/src/core/simplify.rkt:227:2 for-loop [40] 99.2% ------------------------------------------------------------------------------------------- run-improve50 [2] 100.0% [23] 49002(4.1%) 0(0.0%) get-final-combination ...ng/src/mainloop.rkt:264:0 split-table [41] 96.7% extract-alt [48] 3.3% ------------------------------------------------------------------------------------------- iterate-egraph!13 [3] 100.0% [24] 15720(1.3%) 330(0.0%) map-enodes ...lt-testing/src/core/egraph.rkt:140:0 loop [146] 89.0% for-loop [6] 8.9% ------------------------------------------------------------------------------------------- *simplify-rules* [211] 3.0% merge-egraph-nodes! [69] 13.9% *rules* [7] 83.1% [25] 12326(1.0%) 5316(0.4%) for-loop ...herbie/alt-testing/src/common.rkt:99:9 loop [43] 24.1% flag-set? [62] 16.7% ormap [46] 13.4% curried [153] 2.7% ------------------------------------------------------------------------------------------- for-loop [6] 100.0% [26] 5778(0.5%) 0(0.0%) eval-const-expr ...-testing/src/programs.rkt:168:0 f137 [116] 88.0% ??? [50] 6.2% keyword-procedure-extract/method [51] 5.8% ------------------------------------------------------------------------------------------- for-loop [6] 100.0% [27] 3992(0.3%) 1986(0.2%) setfindf ...erbie/alt-testing/src/common.rkt:186:0 for-loop [47] 42.1% ??? [128] 8.2% ------------------------------------------------------------------------------------------- ??? [9] 100.0% [28] 3950(0.3%) 0(0.0%) for-loop ...alt-testing/src/core/taylor.rkt:298:27 hash-ref! [183] 100.0% ------------------------------------------------------------------------------------------- ??? [10] 100.0% [29] 3608(0.3%) 0(0.0%) for-loop ...alt-testing/src/core/taylor.rkt:396:33 for-loop [42] 100.0% ------------------------------------------------------------------------------------------- for-loop [17] 11.0% simplify [221] 11.0% parse-loop12 [258] 78.0% [30] 2904(0.2%) 0(0.0%) make-multiplication-node .../core/reduce.rkt:230:0 make-multiplication-subnode [44] 100.0% ------------------------------------------------------------------------------------------- run-improve50 [2] 100.0% [31] 2028(0.2%) 0(0.0%) setup-alt-simplified ...-testing/src/glue.rkt:49:0 simplify-alt [45] 100.0% ------------------------------------------------------------------------------------------- ??? [12] 100.0% [32] 1298(0.1%) 0(0.0%) for-loop ...alt-testing/src/core/taylor.rkt:487:35 parse-loop12 [258] 100.0% ------------------------------------------------------------------------------------------- for-loop [49] 33.4% for-loop [11] 66.6% [33] 1014(0.1%) 332(0.0%) pattern-match ...testing/src/core/matcher.rkt:48:0 for-loop [49] 66.6% ??? [128] 17.1% ------------------------------------------------------------------------------------------- for-loop [6] 100.0% [34] 982(0.1%) 982(0.1%) compose ...collects/racket/private/list.rkt:385:12 ------------------------------------------------------------------------------------------- for-loop [11] 24.6% ??? [16] 25.4% pattern-substitute [35] 50.0% [35] 634(0.1%) 312(0.0%) pattern-substitute ...ng/src/core/matcher.rkt:73:0 pattern-substitute [35] 50.0% variable? [122] 25.4% ------------------------------------------------------------------------------------------- combine-mterms [18] 100.0% [36] 310(0.0%) 0(0.0%) for-loop .../alt-testing/src/core/reduce.rkt:195:5 hash-ref! [183] 100.0% ------------------------------------------------------------------------------------------- for-loop [20] 100.0% [37] 748898(62.8%) 0(0.0%) run-iter! ...ie/alt-testing/src/mainloop.rkt:215:0 simplify! [52] 85.5% finalize-iter! [56] 8.3% gen-rewrites! [58] 2.5% choose-best-alt! [59] 1.8% gen-series! [60] 1.3% localize-error [63] 0.5% ------------------------------------------------------------------------------------------- one-iter [21] 100.0% [38] 519878(43.6%) 3672(0.3%) for-loop ...lt-testing/src/core/simplify.rkt:166:2 for-loop [53] 87.4% match-e [54] 9.8% update-leader! [83] 1.9% reduce-to-single! [65] 0.1% ------------------------------------------------------------------------------------------- for-loop [39] 48.5% one-iter [21] 51.5% [39] 134456(11.3%) 26322(2.2%) for-loop ...t-testing/src/core/simplify.rkt:126:12 for-loop [39] 48.5% match-e [54] 40.2% ------------------------------------------------------------------------------------------- pass [22] 100.0% [40] 122960(10.3%) 320(0.0%) for-loop ...t-testing/src/core/simplify.rkt:230:29 argmin [55] 73.6% loop [57] 18.4% for-loop [61] 6.3% make-sequence [130] 1.1% ------------------------------------------------------------------------------------------- get-final-combination [23] 100.0% [41] 47368(4.0%) 0(0.0%) split-table ...rbie/alt-testing/src/glue.rkt:162:0 f137 [116] 100.0% ------------------------------------------------------------------------------------------- for-loop [29] 100.0% [42] 3608(0.3%) 0(0.0%) for-loop ...alt-testing/src/core/taylor.rkt:398:39 hash-ref! [183] 100.0% ------------------------------------------------------------------------------------------- for-loop [25] 100.0% [43] 2974(0.2%) 610(0.1%) loop ...ket/collects/racket/private/map.rkt:112:23 flag-set? [62] 79.5% ------------------------------------------------------------------------------------------- make-multiplication-node [30] 100.0% [44] 2904(0.2%) 0(0.0%) make-multiplication-subnode ...re/reduce.rkt:240:0 for-loop [64] 88.8% group-by68 [67] 11.2% ------------------------------------------------------------------------------------------- setup-alt-simplified [31] 100.0% [45] 2028(0.2%) 0(0.0%) simplify-alt ...rbie/alt-testing/src/glue.rkt:76:0 ??? [181] 100.0% ------------------------------------------------------------------------------------------- *rules* [7] 16.8% for-loop [25] 83.2% [46] 1986(0.2%) 648(0.1%) ormap ...et/collects/racket/private/map.rkt:105:13 flag-set? [62] 50.8% curried [153] 16.6% ------------------------------------------------------------------------------------------- setfindf [27] 100.0% [47] 1680(0.1%) 1680(0.1%) for-loop ...erbie/alt-testing/src/common.rkt:187:2 ------------------------------------------------------------------------------------------- get-final-combination [23] 100.0% [48] 1634(0.1%) 0(0.0%) extract-alt ...erbie/alt-testing/src/glue.rkt:55:0 loop [206] 80.2% argmins [208] 19.8% ------------------------------------------------------------------------------------------- pattern-match [33] 100.0% [49] 1014(0.1%) 336(0.0%) for-loop .../alt-testing/src/core/matcher.rkt:66:9 pattern-match [33] 66.9% ------------------------------------------------------------------------------------------- eval-const-expr [26] 100.0% [50] 360(0.0%) 0(0.0%) ??? ...cket/collects/racket/private/kw.rkt:1633:36 unpack245 [66] 100.0% ------------------------------------------------------------------------------------------- eval-const-expr [26] 100.0% [51] 336(0.0%) 336(0.0%) keyword-procedure-extract/method .../kw.rkt:1325:2 ------------------------------------------------------------------------------------------- run-iter! [37] 100.0% [52] 640304(53.7%) 0(0.0%) simplify! ...ie/alt-testing/src/mainloop.rkt:155:0 for-loop [68] 100.0% ------------------------------------------------------------------------------------------- for-loop [38] 100.0% [53] 454522(38.1%) 3104(0.3%) for-loop ...t-testing/src/core/simplify.rkt:148:10 mk-enode! [81] 31.1% merge-egraph-nodes! [69] 23.1% substitute-e [71] 21.6% loop! [149] 18.7% list-member? [199] 4.7% ------------------------------------------------------------------------------------------- for-loop [38] 19.9% for-loop [82] 23.5% for-loop [39] 56.5% [54] 159314(13.4%) 58942(4.9%) match-e ...ie/alt-testing/src/core/ematch.rkt:46:0 for-loop [72] 45.5% for-loop [82] 9.5% ??? [128] 8.0% variable? [122] 3.4% loop [146] 1.3% list-cartesian-product [88] 0.7% custom-in-set [142] 0.5% curry* [92] 0.2% filter [234] 0.1% ------------------------------------------------------------------------------------------- for-loop [40] 100.0% [55] 90512(7.6%) 360(0.0%) argmin ...re/racket/collects/racket/list.rkt:743:0 for-loop [70] 86.7% expression-cost [74] 12.9% ------------------------------------------------------------------------------------------- run-iter! [37] 100.0% [56] 62136(5.2%) 0(0.0%) finalize-iter! ...t-testing/src/mainloop.rkt:169:0 ??? [128] 100.0% ------------------------------------------------------------------------------------------- for-loop [40] 100.0% [57] 22646(1.9%) 0(0.0%) loop ...hare/racket/collects/racket/list.rkt:729:4 for-loop [70] 92.9% expression-cost [74] 7.1% ------------------------------------------------------------------------------------------- run-iter! [37] 100.0% [58] 18914(1.6%) 0(0.0%) gen-rewrites! ...lt-testing/src/mainloop.rkt:142:0 for-loop [73] 100.0% ------------------------------------------------------------------------------------------- run-iter! [37] 100.0% [59] 13646(1.1%) 0(0.0%) choose-best-alt! ...testing/src/mainloop.rkt:115:0 ??? [128] 100.0% ------------------------------------------------------------------------------------------- run-iter! [37] 100.0% [60] 10084(0.8%) 0(0.0%) gen-series! .../alt-testing/src/mainloop.rkt:129:0 for-loop [75] 100.0% ------------------------------------------------------------------------------------------- for-loop [40] 100.0% [61] 7772(0.7%) 7772(0.7%) for-loop ...t-testing/src/core/simplify.rkt:217:13 ------------------------------------------------------------------------------------------- ormap [46] 18.6% for-loop [25] 37.9% loop [43] 43.6% [62] 5428(0.5%) 1378(0.1%) flag-set? ...erbie/alt-testing/src/config.rkt:34:0 return/no-unsupplied [220] 50.2% ??? [270] 24.4% ------------------------------------------------------------------------------------------- run-iter! [37] 100.0% [63] 3814(0.3%) 0(0.0%) localize-error ...sting/src/core/localize.rkt:47:0 hash-ref! [183] 81.6% ??? [166] 9.5% for-loop [77] 8.9% ------------------------------------------------------------------------------------------- make-multiplication-subnode [44] 100.0% [64] 2580(0.2%) 0(0.0%) for-loop .../alt-testing/src/core/reduce.rkt:242:3 mterm->expr [91] 87.7% make-multiplication-subsubsubnode [79] 12.3% ------------------------------------------------------------------------------------------- for-loop [38] 100.0% [65] 706(0.1%) 370(0.0%) reduce-to-single! ...ing/src/core/egraph.rkt:325:0 for-loop [78] 47.6% ------------------------------------------------------------------------------------------- ??? [50] 100.0% [66] 360(0.0%) 0(0.0%) unpack245 ...private/arrow-higher-order.rkt:354:44 maybe-cons-kwd [76] 100.0% ------------------------------------------------------------------------------------------- make-multiplication-subnode [44] 100.0% [67] 324(0.0%) 324(0.0%) group-by68 ...acket/collects/racket/list.rkt:749:0 ------------------------------------------------------------------------------------------- simplify! [52] 100.0% [68] 640304(53.7%) 0(0.0%) for-loop ...bie/alt-testing/src/mainloop.rkt:159:6 ??? [80] 100.0% ------------------------------------------------------------------------------------------- for-loop [87] 4.4% merge-egraph-nodes! [69] 5.6% for-loop [53] 89.9% [69] 105156(8.8%) 2370(0.2%) merge-egraph-nodes! ...g/src/core/egraph.rkt:153:0 update-leader! [83] 52.6% for-loop [85] 15.1% loop! [149] 9.9% for-loop [87] 7.1% merge-egraph-nodes! [69] 5.6% enode-merge! [90] 5.2% for-loop [25] 1.6% make-sequence [130] 0.7% ------------------------------------------------------------------------------------------- loop [57] 21.2% argmin [55] 78.8% [70] 99510(8.3%) 2722(0.2%) for-loop ...bie/alt-testing/src/programs.rkt:210:2 ??? [181] 70.6% ...sting/src/common.rkt:47:2 [184] 23.3% ??? [182] 3.4% ------------------------------------------------------------------------------------------- substitute-e [71] 5.0% for-loop [53] 95.0% [71] 98400(8.2%) 1388(0.1%) substitute-e ...t-testing/src/core/ematch.rkt:71:0 mk-enode! [81] 90.7% substitute-e [71] 5.0% variable? [122] 1.8% ??? [128] 1.4% ------------------------------------------------------------------------------------------- match-e [54] 100.0% [72] 93124(7.8%) 30182(2.5%) for-loop .../alt-testing/src/core/ematch.rkt:59:11 for-loop [82] 54.3% list-cartesian-product [88] 9.4% loop [146] 4.5% curry* [92] 1.4% curried [153] 0.7% foldl [152] 0.5% filter [234] 0.2% ------------------------------------------------------------------------------------------- gen-rewrites! [58] 100.0% [73] 18914(1.6%) 0(0.0%) for-loop ...ie/alt-testing/src/mainloop.rkt:147:11 ??? [84] 100.0% ------------------------------------------------------------------------------------------- loop [57] 12.0% argmin [55] 88.0% [74] 13288(1.1%) 354(0.0%) expression-cost ...-testing/src/programs.rkt:209:0 compile [86] 97.3% ------------------------------------------------------------------------------------------- gen-series! [60] 100.0% [75] 10084(0.8%) 0(0.0%) for-loop ...bie/alt-testing/src/mainloop.rkt:135:7 taylor-alt [89] 100.0% ------------------------------------------------------------------------------------------- unpack245 [66] 100.0% [76] 360(0.0%) 0(0.0%) maybe-cons-kwd ...ate/arrow-higher-order.rkt:498:0 successfully-got-the-right-kind-of-function [238]100.0% ------------------------------------------------------------------------------------------- localize-error [63] 100.0% [77] 338(0.0%) 338(0.0%) for-loop ...lt-testing/src/core/localize.rkt:61:10 ------------------------------------------------------------------------------------------- reduce-to-single! [65] 100.0% [78] 336(0.0%) 336(0.0%) for-loop .../alt-testing/src/core/egraph.rkt:326:8 ------------------------------------------------------------------------------------------- for-loop [64] 100.0% [79] 318(0.0%) 0(0.0%) make-multiplication-subsubsubnode ...uce.rkt:262:0 mterm->expr [91] 100.0% ------------------------------------------------------------------------------------------- for-loop [68] 18.9% run [19] 33.3% [80] 1129958(94.7%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 33.3% ??? [181] 32.7% run-improve50 [2] 26.9% loop [94] 4.1% prepare-points [95] 3.1% ------------------------------------------------------------------------------------------- mk-enode-rec! [225] 1.4% substitute-e [71] 38.1% for-loop [53] 60.4% [81] 234098(19.6%) 16622(1.4%) mk-enode! ...alt-testing/src/core/egraph.rkt:102:0 new-enode [93] 90.9% hash-has-key? [135] 1.9% ------------------------------------------------------------------------------------------- match-e [54] 32.0% for-loop [72] 68.0% [82] 78098(6.5%) 6398(0.5%) for-loop .../alt-testing/src/core/ematch.rkt:65:37 match-e [54] 87.3% ??? [99] 5.5% ------------------------------------------------------------------------------------------- for-loop [38] 13.7% merge-egraph-nodes! [69] 86.3% [83] 71332(6.0%) 7658(0.6%) update-leader! ...esting/src/core/egraph.rkt:218:0 for-loop [96] 85.5% custom-set-union! [101] 1.9% update-en-expr [158] 1.0% hash-ref! [183] 0.5% make-sequence [130] 0.4% ------------------------------------------------------------------------------------------- for-loop [73] 100.0% [84] 18914(1.6%) 0(0.0%) ??? ...herbie/alt-testing/src/alternative.rkt:88:0 rewriter [97] 98.3% loop [146] 1.7% ------------------------------------------------------------------------------------------- merge-egraph-nodes! [69] 100.0% [85] 16942(1.4%) 13650(1.1%) for-loop .../alt-testing/src/core/egraph.rkt:233:6 update-en-expr [158] 19.4% ------------------------------------------------------------------------------------------- expression-cost [74] 100.0% [86] 12934(1.1%) 358(0.0%) compile ...rbie/alt-testing/src/programs.rkt:186:0 hash-ref! [183] 97.2% ------------------------------------------------------------------------------------------- merge-egraph-nodes! [69] 100.0% [87] 12722(1.1%) 0(0.0%) for-loop ...alt-testing/src/core/egraph.rkt:201:10 merge-egraph-nodes! [69] 78.4% loop! [149] 21.6% ------------------------------------------------------------------------------------------- match-e [54] 10.1% list-cartesian-product [88] 28.0% for-loop [72] 62.0% [88] 11350(1.0%) 10336(0.9%) list-cartesian-product ...src/core/ematch.rkt:20:0 list-cartesian-product [88] 28.0% for-loop [104] 7.4% ------------------------------------------------------------------------------------------- for-loop [75] 100.0% [89] 10084(0.8%) 0(0.0%) taylor-alt ...erbie/alt-testing/src/glue.rkt:134:0 for-loop [98] 100.0% ------------------------------------------------------------------------------------------- merge-egraph-nodes! [69] 100.0% [90] 5514(0.5%) 310(0.0%) enode-merge! ...t-testing/src/core/enode.rkt:129:0 adopt-enode! [100] 75.2% custom-set-intersect! [103] 19.2% ------------------------------------------------------------------------------------------- make-multiplication-subsubsubnode [79] 12.3% for-loop [64] 87.7% [91] 2580(0.2%) 0(0.0%) mterm->expr ...t-testing/src/core/reduce.rkt:270:0 f137 [116] 75.8% expression->type [102] 24.2% ------------------------------------------------------------------------------------------- match-e [54] 16.8% for-loop [72] 83.2% [92] 1992(0.2%) 1328(0.1%) curry* ...racket/collects/racket/function.rkt:44:2 procedure-arity [105] 33.3% ------------------------------------------------------------------------------------------- mk-enode! [81] 100.0% [93] 212804(17.8%) 690(0.1%) new-enode ...e/alt-testing/src/core/enode.rkt:97:0 type-of-enode-expr [106] 98.8% set [157] 0.8% ------------------------------------------------------------------------------------------- run-improve50 [2] 8.2% ??? [80] 91.8% [94] 99984(8.4%) 0(0.0%) loop ...es/herbie/alt-testing/src/points.rkt:238:2 loop [107] 49.4% make-exacts* [115] 30.4% loop [117] 19.8% for-loop [113] 0.4% ------------------------------------------------------------------------------------------- run-improve50 [2] 5.7% ??? [80] 94.3% [95] 73170(6.1%) 0(0.0%) prepare-points ...alt-testing/src/points.rkt:214:0 loop [107] 38.3% loop [117] 31.8% make-exacts* [115] 29.9% ------------------------------------------------------------------------------------------- update-leader! [83] 100.0% [96] 60976(5.1%) 970(0.1%) for-loop .../alt-testing/src/core/egraph.rkt:223:6 for-loop [108] 97.3% update-en-expr [158] 1.1% ------------------------------------------------------------------------------------------- ??? [84] 18.4% matcher [119] 81.6% [97] 18592(1.6%) 3968(0.3%) rewriter ...alt-testing/src/core/matcher.rkt:131:2 for-loop [109] 85.6% *rules* [7] 10.7% ------------------------------------------------------------------------------------------- taylor-alt [89] 100.0% [98] 10084(0.8%) 0(0.0%) for-loop .../herbie/alt-testing/src/glue.rkt:139:6 ??? [174] 100.0% ------------------------------------------------------------------------------------------- for-loop [82] 100.0% [99] 4330(0.4%) 1300(0.1%) ??? ...herbie/alt-testing/src/core/ematch.rkt:50:5 for-loop [110] 70.0% ------------------------------------------------------------------------------------------- enode-merge! [90] 100.0% [100] 4144(0.3%) 694(0.1%) adopt-enode! ...t-testing/src/core/enode.rkt:105:0 custom-set-union [156] 83.3% ------------------------------------------------------------------------------------------- update-leader! [83] 100.0% [101] 1358(0.1%) 688(0.1%) custom-set-union! ...t/private/set-types.rkt:245:0 for-loop [112] 49.3% ------------------------------------------------------------------------------------------- for-loop [111] 21.3% loop [13] 31.0% mterm->expr [91] 47.8% [102] 1306(0.1%) 0(0.0%) expression->type ...esting/src/type-check.rkt:45:0 for-loop [111] 100.0% ------------------------------------------------------------------------------------------- enode-merge! [90] 100.0% [103] 1060(0.1%) 1060(0.1%) custom-set-intersect! ...ivate/set-types.rkt:269:0 ------------------------------------------------------------------------------------------- list-cartesian-product [88] 100.0% [104] 1014(0.1%) 1014(0.1%) for-loop ...e/alt-testing/src/core/ematch.rkt:24:8 ------------------------------------------------------------------------------------------- curry* [92] 100.0% [105] 664(0.1%) 664(0.1%) procedure-arity ...ket/private/norm-arity.rkt:7:27 ------------------------------------------------------------------------------------------- new-enode [93] 100.0% [106] 210188(17.6%) 2114(0.2%) type-of-enode-expr ...ting/src/core/enode.rkt:68:0 get-sigs [114] 98.8% parse-loop12 [258] 0.2% ------------------------------------------------------------------------------------------- prepare-points [95] 36.2% loop [94] 63.8% [107] 77392(6.5%) 0(0.0%) loop ...es/herbie/alt-testing/src/points.rkt:158:2 make-exacts* [115] 67.4% loop [117] 32.2% debug7 [241] 0.4% ------------------------------------------------------------------------------------------- for-loop [96] 100.0% [108] 59356(5.0%) 334(0.0%) for-loop .../alt-testing/src/core/egraph.rkt:224:8 hash-update! [118] 99.4% ------------------------------------------------------------------------------------------- rewriter [97] 100.0% [109] 18592(1.6%) 328(0.0%) for-loop ...lt-testing/src/core/matcher.rkt:134:10 matcher [119] 99.7% ------------------------------------------------------------------------------------------- ??? [99] 100.0% [110] 3030(0.3%) 2362(0.2%) for-loop ...e/alt-testing/src/core/ematch.rkt:51:7 ??? [128] 22.0% ------------------------------------------------------------------------------------------- expression->type [102] 100.0% [111] 1306(0.1%) 0(0.0%) for-loop ...ie/alt-testing/src/type-check.rkt:52:5 f137 [116] 78.7% expression->type [102] 21.3% ------------------------------------------------------------------------------------------- custom-set-union! [101] 100.0% [112] 670(0.1%) 670(0.1%) for-loop ...cts/racket/private/set-types.rkt:253:4 ------------------------------------------------------------------------------------------- loop [94] 100.0% [113] 362(0.0%) 0(0.0%) for-loop ...rbie/alt-testing/src/points.rkt:255:26 ??? [120] 100.0% ------------------------------------------------------------------------------------------- type-of-enode-expr [106] 100.0% [114] 207744(17.4%) 4050(0.3%) get-sigs ...bie/alt-testing/src/type-check.rkt:5:0 ??? [182] 41.7% ??? [181] 29.3% ??? [128] 15.0% ...sting/src/common.rkt:47:2 [184] 12.1% ------------------------------------------------------------------------------------------- prepare-points [95] 21.0% loop [94] 29.1% loop [107] 49.9% [115] 104506(8.8%) 0(0.0%) make-exacts* ...e/alt-testing/src/points.rkt:138:0 loop [146] 54.5% eval-prog [155] 45.5% ------------------------------------------------------------------------------------------- composed [223] 0.1% loop [146] 0.1% append-map [252] 0.2% simplify-node [240] 0.2% for-loop [145] 0.2% for-loop [111] 0.8% approximate9 [189] 0.8% parse-loop12 [258] 1.1% map [124] 1.5% hash-ref! [183] 1.9% mterm->expr [91] 2.3% simplify [221] 2.5% eval-prog [155] 3.1% eval-const-expr [26] 7.0% f137 [116] 16.4% split-table [41] 61.6% [116] 72232(6.1%) 2042(0.2%) f137 .../collects/racket/match/compiler.rkt:507:40 loop [146] 49.2% f137 [116] 16.4% option-on-expr [151] 12.2% map [124] 6.3% ??? [174] 2.5% ??? [181] 2.5% ??? [125] 2.4% ??? [128] 1.7% ...sting/src/common.rkt:47:2 [184] 1.4% ??? [182] 0.8% append-map [252] 0.7% ??? [126] 0.4% make-keyword-procedure [247] 0.2% taylor-sqrt [14] 0.2% exprs-to-branch-on [127] 0.2% loop [13] 0.2% combine-mterms [18] 0.1% taylor-exp [210] 0.1% composed [223] 0.1% variable? [122] 0.1% ------------------------------------------------------------------------------------------- loop [94] 29.1% prepare-points [95] 34.2% loop [107] 36.6% [117] 67954(5.7%) 0(0.0%) loop ...es/herbie/alt-testing/src/points.rkt:141:4 loop [146] 99.5% ??? [164] 0.5% ------------------------------------------------------------------------------------------- for-loop [108] 100.0% [118] 59022(4.9%) 662(0.1%) hash-update! ...ket/private/more-scheme.rkt:362:13 ??? [121] 98.9% ------------------------------------------------------------------------------------------- for-loop [123] 18.2% matcher [119] 31.5% for-loop [109] 50.3% [119] 18592(1.6%) 694(0.1%) matcher .../alt-testing/src/core/matcher.rkt:167:2 rewriter [97] 48.4% matcher [119] 31.5% for-loop [123] 18.4% for-loop [11] 1.1% ??? [128] 0.2% ------------------------------------------------------------------------------------------- for-loop [113] 100.0% [120] 362(0.0%) 362(0.0%) ??? ...ies/herbie/alt-testing/src/points.rkt:230:7 ------------------------------------------------------------------------------------------- hash-update! [118] 100.0% [121] 58360(4.9%) 656(0.1%) ??? ...rbie/alt-testing/src/core/egraph.rkt:226:24 for-loop [129] 97.1% make-sequence [130] 1.7% ------------------------------------------------------------------------------------------- pattern-substitute [35] 1.7% free-variables [15] 1.7% f137 [116] 1.9% substitute-e [71] 23.1% match-e [54] 71.6% [122] 18758(1.6%) 360(0.0%) variable? ...t-testing/src/syntax/syntax.rkt:665:0 ??? [128] 98.1% ------------------------------------------------------------------------------------------- matcher [119] 100.0% [123] 16964(1.4%) 346(0.0%) for-loop ...lt-testing/src/core/matcher.rkt:183:21 matcher [119] 99.3% ------------------------------------------------------------------------------------------- ??? [131] 11.0% f137 [116] 89.0% [124] 6292(0.5%) 0(0.0%) map ...acket/collects/racket/private/map.rkt:20:13 parse-loop12 [258] 34.9% f137 [116] 25.3% loop [146] 11.1% ??? [174] 11.0% ??? [131] 11.0% taylor-quotient [132] 5.3% simplify-node [240] 1.5% ------------------------------------------------------------------------------------------- f137 [116] 100.0% [125] 2032(0.2%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:336:46 ??? [272] 100.0% ------------------------------------------------------------------------------------------- f137 [116] 45.5% jloop [8] 54.5% [126] 660(0.1%) 660(0.1%) ??? ...tract/private/arrow-higher-order.rkt:145:21 ------------------------------------------------------------------------------------------- f137 [116] 100.0% [127] 332(0.0%) 0(0.0%) exprs-to-branch-on ...ng/src/core/regimes.rkt:42:0 for-loop [133] 100.0% ------------------------------------------------------------------------------------------- setfindf [27] 0.2% ??? [181] 0.2% pattern-match [33] 0.2% matcher [119] 0.2% debug7 [241] 0.4% for-loop [110] 0.4% run-improve50 [2] 0.4% f137 [116] 1.1% substitute-e [71] 2.2% ??? [272] 3.6% choose-best-alt! [59] 8.4% variable? [122] 11.5% match-e [54] 13.2% get-sigs [114] 19.7% finalize-iter! [56] 38.3% [128] 157914(13.2%) 28734(2.4%) ??? ...contract/private/arrow-val-first.rkt:357:18 for-loop [134] 37.4% hash-has-key? [135] 33.5% atab-pick-alt8 [136] 8.4% atab-add-altns [137] 1.3% ??? [272] 1.1% ------------------------------------------------------------------------------------------- ??? [121] 100.0% [129] 56684(4.8%) 48826(4.1%) for-loop ...alt-testing/src/core/egraph.rkt:227:26 update-en-expr [158] 13.9% ------------------------------------------------------------------------------------------- update-leader! [83] 9.4% merge-egraph-nodes! [69] 20.1% ??? [121] 29.9% for-loop [40] 40.6% [130] 3412(0.3%) 2710(0.2%) make-sequence ...ects/racket/private/for.rkt:509:2 ??? [138] 20.6% ------------------------------------------------------------------------------------------- map [124] 5.5% loop [146] 94.5% [131] 3114(0.3%) 0(0.0%) ??? ...ket/collects/racket/private/list.rkt:323:18 hash-ref! [183] 95.9% map [124] 4.1% ------------------------------------------------------------------------------------------- map [124] 100.0% [132] 332(0.0%) 0(0.0%) taylor-quotient ...sting/src/core/taylor.rkt:328:0 simplify [221] 100.0% ------------------------------------------------------------------------------------------- exprs-to-branch-on [127] 100.0% [133] 332(0.0%) 0(0.0%) for-loop ...alt-testing/src/core/regimes.rkt:44:27 all-critical-subexpressions [139] 100.0% ------------------------------------------------------------------------------------------- ??? [128] 100.0% [134] 60836(5.1%) 0(0.0%) for-loop ...lt-testing/src/core/alt-table.rkt:52:2 atab-add-altn [140] 100.0% ------------------------------------------------------------------------------------------- mk-enode! [81] 7.4% ??? [128] 92.6% [135] 59170(5.0%) 16996(1.4%) hash-has-key? ...et/private/more-scheme.rkt:368:13 ??? [194] 68.5% ??? [209] 2.8% ------------------------------------------------------------------------------------------- ??? [128] 100.0% [136] 13646(1.1%) 0(0.0%) atab-pick-alt8 ...ting/src/core/alt-table.rkt:61:0 point-best-alt [141] 62.7% ??? [174] 32.0% for-loop [143] 2.7% for-loop [144] 2.6% ------------------------------------------------------------------------------------------- ??? [128] 100.0% [137] 1984(0.2%) 0(0.0%) atab-add-altns ...ting/src/core/alt-table.rkt:51:0 atab-add-altn [140] 100.0% ------------------------------------------------------------------------------------------- make-sequence [130] 100.0% [138] 702(0.1%) 0(0.0%) ??? ...acket/collects/racket/private/for.rkt:429:7 custom-in-set [142] 100.0% ------------------------------------------------------------------------------------------- for-loop [133] 100.0% [139] 332(0.0%) 0(0.0%) all-critical-subexpressions ...re/regimes.rkt:58:0 for-loop [145] 100.0% ------------------------------------------------------------------------------------------- atab-add-altns [137] 3.2% for-loop [134] 96.8% [140] 62820(5.3%) 0(0.0%) atab-add-altn ...ting/src/core/alt-table.rkt:243:0 best-and-tied-at-points [147] 95.1% override-at-pnts [148] 4.9% ------------------------------------------------------------------------------------------- atab-pick-alt8 [136] 100.0% [141] 8560(0.7%) 0(0.0%) point-best-alt ...ting/src/core/alt-table.rkt:55:0 loop [146] 100.0% ------------------------------------------------------------------------------------------- ??? [138] 34.5% match-e [54] 65.5% [142] 2032(0.2%) 2032(0.2%) custom-in-set ...acket/private/set-types.rkt:577:0 ------------------------------------------------------------------------------------------- atab-pick-alt8 [136] 100.0% [143] 362(0.0%) 362(0.0%) for-loop ...lt-testing/src/core/alt-table.rkt:67:2 ------------------------------------------------------------------------------------------- atab-pick-alt8 [136] 100.0% [144] 356(0.0%) 356(0.0%) for-loop ...lt-testing/src/core/alt-table.rkt:81:2 ------------------------------------------------------------------------------------------- all-critical-subexpressions [139] 100.0% [145] 332(0.0%) 0(0.0%) for-loop .../alt-testing/src/core/regimes.rkt:62:2 f137 [116] 100.0% ------------------------------------------------------------------------------------------- map [124] 0.0% ??? [84] 0.0% make-exacts* [115] 0.4% parse-loop12 [258] 0.6% loop [117] 0.6% map-enodes [24] 0.7% match-e [54] 0.8% for-loop [72] 1.3% point-best-alt [141] 1.9% option-on-expr [151] 2.3% loop! [149] 3.9% f137 [116] 9.2% ??? [5] 14.4% loop [146] 63.8% [146] 306846(25.7%) 8900(0.7%) loop ...cket/collects/racket/private/map.rkt:25:19 loop [146] 63.8% hash-ref! [183] 14.4% option-on-expr [151] 9.2% errors [150] 4.1% loop! [149] 3.7% ??? [164] 1.0% for-loop [6] 0.7% foldl [152] 0.6% ??? [131] 0.4% curried [153] 0.3% parse-loop12 [258] 0.1% f137 [116] 0.0% ??? [177] 0.0% ??? [174] 0.0% ------------------------------------------------------------------------------------------- atab-add-altn [140] 100.0% [147] 59724(5.0%) 358(0.0%) best-and-tied-at-points ...ore/alt-table.rkt:157:0 errors [150] 97.7% ------------------------------------------------------------------------------------------- atab-add-altn [140] 100.0% [148] 3096(0.3%) 0(0.0%) override-at-pnts ...g/src/core/alt-table.rkt:180:0 errors [150] 100.0% ------------------------------------------------------------------------------------------- for-loop [87] 1.7% merge-egraph-nodes! [69] 9.4% loop [146] 29.0% for-loop [53] 59.9% [149] 101304(8.5%) 20238(1.7%) loop! ...rbie/alt-testing/src/core/enode.rkt:192:2 custom-set-union [156] 39.6% loop [146] 32.3% set [157] 11.4% update-en-expr [158] 5.6% ------------------------------------------------------------------------------------------- override-at-pnts [148] 3.2% option-on-expr [151] 5.8% composed [223] 6.5% loop [146] 24.3% best-and-tied-at-points [147] 60.2% [150] 97012(8.1%) 316(0.0%) errors .../herbie/alt-testing/src/points.rkt:271:0 for-loop [154] 82.9% eval-prog [155] 16.7% ------------------------------------------------------------------------------------------- f137 [116] 19.8% loop [146] 80.2% [151] 47036(3.9%) 0(0.0%) option-on-expr ...esting/src/core/regimes.rkt:83:0 sort-context-on-expr [159] 43.9% loop [146] 38.4% errors [150] 12.0% pick-errors [160] 4.4% err-lsts->split-indices [162] 1.3% ------------------------------------------------------------------------------------------- for-loop [11] 10.4% for-loop [72] 19.2% loop [146] 70.3% [152] 3338(0.3%) 2044(0.2%) foldl ...et/collects/racket/private/list.rkt:229:4 merge2 [161] 29.1% ??? [163] 9.6% ------------------------------------------------------------------------------------------- for-loop [6] 12.2% for-loop [25] 12.3% ormap [46] 12.4% for-loop [72] 26.0% loop [146] 37.2% [153] 2666(0.2%) 2666(0.2%) curried ...cket/collects/racket/function.rkt:71:18 ------------------------------------------------------------------------------------------- errors [150] 100.0% [154] 80458(6.7%) 1588(0.1%) for-loop ...erbie/alt-testing/src/points.rkt:274:4 ??? [164] 95.5% ??? [174] 1.3% ulp-difference [269] 0.8% ------------------------------------------------------------------------------------------- sort-context-on-expr [159] 0.6% point->alt [172] 0.6% errors [150] 25.2% make-exacts* [115] 73.7% [155] 64538(5.4%) 3340(0.3%) eval-prog ...ie/alt-testing/src/programs.rkt:150:0 hash-ref! [183] 70.5% f137 [116] 21.2% go [169] 1.6% ??? [170] 1.6% ------------------------------------------------------------------------------------------- adopt-enode! [100] 7.4% loop! [149] 92.6% [156] 46438(3.9%) 14482(1.2%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [165] 58.5% for-loop [167] 10.3% ------------------------------------------------------------------------------------------- new-enode [93] 6.5% loop! [149] 93.5% [157] 24770(2.1%) 24770(2.1%) set ...collects/racket/private/set-types.rkt:981:0 ------------------------------------------------------------------------------------------- for-loop [96] 2.7% update-leader! [83] 2.8% for-loop [85] 13.7% for-loop [129] 32.6% loop! [149] 48.2% [158] 24080(2.0%) 24080(2.0%) update-en-expr ...esting/src/core/egraph.rkt:212:0 ------------------------------------------------------------------------------------------- option-on-expr [151] 100.0% [159] 20636(1.7%) 0(0.0%) sort-context-on-expr ...sting/src/points.rkt:115:0 ??? [166] 98.3% eval-prog [155] 1.7% ------------------------------------------------------------------------------------------- option-on-expr [151] 100.0% [160] 2068(0.2%) 0(0.0%) pick-errors ...-testing/src/core/regimes.rkt:201:0 for-loop [168] 82.7% point->alt [172] 17.3% ------------------------------------------------------------------------------------------- foldl [152] 100.0% [161] 972(0.1%) 972(0.1%) merge2 ...bie/alt-testing/src/core/ematch.rkt:31:0 ------------------------------------------------------------------------------------------- option-on-expr [151] 100.0% [162] 634(0.1%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:239:0 add-splitpoint [171] 100.0% ------------------------------------------------------------------------------------------- foldl [152] 100.0% [163] 322(0.0%) 0(0.0%) ??? ...herbie/alt-testing/src/alternative.rkt:66:9 ??? [174] 100.0% ------------------------------------------------------------------------------------------- loop [117] 0.1% ??? [177] 1.2% jloop [8] 2.6% loop [202] 6.2% for-loop [154] 34.3% loop [146] 55.6% [164] 223870(18.8%) 1338(0.1%) ??? ...s/herbie/alt-testing/src/programs.rkt:156:4 ??? [173] 96.7% ??? [191] 1.8% ??? [174] 0.9% ------------------------------------------------------------------------------------------- custom-set-union [156] 100.0% [165] 27182(2.3%) 7556(0.6%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [175] 72.2% ------------------------------------------------------------------------------------------- localize-error [63] 1.8% sort-context-on-expr [159] 98.2% [166] 20642(1.7%) 0(0.0%) ??? ...cket/collects/racket/private/sort.rkt:403:3 generic-sort/key [176] 85.4% loop [202] 14.6% ------------------------------------------------------------------------------------------- custom-set-union [156] 100.0% [167] 4774(0.4%) 4774(0.4%) for-loop ...cts/racket/private/set-types.rkt:152:2 ------------------------------------------------------------------------------------------- pick-errors [160] 100.0% [168] 1710(0.1%) 0(0.0%) for-loop ...alt-testing/src/core/regimes.rkt:203:2 ??? [177] 100.0% ------------------------------------------------------------------------------------------- eval-prog [155] 100.0% [169] 1012(0.1%) 0(0.0%) go .../collects/racket/private/qq-and-or.rkt:50:20 loop [178] 100.0% ------------------------------------------------------------------------------------------- eval-prog [155] 100.0% [170] 1006(0.1%) 0(0.0%) ??? ...collects/racket/private/qq-and-or.rkt:155:9 ??? [179] 100.0% ------------------------------------------------------------------------------------------- err-lsts->split-indices [162] 100.0% [171] 634(0.1%) 0(0.0%) add-splitpoint ...sting/src/core/regimes.rkt:253:2 for-loop [180] 100.0% ------------------------------------------------------------------------------------------- pick-errors [160] 100.0% [172] 358(0.0%) 0(0.0%) point->alt ...t-testing/src/core/regimes.rkt:188:0 eval-prog [155] 100.0% ------------------------------------------------------------------------------------------- ??? [164] 100.0% [173] 216434(18.1%) 101076(8.5%) ??? ...acket/collects/racket/private/kw.rkt:444:14 ??? [195] 31.1% ??? [185] 7.3% bf* [187] 6.4% ??? [188] 5.9% parse-loop12 [258] 1.0% ??? [248] 0.3% ------------------------------------------------------------------------------------------- ??? [163] 1.0% jloop [8] 1.0% map [124] 2.1% for-loop [154] 3.1% ??? [164] 5.7% loop [146] 6.6% loop [203] 6.9% atab-pick-alt8 [136] 11.5% for-loop [98] 11.7% ??? [181] 12.7% f137 [116] 36.8% [174] 33284(2.8%) 2036(0.2%) ??? ...tract/private/arrow-higher-order.rkt:342:33 ??? [181] 38.2% ??? [272] 15.5% best-alt [190] 12.6% approximate9 [189] 10.3% hash-ref! [183] 6.9% ...sting/src/common.rkt:47:2 [184] 5.0% ??? [182] 2.1% simplify [221] 1.4% ??? [215] 1.0% ??? [191] 1.0% ------------------------------------------------------------------------------------------- for-loop [165] 100.0% [175] 19626(1.6%) 19626(1.6%) for-loop ...cts/racket/private/set-types.rkt:178:5 ------------------------------------------------------------------------------------------- ??? [166] 100.0% [176] 17626(1.5%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:185:2 copying-mergesort [186] 78.9% loop [202] 21.1% ------------------------------------------------------------------------------------------- loop [146] 36.7% for-loop [168] 63.3% [177] 2702(0.2%) 0(0.0%) ??? ...rbie/alt-testing/src/core/regimes.rkt:194:2 ??? [164] 100.0% ------------------------------------------------------------------------------------------- go [169] 4.0% loop [178] 96.0% [178] 1012(0.1%) 1012(0.1%) loop ...llects/racket/private/qq-and-or.rkt:101:61 loop [178] 96.0% ------------------------------------------------------------------------------------------- ??? [170] 100.0% [179] 1006(0.1%) 1006(0.1%) ??? ...ollects/racket/private/qq-and-or.rkt:164:21 ------------------------------------------------------------------------------------------- add-splitpoint [171] 100.0% [180] 634(0.1%) 334(0.0%) for-loop ...alt-testing/src/core/regimes.rkt:255:4 for-loop [192] 47.3% ------------------------------------------------------------------------------------------- f137 [116] 0.1% simplify-alt [45] 0.1% ??? [174] 1.4% get-sigs [114] 2.5% for-loop [70] 2.8% ??? [181] 6.6% for-loop [193] 40.4% ??? [80] 45.6% [181] 825166(69.2%) 37556(3.1%) ??? ...llects/racket/private/norm-define.rkt:53:83 for-loop [193] 40.4% iterate-egraph!13 [3] 39.9% ??? [181] 6.6% loop [4] 6.1% ??? [194] 3.6% ??? [270] 0.4% ??? [174] 0.3% mk-egraph [207] 0.2% return/no-unsupplied [220] 0.2% ??? [215] 0.1% *simplify-rules* [211] 0.0% ??? [128] 0.0% ??? [209] 0.0% ??? [16] 0.0% ------------------------------------------------------------------------------------------- ??? [174] 0.8% f137 [116] 1.1% for-loop [70] 3.6% get-sigs [114] 94.5% [182] 91780(7.7%) 7478(0.6%) ??? ...ts/racket/contract/private/arr-i.rkt:804:10 ??? [198] 47.6% for-loop [196] 36.9% get/build-late-neg-projection [257] 6.3% ??? [237] 1.1% ------------------------------------------------------------------------------------------- for-loop [264] 0.3% for-loop [36] 0.4% update-leader! [83] 0.5% for-loop [42] 1.0% localize-error [63] 1.1% for-loop [28] 1.9% ??? [204] 2.3% ??? [131] 3.4% ??? [174] 4.2% compile [86] 8.6% ??? [5] 9.6% eval-prog [155] 15.8% loop [146] 50.1% [183] 69038(5.8%) 11556(1.0%) hash-ref! ...racket/private/more-scheme.rkt:373:13 ??? [5] 61.4% bigfloat-hash [197] 15.6% simplify [221] 4.6% parse-loop12 [258] 4.0% ??? [204] 2.3% ??? [9] 1.9% ??? [10] 1.0% f137 [116] 0.5% ??? [12] 0.3% ------------------------------------------------------------------------------------------- f137 [116] 2.1% ??? [174] 3.2% for-loop [70] 45.5% get-sigs [114] 49.2% [184] 50936(4.3%) 14722(1.2%) ...sting/src/common.rkt:47:2 ...e/arr-i.rkt:906:19 ??? [200] 36.2% ??? [201] 34.9% ------------------------------------------------------------------------------------------- ??? [173] 100.0% [185] 15712(1.3%) 15712(1.3%) ??? ...rivate/unconstrained-domain-arrow.rkt:40:13 ------------------------------------------------------------------------------------------- generic-sort/key [176] 48.2% copying-mergesort [186] 51.8% [186] 13904(1.2%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:130:8 copying-mergesort [186] 51.8% loop [202] 36.6% jloop [8] 11.7% ------------------------------------------------------------------------------------------- ??? [173] 100.0% [187] 13886(1.2%) 340(0.0%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [195] 97.6% ------------------------------------------------------------------------------------------- ??? [173] 100.0% [188] 12838(1.1%) 7726(0.6%) ??? ...ie/alt-testing/src/syntax/syntax.rkt:156:17 return/no-unsupplied [220] 21.3% ??? [270] 15.9% list-member? [199] 2.6% ------------------------------------------------------------------------------------------- ??? [174] 100.0% [189] 9124(0.8%) 0(0.0%) approximate9 ...t-testing/src/core/taylor.rkt:12:0 loop [203] 75.0% f137 [116] 17.8% taylor-exp [210] 3.9% taylor [213] 3.3% ------------------------------------------------------------------------------------------- ??? [174] 100.0% [190] 4716(0.4%) 0(0.0%) best-alt ...s/herbie/alt-testing/src/glue.rkt:71:0 loop [206] 57.3% argmins [208] 42.7% ------------------------------------------------------------------------------------------- ??? [174] 7.3% ??? [164] 92.7% [191] 4368(0.4%) 0(0.0%) ??? ...contract/private/../../private/kw.rkt:761:9 real->bigfloat [205] 92.7% integer->bigfloat [212] 7.3% ------------------------------------------------------------------------------------------- for-loop [180] 100.0% [192] 300(0.0%) 300(0.0%) for-loop ...alt-testing/src/core/regimes.rkt:259:8 ------------------------------------------------------------------------------------------- ??? [181] 100.0% [193] 696814(58.4%) 0(0.0%) for-loop ...lt-testing/src/core/simplify.rkt:66:12 ??? [181] 100.0% ------------------------------------------------------------------------------------------- hash-has-key? [135] 31.9% ??? [181] 68.1% [194] 126986(10.6%) 51298(4.3%) ??? ...ects/racket/contract/private/list.rkt:737:4 for-loop [214] 46.6% ??? [232] 10.4% successfully-got-the-right-kind-of-function [238] 1.1% arrow-higher-order:lnp [239] 0.8% ??? [215] 0.8% ------------------------------------------------------------------------------------------- bf* [187] 16.7% ??? [173] 83.3% [195] 80920(6.8%) 20706(1.7%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfadd [216] 62.4% bfneg [222] 12.1% ------------------------------------------------------------------------------------------- for-loop [214] 24.7% ??? [182] 75.3% [196] 44990(3.8%) 6954(0.6%) for-loop ...racket/contract/private/hash.rkt:239:6 ??? [215] 83.8% ??? [248] 0.7% ------------------------------------------------------------------------------------------- hash-ref! [183] 100.0% [197] 44882(3.8%) 706(0.1%) bigfloat-hash ...h/private/bigfloat/mpfr.rkt:165:0 bfcanonicalize [218] 83.1% sig+exp->bigfloat [224] 13.1% bigfloat->sig+exp [236] 2.2% ------------------------------------------------------------------------------------------- ??? [182] 100.0% [198] 43676(3.7%) 2034(0.2%) ??? ...ects/racket/contract/private/hash.rkt:217:4 ??? [217] 95.3% ------------------------------------------------------------------------------------------- ??? [188] 1.5% for-loop [53] 98.5% [199] 21834(1.8%) 334(0.0%) list-member? ...llects/racket/private/set.rkt:24:0 loop [219] 84.7% member [226] 13.7% ------------------------------------------------------------------------------------------- ...sting/src/common.rkt:47:2 [184] 100.0% [200] 18428(1.5%) 5754(0.5%) ??? ...s/racket/contract/private/arr-i.rkt:1268:39 ??? [270] 34.8% return/no-unsupplied [220] 19.1% assoc-ref [227] 14.9% ------------------------------------------------------------------------------------------- for-loop [235] 6.7% ??? [215] 17.5% ...sting/src/common.rkt:47:2 [184] 75.9% [201] 17786(1.5%) 3010(0.3%) ??? ...ects/racket/contract/private/list.rkt:342:4 ??? [215] 70.0% ??? [272] 17.6% ??? [237] 2.0% ------------------------------------------------------------------------------------------- ??? [166] 21.3% generic-sort/key [176] 26.3% copying-mergesort [186] 52.4% [202] 14152(1.2%) 0(0.0%) loop ...ket/collects/racket/private/sort.rkt:97:12 ??? [164] 97.4% errors-score [229] 2.6% ------------------------------------------------------------------------------------------- approximate9 [189] 100.0% [203] 6844(0.6%) 0(0.0%) loop ...erbie/alt-testing/src/core/taylor.rkt:86:4 ??? [174] 100.0% ------------------------------------------------------------------------------------------- hash-ref! [183] 100.0% [204] 5546(0.5%) 0(0.0%) ??? ...erbie/alt-testing/src/core/taylor.rkt:44:15 hash-ref! [183] 100.0% ------------------------------------------------------------------------------------------- ??? [191] 100.0% [205] 4048(0.3%) 2710(0.2%) real->bigfloat .../private/bigfloat/mpfr.rkt:451:0 ??? [233] 33.1% ------------------------------------------------------------------------------------------- extract-alt [48] 32.7% best-alt [190] 67.3% [206] 4012(0.3%) 0(0.0%) loop ...es/herbie/alt-testing/src/common.rkt:153:2 composed [223] 100.0% ------------------------------------------------------------------------------------------- ??? [181] 100.0% [207] 3362(0.3%) 0(0.0%) mk-egraph ...alt-testing/src/core/egraph.rkt:131:0 mk-enode-rec! [225] 100.0% ------------------------------------------------------------------------------------------- extract-alt [48] 13.9% best-alt [190] 86.1% [208] 2338(0.2%) 0(0.0%) argmins ...herbie/alt-testing/src/common.rkt:152:0 composed [223] 100.0% ------------------------------------------------------------------------------------------- ??? [181] 16.7% hash-has-key? [135] 83.3% [209] 2002(0.2%) 2002(0.2%) ??? ...ects/racket/contract/private/hash.rkt:245:7 ------------------------------------------------------------------------------------------- f137 [116] 47.8% approximate9 [189] 52.2% [210] 690(0.1%) 0(0.0%) taylor-exp ...lt-testing/src/core/taylor.rkt:386:0 simplify [221] 100.0% ------------------------------------------------------------------------------------------- ??? [181] 100.0% [211] 366(0.0%) 0(0.0%) *simplify-rules* ...ing/src/syntax/rules.rkt:570:0 for-loop [25] 100.0% ------------------------------------------------------------------------------------------- ??? [191] 100.0% [212] 320(0.0%) 320(0.0%) integer->bigfloat ...ivate/bigfloat/mpfr.rkt:399:0 ------------------------------------------------------------------------------------------- approximate9 [189] 100.0% [213] 300(0.0%) 0(0.0%) taylor ...ie/alt-testing/src/core/taylor.rkt:163:0 debug-print [228] 100.0% ------------------------------------------------------------------------------------------- ??? [194] 100.0% [214] 59168(5.0%) 29084(2.4%) for-loop ...acket/contract/private/list.rkt:743:12 ??? [232] 23.9% for-loop [196] 18.8% ??? [237] 4.0% arrow-higher-order:lnp [239] 2.3% successfully-got-the-right-kind-of-function [238] 1.2% ??? [272] 0.6% ------------------------------------------------------------------------------------------- ??? [174] 0.6% ??? [194] 1.7% ??? [181] 3.3% ??? [201] 28.5% for-loop [196] 64.2% [215] 58788(4.9%) 11132(0.9%) ??? ...cts/racket/contract/private/list.rkt:187:10 ??? [231] 61.4% ??? [201] 10.6% for-loop [235] 7.4% ??? [248] 1.1% ??? [272] 0.6% ------------------------------------------------------------------------------------------- ??? [195] 100.0% [216] 50454(4.2%) 32948(2.8%) bfadd ...-lib/math/private/bigfloat/mpfr.rkt:819:4 ??? [233] 34.7% ------------------------------------------------------------------------------------------- ??? [198] 100.0% [217] 41642(3.5%) 1016(0.1%) ??? ...ects/racket/contract/private/list.rkt:169:2 ??? [230] 97.6% ------------------------------------------------------------------------------------------- bigfloat-hash [197] 100.0% [218] 37302(3.1%) 34230(2.9%) bfcanonicalize .../private/bigfloat/mpfr.rkt:155:0 bigfloat->sig+exp [236] 8.2% ------------------------------------------------------------------------------------------- list-member? [199] 100.0% [219] 18500(1.6%) 18500(1.6%) loop (unknown source) ------------------------------------------------------------------------------------------- flag-set? [62] 22.2% ??? [188] 22.3% ??? [181] 26.7% ??? [200] 28.7% [220] 12252(1.0%) 7584(0.6%) return/no-unsupplied ...ct/private/arr-i.rkt:533:0 filter [234] 38.1% ------------------------------------------------------------------------------------------- taylor-quotient [132] 3.4% taylor-sqrt [14] 6.4% taylor-exp [210] 7.1% ??? [174] 9.8% hash-ref! [183] 73.3% [221] 9784(0.8%) 0(0.0%) simplify ...e/alt-testing/src/core/reduce.rkt:16:0 f137 [116] 43.5% parse-loop12 [258] 36.4% simplify-node [240] 10.1% simplify* [244] 3.6% make-multiplication-node [30] 3.3% debug7 [241] 3.2% ------------------------------------------------------------------------------------------- ??? [195] 100.0% [222] 9760(0.8%) 5656(0.5%) bfneg ...-lib/math/private/bigfloat/mpfr.rkt:616:4 ??? [233] 42.0% ------------------------------------------------------------------------------------------- f137 [116] 4.9% argmins [208] 35.0% loop [206] 60.1% [223] 6676(0.6%) 0(0.0%) composed ...ollects/racket/private/list.rkt:321:16 errors [150] 95.1% f137 [116] 4.9% ------------------------------------------------------------------------------------------- bigfloat-hash [197] 100.0% [224] 5884(0.5%) 5190(0.4%) sig+exp->bigfloat ...ivate/bigfloat/mpfr.rkt:385:0 integer->mpz [242] 6.2% ??? [233] 5.6% ------------------------------------------------------------------------------------------- mk-egraph [207] 31.6% mk-enode-rec! [225] 68.4% [225] 3362(0.3%) 0(0.0%) mk-enode-rec! ...testing/src/core/egraph.rkt:122:0 mk-enode-rec! [225] 68.4% mk-enode! [81] 31.6% ------------------------------------------------------------------------------------------- list-member? [199] 100.0% [226] 3000(0.3%) 3000(0.3%) member (unknown source) ------------------------------------------------------------------------------------------- ??? [200] 100.0% [227] 2742(0.2%) 2742(0.2%) assoc-ref ...collects/racket/private/dict.rkt:56:0 ------------------------------------------------------------------------------------------- taylor [213] 48.1% iterate-egraph!13 [3] 51.9% [228] 624(0.1%) 324(0.0%) debug-print ...bie/alt-testing/src/debug.rkt:107:0 for-loop [245] 48.1% ------------------------------------------------------------------------------------------- loop [202] 100.0% [229] 362(0.0%) 0(0.0%) errors-score ...e/alt-testing/src/points.rkt:281:0 loop [243] 100.0% ------------------------------------------------------------------------------------------- ??? [217] 100.0% [230] 40626(3.4%) 2360(0.2%) ??? ...ects/racket/contract/private/list.rkt:678:5 for-loop [246] 94.2% ------------------------------------------------------------------------------------------- ??? [215] 100.0% [231] 36078(3.0%) 4208(0.4%) ??? ...ects/racket/contract/private/list.rkt:686:7 ??? [272] 85.6% ??? [248] 2.7% ------------------------------------------------------------------------------------------- ??? [194] 48.2% for-loop [214] 51.8% [232] 27304(2.3%) 9984(0.8%) ??? ...private/unconstrained-domain-arrow.rkt:74:4 make-keyword-procedure [247] 63.4% ------------------------------------------------------------------------------------------- sig+exp->bigfloat [224] 1.4% real->bigfloat [205] 5.7% bfneg [222] 17.4% bfadd [216] 74.1% [233] 23640(2.0%) 23640(2.0%) ??? .../share/racket/collects/ffi/unsafe.rkt:861:4 ------------------------------------------------------------------------------------------- match-e [54] 6.6% for-loop [72] 6.8% return/no-unsupplied [220] 86.6% [234] 5390(0.5%) 5390(0.5%) filter ...t/collects/racket/private/list.rkt:256:2 ------------------------------------------------------------------------------------------- ??? [215] 100.0% [235] 4370(0.4%) 2002(0.2%) for-loop ...acket/contract/private/list.rkt:190:15 ??? [201] 54.2% ------------------------------------------------------------------------------------------- bigfloat-hash [197] 24.4% bfcanonicalize [218] 75.6% [236] 4062(0.3%) 1020(0.1%) bigfloat->sig+exp ...ivate/bigfloat/mpfr.rkt:370:0 size+limbs->integer [250] 42.8% new-mpz [253] 32.1% ------------------------------------------------------------------------------------------- ??? [201] 9.5% ??? [182] 27.1% for-loop [214] 63.4% [237] 3762(0.3%) 1708(0.1%) ??? ...ects/racket/contract/private/hash.rkt:222:6 check-hash/c [249] 54.6% ------------------------------------------------------------------------------------------- maybe-cons-kwd [76] 15.0% for-loop [214] 28.9% ??? [194] 56.1% [238] 2402(0.2%) 1002(0.1%) successfully-got-the-right-kind-of-function ...9:4 arity-checking-wrapper [251] 58.3% ------------------------------------------------------------------------------------------- ??? [194] 42.4% for-loop [214] 57.6% [239] 2400(0.2%) 1404(0.1%) arrow-higher-order:lnp ...w-higher-order.rkt:597:7 ??? [254] 41.5% ------------------------------------------------------------------------------------------- map [124] 39.3% simplify [221] 60.7% [240] 1620(0.1%) 306(0.0%) simplify-node ...-testing/src/core/reduce.rkt:50:0 append-map [252] 41.1% combine-aterms [255] 20.4% f137 [116] 19.6% ------------------------------------------------------------------------------------------- simplify [221] 48.3% loop [107] 51.7% [241] 642(0.1%) 0(0.0%) debug7 ...s/herbie/alt-testing/src/debug.rkt:102:0 ??? [128] 100.0% ------------------------------------------------------------------------------------------- sig+exp->bigfloat [224] 100.0% [242] 362(0.0%) 362(0.0%) integer->mpz ...math/private/bigfloat/gmp.rkt:87:0 ------------------------------------------------------------------------------------------- errors-score [229] 100.0% [243] 362(0.0%) 362(0.0%) loop ...hare/racket/collects/racket/list.rkt:551:2 ------------------------------------------------------------------------------------------- simplify [221] 100.0% [244] 350(0.0%) 350(0.0%) simplify* .../alt-testing/src/core/reduce.rkt:31:0 ------------------------------------------------------------------------------------------- debug-print [228] 100.0% [245] 300(0.0%) 300(0.0%) for-loop ...herbie/alt-testing/src/debug.rkt:113:2 ------------------------------------------------------------------------------------------- ??? [230] 100.0% [246] 38266(3.2%) 11580(1.0%) for-loop ...racket/contract/private/list.rkt:680:9 add-list-context [256] 43.1% get/build-late-neg-projection [257] 26.6% ------------------------------------------------------------------------------------------- f137 [116] 1.9% ??? [232] 98.1% [247] 17664(1.5%) 17664(1.5%) make-keyword-procedure ...ket/private/kw.rkt:260:4 ------------------------------------------------------------------------------------------- for-loop [196] 12.0% ??? [215] 25.0% ??? [173] 26.3% ??? [231] 36.7% [248] 2658(0.2%) 1682(0.1%) ??? ...ects/racket/contract/private/prop.rkt:493:4 ??? [260] 36.7% ------------------------------------------------------------------------------------------- ??? [237] 100.0% [249] 2054(0.2%) 1354(0.1%) check-hash/c ...ket/contract/private/hash.rkt:83:0 flat-contract? [261] 34.1% ------------------------------------------------------------------------------------------- bigfloat->sig+exp [236] 100.0% [250] 1740(0.1%) 1740(0.1%) size+limbs->integer ...vate/bigfloat/gmp.rkt:103:0 ------------------------------------------------------------------------------------------- successfully-got-the-right-kind-of-function [238]100.0% [251] 1400(0.1%) 336(0.0%) arity-checking-wrapper ...w-higher-order.rkt:402:0 matches-arity-exactly? [259] 76.0% ------------------------------------------------------------------------------------------- simplify-node [240] 37.8% f137 [116] 62.2% [252] 1310(0.1%) 0(0.0%) append-map ...acket/collects/racket/list.rkt:565:2 parse-loop12 [258] 75.1% f137 [116] 18.7% free-variables [15] 6.2% ------------------------------------------------------------------------------------------- bigfloat->sig+exp [236] 100.0% [253] 1302(0.1%) 1302(0.1%) new-mpz ...-lib/math/private/bigfloat/gmp.rkt:73:0 ------------------------------------------------------------------------------------------- arrow-higher-order:lnp [239] 100.0% [254] 996(0.1%) 996(0.1%) ??? ...et/contract/private/arity-checking.rkt:19:2 ------------------------------------------------------------------------------------------- simplify-node [240] 100.0% [255] 330(0.0%) 330(0.0%) combine-aterms ...esting/src/core/reduce.rkt:183:0 ------------------------------------------------------------------------------------------- for-loop [246] 100.0% [256] 16502(1.4%) 16502(1.4%) add-list-context ...ontract/private/list.rkt:752:0 ------------------------------------------------------------------------------------------- ??? [263] 17.0% ??? [182] 19.1% for-loop [246] 63.9% [257] 15930(1.3%) 2698(0.2%) get/build-late-neg-projection ...te/guts.rkt:691:0 ??? [262] 65.0% ??? [263] 17.0% listof-late-neg-projection [265] 2.2% ------------------------------------------------------------------------------------------- loop [146] 0.8% type-of-enode-expr [106] 2.5% append-map [252] 4.7% for-loop [32] 5.8% simplify [221] 11.2% map [124] 15.7% ??? [173] 16.4% parse-loop12 [258] 18.9% hash-ref! [183] 24.0% [258] 12996(1.1%) 5690(0.5%) parse-loop12 ...s/racket/match/compiler.rkt:418:15 loop [146] 23.9% parse-loop12 [258] 18.9% f137 [116] 9.7% make-multiplication-node [30] 6.3% for-loop [264] 5.8% loop [266] 2.1% for-loop [17] 0.8% ------------------------------------------------------------------------------------------- arity-checking-wrapper [251] 100.0% [259] 1064(0.1%) 1064(0.1%) matches-arity-exactly? ...te/arrow-common.rkt:70:0 ------------------------------------------------------------------------------------------- ??? [248] 100.0% [260] 976(0.1%) 666(0.1%) ??? ...lects/racket/contract/private/orc.rkt:83:14 ??? [267] 31.8% ------------------------------------------------------------------------------------------- check-hash/c [249] 100.0% [261] 700(0.1%) 700(0.1%) flat-contract? .../contract/private/guts.rkt:111:0 ------------------------------------------------------------------------------------------- get/build-late-neg-projection [257] 100.0% [262] 12524(1.0%) 4112(0.3%) ??? ...cts/racket/contract/private/prop.rkt:314:12 build-compound-type-name [268] 67.2% ------------------------------------------------------------------------------------------- get/build-late-neg-projection [257] 100.0% [263] 5422(0.5%) 0(0.0%) ??? ...ects/racket/contract/private/hash.rkt:211:2 get/build-late-neg-projection [257] 100.0% ------------------------------------------------------------------------------------------- parse-loop12 [258] 100.0% [264] 1298(0.1%) 0(0.0%) for-loop ...alt-testing/src/core/taylor.rkt:490:59 hash-ref! [183] 100.0% ------------------------------------------------------------------------------------------- get/build-late-neg-projection [257] 100.0% [265] 708(0.1%) 708(0.1%) listof-late-neg-projection ...ivate/list.rkt:162:0 ------------------------------------------------------------------------------------------- parse-loop12 [258] 7.5% loop [266] 92.5% [266] 668(0.1%) 334(0.0%) loop ...cket/collects/racket/private/map.rkt:36:19 loop [266] 92.5% ulp-difference [269] 6.2% ------------------------------------------------------------------------------------------- ??? [260] 100.0% [267] 310(0.0%) 310(0.0%) ??? ...ects/racket/contract/private/list.rkt:141:5 ------------------------------------------------------------------------------------------- contract-struct-name [271] 14.0% ??? [262] 86.0% [268] 8412(0.7%) 5428(0.5%) build-compound-type-name ...private/guts.rkt:448:0 contract-struct-name [271] 47.7% ------------------------------------------------------------------------------------------- loop [266] 33.7% for-loop [154] 66.3% [269] 992(0.1%) 324(0.0%) ulp-difference ...e/alt-testing/src/float.rkt:19:0 ??? [270] 67.3% ------------------------------------------------------------------------------------------- ulp-difference [269] 4.0% flag-set? [62] 7.9% ??? [188] 12.2% ??? [181] 37.7% ??? [200] 38.2% [270] 16772(1.4%) 4330(0.4%) ??? ...racket/collects/racket/private/kw.rkt:761:9 ??? [273] 62.5% ??? [272] 11.7% ------------------------------------------------------------------------------------------- build-compound-type-name [268] 100.0% [271] 5034(0.4%) 2984(0.3%) contract-struct-name ...ract/private/prop.rkt:89:0 build-compound-type-name [268] 43.7% ------------------------------------------------------------------------------------------- ??? [215] 0.7% for-loop [214] 0.7% ??? [128] 3.5% ??? [270] 4.0% ??? [125] 4.1% ??? [174] 11.2% ??? [201] 12.8% ??? [231] 63.0% [272] 49052(4.1%) 37236(3.1%) ??? ...ects/racket/contract/private/guts.rkt:644:8 ??? [128] 15.4% contract? [274] 6.7% ------------------------------------------------------------------------------------------- ??? [270] 100.0% [273] 10482(0.9%) 10142(0.9%) ??? ...s/racket/contract/private/arr-i.rkt:1233:27 ??? [275] 3.2% ------------------------------------------------------------------------------------------- ??? [272] 100.0% [274] 3308(0.3%) 3308(0.3%) contract? ...acket/contract/private/guts.rkt:109:0 ------------------------------------------------------------------------------------------- ??? [273] 100.0% [275] 340(0.0%) 340(0.0%) ??? ...ects/racket/contract/private/prop.rkt:256:4 -------------------------------------------------------------------------------------------