Profiling results ----------------- Total cpu time observed: 41678ms (out of 41928ms) Number of samples taken: 200 (once every 208ms) (Hiding functions with self<1.0% and local<2.0%: 1 of 211 hidden) ================================================================================= Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ================================================================================= [1] 41678(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [12] 100.0% --------------------------------------------------------------------------------- ??? [90] 100.0% [2] 5290(12.7%) 0(0.0%) approximate9 ...stversion/src/core/taylor.rkt:12:0 loop [14] 50.1% for-loop [17] 26.5% taylor-quotient [26] 8.1% taylor-invert [23] 7.7% for-loop [20] 3.8% simplify [29] 3.8% --------------------------------------------------------------------------------- matcher [101] 100.0% [3] 3264(7.8%) 0(0.0%) ??? ...ath-testversion/src/core/matcher.rkt:130:11 for-loop [13] 93.9% for-loop [21] 6.1% --------------------------------------------------------------------------------- hash-ref! [72] 100.0% [4] 2424(5.8%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:291:26 for-loop [15] 100.0% --------------------------------------------------------------------------------- hash-ref! [72] 100.0% [5] 2422(5.8%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:301:23 for-loop [16] 100.0% --------------------------------------------------------------------------------- hash-ref! [72] 100.0% [6] 2034(4.9%) 0(0.0%) ??? ...gmath-testversion/src/core/taylor.rkt:45:15 hash-ref! [72] 80.2% ??? [25] 19.8% --------------------------------------------------------------------------------- rewriter [78] 100.0% [7] 1822(4.4%) 0(0.0%) *rules* ...-testversion/src/syntax/rules.rkt:669:0 for-loop [188] 100.0% --------------------------------------------------------------------------------- loop [202] 16.7% for-loop [188] 83.3% [8] 1232(3.0%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [19] 100.0% --------------------------------------------------------------------------------- for-loop [188] 100.0% [9] 822(2.0%) 198(0.5%) expand-implicit (unknown source) resolve+shift28 [18] 75.9% --------------------------------------------------------------------------------- for-loop [188] 100.0% [10] 614(1.5%) 0(0.0%) expand-identifier (unknown source) resolve+shift28 [18] 100.0% --------------------------------------------------------------------------------- loop [202] 100.0% [11] 404(1.0%) 0(0.0%) ??? ...e/eggmath-testversion/src/points.rkt:190:26 ??? [59] 100.0% --------------------------------------------------------------------------------- ??? [1] 100.0% [12] 41678(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [22] 100.0% --------------------------------------------------------------------------------- ??? [3] 100.0% [13] 3066(7.4%) 0(0.0%) for-loop ...estversion/src/core/matcher.rkt:132:15 matcher [101] 100.0% --------------------------------------------------------------------------------- approximate9 [2] 100.0% [14] 2650(6.4%) 0(0.0%) loop ...gmath-testversion/src/core/taylor.rkt:87:4 ??? [90] 69.1% hash-ref! [72] 30.9% --------------------------------------------------------------------------------- ??? [4] 100.0% [15] 2424(5.8%) 0(0.0%) for-loop ...testversion/src/core/taylor.rkt:291:52 hash-ref! [72] 79.1% ??? [25] 20.9% --------------------------------------------------------------------------------- ??? [5] 100.0% [16] 2422(5.8%) 0(0.0%) for-loop ...testversion/src/core/taylor.rkt:304:27 hash-ref! [72] 100.0% --------------------------------------------------------------------------------- approximate9 [2] 100.0% [17] 1404(3.4%) 0(0.0%) for-loop ...-testversion/src/core/taylor.rkt:30:18 taylor-invert [23] 57.1% taylor-quotient [26] 28.8% taylor [83] 14.1% --------------------------------------------------------------------------------- expand-identifier [10] 49.6% expand-implicit [9] 50.4% [18] 1238(3.0%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [24] 100.0% --------------------------------------------------------------------------------- syntax-e [8] 100.0% [19] 1232(3.0%) 0(0.0%) syntax-e/no-taint (unknown source) loop [202] 100.0% --------------------------------------------------------------------------------- approximate9 [2] 100.0% [20] 202(0.5%) 0(0.0%) for-loop ...h-testversion/src/core/taylor.rkt:20:9 ??? [27] 100.0% --------------------------------------------------------------------------------- ??? [3] 100.0% [21] 198(0.5%) 0(0.0%) for-loop ...testversion/src/core/matcher.rkt:106:4 foldl [138] 100.0% --------------------------------------------------------------------------------- profile-thunk16 [12] 100.0% [22] 41678(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [28] 100.0% --------------------------------------------------------------------------------- taylor [83] 14.2% approximate9 [2] 28.8% for-loop [17] 57.0% [23] 1408(3.4%) 0(0.0%) taylor-invert ...version/src/core/taylor.rkt:318:0 first-nonzero-exp [30] 85.8% simplify [29] 14.2% --------------------------------------------------------------------------------- resolve+shift28 [18] 100.0% [24] 1238(3.0%) 204(0.5%) fallback-loop (unknown source) for-loop [188] 83.5% --------------------------------------------------------------------------------- ??? [6] 39.9% for-loop [15] 60.1% [25] 1008(2.4%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:294:19 hash-ref! [72] 100.0% --------------------------------------------------------------------------------- for-loop [17] 48.6% approximate9 [2] 51.4% [26] 832(2.0%) 0(0.0%) taylor-quotient ...rsion/src/core/taylor.rkt:334:0 first-nonzero-exp [30] 100.0% --------------------------------------------------------------------------------- for-loop [20] 100.0% [27] 202(0.5%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:379:33 f215 [31] 100.0% --------------------------------------------------------------------------------- for-loop [165] 2.3% run [22] 97.7% [28] 41678(100.0%) 398(1.0%) .../more-scheme.rkt:261:28 (unknown source) run-improve47 [32] 91.9% prepare-points-intervals [34] 3.4% ??? [59] 1.8% oracle-error [37] 1.0% get-final-combination [38] 0.5% eval-errors [39] 0.5% errors [155] 0.5% --------------------------------------------------------------------------------- taylor-invert [23] 4.5% approximate9 [2] 4.5% hash-ref! [72] 91.1% [29] 4474(10.7%) 0(0.0%) simplify ...h-testversion/src/core/reduce.rkt:16:0 parse-loop80 [33] 54.0% f67 [35] 27.6% f46 [36] 13.9% debug-print [40] 4.5% --------------------------------------------------------------------------------- taylor-quotient [26] 40.8% taylor-invert [23] 59.2% [30] 2040(4.9%) 0(0.0%) first-nonzero-exp ...ion/src/core/taylor.rkt:266:0 hash-ref! [72] 100.0% --------------------------------------------------------------------------------- ??? [27] 100.0% [31] 202(0.5%) 0(0.0%) f215 (unknown source) do-curry [190] 100.0% --------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [28] 100.0% [32] 39256(94.2%) 0(0.0%) run-improve47 ...estversion/src/mainloop.rkt:346:0 for-loop [41] 83.9% simplify! [55] 16.1% --------------------------------------------------------------------------------- parse-loop80 [33] 3.6% map [92] 14.9% simplify [29] 81.6% [33] 2840(6.8%) 0(0.0%) parse-loop80 (unknown source) eval-const-expr [42] 96.4% parse-loop80 [33] 3.6% --------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [28] 100.0% [34] 1408(3.4%) 0(0.0%) prepare-points-intervals ...n/src/points.rkt:110:0 loop [43] 100.0% --------------------------------------------------------------------------------- simplify [29] 100.0% [35] 1234(3.0%) 0(0.0%) f67 (unknown source) eval-const-expr [42] 100.0% --------------------------------------------------------------------------------- map [92] 21.4% simplify [29] 78.6% [36] 622(1.5%) 0(0.0%) f46 (unknown source) map [92] 100.0% --------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [28] 100.0% [37] 404(1.0%) 0(0.0%) oracle-error ...h-testversion/src/points.rkt:188:0 for-loop [44] 100.0% --------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [28] 100.0% [38] 208(0.5%) 0(0.0%) get-final-combination ...on/src/mainloop.rkt:371:0 infer-splitpoints [45] 100.0% --------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [28] 100.0% [39] 202(0.5%) 0(0.0%) eval-errors ...th-testversion/src/points.rkt:179:0 for-loop [46] 100.0% --------------------------------------------------------------------------------- simplify [29] 100.0% [40] 200(0.5%) 0(0.0%) debug-print ...ath-testversion/src/debug.rkt:110:0 ??? [47] 100.0% --------------------------------------------------------------------------------- run-improve47 [32] 100.0% [41] 32922(79.0%) 0(0.0%) for-loop ...ath-testversion/src/mainloop.rkt:365:4 run-iter! [48] 100.0% --------------------------------------------------------------------------------- f67 [35] 30.3% parse-loop80 [33] 69.7% [42] 4074(9.8%) 0(0.0%) eval-const-expr ...tversion/src/programs.rkt:118:0 temp85_0 [169] 70.0% compile [50] 10.4% eval-one-top12 [53] 5.0% eval [171] 4.9% inductor [54] 4.9% loop [202] 4.9% --------------------------------------------------------------------------------- prepare-points-intervals [34] 100.0% [43] 1408(3.4%) 0(0.0%) loop ...e/eggmath-testversion/src/points.rkt:123:4 ??? [49] 71.6% loop [51] 28.4% --------------------------------------------------------------------------------- oracle-error [37] 100.0% [44] 404(1.0%) 0(0.0%) for-loop ...gmath-testversion/src/points.rkt:189:2 loop [202] 100.0% --------------------------------------------------------------------------------- get-final-combination [38] 100.0% [45] 208(0.5%) 0(0.0%) infer-splitpoints ...ion/src/core/regimes.rkt:34:0 for-loop [52] 100.0% --------------------------------------------------------------------------------- eval-errors [39] 100.0% [46] 202(0.5%) 0(0.0%) for-loop ...gmath-testversion/src/points.rkt:181:2 ??? [59] 100.0% --------------------------------------------------------------------------------- debug-print [40] 100.0% [47] 200(0.5%) 200(0.5%) ??? .../contract/private/arrow-val-first.rkt:555:3 --------------------------------------------------------------------------------- for-loop [41] 100.0% [48] 32922(79.0%) 0(0.0%) run-iter! ...th-testversion/src/mainloop.rkt:327:0 simplify! [55] 55.6% finalize-iter! [56] 16.5% gen-series! [57] 16.1% gen-rewrites! [58] 9.9% choose-best-alt! [60] 1.2% localize! [62] 0.6% --------------------------------------------------------------------------------- loop [43] 100.0% [49] 1008(2.4%) 0(0.0%) ??? ...ie/eggmath-testversion/src/points.rkt:106:2 ??? [90] 100.0% --------------------------------------------------------------------------------- eval-const-expr [42] 100.0% [50] 422(1.0%) 222(0.5%) compile ...math-testversion/src/programs.rkt:153:0 hash-ref! [72] 47.4% --------------------------------------------------------------------------------- loop [43] 100.0% [51] 400(1.0%) 0(0.0%) loop ...ie/eggmath-testversion/src/points.rkt:81:2 ??? [59] 100.0% --------------------------------------------------------------------------------- infer-splitpoints [45] 100.0% [52] 208(0.5%) 0(0.0%) for-loop ...-testversion/src/core/regimes.rkt:47:6 option-on-expr [61] 100.0% --------------------------------------------------------------------------------- eval-const-expr [42] 100.0% [53] 202(0.5%) 202(0.5%) eval-one-top12 (unknown source) --------------------------------------------------------------------------------- eval-const-expr [42] 100.0% [54] 200(0.5%) 0(0.0%) inductor ...ath-testversion/src/programs.rkt:104:4 value? [132] 100.0% --------------------------------------------------------------------------------- run-improve47 [32] 25.7% run-iter! [48] 74.3% [55] 24654(59.2%) 0(0.0%) simplify! ...th-testversion/src/mainloop.rkt:224:0 ??? [63] 100.0% --------------------------------------------------------------------------------- run-iter! [48] 100.0% [56] 5440(13.1%) 0(0.0%) finalize-iter! ...stversion/src/mainloop.rkt:278:0 ??? [128] 100.0% --------------------------------------------------------------------------------- run-iter! [48] 100.0% [57] 5290(12.7%) 0(0.0%) gen-series! ...-testversion/src/mainloop.rkt:160:0 for-loop [64] 100.0% --------------------------------------------------------------------------------- run-iter! [48] 100.0% [58] 3264(7.8%) 0(0.0%) gen-rewrites! ...estversion/src/mainloop.rkt:183:0 for-loop [65] 100.0% --------------------------------------------------------------------------------- for-loop [46] 8.1% loop [51] 16.0% ??? [11] 16.2% .../more-scheme.rkt:261:28 [28] 59.7% [59] 2498(6.0%) 200(0.5%) ??? .../eggmath-testversion/src/programs.rkt:115:2 ??? [66] 67.9% ??? [90] 24.1% --------------------------------------------------------------------------------- run-iter! [48] 100.0% [60] 406(1.0%) 0(0.0%) choose-best-alt! ...version/src/mainloop.rkt:117:0 ...ow-val-first.rkt:486:18 [67] 100.0% --------------------------------------------------------------------------------- for-loop [52] 100.0% [61] 208(0.5%) 0(0.0%) option-on-expr ...rsion/src/core/regimes.rkt:126:0 for-loop [68] 100.0% --------------------------------------------------------------------------------- run-iter! [48] 100.0% [62] 202(0.5%) 0(0.0%) localize! ...th-testversion/src/mainloop.rkt:127:0 localize-error [69] 100.0% --------------------------------------------------------------------------------- simplify! [55] 100.0% [63] 24654(59.2%) 0(0.0%) ??? ...-testversion/src/core/herbie-egraph.rkt:9:0 for-loop [70] 95.8% loop [80] 4.2% --------------------------------------------------------------------------------- gen-series! [57] 100.0% [64] 5290(12.7%) 0(0.0%) for-loop ...ath-testversion/src/mainloop.rkt:167:7 taylor-alt [71] 100.0% --------------------------------------------------------------------------------- gen-rewrites! [58] 100.0% [65] 3264(7.8%) 0(0.0%) for-loop ...th-testversion/src/mainloop.rkt:191:11 rewrite-expression-head20 [73] 100.0% --------------------------------------------------------------------------------- ??? [59] 100.0% [66] 1696(4.1%) 828(2.0%) ??? ...th-testversion/src/syntax/syntax.rkt:214:17 return/no-unsupplied [200] 38.1% ??? [75] 13.1% --------------------------------------------------------------------------------- choose-best-alt! [60] 100.0% [67] 406(1.0%) 0(0.0%) ...ow-val-first.rkt:486:18 (unknown source) ??? [74] 100.0% --------------------------------------------------------------------------------- option-on-expr [61] 100.0% [68] 208(0.5%) 0(0.0%) for-loop ...testversion/src/core/regimes.rkt:136:4 errors [155] 100.0% --------------------------------------------------------------------------------- localize! [62] 100.0% [69] 202(0.5%) 0(0.0%) localize-error ...rsion/src/core/localize.rkt:66:0 hash-ref! [72] 100.0% --------------------------------------------------------------------------------- ??? [63] 100.0% [70] 23620(56.7%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:29:2 ??? [76] 93.1% for-loop [81] 3.5% precompute-phase [84] 2.5% loop [80] 0.9% --------------------------------------------------------------------------------- for-loop [64] 100.0% [71] 5290(12.7%) 0(0.0%) taylor-alt ...h-testversion/src/mainloop.rkt:146:0 for-loop [77] 100.0% --------------------------------------------------------------------------------- compile [50] 1.0% localize-error [69] 1.0% map [92] 3.1% ??? [25] 4.6% loop [14] 6.8% ??? [79] 7.3% ??? [6] 8.1% for-loop [15] 10.1% ??? [90] 16.8% for-loop [16] 20.5% first-nonzero-exp [30] 20.7% [72] 4892(11.7%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 simplify [29] 31.2% ??? [5] 20.5% ??? [4] 12.3% ??? [6] 10.5% ??? [79] 7.3% ??? [82] 6.8% taylor [83] 6.3% parse-loop30 [86] 4.1% --------------------------------------------------------------------------------- for-loop [65] 100.0% [73] 3264(7.8%) 0(0.0%) rewrite-expression-head20 ...core/matcher.rkt:87:0 rewriter [78] 100.0% --------------------------------------------------------------------------------- ...ow-val-first.rkt:486:18 [67] 100.0% [74] 406(1.0%) 0(0.0%) ??? ...ath-testversion/src/core/alt-table.rkt:58:0 argmin [85] 50.2% loop [87] 49.8% --------------------------------------------------------------------------------- ??? [66] 100.0% [75] 222(0.5%) 222(0.5%) ??? ...ects/racket/contract/private/guts.rkt:770:8 --------------------------------------------------------------------------------- for-loop [70] 100.0% [76] 21986(52.8%) 0(0.0%) ??? ...testversion/src/core/herbie-egraph.rkt:70:0 find-matches [88] 50.8% for-loop [89] 49.2% --------------------------------------------------------------------------------- taylor-alt [71] 100.0% [77] 5290(12.7%) 0(0.0%) for-loop ...ath-testversion/src/mainloop.rkt:152:6 ??? [90] 100.0% --------------------------------------------------------------------------------- rewrite-expression-head20 [73] 35.2% matcher [101] 64.8% [78] 3264(7.8%) 424(1.0%) rewriter ...-testversion/src/core/matcher.rkt:90:2 for-loop [91] 79.0% *rules* [7] 16.6% --------------------------------------------------------------------------------- hash-ref! [72] 100.0% [79] 1430(3.4%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:328:33 hash-ref! [72] 100.0% --------------------------------------------------------------------------------- for-loop [70] 16.3% ??? [63] 83.7% [80] 1236(3.0%) 202(0.5%) loop ...h-testversion/src/core/extraction.rkt:25:2 for-loop [93] 83.7% --------------------------------------------------------------------------------- for-loop [70] 100.0% [81] 834(2.0%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:37:4 prune-phase [94] 100.0% --------------------------------------------------------------------------------- hash-ref! [72] 100.0% [82] 820(2.0%) 0(0.0%) ??? ...gmath-testversion/src/core/taylor.rkt:68:15 ??? [90] 100.0% --------------------------------------------------------------------------------- for-loop [17] 8.1% map [92] 14.7% taylor [83] 33.7% hash-ref! [72] 43.5% [83] 814(2.0%) 398(1.0%) taylor ...th-testversion/src/core/taylor.rkt:170:0 taylor [83] 33.7% map [92] 14.7% taylor-invert [23] 12.3% debug5 [97] 6.6% --------------------------------------------------------------------------------- for-loop [70] 100.0% [84] 598(1.4%) 0(0.0%) precompute-phase ...rc/core/herbie-egraph.rkt:79:0 for-loop [95] 100.0% --------------------------------------------------------------------------------- ??? [74] 100.0% [85] 204(0.5%) 0(0.0%) argmin ...acket-7.5/collects/racket/list.rkt:765:0 ??? [96] 100.0% --------------------------------------------------------------------------------- hash-ref! [72] 100.0% [86] 202(0.5%) 0(0.0%) parse-loop30 (unknown source) map [92] 100.0% --------------------------------------------------------------------------------- ??? [74] 100.0% [87] 202(0.5%) 0(0.0%) loop .../racket-7.5/collects/racket/list.rkt:751:4 ??? [96] 100.0% --------------------------------------------------------------------------------- ??? [76] 100.0% [88] 11162(26.8%) 0(0.0%) find-matches ...on/src/core/herbie-egraph.rkt:62:0 for-loop [98] 100.0% --------------------------------------------------------------------------------- ??? [76] 100.0% [89] 10824(26.0%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:71:2 for-loop [99] 100.0% --------------------------------------------------------------------------------- ??? [82] 4.0% ??? [59] 8.7% loop [14] 8.8% ??? [49] 14.6% location-do [100] 31.9% for-loop [77] 31.9% [90] 6900(16.6%) 202(0.5%) ??? ...tract/private/arrow-higher-order.rkt:375:33 location-do [100] 31.9% approximate9 [2] 31.9% sample-multi-bounded [102] 14.6% hash-ref! [72] 12.8% ival-mult [107] 5.8% --------------------------------------------------------------------------------- rewriter [78] 100.0% [91] 3264(7.8%) 0(0.0%) for-loop ...-testversion/src/core/matcher.rkt:92:4 matcher [101] 93.2% for-loop [105] 6.8% --------------------------------------------------------------------------------- parse-loop30 [86] 16.3% taylor [83] 33.4% f46 [36] 50.2% [92] 1238(3.0%) 0(0.0%) map ...t-7.5/collects/racket/private/map.rkt:35:13 parse-loop80 [33] 34.1% taylor [83] 33.4% hash-ref! [72] 12.2% f46 [36] 10.8% make-addition-node* [109] 5.4% loop [108] 4.1% --------------------------------------------------------------------------------- loop [80] 100.0% [93] 1034(2.5%) 200(0.5%) for-loop ...stversion/src/core/extraction.rkt:29:4 for-loop [103] 80.7% --------------------------------------------------------------------------------- for-loop [81] 100.0% [94] 834(2.0%) 0(0.0%) prune-phase ...ion/src/core/herbie-egraph.rkt:84:0 for-loop [104] 100.0% --------------------------------------------------------------------------------- precompute-phase [84] 100.0% [95] 598(1.4%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:80:2 set-precompute! [106] 100.0% --------------------------------------------------------------------------------- loop [87] 49.8% argmin [85] 50.2% [96] 406(1.0%) 0(0.0%) ??? ...eggmath-testversion/src/mainloop.rkt:114:10 errors [155] 100.0% --------------------------------------------------------------------------------- taylor [83] 100.0% [97] 216(0.5%) 216(0.5%) debug5 .../eggmath-testversion/src/debug.rkt:102:0 --------------------------------------------------------------------------------- for-loop [98] 50.0% find-matches [88] 50.0% [98] 11162(26.8%) 200(0.5%) for-loop ...ersion/src/core/herbie-egraph.rkt:64:8 for-loop [98] 50.0% match-e [110] 49.1% --------------------------------------------------------------------------------- for-loop [89] 100.0% [99] 10824(26.0%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:74:4 merge-egraph-nodes! [119] 69.9% dedup-children! [142] 14.9% mk-enode-rec! [205] 7.6% pattern-substitute [111] 7.6% --------------------------------------------------------------------------------- location-do [100] 37.6% ??? [90] 62.4% [100] 5290(12.7%) 0(0.0%) location-do ...h-testversion/src/programs.rkt:64:0 ??? [90] 62.4% location-do [100] 37.6% --------------------------------------------------------------------------------- for-loop [13] 46.6% for-loop [91] 53.4% [101] 3264(7.8%) 0(0.0%) matcher ...-testversion/src/core/matcher.rkt:118:2 ??? [3] 52.7% rewriter [78] 46.6% constant? [120] 0.7% --------------------------------------------------------------------------------- ??? [90] 100.0% [102] 1008(2.4%) 200(0.5%) sample-multi-bounded ...ersion/src/points.rkt:15:0 random-ranges [112] 80.2% --------------------------------------------------------------------------------- for-loop [93] 100.0% [103] 834(2.0%) 200(0.5%) for-loop ...tversion/src/core/extraction.rkt:37:16 for-loop [113] 76.0% --------------------------------------------------------------------------------- prune-phase [94] 100.0% [104] 834(2.0%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:85:2 update-leader! [129] 100.0% --------------------------------------------------------------------------------- for-loop [91] 100.0% [105] 614(1.5%) 0(0.0%) for-loop ...-testversion/src/core/matcher.rkt:99:8 fix-up-variables [114] 100.0% --------------------------------------------------------------------------------- for-loop [95] 100.0% [106] 598(1.4%) 0(0.0%) set-precompute! ...src/core/herbie-egraph.rkt:88:0 for-loop [115] 100.0% --------------------------------------------------------------------------------- ??? [90] 100.0% [107] 400(1.0%) 0(0.0%) ival-mult ...testversion/src/biginterval.rkt:119:0 bfmul [116] 100.0% --------------------------------------------------------------------------------- map [92] 2.4% loop [108] 97.6% [108] 202(0.5%) 0(0.0%) loop ...-7.5/collects/racket/private/map.rkt:40:19 loop [108] 97.6% ??? [117] 2.4% --------------------------------------------------------------------------------- map [92] 100.0% [109] 200(0.5%) 200(0.5%) make-addition-node* ...n/src/core/reduce.rkt:226:0 --------------------------------------------------------------------------------- for-loop [130] 22.6% for-loop [98] 77.4% [110] 10962(26.3%) 800(1.9%) match-e ...th-testversion/src/core/ematch.rkt:39:0 for-loop [118] 81.9% constant? [120] 8.9% ??? [128] 2.8% --------------------------------------------------------------------------------- pattern-substitute [111] 37.8% for-loop [99] 62.2% [111] 822(2.0%) 200(0.5%) pattern-substitute ...on/src/core/matcher.rkt:46:0 pattern-substitute [111] 37.8% return/no-unsupplied [200] 13.5% variable? [127] 12.2% ??? [125] 12.2% --------------------------------------------------------------------------------- sample-multi-bounded [102] 100.0% [112] 808(1.9%) 400(1.0%) random-ranges ...-testversion/src/common.rkt:171:0 cons/c [122] 50.5% --------------------------------------------------------------------------------- for-loop [103] 100.0% [113] 634(1.5%) 634(1.5%) for-loop ...tversion/src/core/extraction.rkt:41:23 --------------------------------------------------------------------------------- for-loop [105] 100.0% [114] 614(1.5%) 0(0.0%) fix-up-variables ...ion/src/core/matcher.rkt:111:2 pattern-match [121] 67.4% for-loop [126] 32.6% --------------------------------------------------------------------------------- set-precompute! [106] 100.0% [115] 598(1.4%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:90:2 setfindf [123] 66.6% merge-egraph-nodes! [119] 33.4% --------------------------------------------------------------------------------- ival-mult [107] 100.0% [116] 400(1.0%) 200(0.5%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:835:4 new-mpfr [124] 50.0% --------------------------------------------------------------------------------- loop [108] 100.0% [117] 202(0.5%) 202(0.5%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 --------------------------------------------------------------------------------- match-e [110] 100.0% [118] 9558(22.9%) 5252(12.6%) for-loop ...-testversion/src/core/ematch.rkt:52:11 for-loop [130] 37.5% do-curry [190] 12.9% procedure-reduce-keyword-arity-mask [136] 2.1% foldr [139] 2.1% foldl [138] 2.1% --------------------------------------------------------------------------------- for-loop [115] 0.9% for-loop [133] 4.3% merge-egraph-nodes! [119] 10.6% for-loop [99] 84.3% [119] 7764(18.6%) 0(0.0%) merge-egraph-nodes! ...n/src/core/egraph.rkt:145:0 update-leader! [129] 52.8% loop! [131] 25.4% merge-egraph-nodes! [119] 10.6% for-loop [133] 7.4% dedup-children! [142] 3.9% --------------------------------------------------------------------------------- matcher [101] 14.4% match-e [110] 85.6% [120] 1432(3.4%) 0(0.0%) constant? ...stversion/src/syntax/syntax.rkt:726:0 value? [132] 100.0% --------------------------------------------------------------------------------- fix-up-variables [114] 100.0% [121] 414(1.0%) 0(0.0%) pattern-match ...version/src/core/matcher.rkt:30:0 for-loop [134] 100.0% --------------------------------------------------------------------------------- random-ranges [112] 100.0% [122] 408(1.0%) 0(0.0%) cons/c .../racket/contract/private/guts.rkt:500:15 coerce-contract [135] 100.0% --------------------------------------------------------------------------------- for-loop [115] 100.0% [123] 398(1.0%) 0(0.0%) setfindf ...gmath-testversion/src/common.rkt:130:0 for-loop [137] 100.0% --------------------------------------------------------------------------------- bfmul [116] 100.0% [124] 200(0.5%) 200(0.5%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:348:0 --------------------------------------------------------------------------------- pattern-substitute [111] 100.0% [125] 200(0.5%) 200(0.5%) ??? ...ects/racket/contract/private/prop.rkt:301:4 --------------------------------------------------------------------------------- fix-up-variables [114] 100.0% [126] 200(0.5%) 0(0.0%) for-loop ...-testversion/src/core/matcher.rkt:42:9 for-loop [134] 100.0% --------------------------------------------------------------------------------- pattern-substitute [111] 100.0% [127] 200(0.5%) 0(0.0%) variable? ...stversion/src/syntax/syntax.rkt:729:0 ??? [128] 100.0% --------------------------------------------------------------------------------- variable? [127] 3.1% match-e [110] 12.6% finalize-iter! [56] 84.3% [128] 6450(15.5%) 1010(2.4%) ??? ...contract/private/arrow-val-first.rkt:486:18 for-loop [140] 84.3% --------------------------------------------------------------------------------- for-loop [104] 15.8% merge-egraph-nodes! [119] 84.2% [129] 5270(12.6%) 0(0.0%) update-leader! ...ersion/src/core/egraph.rkt:213:0 for-loop [141] 95.9% for-loop [145] 4.1% --------------------------------------------------------------------------------- for-loop [118] 100.0% [130] 5096(12.2%) 642(1.5%) for-loop ...-testversion/src/core/ematch.rkt:58:37 match-e [110] 89.5% --------------------------------------------------------------------------------- loop [202] 40.2% merge-egraph-nodes! [119] 59.8% [131] 2688(6.4%) 206(0.5%) loop! ...math-testversion/src/core/enode.rkt:194:2 loop [202] 47.9% custom-set-union [143] 23.1% set [210] 15.8% update-en-expr [175] 9.4% --------------------------------------------------------------------------------- inductor [54] 12.3% constant? [120] 87.7% [132] 1632(3.9%) 1632(3.9%) value? ...th-testversion/src/syntax/types.rkt:18:0 --------------------------------------------------------------------------------- merge-egraph-nodes! [119] 100.0% [133] 1042(2.5%) 0(0.0%) for-loop ...-testversion/src/core/egraph.rkt:199:4 merge-egraph-nodes! [119] 77.0% dedup-children! [142] 23.0% --------------------------------------------------------------------------------- for-loop [126] 32.6% pattern-match [121] 67.4% [134] 614(1.5%) 0(0.0%) for-loop ...-testversion/src/core/matcher.rkt:27:9 core457 [150] 100.0% --------------------------------------------------------------------------------- cons/c [122] 100.0% [135] 408(1.0%) 0(0.0%) coerce-contract ...contract/private/guts.rkt:307:0 coerce-contract/f [144] 100.0% --------------------------------------------------------------------------------- for-loop [118] 100.0% [136] 404(1.0%) 404(1.0%) procedure-reduce-keyword-arity-mask ....rkt:1597:4 --------------------------------------------------------------------------------- setfindf [123] 100.0% [137] 398(1.0%) 398(1.0%) for-loop ...gmath-testversion/src/common.rkt:131:2 --------------------------------------------------------------------------------- for-loop [118] 50.0% for-loop [21] 50.0% [138] 396(1.0%) 198(0.5%) foldl ....5/collects/racket/private/list.rkt:229:4 ??? [146] 50.0% --------------------------------------------------------------------------------- for-loop [118] 100.0% [139] 200(0.5%) 200(0.5%) foldr ....5/collects/racket/private/list.rkt:242:4 --------------------------------------------------------------------------------- ??? [128] 100.0% [140] 5440(13.1%) 0(0.0%) for-loop ...estversion/src/core/alt-table.rkt:55:2 atab-add-altn [147] 57.8% errors [155] 30.7% loop [153] 7.6% override-at-pnts [158] 3.9% --------------------------------------------------------------------------------- update-leader! [129] 100.0% [141] 5054(12.1%) 200(0.5%) for-loop ...-testversion/src/core/egraph.rkt:218:6 for-loop [148] 52.5% hash-update! [156] 43.6% --------------------------------------------------------------------------------- for-loop [133] 10.7% merge-egraph-nodes! [119] 17.8% for-loop [99] 71.6% [142] 2250(5.4%) 0(0.0%) dedup-children! ...ersion/src/core/enode.rkt:202:0 loop [149] 64.7% loop [151] 35.3% --------------------------------------------------------------------------------- loop! [131] 100.0% [143] 820(2.0%) 202(0.5%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [152] 75.4% --------------------------------------------------------------------------------- coerce-contract [135] 100.0% [144] 408(1.0%) 0(0.0%) coerce-contract/f ...ntract/private/guts.rkt:372:0 coerce-simple-value [154] 100.0% --------------------------------------------------------------------------------- update-leader! [129] 100.0% [145] 216(0.5%) 216(0.5%) for-loop ...-testversion/src/core/egraph.rkt:228:6 --------------------------------------------------------------------------------- foldl [138] 100.0% [146] 198(0.5%) 0(0.0%) ??? ...gmath-testversion/src/core/matcher.rkt:26:7 core457 [150] 100.0% --------------------------------------------------------------------------------- for-loop [140] 100.0% [147] 3142(7.5%) 0(0.0%) atab-add-altn ...sion/src/core/alt-table.rkt:203:0 errors [155] 93.3% override-at-pnts [158] 6.7% --------------------------------------------------------------------------------- for-loop [141] 100.0% [148] 2652(6.4%) 200(0.5%) for-loop ...-testversion/src/core/egraph.rkt:219:8 hash-update! [156] 92.5% --------------------------------------------------------------------------------- dedup-children! [142] 8.0% loop [149] 92.0% [149] 1456(3.5%) 1456(3.5%) loop ...racket-7.5/collects/racket/list.rkt:434:17 loop [149] 92.0% --------------------------------------------------------------------------------- ??? [146] 24.4% for-loop [134] 75.6% [150] 812(1.9%) 206(0.5%) core457 ...acket/contract/private/arr-i.rkt:976:19 un-dep/maybe-chaperone [159] 50.0% build-unary-very-simple--> [162] 24.6% --------------------------------------------------------------------------------- dedup-children! [142] 44.6% loop [151] 55.4% [151] 794(1.9%) 0(0.0%) loop ...racket-7.5/collects/racket/list.rkt:417:34 loop [151] 55.4% member [157] 40.6% loop [202] 4.0% --------------------------------------------------------------------------------- custom-set-union [143] 100.0% [152] 618(1.5%) 220(0.5%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [160] 64.4% --------------------------------------------------------------------------------- for-loop [140] 100.0% [153] 412(1.0%) 0(0.0%) loop ...h-testversion/src/core/alt-table.rkt:177:2 loop [161] 51.5% loop [202] 48.5% --------------------------------------------------------------------------------- coerce-contract/f [144] 100.0% [154] 408(1.0%) 408(1.0%) coerce-simple-value ...ract/private/guts.rkt:385:0 --------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [28] 3.7% for-loop [68] 3.8% ??? [96] 7.5% for-loop [140] 30.9% atab-add-altn [147] 54.1% [155] 5418(13.0%) 0(0.0%) errors ...eggmath-testversion/src/points.rkt:201:0 eval-prog [164] 50.2% for-loop [165] 49.8% --------------------------------------------------------------------------------- for-loop [141] 47.3% for-loop [148] 52.7% [156] 4654(11.2%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [163] 100.0% --------------------------------------------------------------------------------- loop [151] 100.0% [157] 602(1.4%) 602(1.4%) member (unknown source) --------------------------------------------------------------------------------- atab-add-altn [147] 49.5% for-loop [140] 50.5% [158] 424(1.0%) 0(0.0%) override-at-pnts ...n/src/core/alt-table.rkt:138:0 for-loop [166] 100.0% --------------------------------------------------------------------------------- core457 [150] 100.0% [159] 406(1.0%) 0(0.0%) un-dep/maybe-chaperone ...private/arr-i.rkt:1137:2 ??? [167] 51.2% ??? [172] 48.8% --------------------------------------------------------------------------------- for-loop [152] 100.0% [160] 398(1.0%) 398(1.0%) for-loop ...cts/racket/private/set-types.rkt:178:5 --------------------------------------------------------------------------------- loop [153] 100.0% [161] 212(0.5%) 212(0.5%) loop ...-7.5/collects/racket/private/hash.rkt:20:4 --------------------------------------------------------------------------------- core457 [150] 100.0% [162] 200(0.5%) 0(0.0%) build-unary-very-simple--> ...val-first.rkt:1150:0 contract-struct-first-order [168] 100.0% --------------------------------------------------------------------------------- hash-update! [156] 100.0% [163] 4654(11.2%) 774(1.9%) ??? ...math-testversion/src/core/egraph.rkt:221:24 for-loop [170] 83.4% --------------------------------------------------------------------------------- errors [155] 100.0% [164] 2722(6.5%) 0(0.0%) eval-prog ...ath-testversion/src/programs.rkt:83:0 temp85_0 [169] 83.6% eval [171] 8.2% procedure-reduce-arity [173] 8.2% --------------------------------------------------------------------------------- errors [155] 100.0% [165] 2696(6.5%) 806(1.9%) for-loop ...gmath-testversion/src/points.rkt:203:2 .../more-scheme.rkt:261:28 [28] 70.1% --------------------------------------------------------------------------------- override-at-pnts [158] 100.0% [166] 424(1.0%) 424(1.0%) for-loop ...tversion/src/core/alt-table.rkt:139:22 --------------------------------------------------------------------------------- un-dep/maybe-chaperone [159] 100.0% [167] 208(0.5%) 0(0.0%) ??? ...llects/racket/contract/private/orc.rkt:88:2 ??? [172] 100.0% --------------------------------------------------------------------------------- build-unary-very-simple--> [162] 100.0% [168] 200(0.5%) 200(0.5%) contract-struct-first-order ...vate/prop.rkt:104:0 --------------------------------------------------------------------------------- eval-prog [164] 44.4% eval-const-expr [42] 55.6% [169] 5126(12.3%) 0(0.0%) temp85_0 (unknown source) compile15 [174] 100.0% --------------------------------------------------------------------------------- ??? [163] 100.0% [170] 3880(9.3%) 3242(7.8%) for-loop ...testversion/src/core/egraph.rkt:222:26 update-en-expr [175] 16.4% --------------------------------------------------------------------------------- eval-const-expr [42] 47.2% eval-prog [164] 52.8% [171] 424(1.0%) 0(0.0%) eval (unknown source) datum->syntax6 [191] 100.0% --------------------------------------------------------------------------------- un-dep/maybe-chaperone [159] 48.8% ??? [167] 51.2% [172] 406(1.0%) 0(0.0%) ??? ...cts/racket/contract/private/guts.rkt:835:10 ??? [176] 100.0% --------------------------------------------------------------------------------- eval-prog [164] 100.0% [173] 222(0.5%) 222(0.5%) procedure-reduce-arity ...t/private/kw.rkt:1725:11 --------------------------------------------------------------------------------- temp85_0 [169] 100.0% [174] 5126(12.3%) 0(0.0%) compile15 (unknown source) temp91_0 [177] 100.0% --------------------------------------------------------------------------------- loop! [131] 48.6% for-loop [170] 51.4% [175] 1242(3.0%) 1242(3.0%) update-en-expr ...ersion/src/core/egraph.rkt:207:0 --------------------------------------------------------------------------------- ??? [172] 100.0% [176] 406(1.0%) 0(0.0%) ??? ...ntract/private/arrow-higher-order.rkt:575:2 build-subcontract-late-negs [178] 100.0% --------------------------------------------------------------------------------- compile15 [174] 100.0% [177] 5126(12.3%) 0(0.0%) temp91_0 (unknown source) temp118_0 [179] 88.1% compile-top9 [180] 11.9% --------------------------------------------------------------------------------- ??? [176] 100.0% [178] 406(1.0%) 406(1.0%) build-subcontract-late-negs ...her-order.rkt:711:0 --------------------------------------------------------------------------------- temp91_0 [177] 100.0% [179] 4514(10.8%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [181] 100.0% --------------------------------------------------------------------------------- temp91_0 [177] 100.0% [180] 612(1.5%) 0(0.0%) compile-top9 (unknown source) compile-forms33 [182] 100.0% --------------------------------------------------------------------------------- loop [202] 4.2% temp118_0 [179] 95.8% [181] 4714(11.3%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [183] 91.1% dispatch-transformer41 [184] 8.9% --------------------------------------------------------------------------------- compile-top9 [180] 100.0% [182] 612(1.5%) 0(0.0%) compile-forms33 (unknown source) for-loop [188] 66.3% loop! [185] 33.7% --------------------------------------------------------------------------------- expand-capturing-lifts [181] 100.0% [183] 4296(10.3%) 200(0.5%) lambda-clause-expander (unknown source) finish-bodys [186] 85.9% loop [202] 9.5% --------------------------------------------------------------------------------- for-loop [188] 32.8% loop [202] 33.1% expand-capturing-lifts [181] 34.1% [184] 1226(2.9%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [187] 100.0% --------------------------------------------------------------------------------- compile-forms33 [182] 100.0% [185] 206(0.5%) 0(0.0%) loop! (unknown source) for-loop [188] 100.0% --------------------------------------------------------------------------------- lambda-clause-expander [183] 20.7% for-loop [188] 79.3% [186] 3690(8.9%) 0(0.0%) finish-bodys (unknown source) for-loop [188] 100.0% --------------------------------------------------------------------------------- dispatch-transformer41 [184] 100.0% [187] 1226(2.9%) 420(1.0%) apply-transformer52 (unknown source) apply-transformer-in-context [189] 65.7% --------------------------------------------------------------------------------- fallback-loop [24] 1.6% loop! [185] 3.4% compile-forms33 [182] 6.6% for-loop [188] 9.8% *rules* [7] 29.8% finish-bodys [186] 48.8% [188] 6124(14.7%) 2248(5.4%) for-loop (unknown source) finish-bodys [186] 40.4% for-loop [188] 9.8% ormap [192] 9.8% compile-module-linklet57 [194] 6.6% do-curry [190] 6.5% flag-set? [197] 3.6% syntax-e [8] 3.2% expand-implicit [9] 1.4% add-local-binding!39 [193] 1.4% expand-identifier [10] 1.1% dispatch-transformer41 [184] 0.7% --------------------------------------------------------------------------------- apply-transformer52 [187] 100.0% [189] 806(1.9%) 0(0.0%) apply-transformer-in-context (unknown source) datum->syntax6 [191] 49.6% ??? [195] 25.6% parse-app [196] 24.8% --------------------------------------------------------------------------------- f215 [31] 9.9% for-loop [188] 19.7% for-loop [118] 70.4% [190] 2032(4.9%) 2032(4.9%) do-curry ...-7.5/collects/racket/function.rkt:71:2 --------------------------------------------------------------------------------- apply-transformer-in-context [189] 48.5% eval [171] 51.5% [191] 824(2.0%) 0(0.0%) datum->syntax6 (unknown source) loop [202] 100.0% --------------------------------------------------------------------------------- for-loop [188] 100.0% [192] 600(1.4%) 0(0.0%) ormap ....5/collects/racket/private/map.rkt:141:13 flag-set? [197] 100.0% --------------------------------------------------------------------------------- for-loop [188] 100.0% [193] 418(1.0%) 200(0.5%) add-local-binding!39 (unknown source) binding-table-add [198] 52.2% --------------------------------------------------------------------------------- for-loop [188] 100.0% [194] 406(1.0%) 406(1.0%) compile-module-linklet57 (unknown source) --------------------------------------------------------------------------------- apply-transformer-in-context [189] 100.0% [195] 206(0.5%) 0(0.0%) ??? ...collects/racket/private/qq-and-or.rkt:155:9 ??? [199] 100.0% --------------------------------------------------------------------------------- apply-transformer-in-context [189] 100.0% [196] 200(0.5%) 200(0.5%) parse-app ...collects/racket/private/kw.rkt:1142:2 --------------------------------------------------------------------------------- for-loop [188] 27.0% ormap [192] 73.0% [197] 822(2.0%) 600(1.4%) flag-set? ...gmath-testversion/src/config.rkt:28:0 return/no-unsupplied [200] 27.0% --------------------------------------------------------------------------------- add-local-binding!39 [193] 100.0% [198] 218(0.5%) 218(0.5%) binding-table-add (unknown source) --------------------------------------------------------------------------------- ??? [195] 100.0% [199] 206(0.5%) 0(0.0%) ??? ...ollects/racket/private/qq-and-or.rkt:164:21 syntax->list [201] 100.0% --------------------------------------------------------------------------------- flag-set? [197] 20.4% pattern-substitute [111] 20.4% ??? [66] 59.3% [200] 1090(2.6%) 664(1.6%) return/no-unsupplied ...ct/private/arr-i.rkt:566:0 filter [203] 39.1% --------------------------------------------------------------------------------- ??? [199] 100.0% [201] 206(0.5%) 0(0.0%) syntax->list (unknown source) loop [202] 100.0% --------------------------------------------------------------------------------- loop [153] 0.1% syntax->list [201] 1.3% lambda-clause-expander [183] 1.7% eval-const-expr [42] 1.9% datum->syntax6 [191] 3.1% loop [151] 3.6% for-loop [44] 3.8% mk-enode-rec! [205] 4.3% loop! [131] 7.1% syntax-e/no-taint [19] 20.5% loop [202] 52.8% [202] 5350(12.8%) 1424(3.4%) loop (unknown source) loop [202] 52.8% gf [204] 20.5% loop! [131] 6.3% mk-enode-rec! [205] 4.3% ??? [11] 3.8% expand-capturing-lifts [181] 1.9% dispatch-transformer41 [184] 1.7% syntax-e [8] 1.3% --------------------------------------------------------------------------------- return/no-unsupplied [200] 100.0% [203] 426(1.0%) 426(1.0%) filter ...5/collects/racket/private/list.rkt:256:2 --------------------------------------------------------------------------------- loop [202] 100.0% [204] 1232(3.0%) 606(1.5%) gf (unknown source) propagation-apply [206] 33.0% propagation-merge [207] 17.9% --------------------------------------------------------------------------------- loop [202] 13.9% for-loop [99] 86.1% [205] 828(2.0%) 430(1.0%) mk-enode-rec! ...version/src/core/egraph.rkt:117:0 new-enode [208] 24.2% for-loop [209] 23.9% loop [202] 13.9% --------------------------------------------------------------------------------- gf [204] 100.0% [206] 406(1.0%) 406(1.0%) propagation-apply (unknown source) --------------------------------------------------------------------------------- gf [204] 100.0% [207] 220(0.5%) 220(0.5%) propagation-merge (unknown source) --------------------------------------------------------------------------------- mk-enode-rec! [205] 100.0% [208] 200(0.5%) 0(0.0%) new-enode ...-testversion/src/core/enode.rkt:101:0 set [210] 100.0% --------------------------------------------------------------------------------- mk-enode-rec! [205] 100.0% [209] 198(0.5%) 198(0.5%) for-loop ...testversion/src/core/egraph.rkt:109:10 --------------------------------------------------------------------------------- new-enode [208] 19.0% loop! [131] 81.0% [210] 1050(2.5%) 1050(2.5%) set ...collects/racket/private/set-types.rkt:992:0 ---------------------------------------------------------------------------------