Profiling results ----------------- Total cpu time observed: 35186ms (out of 35364ms) Number of samples taken: 178 (once every 198ms) (Hiding functions with self<1.0% and local<2.0%: 3 of 207 hidden) ==================================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ==================================================================================== [1] 35186(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [11] 100.0% ------------------------------------------------------------------------------------ ??? [146] 100.0% [2] 3282(9.3%) 0(0.0%) approximate9 ...y-regraph/src/core/taylor.rkt:11:0 loop [12] 69.8% taylor [21] 12.3% for-loop [17] 11.8% taylor-sqrt [26] 6.2% ------------------------------------------------------------------------------------ loop [185] 35.6% for-loop [178] 64.4% [3] 1192(3.4%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [13] 100.0% ------------------------------------------------------------------------------------ matcher [94] 100.0% [4] 1180(3.4%) 0(0.0%) ??? ...implify-regraph/src/core/matcher.rkt:127:11 for-loop [14] 100.0% ------------------------------------------------------------------------------------ hash-ref! [125] 100.0% [5] 740(2.1%) 0(0.0%) ??? ...simplify-regraph/src/core/taylor.rkt:290:26 for-loop [15] 100.0% ------------------------------------------------------------------------------------ for-loop [178] 100.0% [6] 578(1.6%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [16] 65.1% datum->syntax6 [128] 34.9% ------------------------------------------------------------------------------------ loop [185] 100.0% [7] 202(0.6%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [16] 100.0% ------------------------------------------------------------------------------------ hash-ref! [125] 100.0% [8] 200(0.6%) 0(0.0%) ??? ...bie/simplify-regraph/src/programs.rkt:178:5 loop [185] 100.0% ------------------------------------------------------------------------------------ hash-ref! [125] 100.0% [9] 186(0.5%) 0(0.0%) ??? ...simplify-regraph/src/core/taylor.rkt:300:23 for-loop [18] 100.0% ------------------------------------------------------------------------------------ map [84] 100.0% [10] 184(0.5%) 0(0.0%) simplify-node ...-regraph/src/core/reduce.rkt:46:0 gather-multiplicative-terms [19] 100.0% ------------------------------------------------------------------------------------ ??? [1] 100.0% [11] 35186(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [20] 100.0% ------------------------------------------------------------------------------------ approximate9 [2] 100.0% [12] 2290(6.5%) 186(0.5%) loop .../simplify-regraph/src/core/taylor.rkt:86:4 hash-ref! [125] 91.9% ------------------------------------------------------------------------------------ syntax-e [3] 100.0% [13] 1192(3.4%) 0(0.0%) syntax-e/no-taint (unknown source) loop [185] 100.0% ------------------------------------------------------------------------------------ ??? [4] 100.0% [14] 1180(3.4%) 0(0.0%) for-loop ...fy-regraph/src/core/matcher.rkt:129:15 matcher [94] 100.0% ------------------------------------------------------------------------------------ ??? [5] 100.0% [15] 740(2.1%) 0(0.0%) for-loop ...ify-regraph/src/core/taylor.rkt:290:52 hash-ref! [125] 50.3% ??? [23] 49.7% ------------------------------------------------------------------------------------ core-form-sym [7] 34.9% expand-implicit [6] 65.1% [16] 578(1.6%) 184(0.5%) resolve+shift28 (unknown source) fallback-loop [22] 68.2% ------------------------------------------------------------------------------------ approximate9 [2] 100.0% [17] 386(1.1%) 0(0.0%) for-loop ...lify-regraph/src/core/taylor.rkt:29:18 taylor [21] 100.0% ------------------------------------------------------------------------------------ ??? [9] 100.0% [18] 186(0.5%) 0(0.0%) for-loop ...ify-regraph/src/core/taylor.rkt:303:27 hash-ref! [125] 100.0% ------------------------------------------------------------------------------------ simplify-node [10] 100.0% [19] 184(0.5%) 0(0.0%) gather-multiplicative-terms ...re/reduce.rkt:110:0 map [84] 100.0% ------------------------------------------------------------------------------------ profile-thunk16 [11] 100.0% [20] 35186(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [24] 100.0% ------------------------------------------------------------------------------------ map [84] 3.4% for-loop [17] 11.8% approximate9 [2] 14.9% hash-ref! [125] 24.9% taylor [21] 45.1% [21] 1358(3.9%) 200(0.6%) taylor ...mplify-regraph/src/core/taylor.rkt:169:0 taylor [21] 45.1% taylor-invert [25] 21.7% taylor-sqrt [26] 14.7% map [84] 10.2% taylor-quotient [27] 3.4% ------------------------------------------------------------------------------------ resolve+shift28 [16] 100.0% [22] 394(1.1%) 0(0.0%) fallback-loop (unknown source) for-loop [178] 100.0% ------------------------------------------------------------------------------------ for-loop [15] 100.0% [23] 368(1.0%) 0(0.0%) ??? ...simplify-regraph/src/core/taylor.rkt:293:19 hash-ref! [125] 100.0% ------------------------------------------------------------------------------------ set-precompute! [121] 0.3% for-loop [102] 3.1% run [20] 96.6% [24] 35186(100.0%) 994(2.8%) .../more-scheme.rkt:261:28 (unknown source) run-improve47 [28] 80.0% prepare-points-intervals [29] 9.6% get-final-combination [30] 3.6% oracle-error [32] 2.3% errors [91] 1.1% ??? [193] 0.6% ??? [34] 0.5% ??? [146] 0.3% temp85_0 [112] 0.3% ------------------------------------------------------------------------------------ taylor [21] 100.0% [25] 590(1.7%) 0(0.0%) taylor-invert ...regraph/src/core/taylor.rkt:317:0 parse-loop74 [92] 68.5% f40 [31] 31.5% ------------------------------------------------------------------------------------ map [84] 31.4% taylor [21] 34.1% approximate9 [2] 34.5% [26] 586(1.7%) 0(0.0%) taylor-sqrt ...y-regraph/src/core/taylor.rkt:351:0 first-nonzero-exp [33] 68.6% f40 [31] 31.4% ------------------------------------------------------------------------------------ taylor [21] 100.0% [27] 184(0.5%) 0(0.0%) taylor-quotient ...graph/src/core/taylor.rkt:333:0 make-multiplication-node [35] 100.0% ------------------------------------------------------------------------------------ .../more-scheme.rkt:261:28 [24] 100.0% [28] 29058(82.6%) 0(0.0%) run-improve47 ...fy-regraph/src/mainloop.rkt:346:0 for-loop [36] 87.4% simplify! [47] 12.6% ------------------------------------------------------------------------------------ .../more-scheme.rkt:261:28 [24] 100.0% [29] 3374(9.6%) 0(0.0%) prepare-points-intervals ...h/src/points.rkt:120:0 loop [37] 100.0% ------------------------------------------------------------------------------------ .../more-scheme.rkt:261:28 [24] 100.0% [30] 1350(3.8%) 0(0.0%) get-final-combination ...ph/src/mainloop.rkt:371:0 infer-splitpoints [38] 100.0% ------------------------------------------------------------------------------------ taylor-sqrt [26] 5.4% taylor-invert [25] 8.2% map [84] 27.8% hash-ref! [125] 58.7% [31] 1140(3.2%) 0(0.0%) f40 (unknown source) map [84] 100.0% ------------------------------------------------------------------------------------ .../more-scheme.rkt:261:28 [24] 100.0% [32] 808(2.3%) 0(0.0%) oracle-error ...plify-regraph/src/points.rkt:177:0 for-loop [39] 100.0% ------------------------------------------------------------------------------------ taylor-sqrt [26] 100.0% [33] 402(1.1%) 0(0.0%) first-nonzero-exp ...aph/src/core/taylor.rkt:265:0 hash-ref! [125] 50.2% f61 [40] 49.8% ------------------------------------------------------------------------------------ .../more-scheme.rkt:261:28 [24] 100.0% [34] 380(1.1%) 380(1.1%) ??? ...cket-7.5/collects/racket/function.rkt:93:12 ------------------------------------------------------------------------------------ taylor-quotient [27] 100.0% [35] 184(0.5%) 0(0.0%) make-multiplication-node .../core/reduce.rkt:232:0 make-multiplication-subnode [41] 100.0% ------------------------------------------------------------------------------------ run-improve47 [28] 100.0% [36] 25408(72.2%) 0(0.0%) for-loop ...implify-regraph/src/mainloop.rkt:365:4 run-iter! [42] 100.0% ------------------------------------------------------------------------------------ prepare-points-intervals [29] 100.0% [37] 3374(9.6%) 0(0.0%) loop ...rbie/simplify-regraph/src/points.rkt:132:4 ??? [43] 52.8% loop [44] 47.2% ------------------------------------------------------------------------------------ get-final-combination [30] 100.0% [38] 1350(3.8%) 0(0.0%) infer-splitpoints ...aph/src/core/regimes.rkt:33:0 for-loop [45] 100.0% ------------------------------------------------------------------------------------ oracle-error [32] 100.0% [39] 808(2.3%) 0(0.0%) for-loop .../simplify-regraph/src/points.rkt:178:2 loop [185] 50.2% map [84] 49.8% ------------------------------------------------------------------------------------ first-nonzero-exp [33] 100.0% [40] 200(0.6%) 0(0.0%) f61 (unknown source) eval-const-expr [103] 100.0% ------------------------------------------------------------------------------------ make-multiplication-node [35] 100.0% [41] 184(0.5%) 0(0.0%) make-multiplication-subnode ...re/reduce.rkt:242:0 for-loop [46] 100.0% ------------------------------------------------------------------------------------ for-loop [36] 100.0% [42] 25408(72.2%) 0(0.0%) run-iter! ...mplify-regraph/src/mainloop.rkt:327:0 simplify! [47] 64.9% finalize-iter! [48] 16.8% gen-series! [49] 12.9% gen-rewrites! [51] 4.6% choose-best-alt! [54] 0.7% ------------------------------------------------------------------------------------ loop [37] 100.0% [43] 1780(5.1%) 206(0.6%) ??? ...erbie/simplify-regraph/src/points.rkt:113:6 loop [185] 45.2% sample-multi-bounded [186] 43.3% ------------------------------------------------------------------------------------ loop [37] 100.0% [44] 1594(4.5%) 196(0.6%) loop ...erbie/simplify-regraph/src/points.rkt:79:2 real->precision [52] 50.2% ??? [146] 25.0% ??? [61] 12.5% ------------------------------------------------------------------------------------ infer-splitpoints [38] 100.0% [45] 1350(3.8%) 0(0.0%) for-loop ...lify-regraph/src/core/regimes.rkt:45:6 option-on-expr [50] 100.0% ------------------------------------------------------------------------------------ make-multiplication-subnode [41] 100.0% [46] 184(0.5%) 0(0.0%) for-loop ...lify-regraph/src/core/reduce.rkt:244:3 partition [53] 100.0% ------------------------------------------------------------------------------------ run-improve47 [28] 18.1% run-iter! [42] 81.9% [47] 20146(57.3%) 0(0.0%) simplify! ...mplify-regraph/src/mainloop.rkt:224:0 ??? [55] 100.0% ------------------------------------------------------------------------------------ run-iter! [42] 100.0% [48] 4266(12.1%) 0(0.0%) finalize-iter! ...y-regraph/src/mainloop.rkt:278:0 ??? [56] 100.0% ------------------------------------------------------------------------------------ run-iter! [42] 100.0% [49] 3282(9.3%) 0(0.0%) gen-series! ...lify-regraph/src/mainloop.rkt:160:0 for-loop [57] 100.0% ------------------------------------------------------------------------------------ for-loop [45] 100.0% [50] 1350(3.8%) 0(0.0%) option-on-expr ...graph/src/core/regimes.rkt:124:0 for-loop [59] 41.0% err-lsts->split-indices [60] 29.9% sort-context-on-expr [62] 15.3% ??? [61] 13.8% ------------------------------------------------------------------------------------ run-iter! [42] 100.0% [51] 1180(3.4%) 0(0.0%) gen-rewrites! ...fy-regraph/src/mainloop.rkt:183:0 for-loop [58] 100.0% ------------------------------------------------------------------------------------ loop [44] 100.0% [52] 800(2.3%) 0(0.0%) real->precision ...-regraph/src/programs.rkt:94:11 ??? [146] 100.0% ------------------------------------------------------------------------------------ for-loop [46] 100.0% [53] 184(0.5%) 184(0.5%) partition ...et-7.5/collects/racket/list.rkt:555:0 ------------------------------------------------------------------------------------ run-iter! [42] 100.0% [54] 184(0.5%) 0(0.0%) choose-best-alt! ...regraph/src/mainloop.rkt:117:0 ...ow-val-first.rkt:486:18 [63] 100.0% ------------------------------------------------------------------------------------ simplify! [47] 100.0% [55] 20146(57.3%) 0(0.0%) ??? ...simplify-regraph/src/core/simplify.rkt:38:0 ??? [64] 100.0% ------------------------------------------------------------------------------------ finalize-iter! [48] 100.0% [56] 4266(12.1%) 0(0.0%) ??? ...contract/private/arrow-val-first.rkt:486:18 for-loop [65] 90.4% atab-add-altns [68] 9.6% ------------------------------------------------------------------------------------ gen-series! [49] 100.0% [57] 3282(9.3%) 0(0.0%) for-loop ...implify-regraph/src/mainloop.rkt:167:7 taylor-alt [66] 100.0% ------------------------------------------------------------------------------------ gen-rewrites! [51] 100.0% [58] 1180(3.4%) 0(0.0%) for-loop ...mplify-regraph/src/mainloop.rkt:191:11 rewrite-expression-head24 [67] 100.0% ------------------------------------------------------------------------------------ option-on-expr [50] 100.0% [59] 554(1.6%) 0(0.0%) for-loop ...ify-regraph/src/core/regimes.rkt:135:4 errors [91] 100.0% ------------------------------------------------------------------------------------ option-on-expr [50] 100.0% [60] 404(1.1%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:263:0 loop [69] 100.0% ------------------------------------------------------------------------------------ option-on-expr [50] 48.2% loop [44] 51.8% [61] 386(1.1%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:379:33 ival-sub [71] 51.8% ??? [72] 48.2% ------------------------------------------------------------------------------------ option-on-expr [50] 100.0% [62] 206(0.6%) 0(0.0%) sort-context-on-expr ...src/core/regimes.rkt:117:0 ??? [70] 100.0% ------------------------------------------------------------------------------------ choose-best-alt! [54] 100.0% [63] 184(0.5%) 0(0.0%) ...ow-val-first.rkt:486:18 (unknown source) ??? [73] 100.0% ------------------------------------------------------------------------------------ ??? [55] 100.0% [64] 20146(57.3%) 0(0.0%) ??? ...simplify-regraph/src/core/simplify.rkt:56:0 for-loop [74] 100.0% ------------------------------------------------------------------------------------ ??? [56] 100.0% [65] 3858(11.0%) 0(0.0%) for-loop ...fy-regraph/src/core/alt-table.rkt:46:2 atab-add-altn [76] 63.0% loop [78] 21.2% errors [91] 15.8% ------------------------------------------------------------------------------------ for-loop [57] 100.0% [66] 3282(9.3%) 0(0.0%) taylor-alt ...plify-regraph/src/mainloop.rkt:146:0 for-loop [75] 100.0% ------------------------------------------------------------------------------------ for-loop [58] 100.0% [67] 1180(3.4%) 0(0.0%) rewrite-expression-head24 ...core/matcher.rkt:85:0 rewriter [77] 100.0% ------------------------------------------------------------------------------------ ??? [56] 100.0% [68] 408(1.2%) 0(0.0%) atab-add-altns ...raph/src/core/alt-table.rkt:40:0 loop [78] 50.5% atab-add-altn [76] 49.5% ------------------------------------------------------------------------------------ err-lsts->split-indices [60] 100.0% [69] 404(1.1%) 0(0.0%) loop ...implify-regraph/src/core/regimes.rkt:314:4 for-loop [79] 100.0% ------------------------------------------------------------------------------------ sort-context-on-expr [62] 100.0% [70] 206(0.6%) 0(0.0%) ??? ...-7.5/collects/racket/private/sort.rkt:369:3 loop [80] 100.0% ------------------------------------------------------------------------------------ ??? [61] 100.0% [71] 200(0.6%) 200(0.6%) ival-sub ...lify-regraph/src/biginterval.rkt:108:0 ------------------------------------------------------------------------------------ for-loop [81] 50.0% ??? [61] 50.0% [72] 186(0.5%) 186(0.5%) ??? ...cts/racket/contract/private/list.rkt:209:10 for-loop [81] 50.0% ------------------------------------------------------------------------------------ ...ow-val-first.rkt:486:18 [63] 100.0% [73] 184(0.5%) 0(0.0%) ??? ...implify-regraph/src/core/alt-table.rkt:49:0 argmin [82] 100.0% ------------------------------------------------------------------------------------ ??? [64] 100.0% [74] 20146(57.3%) 200(0.6%) for-loop ...ify-regraph/src/core/simplify.rkt:76:2 for-loop [83] 99.0% ------------------------------------------------------------------------------------ taylor-alt [66] 100.0% [75] 3282(9.3%) 0(0.0%) for-loop ...implify-regraph/src/mainloop.rkt:152:6 ??? [146] 100.0% ------------------------------------------------------------------------------------ atab-add-altns [68] 7.7% for-loop [65] 92.3% [76] 2632(7.5%) 0(0.0%) atab-add-altn ...raph/src/core/alt-table.rkt:194:0 errors [91] 92.9% override-at-pnts [88] 7.1% ------------------------------------------------------------------------------------ rewrite-expression-head24 [67] 26.5% matcher [94] 73.5% [77] 1180(3.4%) 0(0.0%) rewriter ...lify-regraph/src/core/matcher.rkt:87:2 for-loop [85] 100.0% ------------------------------------------------------------------------------------ atab-add-altns [68] 20.1% for-loop [65] 79.9% [78] 1024(2.9%) 216(0.6%) loop ...plify-regraph/src/core/alt-table.rkt:168:2 loop [86] 59.2% map [84] 19.7% ------------------------------------------------------------------------------------ loop [69] 100.0% [79] 404(1.1%) 200(0.6%) for-loop ...ify-regraph/src/core/regimes.rkt:279:4 for-loop [87] 50.5% ------------------------------------------------------------------------------------ ??? [70] 100.0% [80] 206(0.6%) 0(0.0%) loop ...7.5/collects/racket/private/sort.rkt:96:12 ??? [146] 100.0% ------------------------------------------------------------------------------------ ??? [72] 100.0% [81] 186(0.5%) 0(0.0%) for-loop ...acket/contract/private/list.rkt:212:15 ??? [72] 100.0% ------------------------------------------------------------------------------------ ??? [73] 100.0% [82] 184(0.5%) 0(0.0%) argmin ...acket-7.5/collects/racket/list.rkt:765:0 ??? [89] 100.0% ------------------------------------------------------------------------------------ for-loop [74] 100.0% [83] 19946(56.7%) 0(0.0%) for-loop ...ify-regraph/src/core/simplify.rkt:80:4 ??? [90] 96.1% prune-phase [96] 2.0% loop [98] 0.9% ??? [99] 0.9% ------------------------------------------------------------------------------------ gather-multiplicative-terms [19] 1.9% loop [78] 10.5% taylor [21] 11.5% for-loop [39] 20.9% f40 [31] 55.3% [84] 1928(5.5%) 184(0.5%) map ...t-7.5/collects/racket/private/map.rkt:35:13 parse-loop74 [92] 34.7% loop [95] 21.0% f40 [31] 13.9% ??? [190] 10.4% taylor [21] 9.5% ??? [97] 4.8% taylor-sqrt [26] 1.9% simplify-node [10] 1.9% ------------------------------------------------------------------------------------ rewriter [77] 100.0% [85] 1180(3.4%) 0(0.0%) for-loop ...lify-regraph/src/core/matcher.rkt:89:4 matcher [94] 73.5% for-loop [93] 26.5% ------------------------------------------------------------------------------------ loop [78] 7.1% loop [86] 92.9% [86] 606(1.7%) 606(1.7%) loop ...racket-7.5/collects/racket/list.rkt:434:28 loop [86] 92.9% ------------------------------------------------------------------------------------ for-loop [79] 100.0% [87] 204(0.6%) 204(0.6%) for-loop ...ify-regraph/src/core/regimes.rkt:283:8 ------------------------------------------------------------------------------------ atab-add-altn [76] 100.0% [88] 186(0.5%) 186(0.5%) override-at-pnts ...h/src/core/alt-table.rkt:129:0 ------------------------------------------------------------------------------------ argmin [82] 100.0% [89] 184(0.5%) 0(0.0%) ??? ...ie/simplify-regraph/src/mainloop.rkt:114:10 errors [91] 100.0% ------------------------------------------------------------------------------------ for-loop [83] 100.0% [90] 19178(54.5%) 0(0.0%) ??? .../p92/.racket/7.5/pkgs/regraph/main.rkt:42:0 for-loop [100] 64.4% find-matches [101] 35.6% ------------------------------------------------------------------------------------ ??? [89] 4.2% for-loop [59] 12.6% .../more-scheme.rkt:261:28 [24] 13.6% for-loop [65] 13.9% atab-add-altn [76] 55.7% [91] 4390(12.5%) 0(0.0%) errors ...ie/simplify-regraph/src/points.rkt:190:0 for-loop [102] 58.8% temp85_0 [112] 31.8% eval [114] 4.9% loop [185] 4.6% ------------------------------------------------------------------------------------ taylor-invert [25] 18.9% map [84] 35.9% hash-ref! [125] 45.2% [92] 2142(6.1%) 0(0.0%) parse-loop74 (unknown source) eval-const-expr [103] 100.0% ------------------------------------------------------------------------------------ for-loop [85] 100.0% [93] 1180(3.4%) 0(0.0%) for-loop ...lify-regraph/src/core/matcher.rkt:96:8 fix-up-variables [104] 100.0% ------------------------------------------------------------------------------------ for-loop [14] 50.0% for-loop [85] 50.0% [94] 1180(3.4%) 0(0.0%) matcher ...lify-regraph/src/core/matcher.rkt:115:2 ??? [4] 50.0% rewriter [77] 50.0% ------------------------------------------------------------------------------------ loop [95] 45.0% map [84] 55.0% [95] 404(1.1%) 0(0.0%) loop ...-7.5/collects/racket/private/map.rkt:40:19 ??? [190] 50.0% loop [95] 45.0% ??? [106] 5.0% ------------------------------------------------------------------------------------ for-loop [83] 100.0% [96] 400(1.1%) 0(0.0%) prune-phase ...cket/7.5/pkgs/regraph/main.rkt:70:0 for-loop [105] 100.0% ------------------------------------------------------------------------------------ map [84] 100.0% [97] 186(0.5%) 0(0.0%) ??? ...e/simplify-regraph/src/core/reduce.rkt:57:5 for-loop [107] 100.0% ------------------------------------------------------------------------------------ for-loop [83] 100.0% [98] 184(0.5%) 0(0.0%) loop ...acket/7.5/pkgs/regraph/extraction.rkt:25:2 for-loop [108] 100.0% ------------------------------------------------------------------------------------ for-loop [83] 100.0% [99] 184(0.5%) 0(0.0%) ??? .../p92/.racket/7.5/pkgs/regraph/main.rkt:53:0 for-loop [109] 100.0% ------------------------------------------------------------------------------------ ??? [90] 100.0% [100] 12344(35.1%) 0(0.0%) for-loop ....racket/7.5/pkgs/regraph/main.rkt:45:2 for-loop [110] 100.0% ------------------------------------------------------------------------------------ ??? [90] 100.0% [101] 6834(19.4%) 0(0.0%) find-matches ...ket/7.5/pkgs/regraph/main.rkt:34:0 for-loop [111] 100.0% ------------------------------------------------------------------------------------ errors [91] 100.0% [102] 2580(7.3%) 184(0.5%) for-loop .../simplify-regraph/src/points.rkt:192:2 .../more-scheme.rkt:261:28 [24] 85.1% ??? [118] 7.8% ------------------------------------------------------------------------------------ f61 [40] 8.5% parse-loop74 [92] 91.5% [103] 2342(6.7%) 0(0.0%) eval-const-expr ...-regraph/src/programs.rkt:120:0 temp85_0 [112] 66.4% eval-prog [116] 17.1% eval [114] 8.6% loop [185] 7.9% ------------------------------------------------------------------------------------ for-loop [93] 100.0% [104] 1180(3.4%) 0(0.0%) fix-up-variables ...aph/src/core/matcher.rkt:108:2 pattern-match [113] 50.2% pattern-substitute [115] 34.1% for-loop [119] 15.8% ------------------------------------------------------------------------------------ prune-phase [96] 100.0% [105] 400(1.1%) 0(0.0%) for-loop ....racket/7.5/pkgs/regraph/main.rkt:73:2 update-leader! [134] 100.0% ------------------------------------------------------------------------------------ loop [95] 100.0% [106] 202(0.6%) 0(0.0%) ??? ...plify-regraph/src/core/alt-table.rkt:185:12 loop [117] 100.0% ------------------------------------------------------------------------------------ ??? [97] 100.0% [107] 186(0.5%) 0(0.0%) for-loop ...plify-regraph/src/core/reduce.rkt:58:7 pattern-match [113] 100.0% ------------------------------------------------------------------------------------ loop [98] 100.0% [108] 184(0.5%) 0(0.0%) for-loop ...t/7.5/pkgs/regraph/extraction.rkt:28:4 for-loop [120] 100.0% ------------------------------------------------------------------------------------ ??? [99] 100.0% [109] 184(0.5%) 0(0.0%) for-loop ....racket/7.5/pkgs/regraph/main.rkt:56:2 set-precompute! [121] 100.0% ------------------------------------------------------------------------------------ for-loop [100] 100.0% [110] 12344(35.1%) 0(0.0%) for-loop ....racket/7.5/pkgs/regraph/main.rkt:48:4 merge-egraph-nodes! [122] 61.3% dedup-children! [147] 26.0% mk-enode-rec! [188] 6.5% substitute-e [126] 6.3% ------------------------------------------------------------------------------------ for-loop [111] 48.6% find-matches [101] 51.4% [111] 6834(19.4%) 186(0.5%) for-loop ....racket/7.5/pkgs/regraph/main.rkt:36:2 for-loop [111] 48.6% match-e [123] 48.6% ------------------------------------------------------------------------------------ .../more-scheme.rkt:261:28 [24] 5.9% errors [91] 44.5% eval-const-expr [103] 49.6% [112] 3134(8.9%) 0(0.0%) temp85_0 (unknown source) compile15 [124] 100.0% ------------------------------------------------------------------------------------ pattern-match [113] 12.0% for-loop [107] 23.9% fix-up-variables [104] 64.1% [113] 778(2.2%) 200(0.6%) pattern-match ...regraph/src/core/matcher.rkt:29:0 for-loop [127] 50.4% pattern-match [113] 12.0% constant? [131] 12.0% ------------------------------------------------------------------------------------ eval-const-expr [103] 48.6% errors [91] 51.4% [114] 416(1.2%) 202(0.6%) eval (unknown source) datum->syntax6 [128] 51.4% ------------------------------------------------------------------------------------ pattern-substitute [115] 33.2% fix-up-variables [104] 66.8% [115] 402(1.1%) 0(0.0%) pattern-substitute ...ph/src/core/matcher.rkt:45:0 do-curry [192] 50.2% pattern-substitute [115] 33.2% variable? [130] 16.6% ------------------------------------------------------------------------------------ eval-const-expr [103] 100.0% [116] 400(1.1%) 0(0.0%) eval-prog ...implify-regraph/src/programs.rkt:82:0 hash-ref! [125] 50.0% inductor [129] 50.0% ------------------------------------------------------------------------------------ ??? [106] 33.3% loop [117] 66.7% [117] 202(0.6%) 202(0.6%) loop ...7.5/collects/racket/private/list.rkt:82:16 loop [117] 66.7% ------------------------------------------------------------------------------------ for-loop [102] 100.0% [118] 200(0.6%) 200(0.6%) ??? ...7.5/collects/racket/private/for.rkt:1236:14 ------------------------------------------------------------------------------------ fix-up-variables [104] 100.0% [119] 186(0.5%) 0(0.0%) for-loop ...lify-regraph/src/core/matcher.rkt:41:9 for-loop [127] 100.0% ------------------------------------------------------------------------------------ for-loop [108] 100.0% [120] 184(0.5%) 184(0.5%) for-loop .../7.5/pkgs/regraph/extraction.rkt:36:16 ------------------------------------------------------------------------------------ for-loop [109] 100.0% [121] 184(0.5%) 0(0.0%) set-precompute! .../7.5/pkgs/regraph/main.rkt:60:0 .../more-scheme.rkt:261:28 [24] 100.0% ------------------------------------------------------------------------------------ for-loop [138] 4.1% merge-egraph-nodes! [122] 4.9% for-loop [110] 91.0% [122] 7562(21.5%) 0(0.0%) merge-egraph-nodes! ...gs/regraph/egraph.rkt:144:0 loop! [133] 55.5% update-leader! [134] 32.8% for-loop [138] 6.8% merge-egraph-nodes! [122] 4.9% ------------------------------------------------------------------------------------ for-loop [150] 20.7% for-loop [111] 79.3% [123] 6648(18.9%) 1550(4.4%) match-e ...racket/7.5/pkgs/regraph/ematch.rkt:35:0 for-loop [132] 78.2% make-sequence [144] 3.0% ------------------------------------------------------------------------------------ temp85_0 [112] 100.0% [124] 3134(8.9%) 0(0.0%) compile15 (unknown source) temp91_0 [135] 100.0% ------------------------------------------------------------------------------------ for-loop [18] 1.3% ??? [145] 2.1% eval-prog [116] 2.2% ??? [140] 2.5% for-loop [15] 2.5% ??? [23] 3.3% first-nonzero-exp [33] 8.8% ??? [136] 12.5% ??? [137] 15.2% ??? [146] 24.8% loop [12] 24.8% [125] 2306(6.6%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [136] 37.3% parse-loop74 [92] 16.3% ??? [137] 15.2% taylor [21] 9.7% f40 [31] 7.7% ??? [5] 5.8% ??? [140] 2.5% ??? [8] 2.2% ??? [145] 2.1% ??? [9] 1.3% ------------------------------------------------------------------------------------ for-loop [110] 100.0% [126] 772(2.2%) 570(1.6%) substitute-e ...t/7.5/pkgs/regraph/ematch.rkt:55:0 return/no-unsupplied [142] 26.2% ------------------------------------------------------------------------------------ for-loop [119] 32.2% pattern-match [113] 67.8% [127] 578(1.6%) 372(1.1%) for-loop ...lify-regraph/src/core/matcher.rkt:26:9 core457 [141] 35.6% ------------------------------------------------------------------------------------ expand-implicit [6] 48.6% eval [114] 51.4% [128] 416(1.2%) 202(0.6%) datum->syntax6 (unknown source) loop [185] 51.4% ------------------------------------------------------------------------------------ eval-prog [116] 100.0% [129] 200(0.6%) 0(0.0%) inductor ...implify-regraph/src/programs.rkt:103:4 table-ref [143] 100.0% ------------------------------------------------------------------------------------ pattern-substitute [115] 100.0% [130] 200(0.6%) 0(0.0%) variable? ...y-regraph/src/syntax/syntax.rkt:729:0 value? [139] 100.0% ------------------------------------------------------------------------------------ pattern-match [113] 100.0% [131] 186(0.5%) 0(0.0%) constant? ...y-regraph/src/syntax/syntax.rkt:726:0 value? [139] 100.0% ------------------------------------------------------------------------------------ match-e [123] 100.0% [132] 5496(15.6%) 2314(6.6%) for-loop ...cket/7.5/pkgs/regraph/ematch.rkt:41:11 for-loop [150] 30.5% procedure-reduce-keyword-arity-mask [153] 14.4% loop [185] 10.7% step [189] 7.3% do-curry [192] 5.5% ------------------------------------------------------------------------------------ loop [185] 29.6% merge-egraph-nodes! [122] 70.4% [133] 4570(13.0%) 778(2.2%) loop! .../.racket/7.5/pkgs/regraph/enode.rkt:158:2 loop [185] 40.7% custom-set-union [152] 27.5% set [151] 19.1% update-en-expr [156] 2.0% ------------------------------------------------------------------------------------ for-loop [105] 12.5% merge-egraph-nodes! [122] 87.5% [134] 3192(9.1%) 0(0.0%) update-leader! ....5/pkgs/regraph/egraph.rkt:211:0 for-loop [149] 87.6% for-loop [154] 12.4% ------------------------------------------------------------------------------------ compile15 [124] 100.0% [135] 3134(8.9%) 0(0.0%) temp91_0 (unknown source) temp118_0 [148] 94.1% compile-top9 [157] 5.9% ------------------------------------------------------------------------------------ hash-ref! [125] 100.0% [136] 2104(6.0%) 0(0.0%) ??? .../simplify-regraph/src/core/taylor.rkt:67:15 ??? [146] 74.7% hash-ref! [125] 25.3% ------------------------------------------------------------------------------------ hash-ref! [125] 100.0% [137] 1536(4.4%) 0(0.0%) ??? .../simplify-regraph/src/core/taylor.rkt:44:15 hash-ref! [125] 100.0% ------------------------------------------------------------------------------------ merge-egraph-nodes! [122] 100.0% [138] 986(2.8%) 0(0.0%) for-loop ...cket/7.5/pkgs/regraph/egraph.rkt:197:4 merge-egraph-nodes! [122] 79.7% dedup-children! [147] 20.3% ------------------------------------------------------------------------------------ constant? [131] 48.2% variable? [130] 51.8% [139] 386(1.1%) 386(1.1%) value? ...mplify-regraph/src/syntax/types.rkt:18:0 ------------------------------------------------------------------------------------ hash-ref! [125] 100.0% [140] 372(1.1%) 0(0.0%) ??? ...simplify-regraph/src/core/taylor.rkt:327:33 hash-ref! [125] 100.0% ------------------------------------------------------------------------------------ for-loop [127] 100.0% [141] 206(0.6%) 0(0.0%) core457 ...acket/contract/private/arr-i.rkt:976:19 ??? [155] 100.0% ------------------------------------------------------------------------------------ substitute-e [126] 100.0% [142] 202(0.6%) 202(0.6%) return/no-unsupplied ...ct/private/arr-i.rkt:566:0 ------------------------------------------------------------------------------------ inductor [129] 100.0% [143] 200(0.6%) 200(0.6%) table-ref .../simplify-regraph/src/common.rkt:33:0 ------------------------------------------------------------------------------------ match-e [123] 100.0% [144] 200(0.6%) 200(0.6%) make-sequence ...ects/racket/private/for.rkt:533:2 ------------------------------------------------------------------------------------ hash-ref! [125] 100.0% [145] 192(0.5%) 0(0.0%) ??? ...simplify-regraph/src/core/taylor.rkt:362:30 hash-ref! [125] 100.0% ------------------------------------------------------------------------------------ loop [80] 4.2% .../more-scheme.rkt:261:28 [24] 4.4% loop [44] 8.1% ??? [136] 14.3% real->precision [52] 16.3% location-do [159] 26.3% for-loop [75] 26.3% [146] 4904(13.9%) 824(2.3%) ??? ...tract/private/arrow-higher-order.rkt:375:33 location-do [159] 26.3% approximate9 [2] 26.3% hash-ref! [125] 14.3% bf [164] 8.2% ival-mult [165] 8.1% ------------------------------------------------------------------------------------ for-loop [138] 5.9% for-loop [110] 94.1% [147] 3412(9.7%) 0(0.0%) dedup-children! ....5/pkgs/regraph/enode.rkt:166:0 loop [160] 76.0% loop [163] 24.0% ------------------------------------------------------------------------------------ temp91_0 [135] 100.0% [148] 2950(8.4%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [158] 100.0% ------------------------------------------------------------------------------------ update-leader! [134] 100.0% [149] 2796(7.9%) 200(0.6%) for-loop ...cket/7.5/pkgs/regraph/egraph.rkt:216:6 hash-update! [168] 58.3% for-loop [162] 34.5% ------------------------------------------------------------------------------------ for-loop [132] 100.0% [150] 2758(7.8%) 0(0.0%) for-loop ...cket/7.5/pkgs/regraph/ematch.rkt:47:37 match-e [123] 100.0% ------------------------------------------------------------------------------------ loop! [133] 100.0% [151] 1746(5.0%) 1746(5.0%) set ...collects/racket/private/set-types.rkt:992:0 ------------------------------------------------------------------------------------ loop! [133] 100.0% [152] 1256(3.6%) 198(0.6%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [161] 84.2% ------------------------------------------------------------------------------------ for-loop [132] 100.0% [153] 994(2.8%) 994(2.8%) procedure-reduce-keyword-arity-mask ....rkt:1597:4 ------------------------------------------------------------------------------------ update-leader! [134] 100.0% [154] 396(1.1%) 396(1.1%) for-loop ...cket/7.5/pkgs/regraph/egraph.rkt:226:6 ------------------------------------------------------------------------------------ core457 [141] 100.0% [155] 206(0.6%) 206(0.6%) ??? ...ects/racket/contract/private/guts.rkt:770:8 ------------------------------------------------------------------------------------ loop! [133] 100.0% [156] 184(0.5%) 184(0.5%) update-en-expr ....5/pkgs/regraph/egraph.rkt:205:0 ------------------------------------------------------------------------------------ temp91_0 [135] 100.0% [157] 184(0.5%) 0(0.0%) compile-top9 (unknown source) compile-forms33 [166] 100.0% ------------------------------------------------------------------------------------ loop [185] 11.6% temp118_0 [148] 88.4% [158] 3336(9.5%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [167] 82.4% dispatch-transformer41 [169] 17.6% ------------------------------------------------------------------------------------ location-do [159] 48.4% ??? [146] 51.6% [159] 3282(9.3%) 0(0.0%) location-do ...plify-regraph/src/programs.rkt:63:0 ??? [146] 51.6% location-do [159] 48.4% ------------------------------------------------------------------------------------ dedup-children! [147] 19.7% loop [160] 80.3% [160] 2592(7.4%) 0(0.0%) loop ...racket-7.5/collects/racket/list.rkt:417:34 loop [160] 80.3% loop [185] 10.5% member [171] 9.2% ------------------------------------------------------------------------------------ custom-set-union [152] 100.0% [161] 1058(3.0%) 218(0.6%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [170] 79.4% ------------------------------------------------------------------------------------ for-loop [149] 100.0% [162] 966(2.7%) 0(0.0%) for-loop ...cket/7.5/pkgs/regraph/egraph.rkt:217:8 hash-update! [168] 100.0% ------------------------------------------------------------------------------------ dedup-children! [147] 9.8% loop [163] 90.2% [163] 820(2.3%) 820(2.3%) loop ...racket-7.5/collects/racket/list.rkt:434:17 loop [163] 90.2% ------------------------------------------------------------------------------------ ??? [146] 100.0% [164] 400(1.1%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:615:2 ??? [172] 50.0% new-mpfr [177] 50.0% ------------------------------------------------------------------------------------ ??? [146] 100.0% [165] 398(1.1%) 200(0.6%) ival-mult ...ify-regraph/src/biginterval.rkt:120:0 bfmul [173] 49.7% ------------------------------------------------------------------------------------ compile-top9 [157] 100.0% [166] 184(0.5%) 0(0.0%) compile-forms33 (unknown source) for-loop [178] 100.0% ------------------------------------------------------------------------------------ expand-capturing-lifts [158] 100.0% [167] 2748(7.8%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [174] 100.0% ------------------------------------------------------------------------------------ for-loop [162] 37.2% for-loop [149] 62.8% [168] 2596(7.4%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [175] 100.0% ------------------------------------------------------------------------------------ expand-capturing-lifts [158] 36.3% for-loop [178] 63.7% [169] 1620(4.6%) 210(0.6%) dispatch-transformer41 (unknown source) apply-transformer52 [176] 87.0% ------------------------------------------------------------------------------------ for-loop [161] 100.0% [170] 840(2.4%) 840(2.4%) for-loop ...cts/racket/private/set-types.rkt:178:5 ------------------------------------------------------------------------------------ loop [160] 100.0% [171] 390(1.1%) 390(1.1%) member (unknown source) ------------------------------------------------------------------------------------ bf [164] 100.0% [172] 200(0.6%) 200(0.6%) ??? /opt/racket-7.5/collects/ffi/unsafe.rkt:938:4 ------------------------------------------------------------------------------------ ival-mult [165] 100.0% [173] 198(0.6%) 0(0.0%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:835:4 new-mpfr [177] 100.0% ------------------------------------------------------------------------------------ lambda-clause-expander [167] 43.5% for-loop [178] 56.5% [174] 2748(7.8%) 0(0.0%) finish-bodys (unknown source) for-loop [178] 100.0% ------------------------------------------------------------------------------------ hash-update! [168] 100.0% [175] 2596(7.4%) 0(0.0%) ??? .../.racket/7.5/pkgs/regraph/egraph.rkt:219:24 for-loop [179] 100.0% ------------------------------------------------------------------------------------ dispatch-transformer41 [169] 100.0% [176] 1410(4.0%) 396(1.1%) apply-transformer52 (unknown source) apply-transformer-in-context [180] 43.4% loop [185] 28.5% ------------------------------------------------------------------------------------ bfmul [173] 49.7% bf [164] 50.3% [177] 398(1.1%) 398(1.1%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:348:0 ------------------------------------------------------------------------------------ fallback-loop [22] 4.1% compile-forms33 [166] 5.9% for-loop [178] 24.7% finish-bodys [174] 65.3% [178] 3134(8.9%) 394(1.1%) for-loop (unknown source) finish-bodys [174] 38.0% for-loop [178] 24.7% dispatch-transformer41 [169] 10.5% module-uses-extract-extra-inspectorsss [182] 5.9% loop [185] 5.9% syntax-e [3] 5.1% expand-implicit [6] 4.9% ------------------------------------------------------------------------------------ ??? [175] 100.0% [179] 2596(7.4%) 2596(7.4%) for-loop ...ket/7.5/pkgs/regraph/egraph.rkt:220:26 ------------------------------------------------------------------------------------ apply-transformer52 [176] 100.0% [180] 612(1.7%) 0(0.0%) apply-transformer-in-context (unknown source) parse-app [181] 69.9% datum->syntax [183] 30.1% ------------------------------------------------------------------------------------ apply-transformer-in-context [180] 100.0% [181] 428(1.2%) 0(0.0%) parse-app ...collects/racket/private/kw.rkt:1142:2 syntax->list [184] 100.0% ------------------------------------------------------------------------------------ for-loop [178] 100.0% [182] 184(0.5%) 184(0.5%) module-uses-extract-extra-inspectorsss ... source) ------------------------------------------------------------------------------------ apply-transformer-in-context [180] 100.0% [183] 184(0.5%) 184(0.5%) datum->syntax (unknown source) ------------------------------------------------------------------------------------ parse-app [181] 100.0% [184] 428(1.2%) 0(0.0%) syntax->list (unknown source) loop [185] 100.0% ------------------------------------------------------------------------------------ datum->syntax6 [128] 0.2% for-loop [132] 0.4% errors [91] 1.0% for-loop [39] 1.7% eval-const-expr [103] 1.9% for-loop [178] 1.9% mk-enode-rec! [188] 2.0% ??? [8] 2.1% apply-transformer52 [176] 2.1% syntax->list [184] 3.3% ??? [43] 8.3% loop! [133] 8.6% syntax-e/no-taint [13] 10.1% loop [160] 22.7% loop [185] 33.7% [185] 9686(27.5%) 4010(11.4%) loop (unknown source) loop [185] 33.7% gf [187] 10.1% sample-multi-bounded [186] 8.3% loop! [133] 8.0% expand-capturing-lifts [158] 2.9% syntax-e [3] 2.2% mk-enode-rec! [188] 2.0% core-form-sym [7] 1.0% ??? [190] 0.7% step [189] 0.3% ------------------------------------------------------------------------------------ ??? [43] 48.9% loop [185] 51.1% [186] 1574(4.5%) 202(0.6%) sample-multi-bounded ...egraph/src/points.rkt:14:0 random-ranges [191] 74.3% for-loop [197] 12.8% ------------------------------------------------------------------------------------ loop [185] 100.0% [187] 1192(3.4%) 0(0.0%) gf (unknown source) propagation-merge [195] 35.4% propagation-apply [196] 31.0% propagation-apply-shifted [198] 16.8% cache-or-reuse-hash [199] 16.8% ------------------------------------------------------------------------------------ loop [185] 16.5% for-loop [110] 83.5% [188] 798(2.3%) 0(0.0%) mk-enode-rec! ...7.5/pkgs/regraph/egraph.rkt:116:0 for-loop [194] 58.4% do-curry [192] 25.1% loop [185] 16.5% ------------------------------------------------------------------------------------ loop [185] 49.1% for-loop [132] 50.9% [189] 786(2.2%) 786(2.2%) step ...ket-7.5/collects/racket/function.rkt:145:9 ------------------------------------------------------------------------------------ map [84] 32.9% loop [95] 33.2% loop [185] 33.9% [190] 608(1.7%) 406(1.2%) ??? ...rbie/simplify-regraph/src/points.rkt:179:26 ??? [193] 33.2% ------------------------------------------------------------------------------------ sample-multi-bounded [186] 100.0% [191] 1170(3.3%) 200(0.6%) random-ranges ...lify-regraph/src/common.rkt:164:0 cons/c [200] 67.0% build--> [201] 15.9% ------------------------------------------------------------------------------------ mk-enode-rec! [188] 24.8% pattern-substitute [115] 25.0% for-loop [132] 50.2% [192] 808(2.3%) 808(2.3%) do-curry ...-7.5/collects/racket/function.rkt:71:2 ------------------------------------------------------------------------------------ ??? [190] 32.6% .../more-scheme.rkt:261:28 [24] 67.4% [193] 620(1.8%) 620(1.8%) ??? ...mplify-regraph/src/syntax/syntax.rkt:214:17 ------------------------------------------------------------------------------------ mk-enode-rec! [188] 100.0% [194] 598(1.7%) 598(1.7%) for-loop ...ket/7.5/pkgs/regraph/egraph.rkt:108:10 ------------------------------------------------------------------------------------ gf [187] 100.0% [195] 422(1.2%) 422(1.2%) propagation-merge (unknown source) ------------------------------------------------------------------------------------ gf [187] 100.0% [196] 370(1.1%) 370(1.1%) propagation-apply (unknown source) ------------------------------------------------------------------------------------ sample-multi-bounded [186] 100.0% [197] 202(0.6%) 202(0.6%) for-loop ...e/simplify-regraph/src/points.rkt:20:4 ------------------------------------------------------------------------------------ gf [187] 100.0% [198] 200(0.6%) 200(0.6%) propagation-apply-shifted (unknown source) ------------------------------------------------------------------------------------ gf [187] 100.0% [199] 200(0.6%) 200(0.6%) cache-or-reuse-hash (unknown source) ------------------------------------------------------------------------------------ random-ranges [191] 100.0% [200] 784(2.2%) 402(1.1%) cons/c .../racket/contract/private/guts.rkt:500:15 coerce-contract [202] 48.7% ------------------------------------------------------------------------------------ random-ranges [191] 100.0% [201] 186(0.5%) 0(0.0%) build--> ...act/private/arrow-val-first.rkt:1214:0 coerce-contract [202] 100.0% ------------------------------------------------------------------------------------ build--> [201] 32.7% cons/c [200] 67.3% [202] 568(1.6%) 0(0.0%) coerce-contract ...contract/private/guts.rkt:307:0 coerce-contract/f [203] 100.0% ------------------------------------------------------------------------------------ coerce-contract [202] 100.0% [203] 568(1.6%) 0(0.0%) coerce-contract/f ...ntract/private/guts.rkt:372:0 coerce-simple-value [204] 100.0% ------------------------------------------------------------------------------------ coerce-contract/f [203] 100.0% [204] 568(1.6%) 568(1.6%) coerce-simple-value ...ract/private/guts.rkt:385:0 ------------------------------------------------------------------------------------