Profiling results ----------------- Total cpu time observed: 109600ms (out of 110472ms) Number of samples taken: 349 (once every 314ms) (Hiding functions with self<1.0% and local<2.0%: 2 of 208 hidden) ============================================================================ Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ============================================================================ ??? [88] 100.0% [1] 109600(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [13] 100.0% ---------------------------------------------------------------------------- ??? [88] 100.0% [2] 61032(55.7%) 0(0.0%) run-improve43 ...ie/develop/src/mainloop.rkt:362:0 for-loop [14] 95.3% setup-prog!34 [15] 3.8% simplify! [32] 1.0% ---------------------------------------------------------------------------- loop [125] 11.7% hash-ref! [140] 88.3% [3] 2538(2.3%) 0(0.0%) simplify ...erbie/develop/src/core/reduce.rkt:16:0 parse-loop80 [16] 75.8% f46 [23] 12.5% debug-print [25] 11.7% ---------------------------------------------------------------------------- ??? [124] 100.0% [4] 2538(2.3%) 0(0.0%) approximate9 ...e/develop/src/core/taylor.rkt:12:0 loop [17] 88.3% taylor [26] 11.7% ---------------------------------------------------------------------------- hash-ref! [140] 100.0% [5] 1604(1.5%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:291:26 for-loop [19] 100.0% ---------------------------------------------------------------------------- for-loop [113] 100.0% [6] 970(0.9%) 328(0.3%) syntax-e (unknown source) syntax-e/no-taint [20] 66.2% ---------------------------------------------------------------------------- loop [127] 49.5% for-loop [113] 50.5% [7] 642(0.6%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [21] 100.0% ---------------------------------------------------------------------------- hash-ref! [140] 100.0% [8] 634(0.6%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:301:23 for-loop [22] 100.0% ---------------------------------------------------------------------------- for-loop [113] 100.0% [9] 602(0.5%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [18] 50.2% datum->syntax6 [24] 49.8% ---------------------------------------------------------------------------- match-e [90] 100.0% [10] 594(0.5%) 0(0.0%) variable? .../develop/src/syntax/syntax.rkt:1159:0 ??? [42] 100.0% ---------------------------------------------------------------------------- copying-mergesort [204] 100.0% [11] 334(0.3%) 0(0.0%) jloop ...0/collects/racket/private/sort.rkt:120:23 ??? [124] 100.0% ---------------------------------------------------------------------------- for-loop [113] 100.0% [12] 334(0.3%) 0(0.0%) expand-identifier (unknown source) resolve+shift28 [18] 100.0% ---------------------------------------------------------------------------- profile-thunk16 [1] 100.0% [13] 109600(100.0%) 0(0.0%) run ...et-7.0/share/pkgs/profile-lib/main.rkt:39:2 ??? [88] 100.0% ---------------------------------------------------------------------------- run-improve43 [2] 100.0% [14] 58136(53.0%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:377:4 run-iter! [27] 100.0% ---------------------------------------------------------------------------- run-improve43 [2] 100.0% [15] 2296(2.1%) 0(0.0%) setup-prog!34 ...bie/develop/src/mainloop.rkt:76:0 prepare-points-intervals19 [28] 84.2% ??? [42] 15.8% ---------------------------------------------------------------------------- loop [125] 7.1% map [129] 7.1% simplify [3] 85.9% [16] 2240(2.0%) 0(0.0%) parse-loop80 ...s/racket/match/compiler.rkt:418:15 eval-const-expr [29] 92.9% loop [125] 7.1% ---------------------------------------------------------------------------- approximate9 [4] 100.0% [17] 2240(2.0%) 0(0.0%) loop ...es/herbie/develop/src/core/taylor.rkt:87:4 ??? [124] 100.0% ---------------------------------------------------------------------------- expand-implicit [9] 18.8% expand-id-application-form17 [149] 20.6% expand-identifier [12] 20.7% core-form-sym [151] 39.9% [18] 1610(1.5%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [30] 100.0% ---------------------------------------------------------------------------- ??? [5] 100.0% [19] 1604(1.5%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:291:52 hash-ref! [140] 100.0% ---------------------------------------------------------------------------- syntax-e [6] 49.2% expand-id-application-form17 [149] 50.8% [20] 1304(1.2%) 0(0.0%) syntax-e/no-taint (unknown source) loop [127] 100.0% ---------------------------------------------------------------------------- dispatch-transformer41 [7] 100.0% [21] 642(0.6%) 0(0.0%) apply-transformer52 (unknown source) loop [127] 100.0% ---------------------------------------------------------------------------- ??? [8] 100.0% [22] 634(0.6%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:304:27 hash-ref! [140] 100.0% ---------------------------------------------------------------------------- simplify [3] 100.0% [23] 316(0.3%) 0(0.0%) f46 ...0/collects/racket/match/compiler.rkt:507:40 map [129] 100.0% ---------------------------------------------------------------------------- expand-implicit [9] 100.0% [24] 300(0.3%) 300(0.3%) datum->syntax6 (unknown source) ---------------------------------------------------------------------------- simplify [3] 100.0% [25] 298(0.3%) 0(0.0%) debug-print .../herbie/develop/src/debug.rkt:110:0 ??? [31] 100.0% ---------------------------------------------------------------------------- map [129] 50.0% approximate9 [4] 50.0% [26] 298(0.3%) 0(0.0%) taylor ...herbie/develop/src/core/taylor.rkt:170:0 map [129] 50.0% loop [125] 50.0% ---------------------------------------------------------------------------- for-loop [14] 100.0% [27] 58136(53.0%) 0(0.0%) run-iter! ...herbie/develop/src/mainloop.rkt:343:0 simplify! [32] 88.4% finalize-iter! [35] 6.0% gen-series! [36] 4.4% choose-best-alt! [37] 0.6% localize! [38] 0.6% ---------------------------------------------------------------------------- setup-prog!34 [15] 4.0% ??? [88] 96.0% [28] 48918(44.6%) 0(0.0%) prepare-points-intervals19 ...src/points.rkt:130:0 loop [33] 100.0% ---------------------------------------------------------------------------- ??? [88] 41.4% parse-loop80 [16] 58.6% [29] 3820(3.5%) 0(0.0%) eval-const-expr .../develop/src/programs.rkt:150:0 eval-prog [34] 100.0% ---------------------------------------------------------------------------- resolve+shift28 [18] 100.0% [30] 1610(1.5%) 334(0.3%) fallback-loop (unknown source) for-loop [113] 79.3% ---------------------------------------------------------------------------- debug-print [25] 100.0% [31] 298(0.3%) 0(0.0%) ??? .../contract/private/arrow-val-first.rkt:428:3 ~r78 [39] 100.0% ---------------------------------------------------------------------------- run-improve43 [2] 1.2% run-iter! [27] 98.8% [32] 52002(47.4%) 0(0.0%) simplify! ...herbie/develop/src/mainloop.rkt:239:0 ??? [40] 100.0% ---------------------------------------------------------------------------- prepare-points-intervals19 [28] 100.0% [33] 48918(44.6%) 302(0.3%) loop ...htlies/herbie/develop/src/points.rkt:142:4 loop [41] 98.3% ??? [124] 1.1% ---------------------------------------------------------------------------- errors [83] 33.8% eval-const-expr [29] 66.2% [34] 5770(5.3%) 0(0.0%) eval-prog ...herbie/develop/src/programs.rkt:131:0 temp68_2 [43] 83.5% inductor [45] 11.3% loop [127] 5.2% ---------------------------------------------------------------------------- run-iter! [27] 100.0% [35] 3486(3.2%) 0(0.0%) finalize-iter! ...e/develop/src/mainloop.rkt:294:0 ??? [42] 100.0% ---------------------------------------------------------------------------- run-iter! [27] 100.0% [36] 2538(2.3%) 0(0.0%) gen-series! ...rbie/develop/src/mainloop.rkt:170:0 for-loop [44] 100.0% ---------------------------------------------------------------------------- run-iter! [27] 100.0% [37] 356(0.3%) 0(0.0%) choose-best-alt! ...develop/src/mainloop.rkt:129:0 ??? [42] 100.0% ---------------------------------------------------------------------------- run-iter! [27] 100.0% [38] 354(0.3%) 0(0.0%) localize! ...herbie/develop/src/mainloop.rkt:138:0 localize-error [46] 100.0% ---------------------------------------------------------------------------- ??? [31] 100.0% [39] 298(0.3%) 298(0.3%) ~r78 ...acket-7.0/collects/racket/format.rkt:189:0 ---------------------------------------------------------------------------- simplify! [32] 100.0% [40] 52002(47.4%) 0(0.0%) ??? ...s/herbie/develop/src/core/simplify.rkt:29:0 loop [47] 71.6% loop [48] 28.4% ---------------------------------------------------------------------------- loop [33] 100.0% [41] 48100(43.9%) 758(0.7%) loop ...htlies/herbie/develop/src/points.rkt:111:2 ??? [98] 93.0% ??? [124] 2.8% log! [52] 2.2% ??? [42] 0.5% ---------------------------------------------------------------------------- loop [41] 4.6% match-e [90] 5.6% choose-best-alt! [37] 6.7% setup-prog!34 [15] 6.8% variable? [10] 11.1% finalize-iter! [35] 65.3% [42] 5340(4.9%) 892(0.8%) ??? ...contract/private/arrow-val-first.rkt:388:18 for-loop [50] 65.3% make-alt-table [53] 6.8% ??? [54] 6.7% ??? [55] 4.6% ---------------------------------------------------------------------------- eval-prog [34] 100.0% [43] 4818(4.4%) 0(0.0%) temp68_2 (unknown source) compile16 [49] 100.0% ---------------------------------------------------------------------------- gen-series! [36] 100.0% [44] 2538(2.3%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:178:7 taylor-alt [51] 100.0% ---------------------------------------------------------------------------- inductor [45] 38.5% eval-prog [34] 61.5% [45] 650(0.6%) 334(0.3%) inductor .../herbie/develop/src/programs.rkt:136:4 ??? [63] 48.6% inductor [45] 38.5% ---------------------------------------------------------------------------- localize! [38] 100.0% [46] 354(0.3%) 0(0.0%) localize-error ...velop/src/core/localize.rkt:52:0 hash-ref! [140] 100.0% ---------------------------------------------------------------------------- ??? [40] 100.0% [47] 37224(34.0%) 0(0.0%) loop .../herbie/develop/src/core/simplify.rkt:43:2 one-iter [56] 91.6% loop [60] 8.4% ---------------------------------------------------------------------------- ??? [40] 100.0% [48] 14778(13.5%) 0(0.0%) loop ...herbie/develop/src/core/simplify.rkt:127:2 for-loop [57] 100.0% ---------------------------------------------------------------------------- temp68_2 [43] 100.0% [49] 4818(4.4%) 0(0.0%) compile16 (unknown source) temp74_0 [58] 100.0% ---------------------------------------------------------------------------- ??? [42] 100.0% [50] 3486(3.2%) 0(0.0%) for-loop ...ie/develop/src/core/alt-table.rkt:51:2 atab-add-altn [59] 90.6% loop [65] 9.4% ---------------------------------------------------------------------------- for-loop [44] 100.0% [51] 2538(2.3%) 0(0.0%) taylor-alt ...erbie/develop/src/mainloop.rkt:156:0 for-loop [61] 100.0% ---------------------------------------------------------------------------- loop [41] 100.0% [52] 1042(1.0%) 0(0.0%) log! ...ghtlies/herbie/develop/src/points.rkt:92:2 for-loop [62] 100.0% ---------------------------------------------------------------------------- ??? [42] 100.0% [53] 362(0.3%) 0(0.0%) make-alt-table ...elop/src/core/alt-table.rkt:33:0 for-loop [64] 100.0% ---------------------------------------------------------------------------- ??? [42] 100.0% [54] 356(0.3%) 0(0.0%) ??? .../herbie/develop/src/core/alt-table.rkt:54:0 ??? [124] 100.0% ---------------------------------------------------------------------------- ??? [42] 100.0% [55] 244(0.2%) 0(0.0%) ??? ...ects/racket/contract/private/prop.rkt:519:4 ??? [63] 100.0% ---------------------------------------------------------------------------- loop [47] 100.0% [56] 34090(31.1%) 0(0.0%) one-iter ...bie/develop/src/core/simplify.rkt:98:0 for-loop [66] 80.8% find-matches [68] 19.2% ---------------------------------------------------------------------------- loop [48] 100.0% [57] 14778(13.5%) 624(0.6%) for-loop ...ie/develop/src/core/simplify.rkt:133:4 loop [67] 45.5% argmin [69] 31.2% for-loop [74] 8.5% expression-cost [79] 8.3% for-loop [82] 2.2% ---------------------------------------------------------------------------- compile16 [49] 100.0% [58] 4818(4.4%) 0(0.0%) temp74_0 (unknown source) expand-single [70] 93.8% compile-top9 [77] 6.2% ---------------------------------------------------------------------------- for-loop [50] 100.0% [59] 3160(2.9%) 0(0.0%) atab-add-altn ...elop/src/core/alt-table.rkt:200:0 best-and-tied-at-points [72] 50.2% override-at-pnts [73] 49.8% ---------------------------------------------------------------------------- loop [47] 100.0% [60] 3134(2.9%) 0(0.0%) loop ...-7.0/collects/racket/private/map.rkt:74:19 set-precompute! [71] 100.0% ---------------------------------------------------------------------------- taylor-alt [51] 100.0% [61] 2538(2.3%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:162:6 ??? [124] 100.0% ---------------------------------------------------------------------------- log! [52] 100.0% [62] 1042(1.0%) 1042(1.0%) for-loop ...es/herbie/develop/src/points.rkt:99:23 ---------------------------------------------------------------------------- ??? [55] 43.6% inductor [45] 56.4% [63] 560(0.5%) 244(0.2%) ??? ...lects/racket/contract/private/orc.rkt:83:14 keyword-apply [76] 56.4% ---------------------------------------------------------------------------- make-alt-table [53] 100.0% [64] 362(0.3%) 362(0.3%) for-loop ...e/develop/src/core/alt-table.rkt:35:15 ---------------------------------------------------------------------------- for-loop [50] 100.0% [65] 326(0.3%) 0(0.0%) loop ...erbie/develop/src/core/alt-table.rkt:174:2 argmax [75] 100.0% ---------------------------------------------------------------------------- one-iter [56] 100.0% [66] 27560(25.1%) 0(0.0%) for-loop ...bie/develop/src/core/simplify.rkt:99:2 apply-match [78] 100.0% ---------------------------------------------------------------------------- for-loop [57] 100.0% [67] 6726(6.1%) 308(0.3%) loop .../racket-7.0/collects/racket/list.rkt:751:4 expression-cost [79] 68.2% for-loop [82] 27.2% ---------------------------------------------------------------------------- one-iter [56] 100.0% [68] 6530(6.0%) 0(0.0%) find-matches ...develop/src/core/simplify.rkt:62:0 for-loop [80] 100.0% ---------------------------------------------------------------------------- baseline-error [109] 5.2% for-loop [57] 94.8% [69] 4864(4.4%) 0(0.0%) argmin ...acket-7.0/collects/racket/list.rkt:765:0 expression-cost [79] 57.0% for-loop [82] 37.8% ??? [87] 5.2% ---------------------------------------------------------------------------- temp74_0 [58] 100.0% [70] 4518(4.1%) 0(0.0%) expand-single (unknown source) expand-capturing-lifts [81] 100.0% ---------------------------------------------------------------------------- loop [60] 100.0% [71] 3134(2.9%) 0(0.0%) set-precompute! ...lop/src/core/simplify.rkt:103:0 for-loop [84] 100.0% ---------------------------------------------------------------------------- atab-add-altn [59] 100.0% [72] 1586(1.4%) 0(0.0%) best-and-tied-at-points ...ore/alt-table.rkt:112:0 errors [83] 100.0% ---------------------------------------------------------------------------- atab-add-altn [59] 100.0% [73] 1574(1.4%) 0(0.0%) override-at-pnts ...p/src/core/alt-table.rkt:135:0 errors [83] 100.0% ---------------------------------------------------------------------------- for-loop [57] 100.0% [74] 1260(1.1%) 626(0.6%) for-loop ...e/develop/src/core/simplify.rkt:137:16 for-loop [85] 50.3% ---------------------------------------------------------------------------- loop [65] 100.0% [75] 326(0.3%) 0(0.0%) argmax ...acket-7.0/collects/racket/list.rkt:766:0 expression-cost [79] 100.0% ---------------------------------------------------------------------------- ??? [63] 100.0% [76] 316(0.3%) 316(0.3%) keyword-apply ...lects/racket/private/kw.rkt:421:2 ---------------------------------------------------------------------------- temp74_0 [58] 100.0% [77] 300(0.3%) 0(0.0%) compile-top9 (unknown source) compile-forms31 [86] 100.0% ---------------------------------------------------------------------------- for-loop [66] 100.0% [78] 27560(25.1%) 0(0.0%) apply-match .../develop/src/core/simplify.rkt:71:0 for-loop [89] 82.2% match-e [90] 14.3% update-leader! [111] 1.3% custom-set-intersect [95] 1.1% set [168] 1.1% ---------------------------------------------------------------------------- argmax [75] 3.7% for-loop [57] 13.8% argmin [69] 31.1% loop [67] 51.4% [79] 8922(8.1%) 0(0.0%) expression-cost .../develop/src/programs.rkt:205:0 compile [91] 100.0% ---------------------------------------------------------------------------- for-loop [80] 50.0% find-matches [68] 50.0% [80] 6530(6.0%) 1182(1.1%) for-loop ...bie/develop/src/core/simplify.rkt:64:8 for-loop [80] 50.0% match-e [90] 40.9% ---------------------------------------------------------------------------- loop [127] 6.3% expand-single [70] 93.7% [81] 4820(4.4%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [92] 93.7% expand-id-application-form17 [149] 6.3% ---------------------------------------------------------------------------- for-loop [57] 8.1% loop [67] 45.8% argmin [69] 46.1% [82] 3990(3.6%) 0(0.0%) for-loop .../herbie/develop/src/programs.rkt:206:2 table-ref [185] 100.0% ---------------------------------------------------------------------------- ??? [88] 6.6% ??? [188] 9.5% override-at-pnts [73] 41.8% best-and-tied-at-points [72] 42.1% [83] 3764(3.4%) 0(0.0%) errors ...lies/herbie/develop/src/points.rkt:232:0 eval-prog [34] 51.8% for-loop [93] 48.2% ---------------------------------------------------------------------------- set-precompute! [71] 100.0% [84] 3134(2.9%) 0(0.0%) for-loop ...ie/develop/src/core/simplify.rkt:105:2 ??? [88] 61.1% merge-egraph-nodes! [99] 19.5% compose [94] 9.9% setfindf [96] 9.4% ---------------------------------------------------------------------------- for-loop [74] 100.0% [85] 634(0.6%) 634(0.6%) for-loop ...e/develop/src/core/simplify.rkt:141:23 ---------------------------------------------------------------------------- compile-top9 [77] 100.0% [86] 300(0.3%) 0(0.0%) compile-forms31 (unknown source) for-loop [113] 100.0% ---------------------------------------------------------------------------- argmin [69] 100.0% [87] 252(0.2%) 0(0.0%) ??? ...htlies/herbie/develop/src/points.rkt:221:27 eval-errors [97] 100.0% ---------------------------------------------------------------------------- for-loop [84] 0.6% run [13] 49.7% [88] 109600(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 49.7% run-improve43 [2] 27.6% prepare-points-intervals19 [28] 21.4% eval-const-expr [29] 0.5% oracle-error [103] 0.3% get-final-combination [104] 0.2% baseline-error [109] 0.1% errors [83] 0.1% ??? [98] 0.1% ---------------------------------------------------------------------------- apply-match [78] 100.0% [89] 22662(20.7%) 0(0.0%) for-loop ...bie/develop/src/core/simplify.rkt:85:2 merge-egraph-nodes! [99] 57.5% loop! [139] 34.4% mk-enode! [128] 4.1% substitute-e [102] 4.0% ---------------------------------------------------------------------------- apply-match [78] 24.5% for-loop [112] 31.2% for-loop [80] 44.4% [90] 9294(8.5%) 2184(2.0%) match-e ...herbie/develop/src/core/ematch.rkt:39:0 for-loop [100] 75.8% custom-in-set [105] 3.6% variable? [10] 2.7% ??? [42] 1.1% ---------------------------------------------------------------------------- expression-cost [79] 100.0% [91] 8922(8.1%) 626(0.6%) compile ...s/herbie/develop/src/programs.rkt:182:0 hash-ref! [140] 93.0% ---------------------------------------------------------------------------- expand-capturing-lifts [81] 100.0% [92] 4518(4.1%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [101] 93.0% loop [127] 7.0% ---------------------------------------------------------------------------- errors [83] 100.0% [93] 1814(1.7%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:235:4 ulp-difference [115] 50.2% ??? [98] 33.0% ??? [124] 16.9% ---------------------------------------------------------------------------- for-loop [84] 100.0% [94] 310(0.3%) 310(0.3%) compose ...collects/racket/private/list.rkt:385:12 ---------------------------------------------------------------------------- apply-match [78] 100.0% [95] 308(0.3%) 0(0.0%) custom-set-intersect ...rivate/set-types.rkt:195:0 for-loop [106] 100.0% ---------------------------------------------------------------------------- for-loop [84] 100.0% [96] 296(0.3%) 0(0.0%) setfindf ...es/herbie/develop/src/common.rkt:139:0 for-loop [107] 100.0% ---------------------------------------------------------------------------- ??? [87] 100.0% [97] 252(0.2%) 0(0.0%) eval-errors ...herbie/develop/src/points.rkt:207:0 for-loop [108] 100.0% ---------------------------------------------------------------------------- ??? [88] 0.7% for-loop [93] 1.3% ??? [150] 1.6% loop [41] 96.4% [98] 46398(42.3%) 300(0.3%) ??? ...tlies/herbie/develop/src/programs.rkt:147:2 ??? [110] 92.4% ??? [123] 5.8% ??? [124] 1.1% ---------------------------------------------------------------------------- for-loop [84] 3.3% merge-egraph-nodes! [99] 7.6% for-loop [114] 8.1% for-loop [89] 81.0% [99] 13640(12.4%) 0(0.0%) merge-egraph-nodes! ...p/src/core/egraph.rkt:144:0 update-leader! [111] 57.7% for-loop [114] 14.1% loop! [139] 13.8% merge-egraph-nodes! [99] 7.6% enode-merge! [116] 6.9% ---------------------------------------------------------------------------- match-e [90] 100.0% [100] 7702(7.0%) 3726(3.4%) for-loop ...rbie/develop/src/core/ematch.rkt:52:11 for-loop [112] 48.1% cartesian-product [117] 6.1% loop [125] 3.9% foldr [122] 3.8% filter [120] 2.2% ---------------------------------------------------------------------------- lambda-clause-expander [92] 42.2% for-loop [113] 57.8% [101] 4200(3.8%) 0(0.0%) finish-bodys (unknown source) for-loop [113] 100.0% ---------------------------------------------------------------------------- for-loop [118] 16.9% for-loop [89] 83.1% [102] 912(0.8%) 308(0.3%) substitute-e ...e/develop/src/core/ematch.rkt:64:0 for-loop [118] 83.1% ---------------------------------------------------------------------------- ??? [88] 100.0% [103] 750(0.7%) 0(0.0%) oracle-error ...erbie/develop/src/points.rkt:216:0 for-loop [119] 100.0% ---------------------------------------------------------------------------- ??? [88] 100.0% [104] 334(0.3%) 0(0.0%) get-final-combination ...op/src/mainloop.rkt:383:0 infer-splitpoints [121] 100.0% ---------------------------------------------------------------------------- match-e [90] 100.0% [105] 330(0.3%) 330(0.3%) custom-in-set ...acket/private/set-types.rkt:577:0 ---------------------------------------------------------------------------- custom-set-intersect [95] 100.0% [106] 308(0.3%) 308(0.3%) for-loop ...cts/racket/private/set-types.rkt:207:3 ---------------------------------------------------------------------------- setfindf [96] 100.0% [107] 296(0.3%) 296(0.3%) for-loop ...es/herbie/develop/src/common.rkt:140:2 ---------------------------------------------------------------------------- eval-errors [97] 100.0% [108] 252(0.2%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:209:2 ulp-difference [115] 100.0% ---------------------------------------------------------------------------- ??? [88] 100.0% [109] 252(0.2%) 0(0.0%) baseline-error ...bie/develop/src/points.rkt:220:0 argmin [69] 100.0% ---------------------------------------------------------------------------- ??? [98] 100.0% [110] 42892(39.1%) 1164(1.1%) ??? ...t-7.0/collects/racket/private/kw.rkt:592:14 ??? [123] 75.9% ??? [124] 20.0% double->posit16 [133] 0.8% ---------------------------------------------------------------------------- apply-match [78] 3.7% merge-egraph-nodes! [99] 96.3% [111] 9262(8.5%) 298(0.3%) update-leader! ...evelop/src/core/egraph.rkt:212:0 for-loop [126] 86.4% custom-set-union! [131] 7.2% for-loop [137] 3.1% ---------------------------------------------------------------------------- for-loop [100] 100.0% [112] 5288(4.8%) 300(0.3%) for-loop ...rbie/develop/src/core/ematch.rkt:58:37 match-e [90] 97.2% ---------------------------------------------------------------------------- compile-forms31 [86] 6.2% fallback-loop [30] 12.5% for-loop [113] 15.3% finish-bodys [101] 66.0% [113] 4818(4.4%) 1606(1.5%) for-loop (unknown source) finish-bodys [101] 38.6% for-loop [113] 15.3% loop [127] 11.1% syntax-e [6] 7.6% make-module-use-to-linklet [135] 6.2% add-local-binding!37 [132] 2.7% dispatch-transformer41 [7] 1.7% expand-implicit [9] 1.7% expand-identifier [12] 0.9% ---------------------------------------------------------------------------- merge-egraph-nodes! [99] 100.0% [114] 2878(2.6%) 0(0.0%) for-loop ...rbie/develop/src/core/egraph.rkt:198:4 merge-egraph-nodes! [99] 71.9% loop! [139] 28.1% ---------------------------------------------------------------------------- for-loop [108] 21.7% for-loop [93] 78.3% [115] 1162(1.1%) 914(0.8%) ulp-difference ...erbie/develop/src/float.rkt:14:0 ??? [170] 21.3% ---------------------------------------------------------------------------- merge-egraph-nodes! [99] 100.0% [116] 936(0.9%) 0(0.0%) enode-merge! ...e/develop/src/core/enode.rkt:127:0 adopt-enode! [130] 100.0% ---------------------------------------------------------------------------- for-loop [100] 100.0% [117] 932(0.9%) 932(0.9%) cartesian-product ...ollects/racket/list.rkt:822:0 ---------------------------------------------------------------------------- substitute-e [102] 100.0% [118] 912(0.8%) 0(0.0%) for-loop ...rbie/develop/src/core/ematch.rkt:73:24 mk-enode! [128] 66.2% substitute-e [102] 33.8% ---------------------------------------------------------------------------- oracle-error [103] 100.0% [119] 750(0.7%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:217:2 map [129] 66.9% loop [125] 33.1% ---------------------------------------------------------------------------- for-loop [100] 100.0% [120] 334(0.3%) 334(0.3%) filter ...0/collects/racket/private/list.rkt:256:2 ---------------------------------------------------------------------------- get-final-combination [104] 100.0% [121] 334(0.3%) 0(0.0%) infer-splitpoints ...lop/src/core/regimes.rkt:33:0 for-loop [134] 100.0% ---------------------------------------------------------------------------- for-loop [100] 100.0% [122] 296(0.3%) 0(0.0%) foldr ....0/collects/racket/private/list.rkt:242:4 cp-2 [136] 100.0% ---------------------------------------------------------------------------- fold-binary-pred [195] 7.2% ??? [98] 7.5% ??? [110] 85.3% [123] 36058(32.9%) 6496(5.9%) ??? ...tract/private/arrow-higher-order.rkt:361:33 ival-fmod [138] 57.8% ival-sinh [142] 11.5% ival-sub [143] 11.0% mk-ival [146] 6.6% ---------------------------------------------------------------------------- for-loop [93] 2.1% jloop [11] 2.3% ??? [54] 2.5% location-do [145] 2.9% loop [169] 3.2% ??? [98] 3.5% loop [33] 3.6% loop [17] 5.2% for-loop [61] 6.2% loop [41] 9.3% ??? [110] 59.3% [124] 14476(13.2%) 554(0.5%) ??? ...tract/private/arrow-higher-order.rkt:357:33 ival-pow [141] 59.3% ->flonum [147] 15.2% location-do [145] 6.2% approximate9 [4] 6.2% hash-ref! [140] 5.2% best-alt [153] 2.5% sample-multi-bounded [159] 1.7% ---------------------------------------------------------------------------- for-loop [100] 1.8% parse-loop80 [16] 1.9% loop! [139] 2.7% for-loop [119] 3.0% taylor [26] 3.6% loop [125] 87.0% [125] 8258(7.5%) 300(0.3%) loop ...-7.0/collects/racket/private/map.rkt:40:19 loop [125] 87.0% simplify [3] 3.6% ??? [150] 3.0% loop! [139] 2.7% parse-loop80 [16] 1.9% ---------------------------------------------------------------------------- update-leader! [111] 100.0% [126] 8006(7.3%) 0(0.0%) for-loop ...rbie/develop/src/core/egraph.rkt:217:6 hash-update! [161] 59.6% for-loop [144] 40.4% ---------------------------------------------------------------------------- lambda-clause-expander [92] 6.2% eval-prog [34] 11.7% apply-transformer52 [21] 18.7% for-loop [113] 25.7% syntax-e/no-taint [20] 37.7% [127] 2580(2.4%) 0(0.0%) loop (unknown source) gf [148] 37.7% expand-id-application-form17 [149] 25.7% core-form-sym [151] 18.7% expand-capturing-lifts [81] 11.7% dispatch-transformer41 [7] 6.2% ---------------------------------------------------------------------------- for-loop [118] 39.4% for-loop [89] 60.6% [128] 1532(1.4%) 906(0.8%) mk-enode! ...rbie/develop/src/core/egraph.rkt:99:0 hash-has-key? [156] 21.5% new-enode [158] 19.3% ---------------------------------------------------------------------------- taylor [26] 26.7% f46 [23] 28.3% for-loop [119] 45.0% [129] 1116(1.0%) 0(0.0%) map ...t-7.0/collects/racket/private/map.rkt:35:13 ??? [150] 45.0% parse-loop80 [16] 28.3% taylor [26] 26.7% ---------------------------------------------------------------------------- enode-merge! [116] 100.0% [130] 936(0.9%) 304(0.3%) adopt-enode! ...e/develop/src/core/enode.rkt:103:0 custom-set-union [162] 67.5% ---------------------------------------------------------------------------- update-leader! [111] 100.0% [131] 668(0.6%) 300(0.3%) custom-set-union! ...t/private/set-types.rkt:245:0 for-loop [152] 55.1% ---------------------------------------------------------------------------- for-loop [113] 100.0% [132] 646(0.6%) 646(0.6%) add-local-binding!37 (unknown source) ---------------------------------------------------------------------------- ??? [110] 100.0% [133] 336(0.3%) 0(0.0%) double->posit16 ...ftposit-rkt/softposit.rkt:248:0 get-ffi-obj* [154] 100.0% ---------------------------------------------------------------------------- infer-splitpoints [121] 100.0% [134] 334(0.3%) 0(0.0%) for-loop ...rbie/develop/src/core/regimes.rkt:45:6 option-on-expr [155] 100.0% ---------------------------------------------------------------------------- for-loop [113] 100.0% [135] 300(0.3%) 300(0.3%) make-module-use-to-linklet (unknown source) ---------------------------------------------------------------------------- foldr [122] 100.0% [136] 296(0.3%) 0(0.0%) cp-2 .../racket-7.0/collects/racket/list.rkt:826:2 for-loop [157] 100.0% ---------------------------------------------------------------------------- update-leader! [111] 100.0% [137] 290(0.3%) 290(0.3%) for-loop ...rbie/develop/src/core/egraph.rkt:227:6 ---------------------------------------------------------------------------- ??? [123] 100.0% [138] 22650(20.7%) 500(0.5%) ival-fmod ...bie/develop/src/biginterval.rkt:357:0 ival-div [160] 39.3% ??? [193] 25.6% ival-fabs [164] 17.9% ival-mult [167] 9.5% fold-binary-pred [195] 3.3% force [171] 2.2% ---------------------------------------------------------------------------- for-loop [114] 3.7% merge-egraph-nodes! [99] 15.0% loop [125] 31.1% for-loop [89] 50.2% [139] 11582(10.6%) 2528(2.3%) loop! ...s/herbie/develop/src/core/enode.rkt:190:2 custom-set-union [162] 47.7% loop [125] 31.1% set [168] 7.5% update-en-expr [203] 1.4% ---------------------------------------------------------------------------- for-loop [22] 2.7% localize-error [46] 3.3% for-loop [19] 4.0% ??? [166] 6.5% ??? [124] 6.5% compile [91] 33.1% ??? [163] 43.0% [140] 10890(9.9%) 7370(6.7%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [163] 45.9% ??? [166] 6.5% simplify [3] 6.5% ??? [5] 4.0% ??? [173] 3.3% ??? [8] 2.7% ---------------------------------------------------------------------------- ??? [124] 100.0% [141] 8584(7.8%) 808(0.7%) ival-pow ...rbie/develop/src/biginterval.rkt:199:0 ??? [193] 81.3% fold-binary-pred [195] 9.2% ---------------------------------------------------------------------------- ??? [123] 100.0% [142] 4162(3.8%) 284(0.3%) ival-sinh ...bie/develop/src/biginterval.rkt:347:0 ??? [193] 93.2% ---------------------------------------------------------------------------- ??? [123] 100.0% [143] 3976(3.6%) 1010(0.9%) ival-sub ...erbie/develop/src/biginterval.rkt:83:0 ??? [193] 68.2% ...higher-order.rkt:361:33 [181] 6.4% ---------------------------------------------------------------------------- for-loop [126] 100.0% [144] 3234(3.0%) 0(0.0%) for-loop ...rbie/develop/src/core/egraph.rkt:218:8 hash-update! [161] 100.0% ---------------------------------------------------------------------------- ??? [124] 39.6% location-do [145] 60.4% [145] 2538(2.3%) 0(0.0%) location-do ...rbie/develop/src/programs.rkt:112:0 location-do [145] 60.4% ??? [124] 23.1% loop [169] 16.5% ---------------------------------------------------------------------------- ??? [123] 100.0% [146] 2396(2.2%) 0(0.0%) mk-ival ...herbie/develop/src/biginterval.rkt:53:0 bf [165] 100.0% ---------------------------------------------------------------------------- ??? [124] 100.0% [147] 2200(2.0%) 1682(1.5%) ->flonum ...s/herbie/develop/src/programs.rkt:37:0 ??? [170] 23.5% ---------------------------------------------------------------------------- loop [127] 100.0% [148] 1304(1.2%) 300(0.3%) gf (unknown source) propagation-apply-shifted [174] 26.2% propagation-apply [175] 25.8% cache-or-reuse-set [178] 25.0% ---------------------------------------------------------------------------- expand-capturing-lifts [81] 23.3% loop [127] 76.7% [149] 1296(1.2%) 0(0.0%) expand-id-application-form17 (unknown source) syntax-e/no-taint [20] 51.1% resolve+shift28 [18] 25.6% binding-lookup50 [179] 23.3% ---------------------------------------------------------------------------- loop [125] 33.1% map [129] 66.9% [150] 750(0.7%) 0(0.0%) ??? ...htlies/herbie/develop/src/points.rkt:218:26 ??? [98] 100.0% ---------------------------------------------------------------------------- loop [127] 100.0% [151] 642(0.6%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [18] 100.0% ---------------------------------------------------------------------------- custom-set-union! [131] 100.0% [152] 368(0.3%) 368(0.3%) for-loop ...cts/racket/private/set-types.rkt:253:4 ---------------------------------------------------------------------------- ??? [124] 100.0% [153] 356(0.3%) 0(0.0%) best-alt .../herbie/develop/src/mainloop.rkt:124:0 argmins [172] 100.0% ---------------------------------------------------------------------------- double->posit16 [133] 100.0% [154] 336(0.3%) 0(0.0%) get-ffi-obj* ...-7.0/collects/ffi/unsafe.rkt:209:2 get-ffi-lib9 [176] 100.0% ---------------------------------------------------------------------------- for-loop [134] 100.0% [155] 334(0.3%) 0(0.0%) option-on-expr ...velop/src/core/regimes.rkt:145:0 sort-context-on-expr [177] 100.0% ---------------------------------------------------------------------------- mk-enode! [128] 100.0% [156] 330(0.3%) 330(0.3%) hash-has-key? ...ket/private/more-scheme.rkt:371:2 ---------------------------------------------------------------------------- cp-2 [136] 100.0% [157] 296(0.3%) 296(0.3%) for-loop ...ket-7.0/collects/racket/list.rkt:827:4 ---------------------------------------------------------------------------- mk-enode! [128] 100.0% [158] 296(0.3%) 0(0.0%) new-enode ...erbie/develop/src/core/enode.rkt:95:0 type-of-enode-expr [180] 100.0% ---------------------------------------------------------------------------- ??? [124] 100.0% [159] 244(0.2%) 0(0.0%) sample-multi-bounded ...evelop/src/points.rkt:16:0 for-loop [182] 100.0% ---------------------------------------------------------------------------- ival-fmod [138] 100.0% [160] 8904(8.1%) 1390(1.3%) ival-div ...rbie/develop/src/biginterval.rkt:131:0 classify-ival [184] 45.9% ??? [193] 32.8% fold-binary-pred [195] 5.7% ---------------------------------------------------------------------------- for-loop [144] 40.4% for-loop [126] 59.6% [161] 8006(7.3%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [183] 100.0% ---------------------------------------------------------------------------- adopt-enode! [130] 8.3% loop! [139] 91.7% [162] 7638(7.0%) 4118(3.8%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [186] 42.2% for-loop [191] 3.9% ---------------------------------------------------------------------------- hash-ref! [140] 100.0% [163] 6744(6.2%) 926(0.8%) ??? ...tlies/herbie/develop/src/programs.rkt:190:5 hash-ref! [140] 95.4% ---------------------------------------------------------------------------- ival-fmod [138] 100.0% [164] 4048(3.7%) 1410(1.3%) ival-fabs ...bie/develop/src/biginterval.rkt:339:0 ??? [193] 59.0% fold-binary-pred [195] 6.1% ---------------------------------------------------------------------------- mk-ival [146] 100.0% [165] 2396(2.2%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 new-mpfr [205] 88.5% ??? [206] 11.5% ---------------------------------------------------------------------------- hash-ref! [140] 100.0% [166] 2240(2.0%) 0(0.0%) ??? ...es/herbie/develop/src/core/taylor.rkt:45:15 hash-ref! [140] 100.0% ---------------------------------------------------------------------------- ival-fmod [138] 100.0% [167] 2154(2.0%) 244(0.2%) ival-mult ...rbie/develop/src/biginterval.rkt:95:0 bf* [187] 75.0% classify-ival [184] 13.6% ---------------------------------------------------------------------------- apply-match [78] 14.7% loop! [139] 85.3% [168] 2024(1.8%) 1726(1.6%) set ...collects/racket/private/set-types.rkt:981:0 for-loop [192] 14.7% ---------------------------------------------------------------------------- location-do [145] 100.0% [169] 1260(1.1%) 0(0.0%) loop ...lies/herbie/develop/src/programs.rkt:121:4 ??? [124] 100.0% ---------------------------------------------------------------------------- ulp-difference [115] 32.4% ->flonum [147] 67.6% [170] 766(0.7%) 766(0.7%) ??? ...s/racket/contract/private/arr-i.rkt:1252:29 ---------------------------------------------------------------------------- ival-fmod [138] 100.0% [171] 496(0.5%) 496(0.5%) force ...collects/racket/private/promise.rkt:109:0 ---------------------------------------------------------------------------- best-alt [153] 100.0% [172] 356(0.3%) 0(0.0%) argmins ...lies/herbie/develop/src/common.rkt:93:0 ??? [188] 100.0% ---------------------------------------------------------------------------- hash-ref! [140] 100.0% [173] 354(0.3%) 354(0.3%) ??? .../herbie/develop/src/core/localize.rkt:22:13 ---------------------------------------------------------------------------- gf [148] 100.0% [174] 342(0.3%) 342(0.3%) propagation-apply-shifted (unknown source) ---------------------------------------------------------------------------- gf [148] 100.0% [175] 336(0.3%) 336(0.3%) propagation-apply (unknown source) ---------------------------------------------------------------------------- get-ffi-obj* [154] 100.0% [176] 336(0.3%) 0(0.0%) get-ffi-lib9 ...-7.0/collects/ffi/unsafe.rkt:121:0 get-cross-lib-search-dirs [189] 100.0% ---------------------------------------------------------------------------- option-on-expr [155] 100.0% [177] 334(0.3%) 0(0.0%) sort-context-on-expr ...src/core/regimes.rkt:140:0 ??? [190] 100.0% ---------------------------------------------------------------------------- gf [148] 100.0% [178] 326(0.3%) 326(0.3%) cache-or-reuse-set (unknown source) ---------------------------------------------------------------------------- expand-id-application-form17 [149]100.0% [179] 302(0.3%) 302(0.3%) binding-lookup50 (unknown source) ---------------------------------------------------------------------------- new-enode [158] 100.0% [180] 296(0.3%) 0(0.0%) type-of-enode-expr ...elop/src/core/enode.rkt:68:0 table-ref [185] 100.0% ---------------------------------------------------------------------------- ival-sub [143] 100.0% [181] 256(0.2%) 256(0.2%) ...higher-order.rkt:361:33 (unknown source) ---------------------------------------------------------------------------- sample-multi-bounded [159] 100.0% [182] 244(0.2%) 244(0.2%) for-loop ...ies/herbie/develop/src/points.rkt:26:4 ---------------------------------------------------------------------------- hash-update! [161] 100.0% [183] 8006(7.3%) 0(0.0%) ??? ...s/herbie/develop/src/core/egraph.rkt:220:24 for-loop [194] 100.0% ---------------------------------------------------------------------------- ival-mult [167] 6.7% ival-div [160] 93.3% [184] 4384(4.0%) 2270(2.1%) classify-ival ...develop/src/biginterval.rkt:300:0 fold-binary-pred [195] 48.2% ---------------------------------------------------------------------------- type-of-enode-expr [180] 6.9% for-loop [82] 93.1% [185] 4286(3.9%) 1828(1.7%) table-ref ...es/herbie/develop/src/common.rkt:42:0 for-loop [196] 50.4% assoc-iterate-first [199] 6.9% ---------------------------------------------------------------------------- custom-set-union [162] 100.0% [186] 3220(2.9%) 2240(2.0%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [197] 30.4% ---------------------------------------------------------------------------- ival-mult [167] 100.0% [187] 1616(1.5%) 0(0.0%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [193] 100.0% ---------------------------------------------------------------------------- argmins [172] 100.0% [188] 356(0.3%) 0(0.0%) ??? ...lies/herbie/develop/src/mainloop.rkt:126:19 errors [83] 100.0% ---------------------------------------------------------------------------- get-ffi-lib9 [176] 100.0% [189] 336(0.3%) 336(0.3%) get-cross-lib-search-dirs ...rivate/dirs.rkt:168:7 ---------------------------------------------------------------------------- sort-context-on-expr [177] 100.0% [190] 334(0.3%) 0(0.0%) ??? ...-7.0/collects/racket/private/sort.rkt:369:3 generic-sort/key [198] 100.0% ---------------------------------------------------------------------------- custom-set-union [162] 100.0% [191] 300(0.3%) 300(0.3%) for-loop ...cts/racket/private/set-types.rkt:152:2 ---------------------------------------------------------------------------- set [168] 100.0% [192] 298(0.3%) 298(0.3%) for-loop ...cts/racket/private/set-types.rkt:937:4 ---------------------------------------------------------------------------- bf* [187] 6.1% ival-fabs [164] 9.1% ival-sub [143] 10.3% ival-div [160] 11.1% ival-sinh [142] 14.8% ival-fmod [138] 22.0% ival-pow [141] 26.6% [193] 26288(24.0%) 7348(6.7%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfexpt [200] 36.4% bfneg [201] 21.9% bftruncate [202] 13.8% ---------------------------------------------------------------------------- ??? [183] 100.0% [194] 8006(7.3%) 7308(6.7%) for-loop ...bie/develop/src/core/egraph.rkt:221:26 update-en-expr [203] 8.7% ---------------------------------------------------------------------------- ival-fabs [164] 5.6% ival-div [160] 11.5% ival-fmod [138] 17.1% ival-pow [141] 18.0% classify-ival [184] 47.9% [195] 4416(4.0%) 0(0.0%) fold-binary-pred ...gfloat/bigfloat-mpfr.rkt:117:0 ??? [123] 100.0% ---------------------------------------------------------------------------- table-ref [185] 100.0% [196] 2162(2.0%) 2162(2.0%) for-loop ...ies/herbie/develop/src/common.rkt:44:4 ---------------------------------------------------------------------------- for-loop [186] 100.0% [197] 980(0.9%) 980(0.9%) for-loop ...cts/racket/private/set-types.rkt:178:5 ---------------------------------------------------------------------------- ??? [190] 100.0% [198] 334(0.3%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [204] 100.0% ---------------------------------------------------------------------------- table-ref [185] 100.0% [199] 296(0.3%) 296(0.3%) assoc-iterate-first ...cket/private/dict.rkt:166:0 ---------------------------------------------------------------------------- ??? [193] 100.0% [200] 9572(8.7%) 584(0.5%) bfexpt ...lib/math/private/bigfloat/mpfr.rkt:821:4 new-mpfr [205] 74.9% ??? [206] 19.0% ---------------------------------------------------------------------------- ??? [193] 100.0% [201] 5750(5.2%) 0(0.0%) bfneg ...-lib/math/private/bigfloat/mpfr.rkt:618:4 new-mpfr [205] 76.4% ??? [206] 23.6% ---------------------------------------------------------------------------- ??? [193] 100.0% [202] 3618(3.3%) 0(0.0%) bftruncate ...math/private/bigfloat/mpfr.rkt:716:4 new-mpfr [205] 84.5% ??? [206] 15.5% ---------------------------------------------------------------------------- loop! [139] 31.6% for-loop [194] 68.4% [203] 1020(0.9%) 1020(0.9%) update-en-expr ...evelop/src/core/egraph.rkt:206:0 ---------------------------------------------------------------------------- generic-sort/key [198] 25.0% copying-mergesort [204] 75.0% [204] 334(0.3%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 copying-mergesort [204] 75.0% jloop [11] 25.0% ---------------------------------------------------------------------------- bf [165] 12.7% bftruncate [202] 18.3% bfneg [201] 26.2% bfexpt [200] 42.8% [205] 16736(15.3%) 16736(15.3%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 ---------------------------------------------------------------------------- bf [165] 6.9% bftruncate [202] 14.0% bfneg [201] 33.8% bfexpt [200] 45.3% [206] 4016(3.7%) 4016(3.7%) ??? /opt/racket-7.0/collects/ffi/unsafe.rkt:898:4 ----------------------------------------------------------------------------