Profiling results ----------------- Total cpu time observed: 57008ms (out of 57864ms) Number of samples taken: 167 (once every 341ms) (Hiding functions with self<1.0% and local<2.0%: 3 of 210 hidden) =========================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee =========================================================================== run [19] 50.0% [1] 57008(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [9] 50.0% run-improve39 [10] 28.9% loop [87] 11.8% get-final-combination [11] 4.8% oracle-error [12] 2.7% eval-errors [78] 1.7% --------------------------------------------------------------------------- ??? [113] 100.0% [2] 3544(6.2%) 0(0.0%) approximate9 ...e/develop/src/core/taylor.rkt:12:0 loop [13] 44.9% for-loop [16] 35.9% taylor [23] 19.2% --------------------------------------------------------------------------- hash-ref! [122] 100.0% [3] 1278(2.2%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:300:23 for-loop [15] 100.0% --------------------------------------------------------------------------- eval4 [106] 24.3% for-loop [189] 75.7% [4] 1242(2.2%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [14] 100.0% --------------------------------------------------------------------------- hash-ref! [122] 100.0% [5] 974(1.7%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:290:26 for-loop [17] 100.0% --------------------------------------------------------------------------- f8 [40] 100.0% [6] 310(0.5%) 0(0.0%) variable? ...e/develop/src/syntax/syntax.rkt:715:0 ??? [39] 100.0% --------------------------------------------------------------------------- for-loop [189] 100.0% [7] 300(0.5%) 0(0.0%) expand-identifier (unknown source) resolve+shift28 [176] 100.0% --------------------------------------------------------------------------- parse-loop14 [42] 100.0% [8] 296(0.5%) 0(0.0%) eval (unknown source) namespace-syntax-introduce3 [18] 100.0% --------------------------------------------------------------------------- ??? [1] 100.0% [9] 57008(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [19] 100.0% --------------------------------------------------------------------------- ??? [1] 100.0% [10] 32978(57.8%) 0(0.0%) run-improve39 ...ie/develop/src/mainloop.rkt:287:0 for-loop [20] 95.6% setup-prog!32 [24] 3.7% --------------------------------------------------------------------------- ??? [1] 100.0% [11] 5516(9.7%) 0(0.0%) get-final-combination ...op/src/mainloop.rkt:310:0 f8 [40] 51.6% infer-splitpoints [22] 48.4% --------------------------------------------------------------------------- ??? [1] 100.0% [12] 3104(5.4%) 0(0.0%) oracle-error ...erbie/develop/src/points.rkt:227:0 for-loop [21] 100.0% --------------------------------------------------------------------------- approximate9 [2] 100.0% [13] 1590(2.8%) 0(0.0%) loop ...es/herbie/develop/src/core/taylor.rkt:87:4 ??? [113] 60.1% hash-ref! [122] 39.9% --------------------------------------------------------------------------- expand-id-application-form17 [175] 20.0% syntax-e [4] 80.0% [14] 1552(2.7%) 0(0.0%) syntax-e/no-taint (unknown source) loop [167] 100.0% --------------------------------------------------------------------------- ??? [3] 100.0% [15] 1278(2.2%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:303:27 hash-ref! [122] 100.0% --------------------------------------------------------------------------- approximate9 [2] 100.0% [16] 1274(2.2%) 0(0.0%) for-loop ...rbie/develop/src/core/taylor.rkt:30:18 taylor [23] 74.9% taylor-sqrt [28] 25.1% --------------------------------------------------------------------------- ??? [5] 100.0% [17] 974(1.7%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:290:52 hash-ref! [122] 100.0% --------------------------------------------------------------------------- eval [8] 100.0% [18] 296(0.5%) 0(0.0%) namespace-syntax-introduce3 (unknown source) free-identifier=? [25] 100.0% --------------------------------------------------------------------------- profile-thunk16 [9] 100.0% [19] 57008(100.0%) 0(0.0%) run ...racket/share/pkgs/profile-lib/main.rkt:39:2 ??? [1] 100.0% --------------------------------------------------------------------------- run-improve39 [10] 100.0% [20] 31520(55.3%) 0(0.0%) for-loop ...herbie/develop/src/mainloop.rkt:304:10 run-iter! [26] 100.0% --------------------------------------------------------------------------- oracle-error [12] 100.0% [21] 3104(5.4%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:228:2 loop [100] 60.8% map [54] 29.6% argmin [29] 9.6% --------------------------------------------------------------------------- get-final-combination [11] 100.0% [22] 2670(4.7%) 0(0.0%) infer-splitpoints ...lop/src/core/regimes.rkt:32:0 for-loop [27] 100.0% --------------------------------------------------------------------------- taylor [23] 25.7% for-loop [16] 32.7% approximate9 [2] 41.6% [23] 1634(2.9%) 0(0.0%) taylor ...herbie/develop/src/core/taylor.rkt:169:0 taylor-sqrt [28] 61.4% taylor [23] 25.7% map [54] 12.9% --------------------------------------------------------------------------- run-improve39 [10] 100.0% [24] 1234(2.2%) 0(0.0%) setup-prog!32 ...bie/develop/src/mainloop.rkt:63:0 loop [87] 100.0% --------------------------------------------------------------------------- namespace-syntax-introduce3 [18] 100.0% [25] 296(0.5%) 0(0.0%) free-identifier=? (unknown source) resolve+shift28 [176] 100.0% --------------------------------------------------------------------------- for-loop [20] 100.0% [26] 31520(55.3%) 0(0.0%) run-iter! ...herbie/develop/src/mainloop.rkt:268:0 simplify! [30] 50.1% finalize-iter! [31] 31.5% gen-series! [32] 12.4% gen-rewrites! [35] 2.8% localize-error [36] 1.6% choose-best-alt! [37] 1.6% --------------------------------------------------------------------------- infer-splitpoints [22] 100.0% [27] 2670(4.7%) 0(0.0%) for-loop ...rbie/develop/src/core/regimes.rkt:44:6 option-on-expr [34] 100.0% --------------------------------------------------------------------------- for-loop [16] 16.4% map [54] 32.2% taylor [23] 51.4% [28] 1954(3.4%) 0(0.0%) taylor-sqrt ...e/develop/src/core/taylor.rkt:351:0 simplify [33] 66.0% hash-ref! [122] 34.0% --------------------------------------------------------------------------- for-loop [21] 100.0% [29] 298(0.5%) 298(0.5%) argmin ...92/racket/collects/racket/list.rkt:765:0 --------------------------------------------------------------------------- run-iter! [26] 100.0% [30] 15792(27.7%) 0(0.0%) simplify! ...herbie/develop/src/mainloop.rkt:182:0 for-loop [38] 100.0% --------------------------------------------------------------------------- run-iter! [26] 100.0% [31] 9938(17.4%) 0(0.0%) finalize-iter! ...e/develop/src/mainloop.rkt:222:0 ??? [39] 100.0% --------------------------------------------------------------------------- run-iter! [26] 100.0% [32] 3902(6.8%) 0(0.0%) gen-series! ...rbie/develop/src/mainloop.rkt:152:0 for-loop [41] 100.0% --------------------------------------------------------------------------- ??? [137] 8.8% taylor-sqrt [28] 36.4% hash-ref! [122] 54.8% [33] 3544(6.2%) 0(0.0%) simplify ...erbie/develop/src/core/reduce.rkt:16:0 parse-loop14 [42] 54.8% f8 [40] 17.8% simplify-node [47] 9.5% simplify* [48] 9.1% debug-print [49] 8.7% --------------------------------------------------------------------------- for-loop [27] 100.0% [34] 2670(4.7%) 0(0.0%) option-on-expr ...velop/src/core/regimes.rkt:112:0 for-loop [43] 43.9% err-lsts->split-indices [44] 34.1% sort-context-on-expr [46] 22.0% --------------------------------------------------------------------------- run-iter! [26] 100.0% [35] 878(1.5%) 0(0.0%) gen-rewrites! ...ie/develop/src/mainloop.rkt:165:0 for-loop [45] 100.0% --------------------------------------------------------------------------- run-iter! [26] 100.0% [36] 518(0.9%) 0(0.0%) localize-error ...velop/src/core/localize.rkt:51:0 hash-ref! [122] 100.0% --------------------------------------------------------------------------- run-iter! [26] 100.0% [37] 492(0.9%) 0(0.0%) choose-best-alt! ...develop/src/mainloop.rkt:114:0 ??? [39] 100.0% --------------------------------------------------------------------------- simplify! [30] 100.0% [38] 15792(27.7%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:186:6 for-loop [50] 100.0% --------------------------------------------------------------------------- variable? [6] 2.9% choose-best-alt! [37] 4.6% finalize-iter! [31] 92.5% [39] 10740(18.8%) 310(0.5%) ??? ...contract/private/arrow-val-first.rkt:388:18 for-loop [51] 92.5% ??? [58] 4.6% --------------------------------------------------------------------------- prepare-points [76] 3.9% hash-ref! [122] 13.0% simplify [33] 15.8% get-final-combination [11] 67.3% [40] 3996(7.0%) 0(0.0%) f8 ...et/collects/racket/match/compiler.rkt:507:40 sindices->spoints [53] 67.3% temp68_2 [102] 15.8% map [54] 13.0% variable? [6] 3.9% --------------------------------------------------------------------------- gen-series! [32] 100.0% [41] 3902(6.8%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:158:7 taylor-alt [52] 100.0% --------------------------------------------------------------------------- loop [100] 8.6% parse-loop14 [42] 15.4% hash-ref! [122] 21.1% simplify [33] 55.0% [42] 2460(4.3%) 338(0.6%) parse-loop14 ...s/racket/match/compiler.rkt:418:15 temp68_2 [102] 46.4% loop [100] 29.6% parse-loop14 [42] 15.4% eval [8] 4.0% --------------------------------------------------------------------------- option-on-expr [34] 100.0% [43] 1172(2.1%) 0(0.0%) for-loop ...bie/develop/src/core/regimes.rkt:120:4 eval-prog [101] 51.4% eval-errors [78] 48.6% --------------------------------------------------------------------------- option-on-expr [34] 100.0% [44] 910(1.6%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:238:0 loop [55] 100.0% --------------------------------------------------------------------------- gen-rewrites! [35] 100.0% [45] 878(1.5%) 0(0.0%) for-loop ...herbie/develop/src/mainloop.rkt:170:11 ??? [56] 100.0% --------------------------------------------------------------------------- option-on-expr [34] 100.0% [46] 588(1.0%) 0(0.0%) sort-context-on-expr ...evelop/src/points.rkt:91:0 ??? [57] 100.0% --------------------------------------------------------------------------- simplify [33] 100.0% [47] 336(0.6%) 0(0.0%) simplify-node .../develop/src/core/reduce.rkt:50:0 gather-multiplicative-terms [59] 100.0% --------------------------------------------------------------------------- simplify [33] 100.0% [48] 324(0.6%) 324(0.6%) simplify* ...rbie/develop/src/core/reduce.rkt:31:0 --------------------------------------------------------------------------- simplify [33] 100.0% [49] 310(0.5%) 0(0.0%) debug-print .../herbie/develop/src/debug.rkt:107:0 for-loop [60] 100.0% --------------------------------------------------------------------------- for-loop [38] 100.0% [50] 15792(27.7%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:210:8 ??? [113] 100.0% --------------------------------------------------------------------------- ??? [39] 100.0% [51] 9938(17.4%) 0(0.0%) for-loop ...ie/develop/src/core/alt-table.rkt:51:2 atab-add-altn [61] 93.5% loop [66] 6.5% --------------------------------------------------------------------------- for-loop [41] 100.0% [52] 3902(6.8%) 0(0.0%) taylor-alt ...erbie/develop/src/mainloop.rkt:137:0 for-loop [62] 100.0% --------------------------------------------------------------------------- f8 [40] 100.0% [53] 2846(5.0%) 0(0.0%) sindices->spoints ...op/src/core/regimes.rkt:177:0 for-loop [63] 100.0% --------------------------------------------------------------------------- f8 [40] 25.1% taylor [23] 30.5% for-loop [21] 44.4% [54] 2066(3.6%) 0(0.0%) map ...acket/collects/racket/private/map.rkt:35:13 loop [100] 39.6% taylor-sqrt [28] 30.5% hash-ref! [122] 15.1% ??? [103] 14.8% --------------------------------------------------------------------------- err-lsts->split-indices [44] 100.0% [55] 910(1.6%) 0(0.0%) loop .../herbie/develop/src/core/regimes.rkt:289:4 for-loop [64] 100.0% --------------------------------------------------------------------------- for-loop [45] 100.0% [56] 878(1.5%) 0(0.0%) ??? ...ies/herbie/develop/src/alternative.rkt:54:0 rewriter [65] 100.0% --------------------------------------------------------------------------- sort-context-on-expr [46] 100.0% [57] 588(1.0%) 0(0.0%) ??? ...cket/collects/racket/private/sort.rkt:369:3 generic-sort/key [67] 100.0% --------------------------------------------------------------------------- ??? [39] 100.0% [58] 492(0.9%) 0(0.0%) ??? .../herbie/develop/src/core/alt-table.rkt:54:0 ??? [113] 100.0% --------------------------------------------------------------------------- simplify-node [47] 100.0% [59] 336(0.6%) 336(0.6%) gather-multiplicative-terms ...re/reduce.rkt:116:0 --------------------------------------------------------------------------- debug-print [49] 100.0% [60] 310(0.5%) 310(0.5%) for-loop ...ies/herbie/develop/src/debug.rkt:115:2 --------------------------------------------------------------------------- for-loop [51] 100.0% [61] 9296(16.3%) 0(0.0%) atab-add-altn ...elop/src/core/alt-table.rkt:210:0 best-and-tied-at-points [68] 60.3% override-at-pnts [69] 39.7% --------------------------------------------------------------------------- taylor-alt [52] 100.0% [62] 3902(6.8%) 358(0.6%) for-loop .../herbie/develop/src/mainloop.rkt:143:6 ??? [113] 90.8% --------------------------------------------------------------------------- sindices->spoints [53] 100.0% [63] 2846(5.0%) 0(0.0%) for-loop ...bie/develop/src/core/regimes.rkt:209:9 binary-search-floats [70] 67.2% pred [79] 21.9% prepare-points [76] 10.9% --------------------------------------------------------------------------- loop [55] 100.0% [64] 910(1.6%) 314(0.6%) for-loop ...bie/develop/src/core/regimes.rkt:254:4 for-loop [72] 65.5% --------------------------------------------------------------------------- ??? [56] 22.2% matcher [80] 77.8% [65] 878(1.5%) 0(0.0%) rewriter ...bie/develop/src/core/matcher.rkt:131:2 for-loop [71] 87.3% *rules* [73] 12.7% --------------------------------------------------------------------------- for-loop [51] 100.0% [66] 642(1.1%) 0(0.0%) loop ...erbie/develop/src/core/alt-table.rkt:184:2 loop [74] 50.2% argmax [75] 49.8% --------------------------------------------------------------------------- ??? [57] 100.0% [67] 588(1.0%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [77] 52.7% loop [81] 47.3% --------------------------------------------------------------------------- atab-add-altn [61] 100.0% [68] 5608(9.8%) 0(0.0%) best-and-tied-at-points ...ore/alt-table.rkt:122:0 eval-errors [78] 55.2% eval-prog [101] 38.4% for-loop [82] 6.3% --------------------------------------------------------------------------- atab-add-altn [61] 100.0% [69] 3688(6.5%) 0(0.0%) override-at-pnts ...p/src/core/alt-table.rkt:145:0 eval-errors [78] 58.4% eval-prog [101] 33.5% for-loop [84] 8.1% --------------------------------------------------------------------------- for-loop [63] 100.0% [70] 1912(3.4%) 0(0.0%) binary-search-floats ...src/core/regimes.rkt:158:0 pred [79] 100.0% --------------------------------------------------------------------------- rewriter [65] 100.0% [71] 878(1.5%) 0(0.0%) for-loop ...ie/develop/src/core/matcher.rkt:134:10 matcher [80] 90.5% ??? [138] 9.5% --------------------------------------------------------------------------- for-loop [64] 100.0% [72] 596(1.0%) 298(0.5%) for-loop ...bie/develop/src/core/regimes.rkt:258:8 curried [85] 50.0% --------------------------------------------------------------------------- rewriter [65] 100.0% [73] 544(1.0%) 298(0.5%) *rules* ...rbie/develop/src/syntax/rules.rkt:643:0 for-loop [86] 45.2% --------------------------------------------------------------------------- loop [66] 100.0% [74] 322(0.6%) 322(0.6%) loop ...erbie/develop/src/core/alt-table.rkt:106:2 --------------------------------------------------------------------------- loop [66] 100.0% [75] 320(0.6%) 0(0.0%) argmax ...92/racket/collects/racket/list.rkt:766:0 expression-cost [83] 100.0% --------------------------------------------------------------------------- for-loop [63] 100.0% [76] 310(0.5%) 0(0.0%) prepare-points ...bie/develop/src/points.rkt:190:0 f8 [40] 100.0% --------------------------------------------------------------------------- generic-sort/key [67] 100.0% [77] 310(0.5%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 loop [81] 100.0% --------------------------------------------------------------------------- for-loop [43] 7.4% ??? [1] 24.6% override-at-pnts [69] 27.9% best-and-tied-at-points [68] 40.1% [78] 7726(13.6%) 0(0.0%) eval-errors ...herbie/develop/src/points.rkt:208:0 for-loop [88] 100.0% --------------------------------------------------------------------------- for-loop [63] 24.6% binary-search-floats [70] 75.4% [79] 2536(4.4%) 0(0.0%) pred .../herbie/develop/src/core/regimes.rkt:185:4 loop [87] 100.0% --------------------------------------------------------------------------- for-loop [89] 50.0% for-loop [71] 50.0% [80] 878(1.5%) 0(0.0%) matcher ...rbie/develop/src/core/matcher.rkt:168:2 for-loop [89] 50.0% rewriter [65] 50.0% --------------------------------------------------------------------------- generic-sort/key [67] 47.3% copying-mergesort [77] 52.7% [81] 588(1.0%) 0(0.0%) loop ...ket/collects/racket/private/sort.rkt:96:12 ??? [108] 100.0% --------------------------------------------------------------------------- best-and-tied-at-points [68] 100.0% [82] 354(0.6%) 354(0.6%) for-loop .../develop/src/core/alt-table.rkt:124:16 --------------------------------------------------------------------------- argmax [75] 100.0% [83] 320(0.6%) 0(0.0%) expression-cost .../develop/src/programs.rkt:168:0 compile [90] 100.0% --------------------------------------------------------------------------- override-at-pnts [69] 100.0% [84] 300(0.5%) 300(0.5%) for-loop .../develop/src/core/alt-table.rkt:146:43 --------------------------------------------------------------------------- for-loop [72] 100.0% [85] 298(0.5%) 298(0.5%) curried ...cket/collects/racket/function.rkt:71:18 --------------------------------------------------------------------------- *rules* [73] 100.0% [86] 246(0.4%) 0(0.0%) for-loop ...ies/herbie/develop/src/common.rkt:79:9 ormap [91] 100.0% --------------------------------------------------------------------------- setup-prog!32 [24] 7.1% pred [79] 14.7% ??? [1] 78.2% [87] 17276(30.3%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:167:2 loop [96] 48.1% loop [92] 33.4% make-exacts* [97] 14.7% for-loop [93] 2.0% make-exacts [94] 1.9% --------------------------------------------------------------------------- eval-errors [78] 100.0% [88] 7726(13.6%) 632(1.1%) for-loop ...es/herbie/develop/src/points.rkt:210:2 ??? [108] 68.0% ??? [113] 15.8% ulp-difference [110] 8.0% --------------------------------------------------------------------------- matcher [80] 100.0% [89] 878(1.5%) 0(0.0%) for-loop ...ie/develop/src/core/matcher.rkt:184:21 matcher [80] 100.0% --------------------------------------------------------------------------- expression-cost [83] 100.0% [90] 320(0.6%) 0(0.0%) compile ...s/herbie/develop/src/programs.rkt:145:0 hash-ref! [122] 100.0% --------------------------------------------------------------------------- for-loop [86] 100.0% [91] 246(0.4%) 0(0.0%) ormap ...et/collects/racket/private/map.rkt:141:13 flag-set? [95] 100.0% --------------------------------------------------------------------------- loop [87] 100.0% [92] 5772(10.1%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:125:2 loop [96] 44.5% make-exacts* [97] 35.5% loop [98] 20.0% --------------------------------------------------------------------------- loop [87] 100.0% [93] 346(0.6%) 0(0.0%) for-loop ...s/herbie/develop/src/points.rkt:182:19 for-loop [99] 100.0% --------------------------------------------------------------------------- loop [87] 100.0% [94] 320(0.6%) 0(0.0%) make-exacts ...herbie/develop/src/points.rkt:123:0 make-exacts* [97] 100.0% --------------------------------------------------------------------------- ormap [91] 100.0% [95] 246(0.4%) 246(0.4%) flag-set? ...es/herbie/develop/src/config.rkt:31:0 --------------------------------------------------------------------------- loop [92] 23.6% loop [87] 76.4% [96] 10870(19.1%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:108:4 loop [100] 100.0% --------------------------------------------------------------------------- make-exacts [94] 6.5% loop [92] 41.8% loop [87] 51.7% [97] 4904(8.6%) 0(0.0%) make-exacts* ...erbie/develop/src/points.rkt:105:0 eval-prog [101] 66.7% loop [100] 33.3% --------------------------------------------------------------------------- loop [92] 0.2% loop [98] 99.8% [98] 1156(2.0%) 1156(2.0%) loop ...ghtlies/herbie/develop/src/points.rkt:97:2 loop [98] 99.8% --------------------------------------------------------------------------- for-loop [93] 100.0% [99] 346(0.6%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:159:4 ??? [113] 100.0% --------------------------------------------------------------------------- make-exacts* [97] 0.4% loop [96] 0.4% map-enodes [151] 0.7% loop! [184] 0.8% for-loop [170] 1.0% map [54] 2.7% parse-loop14 [42] 3.4% for-loop [21] 5.6% ??? [134] 8.7% loop [100] 76.2% [100] 22814(40.0%) 298(0.5%) loop ...cket/collects/racket/private/map.rkt:40:19 loop [100] 76.2% hash-ref! [122] 9.1% ??? [103] 4.0% parse-loop14 [42] 2.8% ??? [108] 2.7% ulp-difference [110] 1.4% ??? [113] 1.1% foldl [105] 1.0% set-precompute! [104] 0.7% loop! [184] 0.7% bf* [125] 0.2% ??? [131] 0.0% --------------------------------------------------------------------------- ??? [154] 4.1% for-loop [43] 8.0% override-at-pnts [69] 16.3% best-and-tied-at-points [68] 28.5% make-exacts* [97] 43.2% [101] 7570(13.3%) 0(0.0%) eval-prog ...herbie/develop/src/programs.rkt:109:0 temp68_2 [102] 48.9% hash-ref! [122] 39.0% loop [167] 4.2% eval4 [106] 4.0% inductor [107] 4.0% --------------------------------------------------------------------------- f8 [40] 11.2% parse-loop14 [42] 23.2% eval-prog [101] 65.6% [102] 5638(9.9%) 0(0.0%) temp68_2 (unknown source) compile16 [109] 100.0% --------------------------------------------------------------------------- map [54] 25.1% loop [100] 74.9% [103] 1218(2.1%) 0(0.0%) ??? ...htlies/herbie/develop/src/points.rkt:229:26 ??? [108] 50.9% ??? [113] 24.6% ulp-difference [110] 24.5% --------------------------------------------------------------------------- loop [100] 100.0% [104] 1180(2.1%) 0(0.0%) set-precompute! ...lop/src/core/simplify.rkt:140:0 for-loop [111] 100.0% --------------------------------------------------------------------------- loop [100] 100.0% [105] 642(1.1%) 0(0.0%) foldl ...et/collects/racket/private/list.rkt:229:4 merge2 [112] 100.0% --------------------------------------------------------------------------- eval-prog [101] 100.0% [106] 302(0.5%) 0(0.0%) eval4 (unknown source) syntax-e [4] 100.0% --------------------------------------------------------------------------- eval-prog [101] 100.0% [107] 300(0.5%) 300(0.5%) inductor .../herbie/develop/src/programs.rkt:119:4 --------------------------------------------------------------------------- loop [81] 3.4% ??? [103] 3.6% for-loop [88] 30.2% loop [100] 62.9% [108] 17414(30.5%) 988(1.7%) ??? ...tlies/herbie/develop/src/programs.rkt:129:2 ??? [114] 62.3% ??? [113] 17.7% bf [116] 14.3% --------------------------------------------------------------------------- temp68_2 [102] 100.0% [109] 5638(9.9%) 0(0.0%) compile16 (unknown source) temp74_0 [115] 100.0% --------------------------------------------------------------------------- ??? [103] 24.3% loop [100] 25.1% for-loop [88] 50.6% [110] 1226(2.2%) 924(1.6%) ulp-difference ...erbie/develop/src/float.rkt:19:0 return/no-unsupplied [136] 24.6% --------------------------------------------------------------------------- set-precompute! [104] 100.0% [111] 1180(2.1%) 0(0.0%) for-loop ...ie/develop/src/core/simplify.rkt:142:2 update-leader! [178] 55.9% setfindf [117] 25.1% eval-const-expr [118] 19.0% --------------------------------------------------------------------------- foldl [105] 100.0% [112] 642(1.1%) 642(1.1%) merge2 .../herbie/develop/src/core/ematch.rkt:31:0 --------------------------------------------------------------------------- ??? [140] 0.8% ??? [103] 1.1% loop [13] 1.2% for-loop [99] 1.3% ??? [58] 1.8% for-loop [88] 4.4% for-loop [62] 5.5% loop [100] 10.3% ??? [108] 11.2% for-loop [50] 28.6% location-do [119] 34.1% [113] 27614(48.4%) 654(1.1%) ??? ...tract/private/arrow-higher-order.rkt:357:33 location-do [119] 34.1% ??? [120] 28.6% ->flonum [121] 24.6% approximate9 [2] 5.5% hash-ref! [122] 1.9% best-alt [126] 1.8% sample-multi-bounded [127] 1.3% --------------------------------------------------------------------------- ??? [108] 100.0% [114] 10842(19.0%) 1632(2.9%) ??? ...acket/collects/racket/private/kw.rkt:592:14 ??? [131] 51.0% ??? [124] 25.1% bf* [125] 8.8% --------------------------------------------------------------------------- compile16 [109] 100.0% [115] 5638(9.9%) 0(0.0%) temp74_0 (unknown source) expand-single [123] 94.5% compile-top9 [128] 5.5% --------------------------------------------------------------------------- ??? [108] 100.0% [116] 2496(4.4%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 new-mpfr [160] 71.6% ??? [163] 28.4% --------------------------------------------------------------------------- for-loop [111] 100.0% [117] 296(0.5%) 0(0.0%) setfindf ...es/herbie/develop/src/common.rkt:163:0 for-loop [129] 100.0% --------------------------------------------------------------------------- for-loop [111] 100.0% [118] 224(0.4%) 224(0.4%) eval-const-expr .../develop/src/programs.rkt:132:0 --------------------------------------------------------------------------- ??? [113] 28.2% location-do [119] 71.8% [119] 19336(33.9%) 0(0.0%) location-do ...erbie/develop/src/programs.rkt:90:0 location-do [119] 71.8% ??? [113] 28.2% --------------------------------------------------------------------------- ??? [113] 98.6% [120] 16016(28.1%) 0(0.0%) ??? ...s/herbie/develop/src/core/simplify.rkt:31:0 iterate-egraph!7 [130] 96.3% loop [141] 3.7% --------------------------------------------------------------------------- ??? [113] 100.0% [121] 6786(11.9%) 3678(6.5%) ->flonum ...s/herbie/develop/src/programs.rkt:36:0 list-member? [135] 26.4% return/no-unsupplied [136] 9.9% ??? [138] 9.4% --------------------------------------------------------------------------- map [54] 1.0% ??? [156] 1.8% loop [13] 2.6% ??? [134] 2.6% compile [90] 2.6% localize-error [36] 2.7% ??? [139] 2.8% ??? [137] 3.5% taylor-sqrt [28] 4.5% for-loop [17] 5.4% for-loop [15] 6.2% ??? [113] 10.5% eval-prog [101] 25.8% loop [100] 27.9% [122] 6042(10.6%) 320(0.6%) hash-ref! .../racket/private/more-scheme.rkt:376:2 bigfloat-hash [133] 25.8% ??? [134] 25.7% ??? [137] 10.5% simplify [33] 9.9% ??? [3] 6.2% parse-loop14 [42] 5.8% ??? [5] 5.4% ??? [139] 2.8% f8 [40] 2.7% ??? [140] 2.6% --------------------------------------------------------------------------- temp74_0 [115] 100.0% [123] 5330(9.3%) 0(0.0%) expand-single (unknown source) expand-capturing-lifts [132] 100.0% --------------------------------------------------------------------------- ??? [114] 100.0% [124] 2722(4.8%) 1802(3.2%) ??? ...herbie/develop/src/syntax/syntax.rkt:197:17 return/no-unsupplied [136] 22.7% ??? [138] 11.1% --------------------------------------------------------------------------- loop [100] 24.6% ??? [114] 75.4% [125] 1270(2.2%) 0(0.0%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [131] 100.0% --------------------------------------------------------------------------- ??? [113] 100.0% [126] 492(0.9%) 0(0.0%) best-alt .../herbie/develop/src/mainloop.rkt:109:0 loop [143] 62.6% argmins [145] 37.4% --------------------------------------------------------------------------- ??? [113] 100.0% [127] 346(0.6%) 0(0.0%) sample-multi-bounded ...evelop/src/points.rkt:44:0 for-loop [142] 100.0% --------------------------------------------------------------------------- temp74_0 [115] 100.0% [128] 308(0.5%) 0(0.0%) compile-top9 (unknown source) compile-forms31 [144] 100.0% --------------------------------------------------------------------------- setfindf [117] 100.0% [129] 296(0.5%) 296(0.5%) for-loop ...es/herbie/develop/src/common.rkt:164:2 --------------------------------------------------------------------------- ??? [120] 100.0% [130] 15420(27.0%) 0(0.0%) iterate-egraph!7 ...lop/src/core/simplify.rkt:55:0 one-iter [146] 92.3% map-enodes [151] 7.7% --------------------------------------------------------------------------- loop [100] 2.9% bf* [125] 18.1% ??? [114] 78.9% [131] 7006(12.3%) 2892(5.1%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfmul [147] 55.8% bfsqrt [157] 2.9% --------------------------------------------------------------------------- loop [167] 5.7% expand-single [123] 94.3% [132] 5650(9.9%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [148] 60.0% for-loop [189] 22.9% dispatch-transformer41 [150] 11.4% loop [167] 5.7% --------------------------------------------------------------------------- hash-ref! [122] 100.0% [133] 2950(5.2%) 0(0.0%) bigfloat-hash ...h/private/bigfloat/mpfr.rkt:167:0 bfcanonicalize [149] 88.0% sig+exp->bigfloat [155] 12.0% --------------------------------------------------------------------------- hash-ref! [122] 100.0% [134] 2294(4.0%) 0(0.0%) ??? ...tlies/herbie/develop/src/programs.rkt:153:5 loop [100] 86.1% hash-ref! [122] 13.9% --------------------------------------------------------------------------- ->flonum [121] 100.0% [135] 1794(3.1%) 1794(3.1%) list-member? ...llects/racket/private/set.rkt:24:0 --------------------------------------------------------------------------- ulp-difference [110] 18.9% ??? [124] 38.8% ->flonum [121] 42.3% [136] 1594(2.8%) 976(1.7%) return/no-unsupplied ...ct/private/arr-i.rkt:534:0 filter [152] 38.8% --------------------------------------------------------------------------- hash-ref! [122] 100.0% [137] 1590(2.8%) 0(0.0%) ??? ...es/herbie/develop/src/core/taylor.rkt:45:15 hash-ref! [122] 59.4% ??? [156] 21.0% simplify [33] 19.6% --------------------------------------------------------------------------- ??? [124] 23.7% for-loop [71] 26.2% ->flonum [121] 50.2% [138] 1276(2.2%) 1276(2.2%) ??? ...s/racket/contract/private/arr-i.rkt:1252:29 --------------------------------------------------------------------------- hash-ref! [122] 100.0% [139] 654(1.1%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:327:33 hash-ref! [122] 100.0% --------------------------------------------------------------------------- hash-ref! [122] 100.0% [140] 634(1.1%) 0(0.0%) ??? ...es/herbie/develop/src/core/taylor.rkt:68:15 ??? [113] 100.0% --------------------------------------------------------------------------- ??? [120] 100.0% [141] 596(1.0%) 0(0.0%) loop ...herbie/develop/src/core/simplify.rkt:184:2 for-loop [153] 100.0% --------------------------------------------------------------------------- sample-multi-bounded [127] 100.0% [142] 346(0.6%) 346(0.6%) for-loop ...ies/herbie/develop/src/points.rkt:47:4 --------------------------------------------------------------------------- best-alt [126] 100.0% [143] 308(0.5%) 0(0.0%) loop ...htlies/herbie/develop/src/common.rkt:130:2 ??? [154] 100.0% --------------------------------------------------------------------------- compile-top9 [128] 100.0% [144] 308(0.5%) 0(0.0%) compile-forms31 (unknown source) for-loop [189] 100.0% --------------------------------------------------------------------------- best-alt [126] 100.0% [145] 184(0.3%) 0(0.0%) argmins ...ies/herbie/develop/src/common.rkt:129:0 ??? [154] 100.0% --------------------------------------------------------------------------- iterate-egraph!7 [130] 100.0% [146] 14240(25.0%) 0(0.0%) one-iter ...bie/develop/src/core/simplify.rkt:66:0 for-loop [158] 55.4% for-loop [159] 44.6% --------------------------------------------------------------------------- ??? [131] 100.0% [147] 3908(6.9%) 0(0.0%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:821:4 new-mpfr [160] 91.7% ??? [163] 8.3% --------------------------------------------------------------------------- expand-capturing-lifts [132] 100.0% [148] 3390(5.9%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [161] 100.0% --------------------------------------------------------------------------- bigfloat-hash [133] 100.0% [149] 2596(4.6%) 2596(4.6%) bfcanonicalize .../private/bigfloat/mpfr.rkt:157:0 --------------------------------------------------------------------------- for-loop [189] 49.0% expand-capturing-lifts [132] 51.0% [150] 1266(2.2%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [162] 100.0% --------------------------------------------------------------------------- iterate-egraph!7 [130] 100.0% [151] 1180(2.1%) 0(0.0%) map-enodes ...ie/develop/src/core/egraph.rkt:140:0 loop [100] 100.0% --------------------------------------------------------------------------- return/no-unsupplied [136] 100.0% [152] 618(1.1%) 618(1.1%) filter ...t/collects/racket/private/list.rkt:256:2 --------------------------------------------------------------------------- loop [141] 100.0% [153] 596(1.0%) 0(0.0%) for-loop ...e/develop/src/core/simplify.rkt:177:29 for-loop [164] 100.0% --------------------------------------------------------------------------- argmins [145] 37.4% loop [143] 62.6% [154] 492(0.9%) 184(0.3%) ??? ...lies/herbie/develop/src/mainloop.rkt:111:19 eval-prog [101] 62.6% --------------------------------------------------------------------------- bigfloat-hash [133] 100.0% [155] 354(0.6%) 0(0.0%) sig+exp->bigfloat ...ivate/bigfloat/mpfr.rkt:387:0 new-mpfr [160] 100.0% --------------------------------------------------------------------------- ??? [137] 100.0% [156] 334(0.6%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:293:19 hash-ref! [122] 100.0% --------------------------------------------------------------------------- ??? [131] 100.0% [157] 206(0.4%) 0(0.0%) bfsqrt ...lib/math/private/bigfloat/mpfr.rkt:618:4 new-mpfr [160] 100.0% --------------------------------------------------------------------------- one-iter [146] 100.0% [158] 7896(13.9%) 0(0.0%) for-loop ...ie/develop/src/core/simplify.rkt:113:2 for-loop [165] 79.4% set [190] 12.7% match-e [166] 7.9% --------------------------------------------------------------------------- for-loop [159] 50.0% one-iter [146] 50.0% [159] 6344(11.1%) 1218(2.1%) for-loop ...ie/develop/src/core/simplify.rkt:76:12 for-loop [159] 50.0% match-e [166] 40.4% --------------------------------------------------------------------------- bfsqrt [157] 3.5% sig+exp->bigfloat [155] 6.0% bf [116] 30.2% bfmul [147] 60.4% [160] 5930(10.4%) 5930(10.4%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 --------------------------------------------------------------------------- lambda-clause-expander [148] 9.7% for-loop [189] 90.3% [161] 3390(5.9%) 0(0.0%) finish-bodys (unknown source) for-loop [189] 100.0% --------------------------------------------------------------------------- dispatch-transformer41 [150] 100.0% [162] 1266(2.2%) 320(0.6%) apply-transformer52 (unknown source) loop [167] 51.0% apply-transformer-in-context [169] 23.7% --------------------------------------------------------------------------- bfmul [147] 31.5% bf [116] 68.5% [163] 1034(1.8%) 1034(1.8%) ??? /home/p92/racket/collects/ffi/unsafe.rkt:898:4 --------------------------------------------------------------------------- for-loop [153] 100.0% [164] 596(1.0%) 296(0.5%) for-loop ...e/develop/src/core/simplify.rkt:164:13 for-loop [168] 50.3% --------------------------------------------------------------------------- for-loop [158] 100.0% [165] 6270(11.0%) 618(1.1%) for-loop ...bie/develop/src/core/simplify.rkt:98:4 loop! [184] 40.4% merge-egraph-nodes! [171] 30.6% mk-enode! [187] 14.3% substitute-e [174] 4.9% --------------------------------------------------------------------------- for-loop [177] 8.5% for-loop [158] 10.8% for-loop [159] 80.8% [166] 5746(10.1%) 654(1.1%) match-e ...herbie/develop/src/core/ematch.rkt:46:0 for-loop [170] 80.7% make-sequence [193] 8.0% --------------------------------------------------------------------------- loop [167] 4.2% expand-capturing-lifts [132] 4.2% eval-prog [101] 4.2% for-loop [189] 6.2% apply-transformer52 [162] 25.7% syntax-e/no-taint [14] 55.5% [167] 2518(4.4%) 0(0.0%) loop (unknown source) gf [172] 55.5% core-form-sym [173] 25.7% expand-id-application-form17 [175] 6.2% expand-capturing-lifts [132] 4.2% loop [167] 4.2% for-loop [189] 4.2% --------------------------------------------------------------------------- for-loop [164] 100.0% [168] 300(0.5%) 300(0.5%) for-loop ...e/develop/src/core/simplify.rkt:167:37 --------------------------------------------------------------------------- apply-transformer52 [162] 100.0% [169] 300(0.5%) 300(0.5%) apply-transformer-in-context (unknown source) --------------------------------------------------------------------------- match-e [166] 100.0% [170] 4790(8.4%) 2572(4.5%) for-loop ...rbie/develop/src/core/ematch.rkt:59:11 for-loop [177] 26.9% loop [100] 13.4% list-cartesian-product [181] 9.6% --------------------------------------------------------------------------- for-loop [179] 7.9% for-loop [165] 92.1% [171] 1918(3.4%) 0(0.0%) merge-egraph-nodes! ...p/src/core/egraph.rkt:153:0 for-loop [179] 65.4% update-leader! [178] 34.6% --------------------------------------------------------------------------- loop [167] 100.0% [172] 1552(2.7%) 620(1.1%) gf (unknown source) propagation-apply-shifted [180] 40.1% propagation-apply [182] 20.0% --------------------------------------------------------------------------- loop [167] 100.0% [173] 646(1.1%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [176] 100.0% --------------------------------------------------------------------------- for-loop [165] 100.0% [174] 310(0.5%) 0(0.0%) substitute-e ...e/develop/src/core/ematch.rkt:71:0 for-loop [183] 100.0% --------------------------------------------------------------------------- loop [167] 100.0% [175] 310(0.5%) 0(0.0%) expand-id-application-form17 (unknown source) syntax-e/no-taint [14] 100.0% --------------------------------------------------------------------------- free-identifier=? [25] 13.7% expand-identifier [7] 13.9% core-form-sym [173] 29.8% expand-implicit [196] 42.7% [176] 2166(3.8%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [185] 100.0% --------------------------------------------------------------------------- for-loop [170] 100.0% [177] 1620(2.8%) 0(0.0%) for-loop ...rbie/develop/src/core/ematch.rkt:65:37 match-e [166] 60.0% ??? [188] 40.0% --------------------------------------------------------------------------- for-loop [111] 49.8% merge-egraph-nodes! [171] 50.2% [178] 1324(2.3%) 0(0.0%) update-leader! ...evelop/src/core/egraph.rkt:218:0 for-loop [186] 100.0% --------------------------------------------------------------------------- merge-egraph-nodes! [171] 100.0% [179] 1254(2.2%) 0(0.0%) for-loop ...bie/develop/src/core/egraph.rkt:201:10 loop! [184] 88.0% merge-egraph-nodes! [171] 12.0% --------------------------------------------------------------------------- gf [172] 100.0% [180] 622(1.1%) 622(1.1%) propagation-apply-shifted (unknown source) --------------------------------------------------------------------------- list-cartesian-product [181] 24.1% for-loop [170] 75.9% [181] 618(1.1%) 618(1.1%) list-cartesian-product ...src/core/ematch.rkt:20:0 list-cartesian-product [181] 24.1% --------------------------------------------------------------------------- gf [172] 100.0% [182] 310(0.5%) 310(0.5%) propagation-apply (unknown source) --------------------------------------------------------------------------- substitute-e [174] 100.0% [183] 310(0.5%) 0(0.0%) for-loop ...rbie/develop/src/core/ematch.rkt:80:24 mk-enode! [187] 100.0% --------------------------------------------------------------------------- for-loop [179] 20.6% loop [100] 35.3% for-loop [165] 44.2% [184] 3784(6.6%) 938(1.6%) loop! ...s/herbie/develop/src/core/enode.rkt:190:2 loop [100] 43.2% set [190] 21.3% custom-set-union [192] 20.3% update-en-expr [195] 4.3% --------------------------------------------------------------------------- resolve+shift28 [176] 100.0% [185] 2166(3.8%) 322(0.6%) fallback-loop (unknown source) for-loop [189] 85.1% --------------------------------------------------------------------------- update-leader! [178] 100.0% [186] 1324(2.3%) 0(0.0%) for-loop ...rbie/develop/src/core/egraph.rkt:223:6 for-loop [191] 100.0% --------------------------------------------------------------------------- for-loop [183] 25.7% for-loop [165] 74.3% [187] 1204(2.1%) 610(1.1%) mk-enode! ...bie/develop/src/core/egraph.rkt:102:0 hash-has-key? [194] 49.3% --------------------------------------------------------------------------- for-loop [177] 100.0% [188] 648(1.1%) 360(0.6%) ??? ...ies/herbie/develop/src/core/ematch.rkt:50:5 make-sequence [193] 44.4% --------------------------------------------------------------------------- loop [167] 1.7% compile-forms31 [144] 4.9% fallback-loop [185] 11.2% expand-capturing-lifts [132] 14.7% for-loop [189] 15.7% finish-bodys [161] 48.3% [189] 6254(11.0%) 3092(5.4%) for-loop (unknown source) finish-bodys [161] 43.7% for-loop [189] 15.7% expand-implicit [196] 8.9% dispatch-transformer41 [150] 2.0% module-path-index-resolve [200] 1.7% syntax-e [4] 1.1% loop [167] 0.4% expand-identifier [7] 0.3% --------------------------------------------------------------------------- for-loop [158] 43.8% loop! [184] 56.2% [190] 2296(4.0%) 1632(2.9%) set ...collects/racket/private/set-types.rkt:981:0 for-loop [198] 28.9% --------------------------------------------------------------------------- for-loop [186] 100.0% [191] 1324(2.3%) 0(0.0%) for-loop ...rbie/develop/src/core/egraph.rkt:224:8 hash-update! [197] 100.0% --------------------------------------------------------------------------- loop! [184] 100.0% [192] 936(1.6%) 334(0.6%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [201] 32.3% for-loop [202] 32.1% --------------------------------------------------------------------------- ??? [188] 32.0% match-e [166] 68.0% [193] 900(1.6%) 900(1.6%) make-sequence ...ects/racket/private/for.rkt:528:2 --------------------------------------------------------------------------- mk-enode! [187] 100.0% [194] 594(1.0%) 594(1.0%) hash-has-key? ...ket/private/more-scheme.rkt:371:2 --------------------------------------------------------------------------- loop! [184] 100.0% [195] 322(0.6%) 0(0.0%) update-en-expr ...evelop/src/core/egraph.rkt:212:0 for-loop [199] 100.0% --------------------------------------------------------------------------- for-loop [189] 100.0% [196] 1574(2.8%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [176] 58.7% datum->syntax6 [204] 41.3% --------------------------------------------------------------------------- for-loop [191] 100.0% [197] 1324(2.3%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [203] 100.0% --------------------------------------------------------------------------- set [190] 100.0% [198] 664(1.2%) 664(1.2%) for-loop ...cts/racket/private/set-types.rkt:937:4 --------------------------------------------------------------------------- update-en-expr [195] 100.0% [199] 322(0.6%) 322(0.6%) for-loop ...rbie/develop/src/core/egraph.rkt:214:6 --------------------------------------------------------------------------- for-loop [189] 100.0% [200] 320(0.6%) 0(0.0%) module-path-index-resolve (unknown source) standard-module-name-resolver [205]100.0% --------------------------------------------------------------------------- custom-set-union [192] 100.0% [201] 302(0.5%) 0(0.0%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [206] 100.0% --------------------------------------------------------------------------- custom-set-union [192] 100.0% [202] 300(0.5%) 300(0.5%) for-loop ...cts/racket/private/set-types.rkt:152:2 --------------------------------------------------------------------------- hash-update! [197] 100.0% [203] 1324(2.3%) 0(0.0%) ??? ...s/herbie/develop/src/core/egraph.rkt:226:24 for-loop [207] 100.0% --------------------------------------------------------------------------- expand-implicit [196] 100.0% [204] 650(1.1%) 650(1.1%) datum->syntax6 (unknown source) --------------------------------------------------------------------------- module-path-index-resolve [200] 100.0% [205] 320(0.6%) 320(0.6%) standard-module-name-resolver (unknown source) --------------------------------------------------------------------------- for-loop [201] 100.0% [206] 302(0.5%) 302(0.5%) for-loop ...cts/racket/private/set-types.rkt:178:5 --------------------------------------------------------------------------- ??? [203] 100.0% [207] 1324(2.3%) 1324(2.3%) for-loop ...bie/develop/src/core/egraph.rkt:227:26 ---------------------------------------------------------------------------