Profiling results ----------------- Total cpu time observed: 110284ms (out of 110952ms) Number of samples taken: 398 (once every 277ms) (Hiding functions with self<1.0% and local<2.0%: 8 of 213 hidden) =================================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee =================================================================================== ??? [23] 100.0% [1] 110284(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [11] 100.0% ----------------------------------------------------------------------------------- ??? [144] 100.0% [2] 3048(2.8%) 0(0.0%) approximate9 ...ie/master/src/core/taylor.rkt:12:0 loop [13] 81.6% for-loop [20] 9.3% simplify [24] 9.1% ----------------------------------------------------------------------------------- matcher [95] 100.0% [3] 2754(2.5%) 0(0.0%) ??? ...s/herbie/master/src/core/matcher.rkt:130:11 for-loop [12] 92.5% for-loop [22] 7.5% ----------------------------------------------------------------------------------- hash-ref! [33] 100.0% [4] 1914(1.7%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:291:26 for-loop [14] 100.0% ----------------------------------------------------------------------------------- for-loop [87] 100.0% [5] 1590(1.4%) 0(0.0%) for-loop ...erbie/master/src/core/matcher.rkt:99:8 fix-up-variables [15] 100.0% ----------------------------------------------------------------------------------- for-loop [203] 100.0% [6] 1074(1.0%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [16] 100.0% ----------------------------------------------------------------------------------- hash-ref! [33] 100.0% [7] 1038(0.9%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:301:23 for-loop [17] 100.0% ----------------------------------------------------------------------------------- ??? [23] 100.0% [8] 962(0.9%) 0(0.0%) get-final-combination ...er/src/mainloop.rkt:369:0 infer-splitpoints [18] 100.0% ----------------------------------------------------------------------------------- loop [194] 31.8% for-loop [203] 34.0% expand-capturing-lifts [191] 34.2% [9] 812(0.7%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [19] 100.0% ----------------------------------------------------------------------------------- taylor [63] 100.0% [10] 284(0.3%) 0(0.0%) taylor-invert .../master/src/core/taylor.rkt:318:0 first-nonzero-exp [21] 100.0% ----------------------------------------------------------------------------------- profile-thunk16 [1] 100.0% [11] 110284(100.0%) 0(0.0%) run ...et-7.2/share/pkgs/profile-lib/main.rkt:39:2 ??? [23] 100.0% ----------------------------------------------------------------------------------- ??? [3] 100.0% [12] 2548(2.3%) 0(0.0%) for-loop ...bie/master/src/core/matcher.rkt:132:15 matcher [95] 100.0% ----------------------------------------------------------------------------------- approximate9 [2] 100.0% [13] 2486(2.3%) 0(0.0%) loop ...ies/herbie/master/src/core/taylor.rkt:87:4 hash-ref! [33] 77.6% ??? [144] 22.4% ----------------------------------------------------------------------------------- ??? [4] 100.0% [14] 1914(1.7%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:291:52 simplify [24] 61.3% hash-ref! [33] 32.1% ??? [30] 6.5% ----------------------------------------------------------------------------------- for-loop [5] 100.0% [15] 1590(1.4%) 0(0.0%) fix-up-variables ...ter/src/core/matcher.rkt:111:2 pattern-match [26] 48.7% pattern-substitute [101] 28.6% for-loop [27] 22.8% ----------------------------------------------------------------------------------- expand-id-application-form17 [197] 21.8% syntax-e [6] 78.2% [16] 1374(1.2%) 0(0.0%) syntax-e/no-taint (unknown source) loop [194] 100.0% ----------------------------------------------------------------------------------- ??? [7] 100.0% [17] 1038(0.9%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:304:27 hash-ref! [33] 100.0% ----------------------------------------------------------------------------------- get-final-combination [8] 100.0% [18] 962(0.9%) 0(0.0%) infer-splitpoints ...ter/src/core/regimes.rkt:34:0 for-loop [25] 100.0% ----------------------------------------------------------------------------------- dispatch-transformer41 [9] 100.0% [19] 812(0.7%) 0(0.0%) apply-transformer52 (unknown source) apply-post-expansion [28] 34.2% loop [194] 34.0% apply-transformer-in-context [29] 31.8% ----------------------------------------------------------------------------------- approximate9 [2] 100.0% [20] 284(0.3%) 0(0.0%) for-loop ...erbie/master/src/core/taylor.rkt:30:18 taylor [63] 100.0% ----------------------------------------------------------------------------------- taylor-invert [10] 100.0% [21] 284(0.3%) 0(0.0%) first-nonzero-exp ...ter/src/core/taylor.rkt:266:0 hash-ref! [33] 100.0% ----------------------------------------------------------------------------------- ??? [3] 100.0% [22] 206(0.2%) 0(0.0%) for-loop ...rbie/master/src/core/matcher.rkt:106:4 foldl [140] 100.0% ----------------------------------------------------------------------------------- for-loop [166] 1.5% run [11] 49.2% [23] 110284(100.0%) 824(0.7%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 49.2% run-improve47 [31] 42.8% prepare-points-intervals [32] 5.1% ??? [58] 1.0% oracle-error [34] 0.7% get-final-combination [8] 0.3% baseline-error [40] 0.1% errors [155] 0.1% ??? [144] 0.1% ----------------------------------------------------------------------------------- approximate9 [2] 10.0% for-loop [14] 42.3% hash-ref! [33] 47.7% [24] 2776(2.5%) 584(0.5%) simplify ...herbie/master/src/core/reduce.rkt:16:0 parse-loop80 [36] 40.3% debug-print [39] 20.0% f67 [38] 18.6% ----------------------------------------------------------------------------------- infer-splitpoints [18] 100.0% [25] 962(0.9%) 0(0.0%) for-loop ...erbie/master/src/core/regimes.rkt:47:6 option-on-expr [37] 100.0% ----------------------------------------------------------------------------------- fix-up-variables [15] 100.0% [26] 774(0.7%) 0(0.0%) pattern-match .../master/src/core/matcher.rkt:30:0 for-loop [35] 100.0% ----------------------------------------------------------------------------------- fix-up-variables [15] 100.0% [27] 362(0.3%) 0(0.0%) for-loop ...erbie/master/src/core/matcher.rkt:42:9 for-loop [35] 100.0% ----------------------------------------------------------------------------------- apply-transformer52 [19] 100.0% [28] 278(0.3%) 0(0.0%) apply-post-expansion (unknown source) gf [196] 100.0% ----------------------------------------------------------------------------------- apply-transformer52 [19] 100.0% [29] 258(0.2%) 0(0.0%) apply-transformer-in-context (unknown source) datum->syntax6 [41] 100.0% ----------------------------------------------------------------------------------- for-loop [14] 100.0% [30] 250(0.2%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:294:19 hash-ref! [33] 100.0% ----------------------------------------------------------------------------------- ??? [23] 100.0% [31] 95844(86.9%) 0(0.0%) run-improve47 ...bie/master/src/mainloop.rkt:345:0 for-loop [42] 60.4% simplify! [57] 39.6% ----------------------------------------------------------------------------------- ??? [23] 100.0% [32] 11324(10.3%) 0(0.0%) prepare-points-intervals ...r/src/points.rkt:110:0 loop [43] 100.0% ----------------------------------------------------------------------------------- ??? [30] 1.3% for-loop [14] 5.6% ??? [45] 5.8% for-loop [17] 8.7% first-nonzero-exp [21] 10.3% loop [13] 18.2% ??? [44] 23.5% ??? [144] 26.7% [33] 2770(2.5%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [45] 24.0% ??? [44] 23.5% simplify [24] 21.3% ??? [4] 19.3% ??? [7] 8.7% taylor [63] 3.3% ----------------------------------------------------------------------------------- ??? [23] 100.0% [34] 1500(1.4%) 0(0.0%) oracle-error ...herbie/master/src/points.rkt:188:0 for-loop [47] 100.0% ----------------------------------------------------------------------------------- for-loop [27] 31.9% pattern-match [26] 68.1% [35] 1136(1.0%) 0(0.0%) for-loop ...erbie/master/src/core/matcher.rkt:27:9 core651 [49] 68.1% fallback-update [163] 31.9% ----------------------------------------------------------------------------------- parse-loop80 [36] 8.3% map [54] 8.3% simplify [24] 83.5% [36] 1120(1.0%) 0(0.0%) parse-loop80 ...s/racket/match/compiler.rkt:418:15 eval-const-expr [46] 75.2% f67 [38] 16.5% parse-loop80 [36] 8.3% ----------------------------------------------------------------------------------- for-loop [25] 100.0% [37] 962(0.9%) 0(0.0%) option-on-expr ...aster/src/core/regimes.rkt:126:0 for-loop [48] 100.0% ----------------------------------------------------------------------------------- parse-loop80 [36] 35.0% simplify [24] 65.0% [38] 794(0.7%) 0(0.0%) f67 ...2/collects/racket/match/compiler.rkt:507:40 eval-const-expr [46] 82.5% map [54] 17.5% ----------------------------------------------------------------------------------- simplify [24] 100.0% [39] 556(0.5%) 0(0.0%) debug-print ...s/herbie/master/src/debug.rkt:110:0 ??? [50] 100.0% ----------------------------------------------------------------------------------- ??? [23] 100.0% [40] 300(0.3%) 0(0.0%) baseline-error ...rbie/master/src/points.rkt:192:0 loop [138] 100.0% ----------------------------------------------------------------------------------- apply-transformer-in-context [29] 100.0% [41] 258(0.2%) 0(0.0%) datum->syntax6 (unknown source) loop [194] 100.0% ----------------------------------------------------------------------------------- run-improve47 [31] 100.0% [42] 57856(52.5%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:363:4 run-iter! [51] 100.0% ----------------------------------------------------------------------------------- prepare-points-intervals [32] 100.0% [43] 11324(10.3%) 0(0.0%) loop ...ghtlies/herbie/master/src/points.rkt:123:4 loop [52] 62.5% ??? [53] 37.5% ----------------------------------------------------------------------------------- hash-ref! [33] 100.0% [44] 2214(2.0%) 0(0.0%) ??? ...ies/herbie/master/src/core/taylor.rkt:45:15 hash-ref! [33] 100.0% ----------------------------------------------------------------------------------- hash-ref! [33] 100.0% [45] 1928(1.7%) 0(0.0%) ??? ...ies/herbie/master/src/core/taylor.rkt:68:15 ??? [144] 80.4% hash-ref! [33] 19.6% ----------------------------------------------------------------------------------- f67 [38] 48.5% parse-loop80 [36] 51.5% [46] 1636(1.5%) 0(0.0%) eval-const-expr ...e/master/src/programs.rkt:118:0 temp85_0 [172] 83.0% loop [194] 17.0% ----------------------------------------------------------------------------------- oracle-error [34] 100.0% [47] 1500(1.4%) 0(0.0%) for-loop ...ies/herbie/master/src/points.rkt:189:2 loop [116] 80.0% map [54] 20.0% ----------------------------------------------------------------------------------- option-on-expr [37] 100.0% [48] 962(0.9%) 0(0.0%) for-loop ...rbie/master/src/core/regimes.rkt:136:4 errors [155] 100.0% ----------------------------------------------------------------------------------- for-loop [35] 100.0% [49] 774(0.7%) 278(0.3%) core651 ...acket/contract/private/arr-i.rkt:929:19 ??? [55] 42.1% arrow-higher-order:lnp [56] 22.0% ----------------------------------------------------------------------------------- debug-print [39] 100.0% [50] 556(0.5%) 556(0.5%) ??? .../contract/private/arrow-val-first.rkt:430:3 ----------------------------------------------------------------------------------- for-loop [42] 100.0% [51] 57856(52.5%) 0(0.0%) run-iter! .../herbie/master/src/mainloop.rkt:326:0 simplify! [57] 70.6% finalize-iter! [59] 17.7% gen-rewrites! [60] 5.4% gen-series! [61] 5.3% choose-best-alt! [62] 1.0% ----------------------------------------------------------------------------------- loop [43] 100.0% [52] 7072(6.4%) 0(0.0%) loop ...ightlies/herbie/master/src/points.rkt:81:2 ??? [58] 100.0% ----------------------------------------------------------------------------------- loop [43] 100.0% [53] 4252(3.9%) 594(0.5%) ??? ...ightlies/herbie/master/src/points.rkt:106:2 ??? [144] 86.0% ----------------------------------------------------------------------------------- f67 [38] 24.5% for-loop [47] 26.5% taylor [63] 49.0% [54] 1134(1.0%) 0(0.0%) map ...t-7.2/collects/racket/private/map.rkt:35:13 taylor [63] 49.0% loop [116] 26.5% parse-loop80 [36] 24.5% ----------------------------------------------------------------------------------- core651 [49] 100.0% [55] 326(0.3%) 0(0.0%) ??? ...ects/racket/contract/private/guts.rkt:772:8 ??? [64] 100.0% ----------------------------------------------------------------------------------- core651 [49] 100.0% [56] 170(0.2%) 0(0.0%) arrow-higher-order:lnp ...w-higher-order.rkt:699:7 ??? [65] 100.0% ----------------------------------------------------------------------------------- run-improve47 [31] 48.2% run-iter! [51] 51.8% [57] 78858(71.5%) 0(0.0%) simplify! .../herbie/master/src/mainloop.rkt:223:0 ??? [66] 99.6% for-loop [71] 0.4% ----------------------------------------------------------------------------------- loop [116] 2.5% for-loop [171] 2.6% ??? [134] 5.2% ??? [23] 28.9% loop [52] 60.8% [58] 11632(10.5%) 1132(1.0%) ??? ...htlies/herbie/master/src/programs.rkt:115:2 ??? [67] 71.4% ??? [144] 18.8% ----------------------------------------------------------------------------------- run-iter! [51] 100.0% [59] 10240(9.3%) 0(0.0%) finalize-iter! ...ie/master/src/mainloop.rkt:277:0 ??? [106] 100.0% ----------------------------------------------------------------------------------- run-iter! [51] 100.0% [60] 3124(2.8%) 0(0.0%) gen-rewrites! ...bie/master/src/mainloop.rkt:182:0 for-loop [69] 88.2% for-loop [70] 11.8% ----------------------------------------------------------------------------------- run-iter! [51] 100.0% [61] 3048(2.8%) 0(0.0%) gen-series! ...erbie/master/src/mainloop.rkt:159:0 for-loop [68] 100.0% ----------------------------------------------------------------------------------- run-iter! [51] 100.0% [62] 574(0.5%) 0(0.0%) choose-best-alt! .../master/src/mainloop.rkt:116:0 ??? [106] 100.0% ----------------------------------------------------------------------------------- hash-ref! [33] 12.2% for-loop [20] 12.8% map [54] 25.0% taylor [63] 50.0% [63] 556(0.5%) 0(0.0%) taylor .../herbie/master/src/core/taylor.rkt:170:0 taylor [63] 50.0% map [54] 25.0% taylor-invert [10] 12.8% debug5 [72] 12.2% ----------------------------------------------------------------------------------- ??? [55] 100.0% [64] 326(0.3%) 326(0.3%) ??? /opt/racket-7.2/collects/racket/dict.rkt:11:8 ----------------------------------------------------------------------------------- arrow-higher-order:lnp [56] 100.0% [65] 170(0.2%) 170(0.2%) ??? ...et/contract/private/arity-checking.rkt:19:2 ----------------------------------------------------------------------------------- simplify! [57] 100.0% [66] 78570(71.2%) 0(0.0%) ??? ...es/herbie/master/src/core/simplify.rkt:26:0 for-loop [73] 89.6% one-iter [80] 8.6% loop [77] 1.1% loop [116] 0.4% for-loop [79] 0.4% ----------------------------------------------------------------------------------- ??? [58] 100.0% [67] 8310(7.5%) 0(0.0%) ??? ...t-7.2/collects/racket/private/kw.rkt:594:14 ??? [144] 43.6% ??? [74] 41.5% ??? [174] 14.9% ----------------------------------------------------------------------------------- gen-series! [61] 100.0% [68] 3048(2.8%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:166:7 taylor-alt [75] 100.0% ----------------------------------------------------------------------------------- gen-rewrites! [60] 100.0% [69] 2754(2.5%) 0(0.0%) for-loop .../herbie/master/src/mainloop.rkt:190:11 rewrite-expression-head20 [76] 100.0% ----------------------------------------------------------------------------------- gen-rewrites! [60] 100.0% [70] 370(0.3%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:207:4 for-loop [78] 100.0% ----------------------------------------------------------------------------------- for-loop [71] 50.0% simplify! [57] 50.0% [71] 288(0.3%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:250:6 for-loop [71] 50.0% ??? [144] 50.0% ----------------------------------------------------------------------------------- taylor [63] 100.0% [72] 272(0.2%) 0(0.0%) debug5 ...htlies/herbie/master/src/debug.rkt:102:0 return/no-unsupplied [83] 100.0% ----------------------------------------------------------------------------------- ??? [66] 100.0% [73] 70364(63.8%) 0(0.0%) for-loop ...rbie/master/src/core/simplify.rkt:35:2 one-iter [80] 100.0% ----------------------------------------------------------------------------------- ??? [67] 100.0% [74] 3448(3.1%) 2988(2.7%) ??? .../herbie/master/src/syntax/syntax.rkt:214:17 return/no-unsupplied [83] 13.3% ----------------------------------------------------------------------------------- for-loop [68] 100.0% [75] 3048(2.8%) 0(0.0%) taylor-alt ...herbie/master/src/mainloop.rkt:145:0 for-loop [81] 100.0% ----------------------------------------------------------------------------------- for-loop [69] 100.0% [76] 2754(2.5%) 0(0.0%) rewrite-expression-head20 ...core/matcher.rkt:87:0 rewriter [82] 100.0% ----------------------------------------------------------------------------------- ??? [66] 100.0% [77] 890(0.8%) 406(0.4%) loop ...herbie/master/src/core/extraction.rkt:25:2 for-loop [84] 54.4% ----------------------------------------------------------------------------------- for-loop [70] 100.0% [78] 370(0.3%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:208:6 ??? [144] 100.0% ----------------------------------------------------------------------------------- ??? [66] 100.0% [79] 280(0.3%) 0(0.0%) for-loop ...bie/master/src/core/simplify.rkt:32:14 mk-enode-rec! [100] 100.0% ----------------------------------------------------------------------------------- ??? [66] 8.8% for-loop [73] 91.2% [80] 77118(69.9%) 0(0.0%) one-iter ...rbie/master/src/core/simplify.rkt:72:0 for-loop [85] 65.1% find-matches [86] 31.0% for-loop [88] 3.0% for-loop [90] 0.9% ----------------------------------------------------------------------------------- taylor-alt [75] 100.0% [81] 3048(2.8%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:151:6 ??? [144] 100.0% ----------------------------------------------------------------------------------- rewrite-expression-head20 [76] 41.7% matcher [95] 58.3% [82] 2754(2.5%) 160(0.1%) rewriter ...erbie/master/src/core/matcher.rkt:90:2 for-loop [87] 87.7% *rules* [89] 10.8% ----------------------------------------------------------------------------------- debug5 [72] 37.2% ??? [74] 62.8% [83] 732(0.7%) 572(0.5%) return/no-unsupplied ...ct/private/arr-i.rkt:542:0 filter [92] 21.9% ----------------------------------------------------------------------------------- loop [77] 100.0% [84] 484(0.4%) 270(0.2%) for-loop ...ie/master/src/core/extraction.rkt:29:4 for-loop [91] 44.2% ----------------------------------------------------------------------------------- one-iter [80] 100.0% [85] 50214(45.5%) 0(0.0%) for-loop ...rbie/master/src/core/simplify.rkt:74:2 for-loop [93] 100.0% ----------------------------------------------------------------------------------- one-iter [80] 100.0% [86] 23932(21.7%) 0(0.0%) find-matches .../master/src/core/simplify.rkt:62:0 for-loop [94] 100.0% ----------------------------------------------------------------------------------- rewriter [82] 100.0% [87] 2754(2.5%) 0(0.0%) for-loop ...erbie/master/src/core/matcher.rkt:92:4 matcher [95] 78.1% for-loop [5] 21.9% ----------------------------------------------------------------------------------- one-iter [80] 100.0% [88] 2286(2.1%) 0(0.0%) for-loop ...rbie/master/src/core/simplify.rkt:84:2 update-leader! [103] 100.0% ----------------------------------------------------------------------------------- rewriter [82] 100.0% [89] 798(0.7%) 0(0.0%) *rules* ...erbie/master/src/syntax/rules.rkt:666:0 for-loop [109] 100.0% ----------------------------------------------------------------------------------- one-iter [80] 100.0% [90] 686(0.6%) 0(0.0%) for-loop ...rbie/master/src/core/simplify.rkt:81:2 set-precompute! [96] 100.0% ----------------------------------------------------------------------------------- for-loop [84] 100.0% [91] 214(0.2%) 0(0.0%) for-loop ...e/master/src/core/extraction.rkt:37:16 for-loop [97] 100.0% ----------------------------------------------------------------------------------- return/no-unsupplied [83] 100.0% [92] 160(0.1%) 160(0.1%) filter ...2/collects/racket/private/list.rkt:256:2 ----------------------------------------------------------------------------------- for-loop [85] 100.0% [93] 50214(45.5%) 0(0.0%) for-loop ...rbie/master/src/core/simplify.rkt:77:4 merge-egraph-nodes! [98] 68.2% dedup-children! [115] 21.9% mk-enode-rec! [100] 6.9% pattern-substitute [101] 3.0% ----------------------------------------------------------------------------------- for-loop [94] 49.7% find-matches [86] 50.3% [94] 23932(21.7%) 374(0.3%) for-loop ...rbie/master/src/core/simplify.rkt:64:8 for-loop [94] 49.7% match-e [99] 48.6% ??? [135] 0.6% ----------------------------------------------------------------------------------- for-loop [12] 46.3% for-loop [87] 53.7% [95] 2754(2.5%) 0(0.0%) matcher ...erbie/master/src/core/matcher.rkt:118:2 ??? [3] 53.7% rewriter [82] 46.3% ----------------------------------------------------------------------------------- for-loop [90] 100.0% [96] 686(0.6%) 0(0.0%) set-precompute! ...ster/src/core/simplify.rkt:88:0 for-loop [102] 100.0% ----------------------------------------------------------------------------------- for-loop [91] 100.0% [97] 214(0.2%) 214(0.2%) for-loop ...e/master/src/core/extraction.rkt:41:23 ----------------------------------------------------------------------------------- for-loop [107] 2.9% merge-egraph-nodes! [98] 7.4% for-loop [93] 89.7% [98] 34228(31.0%) 252(0.2%) merge-egraph-nodes! ...r/src/core/egraph.rkt:145:0 update-leader! [103] 50.8% loop! [105] 33.1% merge-egraph-nodes! [98] 7.4% for-loop [107] 4.8% dedup-children! [115] 1.7% for-loop [109] 0.7% ----------------------------------------------------------------------------------- for-loop [114] 29.1% for-loop [94] 70.9% [99] 23272(21.1%) 3800(3.4%) match-e .../herbie/master/src/core/ematch.rkt:39:0 for-loop [104] 77.1% constant? [158] 5.2% variable? [108] 3.6% ----------------------------------------------------------------------------------- for-loop [79] 7.4% loop [116] 7.9% for-loop [93] 84.7% [100] 3760(3.4%) 1934(1.8%) mk-enode-rec! .../master/src/core/egraph.rkt:117:0 loop [116] 27.9% for-loop [110] 17.0% do-curry [120] 3.7% ----------------------------------------------------------------------------------- fix-up-variables [15] 9.2% pattern-substitute [101] 40.0% for-loop [93] 50.7% [101] 1982(1.8%) 748(0.7%) pattern-substitute ...er/src/core/matcher.rkt:46:0 pattern-substitute [101] 40.0% assoc-ref [112] 7.8% do-curry [120] 6.2% constant? [158] 4.8% ??? [106] 4.4% variable? [108] 3.8% ----------------------------------------------------------------------------------- set-precompute! [96] 100.0% [102] 686(0.6%) 258(0.2%) for-loop ...rbie/master/src/core/simplify.rkt:90:2 setfindf [111] 62.4% ----------------------------------------------------------------------------------- for-loop [88] 10.7% merge-egraph-nodes! [98] 89.3% [103] 21314(19.3%) 1108(1.0%) update-leader! ...master/src/core/egraph.rkt:213:0 for-loop [113] 92.1% for-loop [123] 2.7% ----------------------------------------------------------------------------------- match-e [99] 100.0% [104] 19976(18.1%) 7964(7.2%) for-loop ...erbie/master/src/core/ematch.rkt:52:11 for-loop [114] 48.8% do-curry [120] 11.2% loop [116] 4.0% cartesian-product [121] 3.6% procedure-reduce-keyword-arity-mask [122] 2.7% ----------------------------------------------------------------------------------- loop [116] 27.8% merge-egraph-nodes! [98] 72.2% [105] 12946(11.7%) 1980(1.8%) loop! ...es/herbie/master/src/core/enode.rkt:194:2 custom-set-union [118] 39.5% loop [116] 31.9% set [119] 15.4% update-en-expr [173] 3.2% ----------------------------------------------------------------------------------- pattern-substitute [101] 2.1% choose-best-alt! [62] 4.5% variable? [108] 12.7% finalize-iter! [59] 80.7% [106] 12688(11.5%) 1874(1.7%) ??? ...contract/private/arrow-val-first.rkt:390:18 for-loop [117] 77.1% ??? [124] 4.5% atab-add-altns [125] 3.6% ----------------------------------------------------------------------------------- merge-egraph-nodes! [98] 100.0% [107] 2782(2.5%) 0(0.0%) for-loop ...erbie/master/src/core/egraph.rkt:199:4 merge-egraph-nodes! [98] 76.6% dedup-children! [115] 23.4% ----------------------------------------------------------------------------------- pattern-substitute [101] 9.7% match-e [99] 90.3% [108] 2328(2.1%) 0(0.0%) variable? ...ie/master/src/syntax/syntax.rkt:729:0 ??? [106] 69.2% value? [167] 30.8% ----------------------------------------------------------------------------------- merge-egraph-nodes! [98] 23.9% *rules* [89] 76.1% [109] 1048(1.0%) 410(0.4%) for-loop ...lies/herbie/master/src/common.rkt:62:9 procedure-reduce-arity [127] 34.5% ormap [128] 26.3% ----------------------------------------------------------------------------------- mk-enode-rec! [100] 100.0% [110] 640(0.6%) 640(0.6%) for-loop ...rbie/master/src/core/egraph.rkt:109:10 ----------------------------------------------------------------------------------- for-loop [102] 100.0% [111] 428(0.4%) 0(0.0%) setfindf ...ies/herbie/master/src/common.rkt:130:0 for-loop [126] 100.0% ----------------------------------------------------------------------------------- pattern-substitute [101] 100.0% [112] 310(0.3%) 310(0.3%) assoc-ref ...collects/racket/private/dict.rkt:56:0 ----------------------------------------------------------------------------------- update-leader! [103] 100.0% [113] 19624(17.8%) 288(0.3%) for-loop ...erbie/master/src/core/egraph.rkt:218:6 for-loop [129] 57.3% hash-update! [143] 41.3% ----------------------------------------------------------------------------------- for-loop [104] 100.0% [114] 13820(12.5%) 248(0.2%) for-loop ...erbie/master/src/core/ematch.rkt:58:37 match-e [99] 93.2% ??? [135] 5.1% ----------------------------------------------------------------------------------- for-loop [107] 5.2% merge-egraph-nodes! [98] 6.8% for-loop [93] 88.0% [115] 12478(11.3%) 0(0.0%) dedup-children! ...master/src/core/enode.rkt:202:0 loop [130] 63.0% loop [132] 37.0% ----------------------------------------------------------------------------------- ??? [66] 0.5% for-loop [104] 2.0% map [54] 2.6% for-loop [47] 4.4% loop! [105] 9.4% mk-enode-rec! [100] 10.4% loop [116] 70.7% [116] 11356(10.3%) 1248(1.1%) loop ...-7.2/collects/racket/private/map.rkt:40:19 loop [116] 70.7% loop! [105] 7.4% ??? [134] 5.7% ??? [136] 5.2% mk-enode-rec! [100] 3.8% ??? [58] 1.3% foldl [140] 0.0% ----------------------------------------------------------------------------------- ??? [106] 100.0% [117] 9778(8.9%) 0(0.0%) for-loop ...bie/master/src/core/alt-table.rkt:55:2 atab-add-altn [131] 58.0% errors [155] 29.9% override-at-pnts [146] 6.1% loop [137] 6.0% ----------------------------------------------------------------------------------- loop! [105] 100.0% [118] 5498(5.0%) 2082(1.9%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [133] 52.2% for-loop [139] 9.9% ----------------------------------------------------------------------------------- loop! [105] 100.0% [119] 4128(3.7%) 4128(3.7%) set ...collects/racket/private/set-types.rkt:981:0 ----------------------------------------------------------------------------------- pattern-substitute [101] 7.2% mk-enode-rec! [100] 8.1% for-loop [104] 84.8% [120] 3410(3.1%) 3410(3.1%) do-curry ...-7.2/collects/racket/function.rkt:71:2 ----------------------------------------------------------------------------------- for-loop [104] 100.0% [121] 834(0.8%) 834(0.8%) cartesian-product ...ollects/racket/list.rkt:822:0 ----------------------------------------------------------------------------------- for-loop [104] 100.0% [122] 786(0.7%) 786(0.7%) procedure-reduce-keyword-arity-mask ....rkt:1562:4 ----------------------------------------------------------------------------------- update-leader! [103] 100.0% [123] 582(0.5%) 582(0.5%) for-loop ...erbie/master/src/core/egraph.rkt:228:6 ----------------------------------------------------------------------------------- ??? [106] 100.0% [124] 574(0.5%) 0(0.0%) ??? ...s/herbie/master/src/core/alt-table.rkt:58:0 argmin [141] 51.9% loop [138] 48.1% ----------------------------------------------------------------------------------- ??? [106] 100.0% [125] 462(0.4%) 0(0.0%) atab-add-altns ...ster/src/core/alt-table.rkt:49:0 atab-add-altn [131] 100.0% ----------------------------------------------------------------------------------- setfindf [111] 100.0% [126] 428(0.4%) 428(0.4%) for-loop ...ies/herbie/master/src/common.rkt:131:2 ----------------------------------------------------------------------------------- for-loop [109] 100.0% [127] 362(0.3%) 362(0.3%) procedure-reduce-arity ...t/private/kw.rkt:1690:11 ----------------------------------------------------------------------------------- for-loop [109] 100.0% [128] 276(0.3%) 0(0.0%) ormap ....2/collects/racket/private/map.rkt:141:13 flag-set? [142] 100.0% ----------------------------------------------------------------------------------- for-loop [113] 100.0% [129] 11236(10.2%) 0(0.0%) for-loop ...erbie/master/src/core/egraph.rkt:219:8 hash-update! [143] 100.0% ----------------------------------------------------------------------------------- dedup-children! [115] 7.0% loop [130] 93.0% [130] 7864(7.1%) 7864(7.1%) loop ...racket-7.2/collects/racket/list.rkt:434:17 loop [130] 93.0% ----------------------------------------------------------------------------------- atab-add-altns [125] 7.5% for-loop [117] 92.5% [131] 6130(5.6%) 580(0.5%) atab-add-altn ...ster/src/core/alt-table.rkt:203:0 errors [155] 71.0% override-at-pnts [146] 14.2% for-loop [150] 5.4% ----------------------------------------------------------------------------------- dedup-children! [115] 24.6% loop [132] 75.4% [132] 4614(4.2%) 544(0.5%) loop ...racket-7.2/collects/racket/list.rkt:417:34 loop [132] 75.4% member [147] 13.5% loop [194] 9.7% ----------------------------------------------------------------------------------- custom-set-union [118] 100.0% [133] 2870(2.6%) 1226(1.1%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [145] 57.3% ----------------------------------------------------------------------------------- loop [116] 100.0% [134] 1204(1.1%) 304(0.3%) ??? ...ghtlies/herbie/master/src/points.rkt:190:26 ??? [58] 49.8% ??? [144] 24.9% ----------------------------------------------------------------------------------- for-loop [94] 29.1% for-loop [114] 70.9% [135] 984(0.9%) 0(0.0%) ??? ...lies/herbie/master/src/core/ematch.rkt:43:5 for-loop [148] 100.0% ----------------------------------------------------------------------------------- loop [116] 100.0% [136] 594(0.5%) 594(0.5%) ??? ...cket-7.2/collects/racket/function.rkt:93:12 ----------------------------------------------------------------------------------- for-loop [117] 100.0% [137] 584(0.5%) 584(0.5%) loop ...herbie/master/src/core/alt-table.rkt:177:2 ----------------------------------------------------------------------------------- ??? [124] 47.9% baseline-error [40] 52.1% [138] 576(0.5%) 0(0.0%) loop .../racket-7.2/collects/racket/list.rkt:751:4 ??? [151] 52.1% ??? [149] 47.9% ----------------------------------------------------------------------------------- custom-set-union [118] 100.0% [139] 546(0.5%) 546(0.5%) for-loop ...cts/racket/private/set-types.rkt:152:2 ----------------------------------------------------------------------------------- loop [116] 46.4% for-loop [22] 53.6% [140] 384(0.3%) 0(0.0%) foldl ....2/collects/racket/private/list.rkt:229:4 ??? [152] 53.6% merge2 [153] 46.4% ----------------------------------------------------------------------------------- ??? [124] 100.0% [141] 298(0.3%) 0(0.0%) argmin ...acket-7.2/collects/racket/list.rkt:765:0 ??? [149] 100.0% ----------------------------------------------------------------------------------- ormap [128] 100.0% [142] 276(0.3%) 276(0.3%) flag-set? ...ies/herbie/master/src/config.rkt:28:0 ----------------------------------------------------------------------------------- for-loop [113] 41.9% for-loop [129] 58.1% [143] 19336(17.5%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [154] 100.0% ----------------------------------------------------------------------------------- loop [13] 1.3% for-loop [71] 2.1% ??? [134] 2.2% ??? [23] 2.4% for-loop [78] 2.7% ??? [45] 4.7% location-do [157] 8.0% for-loop [81] 8.0% ??? [58] 15.9% ??? [67] 26.2% ??? [53] 26.5% [144] 13810(12.5%) 1790(1.6%) ??? ...tract/private/arrow-higher-order.rkt:360:33 ival-mult [156] 26.2% sample-multi-bounded [159] 17.6% mk-ival [160] 11.6% location-do [157] 10.7% approximate9 [2] 8.0% hash-ref! [33] 6.0% ??? [162] 4.5% ??? [178] 2.3% ----------------------------------------------------------------------------------- for-loop [133] 100.0% [145] 1644(1.5%) 1644(1.5%) for-loop ...cts/racket/private/set-types.rkt:178:5 ----------------------------------------------------------------------------------- for-loop [117] 40.8% atab-add-altn [131] 59.2% [146] 1466(1.3%) 0(0.0%) override-at-pnts ...r/src/core/alt-table.rkt:138:0 for-loop [161] 100.0% ----------------------------------------------------------------------------------- loop [132] 100.0% [147] 1402(1.3%) 1402(1.3%) member (unknown source) ----------------------------------------------------------------------------------- ??? [135] 100.0% [148] 984(0.9%) 208(0.2%) for-loop ...herbie/master/src/core/ematch.rkt:44:7 constant? [158] 78.9% ----------------------------------------------------------------------------------- loop [138] 48.1% argmin [141] 51.9% [149] 574(0.5%) 0(0.0%) ??? ...tlies/herbie/master/src/mainloop.rkt:113:10 errors [155] 100.0% ----------------------------------------------------------------------------------- atab-add-altn [131] 100.0% [150] 328(0.3%) 328(0.3%) for-loop ...ie/master/src/core/alt-table.rkt:119:2 ----------------------------------------------------------------------------------- loop [138] 100.0% [151] 300(0.3%) 0(0.0%) ??? ...ghtlies/herbie/master/src/points.rkt:193:27 eval-errors [164] 100.0% ----------------------------------------------------------------------------------- foldl [140] 100.0% [152] 206(0.2%) 0(0.0%) ??? ...ies/herbie/master/src/core/matcher.rkt:26:7 fallback-update [163] 100.0% ----------------------------------------------------------------------------------- foldl [140] 100.0% [153] 178(0.2%) 178(0.2%) merge2 ...s/herbie/master/src/core/ematch.rkt:24:0 ----------------------------------------------------------------------------------- hash-update! [143] 100.0% [154] 19336(17.5%) 792(0.7%) ??? ...es/herbie/master/src/core/egraph.rkt:221:24 for-loop [165] 95.9% ----------------------------------------------------------------------------------- ??? [23] 3.9% ??? [149] 6.3% for-loop [48] 10.5% for-loop [117] 31.9% atab-add-altn [131] 47.5% [155] 9172(8.3%) 0(0.0%) errors ...tlies/herbie/master/src/points.rkt:205:0 for-loop [166] 64.7% eval-prog [168] 35.3% ----------------------------------------------------------------------------------- ??? [144] 100.0% [156] 3624(3.3%) 728(0.7%) ival-mult ...rbie/master/src/biginterval.rkt:111:0 bfsub [182] 79.9% ----------------------------------------------------------------------------------- location-do [157] 36.0% ??? [144] 64.0% [157] 3418(3.1%) 370(0.3%) location-do ...herbie/master/src/programs.rkt:64:0 ??? [144] 58.6% location-do [157] 36.0% ----------------------------------------------------------------------------------- pattern-substitute [101] 6.9% for-loop [148] 27.9% match-e [99] 65.2% [158] 2778(2.5%) 0(0.0%) constant? ...ie/master/src/syntax/syntax.rkt:726:0 value? [167] 100.0% ----------------------------------------------------------------------------------- ??? [144] 100.0% [159] 2432(2.2%) 2132(1.9%) sample-multi-bounded ...master/src/points.rkt:15:0 random-ranges [170] 12.3% ----------------------------------------------------------------------------------- ??? [144] 100.0% [160] 1604(1.5%) 0(0.0%) mk-ival .../herbie/master/src/biginterval.rkt:57:0 bf [169] 100.0% ----------------------------------------------------------------------------------- override-at-pnts [146] 100.0% [161] 1466(1.3%) 1466(1.3%) for-loop ...e/master/src/core/alt-table.rkt:139:22 ----------------------------------------------------------------------------------- ??? [144] 100.0% [162] 624(0.6%) 624(0.6%) ??? ...cts/racket/contract/private/list.rkt:209:10 ----------------------------------------------------------------------------------- ??? [152] 36.3% for-loop [35] 63.7% [163] 568(0.5%) 568(0.5%) fallback-update ...s/racket/private/dict.rkt:115:2 ----------------------------------------------------------------------------------- ??? [151] 100.0% [164] 300(0.3%) 0(0.0%) eval-errors .../herbie/master/src/points.rkt:179:0 for-loop [171] 100.0% ----------------------------------------------------------------------------------- ??? [154] 100.0% [165] 18544(16.8%) 17584(15.9%) for-loop ...rbie/master/src/core/egraph.rkt:222:26 update-en-expr [173] 5.2% ----------------------------------------------------------------------------------- errors [155] 100.0% [166] 5932(5.4%) 932(0.8%) for-loop ...ies/herbie/master/src/points.rkt:207:2 ??? [23] 84.3% ----------------------------------------------------------------------------------- variable? [108] 20.5% constant? [158] 79.5% [167] 3494(3.2%) 3494(3.2%) value? .../herbie/master/src/syntax/types.rkt:18:0 ----------------------------------------------------------------------------------- errors [155] 100.0% [168] 3240(2.9%) 0(0.0%) eval-prog ...s/herbie/master/src/programs.rkt:83:0 temp85_0 [172] 89.0% ??? [174] 11.0% ----------------------------------------------------------------------------------- mk-ival [160] 100.0% [169] 1604(1.5%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 new-mpfr [186] 62.6% ??? [187] 37.4% ----------------------------------------------------------------------------------- sample-multi-bounded [159] 100.0% [170] 300(0.3%) 0(0.0%) random-ranges ...erbie/master/src/common.rkt:171:0 build--> [175] 100.0% ----------------------------------------------------------------------------------- eval-errors [164] 100.0% [171] 300(0.3%) 0(0.0%) for-loop ...ies/herbie/master/src/points.rkt:181:2 ??? [58] 100.0% ----------------------------------------------------------------------------------- eval-const-expr [46] 32.0% eval-prog [168] 68.0% [172] 4242(3.8%) 0(0.0%) temp85_0 (unknown source) compile15 [176] 100.0% ----------------------------------------------------------------------------------- loop! [105] 46.0% for-loop [165] 54.0% [173] 1778(1.6%) 1778(1.6%) update-en-expr ...master/src/core/egraph.rkt:207:0 ----------------------------------------------------------------------------------- eval-prog [168] 22.3% ??? [67] 77.7% [174] 1594(1.4%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:364:33 ival-sub [177] 59.6% ??? [178] 22.3% ival-div [180] 18.1% ----------------------------------------------------------------------------------- random-ranges [170] 100.0% [175] 300(0.3%) 0(0.0%) build--> ...act/private/arrow-val-first.rkt:1088:0 coerce-contract [179] 100.0% ----------------------------------------------------------------------------------- temp85_0 [172] 100.0% [176] 4242(3.8%) 0(0.0%) compile15 (unknown source) temp91_0 [181] 100.0% ----------------------------------------------------------------------------------- ??? [174] 100.0% [177] 950(0.9%) 650(0.6%) ival-sub ...herbie/master/src/biginterval.rkt:99:0 bfsub [182] 31.6% ----------------------------------------------------------------------------------- ??? [144] 47.2% ??? [174] 52.8% [178] 674(0.6%) 318(0.3%) ??? ...ects/racket/contract/private/prop.rkt:541:4 ??? [183] 52.8% ----------------------------------------------------------------------------------- build--> [175] 100.0% [179] 300(0.3%) 0(0.0%) coerce-contract ...contract/private/guts.rkt:308:0 coerce-contract/f [184] 100.0% ----------------------------------------------------------------------------------- ??? [174] 100.0% [180] 288(0.3%) 288(0.3%) ival-div ...erbie/master/src/biginterval.rkt:147:0 ----------------------------------------------------------------------------------- compile15 [176] 100.0% [181] 4242(3.8%) 0(0.0%) temp91_0 (unknown source) temp118_0 [185] 93.9% compile-top9 [190] 6.1% ----------------------------------------------------------------------------------- ival-sub [177] 9.4% ival-mult [156] 90.6% [182] 3196(2.9%) 0(0.0%) bfsub ...-lib/math/private/bigfloat/mpfr.rkt:821:4 new-mpfr [186] 78.3% ??? [187] 21.7% ----------------------------------------------------------------------------------- ??? [178] 100.0% [183] 356(0.3%) 0(0.0%) ??? ...lects/racket/contract/private/orc.rkt:83:14 ??? [188] 100.0% ----------------------------------------------------------------------------------- coerce-contract [179] 100.0% [184] 300(0.3%) 0(0.0%) coerce-contract/f ...ntract/private/guts.rkt:373:0 coerce-simple-value [189] 100.0% ----------------------------------------------------------------------------------- temp91_0 [181] 100.0% [185] 3984(3.6%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [191] 100.0% ----------------------------------------------------------------------------------- bf [169] 28.6% bfsub [182] 71.4% [186] 3508(3.2%) 3508(3.2%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 ----------------------------------------------------------------------------------- bf [169] 46.4% bfsub [182] 53.6% [187] 1292(1.2%) 1292(1.2%) ??? /opt/racket-7.2/collects/ffi/unsafe.rkt:905:4 ----------------------------------------------------------------------------------- ??? [183] 100.0% [188] 356(0.3%) 356(0.3%) ??? ...ects/racket/contract/private/list.rkt:163:5 ----------------------------------------------------------------------------------- coerce-contract/f [184] 100.0% [189] 300(0.3%) 300(0.3%) coerce-simple-value ...ract/private/guts.rkt:386:0 ----------------------------------------------------------------------------------- temp91_0 [181] 100.0% [190] 258(0.2%) 0(0.0%) compile-top9 (unknown source) compile-forms33 [192] 100.0% ----------------------------------------------------------------------------------- loop [194] 6.5% temp118_0 [185] 93.5% [191] 4262(3.9%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [193] 93.5% dispatch-transformer41 [9] 6.5% ----------------------------------------------------------------------------------- compile-top9 [190] 100.0% [192] 258(0.2%) 258(0.2%) compile-forms33 (unknown source) ----------------------------------------------------------------------------------- expand-capturing-lifts [191] 100.0% [193] 3984(3.6%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [195] 93.5% loop [194] 6.5% ----------------------------------------------------------------------------------- datum->syntax6 [41] 0.2% lambda-clause-expander [193] 0.2% eval-const-expr [46] 1.9% for-loop [203] 3.1% gf [196] 3.8% loop [194] 5.0% apply-transformer52 [19] 5.7% syntax-e/no-taint [16] 25.2% loop [132] 55.0% [194] 4854(4.4%) 3204(2.9%) loop (unknown source) gf [196] 27.1% core-form-sym [198] 5.7% loop [194] 5.0% expand-id-application-form17 [197] 3.1% expand-capturing-lifts [191] 1.9% dispatch-transformer41 [9] 0.2% ----------------------------------------------------------------------------------- lambda-clause-expander [193] 37.9% for-loop [203] 62.1% [195] 3726(3.4%) 284(0.3%) finish-bodys (unknown source) for-loop [203] 98.7% ----------------------------------------------------------------------------------- apply-post-expansion [28] 8.4% loop [194] 91.6% [196] 1652(1.5%) 0(0.0%) gf (unknown source) propagation-apply [199] 63.1% cache-or-reuse-set [200] 20.1% loop [194] 16.8% ----------------------------------------------------------------------------------- loop [194] 100.0% [197] 300(0.3%) 0(0.0%) expand-id-application-form17 (unknown source) syntax-e/no-taint [16] 100.0% ----------------------------------------------------------------------------------- loop [194] 100.0% [198] 276(0.3%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [201] 100.0% ----------------------------------------------------------------------------------- gf [196] 100.0% [199] 1042(0.9%) 1042(0.9%) propagation-apply (unknown source) ----------------------------------------------------------------------------------- gf [196] 100.0% [200] 332(0.3%) 332(0.3%) cache-or-reuse-set (unknown source) ----------------------------------------------------------------------------------- core-form-sym [198] 100.0% [201] 276(0.3%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [202] 100.0% ----------------------------------------------------------------------------------- resolve+shift28 [201] 100.0% [202] 276(0.3%) 0(0.0%) fallback-loop (unknown source) for-loop [203] 100.0% ----------------------------------------------------------------------------------- fallback-loop [202] 0.6% for-loop [203] 15.0% finish-bodys [195] 84.5% [203] 3726(3.4%) 1260(1.1%) for-loop (unknown source) finish-bodys [195] 58.8% for-loop [203] 15.0% syntax-e [6] 9.2% add-local-binding!39 [204] 3.8% expand-body7 [205] 3.6% loop [194] 1.0% dispatch-transformer41 [9] 0.6% ----------------------------------------------------------------------------------- for-loop [203] 100.0% [204] 542(0.5%) 542(0.5%) add-local-binding!39 (unknown source) ----------------------------------------------------------------------------------- for-loop [203] 100.0% [205] 266(0.2%) 266(0.2%) expand-body7 (unknown source) -----------------------------------------------------------------------------------