Profiling results ----------------- Total cpu time observed: 111160ms (out of 112140ms) Number of samples taken: 340 (once every 327ms) (Hiding functions with self<1.0% and local<2.0%: 10 of 213 hidden) ============================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ============================================================================== run [17] 50.0% [1] 111160(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [8] 50.0% run-improve39 [9] 30.3% loop [23] 18.6% get-final-combination [12] 1.1% ------------------------------------------------------------------------------ ??? [91] 100.0% [2] 4918(4.4%) 0(0.0%) approximate9 ...e/develop/src/core/taylor.rkt:12:0 loop [10] 87.2% taylor [87] 6.8% for-loop [16] 6.0% ------------------------------------------------------------------------------ hash-ref! [76] 100.0% [3] 3098(2.8%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:292:23 for-loop [11] 100.0% ------------------------------------------------------------------------------ hash-ref! [76] 100.0% [4] 2470(2.2%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:282:26 for-loop [13] 100.0% ------------------------------------------------------------------------------ match-e [140] 100.0% [5] 1848(1.7%) 0(0.0%) variable? ...e/develop/src/syntax/syntax.rkt:713:0 ??? [38] 100.0% ------------------------------------------------------------------------------ loop [19] 25.5% for-loop [146] 74.5% [6] 1216(1.1%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [14] 100.0% ------------------------------------------------------------------------------ hash-ref! [76] 100.0% [7] 334(0.3%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:405:23 for-loop [15] 100.0% ------------------------------------------------------------------------------ ??? [1] 100.0% [8] 111160(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [17] 100.0% ------------------------------------------------------------------------------ ??? [1] 100.0% [9] 67352(60.6%) 0(0.0%) run-improve39 ...ie/develop/src/mainloop.rkt:286:0 for-loop [18] 97.6% setup-prog!32 [21] 1.9% ------------------------------------------------------------------------------ approximate9 [2] 100.0% [10] 4290(3.9%) 0(0.0%) loop ...es/herbie/develop/src/core/taylor.rkt:86:4 hash-ref! [76] 57.5% ??? [91] 42.5% ------------------------------------------------------------------------------ ??? [3] 100.0% [11] 3098(2.8%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:295:27 hash-ref! [76] 100.0% ------------------------------------------------------------------------------ ??? [1] 100.0% [12] 2478(2.2%) 0(0.0%) get-final-combination ...op/src/mainloop.rkt:309:0 infer-splitpoints [20] 100.0% ------------------------------------------------------------------------------ ??? [4] 100.0% [13] 2470(2.2%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:282:52 hash-ref! [76] 87.3% ??? [97] 12.7% ------------------------------------------------------------------------------ expand-id-application-form17 [25] 24.8% gf [175] 25.0% syntax-e [6] 50.2% [14] 2420(2.2%) 0(0.0%) syntax-e/no-taint (unknown source) loop [19] 100.0% ------------------------------------------------------------------------------ ??? [7] 100.0% [15] 334(0.3%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:408:30 hash-ref! [76] 100.0% ------------------------------------------------------------------------------ approximate9 [2] 100.0% [16] 294(0.3%) 0(0.0%) for-loop ...rbie/develop/src/core/taylor.rkt:29:18 taylor [87] 100.0% ------------------------------------------------------------------------------ profile-thunk16 [8] 100.0% [17] 111160(100.0%) 0(0.0%) run ...racket/share/pkgs/profile-lib/main.rkt:39:2 ??? [1] 100.0% ------------------------------------------------------------------------------ run-improve39 [9] 100.0% [18] 65764(59.2%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:303:8 run-iter! [22] 100.0% ------------------------------------------------------------------------------ loop [19] 1.3% syntax->list [188] 3.1% lambda-clause-expander [127] 3.1% gf [175] 5.3% apply-transformer52 [161] 9.2% eval-prog [73] 10.2% for-loop [146] 18.9% syntax-e/no-taint [14] 49.0% [19] 3362(3.0%) 618(0.6%) loop (unknown source) gf [175] 53.0% expand-id-application-form17 [25] 18.9% expand-capturing-lifts [114] 10.2% dispatch-transformer41 [153] 3.1% syntax-e [6] 3.1% loop [19] 1.3% ------------------------------------------------------------------------------ get-final-combination [12] 100.0% [20] 2478(2.2%) 0(0.0%) infer-splitpoints ...lop/src/core/regimes.rkt:32:0 for-loop [24] 100.0% ------------------------------------------------------------------------------ run-improve39 [9] 100.0% [21] 1282(1.2%) 0(0.0%) setup-prog!32 ...bie/develop/src/mainloop.rkt:63:0 loop [23] 100.0% ------------------------------------------------------------------------------ for-loop [18] 100.0% [22] 65764(59.2%) 0(0.0%) run-iter! ...herbie/develop/src/mainloop.rkt:267:0 simplify! [26] 50.6% finalize-iter! [27] 28.8% gen-rewrites! [29] 7.5% gen-series! [30] 7.5% localize-error [32] 3.3% choose-best-alt! [33] 2.3% ------------------------------------------------------------------------------ setup-prog!32 [21] 3.0% ??? [1] 97.0% [23] 42612(38.3%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:166:2 loop [36] 67.4% loop [28] 30.4% make-exacts [34] 0.8% make-exacts* [39] 0.7% for-loop [35] 0.7% ------------------------------------------------------------------------------ infer-splitpoints [20] 100.0% [24] 2478(2.2%) 0(0.0%) for-loop ...rbie/develop/src/core/regimes.rkt:44:6 option-on-expr [31] 100.0% ------------------------------------------------------------------------------ loop [19] 100.0% [25] 934(0.8%) 0(0.0%) expand-id-application-form17 (unknown source) syntax-e/no-taint [14] 64.2% resolve+shift28 [139] 35.8% ------------------------------------------------------------------------------ run-iter! [22] 100.0% [26] 33272(29.9%) 0(0.0%) simplify! ...herbie/develop/src/mainloop.rkt:181:0 for-loop [37] 100.0% ------------------------------------------------------------------------------ run-iter! [22] 100.0% [27] 18920(17.0%) 0(0.0%) finalize-iter! ...e/develop/src/mainloop.rkt:221:0 ??? [38] 100.0% ------------------------------------------------------------------------------ loop [23] 100.0% [28] 12974(11.7%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:124:2 loop [36] 58.9% make-exacts* [39] 41.1% ------------------------------------------------------------------------------ run-iter! [22] 100.0% [29] 4936(4.4%) 0(0.0%) gen-rewrites! ...ie/develop/src/mainloop.rkt:164:0 for-loop [40] 100.0% ------------------------------------------------------------------------------ run-iter! [22] 100.0% [30] 4918(4.4%) 0(0.0%) gen-series! ...rbie/develop/src/mainloop.rkt:151:0 for-loop [41] 100.0% ------------------------------------------------------------------------------ for-loop [24] 100.0% [31] 2478(2.2%) 0(0.0%) option-on-expr ...velop/src/core/regimes.rkt:112:0 for-loop [42] 75.5% debug-print [98] 12.3% sort-context-on-expr [44] 12.1% ------------------------------------------------------------------------------ run-iter! [22] 100.0% [32] 2184(2.0%) 0(0.0%) localize-error ...velop/src/core/localize.rkt:47:0 hash-ref! [76] 85.5% ??? [50] 14.5% ------------------------------------------------------------------------------ run-iter! [22] 100.0% [33] 1534(1.4%) 0(0.0%) choose-best-alt! ...develop/src/mainloop.rkt:113:0 ??? [38] 100.0% ------------------------------------------------------------------------------ loop [23] 100.0% [34] 320(0.3%) 0(0.0%) make-exacts ...herbie/develop/src/points.rkt:122:0 make-exacts* [39] 100.0% ------------------------------------------------------------------------------ loop [23] 100.0% [35] 302(0.3%) 0(0.0%) for-loop ...s/herbie/develop/src/points.rkt:181:19 for-loop [43] 100.0% ------------------------------------------------------------------------------ loop [28] 21.0% loop [23] 79.0% [36] 36336(32.7%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:107:4 loop [71] 100.0% ------------------------------------------------------------------------------ simplify! [26] 100.0% [37] 33272(29.9%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:185:6 for-loop [45] 100.0% ------------------------------------------------------------------------------ match-e [140] 2.5% substitute-e [147] 2.7% choose-best-alt! [33] 6.5% variable? [5] 7.9% finalize-iter! [27] 80.4% [38] 23534(21.2%) 2780(2.5%) ??? ...contract/private/arrow-val-first.rkt:388:18 for-loop [46] 80.4% ??? [49] 6.5% ------------------------------------------------------------------------------ loop [23] 5.3% make-exacts [34] 5.4% loop [28] 89.4% [39] 5974(5.4%) 0(0.0%) make-exacts* ...erbie/develop/src/points.rkt:104:0 loop [71] 100.0% ------------------------------------------------------------------------------ gen-rewrites! [29] 100.0% [40] 4936(4.4%) 0(0.0%) for-loop ...herbie/develop/src/mainloop.rkt:169:11 ??? [47] 100.0% ------------------------------------------------------------------------------ gen-series! [30] 100.0% [41] 4918(4.4%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:157:7 taylor-alt [48] 100.0% ------------------------------------------------------------------------------ option-on-expr [31] 100.0% [42] 1872(1.7%) 0(0.0%) for-loop ...bie/develop/src/core/regimes.rkt:120:4 errors [64] 100.0% ------------------------------------------------------------------------------ for-loop [35] 100.0% [43] 302(0.3%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:158:4 ??? [91] 100.0% ------------------------------------------------------------------------------ option-on-expr [31] 100.0% [44] 300(0.3%) 0(0.0%) sort-context-on-expr ...evelop/src/points.rkt:90:0 ??? [50] 100.0% ------------------------------------------------------------------------------ for-loop [37] 100.0% [45] 33272(29.9%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:209:8 ??? [91] 100.0% ------------------------------------------------------------------------------ ??? [38] 100.0% [46] 18920(17.0%) 0(0.0%) for-loop ...ie/develop/src/core/alt-table.rkt:51:2 atab-add-altn [51] 93.6% loop [54] 6.4% ------------------------------------------------------------------------------ for-loop [40] 100.0% [47] 4936(4.4%) 0(0.0%) ??? ...ies/herbie/develop/src/alternative.rkt:60:0 rewriter [52] 100.0% ------------------------------------------------------------------------------ for-loop [41] 100.0% [48] 4918(4.4%) 0(0.0%) taylor-alt ...erbie/develop/src/mainloop.rkt:136:0 for-loop [53] 100.0% ------------------------------------------------------------------------------ ??? [38] 100.0% [49] 1534(1.4%) 0(0.0%) ??? .../herbie/develop/src/core/alt-table.rkt:54:0 ??? [91] 100.0% ------------------------------------------------------------------------------ sort-context-on-expr [44] 48.7% localize-error [32] 51.3% [50] 616(0.6%) 0(0.0%) ??? ...cket/collects/racket/private/sort.rkt:369:3 generic-sort/key [55] 51.3% loop [56] 48.7% ------------------------------------------------------------------------------ for-loop [46] 100.0% [51] 17710(15.9%) 0(0.0%) atab-add-altn ...elop/src/core/alt-table.rkt:210:0 best-and-tied-at-points [57] 53.3% override-at-pnts [58] 46.7% ------------------------------------------------------------------------------ ??? [47] 31.2% matcher [65] 68.8% [52] 4936(4.4%) 0(0.0%) rewriter ...bie/develop/src/core/matcher.rkt:131:2 for-loop [59] 98.0% *rules* [62] 2.0% ------------------------------------------------------------------------------ taylor-alt [48] 100.0% [53] 4918(4.4%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:142:6 ??? [91] 100.0% ------------------------------------------------------------------------------ for-loop [46] 100.0% [54] 1210(1.1%) 312(0.3%) loop ...erbie/develop/src/core/alt-table.rkt:184:2 map [103] 24.8% loop [61] 24.8% argmax [63] 24.6% ------------------------------------------------------------------------------ ??? [50] 100.0% [55] 316(0.3%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [60] 100.0% ------------------------------------------------------------------------------ ??? [50] 100.0% [56] 300(0.3%) 0(0.0%) loop ...ket/collects/racket/private/sort.rkt:96:12 ??? [75] 100.0% ------------------------------------------------------------------------------ atab-add-altn [51] 100.0% [57] 9440(8.5%) 0(0.0%) best-and-tied-at-points ...ore/alt-table.rkt:122:0 errors [64] 93.6% for-loop [67] 6.4% ------------------------------------------------------------------------------ atab-add-altn [51] 100.0% [58] 8270(7.4%) 0(0.0%) override-at-pnts ...p/src/core/alt-table.rkt:145:0 errors [64] 96.1% in-pcontext [68] 3.9% ------------------------------------------------------------------------------ rewriter [52] 100.0% [59] 4936(4.4%) 598(0.5%) for-loop ...ie/develop/src/core/matcher.rkt:134:10 matcher [65] 70.8% type-of [66] 26.2% ------------------------------------------------------------------------------ generic-sort/key [55] 100.0% [60] 316(0.3%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 errors-score [69] 100.0% ------------------------------------------------------------------------------ loop [54] 6.7% loop [61] 93.3% [61] 300(0.3%) 300(0.3%) loop ...p92/racket/collects/racket/list.rkt:434:28 loop [61] 93.3% ------------------------------------------------------------------------------ rewriter [52] 100.0% [62] 300(0.3%) 0(0.0%) *rules* ...rbie/develop/src/syntax/rules.rkt:643:0 for-loop [70] 100.0% ------------------------------------------------------------------------------ loop [54] 100.0% [63] 298(0.3%) 0(0.0%) argmax ...92/racket/collects/racket/list.rkt:766:0 for-loop [142] 100.0% ------------------------------------------------------------------------------ ??? [129] 7.6% for-loop [42] 9.3% override-at-pnts [58] 39.4% best-and-tied-at-points [57] 43.8% [64] 20188(18.2%) 0(0.0%) errors ...lies/herbie/develop/src/points.rkt:207:0 for-loop [72] 68.2% eval-prog [73] 31.8% ------------------------------------------------------------------------------ for-loop [74] 50.0% for-loop [59] 50.0% [65] 4936(4.4%) 0(0.0%) matcher ...rbie/develop/src/core/matcher.rkt:168:2 for-loop [74] 50.0% rewriter [52] 50.0% ------------------------------------------------------------------------------ for-loop [59] 100.0% [66] 4038(3.6%) 0(0.0%) type-of .../herbie/develop/src/type-check.rkt:34:0 table-ref [177] 38.9% ??? [178] 38.7% for-loop [194] 15.0% ...velop/src/common.rkt:48:2 [148] 7.4% ------------------------------------------------------------------------------ best-and-tied-at-points [57] 100.0% [67] 604(0.5%) 604(0.5%) for-loop .../develop/src/core/alt-table.rkt:124:16 ------------------------------------------------------------------------------ override-at-pnts [58] 100.0% [68] 324(0.3%) 324(0.3%) in-pcontext .../herbie/develop/src/points.rkt:83:0 ------------------------------------------------------------------------------ copying-mergesort [60] 100.0% [69] 316(0.3%) 0(0.0%) errors-score ...erbie/develop/src/points.rkt:217:0 loop [71] 100.0% ------------------------------------------------------------------------------ *rules* [62] 100.0% [70] 300(0.3%) 300(0.3%) for-loop ...ies/herbie/develop/src/common.rkt:92:9 ------------------------------------------------------------------------------ errors-score [69] 0.0% map [103] 0.1% for-loop [144] 0.3% parse-loop14 [95] 0.5% make-exacts* [39] 0.5% ??? [89] 0.6% loop [36] 1.2% loop! [160] 1.4% loop [71] 95.2% [71] 48250(43.4%) 622(0.6%) loop ...cket/collects/racket/private/map.rkt:40:19 loop [71] 95.2% ??? [75] 1.7% loop! [160] 1.4% hash-ref! [76] 0.8% foldl [78] 0.3% parse-loop14 [95] 0.3% set-precompute! [80] 0.1% ??? [92] 0.1% ??? [91] 0.0% ------------------------------------------------------------------------------ errors [64] 100.0% [72] 13768(12.4%) 1836(1.7%) for-loop ...es/herbie/develop/src/points.rkt:210:4 ??? [75] 82.2% ??? [91] 2.3% ??? [79] 2.2% ------------------------------------------------------------------------------ errors [64] 100.0% [73] 6420(5.8%) 0(0.0%) eval-prog ...herbie/develop/src/programs.rkt:109:0 temp68_2 [77] 52.8% f8 [93] 32.9% loop [19] 9.5% hash-ref! [76] 4.8% ------------------------------------------------------------------------------ matcher [65] 100.0% [74] 4936(4.4%) 0(0.0%) for-loop ...ie/develop/src/core/matcher.rkt:184:21 matcher [65] 100.0% ------------------------------------------------------------------------------ loop [56] 0.6% for-loop [72] 21.2% loop [71] 78.2% [75] 53274(47.9%) 2346(2.1%) ??? ...tlies/herbie/develop/src/programs.rkt:129:2 ??? [81] 90.3% bf [85] 4.7% ??? [91] 0.6% ------------------------------------------------------------------------------ for-loop [15] 0.5% map [103] 0.8% eval-prog [73] 1.6% ??? [97] 2.7% for-loop [13] 6.3% loop [10] 7.9% ??? [84] 9.3% localize-error [32] 10.5% for-loop [11] 17.6% loop [71] 20.8% ??? [91] 22.1% [76] 6468(5.8%) 310(0.3%) hash-ref! .../racket/private/more-scheme.rkt:376:2 parse-loop14 [95] 18.4% ??? [3] 17.6% ??? [84] 15.1% simplify [83] 15.1% f8 [93] 10.5% ??? [86] 7.9% ??? [4] 7.8% ??? [89] 3.2% taylor [87] 2.3% ??? [7] 0.5% ------------------------------------------------------------------------------ f8 [93] 5.6% parse-loop14 [95] 29.5% eval-prog [73] 64.9% [77] 5226(4.7%) 0(0.0%) temp68_2 (unknown source) compile16 [82] 100.0% ------------------------------------------------------------------------------ loop [71] 100.0% [78] 640(0.6%) 314(0.3%) foldl ...et/collects/racket/private/list.rkt:229:4 merge2 [88] 50.9% ------------------------------------------------------------------------------ for-loop [72] 100.0% [79] 300(0.3%) 300(0.3%) ??? ...ket/collects/racket/private/for.rkt:1208:14 ------------------------------------------------------------------------------ loop [71] 100.0% [80] 298(0.3%) 0(0.0%) set-precompute! ...lop/src/core/simplify.rkt:140:0 for-loop [90] 100.0% ------------------------------------------------------------------------------ ??? [75] 100.0% [81] 48104(43.3%) 7672(6.9%) ??? ...acket/collects/racket/private/kw.rkt:592:14 ??? [92] 77.0% ??? [96] 5.7% ------------------------------------------------------------------------------ temp68_2 [77] 100.0% [82] 5226(4.7%) 0(0.0%) compile16 (unknown source) temp74_0 [94] 100.0% ------------------------------------------------------------------------------ first-nonzero-exp [133] 6.8% taylor-invert [120] 7.7% hash-ref! [76] 85.5% [83] 4318(3.9%) 0(0.0%) simplify ...erbie/develop/src/core/reduce.rkt:16:0 parse-loop14 [95] 64.2% f8 [93] 29.0% debug-print [98] 6.8% ------------------------------------------------------------------------------ hash-ref! [76] 100.0% [84] 3690(3.3%) 0(0.0%) ??? ...es/herbie/develop/src/core/taylor.rkt:44:15 hash-ref! [76] 83.7% ??? [97] 16.3% ------------------------------------------------------------------------------ ??? [75] 100.0% [85] 2524(2.3%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 new-mpfr [115] 100.0% ------------------------------------------------------------------------------ hash-ref! [76] 100.0% [86] 2468(2.2%) 0(0.0%) ??? ...es/herbie/develop/src/core/taylor.rkt:67:15 ??? [91] 100.0% ------------------------------------------------------------------------------ for-loop [16] 6.3% hash-ref! [76] 8.1% approximate9 [2] 9.0% map [103] 17.1% taylor [87] 59.5% [87] 928(0.8%) 0(0.0%) taylor ...herbie/develop/src/core/taylor.rkt:163:0 taylor [87] 59.5% map [103] 32.4% debug7 [99] 8.1% ------------------------------------------------------------------------------ foldl [78] 100.0% [88] 326(0.3%) 326(0.3%) merge2 .../herbie/develop/src/core/ematch.rkt:31:0 ------------------------------------------------------------------------------ hash-ref! [76] 100.0% [89] 310(0.3%) 0(0.0%) ??? ...tlies/herbie/develop/src/programs.rkt:153:5 loop [71] 100.0% ------------------------------------------------------------------------------ set-precompute! [80] 100.0% [90] 298(0.3%) 298(0.3%) for-loop ...ie/develop/src/core/simplify.rkt:142:2 ------------------------------------------------------------------------------ ??? [75] 0.4% for-loop [43] 0.7% for-loop [72] 0.8% loop [10] 1.5% loop [71] 1.6% ??? [86] 2.0% ??? [49] 3.4% for-loop [53] 4.3% for-loop [45] 40.6% location-do [100] 44.8% [91] 40994(36.9%) 300(0.3%) ??? ...tract/private/arrow-higher-order.rkt:357:33 location-do [100] 44.8% ??? [101] 40.2% approximate9 [2] 4.3% hash-ref! [76] 3.5% best-alt [104] 3.4% ->flonum [107] 2.7% ------------------------------------------------------------------------------ loop [71] 4.0% ??? [81] 96.0% [92] 38618(34.7%) 35882(32.3%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfadd [105] 3.6% bfcos [106] 3.5% ------------------------------------------------------------------------------ map [103] 7.4% eval-prog [73] 12.7% simplify [83] 16.6% f8 [93] 27.7% hash-ref! [76] 35.7% [93] 5232(4.7%) 610(0.5%) f8 ...et/collects/racket/match/compiler.rkt:507:40 map [103] 54.1% f8 [93] 27.7% table-ref [177] 9.7% temp68_2 [77] 5.6% ------------------------------------------------------------------------------ compile16 [82] 100.0% [94] 5226(4.7%) 0(0.0%) temp74_0 (unknown source) expand-single [102] 94.3% compile-top9 [112] 5.7% ------------------------------------------------------------------------------ loop [71] 1.6% parse-loop14 [95] 21.2% simplify [83] 37.0% hash-ref! [76] 40.3% [95] 4640(4.2%) 602(0.5%) parse-loop14 ...s/racket/match/compiler.rkt:418:15 loop [71] 41.9% temp68_2 [77] 23.4% parse-loop14 [95] 21.2% eval [108] 8.7% ------------------------------------------------------------------------------ ??? [81] 100.0% [96] 2750(2.5%) 1196(1.1%) ??? ...herbie/develop/src/syntax/syntax.rkt:195:17 return/no-unsupplied [187] 33.6% ??? [109] 11.8% list-member? [111] 11.1% ------------------------------------------------------------------------------ ??? [84] 48.9% for-loop [13] 51.1% [97] 1230(1.1%) 300(0.3%) ??? ...s/herbie/develop/src/core/taylor.rkt:285:19 hash-ref! [76] 75.6% ------------------------------------------------------------------------------ simplify [83] 48.8% option-on-expr [31] 51.2% [98] 598(0.5%) 292(0.3%) debug-print .../herbie/develop/src/debug.rkt:107:0 for-loop [110] 51.2% ------------------------------------------------------------------------------ taylor [87] 100.0% [99] 300(0.3%) 300(0.3%) debug7 ...tlies/herbie/develop/src/debug.rkt:102:0 ------------------------------------------------------------------------------ location-do [100] 38.2% ??? [91] 61.8% [100] 38190(34.4%) 0(0.0%) location-do ...erbie/develop/src/programs.rkt:90:0 ??? [91] 61.8% location-do [100] 38.2% ------------------------------------------------------------------------------ ??? [91] 99.1% [101] 33278(29.9%) 0(0.0%) ??? ...s/herbie/develop/src/core/simplify.rkt:31:0 iterate-egraph!7 [113] 91.7% loop [116] 7.3% mk-egraph [122] 1.0% ------------------------------------------------------------------------------ temp74_0 [94] 100.0% [102] 4926(4.4%) 0(0.0%) expand-single (unknown source) expand-capturing-lifts [114] 100.0% ------------------------------------------------------------------------------ loop [54] 7.4% taylor [87] 22.9% f8 [93] 69.7% [103] 4056(3.6%) 0(0.0%) map ...acket/collects/racket/private/map.rkt:35:13 loop [71] 45.9% taylor [87] 11.5% taylor-invert [120] 11.4% simplify* [119] 10.1% f8 [93] 9.6% hash-ref! [76] 7.5% ??? [123] 4.0% ------------------------------------------------------------------------------ ??? [91] 100.0% [104] 1534(1.4%) 0(0.0%) best-alt .../herbie/develop/src/mainloop.rkt:108:0 loop [118] 79.8% argmins [124] 20.2% ------------------------------------------------------------------------------ ??? [92] 100.0% [105] 1386(1.2%) 0(0.0%) bfadd ...-lib/math/private/bigfloat/mpfr.rkt:821:4 ??? [117] 75.6% new-mpfr [115] 24.4% ------------------------------------------------------------------------------ ??? [92] 100.0% [106] 1350(1.2%) 0(0.0%) bfcos ...-lib/math/private/bigfloat/mpfr.rkt:618:4 ??? [117] 76.1% new-mpfr [115] 23.9% ------------------------------------------------------------------------------ ??? [91] 100.0% [107] 1268(1.1%) 936(0.8%) ->flonum ...s/herbie/develop/src/programs.rkt:36:0 return/no-unsupplied [187] 26.2% ------------------------------------------------------------------------------ parse-loop14 [95] 100.0% [108] 628(0.6%) 0(0.0%) eval (unknown source) namespace-syntax-introduce3 [121] 100.0% ------------------------------------------------------------------------------ ??? [96] 100.0% [109] 324(0.3%) 324(0.3%) ??? ...s/racket/contract/private/arr-i.rkt:1252:29 ------------------------------------------------------------------------------ debug-print [98] 100.0% [110] 306(0.3%) 306(0.3%) for-loop ...ies/herbie/develop/src/debug.rkt:113:2 ------------------------------------------------------------------------------ ??? [96] 100.0% [111] 306(0.3%) 306(0.3%) list-member? ...llects/racket/private/set.rkt:24:0 ------------------------------------------------------------------------------ temp74_0 [94] 100.0% [112] 300(0.3%) 0(0.0%) compile-top9 (unknown source) compile-forms31 [125] 100.0% ------------------------------------------------------------------------------ ??? [101] 100.0% [113] 30516(27.5%) 0(0.0%) iterate-egraph!7 ...lop/src/core/simplify.rkt:55:0 one-iter [126] 99.0% ------------------------------------------------------------------------------ loop [19] 11.0% expand-single [102] 89.0% [114] 5536(5.0%) 300(0.3%) expand-capturing-lifts (unknown source) lambda-clause-expander [127] 61.2% dispatch-transformer41 [153] 16.9% for-loop [146] 16.4% ------------------------------------------------------------------------------ bfcos [106] 10.1% bfadd [105] 10.6% bf [85] 79.3% [115] 3184(2.9%) 3184(2.9%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 ------------------------------------------------------------------------------ ??? [101] 100.0% [116] 2426(2.2%) 0(0.0%) loop ...herbie/develop/src/core/simplify.rkt:184:2 for-loop [128] 100.0% ------------------------------------------------------------------------------ bfcos [106] 49.5% bfadd [105] 50.5% [117] 2076(1.9%) 2076(1.9%) ??? /home/p92/racket/collects/ffi/unsafe.rkt:898:4 ------------------------------------------------------------------------------ best-alt [104] 100.0% [118] 1224(1.1%) 0(0.0%) loop ...htlies/herbie/develop/src/common.rkt:143:2 ??? [129] 100.0% ------------------------------------------------------------------------------ map [103] 100.0% [119] 634(0.6%) 634(0.6%) simplify* ...rbie/develop/src/core/reduce.rkt:31:0 ------------------------------------------------------------------------------ map [103] 100.0% [120] 628(0.6%) 0(0.0%) taylor-invert ...develop/src/core/taylor.rkt:309:0 simplify [83] 53.2% first-nonzero-exp [133] 46.8% ------------------------------------------------------------------------------ eval [108] 100.0% [121] 628(0.6%) 0(0.0%) namespace-syntax-introduce3 (unknown source) free-identifier=? [130] 100.0% ------------------------------------------------------------------------------ ??? [101] 100.0% [122] 336(0.3%) 0(0.0%) mk-egraph ...bie/develop/src/core/egraph.rkt:131:0 mk-enode-rec! [131] 100.0% ------------------------------------------------------------------------------ map [103] 100.0% [123] 326(0.3%) 0(0.0%) ??? ...ies/herbie/develop/src/core/reduce.rkt:61:5 for-loop [132] 100.0% ------------------------------------------------------------------------------ best-alt [104] 100.0% [124] 310(0.3%) 0(0.0%) argmins ...ies/herbie/develop/src/common.rkt:142:0 ??? [129] 100.0% ------------------------------------------------------------------------------ compile-top9 [112] 100.0% [125] 300(0.3%) 0(0.0%) compile-forms31 (unknown source) for-loop [146] 100.0% ------------------------------------------------------------------------------ iterate-egraph!7 [113] 100.0% [126] 30218(27.2%) 326(0.3%) one-iter ...bie/develop/src/core/simplify.rkt:66:0 for-loop [134] 55.7% for-loop [135] 43.2% ------------------------------------------------------------------------------ expand-capturing-lifts [114] 100.0% [127] 3390(3.0%) 324(0.3%) lambda-clause-expander (unknown source) finish-bodys [136] 72.0% for-loop [146] 9.3% loop [19] 9.1% ------------------------------------------------------------------------------ loop [116] 100.0% [128] 2426(2.2%) 0(0.0%) for-loop ...e/develop/src/core/simplify.rkt:177:29 argmin [137] 62.5% loop [138] 37.5% ------------------------------------------------------------------------------ argmins [124] 20.2% loop [118] 79.8% [129] 1534(1.4%) 0(0.0%) ??? ...lies/herbie/develop/src/mainloop.rkt:110:19 errors [64] 100.0% ------------------------------------------------------------------------------ namespace-syntax-introduce3 [121] 100.0% [130] 628(0.6%) 302(0.3%) free-identifier=? (unknown source) resolve+shift28 [139] 51.9% ------------------------------------------------------------------------------ mk-egraph [122] 100.0% [131] 336(0.3%) 0(0.0%) mk-enode-rec! ...develop/src/core/egraph.rkt:122:0 mk-enode! [158] 100.0% ------------------------------------------------------------------------------ ??? [123] 100.0% [132] 326(0.3%) 326(0.3%) for-loop ...erbie/develop/src/core/reduce.rkt:62:7 ------------------------------------------------------------------------------ taylor-invert [120] 100.0% [133] 294(0.3%) 0(0.0%) first-nonzero-exp ...lop/src/core/taylor.rkt:257:0 simplify [83] 100.0% ------------------------------------------------------------------------------ one-iter [126] 100.0% [134] 16836(15.1%) 0(0.0%) for-loop ...ie/develop/src/core/simplify.rkt:113:2 for-loop [141] 78.0% match-e [140] 16.5% set [170] 1.8% ------------------------------------------------------------------------------ for-loop [135] 48.8% one-iter [126] 51.2% [135] 13056(11.7%) 1868(1.7%) for-loop ...ie/develop/src/core/simplify.rkt:76:12 for-loop [135] 48.8% match-e [140] 42.8% ------------------------------------------------------------------------------ lambda-clause-expander [127] 24.3% for-loop [146] 75.7% [136] 2442(2.2%) 0(0.0%) finish-bodys (unknown source) for-loop [146] 100.0% ------------------------------------------------------------------------------ for-loop [128] 100.0% [137] 1516(1.4%) 0(0.0%) argmin ...92/racket/collects/racket/list.rkt:765:0 for-loop [142] 100.0% ------------------------------------------------------------------------------ for-loop [128] 100.0% [138] 910(0.8%) 0(0.0%) loop .../p92/racket/collects/racket/list.rkt:751:4 for-loop [142] 100.0% ------------------------------------------------------------------------------ free-identifier=? [130] 49.4% expand-id-application-form17 [25] 50.6% [139] 660(0.6%) 326(0.3%) resolve+shift28 (unknown source) fallback-loop [143] 50.6% ------------------------------------------------------------------------------ for-loop [149] 15.6% for-loop [134] 16.3% for-loop [135] 68.0% [140] 13962(12.6%) 3442(3.1%) match-e ...herbie/develop/src/core/ematch.rkt:46:0 for-loop [144] 66.8% variable? [5] 5.9% make-sequence [162] 4.3% ??? [38] 1.8% ------------------------------------------------------------------------------ for-loop [134] 100.0% [141] 13136(11.8%) 0(0.0%) for-loop ...bie/develop/src/core/simplify.rkt:98:4 merge-egraph-nodes! [145] 35.7% mk-enode! [158] 31.0% substitute-e [147] 16.7% loop! [160] 16.6% ------------------------------------------------------------------------------ argmax [63] 10.9% loop [138] 33.4% argmin [137] 55.7% [142] 2724(2.5%) 0(0.0%) for-loop .../herbie/develop/src/programs.rkt:169:2 table-ref [177] 55.7% ...velop/src/common.rkt:48:2 [148] 44.3% ------------------------------------------------------------------------------ resolve+shift28 [139] 100.0% [143] 334(0.3%) 0(0.0%) fallback-loop (unknown source) for-loop [146] 100.0% ------------------------------------------------------------------------------ match-e [140] 100.0% [144] 10874(9.8%) 4016(3.6%) for-loop ...rbie/develop/src/core/ematch.rkt:59:11 for-loop [149] 37.1% list-cartesian-product [152] 17.0% loop [71] 8.9% ------------------------------------------------------------------------------ for-loop [141] 100.0% [145] 4692(4.2%) 302(0.3%) merge-egraph-nodes! ...p/src/core/egraph.rkt:153:0 update-leader! [150] 80.7% for-loop [156] 6.4% enode-merge! [157] 6.4% ------------------------------------------------------------------------------ fallback-loop [143] 0.7% compile-forms31 [125] 7.6% lambda-clause-expander [127] 7.9% for-loop [146] 12.1% expand-capturing-lifts [114] 15.3% finish-bodys [136] 56.4% [146] 3964(3.6%) 1538(1.4%) for-loop (unknown source) finish-bodys [136] 42.2% for-loop [146] 12.1% dispatch-transformer41 [153] 11.5% syntax-e [6] 9.1% add-local-binding!37 [155] 7.9% loop [19] 2.7% ------------------------------------------------------------------------------ for-loop [151] 16.7% for-loop [141] 83.3% [147] 2190(2.0%) 0(0.0%) substitute-e ...e/develop/src/core/ematch.rkt:71:0 for-loop [151] 87.9% ??? [38] 12.1% ------------------------------------------------------------------------------ type-of [66] 19.8% for-loop [142] 80.2% [148] 1504(1.4%) 0(0.0%) ...velop/src/common.rkt:48:2 ...e/arr-i.rkt:918:19 ??? [201] 59.7% ??? [154] 40.3% ------------------------------------------------------------------------------ for-loop [144] 100.0% [149] 4362(3.9%) 300(0.3%) for-loop ...rbie/develop/src/core/ematch.rkt:65:37 match-e [140] 93.1% ------------------------------------------------------------------------------ merge-egraph-nodes! [145] 100.0% [150] 3788(3.4%) 0(0.0%) update-leader! ...evelop/src/core/egraph.rkt:218:0 for-loop [159] 76.0% for-loop [164] 15.9% make-sequence [162] 8.1% ------------------------------------------------------------------------------ substitute-e [147] 100.0% [151] 2190(2.0%) 0(0.0%) for-loop ...rbie/develop/src/core/ematch.rkt:80:24 mk-enode! [158] 71.1% substitute-e [147] 28.9% ------------------------------------------------------------------------------ list-cartesian-product [152] 29.0% for-loop [144] 71.0% [152] 2182(2.0%) 1572(1.4%) list-cartesian-product ...src/core/ematch.rkt:20:0 list-cartesian-product [152] 29.0% for-loop [163] 14.0% ------------------------------------------------------------------------------ loop [19] 16.7% for-loop [146] 32.7% expand-capturing-lifts [114] 50.6% [153] 1854(1.7%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [161] 100.0% ------------------------------------------------------------------------------ ...velop/src/common.rkt:48:2 [148] 100.0% [154] 606(0.5%) 308(0.3%) ??? ...s/racket/contract/private/arr-i.rkt:1286:39 assoc-ref [166] 49.2% ------------------------------------------------------------------------------ for-loop [146] 100.0% [155] 314(0.3%) 314(0.3%) add-local-binding!37 (unknown source) ------------------------------------------------------------------------------ merge-egraph-nodes! [145] 100.0% [156] 302(0.3%) 0(0.0%) for-loop ...bie/develop/src/core/egraph.rkt:201:10 loop! [160] 100.0% ------------------------------------------------------------------------------ merge-egraph-nodes! [145] 100.0% [157] 300(0.3%) 0(0.0%) enode-merge! ...e/develop/src/core/enode.rkt:127:0 adopt-enode! [165] 100.0% ------------------------------------------------------------------------------ mk-enode-rec! [131] 5.6% for-loop [151] 26.1% for-loop [141] 68.3% [158] 5970(5.4%) 600(0.5%) mk-enode! ...bie/develop/src/core/egraph.rkt:102:0 new-enode [167] 89.9% ------------------------------------------------------------------------------ update-leader! [150] 100.0% [159] 2878(2.6%) 334(0.3%) for-loop ...rbie/develop/src/core/egraph.rkt:223:6 for-loop [168] 88.4% ------------------------------------------------------------------------------ for-loop [156] 12.2% loop [71] 33.9% for-loop [141] 53.9% [160] 2480(2.2%) 912(0.8%) loop! ...s/herbie/develop/src/core/enode.rkt:190:2 loop [71] 33.9% custom-set-union [169] 30.7% set [170] 13.0% ------------------------------------------------------------------------------ dispatch-transformer41 [153] 100.0% [161] 1854(1.7%) 0(0.0%) apply-transformer52 (unknown source) apply-transformer-in-context [171] 50.8% apply-post-expansion [172] 32.6% loop [19] 16.6% ------------------------------------------------------------------------------ update-leader! [150] 33.8% match-e [140] 66.2% [162] 912(0.8%) 912(0.8%) make-sequence ...ects/racket/private/for.rkt:528:2 ------------------------------------------------------------------------------ list-cartesian-product [152] 100.0% [163] 610(0.5%) 610(0.5%) for-loop ...erbie/develop/src/core/ematch.rkt:24:8 ------------------------------------------------------------------------------ update-leader! [150] 100.0% [164] 602(0.5%) 302(0.3%) for-loop ...rbie/develop/src/core/egraph.rkt:233:6 update-en-expr [191] 49.8% ------------------------------------------------------------------------------ enode-merge! [157] 100.0% [165] 300(0.3%) 0(0.0%) adopt-enode! ...e/develop/src/core/enode.rkt:103:0 custom-set-union [169] 100.0% ------------------------------------------------------------------------------ ??? [154] 100.0% [166] 298(0.3%) 298(0.3%) assoc-ref ...collects/racket/private/dict.rkt:56:0 ------------------------------------------------------------------------------ mk-enode! [158] 100.0% [167] 5370(4.8%) 0(0.0%) new-enode ...erbie/develop/src/core/enode.rkt:95:0 type-of-enode-expr [173] 100.0% ------------------------------------------------------------------------------ for-loop [159] 100.0% [168] 2544(2.3%) 0(0.0%) for-loop ...rbie/develop/src/core/egraph.rkt:224:8 hash-update! [174] 100.0% ------------------------------------------------------------------------------ adopt-enode! [165] 24.5% loop! [160] 75.5% [169] 1222(1.1%) 1222(1.1%) custom-set-union ...et/private/set-types.rkt:168:0 ------------------------------------------------------------------------------ for-loop [134] 32.4% loop! [160] 67.6% [170] 956(0.9%) 956(0.9%) set ...collects/racket/private/set-types.rkt:981:0 ------------------------------------------------------------------------------ apply-transformer52 [161] 100.0% [171] 942(0.8%) 632(0.6%) apply-transformer-in-context (unknown source) ??? [176] 32.9% ------------------------------------------------------------------------------ apply-transformer52 [161] 100.0% [172] 604(0.5%) 0(0.0%) apply-post-expansion (unknown source) gf [175] 100.0% ------------------------------------------------------------------------------ new-enode [167] 100.0% [173] 5370(4.8%) 310(0.3%) type-of-enode-expr ...elop/src/core/enode.rkt:68:0 ??? [178] 52.7% table-ref [177] 23.1% for-loop [194] 18.5% ------------------------------------------------------------------------------ for-loop [168] 100.0% [174] 2544(2.3%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [179] 100.0% ------------------------------------------------------------------------------ apply-post-expansion [172] 8.6% loop [19] 91.4% [175] 2420(2.2%) 294(0.3%) gf (unknown source) propagation-apply [180] 50.2% propagation-merge [182] 12.4% propagation-apply-shifted [183] 12.4% loop [19] 10.2% syntax-e/no-taint [14] 8.6% ------------------------------------------------------------------------------ apply-transformer-in-context [171] 100.0% [176] 310(0.3%) 0(0.0%) ??? ...collects/racket/private/qq-and-or.rkt:155:9 ??? [181] 100.0% ------------------------------------------------------------------------------ type-of-enode-expr [173] 21.3% f8 [93] 25.7% for-loop [142] 26.0% type-of [66] 26.9% [177] 5828(5.2%) 1256(1.1%) table-ref ...es/herbie/develop/src/common.rkt:47:0 ??? [185] 68.2% return/no-unsupplied [187] 5.1% for-loop [189] 5.1% ------------------------------------------------------------------------------ type-of [66] 35.6% type-of-enode-expr [173] 64.4% [178] 4392(4.0%) 0(0.0%) ??? ...ects/racket/contract/private/hash.rkt:227:4 contract-pos/neg-doubling/proc [184]100.0% ------------------------------------------------------------------------------ hash-update! [174] 100.0% [179] 2544(2.3%) 320(0.3%) ??? ...s/herbie/develop/src/core/egraph.rkt:226:24 for-loop [186] 87.4% ------------------------------------------------------------------------------ gf [175] 100.0% [180] 1216(1.1%) 1216(1.1%) propagation-apply (unknown source) ------------------------------------------------------------------------------ ??? [176] 100.0% [181] 310(0.3%) 0(0.0%) ??? ...ollects/racket/private/qq-and-or.rkt:164:21 syntax->list [188] 100.0% ------------------------------------------------------------------------------ gf [175] 100.0% [182] 300(0.3%) 300(0.3%) propagation-merge (unknown source) ------------------------------------------------------------------------------ gf [175] 100.0% [183] 300(0.3%) 300(0.3%) propagation-apply-shifted (unknown source) ------------------------------------------------------------------------------ ??? [178] 100.0% [184] 4392(4.0%) 4062(3.7%) contract-pos/neg-doubling/proc ...e/guts.rkt:956:0 ??? [193] 7.5% ------------------------------------------------------------------------------ table-ref [177] 100.0% [185] 3974(3.6%) 906(0.8%) ??? ...ects/racket/contract/private/list.rkt:798:4 for-loop [190] 46.7% ??? [195] 30.5% ------------------------------------------------------------------------------ ??? [179] 100.0% [186] 2224(2.0%) 1588(1.4%) for-loop ...bie/develop/src/core/egraph.rkt:227:26 update-en-expr [191] 28.6% ------------------------------------------------------------------------------ table-ref [177] 19.3% ->flonum [107] 21.3% ??? [96] 59.4% [187] 1556(1.4%) 930(0.8%) return/no-unsupplied ...ct/private/arr-i.rkt:534:0 filter [192] 40.2% ------------------------------------------------------------------------------ ??? [181] 100.0% [188] 310(0.3%) 0(0.0%) syntax->list (unknown source) loop [19] 100.0% ------------------------------------------------------------------------------ table-ref [177] 100.0% [189] 298(0.3%) 298(0.3%) for-loop ...ies/herbie/develop/src/common.rkt:53:4 ------------------------------------------------------------------------------ ??? [185] 100.0% [190] 1856(1.7%) 298(0.3%) for-loop ...acket/contract/private/list.rkt:804:12 ??? [202] 35.5% for-loop [194] 32.3% ??? [195] 16.2% ------------------------------------------------------------------------------ for-loop [164] 32.1% for-loop [186] 67.9% [191] 936(0.8%) 324(0.3%) update-en-expr ...evelop/src/core/egraph.rkt:212:0 for-loop [196] 65.4% ------------------------------------------------------------------------------ return/no-unsupplied [187] 100.0% [192] 626(0.6%) 626(0.6%) filter ...t/collects/racket/private/list.rkt:256:2 ------------------------------------------------------------------------------ contract-pos/neg-doubling/proc [184]100.0% [193] 330(0.3%) 330(0.3%) ??? ...ects/racket/contract/private/list.rkt:191:2 ------------------------------------------------------------------------------ for-loop [190] 27.3% type-of [66] 27.6% type-of-enode-expr [173] 45.1% [194] 2198(2.0%) 0(0.0%) for-loop ...racket/contract/private/hash.rkt:277:6 ??? [197] 100.0% ------------------------------------------------------------------------------ for-loop [190] 19.8% ??? [185] 80.2% [195] 1512(1.4%) 1210(1.1%) ??? ...private/unconstrained-domain-arrow.rkt:74:4 make-keyword-procedure [198] 20.0% ------------------------------------------------------------------------------ update-en-expr [191] 100.0% [196] 612(0.6%) 612(0.6%) for-loop ...rbie/develop/src/core/egraph.rkt:214:6 ------------------------------------------------------------------------------ ??? [201] 29.0% for-loop [194] 71.0% [197] 3096(2.8%) 300(0.3%) ??? ...cts/racket/contract/private/list.rkt:209:10 ??? [199] 61.3% for-loop [200] 29.0% ------------------------------------------------------------------------------ ??? [195] 100.0% [198] 302(0.3%) 302(0.3%) make-keyword-procedure ...ket/private/kw.rkt:407:4 ------------------------------------------------------------------------------ ??? [197] 100.0% [199] 1898(1.7%) 608(0.5%) ??? ...ects/racket/contract/private/list.rkt:747:7 ??? [202] 68.0% ------------------------------------------------------------------------------ ??? [197] 100.0% [200] 898(0.8%) 0(0.0%) for-loop ...acket/contract/private/list.rkt:212:15 ??? [201] 100.0% ------------------------------------------------------------------------------ for-loop [200] 50.0% ...velop/src/common.rkt:48:2 [148] 50.0% [201] 898(0.8%) 302(0.3%) ??? ...ects/racket/contract/private/list.rkt:367:4 ??? [197] 50.0% ??? [202] 33.2% ------------------------------------------------------------------------------ ??? [201] 23.4% for-loop [190] 25.9% ??? [199] 50.7% [202] 2544(2.3%) 1948(1.8%) ??? ...ects/racket/contract/private/guts.rkt:746:8 contract? [203] 23.4% ------------------------------------------------------------------------------ ??? [202] 100.0% [203] 596(0.5%) 596(0.5%) contract? ...acket/contract/private/guts.rkt:118:0 ------------------------------------------------------------------------------