Profiling results ----------------- Total cpu time observed: 49414ms (out of 49828ms) Number of samples taken: 195 (once every 253ms) (Hiding functions with self<1.0% and local<2.0%: 4 of 210 hidden) ==================================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ==================================================================================== ??? [27] 100.0% [1] 49414(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [14] 100.0% ------------------------------------------------------------------------------------ loop [17] 8.2% location-do [2] 32.4% ??? [107] 59.3% [2] 4112(8.3%) 0(0.0%) location-do ...herbie/master/src/programs.rkt:64:0 ??? [107] 51.3% location-do [2] 32.4% loop [17] 16.2% ------------------------------------------------------------------------------------ ??? [107] 100.0% [3] 3888(7.9%) 0(0.0%) approximate9 ...ie/master/src/core/taylor.rkt:12:0 loop [16] 94.7% for-loop [26] 5.3% ------------------------------------------------------------------------------------ ??? [27] 100.0% [4] 2596(5.3%) 0(0.0%) get-final-combination ...er/src/mainloop.rkt:371:0 f46 [35] 54.2% infer-splitpoints [20] 45.8% ------------------------------------------------------------------------------------ hash-ref! [84] 100.0% [5] 1824(3.7%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:301:23 for-loop [18] 100.0% ------------------------------------------------------------------------------------ hash-ref! [84] 100.0% [6] 1578(3.2%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:291:26 for-loop [19] 100.0% ------------------------------------------------------------------------------------ hash-ref! [84] 100.0% [7] 1160(2.3%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:407:23 for-loop [23] 58.4% for-loop [25] 41.6% ------------------------------------------------------------------------------------ for-loop [193] 20.4% loop [202] 79.6% [8] 1012(2.0%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [21] 100.0% ------------------------------------------------------------------------------------ hash-ref! [84] 100.0% [9] 676(1.4%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:510:23 for-loop [24] 100.0% ------------------------------------------------------------------------------------ for-loop [193] 100.0% [10] 418(0.8%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [22] 100.0% ------------------------------------------------------------------------------------ copying-mergesort [79] 100.0% [11] 334(0.7%) 0(0.0%) jloop ...2/collects/racket/private/sort.rkt:120:23 ??? [64] 100.0% ------------------------------------------------------------------------------------ for-loop [193] 100.0% [12] 248(0.5%) 0(0.0%) expand-identifier (unknown source) resolve+shift28 [22] 100.0% ------------------------------------------------------------------------------------ taylor [100] 100.0% [13] 228(0.5%) 0(0.0%) taylor-invert .../master/src/core/taylor.rkt:318:0 simplify [15] 100.0% ------------------------------------------------------------------------------------ profile-thunk16 [1] 100.0% [14] 49414(100.0%) 0(0.0%) run ...et-7.2/share/pkgs/profile-lib/main.rkt:39:2 ??? [27] 100.0% ------------------------------------------------------------------------------------ loop [144] 5.2% ??? [107] 5.4% taylor-invert [13] 5.5% hash-ref! [84] 83.8% [15] 4112(8.3%) 228(0.5%) simplify ...herbie/master/src/core/reduce.rkt:16:0 f46 [35] 49.8% parse-loop30 [28] 34.0% debug-print [31] 10.7% ------------------------------------------------------------------------------------ approximate9 [3] 100.0% [16] 3682(7.5%) 0(0.0%) loop ...ies/herbie/master/src/core/taylor.rkt:87:4 hash-ref! [84] 93.8% ??? [107] 6.2% ------------------------------------------------------------------------------------ loop [17] 45.5% location-do [2] 54.5% [17] 2340(4.7%) 0(0.0%) loop ...htlies/herbie/master/src/programs.rkt:73:4 loop [17] 45.5% location-do [2] 29.0% ??? [107] 25.5% ------------------------------------------------------------------------------------ ??? [5] 100.0% [18] 1824(3.7%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:304:27 hash-ref! [84] 100.0% ------------------------------------------------------------------------------------ ??? [6] 100.0% [19] 1578(3.2%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:291:52 hash-ref! [84] 100.0% ------------------------------------------------------------------------------------ get-final-combination [4] 100.0% [20] 1190(2.4%) 0(0.0%) infer-splitpoints ...ter/src/core/regimes.rkt:34:0 for-loop [29] 100.0% ------------------------------------------------------------------------------------ syntax-e [8] 100.0% [21] 1012(2.0%) 0(0.0%) syntax-e/no-taint (unknown source) loop [202] 100.0% ------------------------------------------------------------------------------------ core-form-sym [204] 27.0% expand-identifier [12] 27.2% expand-implicit [10] 45.8% [22] 912(1.8%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [30] 100.0% ------------------------------------------------------------------------------------ ??? [7] 100.0% [23] 678(1.4%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:413:39 hash-ref! [84] 100.0% ------------------------------------------------------------------------------------ ??? [9] 100.0% [24] 676(1.4%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:514:35 parse-loop30 [28] 100.0% ------------------------------------------------------------------------------------ ??? [7] 100.0% [25] 482(1.0%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:411:33 hash-ref! [84] 100.0% ------------------------------------------------------------------------------------ approximate9 [3] 100.0% [26] 206(0.4%) 0(0.0%) for-loop ...erbie/master/src/core/taylor.rkt:30:18 taylor-sqrt [32] 100.0% ------------------------------------------------------------------------------------ for-loop [129] 0.1% for-loop [125] 1.5% run [14] 49.2% [27] 49414(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 49.2% run-improve47 [33] 40.7% prepare-points-intervals [34] 4.3% get-final-combination [4] 2.5% ??? [64] 1.3% oracle-error [38] 1.0% errors [116] 0.4% eval-errors [41] 0.3% ??? [107] 0.2% eval-const-expr [36] 0.1% ------------------------------------------------------------------------------------ for-loop [24] 13.5% hash-ref! [84] 14.9% map [56] 32.2% simplify [15] 39.3% [28] 3242(6.6%) 0(0.0%) parse-loop30 ...s/racket/match/compiler.rkt:418:15 eval-const-expr [36] 63.5% map [56] 14.9% for-loop [39] 13.5% f46 [35] 8.0% ------------------------------------------------------------------------------------ infer-splitpoints [20] 100.0% [29] 1190(2.4%) 0(0.0%) for-loop ...erbie/master/src/core/regimes.rkt:47:6 option-on-expr [37] 100.0% ------------------------------------------------------------------------------------ resolve+shift28 [22] 100.0% [30] 912(1.8%) 494(1.0%) fallback-loop (unknown source) for-loop [193] 45.8% ------------------------------------------------------------------------------------ simplify [15] 100.0% [31] 438(0.9%) 0(0.0%) debug-print ...s/herbie/master/src/debug.rkt:110:0 for-loop [40] 100.0% ------------------------------------------------------------------------------------ for-loop [26] 100.0% [32] 206(0.4%) 0(0.0%) taylor-sqrt ...ie/master/src/core/taylor.rkt:352:0 first-nonzero-exp [42] 100.0% ------------------------------------------------------------------------------------ ??? [27] 100.0% [33] 40754(82.5%) 0(0.0%) run-improve47 ...bie/master/src/mainloop.rkt:346:0 for-loop [43] 100.0% ------------------------------------------------------------------------------------ pred [78] 24.8% ??? [27] 75.2% [34] 5680(11.5%) 0(0.0%) prepare-points-intervals ...r/src/points.rkt:110:0 loop [44] 100.0% ------------------------------------------------------------------------------------ parse-loop30 [28] 3.8% map [56] 24.7% simplify [15] 30.8% get-final-combination [4] 40.7% [35] 3454(7.0%) 0(0.0%) f46 ...2/collects/racket/match/compiler.rkt:507:40 map [56] 44.6% sindices->spoints [45] 40.7% eval-const-expr [36] 8.8% compose [69] 5.8% ------------------------------------------------------------------------------------ ??? [27] 6.3% f46 [35] 23.0% parse-loop30 [28] 70.7% [36] 3246(6.6%) 0(0.0%) eval-const-expr ...e/master/src/programs.rkt:118:0 temp85_0 [137] 73.9% compile [51] 7.0% ??? [88] 6.5% eval [52] 6.3% inductor [53] 6.3% ------------------------------------------------------------------------------------ for-loop [29] 100.0% [37] 1190(2.4%) 0(0.0%) option-on-expr ...aster/src/core/regimes.rkt:126:0 sort-context-on-expr [47] 49.1% err-lsts->split-indices [48] 26.7% for-loop [49] 24.2% ------------------------------------------------------------------------------------ ??? [27] 100.0% [38] 994(2.0%) 0(0.0%) oracle-error ...herbie/master/src/points.rkt:188:0 for-loop [46] 100.0% ------------------------------------------------------------------------------------ parse-loop30 [28] 100.0% [39] 676(1.4%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:517:59 hash-ref! [84] 100.0% ------------------------------------------------------------------------------------ debug-print [31] 100.0% [40] 438(0.9%) 438(0.9%) for-loop ...lies/herbie/master/src/debug.rkt:116:2 ------------------------------------------------------------------------------------ ??? [27] 100.0% [41] 250(0.5%) 0(0.0%) eval-errors .../herbie/master/src/points.rkt:179:0 for-loop [50] 100.0% ------------------------------------------------------------------------------------ taylor-sqrt [32] 100.0% [42] 206(0.4%) 0(0.0%) first-nonzero-exp ...ter/src/core/taylor.rkt:266:0 hash-ref! [84] 100.0% ------------------------------------------------------------------------------------ run-improve47 [33] 100.0% [43] 40754(82.5%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:365:4 run-iter! [54] 100.0% ------------------------------------------------------------------------------------ prepare-points-intervals [34] 100.0% [44] 5680(11.5%) 0(0.0%) loop ...ghtlies/herbie/master/src/points.rkt:123:4 loop [55] 57.9% ??? [57] 42.1% ------------------------------------------------------------------------------------ f46 [35] 100.0% [45] 1406(2.8%) 0(0.0%) sindices->spoints ...er/src/core/regimes.rkt:194:0 for-loop [58] 100.0% ------------------------------------------------------------------------------------ oracle-error [38] 100.0% [46] 994(2.0%) 0(0.0%) for-loop ...ies/herbie/master/src/points.rkt:189:2 map [56] 50.1% loop [144] 49.9% ------------------------------------------------------------------------------------ option-on-expr [37] 100.0% [47] 584(1.2%) 0(0.0%) sort-context-on-expr ...src/core/regimes.rkt:119:0 ??? [59] 100.0% ------------------------------------------------------------------------------------ option-on-expr [37] 100.0% [48] 318(0.6%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:262:0 loop [60] 100.0% ------------------------------------------------------------------------------------ option-on-expr [37] 100.0% [49] 288(0.6%) 0(0.0%) for-loop ...rbie/master/src/core/regimes.rkt:136:4 errors [116] 100.0% ------------------------------------------------------------------------------------ eval-errors [41] 100.0% [50] 250(0.5%) 0(0.0%) for-loop ...ies/herbie/master/src/points.rkt:181:2 ??? [64] 100.0% ------------------------------------------------------------------------------------ eval-const-expr [36] 100.0% [51] 226(0.5%) 0(0.0%) compile ...es/herbie/master/src/programs.rkt:153:0 hash-ref! [84] 100.0% ------------------------------------------------------------------------------------ eval-const-expr [36] 100.0% [52] 206(0.4%) 0(0.0%) eval (unknown source) datum->syntax6 [61] 100.0% ------------------------------------------------------------------------------------ eval-const-expr [36] 100.0% [53] 204(0.4%) 0(0.0%) inductor ...s/herbie/master/src/programs.rkt:104:4 table-ref [62] 100.0% ------------------------------------------------------------------------------------ for-loop [43] 100.0% [54] 40754(82.5%) 0(0.0%) run-iter! .../herbie/master/src/mainloop.rkt:327:0 simplify! [63] 82.7% gen-series! [65] 10.1% finalize-iter! [66] 5.3% localize! [70] 1.2% choose-best-alt! [72] 0.8% ------------------------------------------------------------------------------------ loop [44] 100.0% [55] 3288(6.7%) 0(0.0%) loop ...ightlies/herbie/master/src/points.rkt:81:2 ??? [64] 100.0% ------------------------------------------------------------------------------------ taylor [100] 7.0% parse-loop30 [28] 15.9% for-loop [46] 16.4% f46 [35] 60.7% [56] 3042(6.2%) 0(0.0%) map ...t-7.2/collects/racket/private/map.rkt:35:13 f46 [35] 33.8% parse-loop30 [28] 25.5% ??? [162] 16.4% hash-ref! [84] 13.6% taylor [100] 7.0% loop [144] 2.3% ??? [73] 1.3% ------------------------------------------------------------------------------------ loop [44] 100.0% [57] 2392(4.8%) 346(0.7%) ??? ...ightlies/herbie/master/src/points.rkt:106:2 ??? [107] 72.5% compose [69] 13.0% ------------------------------------------------------------------------------------ sindices->spoints [45] 100.0% [58] 1406(2.8%) 0(0.0%) for-loop ...rbie/master/src/core/regimes.rkt:233:9 binary-search-floats [67] 73.7% pred [78] 26.3% ------------------------------------------------------------------------------------ sort-context-on-expr [47] 100.0% [59] 584(1.2%) 0(0.0%) ??? ...-7.2/collects/racket/private/sort.rkt:369:3 generic-sort/key [68] 100.0% ------------------------------------------------------------------------------------ err-lsts->split-indices [48] 100.0% [60] 318(0.6%) 0(0.0%) loop ...s/herbie/master/src/core/regimes.rkt:313:4 for-loop [71] 100.0% ------------------------------------------------------------------------------------ eval [52] 100.0% [61] 206(0.4%) 0(0.0%) datum->syntax6 (unknown source) loop [202] 100.0% ------------------------------------------------------------------------------------ inductor [53] 100.0% [62] 204(0.4%) 204(0.4%) table-ref ...ies/herbie/master/src/common.rkt:33:0 ------------------------------------------------------------------------------------ run-iter! [54] 100.0% [63] 33700(68.2%) 0(0.0%) simplify! .../herbie/master/src/mainloop.rkt:224:0 ??? [74] 100.0% ------------------------------------------------------------------------------------ for-loop [50] 4.0% jloop [11] 5.3% ??? [162] 7.9% ??? [27] 30.6% loop [55] 52.3% [64] 6290(12.7%) 1110(2.2%) ??? ...htlies/herbie/master/src/programs.rkt:115:2 ??? [75] 72.4% ??? [107] 10.0% ------------------------------------------------------------------------------------ run-iter! [54] 100.0% [65] 4112(8.3%) 0(0.0%) gen-series! ...erbie/master/src/mainloop.rkt:160:0 for-loop [76] 100.0% ------------------------------------------------------------------------------------ run-iter! [54] 100.0% [66] 2152(4.4%) 0(0.0%) finalize-iter! ...ie/master/src/mainloop.rkt:278:0 ??? [77] 100.0% ------------------------------------------------------------------------------------ for-loop [58] 100.0% [67] 1036(2.1%) 0(0.0%) binary-search-floats ...src/core/regimes.rkt:175:0 pred [78] 100.0% ------------------------------------------------------------------------------------ ??? [59] 100.0% [68] 584(1.2%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [79] 100.0% ------------------------------------------------------------------------------------ f46 [35] 39.3% ??? [57] 60.7% [69] 514(1.0%) 514(1.0%) compose ...collects/racket/private/list.rkt:385:12 ------------------------------------------------------------------------------------ run-iter! [54] 100.0% [70] 484(1.0%) 0(0.0%) localize! .../herbie/master/src/mainloop.rkt:127:0 localize-error [80] 100.0% ------------------------------------------------------------------------------------ loop [60] 100.0% [71] 318(0.6%) 0(0.0%) for-loop ...rbie/master/src/core/regimes.rkt:278:4 for-loop [81] 100.0% ------------------------------------------------------------------------------------ run-iter! [54] 100.0% [72] 306(0.6%) 0(0.0%) choose-best-alt! .../master/src/mainloop.rkt:117:0 ??? [77] 100.0% ------------------------------------------------------------------------------------ map [56] 100.0% [73] 202(0.4%) 0(0.0%) ??? ...lies/herbie/master/src/core/reduce.rkt:59:5 for-loop [82] 100.0% ------------------------------------------------------------------------------------ simplify! [63] 100.0% [74] 33700(68.2%) 0(0.0%) ??? ...es/herbie/master/src/core/simplify.rkt:31:0 for-loop [83] 98.1% for-loop [89] 1.3% loop [99] 0.6% ------------------------------------------------------------------------------------ ??? [64] 100.0% [75] 4554(9.2%) 298(0.6%) ??? ...t-7.2/collects/racket/private/kw.rkt:594:14 ??? [107] 38.0% ??? [87] 35.0% ??? [88] 20.5% ------------------------------------------------------------------------------------ gen-series! [65] 100.0% [76] 4112(8.3%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:167:7 taylor-alt [85] 100.0% ------------------------------------------------------------------------------------ match-e [124] 7.2% variable? [140] 7.2% choose-best-alt! [72] 10.7% finalize-iter! [66] 74.9% [77] 2872(5.8%) 414(0.8%) ??? ...contract/private/arrow-val-first.rkt:390:18 for-loop [86] 64.6% ??? [90] 10.7% atab-add-altns [91] 10.4% ------------------------------------------------------------------------------------ for-loop [58] 26.3% binary-search-floats [67] 73.7% [78] 1406(2.8%) 0(0.0%) pred ...s/herbie/master/src/core/regimes.rkt:204:4 prepare-points-intervals [34] 100.0% ------------------------------------------------------------------------------------ generic-sort/key [68] 28.6% copying-mergesort [79] 71.4% [79] 584(1.2%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 copying-mergesort [79] 71.4% jloop [11] 14.3% loop [92] 14.3% ------------------------------------------------------------------------------------ localize! [70] 100.0% [80] 484(1.0%) 0(0.0%) localize-error ...aster/src/core/localize.rkt:66:0 hash-ref! [84] 100.0% ------------------------------------------------------------------------------------ for-loop [71] 100.0% [81] 318(0.6%) 318(0.6%) for-loop ...rbie/master/src/core/regimes.rkt:282:8 ------------------------------------------------------------------------------------ ??? [73] 100.0% [82] 202(0.4%) 0(0.0%) for-loop ...herbie/master/src/core/reduce.rkt:60:7 pattern-match [93] 100.0% ------------------------------------------------------------------------------------ ??? [74] 100.0% [83] 33064(66.9%) 0(0.0%) for-loop ...rbie/master/src/core/simplify.rkt:51:2 ??? [94] 97.2% loop [99] 1.5% precompute-phase [101] 1.2% ------------------------------------------------------------------------------------ compile [51] 0.6% for-loop [25] 1.8% for-loop [39] 2.1% first-nonzero-exp [42] 2.4% for-loop [23] 2.8% ??? [96] 3.9% localize-error [80] 4.7% map [56] 6.3% for-loop [19] 7.5% for-loop [18] 8.0% ??? [97] 16.9% loop [16] 19.9% ??? [107] 21.2% [84] 4372(8.8%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [96] 23.7% simplify [15] 19.3% ??? [97] 16.9% ??? [5] 8.0% parse-loop30 [28] 8.0% ??? [6] 7.5% ??? [7] 4.6% taylor [100] 4.2% ??? [105] 3.1% ??? [9] 2.1% ------------------------------------------------------------------------------------ for-loop [76] 100.0% [85] 4112(8.3%) 0(0.0%) taylor-alt ...herbie/master/src/mainloop.rkt:146:0 for-loop [95] 100.0% ------------------------------------------------------------------------------------ ??? [77] 100.0% [86] 1854(3.8%) 0(0.0%) for-loop ...bie/master/src/core/alt-table.rkt:55:2 atab-add-altn [98] 70.4% errors [116] 29.6% ------------------------------------------------------------------------------------ ??? [75] 100.0% [87] 1594(3.2%) 1594(3.2%) ??? .../herbie/master/src/syntax/syntax.rkt:214:17 ------------------------------------------------------------------------------------ eval-const-expr [36] 18.4% ??? [75] 81.6% [88] 1142(2.3%) 488(1.0%) ??? ...tract/private/arrow-higher-order.rkt:364:33 ival-sqrt [102] 32.4% ival-add [104] 24.9% ------------------------------------------------------------------------------------ ??? [74] 100.0% [89] 434(0.9%) 0(0.0%) for-loop ...bie/master/src/core/simplify.rkt:42:14 mk-enode-rec! [161] 100.0% ------------------------------------------------------------------------------------ ??? [77] 100.0% [90] 306(0.6%) 0(0.0%) ??? ...s/herbie/master/src/core/alt-table.rkt:58:0 loop [103] 100.0% ------------------------------------------------------------------------------------ ??? [77] 100.0% [91] 298(0.6%) 0(0.0%) atab-add-altns ...ster/src/core/alt-table.rkt:49:0 atab-add-altn [98] 100.0% ------------------------------------------------------------------------------------ copying-mergesort [79] 100.0% [92] 250(0.5%) 250(0.5%) loop ...7.2/collects/racket/private/sort.rkt:96:12 ------------------------------------------------------------------------------------ for-loop [82] 100.0% [93] 202(0.4%) 202(0.4%) pattern-match .../master/src/core/matcher.rkt:30:0 ------------------------------------------------------------------------------------ for-loop [83] 100.0% [94] 32152(65.1%) 0(0.0%) ??? ...es/herbie/master/src/core/simplify.rkt:92:0 for-loop [106] 80.4% find-matches [108] 19.6% ------------------------------------------------------------------------------------ taylor-alt [85] 100.0% [95] 4112(8.3%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:152:6 ??? [107] 100.0% ------------------------------------------------------------------------------------ hash-ref! [84] 100.0% [96] 3454(7.0%) 0(0.0%) ??? ...ies/herbie/master/src/core/taylor.rkt:68:15 ??? [107] 89.9% hash-ref! [84] 10.1% ------------------------------------------------------------------------------------ hash-ref! [84] 100.0% [97] 3240(6.6%) 0(0.0%) ??? ...ies/herbie/master/src/core/taylor.rkt:45:15 hash-ref! [84] 100.0% ------------------------------------------------------------------------------------ atab-add-altns [91] 18.6% for-loop [86] 81.4% [98] 1604(3.2%) 0(0.0%) atab-add-altn ...ster/src/core/alt-table.rkt:203:0 errors [116] 100.0% ------------------------------------------------------------------------------------ ??? [74] 28.7% for-loop [83] 71.3% [99] 704(1.4%) 0(0.0%) loop ...herbie/master/src/core/extraction.rkt:25:2 for-loop [109] 100.0% ------------------------------------------------------------------------------------ map [56] 9.7% hash-ref! [84] 22.6% taylor [100] 67.7% [100] 442(0.9%) 0(0.0%) taylor .../herbie/master/src/core/taylor.rkt:170:0 taylor [100] 67.7% taylor-invert [13] 12.9% map [56] 9.7% loop [144] 9.7% ------------------------------------------------------------------------------------ for-loop [83] 100.0% [101] 410(0.8%) 0(0.0%) precompute-phase ...er/src/core/simplify.rkt:101:0 for-loop [110] 100.0% ------------------------------------------------------------------------------------ ??? [88] 100.0% [102] 370(0.7%) 0(0.0%) ival-sqrt ...rbie/master/src/biginterval.rkt:211:0 bfsqrt [111] 100.0% ------------------------------------------------------------------------------------ ??? [90] 100.0% [103] 306(0.6%) 0(0.0%) loop .../racket-7.2/collects/racket/list.rkt:751:4 ??? [112] 100.0% ------------------------------------------------------------------------------------ ??? [88] 100.0% [104] 284(0.6%) 0(0.0%) ival-add ...erbie/master/src/biginterval.rkt:101:0 bfmul [185] 100.0% ------------------------------------------------------------------------------------ hash-ref! [84] 100.0% [105] 272(0.6%) 0(0.0%) ??? ...s/herbie/master/src/core/localize.rkt:23:13 repeat [113] 100.0% ------------------------------------------------------------------------------------ ??? [94] 100.0% [106] 25864(52.3%) 0(0.0%) for-loop ...rbie/master/src/core/simplify.rkt:93:2 for-loop [114] 100.0% ------------------------------------------------------------------------------------ loop [16] 0.9% ??? [27] 3.2% loop [17] 3.9% ??? [64] 7.4% location-do [2] 13.1% ??? [96] 13.6% for-loop [95] 17.0% ??? [75] 20.4% ??? [57] 20.5% [107] 8476(17.2%) 1252(2.5%) ??? ...tract/private/arrow-higher-order.rkt:360:33 ival-mult [117] 20.4% location-do [2] 17.0% approximate9 [3] 15.7% hash-ref! [84] 14.5% sample-multi-bounded [118] 12.9% mk-ival [121] 3.4% simplify [15] 1.3% ------------------------------------------------------------------------------------ ??? [94] 100.0% [108] 6288(12.7%) 0(0.0%) find-matches .../master/src/core/simplify.rkt:84:0 for-loop [115] 100.0% ------------------------------------------------------------------------------------ loop [99] 100.0% [109] 704(1.4%) 0(0.0%) for-loop ...ie/master/src/core/extraction.rkt:29:4 for-loop [119] 100.0% ------------------------------------------------------------------------------------ precompute-phase [101] 100.0% [110] 410(0.8%) 0(0.0%) for-loop ...bie/master/src/core/simplify.rkt:102:2 set-precompute! [120] 100.0% ------------------------------------------------------------------------------------ ival-sqrt [102] 100.0% [111] 370(0.7%) 0(0.0%) bfsqrt ...lib/math/private/bigfloat/mpfr.rkt:618:4 new-mpfr [191] 100.0% ------------------------------------------------------------------------------------ loop [103] 100.0% [112] 306(0.6%) 0(0.0%) ??? ...tlies/herbie/master/src/mainloop.rkt:114:10 errors [116] 100.0% ------------------------------------------------------------------------------------ ??? [105] 100.0% [113] 272(0.6%) 0(0.0%) repeat .../herbie/master/src/core/localize.rkt:9:0 for-loop [122] 100.0% ------------------------------------------------------------------------------------ for-loop [106] 100.0% [114] 25864(52.3%) 318(0.6%) for-loop ...rbie/master/src/core/simplify.rkt:96:4 merge-egraph-nodes! [123] 69.1% dedup-children! [142] 21.8% mk-enode-rec! [161] 6.0% pattern-substitute [128] 1.9% ------------------------------------------------------------------------------------ for-loop [115] 48.4% find-matches [108] 51.6% [115] 6288(12.7%) 204(0.4%) for-loop ...rbie/master/src/core/simplify.rkt:86:8 for-loop [115] 48.4% match-e [124] 48.4% ------------------------------------------------------------------------------------ for-loop [49] 8.7% ??? [112] 9.3% ??? [27] 16.6% for-loop [86] 16.6% atab-add-altn [98] 48.7% [116] 3292(6.7%) 0(0.0%) errors ...tlies/herbie/master/src/points.rkt:201:0 for-loop [125] 66.8% eval-prog [126] 33.2% ------------------------------------------------------------------------------------ ??? [107] 100.0% [117] 1730(3.5%) 248(0.5%) ival-mult ...rbie/master/src/biginterval.rkt:119:0 bfmul [185] 85.7% ------------------------------------------------------------------------------------ ??? [107] 100.0% [118] 1090(2.2%) 264(0.5%) sample-multi-bounded ...master/src/points.rkt:15:0 random-ranges [127] 51.9% return/no-unsupplied [132] 23.9% ------------------------------------------------------------------------------------ for-loop [109] 100.0% [119] 704(1.4%) 440(0.9%) for-loop ...e/master/src/core/extraction.rkt:37:16 for-loop [131] 37.5% ------------------------------------------------------------------------------------ for-loop [110] 100.0% [120] 410(0.8%) 0(0.0%) set-precompute! ...ter/src/core/simplify.rkt:110:0 for-loop [129] 100.0% ------------------------------------------------------------------------------------ ??? [107] 100.0% [121] 292(0.6%) 0(0.0%) mk-ival .../herbie/master/src/biginterval.rkt:65:0 bf [130] 100.0% ------------------------------------------------------------------------------------ repeat [113] 100.0% [122] 272(0.6%) 272(0.6%) for-loop ...rbie/master/src/core/localize.rkt:10:2 ------------------------------------------------------------------------------------ merge-egraph-nodes! [123] 6.2% for-loop [136] 10.7% for-loop [114] 83.1% [123] 17880(36.2%) 0(0.0%) merge-egraph-nodes! ...r/src/core/egraph.rkt:145:0 loop! [133] 38.4% update-leader! [134] 34.8% for-loop [136] 16.1% merge-egraph-nodes! [123] 6.2% dedup-children! [142] 4.6% ------------------------------------------------------------------------------------ for-loop [146] 32.1% for-loop [115] 67.9% [124] 6084(12.3%) 254(0.5%) match-e .../herbie/master/src/core/ematch.rkt:39:0 for-loop [135] 93.4% variable? [140] 1.7% constant? [138] 1.7% ??? [77] 1.1% ------------------------------------------------------------------------------------ errors [116] 100.0% [125] 2198(4.4%) 0(0.0%) for-loop ...ies/herbie/master/src/points.rkt:203:2 ??? [27] 100.0% ------------------------------------------------------------------------------------ errors [116] 100.0% [126] 1094(2.2%) 0(0.0%) eval-prog ...s/herbie/master/src/programs.rkt:83:0 temp85_0 [137] 72.0% loop [202] 28.0% ------------------------------------------------------------------------------------ sample-multi-bounded [118] 100.0% [127] 566(1.1%) 268(0.5%) random-ranges ...erbie/master/src/common.rkt:171:0 build--> [139] 52.7% ------------------------------------------------------------------------------------ pattern-substitute [128] 28.9% for-loop [114] 71.1% [128] 484(1.0%) 274(0.6%) pattern-substitute ...er/src/core/matcher.rkt:46:0 pattern-substitute [128] 28.9% constant? [138] 14.5% ------------------------------------------------------------------------------------ set-precompute! [120] 100.0% [129] 410(0.8%) 0(0.0%) for-loop ...bie/master/src/core/simplify.rkt:112:2 setfindf [141] 50.2% ??? [27] 49.8% ------------------------------------------------------------------------------------ mk-ival [121] 100.0% [130] 292(0.6%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 ??? [192] 100.0% ------------------------------------------------------------------------------------ for-loop [119] 100.0% [131] 264(0.5%) 264(0.5%) for-loop ...e/master/src/core/extraction.rkt:41:23 ------------------------------------------------------------------------------------ sample-multi-bounded [118] 100.0% [132] 260(0.5%) 260(0.5%) return/no-unsupplied ...ct/private/arr-i.rkt:542:0 ------------------------------------------------------------------------------------ loop [144] 27.7% merge-egraph-nodes! [123] 72.3% [133] 8666(17.5%) 740(1.5%) loop! ...es/herbie/master/src/core/enode.rkt:194:2 custom-set-union [145] 49.0% loop [144] 30.4% set [148] 13.2% update-en-expr [188] 3.6% ------------------------------------------------------------------------------------ merge-egraph-nodes! [123] 100.0% [134] 7340(14.9%) 0(0.0%) update-leader! ...master/src/core/egraph.rkt:213:0 for-loop [143] 96.0% custom-set-union! [151] 4.0% ------------------------------------------------------------------------------------ match-e [124] 100.0% [135] 6084(12.3%) 2786(5.6%) for-loop ...erbie/master/src/core/ematch.rkt:52:11 for-loop [146] 46.3% procedure-reduce-keyword-arity-mask [149] 12.5% foldl [153] 4.1% loop [144] 3.5% make-curried [152] 2.2% ------------------------------------------------------------------------------------ merge-egraph-nodes! [123] 100.0% [136] 5238(10.6%) 0(0.0%) for-loop ...erbie/master/src/core/egraph.rkt:199:4 merge-egraph-nodes! [123] 81.9% dedup-children! [142] 18.1% ------------------------------------------------------------------------------------ eval-prog [126] 24.7% eval-const-expr [36] 75.3% [137] 3188(6.5%) 0(0.0%) temp85_0 (unknown source) compile15 [147] 100.0% ------------------------------------------------------------------------------------ match-e [124] 49.5% pattern-substitute [128] 50.5% [138] 416(0.8%) 206(0.4%) constant? ...ie/master/src/syntax/syntax.rkt:726:0 value? [154] 50.5% ------------------------------------------------------------------------------------ random-ranges [127] 100.0% [139] 298(0.6%) 0(0.0%) build--> ...act/private/arrow-val-first.rkt:1088:0 coerce-contract [150] 100.0% ------------------------------------------------------------------------------------ match-e [124] 100.0% [140] 208(0.4%) 0(0.0%) variable? ...ie/master/src/syntax/syntax.rkt:729:0 ??? [77] 100.0% ------------------------------------------------------------------------------------ for-loop [129] 100.0% [141] 206(0.4%) 0(0.0%) setfindf ...ies/herbie/master/src/common.rkt:130:0 for-loop [155] 100.0% ------------------------------------------------------------------------------------ merge-egraph-nodes! [123] 12.3% for-loop [136] 12.6% for-loop [114] 75.1% [142] 7516(15.2%) 0(0.0%) dedup-children! ...master/src/core/enode.rkt:202:0 loop [156] 71.2% loop [160] 28.8% ------------------------------------------------------------------------------------ update-leader! [134] 100.0% [143] 7044(14.3%) 426(0.9%) for-loop ...erbie/master/src/core/egraph.rkt:218:6 hash-update! [168] 57.7% for-loop [159] 36.2% ------------------------------------------------------------------------------------ map [56] 0.1% for-loop [135] 0.5% taylor [100] 3.1% for-loop [46] 7.2% loop! [133] 8.6% mk-enode-rec! [161] 12.5% loop [144] 67.9% [144] 6852(13.9%) 694(1.4%) loop ...-7.2/collects/racket/private/map.rkt:40:19 loop [144] 67.9% mk-enode-rec! [161] 12.5% loop! [133] 8.5% ??? [162] 3.6% simplify [15] 3.1% bffma [167] 0.1% ------------------------------------------------------------------------------------ loop! [133] 100.0% [145] 4698(9.5%) 676(1.4%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [157] 80.2% for-loop [165] 5.4% ------------------------------------------------------------------------------------ for-loop [135] 100.0% [146] 4214(8.5%) 0(0.0%) for-loop ...erbie/master/src/core/ematch.rkt:58:37 match-e [124] 89.0% ??? [163] 11.0% ------------------------------------------------------------------------------------ temp85_0 [137] 100.0% [147] 3188(6.5%) 0(0.0%) compile15 (unknown source) temp91_0 [158] 100.0% ------------------------------------------------------------------------------------ loop! [133] 100.0% [148] 2286(4.6%) 2286(4.6%) set ...collects/racket/private/set-types.rkt:981:0 ------------------------------------------------------------------------------------ for-loop [135] 100.0% [149] 1036(2.1%) 1036(2.1%) procedure-reduce-keyword-arity-mask ....rkt:1562:4 ------------------------------------------------------------------------------------ build--> [139] 100.0% [150] 298(0.6%) 0(0.0%) coerce-contract ...contract/private/guts.rkt:308:0 coerce-contract/f [164] 100.0% ------------------------------------------------------------------------------------ update-leader! [134] 100.0% [151] 296(0.6%) 296(0.6%) custom-set-union! ...t/private/set-types.rkt:245:0 ------------------------------------------------------------------------------------ for-loop [135] 100.0% [152] 262(0.5%) 262(0.5%) make-curried ...collects/racket/function.rkt:130:9 ------------------------------------------------------------------------------------ for-loop [135] 100.0% [153] 248(0.5%) 0(0.0%) foldl ....2/collects/racket/private/list.rkt:229:4 merge2 [166] 100.0% ------------------------------------------------------------------------------------ constant? [138] 100.0% [154] 210(0.4%) 210(0.4%) value? .../herbie/master/src/syntax/types.rkt:18:0 ------------------------------------------------------------------------------------ setfindf [141] 100.0% [155] 206(0.4%) 206(0.4%) for-loop ...ies/herbie/master/src/common.rkt:131:2 ------------------------------------------------------------------------------------ dedup-children! [142] 9.2% loop [156] 90.8% [156] 5352(10.8%) 5352(10.8%) loop ...racket-7.2/collects/racket/list.rkt:434:17 loop [156] 90.8% ------------------------------------------------------------------------------------ custom-set-union [145] 100.0% [157] 3766(7.6%) 2298(4.7%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [170] 39.0% ------------------------------------------------------------------------------------ compile15 [147] 100.0% [158] 3188(6.5%) 0(0.0%) temp91_0 (unknown source) temp118_0 [169] 83.8% compile-top9 [173] 16.2% ------------------------------------------------------------------------------------ for-loop [143] 100.0% [159] 2552(5.2%) 0(0.0%) for-loop ...erbie/master/src/core/egraph.rkt:219:8 hash-update! [168] 100.0% ------------------------------------------------------------------------------------ dedup-children! [142] 27.2% loop [160] 72.8% [160] 2164(4.4%) 0(0.0%) loop ...racket-7.2/collects/racket/list.rkt:417:34 loop [160] 72.8% member [171] 19.9% loop [202] 7.4% ------------------------------------------------------------------------------------ for-loop [89] 5.5% loop [144] 27.1% for-loop [114] 67.4% [161] 1974(4.0%) 688(1.4%) mk-enode-rec! .../master/src/core/egraph.rkt:117:0 loop [144] 27.1% for-loop [172] 22.0% hash-has-key? [174] 13.2% do-curry [177] 2.9% ------------------------------------------------------------------------------------ loop [144] 33.4% map [56] 66.6% [162] 748(1.5%) 0(0.0%) ??? ...ghtlies/herbie/master/src/points.rkt:190:26 ??? [64] 66.0% *bit-width* [176] 34.0% ------------------------------------------------------------------------------------ for-loop [146] 100.0% [163] 462(0.9%) 462(0.9%) ??? ...lies/herbie/master/src/core/ematch.rkt:43:5 ------------------------------------------------------------------------------------ coerce-contract [150] 100.0% [164] 298(0.6%) 0(0.0%) coerce-contract/f ...ntract/private/guts.rkt:373:0 coerce-simple-value [175] 100.0% ------------------------------------------------------------------------------------ custom-set-union [145] 100.0% [165] 256(0.5%) 256(0.5%) for-loop ...cts/racket/private/set-types.rkt:152:2 ------------------------------------------------------------------------------------ foldl [153] 100.0% [166] 248(0.5%) 248(0.5%) merge2 ...s/herbie/master/src/core/ematch.rkt:24:0 ------------------------------------------------------------------------------------ loop [144] 100.0% [167] 212(0.4%) 0(0.0%) bffma ...herbie/master/src/syntax/syntax.rkt:375:0 bf* [178] 100.0% ------------------------------------------------------------------------------------ for-loop [159] 38.6% for-loop [143] 61.4% [168] 6618(13.4%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [179] 100.0% ------------------------------------------------------------------------------------ temp91_0 [158] 100.0% [169] 2670(5.4%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [180] 100.0% ------------------------------------------------------------------------------------ for-loop [157] 100.0% [170] 1468(3.0%) 1468(3.0%) for-loop ...cts/racket/private/set-types.rkt:178:5 ------------------------------------------------------------------------------------ loop [160] 100.0% [171] 1278(2.6%) 1278(2.6%) member (unknown source) ------------------------------------------------------------------------------------ mk-enode-rec! [161] 100.0% [172] 644(1.3%) 644(1.3%) for-loop ...rbie/master/src/core/egraph.rkt:109:10 ------------------------------------------------------------------------------------ temp91_0 [158] 100.0% [173] 518(1.0%) 0(0.0%) compile-top9 (unknown source) compile-forms33 [181] 100.0% ------------------------------------------------------------------------------------ mk-enode-rec! [161] 100.0% [174] 416(0.8%) 416(0.8%) hash-has-key? ...ket/private/more-scheme.rkt:371:2 ------------------------------------------------------------------------------------ coerce-contract/f [164] 100.0% [175] 298(0.6%) 298(0.6%) coerce-simple-value ...ract/private/guts.rkt:386:0 ------------------------------------------------------------------------------------ ??? [162] 100.0% [176] 254(0.5%) 254(0.5%) *bit-width* ...es/herbie/master/src/float.rkt:35:0 ------------------------------------------------------------------------------------ mk-enode-rec! [161] 100.0% [177] 226(0.5%) 226(0.5%) do-curry ...-7.2/collects/racket/function.rkt:71:2 ------------------------------------------------------------------------------------ bffma [167] 100.0% [178] 212(0.4%) 0(0.0%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [182] 100.0% ------------------------------------------------------------------------------------ hash-update! [168] 100.0% [179] 6618(13.4%) 0(0.0%) ??? ...es/herbie/master/src/core/egraph.rkt:221:24 for-loop [183] 100.0% ------------------------------------------------------------------------------------ loop [202] 10.3% temp118_0 [169] 89.7% [180] 2976(6.0%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [184] 72.8% dispatch-transformer41 [186] 27.2% ------------------------------------------------------------------------------------ compile-top9 [173] 100.0% [181] 518(1.0%) 0(0.0%) compile-forms33 (unknown source) loop! [187] 50.2% for-loop [193] 49.8% ------------------------------------------------------------------------------------ bf* [178] 100.0% [182] 212(0.4%) 0(0.0%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfmul [185] 100.0% ------------------------------------------------------------------------------------ ??? [179] 100.0% [183] 6618(13.4%) 5050(10.2%) for-loop ...rbie/master/src/core/egraph.rkt:222:26 update-en-expr [188] 23.7% ------------------------------------------------------------------------------------ expand-capturing-lifts [180] 100.0% [184] 2168(4.4%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [189] 89.5% loop [202] 10.5% ------------------------------------------------------------------------------------ ??? [182] 10.7% ival-add [104] 14.4% ival-mult [117] 74.9% [185] 1978(4.0%) 0(0.0%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:821:4 new-mpfr [191] 69.2% ??? [192] 30.8% ------------------------------------------------------------------------------------ loop [202] 12.1% expand-capturing-lifts [180] 42.9% for-loop [193] 45.0% [186] 1884(3.8%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [190] 100.0% ------------------------------------------------------------------------------------ compile-forms33 [181] 100.0% [187] 260(0.5%) 0(0.0%) loop! (unknown source) for-loop [193] 100.0% ------------------------------------------------------------------------------------ loop! [133] 31.0% for-loop [183] 69.0% [188] 2272(4.6%) 2272(4.6%) update-en-expr ...master/src/core/egraph.rkt:207:0 ------------------------------------------------------------------------------------ lambda-clause-expander [184] 28.7% for-loop [193] 71.3% [189] 1940(3.9%) 0(0.0%) finish-bodys (unknown source) for-loop [193] 100.0% ------------------------------------------------------------------------------------ dispatch-transformer41 [186] 100.0% [190] 1884(3.8%) 0(0.0%) apply-transformer52 (unknown source) apply-transformer-in-context [194] 72.1% loop [202] 27.9% ------------------------------------------------------------------------------------ bfsqrt [111] 21.3% bfmul [185] 78.7% [191] 1738(3.5%) 1738(3.5%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 ------------------------------------------------------------------------------------ bf [130] 32.4% bfmul [185] 67.6% [192] 902(1.8%) 902(1.8%) ??? /opt/racket-7.2/collects/ffi/unsafe.rkt:905:4 ------------------------------------------------------------------------------------ fallback-loop [30] 3.6% compile-forms33 [181] 10.5% loop! [187] 10.6% for-loop [193] 14.8% finish-bodys [189] 60.6% [193] 2458(5.0%) 898(1.8%) for-loop (unknown source) finish-bodys [189] 47.2% for-loop [193] 14.8% module-uses-extract-extra-inspectorsss [196] 10.5% dispatch-transformer41 [186] 4.8% expand-implicit [10] 3.6% expand-identifier [12] 1.4% syntax-e [8] 1.4% ------------------------------------------------------------------------------------ apply-transformer52 [190] 100.0% [194] 1358(2.7%) 306(0.6%) apply-transformer-in-context (unknown source) parse-app [195] 41.8% parse-lambda [197] 18.9% ??? [198] 16.8% ------------------------------------------------------------------------------------ apply-transformer-in-context [194] 100.0% [195] 568(1.1%) 0(0.0%) parse-app ...collects/racket/private/kw.rkt:1107:2 syntax->list [201] 100.0% ------------------------------------------------------------------------------------ for-loop [193] 100.0% [196] 258(0.5%) 258(0.5%) module-uses-extract-extra-inspectorsss ... source) ------------------------------------------------------------------------------------ apply-transformer-in-context [194] 100.0% [197] 256(0.5%) 0(0.0%) parse-lambda ...llects/racket/private/kw.rkt:587:2 t-subst [199] 100.0% ------------------------------------------------------------------------------------ apply-transformer-in-context [194] 100.0% [198] 228(0.5%) 0(0.0%) ??? ...collects/racket/private/qq-and-or.rkt:155:9 ??? [200] 100.0% ------------------------------------------------------------------------------------ parse-lambda [197] 100.0% [199] 256(0.5%) 256(0.5%) t-subst ...lects/racket/private/template.rkt:680:0 ------------------------------------------------------------------------------------ ??? [198] 100.0% [200] 228(0.5%) 0(0.0%) ??? ...ollects/racket/private/qq-and-or.rkt:164:21 syntax->list [201] 100.0% ------------------------------------------------------------------------------------ ??? [200] 28.6% parse-app [195] 71.4% [201] 796(1.6%) 0(0.0%) syntax->list (unknown source) loop [202] 100.0% ------------------------------------------------------------------------------------ datum->syntax6 [61] 0.9% lambda-clause-expander [184] 2.6% loop [202] 6.2% eval-prog [126] 10.5% apply-transformer52 [190] 13.2% syntax->list [201] 16.9% syntax-e/no-taint [21] 19.5% loop [160] 30.3% [202] 2926(5.9%) 1660(3.4%) loop (unknown source) gf [203] 14.4% syntax-e [8] 12.5% expand-capturing-lifts [180] 10.5% core-form-sym [204] 8.4% loop [202] 6.2% dispatch-transformer41 [186] 2.6% ------------------------------------------------------------------------------------ loop [202] 100.0% [203] 714(1.4%) 280(0.6%) gf (unknown source) cache-or-reuse-hash [205] 31.9% propagation-apply [206] 28.9% ------------------------------------------------------------------------------------ loop [202] 100.0% [204] 246(0.5%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [22] 100.0% ------------------------------------------------------------------------------------ gf [203] 100.0% [205] 228(0.5%) 228(0.5%) cache-or-reuse-hash (unknown source) ------------------------------------------------------------------------------------ gf [203] 100.0% [206] 206(0.4%) 206(0.4%) propagation-apply (unknown source) ------------------------------------------------------------------------------------