Profiling results ----------------- Total cpu time observed: 80846ms (out of 81272ms) Number of samples taken: 244 (once every 331ms) (Hiding functions with self<1.0% and local<2.0%: 5 of 206 hidden) ==================================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ==================================================================================== ??? [119] 100.0% [1] 80846(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [14] 100.0% ------------------------------------------------------------------------------------ ??? [119] 100.0% [2] 61294(75.8%) 0(0.0%) run-improve47 ...nf-columns/src/mainloop.rkt:345:0 for-loop [15] 98.6% prepare-points-intervals [16] 0.8% simplify! [35] 0.6% ------------------------------------------------------------------------------------ ??? [127] 100.0% [3] 12334(15.3%) 0(0.0%) approximate9 ...f-columns/src/core/taylor.rkt:12:0 loop [17] 74.8% taylor [32] 12.7% for-loop [24] 12.5% ------------------------------------------------------------------------------------ hash-ref! [146] 100.0% [4] 5244(6.5%) 0(0.0%) ??? ...e/no-inf-columns/src/core/taylor.rkt:291:26 for-loop [18] 100.0% ------------------------------------------------------------------------------------ map [138] 4.2% simplify [158] 22.8% parse-loop80 [173] 73.0% [5] 4300(5.3%) 0(0.0%) f67 ...2/collects/racket/match/compiler.rkt:507:40 eval-const-expr [122] 66.5% map [138] 33.5% ------------------------------------------------------------------------------------ loop [192] 7.3% for-loop [188] 92.7% [6] 4122(5.1%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [19] 100.0% ------------------------------------------------------------------------------------ matcher [75] 100.0% [7] 3510(4.3%) 0(0.0%) ??? .../no-inf-columns/src/core/matcher.rkt:130:11 for-loop [21] 84.3% for-loop [25] 13.4% foldl [33] 2.3% ------------------------------------------------------------------------------------ hash-ref! [146] 100.0% [8] 2660(3.3%) 0(0.0%) ??? ...e/no-inf-columns/src/core/taylor.rkt:510:23 for-loop [22] 100.0% ------------------------------------------------------------------------------------ hash-ref! [146] 100.0% [9] 2262(2.8%) 0(0.0%) ??? ...e/no-inf-columns/src/core/taylor.rkt:301:23 for-loop [23] 100.0% ------------------------------------------------------------------------------------ for-loop [188] 100.0% [10] 1898(2.3%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [20] 100.0% ------------------------------------------------------------------------------------ loop [192] 27.3% for-loop [188] 72.7% [11] 1320(1.6%) 0(0.0%) expand-identifier (unknown source) resolve+shift28 [20] 100.0% ------------------------------------------------------------------------------------ for-loop [67] 100.0% [12] 1254(1.6%) 0(0.0%) for-loop ...-inf-columns/src/core/matcher.rkt:99:8 fix-up-variables [26] 100.0% ------------------------------------------------------------------------------------ parse-loop80 [173] 100.0% [13] 358(0.4%) 0(0.0%) simplify-node ...-columns/src/core/reduce.rkt:48:0 append-map [28] 50.0% combine-mterms [27] 50.0% ------------------------------------------------------------------------------------ profile-thunk16 [1] 100.0% [14] 80846(100.0%) 0(0.0%) run ...et-7.2/share/pkgs/profile-lib/main.rkt:39:2 ??? [119] 100.0% ------------------------------------------------------------------------------------ run-improve47 [2] 100.0% [15] 60428(74.7%) 0(0.0%) for-loop .../no-inf-columns/src/mainloop.rkt:363:4 run-iter! [29] 100.0% ------------------------------------------------------------------------------------ run-improve47 [2] 2.6% ??? [119] 97.4% [16] 18404(22.8%) 0(0.0%) prepare-points-intervals ...s/src/points.rkt:110:0 loop [30] 100.0% ------------------------------------------------------------------------------------ approximate9 [3] 100.0% [17] 9222(11.4%) 0(0.0%) loop ...ie/no-inf-columns/src/core/taylor.rkt:87:4 ??? [127] 100.0% ------------------------------------------------------------------------------------ ??? [4] 100.0% [18] 5244(6.5%) 0(0.0%) for-loop ...inf-columns/src/core/taylor.rkt:291:52 hash-ref! [146] 93.4% simplify [158] 6.6% ------------------------------------------------------------------------------------ gf [195] 6.4% expand-id-application-form17 [196] 12.3% syntax-e [6] 81.3% [19] 5072(6.3%) 0(0.0%) syntax-e/no-taint (unknown source) loop [192] 100.0% ------------------------------------------------------------------------------------ expand-identifier [11] 29.0% expand-id-application-form17 [196] 29.4% expand-implicit [10] 41.6% [20] 4558(5.6%) 608(0.8%) resolve+shift28 (unknown source) fallback-loop [31] 86.7% ------------------------------------------------------------------------------------ ??? [7] 100.0% [21] 3510(4.3%) 0(0.0%) for-loop ...nf-columns/src/core/matcher.rkt:132:15 matcher [75] 100.0% ------------------------------------------------------------------------------------ ??? [8] 100.0% [22] 2660(3.3%) 0(0.0%) for-loop ...inf-columns/src/core/taylor.rkt:514:35 parse-loop80 [173] 100.0% ------------------------------------------------------------------------------------ ??? [9] 100.0% [23] 2262(2.8%) 0(0.0%) for-loop ...inf-columns/src/core/taylor.rkt:304:27 hash-ref! [146] 100.0% ------------------------------------------------------------------------------------ approximate9 [3] 100.0% [24] 1542(1.9%) 0(0.0%) for-loop ...-inf-columns/src/core/taylor.rkt:30:18 taylor [32] 100.0% ------------------------------------------------------------------------------------ ??? [7] 100.0% [25] 1274(1.6%) 0(0.0%) for-loop ...inf-columns/src/core/matcher.rkt:106:4 foldl [33] 100.0% ------------------------------------------------------------------------------------ for-loop [12] 100.0% [26] 1254(1.6%) 0(0.0%) fix-up-variables ...mns/src/core/matcher.rkt:111:2 pattern-substitute [81] 50.2% pattern-match [34] 49.8% ------------------------------------------------------------------------------------ simplify-node [13] 100.0% [27] 358(0.4%) 358(0.4%) combine-mterms ...olumns/src/core/reduce.rkt:195:0 ------------------------------------------------------------------------------------ simplify-node [13] 100.0% [28] 358(0.4%) 0(0.0%) append-map ...t-7.2/collects/racket/list.rkt:586:2 parse-loop80 [173] 100.0% ------------------------------------------------------------------------------------ for-loop [15] 100.0% [29] 60428(74.7%) 0(0.0%) run-iter! ...no-inf-columns/src/mainloop.rkt:326:0 simplify! [35] 59.8% gen-series! [37] 20.4% finalize-iter! [38] 13.5% gen-rewrites! [39] 5.8% localize! [45] 0.5% ------------------------------------------------------------------------------------ prepare-points-intervals [16] 100.0% [30] 18404(22.8%) 910(1.1%) loop ...herbie/no-inf-columns/src/points.rkt:123:4 loop [36] 79.9% ??? [40] 15.2% ------------------------------------------------------------------------------------ resolve+shift28 [20] 100.0% [31] 3950(4.9%) 352(0.4%) fallback-loop (unknown source) for-loop [188] 91.1% ------------------------------------------------------------------------------------ map [138] 15.4% taylor [32] 23.2% for-loop [24] 30.4% approximate9 [3] 31.1% [32] 3112(3.8%) 0(0.0%) taylor ...no-inf-columns/src/core/taylor.rkt:170:0 loop [42] 40.3% taylor [32] 23.2% taylor-sqrt [43] 18.8% map [138] 15.4% debug-print [179] 2.4% ------------------------------------------------------------------------------------ ??? [7] 20.3% for-loop [25] 79.7% [33] 1598(2.0%) 0(0.0%) foldl ....2/collects/racket/private/list.rkt:229:4 ??? [41] 100.0% ------------------------------------------------------------------------------------ fix-up-variables [26] 100.0% [34] 624(0.8%) 0(0.0%) pattern-match ...columns/src/core/matcher.rkt:30:0 for-loop [44] 100.0% ------------------------------------------------------------------------------------ run-improve47 [2] 1.0% run-iter! [29] 99.0% [35] 36500(45.1%) 0(0.0%) simplify! ...no-inf-columns/src/mainloop.rkt:223:0 ??? [46] 99.1% for-loop [50] 0.9% ------------------------------------------------------------------------------------ loop [30] 100.0% [36] 14700(18.2%) 994(1.2%) loop .../herbie/no-inf-columns/src/points.rkt:81:2 ??? [121] 86.7% ??? [175] 6.5% ------------------------------------------------------------------------------------ run-iter! [29] 100.0% [37] 12334(15.3%) 0(0.0%) gen-series! ...-inf-columns/src/mainloop.rkt:159:0 for-loop [47] 100.0% ------------------------------------------------------------------------------------ run-iter! [29] 100.0% [38] 8166(10.1%) 0(0.0%) finalize-iter! ...f-columns/src/mainloop.rkt:277:0 ??? [87] 100.0% ------------------------------------------------------------------------------------ run-iter! [29] 100.0% [39] 3510(4.3%) 0(0.0%) gen-rewrites! ...nf-columns/src/mainloop.rkt:182:0 for-loop [48] 100.0% ------------------------------------------------------------------------------------ loop [30] 100.0% [40] 2794(3.5%) 0(0.0%) ??? .../herbie/no-inf-columns/src/points.rkt:106:2 ??? [127] 100.0% ------------------------------------------------------------------------------------ foldl [33] 100.0% [41] 1598(2.0%) 306(0.4%) ??? ...ie/no-inf-columns/src/core/matcher.rkt:26:7 core651 [49] 80.9% ------------------------------------------------------------------------------------ taylor [32] 100.0% [42] 1582(2.0%) 0(0.0%) loop ...e/no-inf-columns/src/core/taylor.rkt:268:2 hash-ref! [146] 100.0% ------------------------------------------------------------------------------------ taylor [32] 100.0% [43] 1230(1.5%) 0(0.0%) taylor-sqrt ...f-columns/src/core/taylor.rkt:352:0 simplify [158] 100.0% ------------------------------------------------------------------------------------ pattern-match [34] 100.0% [44] 624(0.8%) 0(0.0%) for-loop ...-inf-columns/src/core/matcher.rkt:27:9 core651 [49] 100.0% ------------------------------------------------------------------------------------ run-iter! [29] 100.0% [45] 300(0.4%) 0(0.0%) localize! ...no-inf-columns/src/mainloop.rkt:126:0 localize-error [51] 100.0% ------------------------------------------------------------------------------------ simplify! [35] 100.0% [46] 36176(44.7%) 0(0.0%) ??? ...e/no-inf-columns/src/core/simplify.rkt:26:0 for-loop [52] 84.5% one-iter [58] 12.9% loop [61] 2.6% ------------------------------------------------------------------------------------ gen-series! [37] 100.0% [47] 12334(15.3%) 0(0.0%) for-loop .../no-inf-columns/src/mainloop.rkt:166:7 taylor-alt [53] 100.0% ------------------------------------------------------------------------------------ gen-rewrites! [39] 100.0% [48] 3510(4.3%) 0(0.0%) for-loop ...no-inf-columns/src/mainloop.rkt:190:11 rewrite-expression-head20 [54] 100.0% ------------------------------------------------------------------------------------ for-loop [44] 32.6% ??? [41] 67.4% [49] 1916(2.4%) 0(0.0%) core651 ...acket/contract/private/arr-i.rkt:929:19 build-unary-very-simple--> [55] 48.9% un-dep/maybe-chaperone [56] 34.2% or/c [57] 16.9% ------------------------------------------------------------------------------------ for-loop [50] 50.0% simplify! [35] 50.0% [50] 324(0.4%) 0(0.0%) for-loop .../no-inf-columns/src/mainloop.rkt:250:6 for-loop [50] 50.0% ??? [127] 50.0% ------------------------------------------------------------------------------------ localize! [45] 100.0% [51] 300(0.4%) 0(0.0%) localize-error ...lumns/src/core/localize.rkt:66:0 hash-ref! [146] 100.0% ------------------------------------------------------------------------------------ ??? [46] 100.0% [52] 30578(37.8%) 0(0.0%) for-loop ...inf-columns/src/core/simplify.rkt:35:2 one-iter [58] 98.8% loop [61] 1.2% ------------------------------------------------------------------------------------ for-loop [47] 100.0% [53] 12334(15.3%) 0(0.0%) taylor-alt ...o-inf-columns/src/mainloop.rkt:145:0 for-loop [59] 100.0% ------------------------------------------------------------------------------------ for-loop [48] 100.0% [54] 3510(4.3%) 0(0.0%) rewrite-expression-head20 ...core/matcher.rkt:87:0 rewriter [60] 100.0% ------------------------------------------------------------------------------------ core651 [49] 100.0% [55] 936(1.2%) 0(0.0%) build-unary-very-simple--> ...val-first.rkt:1016:0 contract-struct-first-order [64] 35.5% coerce-contract [176] 34.6% chaperone-contract? [62] 29.9% ------------------------------------------------------------------------------------ core651 [49] 100.0% [56] 656(0.8%) 300(0.4%) un-dep/maybe-chaperone ...private/arr-i.rkt:1108:2 ??? [63] 54.3% ------------------------------------------------------------------------------------ core651 [49] 100.0% [57] 324(0.4%) 0(0.0%) or/c ...lects/racket/contract/private/orc.rkt:16:2 chaperone-contract? [62] 100.0% ------------------------------------------------------------------------------------ ??? [46] 13.4% for-loop [52] 86.6% [58] 34888(43.2%) 0(0.0%) one-iter ...inf-columns/src/core/simplify.rkt:72:0 for-loop [65] 46.7% find-matches [66] 46.0% for-loop [68] 5.5% for-loop [71] 1.8% ------------------------------------------------------------------------------------ taylor-alt [53] 100.0% [59] 12334(15.3%) 0(0.0%) for-loop .../no-inf-columns/src/mainloop.rkt:151:6 ??? [127] 100.0% ------------------------------------------------------------------------------------ rewrite-expression-head20 [54] 30.9% matcher [75] 69.1% [60] 3510(4.3%) 0(0.0%) rewriter ...-inf-columns/src/core/matcher.rkt:90:2 for-loop [67] 96.0% *rules* [70] 4.0% ------------------------------------------------------------------------------------ for-loop [52] 28.0% ??? [46] 72.0% [61] 1288(1.6%) 0(0.0%) loop ...o-inf-columns/src/core/extraction.rkt:25:2 for-loop [69] 100.0% ------------------------------------------------------------------------------------ build-unary-very-simple--> [55] 46.4% or/c [57] 53.6% [62] 604(0.7%) 604(0.7%) chaperone-contract? ...ract/private/guts.rkt:136:0 ------------------------------------------------------------------------------------ un-dep/maybe-chaperone [56] 100.0% [63] 356(0.4%) 0(0.0%) ??? ...llects/racket/contract/private/orc.rkt:88:2 ??? [72] 100.0% ------------------------------------------------------------------------------------ build-unary-very-simple--> [55] 100.0% [64] 332(0.4%) 332(0.4%) contract-struct-first-order ...ivate/prop.rkt:95:0 ------------------------------------------------------------------------------------ one-iter [58] 100.0% [65] 16298(20.2%) 0(0.0%) for-loop ...inf-columns/src/core/simplify.rkt:74:2 for-loop [73] 100.0% ------------------------------------------------------------------------------------ one-iter [58] 100.0% [66] 16040(19.8%) 0(0.0%) find-matches ...columns/src/core/simplify.rkt:62:0 for-loop [74] 100.0% ------------------------------------------------------------------------------------ rewriter [60] 100.0% [67] 3510(4.3%) 0(0.0%) for-loop ...-inf-columns/src/core/matcher.rkt:92:4 matcher [75] 89.6% for-loop [12] 10.4% ------------------------------------------------------------------------------------ one-iter [58] 100.0% [68] 1926(2.4%) 0(0.0%) for-loop ...inf-columns/src/core/simplify.rkt:81:2 set-precompute! [76] 100.0% ------------------------------------------------------------------------------------ loop [61] 100.0% [69] 1288(1.6%) 0(0.0%) for-loop ...f-columns/src/core/extraction.rkt:29:4 for-loop [77] 100.0% ------------------------------------------------------------------------------------ rewriter [60] 100.0% [70] 658(0.8%) 0(0.0%) *rules* ...-inf-columns/src/syntax/rules.rkt:666:0 for-loop [78] 100.0% ------------------------------------------------------------------------------------ one-iter [58] 100.0% [71] 624(0.8%) 0(0.0%) for-loop ...inf-columns/src/core/simplify.rkt:84:2 update-leader! [98] 100.0% ------------------------------------------------------------------------------------ ??? [63] 100.0% [72] 356(0.4%) 0(0.0%) ??? ...cts/racket/contract/private/guts.rkt:837:10 ??? [79] 100.0% ------------------------------------------------------------------------------------ for-loop [65] 100.0% [73] 16298(20.2%) 382(0.5%) for-loop ...inf-columns/src/core/simplify.rkt:77:4 merge-egraph-nodes! [88] 53.9% dedup-children! [106] 26.9% pattern-substitute [81] 9.4% mk-enode-rec! [83] 7.4% ------------------------------------------------------------------------------------ for-loop [74] 50.0% find-matches [66] 50.0% [74] 16040(19.8%) 906(1.1%) for-loop ...inf-columns/src/core/simplify.rkt:64:8 for-loop [74] 50.0% match-e [80] 47.2% ------------------------------------------------------------------------------------ for-loop [21] 45.7% for-loop [67] 54.3% [75] 3510(4.3%) 0(0.0%) matcher ...-inf-columns/src/core/matcher.rkt:118:2 ??? [7] 55.8% rewriter [60] 44.2% ------------------------------------------------------------------------------------ for-loop [68] 100.0% [76] 1926(2.4%) 0(0.0%) set-precompute! ...umns/src/core/simplify.rkt:88:0 for-loop [82] 100.0% ------------------------------------------------------------------------------------ for-loop [69] 100.0% [77] 1288(1.6%) 298(0.4%) for-loop ...-columns/src/core/extraction.rkt:37:16 for-loop [84] 76.9% ------------------------------------------------------------------------------------ *rules* [70] 100.0% [78] 658(0.8%) 358(0.4%) for-loop ...bie/no-inf-columns/src/common.rkt:62:9 ormap [85] 45.6% ------------------------------------------------------------------------------------ ??? [72] 100.0% [79] 356(0.4%) 356(0.4%) ??? ...ntract/private/arrow-higher-order.rkt:560:2 ------------------------------------------------------------------------------------ for-loop [96] 31.0% for-loop [74] 69.0% [80] 15134(18.7%) 2826(3.5%) match-e ...no-inf-columns/src/core/ematch.rkt:39:0 for-loop [86] 75.9% constant? [89] 5.3% variable? [90] 2.3% ??? [87] 1.6% ------------------------------------------------------------------------------------ fix-up-variables [26] 12.0% pattern-substitute [81] 30.9% for-loop [73] 57.1% [81] 2162(2.7%) 1228(1.5%) pattern-substitute ...ns/src/core/matcher.rkt:46:0 pattern-substitute [81] 30.9% ??? [91] 14.2% ??? [87] 12.0% ------------------------------------------------------------------------------------ set-precompute! [76] 100.0% [82] 1926(2.4%) 0(0.0%) for-loop ...inf-columns/src/core/simplify.rkt:90:2 ??? [119] 82.7% merge-egraph-nodes! [88] 17.3% ------------------------------------------------------------------------------------ loop [139] 24.8% for-loop [73] 75.2% [83] 1208(1.5%) 0(0.0%) mk-enode-rec! ...columns/src/core/egraph.rkt:117:0 loop [139] 49.9% new-enode [92] 25.3% hash-has-key? [93] 12.4% for-loop [95] 12.3% ------------------------------------------------------------------------------------ for-loop [77] 100.0% [84] 990(1.2%) 990(1.2%) for-loop ...-columns/src/core/extraction.rkt:41:23 ------------------------------------------------------------------------------------ for-loop [78] 100.0% [85] 300(0.4%) 0(0.0%) ormap ....2/collects/racket/private/map.rkt:141:13 flag-set? [94] 100.0% ------------------------------------------------------------------------------------ match-e [80] 100.0% [86] 13276(16.4%) 4646(5.7%) for-loop ...-inf-columns/src/core/ematch.rkt:52:11 for-loop [96] 50.0% procedure-reduce-keyword-arity-mask [99] 12.5% do-curry [101] 6.0% ??? [154] 2.4% ------------------------------------------------------------------------------------ variable? [90] 6.0% match-e [80] 6.0% pattern-substitute [81] 6.3% finalize-iter! [38] 81.8% [87] 9986(12.4%) 1820(2.3%) ??? ...contract/private/arrow-val-first.rkt:390:18 for-loop [97] 75.2% atab-add-altns [103] 6.5% ------------------------------------------------------------------------------------ for-loop [82] 3.7% for-loop [102] 3.7% merge-egraph-nodes! [88] 5.0% for-loop [73] 87.7% [88] 9126(11.3%) 0(0.0%) merge-egraph-nodes! ...s/src/core/egraph.rkt:145:0 update-leader! [98] 57.2% loop! [149] 25.9% for-loop [102] 7.0% dedup-children! [106] 5.0% merge-egraph-nodes! [88] 5.0% ------------------------------------------------------------------------------------ match-e [80] 100.0% [89] 1506(1.9%) 0(0.0%) constant? ...f-columns/src/syntax/syntax.rkt:726:0 value? [100] 100.0% ------------------------------------------------------------------------------------ match-e [80] 100.0% [90] 894(1.1%) 0(0.0%) variable? ...f-columns/src/syntax/syntax.rkt:729:0 ??? [87] 66.7% value? [100] 33.3% ------------------------------------------------------------------------------------ pattern-substitute [81] 100.0% [91] 306(0.4%) 306(0.4%) ??? ...cket-7.2/collects/racket/function.rkt:93:12 ------------------------------------------------------------------------------------ mk-enode-rec! [83] 100.0% [92] 306(0.4%) 0(0.0%) new-enode ...-inf-columns/src/core/enode.rkt:101:0 set [169] 100.0% ------------------------------------------------------------------------------------ mk-enode-rec! [83] 100.0% [93] 300(0.4%) 300(0.4%) hash-has-key? ...ket/private/more-scheme.rkt:371:2 ------------------------------------------------------------------------------------ ormap [85] 100.0% [94] 300(0.4%) 300(0.4%) flag-set? ...ie/no-inf-columns/src/config.rkt:28:0 ------------------------------------------------------------------------------------ mk-enode-rec! [83] 100.0% [95] 298(0.4%) 298(0.4%) for-loop ...inf-columns/src/core/egraph.rkt:109:10 ------------------------------------------------------------------------------------ for-loop [86] 100.0% [96] 8678(10.7%) 300(0.4%) for-loop ...-inf-columns/src/core/ematch.rkt:58:37 match-e [80] 98.3% ------------------------------------------------------------------------------------ ??? [87] 100.0% [97] 7514(9.3%) 0(0.0%) for-loop ...nf-columns/src/core/alt-table.rkt:55:2 atab-add-altn [105] 66.5% errors [108] 25.5% loop [107] 8.0% ------------------------------------------------------------------------------------ for-loop [71] 9.9% merge-egraph-nodes! [88] 90.1% [98] 6328(7.8%) 298(0.4%) update-leader! ...olumns/src/core/egraph.rkt:213:0 for-loop [104] 95.3% ------------------------------------------------------------------------------------ for-loop [86] 100.0% [99] 2126(2.6%) 2126(2.6%) procedure-reduce-keyword-arity-mask ....rkt:1562:4 ------------------------------------------------------------------------------------ variable? [90] 16.5% constant? [89] 83.5% [100] 1804(2.2%) 1804(2.2%) value? ...no-inf-columns/src/syntax/types.rkt:18:0 ------------------------------------------------------------------------------------ for-loop [86] 100.0% [101] 1276(1.6%) 1276(1.6%) do-curry ...-7.2/collects/racket/function.rkt:71:2 ------------------------------------------------------------------------------------ merge-egraph-nodes! [88] 100.0% [102] 972(1.2%) 0(0.0%) for-loop ...-inf-columns/src/core/egraph.rkt:199:4 merge-egraph-nodes! [88] 69.1% dedup-children! [106] 30.9% ------------------------------------------------------------------------------------ ??? [87] 100.0% [103] 652(0.8%) 0(0.0%) atab-add-altns ...umns/src/core/alt-table.rkt:49:0 atab-add-altn [105] 100.0% ------------------------------------------------------------------------------------ update-leader! [98] 100.0% [104] 6030(7.5%) 0(0.0%) for-loop ...-inf-columns/src/core/egraph.rkt:218:6 hash-update! [115] 58.2% for-loop [110] 41.8% ------------------------------------------------------------------------------------ atab-add-altns [103] 11.5% for-loop [97] 88.5% [105] 5652(7.0%) 0(0.0%) atab-add-altn ...umns/src/core/alt-table.rkt:203:0 errors [108] 89.2% paired-fold [112] 5.5% loop [113] 5.3% ------------------------------------------------------------------------------------ for-loop [102] 5.7% merge-egraph-nodes! [88] 11.5% for-loop [73] 82.9% [106] 5290(6.5%) 300(0.4%) dedup-children! ...olumns/src/core/enode.rkt:202:0 loop [109] 59.5% loop [111] 34.8% ------------------------------------------------------------------------------------ for-loop [97] 100.0% [107] 600(0.7%) 300(0.4%) loop ...o-inf-columns/src/core/alt-table.rkt:177:2 argmax [114] 50.0% ------------------------------------------------------------------------------------ ??? [119] 4.7% for-loop [97] 26.2% atab-add-altn [105] 69.0% [108] 7300(9.0%) 0(0.0%) errors ...rbie/no-inf-columns/src/points.rkt:201:0 for-loop [116] 60.5% eval-prog [117] 39.5% ------------------------------------------------------------------------------------ dedup-children! [106] 11.1% loop [109] 88.9% [109] 3150(3.9%) 3150(3.9%) loop ...racket-7.2/collects/racket/list.rkt:434:17 loop [109] 88.9% ------------------------------------------------------------------------------------ for-loop [104] 100.0% [110] 2520(3.1%) 0(0.0%) for-loop ...-inf-columns/src/core/egraph.rkt:219:8 hash-update! [115] 100.0% ------------------------------------------------------------------------------------ dedup-children! [106] 18.3% loop [111] 81.7% [111] 1840(2.3%) 0(0.0%) loop ...racket-7.2/collects/racket/list.rkt:417:34 loop [111] 81.7% member [118] 10.2% loop [192] 8.1% ------------------------------------------------------------------------------------ atab-add-altn [105] 100.0% [112] 310(0.4%) 310(0.4%) paired-fold ...llects/racket/private/hash.rkt:19:2 ------------------------------------------------------------------------------------ atab-add-altn [105] 100.0% [113] 302(0.4%) 302(0.4%) loop ...-7.2/collects/racket/private/hash.rkt:20:4 ------------------------------------------------------------------------------------ loop [107] 100.0% [114] 300(0.4%) 300(0.4%) argmax ...acket-7.2/collects/racket/list.rkt:766:0 ------------------------------------------------------------------------------------ for-loop [110] 41.8% for-loop [104] 58.2% [115] 6030(7.5%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [120] 100.0% ------------------------------------------------------------------------------------ errors [108] 100.0% [116] 4418(5.5%) 0(0.0%) for-loop ...ie/no-inf-columns/src/points.rkt:203:2 ??? [119] 100.0% ------------------------------------------------------------------------------------ errors [108] 100.0% [117] 2882(3.6%) 0(0.0%) eval-prog .../no-inf-columns/src/programs.rkt:83:0 temp85_0 [129] 100.0% ------------------------------------------------------------------------------------ loop [111] 100.0% [118] 602(0.7%) 602(0.7%) member (unknown source) ------------------------------------------------------------------------------------ for-loop [82] 0.7% for-loop [116] 1.8% run [14] 48.8% [119] 80846(100.0%) 658(0.8%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 48.8% run-improve47 [2] 36.7% prepare-points-intervals [16] 11.1% ??? [121] 1.3% eval-const-expr [122] 0.7% oracle-error [124] 0.4% eval-errors [125] 0.2% get-final-combination [126] 0.2% errors [108] 0.1% ------------------------------------------------------------------------------------ hash-update! [115] 100.0% [120] 6030(7.5%) 0(0.0%) ??? ...e/no-inf-columns/src/core/egraph.rkt:221:24 for-loop [123] 94.9% update-en-expr [164] 5.1% ------------------------------------------------------------------------------------ ??? [155] 4.2% ??? [119] 18.9% loop [36] 77.0% [121] 16568(20.5%) 300(0.4%) ??? ...erbie/no-inf-columns/src/programs.rkt:115:2 ??? [128] 80.3% ??? [127] 17.9% ------------------------------------------------------------------------------------ ??? [119] 12.3% f67 [5] 28.1% parse-loop80 [173] 59.6% [122] 12948(16.0%) 0(0.0%) eval-const-expr ...-columns/src/programs.rkt:118:0 temp85_0 [129] 75.3% ??? [128] 12.8% loop [192] 7.3% eval [131] 2.4% inductor [132] 2.3% ------------------------------------------------------------------------------------ ??? [120] 100.0% [123] 5720(7.1%) 5092(6.3%) for-loop ...inf-columns/src/core/egraph.rkt:222:26 update-en-expr [164] 11.0% ------------------------------------------------------------------------------------ ??? [119] 100.0% [124] 694(0.9%) 0(0.0%) oracle-error ...o-inf-columns/src/points.rkt:188:0 for-loop [130] 100.0% ------------------------------------------------------------------------------------ ??? [119] 100.0% [125] 296(0.4%) 0(0.0%) eval-errors ...no-inf-columns/src/points.rkt:179:0 for-loop [133] 100.0% ------------------------------------------------------------------------------------ ??? [119] 100.0% [126] 296(0.4%) 0(0.0%) get-final-combination ...ns/src/mainloop.rkt:369:0 infer-splitpoints [134] 100.0% ------------------------------------------------------------------------------------ for-loop [50] 1.8% ??? [40] 15.2% ??? [121] 16.1% loop [17] 16.7% location-do [136] 25.1% for-loop [59] 25.1% [127] 18422(22.8%) 438(0.5%) ??? ...tract/private/arrow-higher-order.rkt:360:33 location-do [136] 25.1% approximate9 [3] 25.1% hash-ref! [146] 16.7% mk-ival [140] 16.1% sample-multi-bounded [142] 12.8% ??? [168] 1.8% ------------------------------------------------------------------------------------ eval-const-expr [122] 11.1% ??? [121] 88.9% [128] 14954(18.5%) 2590(3.2%) ??? ...t-7.2/collects/racket/private/kw.rkt:594:14 ??? [137] 65.4% ??? [141] 17.3% ------------------------------------------------------------------------------------ eval-prog [117] 22.8% eval-const-expr [122] 77.2% [129] 12628(15.6%) 0(0.0%) temp85_0 (unknown source) compile15 [135] 100.0% ------------------------------------------------------------------------------------ oracle-error [124] 100.0% [130] 694(0.9%) 0(0.0%) for-loop ...ie/no-inf-columns/src/points.rkt:189:2 loop [139] 51.9% map [138] 48.1% ------------------------------------------------------------------------------------ eval-const-expr [122] 100.0% [131] 308(0.4%) 0(0.0%) eval (unknown source) add-ns-scopes [143] 100.0% ------------------------------------------------------------------------------------ loop [139] 50.0% eval-const-expr [122] 50.0% [132] 298(0.4%) 0(0.0%) inductor .../no-inf-columns/src/programs.rkt:104:4 loop [139] 100.0% ------------------------------------------------------------------------------------ eval-errors [125] 100.0% [133] 296(0.4%) 296(0.4%) for-loop ...ie/no-inf-columns/src/points.rkt:181:2 ------------------------------------------------------------------------------------ get-final-combination [126] 100.0% [134] 296(0.4%) 0(0.0%) infer-splitpoints ...mns/src/core/regimes.rkt:34:0 for-loop [144] 100.0% ------------------------------------------------------------------------------------ temp85_0 [129] 100.0% [135] 12628(15.6%) 0(0.0%) compile15 (unknown source) temp91_0 [145] 100.0% ------------------------------------------------------------------------------------ ??? [127] 38.6% location-do [136] 61.4% [136] 12334(15.3%) 0(0.0%) location-do ...o-inf-columns/src/programs.rkt:64:0 location-do [136] 61.4% ??? [127] 38.6% ------------------------------------------------------------------------------------ ??? [128] 100.0% [137] 9780(12.1%) 658(0.8%) ??? ...tract/private/arrow-higher-order.rkt:364:33 ival-sub [147] 57.3% ival-div [151] 14.1% ival-log [152] 11.5% ival-neg [153] 10.4% ------------------------------------------------------------------------------------ parse-loop80 [173] 7.7% for-loop [130] 8.6% taylor [32] 32.4% f67 [5] 51.3% [138] 3884(4.8%) 0(0.0%) map ...t-7.2/collects/racket/private/map.rkt:35:13 parse-loop80 [173] 42.0% taylor [32] 32.4% f67 [5] 9.3% ??? [155] 8.6% hash-ref! [146] 5.1% ??? [154] 2.6% ------------------------------------------------------------------------------------ inductor [132] 8.6% for-loop [130] 10.4% loop! [149] 21.1% mk-enode-rec! [83] 26.1% loop [139] 33.8% [139] 3456(4.3%) 602(0.7%) loop ...-7.2/collects/racket/private/map.rkt:40:19 loop [139] 33.8% loop! [149] 21.1% mk-enode-rec! [83] 17.3% ??? [155] 10.4% inductor [132] 4.3% ------------------------------------------------------------------------------------ ??? [127] 100.0% [140] 2970(3.7%) 0(0.0%) mk-ival ...no-inf-columns/src/biginterval.rkt:57:0 bf [148] 100.0% ------------------------------------------------------------------------------------ ??? [128] 100.0% [141] 2584(3.2%) 1924(2.4%) ??? ...no-inf-columns/src/syntax/syntax.rkt:214:17 return/no-unsupplied [156] 25.5% ------------------------------------------------------------------------------------ ??? [127] 100.0% [142] 2356(2.9%) 606(0.7%) sample-multi-bounded ...olumns/src/points.rkt:15:0 random-ranges [150] 74.3% ------------------------------------------------------------------------------------ eval [131] 100.0% [143] 308(0.4%) 308(0.4%) add-ns-scopes (unknown source) ------------------------------------------------------------------------------------ infer-splitpoints [134] 100.0% [144] 296(0.4%) 0(0.0%) for-loop ...-inf-columns/src/core/regimes.rkt:47:6 option-on-expr [157] 100.0% ------------------------------------------------------------------------------------ compile15 [135] 100.0% [145] 12628(15.6%) 0(0.0%) temp91_0 (unknown source) temp118_0 [159] 94.8% compile-top9 [167] 5.2% ------------------------------------------------------------------------------------ localize-error [51] 0.9% map [138] 1.8% ??? [165] 2.4% for-loop [23] 5.6% for-loop [181] 5.9% loop [42] 10.2% for-loop [18] 14.0% ??? [160] 28.9% ??? [127] 28.9% [146] 11104(13.7%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 simplify [158] 35.9% ??? [160] 28.9% ??? [4] 17.1% ??? [8] 5.9% ??? [9] 5.6% parse-loop80 [173] 2.7% ??? [165] 2.4% ------------------------------------------------------------------------------------ ??? [137] 100.0% [147] 5600(6.9%) 1922(2.4%) ival-sub ...o-inf-columns/src/biginterval.rkt:99:0 bfdiv [161] 65.7% ------------------------------------------------------------------------------------ mk-ival [140] 100.0% [148] 2970(3.7%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 new-mpfr [174] 76.3% ??? [175] 23.7% ------------------------------------------------------------------------------------ loop [139] 37.7% merge-egraph-nodes! [88] 62.3% [149] 2516(3.1%) 306(0.4%) loop! ...e/no-inf-columns/src/core/enode.rkt:194:2 custom-set-union [163] 43.2% loop [139] 37.7% update-en-expr [164] 7.1% set [169] 6.0% ------------------------------------------------------------------------------------ sample-multi-bounded [142] 100.0% [150] 1750(2.2%) 680(0.8%) random-ranges ...-inf-columns/src/common.rkt:171:0 cons/c [166] 44.1% build--> [171] 17.0% ------------------------------------------------------------------------------------ ??? [137] 100.0% [151] 1380(1.7%) 0(0.0%) ival-div ...-inf-columns/src/biginterval.rkt:147:0 bfdiv [161] 100.0% ------------------------------------------------------------------------------------ ??? [137] 100.0% [152] 1122(1.4%) 300(0.4%) ival-log ...-inf-columns/src/biginterval.rkt:185:0 bfneg [162] 73.3% ------------------------------------------------------------------------------------ ??? [137] 100.0% [153] 1020(1.3%) 0(0.0%) ival-neg ...o-inf-columns/src/biginterval.rkt:89:0 bfneg [162] 100.0% ------------------------------------------------------------------------------------ map [138] 32.3% for-loop [86] 67.7% [154] 930(1.2%) 930(1.2%) ??? ...ket-7.2/collects/racket/function.rkt:138:13 ------------------------------------------------------------------------------------ map [138] 48.1% loop [139] 51.9% [155] 694(0.9%) 0(0.0%) ??? ...herbie/no-inf-columns/src/points.rkt:190:26 ??? [121] 100.0% ------------------------------------------------------------------------------------ ??? [141] 100.0% [156] 660(0.8%) 360(0.4%) return/no-unsupplied ...ct/private/arr-i.rkt:542:0 filter [170] 45.5% ------------------------------------------------------------------------------------ for-loop [144] 100.0% [157] 296(0.4%) 0(0.0%) option-on-expr ...lumns/src/core/regimes.rkt:126:0 ??? [168] 100.0% ------------------------------------------------------------------------------------ for-loop [18] 2.9% taylor-sqrt [43] 10.2% hash-ref! [146] 86.9% [158] 12034(14.9%) 0(0.0%) simplify ...o-inf-columns/src/core/reduce.rkt:16:0 parse-loop80 [173] 89.2% f67 [5] 8.2% debug-print [179] 2.7% ------------------------------------------------------------------------------------ temp91_0 [145] 100.0% [159] 11970(14.8%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [172] 100.0% ------------------------------------------------------------------------------------ hash-ref! [146] 100.0% [160] 9222(11.4%) 0(0.0%) ??? ...ie/no-inf-columns/src/core/taylor.rkt:45:15 hash-ref! [146] 100.0% ------------------------------------------------------------------------------------ ival-div [151] 27.3% ival-sub [147] 72.7% [161] 5058(6.3%) 0(0.0%) bfdiv ...-lib/math/private/bigfloat/mpfr.rkt:821:4 new-mpfr [174] 86.9% ??? [175] 13.1% ------------------------------------------------------------------------------------ ival-log [152] 44.6% ival-neg [153] 55.4% [162] 1842(2.3%) 0(0.0%) bfneg ...-lib/math/private/bigfloat/mpfr.rkt:618:4 ??? [175] 53.3% new-mpfr [174] 46.7% ------------------------------------------------------------------------------------ loop! [149] 100.0% [163] 1552(1.9%) 598(0.7%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [177] 61.5% ------------------------------------------------------------------------------------ ??? [120] 23.9% loop! [149] 27.6% for-loop [123] 48.5% [164] 1296(1.6%) 1296(1.6%) update-en-expr ...olumns/src/core/egraph.rkt:207:0 ------------------------------------------------------------------------------------ hash-ref! [146] 100.0% [165] 968(1.2%) 0(0.0%) ??? ...e/no-inf-columns/src/core/taylor.rkt:363:30 hash-ref! [146] 100.0% ------------------------------------------------------------------------------------ random-ranges [150] 100.0% [166] 772(1.0%) 0(0.0%) cons/c .../racket/contract/private/guts.rkt:504:15 coerce-contract [176] 100.0% ------------------------------------------------------------------------------------ temp91_0 [145] 100.0% [167] 658(0.8%) 0(0.0%) compile-top9 (unknown source) compile-forms33 [178] 100.0% ------------------------------------------------------------------------------------ option-on-expr [157] 47.7% ??? [127] 52.3% [168] 620(0.8%) 620(0.8%) ??? ...cts/racket/contract/private/list.rkt:209:10 ------------------------------------------------------------------------------------ loop! [149] 49.5% new-enode [92] 50.5% [169] 606(0.7%) 606(0.7%) set ...collects/racket/private/set-types.rkt:981:0 ------------------------------------------------------------------------------------ return/no-unsupplied [156] 100.0% [170] 300(0.4%) 300(0.4%) filter ...2/collects/racket/private/list.rkt:256:2 ------------------------------------------------------------------------------------ random-ranges [150] 100.0% [171] 298(0.4%) 0(0.0%) build--> ...act/private/arrow-val-first.rkt:1088:0 coerce-contract [176] 100.0% ------------------------------------------------------------------------------------ loop [192] 7.3% temp118_0 [159] 92.7% [172] 12910(16.0%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [180] 90.1% dispatch-transformer41 [182] 5.1% loop [192] 2.4% expand-id-application-form17 [196] 2.3% ------------------------------------------------------------------------------------ append-map [28] 0.8% hash-ref! [146] 2.7% map [138] 5.0% for-loop [22] 7.3% parse-loop80 [173] 29.6% simplify [158] 54.6% [173] 11032(13.6%) 0(0.0%) parse-loop80 ...s/racket/match/compiler.rkt:418:15 eval-const-expr [122] 42.5% parse-loop80 [173] 29.6% f67 [5] 16.3% for-loop [181] 7.3% map [138] 2.7% simplify-node [13] 1.6% ------------------------------------------------------------------------------------ bfneg [162] 11.4% bf [148] 30.1% bfdiv [161] 58.4% [174] 7522(9.3%) 7522(9.3%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 ------------------------------------------------------------------------------------ bfdiv [161] 20.0% bf [148] 21.3% loop [36] 28.9% bfneg [162] 29.7% [175] 3304(4.1%) 3304(4.1%) ??? /opt/racket-7.2/collects/ffi/unsafe.rkt:905:4 ------------------------------------------------------------------------------------ build--> [171] 21.4% build-unary-very-simple--> [55] 23.2% cons/c [166] 55.4% [176] 1394(1.7%) 0(0.0%) coerce-contract ...contract/private/guts.rkt:308:0 coerce-contract/f [183] 100.0% ------------------------------------------------------------------------------------ custom-set-union [163] 100.0% [177] 954(1.2%) 0(0.0%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [184] 100.0% ------------------------------------------------------------------------------------ compile-top9 [167] 100.0% [178] 658(0.8%) 324(0.4%) compile-forms33 (unknown source) for-loop [188] 50.8% ------------------------------------------------------------------------------------ taylor [32] 48.4% simplify [158] 51.6% [179] 620(0.8%) 620(0.8%) debug-print .../no-inf-columns/src/debug.rkt:110:0 ------------------------------------------------------------------------------------ expand-capturing-lifts [172] 100.0% [180] 11638(14.4%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [185] 91.6% loop [192] 8.4% ------------------------------------------------------------------------------------ parse-loop80 [173] 100.0% [181] 2660(3.3%) 0(0.0%) for-loop ...inf-columns/src/core/taylor.rkt:517:59 hash-ref! [146] 100.0% ------------------------------------------------------------------------------------ loop [192] 18.6% expand-capturing-lifts [172] 40.7% for-loop [188] 40.7% [182] 1616(2.0%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [186] 100.0% ------------------------------------------------------------------------------------ coerce-contract [176] 100.0% [183] 1394(1.7%) 324(0.4%) coerce-contract/f ...ntract/private/guts.rkt:373:0 coerce-simple-value [187] 76.8% ------------------------------------------------------------------------------------ for-loop [177] 100.0% [184] 954(1.2%) 954(1.2%) for-loop ...cts/racket/private/set-types.rkt:178:5 ------------------------------------------------------------------------------------ lambda-clause-expander [180] 28.1% for-loop [188] 71.9% [185] 10656(13.2%) 0(0.0%) finish-bodys (unknown source) for-loop [188] 100.0% ------------------------------------------------------------------------------------ dispatch-transformer41 [182] 100.0% [186] 1616(2.0%) 300(0.4%) apply-transformer52 (unknown source) apply-transformer-in-context [189] 22.0% syntax-remove-taint-dispatch-properties [190] 20.5% apply-post-expansion [191] 20.2% loop [192] 18.7% ------------------------------------------------------------------------------------ coerce-contract/f [183] 100.0% [187] 1070(1.3%) 1070(1.3%) coerce-simple-value ...ract/private/guts.rkt:386:0 ------------------------------------------------------------------------------------ compile-forms33 [178] 2.9% fallback-loop [31] 9.7% for-loop [188] 15.3% finish-bodys [185] 72.2% [188] 11672(14.4%) 4234(5.2%) for-loop (unknown source) finish-bodys [185] 53.7% for-loop [188] 15.3% syntax-e [6] 6.6% loop [192] 4.1% compile-module-linklet57 [194] 2.9% expand-implicit [10] 2.2% expand-identifier [11] 1.8% expand-id-application-form17 [196] 1.2% dispatch-transformer41 [182] 0.5% ------------------------------------------------------------------------------------ apply-transformer52 [186] 100.0% [189] 356(0.4%) 0(0.0%) apply-transformer-in-context (unknown source) parse-app [193] 100.0% ------------------------------------------------------------------------------------ apply-transformer52 [186] 100.0% [190] 332(0.4%) 332(0.4%) syntax-remove-taint-dispatch-properties ...source) ------------------------------------------------------------------------------------ apply-transformer52 [186] 100.0% [191] 326(0.4%) 0(0.0%) apply-post-expansion (unknown source) gf [195] 100.0% ------------------------------------------------------------------------------------ apply-transformer52 [186] 1.7% expand-capturing-lifts [172] 1.8% loop [192] 3.0% eval-const-expr [122] 6.9% lambda-clause-expander [180] 11.0% for-loop [188] 12.8% loop [111] 13.8% syntax-e/no-taint [19] 49.0% [192] 8968(11.1%) 1896(2.3%) loop (unknown source) gf [195] 49.0% expand-id-application-form17 [196] 14.5% expand-capturing-lifts [172] 6.9% expand-identifier [11] 4.0% dispatch-transformer41 [182] 3.3% loop [192] 3.0% syntax-e [6] 1.7% ------------------------------------------------------------------------------------ apply-transformer-in-context [189] 100.0% [193] 356(0.4%) 356(0.4%) parse-app ...collects/racket/private/kw.rkt:1107:2 ------------------------------------------------------------------------------------ for-loop [188] 100.0% [194] 334(0.4%) 334(0.4%) compile-module-linklet57 (unknown source) ------------------------------------------------------------------------------------ apply-post-expansion [191] 3.2% loop [192] 96.8% [195] 5072(6.3%) 922(1.1%) gf (unknown source) propagation-apply [197] 56.0% propagation-merge [199] 12.8% cache-or-reuse-hash [200] 6.6% syntax-e/no-taint [19] 3.2% cache-or-reuse-set [201] 3.2% ------------------------------------------------------------------------------------ expand-capturing-lifts [172] 11.5% for-loop [188] 24.9% loop [192] 63.7% [196] 2614(3.2%) 0(0.0%) expand-id-application-form17 (unknown source) resolve+shift28 [20] 51.3% binding-lookup52 [198] 24.9% syntax-e/no-taint [19] 23.9% ------------------------------------------------------------------------------------ gf [195] 100.0% [197] 2840(3.5%) 2840(3.5%) propagation-apply (unknown source) ------------------------------------------------------------------------------------ expand-id-application-form17 [196] 100.0% [198] 650(0.8%) 650(0.8%) binding-lookup52 (unknown source) ------------------------------------------------------------------------------------ gf [195] 100.0% [199] 650(0.8%) 650(0.8%) propagation-merge (unknown source) ------------------------------------------------------------------------------------ gf [195] 100.0% [200] 334(0.4%) 334(0.4%) cache-or-reuse-hash (unknown source) ------------------------------------------------------------------------------------ gf [195] 100.0% [201] 326(0.4%) 326(0.4%) cache-or-reuse-set (unknown source) ------------------------------------------------------------------------------------