Profiling results ----------------- Total cpu time observed: 81750ms (out of 82384ms) Number of samples taken: 267 (once every 306ms) (Hiding functions with self<1.0% and local<2.0%: 5 of 209 hidden) ========================================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ========================================================================================== ??? [22] 100.0% [1] 81750(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [12] 100.0% ------------------------------------------------------------------------------------------ taylor-invert [47] 7.9% ??? [129] 9.1% hash-ref! [109] 83.0% [2] 3410(4.2%) 304(0.4%) simplify ...o-inf-columns/src/core/reduce.rkt:16:0 f46 [15] 52.0% parse-loop80 [17] 39.1% ------------------------------------------------------------------------------------------ ??? [129] 100.0% [3] 3100(3.8%) 0(0.0%) approximate9 ...f-columns/src/core/taylor.rkt:12:0 loop [14] 72.8% for-loop [20] 18.5% taylor [23] 8.7% ------------------------------------------------------------------------------------------ matcher [92] 100.0% [4] 2862(3.5%) 0(0.0%) ??? .../no-inf-columns/src/core/matcher.rkt:130:11 for-loop [13] 96.9% foldl [151] 3.1% ------------------------------------------------------------------------------------------ map [40] 21.4% loop [131] 78.6% [5] 1558(1.9%) 0(0.0%) ??? ...herbie/no-inf-columns/src/points.rkt:190:26 ??? [43] 100.0% ------------------------------------------------------------------------------------------ hash-ref! [109] 100.0% [6] 1462(1.8%) 0(0.0%) ??? ...e/no-inf-columns/src/core/taylor.rkt:291:26 for-loop [16] 100.0% ------------------------------------------------------------------------------------------ for-loop [203] 100.0% [7] 882(1.1%) 270(0.3%) expand-implicit (unknown source) resolve+shift28 [200] 34.9% binding-lookup52 [182] 34.5% ------------------------------------------------------------------------------------------ for-loop [203] 100.0% [8] 624(0.8%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [18] 100.0% ------------------------------------------------------------------------------------------ ??? [22] 100.0% [9] 606(0.7%) 0(0.0%) get-final-combination ...ns/src/mainloop.rkt:369:0 infer-splitpoints [19] 100.0% ------------------------------------------------------------------------------------------ copying-mergesort [58] 100.0% [10] 306(0.4%) 0(0.0%) jloop ...2/collects/racket/private/sort.rkt:120:23 ??? [43] 100.0% ------------------------------------------------------------------------------------------ hash-ref! [109] 100.0% [11] 300(0.4%) 0(0.0%) ??? ...e/no-inf-columns/src/core/taylor.rkt:301:23 for-loop [21] 100.0% ------------------------------------------------------------------------------------------ profile-thunk16 [1] 100.0% [12] 81750(100.0%) 0(0.0%) run ...et-7.2/share/pkgs/profile-lib/main.rkt:39:2 ??? [22] 100.0% ------------------------------------------------------------------------------------------ ??? [4] 100.0% [13] 2862(3.5%) 0(0.0%) for-loop ...nf-columns/src/core/matcher.rkt:132:15 matcher [92] 100.0% ------------------------------------------------------------------------------------------ approximate9 [3] 100.0% [14] 2256(2.8%) 0(0.0%) loop ...ie/no-inf-columns/src/core/taylor.rkt:87:4 hash-ref! [109] 75.8% ??? [129] 24.2% ------------------------------------------------------------------------------------------ simplify [2] 100.0% [15] 1772(2.2%) 0(0.0%) f46 ...2/collects/racket/match/compiler.rkt:507:40 eval-const-expr [27] 65.8% map [40] 34.2% ------------------------------------------------------------------------------------------ ??? [6] 100.0% [16] 1462(1.8%) 0(0.0%) for-loop ...inf-columns/src/core/taylor.rkt:291:52 hash-ref! [109] 100.0% ------------------------------------------------------------------------------------------ simplify [2] 100.0% [17] 1334(1.6%) 0(0.0%) parse-loop80 ...s/racket/match/compiler.rkt:418:15 eval-const-expr [27] 100.0% ------------------------------------------------------------------------------------------ syntax-e [8] 100.0% [18] 624(0.8%) 0(0.0%) syntax-e/no-taint (unknown source) loop [197] 100.0% ------------------------------------------------------------------------------------------ get-final-combination [9] 100.0% [19] 606(0.7%) 0(0.0%) infer-splitpoints ...mns/src/core/regimes.rkt:34:0 for-loop [24] 100.0% ------------------------------------------------------------------------------------------ approximate9 [3] 100.0% [20] 574(0.7%) 0(0.0%) for-loop ...-inf-columns/src/core/taylor.rkt:30:18 taylor [23] 100.0% ------------------------------------------------------------------------------------------ ??? [11] 100.0% [21] 300(0.4%) 0(0.0%) for-loop ...inf-columns/src/core/taylor.rkt:304:27 hash-ref! [109] 100.0% ------------------------------------------------------------------------------------------ for-loop [101] 0.2% for-loop [99] 1.0% run [12] 49.4% [22] 81750(100.0%) 302(0.4%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 49.4% run-improve47 [25] 42.2% prepare-points-intervals [26] 5.0% oracle-error [28] 1.1% ??? [43] 0.8% loop [131] 0.4% get-final-combination [9] 0.3% errors [91] 0.3% eval-errors [30] 0.2% eval-const-expr [27] 0.1% ------------------------------------------------------------------------------------------ taylor [23] 16.0% approximate9 [3] 32.0% for-loop [20] 52.0% [23] 844(1.0%) 0(0.0%) taylor ...no-inf-columns/src/core/taylor.rkt:170:0 map [40] 84.0% taylor [23] 16.0% ------------------------------------------------------------------------------------------ infer-splitpoints [19] 100.0% [24] 606(0.7%) 0(0.0%) for-loop ...-inf-columns/src/core/regimes.rkt:47:6 option-on-expr [29] 100.0% ------------------------------------------------------------------------------------------ ??? [22] 100.0% [25] 69626(85.2%) 0(0.0%) run-improve47 ...nf-columns/src/mainloop.rkt:345:0 for-loop [31] 99.5% simplify! [42] 0.5% ------------------------------------------------------------------------------------------ ??? [22] 100.0% [26] 8094(9.9%) 0(0.0%) prepare-points-intervals ...s/src/points.rkt:110:0 loop [32] 100.0% ------------------------------------------------------------------------------------------ ??? [22] 10.7% f46 [15] 41.6% parse-loop80 [17] 47.6% [27] 2800(3.4%) 0(0.0%) eval-const-expr ...-columns/src/programs.rkt:118:0 temp85_0 [108] 79.6% loop [197] 10.7% ??? [64] 9.6% ------------------------------------------------------------------------------------------ ??? [22] 100.0% [28] 1856(2.3%) 0(0.0%) oracle-error ...o-inf-columns/src/points.rkt:188:0 for-loop [33] 100.0% ------------------------------------------------------------------------------------------ for-loop [24] 100.0% [29] 606(0.7%) 0(0.0%) option-on-expr ...lumns/src/core/regimes.rkt:126:0 sort-context-on-expr [34] 50.5% for-loop [36] 49.5% ------------------------------------------------------------------------------------------ ??? [22] 100.0% [30] 302(0.4%) 0(0.0%) eval-errors ...no-inf-columns/src/points.rkt:179:0 for-loop [35] 100.0% ------------------------------------------------------------------------------------------ run-improve47 [25] 100.0% [31] 69262(84.7%) 0(0.0%) for-loop .../no-inf-columns/src/mainloop.rkt:363:4 run-iter! [37] 100.0% ------------------------------------------------------------------------------------------ prepare-points-intervals [26] 100.0% [32] 8094(9.9%) 0(0.0%) loop ...herbie/no-inf-columns/src/points.rkt:123:4 loop [38] 59.9% ??? [39] 40.1% ------------------------------------------------------------------------------------------ oracle-error [28] 100.0% [33] 1856(2.3%) 0(0.0%) for-loop ...ie/no-inf-columns/src/points.rkt:189:2 loop [131] 82.0% map [40] 18.0% ------------------------------------------------------------------------------------------ option-on-expr [29] 100.0% [34] 306(0.4%) 0(0.0%) sort-context-on-expr ...src/core/regimes.rkt:119:0 ??? [41] 100.0% ------------------------------------------------------------------------------------------ eval-errors [30] 100.0% [35] 302(0.4%) 0(0.0%) for-loop ...ie/no-inf-columns/src/points.rkt:181:2 ??? [43] 100.0% ------------------------------------------------------------------------------------------ option-on-expr [29] 100.0% [36] 300(0.4%) 0(0.0%) for-loop ...inf-columns/src/core/regimes.rkt:136:4 errors [91] 100.0% ------------------------------------------------------------------------------------------ for-loop [31] 100.0% [37] 69262(84.7%) 0(0.0%) run-iter! ...no-inf-columns/src/mainloop.rkt:326:0 simplify! [42] 84.3% finalize-iter! [44] 5.5% gen-series! [45] 4.9% gen-rewrites! [46] 4.1% choose-best-alt! [48] 1.2% ------------------------------------------------------------------------------------------ loop [32] 100.0% [38] 4848(5.9%) 0(0.0%) loop .../herbie/no-inf-columns/src/points.rkt:81:2 ??? [43] 100.0% ------------------------------------------------------------------------------------------ loop [32] 100.0% [39] 3246(4.0%) 0(0.0%) ??? .../herbie/no-inf-columns/src/points.rkt:106:2 ??? [129] 100.0% ------------------------------------------------------------------------------------------ for-loop [33] 18.7% f46 [15] 34.0% taylor [23] 47.3% [40] 1784(2.2%) 296(0.4%) map ...t-7.2/collects/racket/private/map.rkt:35:13 taylor-invert [47] 47.3% ??? [5] 18.7% ??? [49] 17.4% ------------------------------------------------------------------------------------------ sort-context-on-expr [34] 100.0% [41] 306(0.4%) 0(0.0%) ??? ...-7.2/collects/racket/private/sort.rkt:369:3 generic-sort/key [50] 100.0% ------------------------------------------------------------------------------------------ run-improve47 [25] 0.6% run-iter! [37] 99.4% [42] 58742(71.9%) 0(0.0%) simplify! ...no-inf-columns/src/mainloop.rkt:223:0 ??? [51] 100.0% ------------------------------------------------------------------------------------------ loop [131] 3.2% for-loop [35] 3.3% jloop [10] 3.3% ??? [5] 16.9% ??? [22] 20.7% loop [38] 52.6% [43] 9222(11.3%) 306(0.4%) ??? ...erbie/no-inf-columns/src/programs.rkt:115:2 ??? [53] 70.9% ??? [129] 18.9% ??? [103] 6.9% ------------------------------------------------------------------------------------------ run-iter! [37] 100.0% [44] 3784(4.6%) 0(0.0%) finalize-iter! ...f-columns/src/mainloop.rkt:277:0 ??? [52] 100.0% ------------------------------------------------------------------------------------------ run-iter! [37] 100.0% [45] 3410(4.2%) 0(0.0%) gen-series! ...-inf-columns/src/mainloop.rkt:159:0 for-loop [54] 100.0% ------------------------------------------------------------------------------------------ run-iter! [37] 100.0% [46] 2862(3.5%) 0(0.0%) gen-rewrites! ...nf-columns/src/mainloop.rkt:182:0 for-loop [55] 100.0% ------------------------------------------------------------------------------------------ map [40] 100.0% [47] 844(1.0%) 0(0.0%) taylor-invert ...columns/src/core/taylor.rkt:318:0 first-nonzero-exp [56] 68.0% simplify [2] 32.0% ------------------------------------------------------------------------------------------ run-iter! [37] 100.0% [48] 828(1.0%) 0(0.0%) choose-best-alt! ...columns/src/mainloop.rkt:116:0 ??? [52] 100.0% ------------------------------------------------------------------------------------------ map [40] 100.0% [49] 310(0.4%) 0(0.0%) ??? ...bie/no-inf-columns/src/core/reduce.rkt:59:5 for-loop [57] 100.0% ------------------------------------------------------------------------------------------ ??? [41] 100.0% [50] 306(0.4%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [58] 100.0% ------------------------------------------------------------------------------------------ simplify! [42] 100.0% [51] 58742(71.9%) 0(0.0%) ??? ...e/no-inf-columns/src/core/simplify.rkt:26:0 for-loop [59] 91.7% one-iter [67] 6.5% loop [71] 1.8% ------------------------------------------------------------------------------------------ choose-best-alt! [48] 11.5% variable? [119] 18.5% match-e [98] 19.8% finalize-iter! [44] 50.3% [52] 7230(8.8%) 2916(3.6%) ??? ...contract/private/arrow-val-first.rkt:390:18 for-loop [60] 50.3% ??? [65] 11.5% ------------------------------------------------------------------------------------------ ??? [43] 100.0% [53] 6534(8.0%) 898(1.1%) ??? ...t-7.2/collects/racket/private/kw.rkt:594:14 ??? [63] 37.1% ??? [129] 30.3% ??? [64] 18.9% ------------------------------------------------------------------------------------------ gen-series! [45] 100.0% [54] 3410(4.2%) 0(0.0%) for-loop .../no-inf-columns/src/mainloop.rkt:166:7 taylor-alt [61] 100.0% ------------------------------------------------------------------------------------------ gen-rewrites! [46] 100.0% [55] 2862(3.5%) 0(0.0%) for-loop ...no-inf-columns/src/mainloop.rkt:190:11 rewrite-expression-head20 [62] 100.0% ------------------------------------------------------------------------------------------ taylor-invert [47] 100.0% [56] 574(0.7%) 0(0.0%) first-nonzero-exp ...mns/src/core/taylor.rkt:266:0 hash-ref! [109] 100.0% ------------------------------------------------------------------------------------------ ??? [49] 100.0% [57] 310(0.4%) 0(0.0%) for-loop ...o-inf-columns/src/core/reduce.rkt:60:7 pattern-match [66] 100.0% ------------------------------------------------------------------------------------------ generic-sort/key [50] 25.0% copying-mergesort [58] 75.0% [58] 306(0.4%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 copying-mergesort [58] 75.0% jloop [10] 25.0% ------------------------------------------------------------------------------------------ ??? [51] 100.0% [59] 53886(65.9%) 0(0.0%) for-loop ...inf-columns/src/core/simplify.rkt:35:2 one-iter [67] 99.4% loop [71] 0.6% ------------------------------------------------------------------------------------------ ??? [52] 100.0% [60] 3784(4.6%) 0(0.0%) for-loop ...nf-columns/src/core/alt-table.rkt:55:2 atab-add-altn [70] 52.7% errors [91] 40.1% loop [76] 7.1% ------------------------------------------------------------------------------------------ for-loop [54] 100.0% [61] 3410(4.2%) 0(0.0%) taylor-alt ...o-inf-columns/src/mainloop.rkt:145:0 for-loop [68] 100.0% ------------------------------------------------------------------------------------------ for-loop [55] 100.0% [62] 2862(3.5%) 0(0.0%) rewrite-expression-head20 ...core/matcher.rkt:87:0 rewriter [69] 100.0% ------------------------------------------------------------------------------------------ ??? [53] 100.0% [63] 2424(3.0%) 2424(3.0%) ??? ...no-inf-columns/src/syntax/syntax.rkt:214:17 ------------------------------------------------------------------------------------------ eval-const-expr [27] 18.0% ??? [53] 82.0% [64] 1504(1.8%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:364:33 ival-add [72] 82.0% ??? [77] 18.0% ------------------------------------------------------------------------------------------ ??? [52] 100.0% [65] 828(1.0%) 0(0.0%) ??? .../no-inf-columns/src/core/alt-table.rkt:58:0 argmin [73] 62.8% loop [75] 37.2% ------------------------------------------------------------------------------------------ for-loop [57] 100.0% [66] 310(0.4%) 0(0.0%) pattern-match ...columns/src/core/matcher.rkt:30:0 for-loop [74] 100.0% ------------------------------------------------------------------------------------------ ??? [51] 6.6% for-loop [59] 93.4% [67] 57340(70.1%) 0(0.0%) one-iter ...inf-columns/src/core/simplify.rkt:72:0 find-matches [78] 62.9% for-loop [79] 30.1% for-loop [81] 4.0% for-loop [83] 2.9% ------------------------------------------------------------------------------------------ taylor-alt [61] 100.0% [68] 3410(4.2%) 0(0.0%) for-loop .../no-inf-columns/src/mainloop.rkt:151:6 ??? [129] 100.0% ------------------------------------------------------------------------------------------ rewrite-expression-head20 [62] 28.0% matcher [92] 72.0% [69] 2862(3.5%) 300(0.4%) rewriter ...-inf-columns/src/core/matcher.rkt:90:2 for-loop [80] 76.1% *rules* [82] 21.3% ------------------------------------------------------------------------------------------ for-loop [60] 100.0% [70] 1996(2.4%) 0(0.0%) atab-add-altn ...umns/src/core/alt-table.rkt:203:0 errors [91] 85.0% append-at-pnts [86] 15.0% ------------------------------------------------------------------------------------------ for-loop [59] 24.0% ??? [51] 76.0% [71] 1402(1.7%) 0(0.0%) loop ...o-inf-columns/src/core/extraction.rkt:25:2 for-loop [84] 100.0% ------------------------------------------------------------------------------------------ ??? [64] 100.0% [72] 1234(1.5%) 0(0.0%) ival-add ...o-inf-columns/src/biginterval.rkt:93:0 bfmul [159] 100.0% ------------------------------------------------------------------------------------------ ??? [65] 100.0% [73] 520(0.6%) 0(0.0%) argmin ...acket-7.2/collects/racket/list.rkt:765:0 ??? [85] 100.0% ------------------------------------------------------------------------------------------ pattern-match [66] 100.0% [74] 310(0.4%) 0(0.0%) for-loop ...-inf-columns/src/core/matcher.rkt:27:9 core651 [175] 100.0% ------------------------------------------------------------------------------------------ ??? [65] 100.0% [75] 308(0.4%) 0(0.0%) loop .../racket-7.2/collects/racket/list.rkt:751:4 ??? [85] 100.0% ------------------------------------------------------------------------------------------ for-loop [60] 100.0% [76] 270(0.3%) 0(0.0%) loop ...o-inf-columns/src/core/alt-table.rkt:177:2 loop [87] 100.0% ------------------------------------------------------------------------------------------ ??? [64] 100.0% [77] 270(0.3%) 0(0.0%) ??? ...ects/racket/contract/private/prop.rkt:541:4 ??? [88] 100.0% ------------------------------------------------------------------------------------------ one-iter [67] 100.0% [78] 36076(44.1%) 0(0.0%) find-matches ...columns/src/core/simplify.rkt:62:0 for-loop [89] 100.0% ------------------------------------------------------------------------------------------ one-iter [67] 100.0% [79] 17254(21.1%) 276(0.3%) for-loop ...inf-columns/src/core/simplify.rkt:74:2 for-loop [90] 98.4% ------------------------------------------------------------------------------------------ rewriter [69] 100.0% [80] 2862(3.5%) 0(0.0%) for-loop ...-inf-columns/src/core/matcher.rkt:92:4 matcher [92] 100.0% ------------------------------------------------------------------------------------------ one-iter [67] 100.0% [81] 2322(2.8%) 0(0.0%) for-loop ...inf-columns/src/core/simplify.rkt:81:2 set-precompute! [93] 100.0% ------------------------------------------------------------------------------------------ rewriter [69] 100.0% [82] 2208(2.7%) 248(0.3%) *rules* ...-inf-columns/src/syntax/rules.rkt:666:0 for-loop [94] 88.8% ------------------------------------------------------------------------------------------ one-iter [67] 100.0% [83] 1688(2.1%) 0(0.0%) for-loop ...inf-columns/src/core/simplify.rkt:84:2 update-leader! [116] 100.0% ------------------------------------------------------------------------------------------ loop [71] 100.0% [84] 1402(1.7%) 0(0.0%) for-loop ...f-columns/src/core/extraction.rkt:29:4 for-loop [95] 62.8% make-sequence [110] 37.2% ------------------------------------------------------------------------------------------ loop [75] 37.2% argmin [73] 62.8% [85] 828(1.0%) 0(0.0%) ??? ...rbie/no-inf-columns/src/mainloop.rkt:113:10 errors [91] 100.0% ------------------------------------------------------------------------------------------ atab-add-altn [70] 100.0% [86] 300(0.4%) 0(0.0%) append-at-pnts ...mns/src/core/alt-table.rkt:146:0 loop [96] 100.0% ------------------------------------------------------------------------------------------ loop [76] 100.0% [87] 270(0.3%) 270(0.3%) loop ...-7.2/collects/racket/private/hash.rkt:20:4 ------------------------------------------------------------------------------------------ ??? [77] 100.0% [88] 270(0.3%) 0(0.0%) ??? ...lects/racket/contract/private/orc.rkt:83:14 ??? [97] 100.0% ------------------------------------------------------------------------------------------ for-loop [89] 49.1% find-matches [78] 50.9% [89] 36076(44.1%) 1508(1.8%) for-loop ...inf-columns/src/core/simplify.rkt:64:8 for-loop [89] 49.1% match-e [98] 47.9% ------------------------------------------------------------------------------------------ for-loop [79] 100.0% [90] 16978(20.8%) 0(0.0%) for-loop ...inf-columns/src/core/simplify.rkt:77:4 merge-egraph-nodes! [107] 52.1% dedup-children! [117] 19.9% mk-enode-rec! [145] 15.1% pattern-substitute [102] 13.0% ------------------------------------------------------------------------------------------ for-loop [36] 6.0% ??? [22] 13.5% ??? [85] 16.5% for-loop [60] 30.3% atab-add-altn [70] 33.8% [91] 5018(6.1%) 0(0.0%) errors ...rbie/no-inf-columns/src/points.rkt:201:0 for-loop [99] 59.9% eval-prog [100] 40.1% ------------------------------------------------------------------------------------------ for-loop [13] 50.0% for-loop [80] 50.0% [92] 2862(3.5%) 0(0.0%) matcher ...-inf-columns/src/core/matcher.rkt:118:2 ??? [4] 52.1% rewriter [69] 47.9% ------------------------------------------------------------------------------------------ for-loop [81] 100.0% [93] 2322(2.8%) 0(0.0%) set-precompute! ...umns/src/core/simplify.rkt:88:0 for-loop [101] 100.0% ------------------------------------------------------------------------------------------ *rules* [82] 100.0% [94] 1960(2.4%) 870(1.1%) for-loop ...bie/no-inf-columns/src/common.rkt:62:9 flag-set? [112] 28.1% ormap [104] 13.9% ??? [103] 13.7% ------------------------------------------------------------------------------------------ for-loop [84] 100.0% [95] 880(1.1%) 636(0.8%) for-loop ...-columns/src/core/extraction.rkt:37:16 for-loop [105] 27.7% ------------------------------------------------------------------------------------------ append-at-pnts [86] 100.0% [96] 300(0.4%) 300(0.4%) loop ...o-inf-columns/src/core/alt-table.rkt:101:2 ------------------------------------------------------------------------------------------ ??? [88] 100.0% [97] 270(0.3%) 270(0.3%) ??? ...ects/racket/contract/private/list.rkt:163:5 ------------------------------------------------------------------------------------------ for-loop [115] 33.2% for-loop [89] 66.8% [98] 34568(42.3%) 4640(5.7%) match-e ...no-inf-columns/src/core/ematch.rkt:39:0 for-loop [106] 80.1% constant? [132] 5.6% variable? [119] 2.5% make-sequence [110] 1.7% ??? [52] 1.4% ------------------------------------------------------------------------------------------ errors [91] 100.0% [99] 3006(3.7%) 548(0.7%) for-loop ...ie/no-inf-columns/src/points.rkt:203:2 ??? [22] 81.8% ------------------------------------------------------------------------------------------ loop [131] 22.7% errors [91] 77.3% [100] 2602(3.2%) 0(0.0%) eval-prog .../no-inf-columns/src/programs.rkt:83:0 temp85_0 [108] 65.4% hash-ref! [109] 12.0% inductor [114] 11.5% loop [197] 11.1% ------------------------------------------------------------------------------------------ set-precompute! [93] 100.0% [101] 2322(2.8%) 0(0.0%) for-loop ...inf-columns/src/core/simplify.rkt:90:2 setfindf [111] 38.8% merge-egraph-nodes! [107] 35.3% ??? [22] 25.9% ------------------------------------------------------------------------------------------ pattern-substitute [102] 30.3% for-loop [90] 69.7% [102] 2204(2.7%) 1592(1.9%) pattern-substitute ...ns/src/core/matcher.rkt:46:0 pattern-substitute [102] 30.3% ??? [113] 13.9% ------------------------------------------------------------------------------------------ for-loop [94] 29.6% ??? [43] 70.4% [103] 906(1.1%) 906(1.1%) ??? ...cket-7.2/collects/racket/function.rkt:93:12 ------------------------------------------------------------------------------------------ for-loop [94] 100.0% [104] 272(0.3%) 0(0.0%) ormap ....2/collects/racket/private/map.rkt:141:13 flag-set? [112] 100.0% ------------------------------------------------------------------------------------------ for-loop [95] 100.0% [105] 244(0.3%) 244(0.3%) for-loop ...-columns/src/core/extraction.rkt:41:23 ------------------------------------------------------------------------------------------ match-e [98] 100.0% [106] 31454(38.5%) 10474(12.8%) for-loop ...-inf-columns/src/core/ematch.rkt:52:11 for-loop [115] 53.6% do-curry [158] 8.2% procedure-reduce-keyword-arity-mask [122] 4.9% loop [131] 4.3% cartesian-product [124] 3.2% ------------------------------------------------------------------------------------------ merge-egraph-nodes! [107] 3.1% for-loop [101] 8.5% for-loop [90] 86.9% [107] 9658(11.8%) 308(0.4%) merge-egraph-nodes! ...s/src/core/egraph.rkt:145:0 update-leader! [116] 63.3% loop! [120] 26.0% merge-egraph-nodes! [107] 3.1% dedup-children! [117] 2.9% ------------------------------------------------------------------------------------------ eval-prog [100] 43.3% eval-const-expr [27] 56.7% [108] 3932(4.8%) 0(0.0%) temp85_0 (unknown source) compile15 [118] 100.0% ------------------------------------------------------------------------------------------ eval-prog [100] 2.0% ??? [128] 2.6% for-loop [21] 3.2% loop [131] 7.9% for-loop [16] 11.6% loop [14] 14.3% first-nonzero-exp [56] 18.3% ??? [121] 20.1% ??? [129] 20.1% [109] 3142(3.8%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 simplify [2] 38.3% ??? [121] 20.1% ??? [123] 14.3% ??? [6] 11.6% ??? [127] 9.9% ??? [11] 3.2% ??? [128] 2.6% ------------------------------------------------------------------------------------------ for-loop [84] 46.6% match-e [98] 53.4% [110] 1120(1.4%) 1120(1.4%) make-sequence ...ects/racket/private/for.rkt:530:2 ------------------------------------------------------------------------------------------ for-loop [101] 100.0% [111] 900(1.1%) 0(0.0%) setfindf ...ie/no-inf-columns/src/common.rkt:130:0 for-loop [125] 100.0% ------------------------------------------------------------------------------------------ ormap [104] 33.1% for-loop [94] 66.9% [112] 822(1.0%) 822(1.0%) flag-set? ...ie/no-inf-columns/src/config.rkt:28:0 ------------------------------------------------------------------------------------------ pattern-substitute [102] 100.0% [113] 612(0.7%) 0(0.0%) ??? ...ects/racket/contract/private/guts.rkt:772:8 dict? [126] 100.0% ------------------------------------------------------------------------------------------ eval-prog [100] 14.3% inductor [114] 85.7% [114] 298(0.4%) 0(0.0%) inductor .../no-inf-columns/src/programs.rkt:104:4 inductor [114] 85.7% variable? [119] 14.3% ------------------------------------------------------------------------------------------ for-loop [106] 100.0% [115] 21962(26.9%) 584(0.7%) for-loop ...-inf-columns/src/core/ematch.rkt:58:37 match-e [98] 92.6% ??? [136] 5.4% ------------------------------------------------------------------------------------------ for-loop [83] 21.2% merge-egraph-nodes! [107] 78.8% [116] 7968(9.7%) 0(0.0%) update-leader! ...olumns/src/core/egraph.rkt:213:0 for-loop [130] 90.4% mutable-set [138] 3.4% custom-set-union! [139] 3.2% for-loop [140] 3.1% ------------------------------------------------------------------------------------------ merge-egraph-nodes! [107] 14.3% for-loop [90] 85.7% [117] 3936(4.8%) 0(0.0%) dedup-children! ...olumns/src/core/enode.rkt:202:0 loop [134] 69.2% loop [135] 30.8% ------------------------------------------------------------------------------------------ temp85_0 [108] 100.0% [118] 3932(4.8%) 0(0.0%) compile15 (unknown source) temp91_0 [133] 100.0% ------------------------------------------------------------------------------------------ inductor [114] 11.0% match-e [98] 89.0% [119] 2716(3.3%) 632(0.8%) variable? ...f-columns/src/syntax/syntax.rkt:729:0 ??? [52] 54.7% value? [141] 22.0% ------------------------------------------------------------------------------------------ loop [131] 24.2% merge-egraph-nodes! [107] 75.8% [120] 2508(3.1%) 0(0.0%) loop! ...e/no-inf-columns/src/core/enode.rkt:194:2 loop [131] 50.7% custom-set-union [137] 25.1% set [173] 17.7% update-en-expr [188] 6.5% ------------------------------------------------------------------------------------------ hash-ref! [109] 100.0% [121] 2256(2.8%) 0(0.0%) ??? ...ie/no-inf-columns/src/core/taylor.rkt:45:15 hash-ref! [109] 100.0% ------------------------------------------------------------------------------------------ for-loop [106] 100.0% [122] 2154(2.6%) 2154(2.6%) procedure-reduce-keyword-arity-mask ....rkt:1562:4 ------------------------------------------------------------------------------------------ hash-ref! [109] 100.0% [123] 1710(2.1%) 0(0.0%) ??? ...ie/no-inf-columns/src/core/taylor.rkt:68:15 ??? [129] 100.0% ------------------------------------------------------------------------------------------ for-loop [106] 100.0% [124] 1464(1.8%) 1464(1.8%) cartesian-product ...ollects/racket/list.rkt:822:0 ------------------------------------------------------------------------------------------ setfindf [111] 100.0% [125] 900(1.1%) 600(0.7%) for-loop ...ie/no-inf-columns/src/common.rkt:131:2 constant? [132] 33.3% ------------------------------------------------------------------------------------------ ??? [113] 100.0% [126] 612(0.7%) 612(0.7%) dict? ...ollects/racket/private/generic.rkt:146:11 ------------------------------------------------------------------------------------------ hash-ref! [109] 100.0% [127] 312(0.4%) 0(0.0%) ??? ...erbie/no-inf-columns/src/programs.rkt:161:5 loop [131] 100.0% ------------------------------------------------------------------------------------------ hash-ref! [109] 100.0% [128] 246(0.3%) 0(0.0%) ??? ...e/no-inf-columns/src/core/taylor.rkt:344:33 hash-ref! [109] 100.0% ------------------------------------------------------------------------------------------ loop [14] 1.8% ??? [123] 5.5% location-do [143] 12.8% for-loop [68] 12.8% ??? [43] 16.8% ??? [53] 19.1% ??? [39] 31.3% [129] 10378(12.7%) 1342(1.6%) ??? ...tract/private/arrow-higher-order.rkt:360:33 sample-multi-bounded [146] 22.2% ival-mult [147] 19.1% location-do [143] 12.8% approximate9 [3] 11.3% mk-ival [149] 10.0% hash-ref! [109] 7.2% ??? [153] 3.0% simplify [2] 1.5% ------------------------------------------------------------------------------------------ update-leader! [116] 100.0% [130] 7200(8.8%) 0(0.0%) for-loop ...-inf-columns/src/core/egraph.rkt:218:6 hash-update! [156] 60.0% for-loop [144] 40.0% ------------------------------------------------------------------------------------------ for-loop [106] 0.3% ??? [127] 4.6% ??? [22] 6.5% for-loop [33] 8.2% loop! [120] 12.3% mk-enode-rec! [145] 16.6% loop [131] 51.5% [131] 6774(8.3%) 1654(2.0%) loop ...-7.2/collects/racket/private/map.rkt:40:19 loop [131] 51.5% mk-enode-rec! [145] 16.6% loop! [120] 6.9% eval-prog [100] 6.5% ??? [5] 6.0% hash-ref! [109] 3.7% ??? [43] 2.2% foldl [151] 0.0% ------------------------------------------------------------------------------------------ for-loop [125] 7.2% match-e [98] 92.8% [132] 4140(5.1%) 278(0.3%) constant? ...f-columns/src/syntax/syntax.rkt:726:0 value? [141] 93.3% ------------------------------------------------------------------------------------------ compile15 [118] 100.0% [133] 3932(4.8%) 0(0.0%) temp91_0 (unknown source) temp118_0 [142] 93.7% compile-top9 [155] 6.3% ------------------------------------------------------------------------------------------ dedup-children! [117] 22.1% loop [134] 77.9% [134] 2722(3.3%) 0(0.0%) loop ...racket-7.2/collects/racket/list.rkt:417:34 loop [134] 77.9% member [148] 13.5% loop [197] 8.6% ------------------------------------------------------------------------------------------ dedup-children! [117] 38.6% loop [135] 61.4% [135] 1214(1.5%) 1214(1.5%) loop ...racket-7.2/collects/racket/list.rkt:434:17 loop [135] 61.4% ------------------------------------------------------------------------------------------ for-loop [115] 100.0% [136] 1194(1.5%) 300(0.4%) ??? ...bie/no-inf-columns/src/core/ematch.rkt:43:5 for-loop [150] 74.9% ------------------------------------------------------------------------------------------ loop! [120] 100.0% [137] 630(0.8%) 296(0.4%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [152] 53.0% ------------------------------------------------------------------------------------------ update-leader! [116] 100.0% [138] 268(0.3%) 268(0.3%) mutable-set .../racket/private/set-types.rkt:999:0 ------------------------------------------------------------------------------------------ update-leader! [116] 100.0% [139] 252(0.3%) 0(0.0%) custom-set-union! ...t/private/set-types.rkt:245:0 for-loop [154] 100.0% ------------------------------------------------------------------------------------------ update-leader! [116] 100.0% [140] 248(0.3%) 248(0.3%) for-loop ...-inf-columns/src/core/egraph.rkt:228:6 ------------------------------------------------------------------------------------------ variable? [119] 13.4% constant? [132] 86.6% [141] 4460(5.5%) 4460(5.5%) value? ...no-inf-columns/src/syntax/types.rkt:18:0 ------------------------------------------------------------------------------------------ temp91_0 [133] 100.0% [142] 3686(4.5%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [157] 100.0% ------------------------------------------------------------------------------------------ location-do [143] 36.2% ??? [129] 63.8% [143] 3410(4.2%) 0(0.0%) location-do ...o-inf-columns/src/programs.rkt:64:0 ??? [129] 63.8% location-do [143] 36.2% ------------------------------------------------------------------------------------------ for-loop [130] 100.0% [144] 2880(3.5%) 0(0.0%) for-loop ...-inf-columns/src/core/egraph.rkt:219:8 hash-update! [156] 100.0% ------------------------------------------------------------------------------------------ loop [131] 22.0% for-loop [90] 78.0% [145] 2562(3.1%) 1108(1.4%) mk-enode-rec! ...columns/src/core/egraph.rkt:117:0 loop [131] 22.0% new-enode [162] 21.5% do-curry [158] 19.3% procedure-reduce-arity [168] 4.8% ------------------------------------------------------------------------------------------ ??? [129] 100.0% [146] 2304(2.8%) 664(0.8%) sample-multi-bounded ...olumns/src/points.rkt:15:0 random-ranges [160] 56.7% for-loop [165] 14.5% ------------------------------------------------------------------------------------------ ??? [129] 100.0% [147] 1978(2.4%) 692(0.8%) ival-mult ...inf-columns/src/biginterval.rkt:111:0 bfmul [159] 65.0% ------------------------------------------------------------------------------------------ loop [134] 100.0% [148] 1488(1.8%) 1488(1.8%) member (unknown source) ------------------------------------------------------------------------------------------ ??? [129] 100.0% [149] 1036(1.3%) 0(0.0%) mk-ival ...no-inf-columns/src/biginterval.rkt:57:0 bf [161] 100.0% ------------------------------------------------------------------------------------------ ??? [136] 100.0% [150] 894(1.1%) 894(1.1%) for-loop ...o-inf-columns/src/core/ematch.rkt:44:7 ------------------------------------------------------------------------------------------ loop [131] 48.5% ??? [4] 51.5% [151] 688(0.8%) 0(0.0%) foldl ....2/collects/racket/private/list.rkt:229:4 ??? [163] 51.5% merge2 [164] 48.5% ------------------------------------------------------------------------------------------ custom-set-union [137] 100.0% [152] 334(0.4%) 0(0.0%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [166] 100.0% ------------------------------------------------------------------------------------------ ??? [129] 100.0% [153] 308(0.4%) 308(0.4%) ??? ...cts/racket/contract/private/list.rkt:209:10 ------------------------------------------------------------------------------------------ custom-set-union! [139] 100.0% [154] 252(0.3%) 252(0.3%) for-loop ...cts/racket/private/set-types.rkt:253:4 ------------------------------------------------------------------------------------------ temp91_0 [133] 100.0% [155] 246(0.3%) 0(0.0%) compile-top9 (unknown source) compile-forms33 [167] 100.0% ------------------------------------------------------------------------------------------ for-loop [144] 40.0% for-loop [130] 60.0% [156] 7200(8.8%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [169] 100.0% ------------------------------------------------------------------------------------------ loop [197] 13.8% temp118_0 [142] 86.2% [157] 4276(5.2%) 300(0.4%) expand-capturing-lifts (unknown source) lambda-clause-expander [170] 73.4% dispatch-transformer41 [174] 13.8% expand-id-application-form17 [178] 5.8% ------------------------------------------------------------------------------------------ mk-enode-rec! [145] 16.6% for-loop [106] 83.4% [158] 3958(4.8%) 3958(4.8%) do-curry ...-7.2/collects/racket/function.rkt:71:2 ------------------------------------------------------------------------------------------ ival-add [72] 49.0% ival-mult [147] 51.0% [159] 2520(3.1%) 0(0.0%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:821:4 ??? [172] 63.3% new-mpfr [171] 36.7% ------------------------------------------------------------------------------------------ sample-multi-bounded [146] 100.0% [160] 1306(1.6%) 714(0.9%) random-ranges ...-inf-columns/src/common.rkt:171:0 build--> [176] 45.3% ------------------------------------------------------------------------------------------ mk-ival [149] 100.0% [161] 1036(1.3%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 new-mpfr [171] 100.0% ------------------------------------------------------------------------------------------ mk-enode-rec! [145] 100.0% [162] 552(0.7%) 0(0.0%) new-enode ...-inf-columns/src/core/enode.rkt:101:0 set [173] 54.7% type-of-enode-expr [177] 45.3% ------------------------------------------------------------------------------------------ foldl [151] 100.0% [163] 354(0.4%) 0(0.0%) ??? ...ie/no-inf-columns/src/core/matcher.rkt:26:7 core651 [175] 100.0% ------------------------------------------------------------------------------------------ foldl [151] 100.0% [164] 334(0.4%) 334(0.4%) merge2 .../no-inf-columns/src/core/ematch.rkt:24:0 ------------------------------------------------------------------------------------------ sample-multi-bounded [146] 100.0% [165] 334(0.4%) 334(0.4%) for-loop ...bie/no-inf-columns/src/points.rkt:23:4 ------------------------------------------------------------------------------------------ for-loop [152] 100.0% [166] 334(0.4%) 334(0.4%) for-loop ...cts/racket/private/set-types.rkt:178:5 ------------------------------------------------------------------------------------------ compile-top9 [155] 100.0% [167] 246(0.3%) 0(0.0%) compile-forms33 (unknown source) for-loop [203] 100.0% ------------------------------------------------------------------------------------------ mk-enode-rec! [145] 100.0% [168] 244(0.3%) 244(0.3%) procedure-reduce-arity ...t/private/kw.rkt:1690:11 ------------------------------------------------------------------------------------------ hash-update! [156] 100.0% [169] 7200(8.8%) 0(0.0%) ??? ...e/no-inf-columns/src/core/egraph.rkt:221:24 for-loop [179] 100.0% ------------------------------------------------------------------------------------------ expand-capturing-lifts [157] 100.0% [170] 3138(3.8%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [180] 91.3% loop [197] 8.7% ------------------------------------------------------------------------------------------ bfmul [159] 47.2% bf [161] 52.8% [171] 1962(2.4%) 1962(2.4%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 ------------------------------------------------------------------------------------------ bfmul [159] 100.0% [172] 1594(1.9%) 1594(1.9%) ??? /opt/racket-7.2/collects/ffi/unsafe.rkt:905:4 ------------------------------------------------------------------------------------------ new-enode [162] 25.4% loop! [120] 74.6% [173] 1190(1.5%) 1190(1.5%) set ...collects/racket/private/set-types.rkt:981:0 ------------------------------------------------------------------------------------------ for-loop [203] 22.9% loop [197] 24.3% expand-capturing-lifts [157] 52.8% [174] 1118(1.4%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [181] 100.0% ------------------------------------------------------------------------------------------ for-loop [74] 46.7% ??? [163] 53.3% [175] 664(0.8%) 0(0.0%) core651 ...acket/contract/private/arr-i.rkt:929:19 successfully-got-the-right-kind-of-function [183] 53.3% un-dep/maybe-chaperone [184] 46.7% ------------------------------------------------------------------------------------------ random-ranges [160] 100.0% [176] 592(0.7%) 0(0.0%) build--> ...act/private/arrow-val-first.rkt:1088:0 chaperone-contract? [185] 50.7% coerce-contract [186] 49.3% ------------------------------------------------------------------------------------------ new-enode [162] 100.0% [177] 250(0.3%) 0(0.0%) type-of-enode-expr ...umns/src/core/enode.rkt:66:0 table-ref [187] 100.0% ------------------------------------------------------------------------------------------ expand-capturing-lifts [157] 100.0% [178] 248(0.3%) 0(0.0%) expand-id-application-form17 (unknown source) binding-lookup52 [182] 100.0% ------------------------------------------------------------------------------------------ ??? [169] 100.0% [179] 7200(8.8%) 6654(8.1%) for-loop ...inf-columns/src/core/egraph.rkt:222:26 update-en-expr [188] 7.6% ------------------------------------------------------------------------------------------ lambda-clause-expander [170] 30.0% for-loop [203] 70.0% [180] 2866(3.5%) 0(0.0%) finish-bodys (unknown source) for-loop [203] 100.0% ------------------------------------------------------------------------------------------ dispatch-transformer41 [174] 100.0% [181] 1118(1.4%) 528(0.6%) apply-transformer52 (unknown source) apply-transformer-in-context [190] 26.8% apply-post-expansion [192] 25.9% ------------------------------------------------------------------------------------------ expand-id-application-form17 [178] 44.9% expand-implicit [7] 55.1% [182] 552(0.7%) 552(0.7%) binding-lookup52 (unknown source) ------------------------------------------------------------------------------------------ core651 [175] 100.0% [183] 354(0.4%) 354(0.4%) successfully-got-the-right-kind-of-function ...1:4 ------------------------------------------------------------------------------------------ core651 [175] 100.0% [184] 310(0.4%) 0(0.0%) un-dep/maybe-chaperone ...private/arr-i.rkt:1108:2 ??? [189] 100.0% ------------------------------------------------------------------------------------------ build--> [176] 100.0% [185] 300(0.4%) 300(0.4%) chaperone-contract? ...ract/private/guts.rkt:136:0 ------------------------------------------------------------------------------------------ build--> [176] 100.0% [186] 292(0.4%) 0(0.0%) coerce-contract ...contract/private/guts.rkt:308:0 coerce-contract/f [191] 100.0% ------------------------------------------------------------------------------------------ type-of-enode-expr [177] 100.0% [187] 250(0.3%) 250(0.3%) table-ref ...ie/no-inf-columns/src/common.rkt:33:0 ------------------------------------------------------------------------------------------ loop! [120] 37.4% for-loop [179] 62.6% [188] 872(1.1%) 872(1.1%) update-en-expr ...olumns/src/core/egraph.rkt:207:0 ------------------------------------------------------------------------------------------ un-dep/maybe-chaperone [184] 100.0% [189] 310(0.4%) 0(0.0%) ??? ...cts/racket/contract/private/guts.rkt:837:10 ??? [193] 100.0% ------------------------------------------------------------------------------------------ apply-transformer52 [181] 100.0% [190] 300(0.4%) 0(0.0%) apply-transformer-in-context (unknown source) parse-lambda [194] 100.0% ------------------------------------------------------------------------------------------ coerce-contract [186] 100.0% [191] 292(0.4%) 0(0.0%) coerce-contract/f ...ntract/private/guts.rkt:373:0 coerce-simple-value [195] 100.0% ------------------------------------------------------------------------------------------ apply-transformer52 [181] 100.0% [192] 290(0.4%) 0(0.0%) apply-post-expansion (unknown source) gf [198] 100.0% ------------------------------------------------------------------------------------------ ??? [189] 100.0% [193] 310(0.4%) 310(0.4%) ??? ...ntract/private/arrow-higher-order.rkt:560:2 ------------------------------------------------------------------------------------------ apply-transformer-in-context [190] 100.0% [194] 300(0.4%) 0(0.0%) parse-lambda ...llects/racket/private/kw.rkt:587:2 datum->syntax6 [196] 100.0% ------------------------------------------------------------------------------------------ coerce-contract/f [191] 100.0% [195] 292(0.4%) 292(0.4%) coerce-simple-value ...ract/private/guts.rkt:386:0 ------------------------------------------------------------------------------------------ parse-lambda [194] 100.0% [196] 300(0.4%) 0(0.0%) datum->syntax6 (unknown source) loop [197] 100.0% ------------------------------------------------------------------------------------------ gf [198] 3.8% eval-prog [100] 3.8% lambda-clause-expander [170] 7.1% eval-const-expr [27] 7.9% datum->syntax6 [196] 7.9% syntax-e/no-taint [18] 16.4% for-loop [203] 20.9% loop [134] 32.3% [197] 3816(4.7%) 2072(2.5%) loop (unknown source) gf [198] 16.4% core-form-sym [199] 14.4% expand-capturing-lifts [157] 11.7% dispatch-transformer41 [174] 7.1% ------------------------------------------------------------------------------------------ apply-post-expansion [192] 31.7% loop [197] 68.3% [198] 914(1.1%) 0(0.0%) gf (unknown source) propagation-apply [201] 68.3% loop [197] 31.7% ------------------------------------------------------------------------------------------ loop [197] 100.0% [199] 548(0.7%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [200] 100.0% ------------------------------------------------------------------------------------------ expand-implicit [7] 36.0% core-form-sym [199] 64.0% [200] 856(1.0%) 548(0.7%) resolve+shift28 (unknown source) fallback-loop [202] 36.0% ------------------------------------------------------------------------------------------ gf [198] 100.0% [201] 624(0.8%) 624(0.8%) propagation-apply (unknown source) ------------------------------------------------------------------------------------------ resolve+shift28 [200] 100.0% [202] 308(0.4%) 0(0.0%) fallback-loop (unknown source) for-loop [203] 100.0% ------------------------------------------------------------------------------------------ fallback-loop [202] 0.5% compile-forms33 [167] 7.9% for-loop [203] 8.2% finish-bodys [180] 83.5% [203] 3112(3.8%) 616(0.8%) for-loop (unknown source) finish-bodys [180] 58.1% for-loop [203] 8.2% compile-module-linklet57 [204] 7.9% loop [197] 7.3% expand-implicit [7] 4.2% syntax-e [8] 2.8% dispatch-transformer41 [174] 1.2% ------------------------------------------------------------------------------------------ for-loop [203] 100.0% [204] 246(0.3%) 246(0.3%) compile-module-linklet57 (unknown source) ------------------------------------------------------------------------------------------