Profiling results ----------------- Total cpu time observed: 23684ms (out of 24344ms) Number of samples taken: 115 (once every 206ms) (Hiding functions with self<1.0% and local<2.0%: 4 of 207 hidden) ======================================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ======================================================================================== [1] 23684(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [10] 100.0% ---------------------------------------------------------------------------------------- ??? [152] 100.0% [2] 5408(22.8%) 0(0.0%) approximate9 ...ie/master/src/core/taylor.rkt:11:0 loop [11] 88.3% for-loop [16] 7.5% taylor [18] 4.1% ---------------------------------------------------------------------------------------- hash-ref! [85] 100.0% [3] 3736(15.8%) 0(0.0%) ??? ...ies/herbie/master/src/core/taylor.rkt:44:15 hash-ref! [85] 72.9% ??? [19] 27.1% ---------------------------------------------------------------------------------------- hash-ref! [85] 100.0% [4] 1432(6.0%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:300:23 for-loop [12] 100.0% ---------------------------------------------------------------------------------------- hash-ref! [85] 100.0% [5] 1306(5.5%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:290:26 for-loop [13] 100.0% ---------------------------------------------------------------------------------------- loop [138] 32.8% for-loop [142] 67.2% [6] 610(2.6%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [14] 100.0% ---------------------------------------------------------------------------------------- for-loop [142] 100.0% [7] 400(1.7%) 0(0.0%) expand-identifier (unknown source) resolve+shift28 [15] 100.0% ---------------------------------------------------------------------------------------- copying-mergesort [80] 100.0% [8] 226(1.0%) 0(0.0%) jloop ...5/collects/racket/private/sort.rkt:120:23 ??? [152] 100.0% ---------------------------------------------------------------------------------------- for-loop [142] 100.0% [9] 202(0.9%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [15] 100.0% ---------------------------------------------------------------------------------------- ??? [1] 100.0% [10] 23684(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [17] 100.0% ---------------------------------------------------------------------------------------- approximate9 [2] 100.0% [11] 4776(20.2%) 0(0.0%) loop ...ies/herbie/master/src/core/taylor.rkt:86:4 hash-ref! [85] 87.4% ??? [152] 8.4% iterate-diagonal [21] 4.2% ---------------------------------------------------------------------------------------- ??? [4] 100.0% [12] 1432(6.0%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:303:27 hash-ref! [85] 100.0% ---------------------------------------------------------------------------------------- ??? [5] 100.0% [13] 1306(5.5%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:290:52 hash-ref! [85] 68.8% ??? [19] 31.2% ---------------------------------------------------------------------------------------- expand-id-application-form17 [157] 24.7% syntax-e [6] 75.3% [14] 810(3.4%) 0(0.0%) syntax-e/no-taint (unknown source) loop [138] 100.0% ---------------------------------------------------------------------------------------- core-form-sym [151] 24.9% expand-implicit [9] 25.2% expand-identifier [7] 49.9% [15] 802(3.4%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [20] 100.0% ---------------------------------------------------------------------------------------- approximate9 [2] 100.0% [16] 408(1.7%) 0(0.0%) for-loop ...erbie/master/src/core/taylor.rkt:29:18 taylor [18] 100.0% ---------------------------------------------------------------------------------------- profile-thunk16 [10] 100.0% [17] 23684(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [22] 100.0% ---------------------------------------------------------------------------------------- approximate9 [2] 7.6% map [105] 12.4% for-loop [16] 20.7% hash-ref! [85] 21.4% taylor [18] 37.9% [18] 1472(6.2%) 200(0.8%) taylor .../herbie/master/src/core/taylor.rkt:169:0 taylor [18] 37.9% taylor-invert [23] 33.4% map [105] 12.4% loop [138] 2.7% ---------------------------------------------------------------------------------------- for-loop [13] 33.4% ??? [3] 66.6% [19] 1212(5.1%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:293:19 hash-ref! [85] 100.0% ---------------------------------------------------------------------------------------- resolve+shift28 [15] 100.0% [20] 802(3.4%) 402(1.7%) fallback-loop (unknown source) for-loop [142] 49.9% ---------------------------------------------------------------------------------------- loop [11] 100.0% [21] 200(0.8%) 0(0.0%) iterate-diagonal ...ster/src/core/taylor.rkt:153:0 hash-ref! [85] 100.0% ---------------------------------------------------------------------------------------- f61 [121] 1.3% parse-loop74 [112] 4.3% for-loop [93] 9.0% run [17] 85.4% [22] 23684(100.0%) 1812(7.7%) .../more-scheme.rkt:261:28 (unknown source) run-improve47 [24] 52.2% prepare-points-intervals [68] 23.8% temp85_0 [92] 4.3% get-final-combination [25] 4.3% oracle-error [27] 3.4% ??? [153] 3.4% *bit-width* [26] 1.8% loop [138] 1.3% errors [84] 0.8% eval [29] 0.4% ---------------------------------------------------------------------------------------- taylor [18] 100.0% [23] 1072(4.5%) 0(0.0%) taylor-invert .../master/src/core/taylor.rkt:317:0 first-nonzero-exp [28] 59.0% make-multiplication-node [199] 20.9% f40 [95] 20.1% ---------------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [24] 15526(65.6%) 0(0.0%) run-improve47 ...bie/master/src/mainloop.rkt:365:0 for-loop [30] 97.1% prepare-points-intervals [68] 2.9% ---------------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [25] 1120(4.7%) 0(0.0%) get-final-combination ...er/src/mainloop.rkt:390:0 infer-splitpoints [32] 62.9% f33 [33] 37.1% ---------------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [26] 830(3.5%) 206(0.9%) *bit-width* ...es/herbie/master/src/float.rkt:34:0 return/no-unsupplied [154] 48.4% ??? [34] 26.7% ---------------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [27] 808(3.4%) 0(0.0%) oracle-error ...herbie/master/src/points.rkt:190:0 for-loop [31] 100.0% ---------------------------------------------------------------------------------------- taylor-invert [23] 100.0% [28] 632(2.7%) 0(0.0%) first-nonzero-exp ...ter/src/core/taylor.rkt:265:0 hash-ref! [85] 100.0% ---------------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [29] 202(0.9%) 0(0.0%) eval (unknown source) add-ns-scopes [35] 100.0% ---------------------------------------------------------------------------------------- run-improve47 [24] 100.0% [30] 15070(63.6%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:384:4 run-iter! [36] 100.0% ---------------------------------------------------------------------------------------- oracle-error [27] 100.0% [31] 808(3.4%) 0(0.0%) for-loop ...ies/herbie/master/src/points.rkt:191:2 loop [138] 100.0% ---------------------------------------------------------------------------------------- get-final-combination [25] 100.0% [32] 704(3.0%) 0(0.0%) infer-splitpoints ...ter/src/core/regimes.rkt:33:0 for-loop [37] 100.0% ---------------------------------------------------------------------------------------- get-final-combination [25] 100.0% [33] 416(1.8%) 0(0.0%) f33 (unknown source) sindices->spoints [38] 100.0% ---------------------------------------------------------------------------------------- *bit-width* [26] 100.0% [34] 222(0.9%) 222(0.9%) ??? ...ects/racket/contract/private/guts.rkt:770:8 ---------------------------------------------------------------------------------------- eval [29] 100.0% [35] 202(0.9%) 0(0.0%) add-ns-scopes (unknown source) add-scopes [39] 100.0% ---------------------------------------------------------------------------------------- for-loop [30] 100.0% [36] 15070(63.6%) 0(0.0%) run-iter! .../herbie/master/src/mainloop.rkt:346:0 finalize-iter! [40] 47.0% gen-series! [41] 35.9% simplify! [42] 9.1% gen-rewrites! [43] 6.7% choose-best-alt! [46] 1.3% ---------------------------------------------------------------------------------------- infer-splitpoints [32] 100.0% [37] 704(3.0%) 0(0.0%) for-loop ...erbie/master/src/core/regimes.rkt:45:6 option-on-expr [44] 100.0% ---------------------------------------------------------------------------------------- f33 [33] 100.0% [38] 416(1.8%) 0(0.0%) sindices->spoints ...er/src/core/regimes.rkt:194:0 for-loop [45] 100.0% ---------------------------------------------------------------------------------------- add-ns-scopes [35] 100.0% [39] 202(0.9%) 202(0.9%) add-scopes (unknown source) ---------------------------------------------------------------------------------------- run-iter! [36] 100.0% [40] 7084(29.9%) 0(0.0%) finalize-iter! ...ie/master/src/mainloop.rkt:278:0 ??? [47] 100.0% ---------------------------------------------------------------------------------------- run-iter! [36] 100.0% [41] 5408(22.8%) 0(0.0%) gen-series! ...erbie/master/src/mainloop.rkt:160:0 for-loop [48] 100.0% ---------------------------------------------------------------------------------------- run-iter! [36] 100.0% [42] 1366(5.8%) 0(0.0%) simplify! .../herbie/master/src/mainloop.rkt:224:0 ??? [49] 100.0% ---------------------------------------------------------------------------------------- run-iter! [36] 100.0% [43] 1012(4.3%) 0(0.0%) gen-rewrites! ...bie/master/src/mainloop.rkt:183:0 for-loop [50] 79.6% for-loop [55] 20.4% ---------------------------------------------------------------------------------------- for-loop [37] 100.0% [44] 704(3.0%) 0(0.0%) option-on-expr ...aster/src/core/regimes.rkt:124:0 for-loop [52] 34.1% err-lsts->split-indices [53] 33.8% sort-context-on-expr [54] 32.1% ---------------------------------------------------------------------------------------- sindices->spoints [38] 100.0% [45] 416(1.8%) 0(0.0%) for-loop ...rbie/master/src/core/regimes.rkt:234:9 binary-search-floats [51] 100.0% ---------------------------------------------------------------------------------------- run-iter! [36] 100.0% [46] 200(0.8%) 0(0.0%) choose-best-alt! .../master/src/mainloop.rkt:117:0 ...ow-val-first.rkt:486:18 [56] 100.0% ---------------------------------------------------------------------------------------- finalize-iter! [40] 100.0% [47] 7084(29.9%) 0(0.0%) ??? ...contract/private/arrow-val-first.rkt:486:18 for-loop [57] 100.0% ---------------------------------------------------------------------------------------- gen-series! [41] 100.0% [48] 5408(22.8%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:167:7 taylor-alt [58] 100.0% ---------------------------------------------------------------------------------------- simplify! [42] 100.0% [49] 1366(5.8%) 0(0.0%) ??? ...es/herbie/master/src/core/simplify.rkt:42:0 egraph-run [59] 84.2% ??? [64] 15.8% ---------------------------------------------------------------------------------------- gen-rewrites! [43] 100.0% [50] 806(3.4%) 0(0.0%) for-loop .../herbie/master/src/mainloop.rkt:191:11 rewrite-expression-head23 [60] 100.0% ---------------------------------------------------------------------------------------- for-loop [45] 100.0% [51] 416(1.8%) 0(0.0%) binary-search-floats ...src/core/regimes.rkt:176:0 pred [61] 100.0% ---------------------------------------------------------------------------------------- option-on-expr [44] 100.0% [52] 240(1.0%) 0(0.0%) for-loop ...rbie/master/src/core/regimes.rkt:135:4 errors [84] 100.0% ---------------------------------------------------------------------------------------- option-on-expr [44] 100.0% [53] 238(1.0%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:263:0 loop [62] 100.0% ---------------------------------------------------------------------------------------- option-on-expr [44] 100.0% [54] 226(1.0%) 0(0.0%) sort-context-on-expr ...src/core/regimes.rkt:117:0 ??? [63] 100.0% ---------------------------------------------------------------------------------------- gen-rewrites! [43] 100.0% [55] 206(0.9%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:208:4 for-loop [65] 100.0% ---------------------------------------------------------------------------------------- choose-best-alt! [46] 100.0% [56] 200(0.8%) 0(0.0%) ...ow-val-first.rkt:486:18 (unknown source) ??? [66] 100.0% ---------------------------------------------------------------------------------------- ??? [47] 100.0% [57] 7084(29.9%) 0(0.0%) for-loop ...ie/master/src/core/alt-table.rkt:201:2 atab-add-altn [67] 100.0% ---------------------------------------------------------------------------------------- for-loop [48] 100.0% [58] 5408(22.8%) 0(0.0%) taylor-alt ...herbie/master/src/mainloop.rkt:146:0 for-loop [69] 100.0% ---------------------------------------------------------------------------------------- ??? [49] 100.0% [59] 1150(4.9%) 0(0.0%) egraph-run .../pkgs/egg-herbie-linux/main.rkt:49:0 egraph-add-exprs [70] 100.0% ---------------------------------------------------------------------------------------- for-loop [50] 100.0% [60] 806(3.4%) 0(0.0%) rewrite-expression-head23 ...core/matcher.rkt:83:0 rewriter [71] 100.0% ---------------------------------------------------------------------------------------- binary-search-floats [51] 100.0% [61] 416(1.8%) 0(0.0%) pred ...s/herbie/master/src/core/regimes.rkt:204:4 errors [84] 51.9% prepare-points-intervals [68] 48.1% ---------------------------------------------------------------------------------------- err-lsts->split-indices [53] 100.0% [62] 238(1.0%) 0(0.0%) loop ...s/herbie/master/src/core/regimes.rkt:314:4 for-loop [72] 100.0% ---------------------------------------------------------------------------------------- sort-context-on-expr [54] 100.0% [63] 226(1.0%) 0(0.0%) ??? ...-7.5/collects/racket/private/sort.rkt:369:3 generic-sort/key [73] 100.0% ---------------------------------------------------------------------------------------- ??? [49] 100.0% [64] 216(0.9%) 216(0.9%) ??? ...es/herbie/master/src/core/simplify.rkt:93:0 ---------------------------------------------------------------------------------------- for-loop [55] 100.0% [65] 206(0.9%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:209:6 change-apply [74] 100.0% ---------------------------------------------------------------------------------------- ...ow-val-first.rkt:486:18 [56] 100.0% [66] 200(0.8%) 0(0.0%) ??? ...s/herbie/master/src/core/alt-table.rkt:41:0 argmin [75] 100.0% ---------------------------------------------------------------------------------------- for-loop [57] 100.0% [67] 7084(29.9%) 0(0.0%) atab-add-altn ...ster/src/core/alt-table.rkt:204:0 errors [84] 82.9% best-and-tied-at-points [77] 14.3% override-at-pnts [82] 2.8% ---------------------------------------------------------------------------------------- pred [61] 3.2% run-improve47 [24] 7.2% .../more-scheme.rkt:261:28 [22] 89.6% [68] 6290(26.6%) 0(0.0%) prepare-points-intervals ...r/src/points.rkt:133:0 loop [76] 96.2% loop [138] 3.8% ---------------------------------------------------------------------------------------- taylor-alt [58] 100.0% [69] 5408(22.8%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:152:6 ??? [152] 100.0% ---------------------------------------------------------------------------------------- egraph-run [59] 100.0% [70] 1150(4.9%) 0(0.0%) egraph-add-exprs ...gg-herbie-linux/main.rkt:111:0 loop [138] 56.2% ??? [79] 43.8% ---------------------------------------------------------------------------------------- matcher [99] 43.7% rewrite-expression-head23 [60] 56.3% [71] 806(3.4%) 204(0.9%) rewriter ...erbie/master/src/core/matcher.rkt:85:2 for-loop [78] 87.3% ---------------------------------------------------------------------------------------- loop [62] 100.0% [72] 238(1.0%) 238(1.0%) for-loop ...rbie/master/src/core/regimes.rkt:279:4 ---------------------------------------------------------------------------------------- ??? [63] 100.0% [73] 226(1.0%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [80] 100.0% ---------------------------------------------------------------------------------------- for-loop [65] 100.0% [74] 206(0.9%) 0(0.0%) change-apply ...e/master/src/core/matcher.rkt:69:0 pattern-substitute [81] 100.0% ---------------------------------------------------------------------------------------- ??? [66] 100.0% [75] 200(0.8%) 0(0.0%) argmin ...acket-7.5/collects/racket/list.rkt:765:0 ??? [83] 100.0% ---------------------------------------------------------------------------------------- prepare-points-intervals [68] 100.0% [76] 6054(25.6%) 200(0.8%) loop ...ghtlies/herbie/master/src/points.rkt:145:4 loop [86] 79.9% ??? [88] 13.3% do-curry [90] 3.4% ---------------------------------------------------------------------------------------- atab-add-altn [67] 100.0% [77] 1010(4.3%) 0(0.0%) best-and-tied-at-points ...core/alt-table.rkt:91:0 for-loop [87] 100.0% ---------------------------------------------------------------------------------------- rewriter [71] 100.0% [78] 806(3.4%) 0(0.0%) for-loop ...erbie/master/src/core/matcher.rkt:87:4 hash-ref! [85] 100.0% ---------------------------------------------------------------------------------------- egraph-add-exprs [70] 100.0% [79] 504(2.1%) 0(0.0%) ??? ...s/herbie/master/src/core/simplify.rkt:103:6 for-loop [89] 100.0% ---------------------------------------------------------------------------------------- generic-sort/key [73] 25.0% copying-mergesort [80] 75.0% [80] 226(1.0%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 copying-mergesort [80] 75.0% jloop [8] 25.0% ---------------------------------------------------------------------------------------- pattern-substitute [81] 50.0% change-apply [74] 50.0% [81] 206(0.9%) 0(0.0%) pattern-substitute ...er/src/core/matcher.rkt:45:0 pattern-substitute [81] 50.0% return/no-unsupplied [154] 50.0% ---------------------------------------------------------------------------------------- atab-add-altn [67] 100.0% [82] 200(0.8%) 0(0.0%) override-at-pnts ...r/src/core/alt-table.rkt:113:0 for-loop [91] 100.0% ---------------------------------------------------------------------------------------- argmin [75] 100.0% [83] 200(0.8%) 0(0.0%) ??? ...tlies/herbie/master/src/mainloop.rkt:114:10 errors [84] 100.0% ---------------------------------------------------------------------------------------- ??? [83] 2.9% pred [61] 3.1% for-loop [52] 3.5% .../more-scheme.rkt:261:28 [22] 5.7% atab-add-altn [67] 84.8% [84] 6926(29.2%) 0(0.0%) errors ...tlies/herbie/master/src/points.rkt:203:0 for-loop [93] 61.5% temp85_0 [92] 35.6% eval-prog [103] 2.9% ---------------------------------------------------------------------------------------- ??? [98] 2.4% for-loop [13] 2.8% ??? [97] 2.8% iterate-diagonal [21] 3.3% for-loop [114] 4.2% ??? [19] 5.0% for-loop [12] 6.7% first-nonzero-exp [28] 7.6% for-loop [78] 9.2% ??? [3] 9.5% ??? [94] 12.3% loop [11] 15.8% ??? [152] 17.5% [85] 5990(25.3%) 200(0.8%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [94] 28.0% f40 [95] 14.8% ??? [3] 13.4% matcher [99] 12.3% ??? [4] 6.7% taylor [18] 4.2% ??? [5] 4.0% ??? [102] 3.3% parse-loop74 [112] 3.0% ??? [97] 2.8% f61 [121] 2.6% ??? [98] 2.4% simplify-node [113] 0.6% ---------------------------------------------------------------------------------------- loop [76] 100.0% [86] 4840(20.4%) 1214(5.1%) loop ...ightlies/herbie/master/src/points.rkt:81:2 ??? [152] 37.3% real->precision [96] 21.1% ??? [100] 16.5% ---------------------------------------------------------------------------------------- best-and-tied-at-points [77] 100.0% [87] 1010(4.3%) 810(3.4%) for-loop ...bie/master/src/core/alt-table.rkt:94:4 ??? [101] 19.8% ---------------------------------------------------------------------------------------- loop [76] 100.0% [88] 806(3.4%) 0(0.0%) ??? ...ightlies/herbie/master/src/points.rkt:126:6 sample-multi-bounded [145] 75.2% loop [138] 24.8% ---------------------------------------------------------------------------------------- ??? [79] 100.0% [89] 504(2.1%) 504(2.1%) for-loop ...bie/master/src/core/simplify.rkt:121:2 ---------------------------------------------------------------------------------------- loop [76] 100.0% [90] 208(0.9%) 208(0.9%) do-curry ...-7.5/collects/racket/function.rkt:71:2 ---------------------------------------------------------------------------------------- override-at-pnts [82] 100.0% [91] 200(0.8%) 0(0.0%) for-loop ...ie/master/src/core/alt-table.rkt:115:4 ??? [101] 100.0% ---------------------------------------------------------------------------------------- loop [138] 4.2% .../more-scheme.rkt:261:28 [22] 43.5% errors [84] 52.2% [92] 4726(20.0%) 0(0.0%) temp85_0 (unknown source) compile15 [104] 100.0% ---------------------------------------------------------------------------------------- errors [84] 100.0% [93] 4258(18.0%) 0(0.0%) for-loop ...ies/herbie/master/src/points.rkt:205:2 .../more-scheme.rkt:261:28 [22] 100.0% ---------------------------------------------------------------------------------------- hash-ref! [85] 100.0% [94] 4176(17.6%) 0(0.0%) ??? ...ies/herbie/master/src/core/taylor.rkt:67:15 ??? [152] 59.7% hash-ref! [85] 40.3% ---------------------------------------------------------------------------------------- parse-loop49 [118] 2.4% taylor-invert [23] 3.8% map [105] 42.2% hash-ref! [85] 51.6% [95] 2856(12.1%) 0(0.0%) f40 (unknown source) map [105] 100.0% ---------------------------------------------------------------------------------------- loop [86] 100.0% [96] 1022(4.3%) 0(0.0%) real->precision .../master/src/programs.rkt:118:11 ??? [152] 100.0% ---------------------------------------------------------------------------------------- hash-ref! [85] 100.0% [97] 912(3.9%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:327:33 hash-ref! [85] 100.0% ---------------------------------------------------------------------------------------- hash-ref! [85] 100.0% [98] 808(3.4%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:343:33 hash-ref! [85] 100.0% ---------------------------------------------------------------------------------------- hash-ref! [85] 100.0% [99] 806(3.4%) 0(0.0%) matcher ...erbie/master/src/core/matcher.rkt:117:2 ??? [106] 64.3% rewriter [71] 35.7% ---------------------------------------------------------------------------------------- loop [86] 100.0% [100] 800(3.4%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:379:33 ival-sub [107] 75.0% ival-neg [110] 25.0% ---------------------------------------------------------------------------------------- for-loop [91] 50.0% for-loop [87] 50.0% [101] 400(1.7%) 400(1.7%) ??? ...7.5/collects/racket/private/for.rkt:1236:14 ---------------------------------------------------------------------------------------- hash-ref! [85] 100.0% [102] 200(0.8%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:143:13 for-loop [108] 100.0% ---------------------------------------------------------------------------------------- errors [84] 100.0% [103] 200(0.8%) 0(0.0%) eval-prog .../herbie/master/src/programs.rkt:106:0 inductor [109] 100.0% ---------------------------------------------------------------------------------------- temp85_0 [92] 100.0% [104] 4726(20.0%) 0(0.0%) compile15 (unknown source) temp91_0 [111] 95.8% loop [138] 4.2% ---------------------------------------------------------------------------------------- taylor [18] 10.8% f40 [95] 89.2% [105] 3080(13.0%) 0(0.0%) map ...t-7.5/collects/racket/private/map.rkt:35:13 f40 [95] 37.4% parse-loop74 [112] 33.3% taylor [18] 10.8% f61 [121] 6.6% simplify-node [113] 6.4% ??? [115] 2.5% parse-loop49 [118] 2.2% make-multiplication-node [199] 0.8% ---------------------------------------------------------------------------------------- matcher [99] 100.0% [106] 806(3.4%) 0(0.0%) ??? ...s/herbie/master/src/core/matcher.rkt:129:11 for-loop [114] 68.7% foldl [116] 31.3% ---------------------------------------------------------------------------------------- ??? [100] 100.0% [107] 600(2.5%) 200(0.8%) ival-sub ...erbie/master/src/biginterval.rkt:195:0 eplinear [117] 66.7% ---------------------------------------------------------------------------------------- ??? [102] 100.0% [108] 200(0.8%) 200(0.8%) for-loop ...rbie/master/src/core/taylor.rkt:150:25 ---------------------------------------------------------------------------------------- eval-prog [103] 100.0% [109] 200(0.8%) 0(0.0%) inductor ...s/herbie/master/src/programs.rkt:127:4 table-ref [119] 100.0% ---------------------------------------------------------------------------------------- ??? [100] 100.0% [110] 200(0.8%) 0(0.0%) ival-neg ...erbie/master/src/biginterval.rkt:174:0 epfn [180] 100.0% ---------------------------------------------------------------------------------------- compile15 [104] 100.0% [111] 4526(19.1%) 208(0.9%) temp91_0 (unknown source) temp118_0 [120] 86.3% compile-top9 [123] 9.1% ---------------------------------------------------------------------------------------- hash-ref! [85] 36.7% map [105] 63.3% [112] 2260(9.5%) 0(0.0%) parse-loop74 (unknown source) .../more-scheme.rkt:261:28 [22] 90.9% f61 [121] 9.1% ---------------------------------------------------------------------------------------- for-loop [198] 12.5% hash-ref! [85] 12.5% map [105] 75.0% [113] 808(3.4%) 0(0.0%) simplify-node ...e/master/src/core/reduce.rkt:49:0 append-map [187] 37.3% gather-additive-terms6 [124] 25.5% combine-mterms [128] 24.8% gather-multiplicative-terms [126] 12.5% ---------------------------------------------------------------------------------------- ??? [106] 100.0% [114] 604(2.6%) 0(0.0%) for-loop ...bie/master/src/core/matcher.rkt:131:15 hash-ref! [85] 100.0% ---------------------------------------------------------------------------------------- map [105] 100.0% [115] 416(1.8%) 0(0.0%) ??? ...lies/herbie/master/src/core/reduce.rkt:60:5 for-loop [122] 100.0% ---------------------------------------------------------------------------------------- ??? [106] 100.0% [116] 402(1.7%) 0(0.0%) foldl ....5/collects/racket/private/list.rkt:229:4 ??? [125] 100.0% ---------------------------------------------------------------------------------------- ival-sub [107] 100.0% [117] 400(1.7%) 0(0.0%) eplinear ...erbie/master/src/biginterval.rkt:182:0 bfmul [186] 100.0% ---------------------------------------------------------------------------------------- map [105] 100.0% [118] 206(0.9%) 0(0.0%) parse-loop49 (unknown source) f40 [95] 100.0% ---------------------------------------------------------------------------------------- inductor [109] 100.0% [119] 200(0.8%) 0(0.0%) table-ref ...ies/herbie/master/src/common.rkt:33:0 assoc-iterate-first [127] 100.0% ---------------------------------------------------------------------------------------- temp91_0 [111] 100.0% [120] 3904(16.5%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [129] 100.0% ---------------------------------------------------------------------------------------- map [105] 18.3% parse-loop74 [112] 18.7% hash-ref! [85] 63.0% [121] 1104(4.7%) 0(0.0%) f61 (unknown source) .../more-scheme.rkt:261:28 [22] 54.9% composed [167] 45.1% ---------------------------------------------------------------------------------------- ??? [115] 100.0% [122] 416(1.8%) 0(0.0%) for-loop ...herbie/master/src/core/reduce.rkt:61:7 pattern-match [130] 100.0% ---------------------------------------------------------------------------------------- temp91_0 [111] 100.0% [123] 414(1.7%) 0(0.0%) compile-top9 (unknown source) compile-forms33 [131] 100.0% ---------------------------------------------------------------------------------------- parse-loop389 [197] 49.3% simplify-node [113] 50.7% [124] 406(1.7%) 0(0.0%) gather-additive-terms6 ...src/core/reduce.rkt:71:0 parse-loop368 [195] 50.7% parse-loop389 [197] 49.3% ---------------------------------------------------------------------------------------- foldl [116] 100.0% [125] 402(1.7%) 0(0.0%) ??? ...ies/herbie/master/src/core/matcher.rkt:25:7 core457 [137] 100.0% ---------------------------------------------------------------------------------------- simplify-node [113] 100.0% [126] 202(0.9%) 202(0.9%) gather-multiplicative-terms ...re/reduce.rkt:113:0 ---------------------------------------------------------------------------------------- table-ref [119] 100.0% [127] 200(0.8%) 200(0.8%) assoc-iterate-first ...cket/private/dict.rkt:166:0 ---------------------------------------------------------------------------------------- simplify-node [113] 100.0% [128] 200(0.8%) 200(0.8%) combine-mterms ...master/src/core/reduce.rkt:196:0 ---------------------------------------------------------------------------------------- loop [138] 14.0% temp118_0 [120] 86.0% [129] 4540(19.2%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [132] 72.8% dispatch-transformer41 [133] 17.6% loop [138] 9.6% ---------------------------------------------------------------------------------------- for-loop [122] 100.0% [130] 416(1.8%) 0(0.0%) pattern-match .../master/src/core/matcher.rkt:29:0 for-loop [134] 100.0% ---------------------------------------------------------------------------------------- compile-top9 [123] 100.0% [131] 414(1.7%) 214(0.9%) compile-forms33 (unknown source) for-loop [142] 48.3% ---------------------------------------------------------------------------------------- expand-capturing-lifts [129] 100.0% [132] 3304(14.0%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [135] 93.5% loop [138] 6.5% ---------------------------------------------------------------------------------------- loop [138] 13.0% for-loop [142] 38.9% expand-capturing-lifts [129] 48.1% [133] 1662(7.0%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [136] 100.0% ---------------------------------------------------------------------------------------- pattern-match [130] 100.0% [134] 416(1.8%) 0(0.0%) for-loop ...erbie/master/src/core/matcher.rkt:26:9 core457 [137] 100.0% ---------------------------------------------------------------------------------------- lambda-clause-expander [132] 32.4% for-loop [142] 67.6% [135] 3088(13.0%) 0(0.0%) finish-bodys (unknown source) for-loop [142] 100.0% ---------------------------------------------------------------------------------------- dispatch-transformer41 [133] 100.0% [136] 1662(7.0%) 456(1.9%) apply-transformer52 (unknown source) apply-transformer-in-context [139] 48.5% loop [138] 24.1% ---------------------------------------------------------------------------------------- ??? [125] 49.1% for-loop [134] 50.9% [137] 818(3.5%) 0(0.0%) core457 ...acket/contract/private/arr-i.rkt:976:19 un-dep/maybe-chaperone [140] 73.6% unsafe-chaperone-procedure [141] 26.4% ---------------------------------------------------------------------------------------- egraph-add-exprs [70] 0.2% prepare-points-intervals [68] 1.8% compile15 [104] 2.3% expand-capturing-lifts [129] 4.1% taylor [18] 4.6% ??? [88] 4.6% lambda-clause-expander [132] 5.0% apply-transformer52 [136] 6.1% .../more-scheme.rkt:261:28 [22] 9.2% for-loop [142] 12.1% for-loop [31] 12.4% syntax-e/no-taint [14] 13.3% loop [138] 24.2% [138] 4340(18.3%) 836(3.5%) loop (unknown source) loop [138] 24.2% gf [143] 13.3% ??? [144] 12.4% expand-capturing-lifts [129] 8.7% expand-id-application-form17 [157] 6.9% dispatch-transformer41 [133] 5.0% temp85_0 [92] 4.6% sample-multi-bounded [145] 4.6% simplify* [150] 4.6% core-form-sym [151] 4.6% for-loop [142] 1.8% syntax-e [6] 1.5% egg-parsed->expr [148] 0.1% ---------------------------------------------------------------------------------------- apply-transformer52 [136] 100.0% [139] 806(3.4%) 200(0.8%) apply-transformer-in-context (unknown source) parse-app [146] 50.4% parse-lambda [149] 24.8% ---------------------------------------------------------------------------------------- core457 [137] 100.0% [140] 602(2.5%) 0(0.0%) un-dep/maybe-chaperone ...private/arr-i.rkt:1137:2 ??? [147] 66.8% ??? [156] 33.2% ---------------------------------------------------------------------------------------- core457 [137] 100.0% [141] 216(0.9%) 216(0.9%) unsafe-chaperone-procedure ...ivate/kw.rkt:1807:11 ---------------------------------------------------------------------------------------- run-module-instance!125 [159] 3.2% loop [138] 3.2% compile-forms33 [131] 5.4% fallback-loop [20] 5.8% for-loop [142] 16.5% finish-bodys [135] 66.1% [142] 3724(15.7%) 806(3.4%) for-loop (unknown source) finish-bodys [135] 43.9% for-loop [142] 16.5% loop [138] 7.6% compile-module-linklet57 [165] 5.4% dispatch-transformer41 [133] 3.5% run-module-instance!125 [159] 3.2% temp37_0 [158] 3.2% expand-id-application-form17 [157] 1.8% syntax-e [6] 1.7% expand-identifier [7] 0.8% expand-implicit [9] 0.6% ---------------------------------------------------------------------------------------- loop [138] 100.0% [143] 810(3.4%) 404(1.7%) gf (unknown source) propagation-apply [162] 25.4% propagation-apply-shifted [164] 24.7% ---------------------------------------------------------------------------------------- loop [138] 100.0% [144] 808(3.4%) 402(1.7%) ??? ...ghtlies/herbie/master/src/points.rkt:192:26 ??? [153] 25.5% ??? [152] 24.8% ---------------------------------------------------------------------------------------- loop [138] 24.8% ??? [88] 75.2% [145] 806(3.4%) 0(0.0%) sample-multi-bounded ...master/src/points.rkt:14:0 random-ranges [155] 100.0% ---------------------------------------------------------------------------------------- apply-transformer-in-context [139] 100.0% [146] 406(1.7%) 200(0.8%) parse-app ...collects/racket/private/kw.rkt:1142:2 check-loc [163] 50.7% ---------------------------------------------------------------------------------------- un-dep/maybe-chaperone [140] 100.0% [147] 402(1.7%) 0(0.0%) ??? ...llects/racket/contract/private/orc.rkt:88:2 ??? [156] 100.0% ---------------------------------------------------------------------------------------- loop [138] 16.7% for-loop [161] 83.3% [148] 234(1.0%) 0(0.0%) egg-parsed->expr ...egg-herbie-linux/main.rkt:59:0 for-loop [161] 83.3% list-member? [160] 16.7% ---------------------------------------------------------------------------------------- apply-transformer-in-context [139] 100.0% [149] 200(0.8%) 200(0.8%) parse-lambda ...llects/racket/private/kw.rkt:619:2 ---------------------------------------------------------------------------------------- loop [138] 100.0% [150] 200(0.8%) 0(0.0%) simplify* ...erbie/master/src/core/reduce.rkt:32:0 return/no-unsupplied [154] 100.0% ---------------------------------------------------------------------------------------- loop [138] 100.0% [151] 200(0.8%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [15] 100.0% ---------------------------------------------------------------------------------------- loop [11] 1.5% ??? [144] 2.3% jloop [8] 2.6% real->precision [96] 11.8% ??? [94] 16.1% loop [86] 20.8% location-do [166] 22.4% for-loop [69] 22.4% [152] 8660(36.6%) 828(3.5%) ??? ...tract/private/arrow-higher-order.rkt:375:33 location-do [166] 22.4% approximate9 [2] 22.4% hash-ref! [85] 17.6% bf [168] 9.5% ival-mult [170] 6.9% composed [167] 4.7% ival-div [172] 4.6% ??? [176] 2.3% ---------------------------------------------------------------------------------------- ??? [144] 11.3% .../more-scheme.rkt:261:28 [22] 88.7% [153] 1822(7.7%) 1822(7.7%) ??? .../herbie/master/src/syntax/syntax.rkt:214:17 ---------------------------------------------------------------------------------------- simplify* [150] 24.8% pattern-substitute [81] 25.5% *bit-width* [26] 49.8% [154] 808(3.4%) 608(2.6%) return/no-unsupplied ...ct/private/arr-i.rkt:566:0 filter [175] 24.8% ---------------------------------------------------------------------------------------- sample-multi-bounded [145] 100.0% [155] 806(3.4%) 406(1.7%) random-ranges ...erbie/master/src/common.rkt:164:0 cons/c [173] 49.6% ---------------------------------------------------------------------------------------- un-dep/maybe-chaperone [140] 33.2% ??? [147] 66.8% [156] 602(2.5%) 0(0.0%) ??? ...cts/racket/contract/private/guts.rkt:835:10 ??? [169] 100.0% ---------------------------------------------------------------------------------------- for-loop [142] 33.3% loop [138] 66.7% [157] 600(2.5%) 0(0.0%) expand-id-application-form17 (unknown source) binding-lookup52 [171] 66.7% syntax-e/no-taint [14] 33.3% ---------------------------------------------------------------------------------------- for-loop [142] 100.0% [158] 236(1.0%) 0(0.0%) temp37_0 (unknown source) [running body] [174] 100.0% ---------------------------------------------------------------------------------------- for-loop [142] 100.0% [159] 236(1.0%) 0(0.0%) run-module-instance!125 (unknown source) for-loop [142] 100.0% ---------------------------------------------------------------------------------------- egg-parsed->expr [148] 100.0% [160] 234(1.0%) 234(1.0%) list-member? ...llects/racket/private/set.rkt:24:0 ---------------------------------------------------------------------------------------- egg-parsed->expr [148] 100.0% [161] 234(1.0%) 0(0.0%) for-loop ....5/pkgs/egg-herbie-linux/main.rkt:64:6 egg-parsed->expr [148] 100.0% ---------------------------------------------------------------------------------------- gf [143] 100.0% [162] 206(0.9%) 206(0.9%) propagation-apply (unknown source) ---------------------------------------------------------------------------------------- parse-app [146] 100.0% [163] 206(0.9%) 206(0.9%) check-loc ...cts/racket/private/template.rkt:582:0 ---------------------------------------------------------------------------------------- gf [143] 100.0% [164] 200(0.8%) 200(0.8%) propagation-apply-shifted (unknown source) ---------------------------------------------------------------------------------------- for-loop [142] 100.0% [165] 200(0.8%) 200(0.8%) compile-module-linklet57 (unknown source) ---------------------------------------------------------------------------------------- location-do [166] 42.8% ??? [152] 57.2% [166] 5408(22.8%) 0(0.0%) location-do ...herbie/master/src/programs.rkt:87:0 ??? [152] 57.2% location-do [166] 42.8% ---------------------------------------------------------------------------------------- ??? [152] 44.8% f61 [121] 55.2% [167] 902(3.8%) 296(1.2%) composed ...ollects/racket/private/list.rkt:321:16 ??? [177] 44.8% free-variables [183] 22.4% ---------------------------------------------------------------------------------------- ??? [152] 100.0% [168] 820(3.5%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:615:2 ??? [193] 51.2% new-mpfr [194] 48.8% ---------------------------------------------------------------------------------------- ??? [156] 100.0% [169] 602(2.5%) 0(0.0%) ??? ...ntract/private/arrow-higher-order.rkt:575:2 build-subcontract-late-negs [178] 66.8% get-blame-party-info [184] 33.2% ---------------------------------------------------------------------------------------- ??? [152] 100.0% [170] 600(2.5%) 200(0.8%) ival-mult ...rbie/master/src/biginterval.rkt:212:0 epmul [179] 66.7% ---------------------------------------------------------------------------------------- expand-id-application-form17 [157] 100.0% [171] 400(1.7%) 400(1.7%) binding-lookup52 (unknown source) ---------------------------------------------------------------------------------------- ??? [152] 100.0% [172] 400(1.7%) 200(0.8%) ival-div ...erbie/master/src/biginterval.rkt:250:0 epdiv [185] 50.0% ---------------------------------------------------------------------------------------- random-ranges [155] 100.0% [173] 400(1.7%) 0(0.0%) cons/c .../racket/contract/private/guts.rkt:500:15 coerce-contract [181] 100.0% ---------------------------------------------------------------------------------------- temp37_0 [158] 100.0% [174] 236(1.0%) 0(0.0%) [running body] .../collects/syntax/struct.rkt":##f do-partial-app [182] 100.0% ---------------------------------------------------------------------------------------- return/no-unsupplied [154] 100.0% [175] 200(0.8%) 200(0.8%) filter ...5/collects/racket/private/list.rkt:256:2 ---------------------------------------------------------------------------------------- ??? [152] 100.0% [176] 200(0.8%) 0(0.0%) ??? ...ies/herbie/master/src/biginterval.rkt:277:0 epfn [180] 100.0% ---------------------------------------------------------------------------------------- composed [167] 100.0% [177] 404(1.7%) 202(0.9%) ??? ...ies/herbie/master/src/biginterval.rkt:285:0 bfmul [186] 50.0% ---------------------------------------------------------------------------------------- ??? [169] 100.0% [178] 402(1.7%) 202(0.9%) build-subcontract-late-negs ...her-order.rkt:711:0 ??? [192] 49.8% ---------------------------------------------------------------------------------------- ival-mult [170] 100.0% [179] 400(1.7%) 0(0.0%) epmul ...s/herbie/master/src/biginterval.rkt:201:0 bfmul [186] 100.0% ---------------------------------------------------------------------------------------- ??? [176] 50.0% ival-neg [110] 50.0% [180] 400(1.7%) 0(0.0%) epfn ...es/herbie/master/src/biginterval.rkt:153:0 bfsqrt [188] 100.0% ---------------------------------------------------------------------------------------- cons/c [173] 100.0% [181] 400(1.7%) 0(0.0%) coerce-contract ...contract/private/guts.rkt:307:0 coerce-contract/f [189] 100.0% ---------------------------------------------------------------------------------------- [running body] [174] 100.0% [182] 236(1.0%) 0(0.0%) do-partial-app ...ntract/private/provide.rkt:493:0 successfully-got-the-right-kind-of-function [190]100.0% ---------------------------------------------------------------------------------------- composed [167] 33.3% append-map [187] 66.7% [183] 202(0.9%) 0(0.0%) free-variables ...bie/master/src/programs.rkt:80:0 append-map [187] 100.0% ---------------------------------------------------------------------------------------- ??? [169] 100.0% [184] 200(0.8%) 0(0.0%) get-blame-party-info ...ate/arrow-common.rkt:136:0 show-blame-negative [191] 100.0% ---------------------------------------------------------------------------------------- ival-div [172] 100.0% [185] 200(0.8%) 0(0.0%) epdiv ...s/herbie/master/src/biginterval.rkt:239:0 bfmul [186] 100.0% ---------------------------------------------------------------------------------------- epdiv [185] 16.6% ??? [177] 16.8% epmul [179] 33.3% eplinear [117] 33.3% [186] 1202(5.1%) 0(0.0%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:835:4 ??? [193] 50.1% new-mpfr [194] 49.9% ---------------------------------------------------------------------------------------- free-variables [183] 33.4% simplify-node [113] 66.6% [187] 604(2.6%) 202(0.9%) append-map ...t-7.5/collects/racket/list.rkt:586:2 parse-loop389 [197] 33.4% parse-loop368 [195] 33.1% free-variables [183] 22.3% ---------------------------------------------------------------------------------------- epfn [180] 100.0% [188] 400(1.7%) 0(0.0%) bfsqrt ...lib/math/private/bigfloat/mpfr.rkt:632:4 ??? [193] 50.0% new-mpfr [194] 50.0% ---------------------------------------------------------------------------------------- coerce-contract [181] 100.0% [189] 400(1.7%) 0(0.0%) coerce-contract/f ...ntract/private/guts.rkt:372:0 coerce-simple-value [196] 100.0% ---------------------------------------------------------------------------------------- do-partial-app [182] 100.0% [190] 236(1.0%) 236(1.0%) successfully-got-the-right-kind-of-function ...5:4 ---------------------------------------------------------------------------------------- get-blame-party-info [184] 100.0% [191] 200(0.8%) 200(0.8%) show-blame-negative ...act/private/blame.rkt:342:0 ---------------------------------------------------------------------------------------- build-subcontract-late-negs [178] 100.0% [192] 200(0.8%) 200(0.8%) ??? ...ects/racket/contract/private/guts.rkt:822:5 ---------------------------------------------------------------------------------------- bfsqrt [188] 16.4% bf [168] 34.4% bfmul [186] 49.3% [193] 1222(5.2%) 1222(5.2%) ??? /opt/racket-7.5/collects/ffi/unsafe.rkt:938:4 ---------------------------------------------------------------------------------------- bfsqrt [188] 16.7% bf [168] 33.3% bfmul [186] 50.0% [194] 1200(5.1%) 1200(5.1%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:348:0 ---------------------------------------------------------------------------------------- append-map [187] 49.3% gather-additive-terms6 [124] 50.7% [195] 406(1.7%) 0(0.0%) parse-loop368 (unknown source) parse-loop389 [197] 100.0% ---------------------------------------------------------------------------------------- coerce-contract/f [189] 100.0% [196] 400(1.7%) 400(1.7%) coerce-simple-value ...ract/private/guts.rkt:385:0 ---------------------------------------------------------------------------------------- gather-additive-terms6 [124] 16.4% append-map [187] 33.2% parse-loop368 [195] 50.3% [197] 608(2.6%) 0(0.0%) parse-loop389 (unknown source) for-loop [198] 83.6% gather-additive-terms6 [124] 16.4% ---------------------------------------------------------------------------------------- parse-loop389 [197] 100.0% [198] 608(2.6%) 0(0.0%) for-loop ...erbie/master/src/core/reduce.rkt:98:13 make-multiplication-node [199] 66.8% simplify-node [113] 33.2% ---------------------------------------------------------------------------------------- map [105] 24.3% taylor-invert [23] 26.9% for-loop [198] 48.8% [199] 832(3.5%) 0(0.0%) make-multiplication-node .../core/reduce.rkt:235:0 make-multiplication-subnode [200] 100.0% ---------------------------------------------------------------------------------------- make-multiplication-node [199] 100.0% [200] 832(3.5%) 0(0.0%) make-multiplication-subnode ...re/reduce.rkt:245:0 for-loop [201] 75.7% group-by61 [202] 24.3% ---------------------------------------------------------------------------------------- make-multiplication-subnode [200] 100.0% [201] 630(2.7%) 224(0.9%) for-loop ...erbie/master/src/core/reduce.rkt:247:3 partition [203] 64.4% ---------------------------------------------------------------------------------------- make-multiplication-subnode [200] 100.0% [202] 202(0.9%) 202(0.9%) group-by61 ...t-7.5/collects/racket/list.rkt:771:0 ---------------------------------------------------------------------------------------- for-loop [201] 100.0% [203] 406(1.7%) 406(1.7%) partition ...et-7.5/collects/racket/list.rkt:555:0 ----------------------------------------------------------------------------------------