Profiling results ----------------- Total cpu time observed: 69926ms (out of 70524ms) Number of samples taken: 218 (once every 321ms) (Hiding functions with self<1.0% and local<2.0%: 3 of 204 hidden) ================================================================================ Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ================================================================================ run [28] 50.0% [1] 69926(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [13] 50.0% run-improve39 [14] 37.0% loop [15] 6.8% get-final-combination [20] 2.7% oracle-error [21] 2.7% eval-errors [101] 0.7% baseline-error [27] 0.2% -------------------------------------------------------------------------------- ??? [159] 100.0% [2] 8092(11.6%) 0(0.0%) approximate9 ...e/develop/src/core/taylor.rkt:12:0 loop [16] 88.4% for-loop [24] 7.9% simplify [127] 3.8% -------------------------------------------------------------------------------- loop [100] 100.0% [3] 4720(6.7%) 0(0.0%) set-precompute! ...lop/src/core/simplify.rkt:140:0 for-loop [17] 100.0% -------------------------------------------------------------------------------- hash-ref! [115] 100.0% [4] 4664(6.7%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:300:23 for-loop [18] 100.0% -------------------------------------------------------------------------------- hash-ref! [115] 100.0% [5] 4040(5.8%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:416:23 for-loop [19] 100.0% -------------------------------------------------------------------------------- expand-capturing-lifts [160] 24.7% loop [190] 24.8% for-loop [188] 50.6% [6] 2472(3.5%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [22] 100.0% -------------------------------------------------------------------------------- loop [190] 19.7% for-loop [188] 80.3% [7] 1522(2.2%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [23] 100.0% -------------------------------------------------------------------------------- hash-ref! [115] 100.0% [8] 616(0.9%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:290:26 for-loop [25] 100.0% -------------------------------------------------------------------------------- match-e [83] 100.0% [9] 546(0.8%) 0(0.0%) variable? ...e/develop/src/syntax/syntax.rkt:715:0 ??? [65] 100.0% -------------------------------------------------------------------------------- ??? [159] 100.0% [10] 322(0.5%) 0(0.0%) best-alt .../herbie/develop/src/mainloop.rkt:109:0 loop [26] 100.0% -------------------------------------------------------------------------------- copying-mergesort [97] 100.0% [11] 312(0.4%) 0(0.0%) jloop ...t/collects/racket/private/sort.rkt:120:23 ??? [159] 100.0% -------------------------------------------------------------------------------- taylor [165] 100.0% [12] 310(0.4%) 0(0.0%) taylor-log ...ie/develop/src/core/taylor.rkt:512:0 simplify [127] 100.0% -------------------------------------------------------------------------------- ??? [1] 100.0% [13] 69926(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [28] 100.0% -------------------------------------------------------------------------------- ??? [1] 100.0% [14] 51688(73.9%) 0(0.0%) run-improve39 ...ie/develop/src/mainloop.rkt:287:0 for-loop [29] 95.9% for-loop [33] 4.1% -------------------------------------------------------------------------------- ??? [1] 100.0% [15] 9464(13.5%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:167:2 loop [30] 44.5% loop [46] 43.9% make-exacts* [48] 4.2% make-exacts [37] 4.2% for-loop [40] 3.3% -------------------------------------------------------------------------------- approximate9 [2] 100.0% [16] 7150(10.2%) 0(0.0%) loop ...es/herbie/develop/src/core/taylor.rkt:87:4 ??? [159] 61.3% hash-ref! [115] 34.3% iterate-diagonal [39] 4.4% -------------------------------------------------------------------------------- set-precompute! [3] 100.0% [17] 4720(6.7%) 306(0.4%) for-loop ...ie/develop/src/core/simplify.rkt:142:2 update-leader! [104] 38.5% eval-const-expr [34] 25.0% reduce-to-new! [35] 24.6% setfindf [43] 5.4% -------------------------------------------------------------------------------- ??? [4] 100.0% [18] 4664(6.7%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:303:27 hash-ref! [115] 86.3% simplify [127] 13.7% -------------------------------------------------------------------------------- ??? [5] 100.0% [19] 4040(5.8%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:420:33 hash-ref! [115] 100.0% -------------------------------------------------------------------------------- ??? [1] 100.0% [20] 3800(5.4%) 0(0.0%) get-final-combination ...op/src/mainloop.rkt:310:0 infer-splitpoints [31] 100.0% -------------------------------------------------------------------------------- ??? [1] 100.0% [21] 3776(5.4%) 0(0.0%) oracle-error ...erbie/develop/src/points.rkt:227:0 for-loop [32] 100.0% -------------------------------------------------------------------------------- dispatch-transformer41 [6] 100.0% [22] 2472(3.5%) 928(1.3%) apply-transformer52 (unknown source) apply-transformer-in-context [36] 36.6% loop [190] 25.9% -------------------------------------------------------------------------------- expand-id-application-form17 [194] 17.5% syntax-e [7] 82.5% [23] 1844(2.6%) 0(0.0%) syntax-e/no-taint (unknown source) loop [190] 100.0% -------------------------------------------------------------------------------- approximate9 [2] 100.0% [24] 636(0.9%) 0(0.0%) for-loop ...rbie/develop/src/core/taylor.rkt:30:18 taylor [165] 100.0% -------------------------------------------------------------------------------- ??? [8] 100.0% [25] 616(0.9%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:290:52 hash-ref! [115] 51.3% ??? [41] 48.7% -------------------------------------------------------------------------------- best-alt [10] 100.0% [26] 322(0.5%) 0(0.0%) loop ...htlies/herbie/develop/src/common.rkt:130:2 ??? [38] 100.0% -------------------------------------------------------------------------------- ??? [1] 100.0% [27] 288(0.4%) 0(0.0%) baseline-error ...bie/develop/src/points.rkt:231:0 argmin [42] 100.0% -------------------------------------------------------------------------------- profile-thunk16 [13] 100.0% [28] 69926(100.0%) 0(0.0%) run ...racket/share/pkgs/profile-lib/main.rkt:39:2 ??? [1] 100.0% -------------------------------------------------------------------------------- run-improve39 [14] 100.0% [29] 49546(70.9%) 0(0.0%) for-loop ...herbie/develop/src/mainloop.rkt:304:10 run-iter! [44] 100.0% -------------------------------------------------------------------------------- loop [15] 100.0% [30] 4208(6.0%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:125:2 make-exacts* [48] 61.0% loop [46] 39.0% -------------------------------------------------------------------------------- get-final-combination [20] 100.0% [31] 3800(5.4%) 0(0.0%) infer-splitpoints ...lop/src/core/regimes.rkt:32:0 for-loop [47] 100.0% -------------------------------------------------------------------------------- oracle-error [21] 100.0% [32] 3776(5.4%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:228:2 loop [100] 58.4% map [149] 41.6% -------------------------------------------------------------------------------- run-improve39 [14] 100.0% [33] 2142(3.1%) 0(0.0%) for-loop ...herbie/develop/src/mainloop.rkt:298:19 ??? [45] 100.0% -------------------------------------------------------------------------------- for-loop [17] 100.0% [34] 1182(1.7%) 0(0.0%) eval-const-expr .../develop/src/programs.rkt:132:0 eval-prog [103] 100.0% -------------------------------------------------------------------------------- for-loop [17] 100.0% [35] 1160(1.7%) 0(0.0%) reduce-to-new! ...evelop/src/core/egraph.rkt:337:0 merge-egraph-nodes! [95] 100.0% -------------------------------------------------------------------------------- apply-transformer52 [22] 100.0% [36] 904(1.3%) 0(0.0%) apply-transformer-in-context (unknown source) datum->syntax6 [49] 34.5% ??? [51] 33.2% parse-lambda [52] 32.3% -------------------------------------------------------------------------------- loop [15] 100.0% [37] 394(0.6%) 0(0.0%) make-exacts ...herbie/develop/src/points.rkt:123:0 make-exacts* [48] 100.0% -------------------------------------------------------------------------------- loop [26] 100.0% [38] 322(0.5%) 0(0.0%) ??? ...lies/herbie/develop/src/mainloop.rkt:111:19 eval-errors [101] 100.0% -------------------------------------------------------------------------------- loop [16] 100.0% [39] 312(0.4%) 0(0.0%) iterate-diagonal ...elop/src/core/taylor.rkt:154:0 hash-ref! [115] 100.0% -------------------------------------------------------------------------------- loop [15] 100.0% [40] 308(0.4%) 0(0.0%) for-loop ...s/herbie/develop/src/points.rkt:182:19 for-loop [50] 100.0% -------------------------------------------------------------------------------- for-loop [25] 100.0% [41] 300(0.4%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:293:19 hash-ref! [115] 100.0% -------------------------------------------------------------------------------- baseline-error [27] 100.0% [42] 288(0.4%) 0(0.0%) argmin ...92/racket/collects/racket/list.rkt:765:0 ??? [53] 100.0% -------------------------------------------------------------------------------- for-loop [17] 100.0% [43] 254(0.4%) 254(0.4%) setfindf ...es/herbie/develop/src/common.rkt:163:0 -------------------------------------------------------------------------------- for-loop [29] 100.0% [44] 49546(70.9%) 0(0.0%) run-iter! ...herbie/develop/src/mainloop.rkt:268:0 simplify! [55] 54.0% finalize-iter! [56] 27.2% gen-series! [57] 16.9% localize-error [59] 1.2% choose-best-alt! [60] 0.6% -------------------------------------------------------------------------------- for-loop [33] 7.4% ??? [159] 92.6% [45] 28894(41.3%) 0(0.0%) ??? ...s/herbie/develop/src/core/simplify.rkt:31:0 iterate-egraph!7 [54] 98.9% loop [61] 1.1% -------------------------------------------------------------------------------- loop [30] 28.3% loop [15] 71.7% [46] 5798(8.3%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:108:4 loop [100] 100.0% -------------------------------------------------------------------------------- infer-splitpoints [31] 100.0% [47] 3800(5.4%) 0(0.0%) for-loop ...rbie/develop/src/core/regimes.rkt:44:6 option-on-expr [58] 100.0% -------------------------------------------------------------------------------- make-exacts [37] 11.7% loop [15] 11.8% loop [30] 76.5% [48] 3358(4.8%) 0(0.0%) make-exacts* ...erbie/develop/src/points.rkt:105:0 loop [100] 100.0% -------------------------------------------------------------------------------- apply-transformer-in-context [36] 100.0% [49] 312(0.4%) 0(0.0%) datum->syntax6 (unknown source) loop [190] 100.0% -------------------------------------------------------------------------------- for-loop [40] 100.0% [50] 308(0.4%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:159:4 ??? [159] 100.0% -------------------------------------------------------------------------------- apply-transformer-in-context [36] 100.0% [51] 300(0.4%) 0(0.0%) ??? ...collects/racket/private/qq-and-or.rkt:155:9 ??? [62] 100.0% -------------------------------------------------------------------------------- apply-transformer-in-context [36] 100.0% [52] 292(0.4%) 292(0.4%) parse-lambda ...llects/racket/private/kw.rkt:585:2 -------------------------------------------------------------------------------- argmin [42] 100.0% [53] 288(0.4%) 0(0.0%) ??? ...htlies/herbie/develop/src/points.rkt:232:27 eval-errors [101] 100.0% -------------------------------------------------------------------------------- ??? [45] 100.0% [54] 28584(40.9%) 298(0.4%) iterate-egraph!7 ...lop/src/core/simplify.rkt:55:0 one-iter [64] 82.4% map-enodes [67] 16.5% -------------------------------------------------------------------------------- run-iter! [44] 100.0% [55] 26752(38.3%) 0(0.0%) simplify! ...herbie/develop/src/mainloop.rkt:182:0 for-loop [63] 100.0% -------------------------------------------------------------------------------- run-iter! [44] 100.0% [56] 13492(19.3%) 0(0.0%) finalize-iter! ...e/develop/src/mainloop.rkt:222:0 ??? [65] 100.0% -------------------------------------------------------------------------------- run-iter! [44] 100.0% [57] 8392(12.0%) 0(0.0%) gen-series! ...rbie/develop/src/mainloop.rkt:152:0 for-loop [66] 100.0% -------------------------------------------------------------------------------- for-loop [47] 100.0% [58] 3800(5.4%) 0(0.0%) option-on-expr ...velop/src/core/regimes.rkt:112:0 err-lsts->split-indices [68] 32.9% for-loop [69] 32.7% sort-context-on-expr [70] 25.2% debug-print [146] 9.1% -------------------------------------------------------------------------------- run-iter! [44] 100.0% [59] 588(0.8%) 0(0.0%) localize-error ...velop/src/core/localize.rkt:51:0 hash-ref! [115] 100.0% -------------------------------------------------------------------------------- run-iter! [44] 100.0% [60] 322(0.5%) 0(0.0%) choose-best-alt! ...develop/src/mainloop.rkt:114:0 ??? [65] 100.0% -------------------------------------------------------------------------------- ??? [45] 100.0% [61] 310(0.4%) 0(0.0%) loop ...herbie/develop/src/core/simplify.rkt:184:2 for-loop [71] 100.0% -------------------------------------------------------------------------------- ??? [51] 100.0% [62] 300(0.4%) 0(0.0%) ??? ...ollects/racket/private/qq-and-or.rkt:164:21 syntax->list [72] 100.0% -------------------------------------------------------------------------------- simplify! [55] 100.0% [63] 26752(38.3%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:186:6 for-loop [73] 100.0% -------------------------------------------------------------------------------- iterate-egraph!7 [54] 100.0% [64] 23566(33.7%) 310(0.4%) one-iter ...bie/develop/src/core/simplify.rkt:66:0 for-loop [75] 51.5% for-loop [76] 47.2% -------------------------------------------------------------------------------- choose-best-alt! [60] 2.2% match-e [83] 2.3% variable? [9] 3.7% finalize-iter! [56] 91.8% [65] 14704(21.0%) 890(1.3%) ??? ...contract/private/arrow-val-first.rkt:388:18 for-loop [74] 91.8% ??? [80] 2.2% -------------------------------------------------------------------------------- gen-series! [57] 100.0% [66] 8392(12.0%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:158:7 taylor-alt [77] 100.0% -------------------------------------------------------------------------------- iterate-egraph!7 [54] 100.0% [67] 4720(6.7%) 0(0.0%) map-enodes ...ie/develop/src/core/egraph.rkt:140:0 loop [100] 100.0% -------------------------------------------------------------------------------- option-on-expr [58] 100.0% [68] 1252(1.8%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:238:0 loop [78] 100.0% -------------------------------------------------------------------------------- option-on-expr [58] 100.0% [69] 1244(1.8%) 0(0.0%) for-loop ...bie/develop/src/core/regimes.rkt:120:4 eval-errors [101] 75.9% eval-prog [103] 24.1% -------------------------------------------------------------------------------- option-on-expr [58] 100.0% [70] 958(1.4%) 0(0.0%) sort-context-on-expr ...evelop/src/points.rkt:91:0 ??? [79] 100.0% -------------------------------------------------------------------------------- loop [61] 100.0% [71] 310(0.4%) 0(0.0%) for-loop ...e/develop/src/core/simplify.rkt:177:29 for-loop [81] 100.0% -------------------------------------------------------------------------------- ??? [62] 100.0% [72] 300(0.4%) 0(0.0%) syntax->list (unknown source) loop [190] 100.0% -------------------------------------------------------------------------------- for-loop [63] 100.0% [73] 26752(38.3%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:210:8 ??? [159] 100.0% -------------------------------------------------------------------------------- ??? [65] 100.0% [74] 13492(19.3%) 0(0.0%) for-loop ...ie/develop/src/core/alt-table.rkt:51:2 atab-add-altn [82] 97.9% loop [91] 2.1% -------------------------------------------------------------------------------- for-loop [75] 46.2% one-iter [64] 53.8% [75] 12136(17.4%) 3626(5.2%) for-loop ...ie/develop/src/core/simplify.rkt:76:12 for-loop [75] 46.2% match-e [83] 35.1% -------------------------------------------------------------------------------- one-iter [64] 100.0% [76] 11120(15.9%) 0(0.0%) for-loop ...ie/develop/src/core/simplify.rkt:113:2 for-loop [85] 62.7% match-e [83] 23.2% set [132] 5.8% custom-set-intersect [88] 5.4% custom-subset? [89] 2.8% -------------------------------------------------------------------------------- for-loop [66] 100.0% [77] 8392(12.0%) 0(0.0%) taylor-alt ...erbie/develop/src/mainloop.rkt:137:0 for-loop [84] 100.0% -------------------------------------------------------------------------------- err-lsts->split-indices [68] 100.0% [78] 1252(1.8%) 0(0.0%) loop .../herbie/develop/src/core/regimes.rkt:289:4 for-loop [86] 100.0% -------------------------------------------------------------------------------- sort-context-on-expr [70] 100.0% [79] 958(1.4%) 0(0.0%) ??? ...cket/collects/racket/private/sort.rkt:369:3 generic-sort/key [87] 100.0% -------------------------------------------------------------------------------- ??? [65] 100.0% [80] 322(0.5%) 0(0.0%) ??? .../herbie/develop/src/core/alt-table.rkt:54:0 ??? [159] 100.0% -------------------------------------------------------------------------------- for-loop [71] 100.0% [81] 310(0.4%) 0(0.0%) for-loop ...e/develop/src/core/simplify.rkt:164:13 for-loop [90] 100.0% -------------------------------------------------------------------------------- for-loop [74] 100.0% [82] 13214(18.9%) 312(0.4%) atab-add-altn ...elop/src/core/alt-table.rkt:210:0 override-at-pnts [93] 53.6% best-and-tied-at-points [94] 44.0% -------------------------------------------------------------------------------- for-loop [76] 17.9% for-loop [102] 19.1% for-loop [75] 63.0% [83] 11094(15.9%) 1754(2.5%) match-e ...herbie/develop/src/core/ematch.rkt:46:0 for-loop [92] 83.1% variable? [9] 2.5% ??? [65] 1.0% -------------------------------------------------------------------------------- taylor-alt [77] 100.0% [84] 8392(12.0%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:143:6 ??? [159] 100.0% -------------------------------------------------------------------------------- for-loop [76] 100.0% [85] 6970(10.0%) 0(0.0%) for-loop ...bie/develop/src/core/simplify.rkt:98:4 merge-egraph-nodes! [95] 51.4% loop! [117] 35.7% mk-enode! [121] 8.6% substitute-e [99] 4.3% -------------------------------------------------------------------------------- loop [78] 100.0% [86] 1252(1.8%) 316(0.5%) for-loop ...bie/develop/src/core/regimes.rkt:254:4 for-loop [96] 74.8% -------------------------------------------------------------------------------- ??? [79] 100.0% [87] 958(1.4%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [97] 67.6% loop [107] 32.4% -------------------------------------------------------------------------------- for-loop [76] 100.0% [88] 606(0.9%) 0(0.0%) custom-set-intersect ...rivate/set-types.rkt:195:0 for-loop [98] 100.0% -------------------------------------------------------------------------------- for-loop [76] 100.0% [89] 314(0.4%) 314(0.4%) custom-subset? ...acket/private/set-types.rkt:68:0 -------------------------------------------------------------------------------- for-loop [81] 100.0% [90] 310(0.4%) 310(0.4%) for-loop ...e/develop/src/core/simplify.rkt:167:37 -------------------------------------------------------------------------------- for-loop [74] 100.0% [91] 278(0.4%) 278(0.4%) loop ...erbie/develop/src/core/alt-table.rkt:184:2 -------------------------------------------------------------------------------- match-e [83] 100.0% [92] 9966(14.3%) 3260(4.7%) for-loop ...rbie/develop/src/core/ematch.rkt:59:11 for-loop [102] 54.4% list-cartesian-product [106] 11.5% loop [100] 3.1% filter [189] 2.8% -------------------------------------------------------------------------------- atab-add-altn [82] 100.0% [93] 7088(10.1%) 0(0.0%) override-at-pnts ...p/src/core/alt-table.rkt:145:0 eval-errors [101] 64.8% eval-prog [103] 30.9% for-loop [110] 4.2% -------------------------------------------------------------------------------- atab-add-altn [82] 100.0% [94] 5814(8.3%) 0(0.0%) best-and-tied-at-points ...ore/alt-table.rkt:122:0 eval-errors [101] 52.4% eval-prog [103] 37.0% for-loop [108] 10.6% -------------------------------------------------------------------------------- for-loop [105] 15.6% reduce-to-new! [35] 24.5% for-loop [85] 59.9% [95] 4742(6.8%) 0(0.0%) merge-egraph-nodes! ...p/src/core/egraph.rkt:153:0 update-leader! [104] 66.2% for-loop [105] 33.8% -------------------------------------------------------------------------------- for-loop [86] 100.0% [96] 936(1.3%) 624(0.9%) for-loop ...bie/develop/src/core/regimes.rkt:258:8 curried [109] 33.3% -------------------------------------------------------------------------------- copying-mergesort [97] 36.1% generic-sort/key [87] 63.9% [97] 648(0.9%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 loop [107] 51.9% copying-mergesort [97] 36.1% jloop [11] 12.0% -------------------------------------------------------------------------------- custom-set-intersect [88] 100.0% [98] 606(0.9%) 330(0.5%) for-loop ...cts/racket/private/set-types.rkt:207:3 for-loop [112] 45.5% -------------------------------------------------------------------------------- for-loop [85] 100.0% [99] 298(0.4%) 0(0.0%) substitute-e ...e/develop/src/core/ematch.rkt:71:0 for-loop [111] 100.0% -------------------------------------------------------------------------------- loop! [117] 1.0% loop [46] 1.3% for-loop [92] 1.4% make-exacts* [48] 1.8% taylor [165] 2.6% map [149] 2.7% map-enodes [67] 3.2% parse-loop80 [161] 5.2% for-loop [32] 6.0% ??? [125] 7.7% loop [100] 67.0% [100] 23102(33.0%) 964(1.4%) loop ...cket/collects/racket/private/map.rkt:40:19 loop [100] 67.0% ??? [159] 6.4% ??? [125] 5.9% ??? [163] 5.3% parse-loop80 [161] 4.9% set-precompute! [3] 3.2% simplify [127] 2.6% ??? [176] 1.2% loop! [117] 1.0% hash-ref! [115] 0.5% map [149] 0.5% bf [140] 0.0% -------------------------------------------------------------------------------- ??? [53] 2.8% ??? [38] 3.2% ??? [1] 9.0% for-loop [69] 9.3% best-and-tied-at-points [94] 30.1% override-at-pnts [93] 45.5% [101] 10106(14.5%) 0(0.0%) eval-errors ...herbie/develop/src/points.rkt:208:0 for-loop [113] 96.8% in-parallel [123] 3.2% -------------------------------------------------------------------------------- for-loop [92] 100.0% [102] 6472(9.3%) 984(1.4%) for-loop ...rbie/develop/src/core/ematch.rkt:65:37 match-e [83] 60.4% ??? [118] 24.4% -------------------------------------------------------------------------------- for-loop [69] 5.2% eval-const-expr [34] 20.3% best-and-tied-at-points [94] 36.9% override-at-pnts [93] 37.6% [103] 5824(8.3%) 0(0.0%) eval-prog ...herbie/develop/src/programs.rkt:109:0 temp68_2 [114] 78.9% f67 [142] 9.9% ??? [122] 5.7% eval [119] 5.5% -------------------------------------------------------------------------------- for-loop [17] 31.9% merge-egraph-nodes! [95] 68.1% [104] 5696(8.1%) 0(0.0%) update-leader! ...evelop/src/core/egraph.rkt:218:0 for-loop [116] 73.6% for-loop [120] 21.2% custom-set-union! [124] 5.2% -------------------------------------------------------------------------------- merge-egraph-nodes! [95] 100.0% [105] 2346(3.4%) 0(0.0%) for-loop ...bie/develop/src/core/egraph.rkt:201:10 merge-egraph-nodes! [95] 63.2% loop! [117] 36.8% -------------------------------------------------------------------------------- list-cartesian-product [106] 17.6% for-loop [92] 82.4% [106] 1736(2.5%) 1736(2.5%) list-cartesian-product ...src/core/ematch.rkt:20:0 list-cartesian-product [106] 17.6% -------------------------------------------------------------------------------- generic-sort/key [87] 48.0% copying-mergesort [97] 52.0% [107] 646(0.9%) 0(0.0%) loop ...ket/collects/racket/private/sort.rkt:96:12 ??? [125] 100.0% -------------------------------------------------------------------------------- best-and-tied-at-points [94] 100.0% [108] 618(0.9%) 618(0.9%) for-loop .../develop/src/core/alt-table.rkt:124:16 -------------------------------------------------------------------------------- for-loop [96] 100.0% [109] 312(0.4%) 312(0.4%) curried ...cket/collects/racket/function.rkt:71:18 -------------------------------------------------------------------------------- override-at-pnts [93] 100.0% [110] 300(0.4%) 300(0.4%) for-loop .../develop/src/core/alt-table.rkt:146:43 -------------------------------------------------------------------------------- substitute-e [99] 100.0% [111] 298(0.4%) 0(0.0%) for-loop ...rbie/develop/src/core/ematch.rkt:80:24 mk-enode! [121] 100.0% -------------------------------------------------------------------------------- for-loop [98] 100.0% [112] 276(0.4%) 276(0.4%) for-loop ...cts/racket/private/set-types.rkt:201:4 -------------------------------------------------------------------------------- eval-errors [101] 100.0% [113] 9786(14.0%) 634(0.9%) for-loop ...es/herbie/develop/src/points.rkt:210:2 ??? [125] 65.2% ulp-difference [173] 18.7% ??? [159] 6.5% ??? [135] 3.2% -------------------------------------------------------------------------------- f67 [142] 11.2% parse-loop80 [161] 31.5% eval-prog [103] 57.3% [114] 8018(11.5%) 0(0.0%) temp68_2 (unknown source) compile16 [126] 100.0% -------------------------------------------------------------------------------- ??? [41] 0.8% for-loop [25] 0.8% map [149] 0.9% loop [177] 1.1% ??? [130] 1.7% localize-error [59] 2.9% loop [100] 3.8% iterate-diagonal [39] 4.0% loop [16] 10.0% for-loop [19] 11.7% for-loop [18] 15.1% ??? [128] 21.1% ??? [159] 26.1% [115] 7738(11.1%) 312(0.4%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [128] 21.1% simplify [127] 20.1% ??? [4] 17.2% ??? [130] 11.7% ??? [5] 11.7% parse-loop80 [161] 6.7% taylor [165] 5.0% ??? [8] 1.6% f67 [142] 0.9% -------------------------------------------------------------------------------- update-leader! [104] 100.0% [116] 4192(6.0%) 298(0.4%) for-loop ...rbie/develop/src/core/egraph.rkt:223:6 for-loop [129] 92.9% -------------------------------------------------------------------------------- for-loop [105] 17.4% loop [100] 22.2% for-loop [85] 60.4% [117] 3354(4.8%) 568(0.8%) loop! ...s/herbie/develop/src/core/enode.rkt:190:2 custom-set-union [134] 36.6% loop [100] 32.2% set [132] 13.8% update-en-expr [174] 4.4% -------------------------------------------------------------------------------- for-loop [102] 100.0% [118] 1578(2.3%) 0(0.0%) ??? ...ies/herbie/develop/src/core/ematch.rkt:50:5 for-loop [131] 100.0% -------------------------------------------------------------------------------- f67 [142] 24.5% eval-prog [103] 25.3% parse-loop80 [161] 50.2% [119] 1264(1.8%) 0(0.0%) eval (unknown source) namespace-syntax-introduce3 [133] 100.0% -------------------------------------------------------------------------------- update-leader! [104] 100.0% [120] 1210(1.7%) 602(0.9%) for-loop ...rbie/develop/src/core/egraph.rkt:233:6 update-en-expr [174] 50.2% -------------------------------------------------------------------------------- for-loop [111] 33.2% for-loop [85] 66.8% [121] 898(1.3%) 298(0.4%) mk-enode! ...bie/develop/src/core/egraph.rkt:102:0 hash-has-key? [136] 33.4% for-loop [137] 33.4% -------------------------------------------------------------------------------- eval-prog [103] 100.0% [122] 332(0.5%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:361:33 ??? [176] 100.0% -------------------------------------------------------------------------------- eval-errors [101] 100.0% [123] 320(0.5%) 320(0.5%) in-parallel ...lects/racket/private/for.rkt:1198:2 -------------------------------------------------------------------------------- update-leader! [104] 100.0% [124] 294(0.4%) 0(0.0%) custom-set-union! ...t/private/set-types.rkt:245:0 for-loop [138] 100.0% -------------------------------------------------------------------------------- loop [107] 3.4% ??? [163] 10.0% for-loop [113] 33.6% loop [100] 53.0% [125] 19006(27.2%) 1256(1.8%) ??? ...tlies/herbie/develop/src/programs.rkt:129:2 ??? [141] 27.1% ??? [159] 26.0% bf [140] 23.7% loop [100] 16.6% -------------------------------------------------------------------------------- temp68_2 [114] 100.0% [126] 8018(11.5%) 0(0.0%) compile16 (unknown source) temp74_0 [139] 96.2% loop [190] 3.8% -------------------------------------------------------------------------------- approximate9 [2] 3.9% taylor-log [12] 4.0% taylor-exp [178] 4.2% loop [100] 7.8% for-loop [18] 8.2% hash-ref! [115] 71.9% [127] 7780(11.1%) 0(0.0%) simplify ...erbie/develop/src/core/reduce.rkt:16:0 parse-loop80 [161] 44.2% f67 [142] 44.1% simplify* [167] 4.0% debug7 [148] 3.9% debug-print [146] 3.8% -------------------------------------------------------------------------------- hash-ref! [115] 100.0% [128] 5904(8.4%) 0(0.0%) ??? ...es/herbie/develop/src/core/taylor.rkt:45:15 hash-ref! [115] 100.0% -------------------------------------------------------------------------------- for-loop [116] 100.0% [129] 3894(5.6%) 0(0.0%) for-loop ...rbie/develop/src/core/egraph.rkt:224:8 hash-update! [143] 100.0% -------------------------------------------------------------------------------- hash-ref! [115] 100.0% [130] 2452(3.5%) 0(0.0%) ??? ...es/herbie/develop/src/core/taylor.rkt:68:15 ??? [159] 87.3% hash-ref! [115] 12.7% -------------------------------------------------------------------------------- ??? [118] 100.0% [131] 1578(2.3%) 1578(2.3%) for-loop ...erbie/develop/src/core/ematch.rkt:51:7 -------------------------------------------------------------------------------- for-loop [76] 41.1% loop! [117] 58.9% [132] 1572(2.2%) 1250(1.8%) set ...collects/racket/private/set-types.rkt:981:0 for-loop [147] 20.5% -------------------------------------------------------------------------------- eval [119] 100.0% [133] 1264(1.8%) 0(0.0%) namespace-syntax-introduce3 (unknown source) add-ns-scopes [144] 75.2% for-loop [188] 24.8% -------------------------------------------------------------------------------- loop! [117] 100.0% [134] 1228(1.8%) 308(0.4%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [145] 74.9% -------------------------------------------------------------------------------- for-loop [113] 100.0% [135] 312(0.4%) 312(0.4%) ??? ...ket/collects/racket/private/for.rkt:1208:14 -------------------------------------------------------------------------------- mk-enode! [121] 100.0% [136] 300(0.4%) 300(0.4%) hash-has-key? ...ket/private/more-scheme.rkt:371:2 -------------------------------------------------------------------------------- mk-enode! [121] 100.0% [137] 300(0.4%) 300(0.4%) for-loop ...bie/develop/src/core/egraph.rkt:114:10 -------------------------------------------------------------------------------- custom-set-union! [124] 100.0% [138] 294(0.4%) 294(0.4%) for-loop ...cts/racket/private/set-types.rkt:253:4 -------------------------------------------------------------------------------- compile16 [126] 100.0% [139] 7714(11.0%) 346(0.5%) temp74_0 (unknown source) expand-single [150] 71.7% compile-top9 [154] 19.9% loop [190] 3.9% -------------------------------------------------------------------------------- loop [100] 13.2% ??? [125] 86.8% [140] 5184(7.4%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 new-mpfr [181] 84.5% ??? [184] 15.5% -------------------------------------------------------------------------------- ??? [125] 100.0% [141] 5150(7.4%) 1188(1.7%) ??? ...acket/collects/racket/private/kw.rkt:592:14 ??? [152] 36.4% bf* [153] 32.6% ??? [164] 7.9% -------------------------------------------------------------------------------- hash-ref! [115] 6.1% f67 [142] 6.1% eval-prog [103] 6.5% map [149] 17.5% parse-loop80 [161] 18.8% simplify [127] 45.1% [142] 4594(6.6%) 260(0.4%) f67 ...t/collects/racket/match/compiler.rkt:507:40 map [149] 69.6% temp68_2 [114] 11.1% eval [119] 6.7% f67 [142] 6.1% -------------------------------------------------------------------------------- for-loop [129] 100.0% [143] 3894(5.6%) 274(0.4%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [151] 93.0% -------------------------------------------------------------------------------- namespace-syntax-introduce3 [133] 100.0% [144] 950(1.4%) 320(0.5%) add-ns-scopes (unknown source) add-scopes [157] 33.7% gf [193] 32.6% -------------------------------------------------------------------------------- custom-set-union [134] 100.0% [145] 920(1.3%) 300(0.4%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [155] 67.4% -------------------------------------------------------------------------------- simplify [127] 46.3% option-on-expr [58] 53.7% [146] 644(0.9%) 298(0.4%) debug-print .../herbie/develop/src/debug.rkt:107:0 ??? [156] 53.7% -------------------------------------------------------------------------------- set [132] 100.0% [147] 322(0.5%) 322(0.5%) for-loop ...cts/racket/private/set-types.rkt:937:4 -------------------------------------------------------------------------------- simplify [127] 100.0% [148] 306(0.4%) 0(0.0%) debug7 ...tlies/herbie/develop/src/debug.rkt:102:0 assoc-ref [158] 100.0% -------------------------------------------------------------------------------- parse-loop80 [161] 4.8% loop [100] 7.2% taylor [165] 9.8% for-loop [32] 25.4% f67 [142] 52.7% [149] 6198(8.9%) 0(0.0%) map ...acket/collects/racket/private/map.rkt:35:13 parse-loop80 [161] 27.6% ??? [163] 15.2% loop [100] 15.0% f67 [142] 13.9% taylor [165] 9.8% ??? [159] 7.2% simplify* [167] 6.3% ??? [169] 2.6% hash-ref! [115] 2.2% -------------------------------------------------------------------------------- temp74_0 [139] 100.0% [150] 5534(7.9%) 0(0.0%) expand-single (unknown source) expand-capturing-lifts [160] 100.0% -------------------------------------------------------------------------------- hash-update! [143] 100.0% [151] 3620(5.2%) 0(0.0%) ??? ...s/herbie/develop/src/core/egraph.rkt:226:24 for-loop [162] 100.0% -------------------------------------------------------------------------------- ??? [141] 100.0% [152] 1874(2.7%) 952(1.4%) ??? ...herbie/develop/src/syntax/syntax.rkt:197:17 ??? [183] 33.3% return/no-unsupplied [185] 15.9% -------------------------------------------------------------------------------- ??? [141] 100.0% [153] 1680(2.4%) 0(0.0%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [164] 100.0% -------------------------------------------------------------------------------- temp74_0 [139] 100.0% [154] 1532(2.2%) 0(0.0%) compile-top9 (unknown source) compile-forms31 [166] 100.0% -------------------------------------------------------------------------------- for-loop [145] 100.0% [155] 620(0.9%) 620(0.9%) for-loop ...cts/racket/private/set-types.rkt:178:5 -------------------------------------------------------------------------------- debug-print [146] 100.0% [156] 346(0.5%) 0(0.0%) ??? .../contract/private/arrow-val-first.rkt:428:3 ~r78 [168] 100.0% -------------------------------------------------------------------------------- add-ns-scopes [144] 100.0% [157] 320(0.5%) 320(0.5%) add-scopes (unknown source) -------------------------------------------------------------------------------- debug7 [148] 100.0% [158] 306(0.4%) 306(0.4%) assoc-ref ...collects/racket/private/dict.rkt:56:0 -------------------------------------------------------------------------------- ??? [80] 0.4% for-loop [50] 0.7% jloop [11] 0.7% for-loop [113] 1.1% map [149] 1.3% ??? [130] 1.9% loop [16] 3.3% loop [100] 4.3% for-loop [84] 7.3% ??? [125] 11.3% for-loop [73] 30.5% location-do [170] 37.2% [159] 43796(62.6%) 1240(1.8%) ??? ...tract/private/arrow-higher-order.rkt:357:33 location-do [170] 37.2% ??? [45] 30.5% ->flonum [171] 16.9% approximate9 [2] 6.6% hash-ref! [115] 5.2% ??? [176] 0.7% best-alt [10] 0.4% -------------------------------------------------------------------------------- loop [190] 5.2% expand-single [150] 94.8% [160] 5838(8.3%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [172] 63.4% for-loop [188] 21.0% dispatch-transformer41 [6] 10.4% expand-id-application-form17 [194] 5.2% -------------------------------------------------------------------------------- loop [100] 8.1% hash-ref! [115] 10.5% simplify [127] 17.8% map [149] 27.0% parse-loop80 [161] 36.6% [161] 5582(8.0%) 1534(2.2%) parse-loop80 ...s/racket/match/compiler.rkt:418:15 parse-loop80 [161] 36.6% loop [100] 17.7% temp68_2 [114] 14.2% f67 [142] 14.0% eval [119] 6.7% map [149] 0.9% -------------------------------------------------------------------------------- ??? [151] 100.0% [162] 3620(5.2%) 2364(3.4%) for-loop ...bie/develop/src/core/egraph.rkt:227:26 update-en-expr [174] 34.7% -------------------------------------------------------------------------------- map [149] 36.9% loop [100] 63.1% [163] 2546(3.6%) 0(0.0%) ??? ...htlies/herbie/develop/src/points.rkt:229:26 ??? [125] 74.8% ulp-difference [173] 25.2% -------------------------------------------------------------------------------- ??? [141] 19.5% bf* [153] 80.5% [164] 2088(3.0%) 0(0.0%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfmul [175] 100.0% -------------------------------------------------------------------------------- map [149] 7.6% hash-ref! [115] 18.0% for-loop [24] 24.7% taylor [165] 49.6% [165] 1570(2.2%) 0(0.0%) taylor ...herbie/develop/src/core/taylor.rkt:169:0 taylor [165] 49.6% taylor-exp [178] 20.8% loop [177] 10.4% map [149] 7.6% loop [100] 6.7% taylor-log [12] 4.9% -------------------------------------------------------------------------------- compile-top9 [154] 100.0% [166] 1532(2.2%) 316(0.5%) compile-forms31 (unknown source) for-loop [188] 59.1% serialize-phase-to-link-module-uses [180] 20.2% -------------------------------------------------------------------------------- simplify [127] 32.7% map [149] 67.3% [167] 948(1.4%) 638(0.9%) simplify* ...rbie/develop/src/core/reduce.rkt:31:0 ??? [179] 32.7% -------------------------------------------------------------------------------- ??? [156] 100.0% [168] 346(0.5%) 346(0.5%) ~r78 ...92/racket/collects/racket/format.rkt:189:0 -------------------------------------------------------------------------------- map [149] 100.0% [169] 326(0.5%) 326(0.5%) ??? ...ies/herbie/develop/src/core/reduce.rkt:61:5 -------------------------------------------------------------------------------- ??? [159] 38.6% location-do [170] 61.4% [170] 34844(49.8%) 0(0.0%) location-do ...erbie/develop/src/programs.rkt:90:0 location-do [170] 61.4% ??? [159] 38.6% -------------------------------------------------------------------------------- ??? [159] 100.0% [171] 7412(10.6%) 4610(6.6%) ->flonum ...s/herbie/develop/src/programs.rkt:36:0 ??? [183] 25.2% return/no-unsupplied [185] 12.6% -------------------------------------------------------------------------------- expand-capturing-lifts [160] 100.0% [172] 3700(5.3%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [182] 83.5% loop [190] 16.5% -------------------------------------------------------------------------------- ??? [163] 26.0% for-loop [113] 74.0% [173] 2472(3.5%) 1562(2.2%) ulp-difference ...erbie/develop/src/float.rkt:19:0 return/no-unsupplied [185] 36.8% -------------------------------------------------------------------------------- loop! [117] 13.8% for-loop [120] 28.1% for-loop [162] 58.1% [174] 2162(3.1%) 944(1.3%) update-en-expr ...evelop/src/core/egraph.rkt:212:0 for-loop [186] 56.3% -------------------------------------------------------------------------------- ??? [164] 100.0% [175] 2088(3.0%) 0(0.0%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:821:4 ??? [184] 65.5% new-mpfr [181] 34.5% -------------------------------------------------------------------------------- loop [100] 30.9% ??? [159] 32.8% ??? [122] 36.3% [176] 914(1.3%) 282(0.4%) ??? ...ects/racket/contract/private/prop.rkt:519:4 ??? [187] 69.1% -------------------------------------------------------------------------------- taylor [165] 100.0% [177] 326(0.5%) 0(0.0%) loop ...s/herbie/develop/src/core/taylor.rkt:267:2 hash-ref! [115] 100.0% -------------------------------------------------------------------------------- taylor [165] 100.0% [178] 326(0.5%) 0(0.0%) taylor-exp ...ie/develop/src/core/taylor.rkt:410:0 simplify [127] 100.0% -------------------------------------------------------------------------------- simplify* [167] 100.0% [179] 310(0.4%) 310(0.4%) ??? ...ects/racket/contract/private/guts.rkt:746:8 -------------------------------------------------------------------------------- compile-forms31 [166] 100.0% [180] 310(0.4%) 310(0.4%) serialize-phase-to-link-module-uses ...own source) -------------------------------------------------------------------------------- bfmul [175] 14.1% bf [140] 85.9% [181] 5098(7.3%) 5098(7.3%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 -------------------------------------------------------------------------------- lambda-clause-expander [172] 12.3% for-loop [188] 87.7% [182] 3088(4.4%) 0(0.0%) finish-bodys (unknown source) for-loop [188] 100.0% -------------------------------------------------------------------------------- ??? [152] 25.1% ->flonum [171] 74.9% [183] 2490(3.6%) 2490(3.6%) ??? ...s/racket/contract/private/arr-i.rkt:1252:29 -------------------------------------------------------------------------------- bf [140] 37.1% bfmul [175] 62.9% [184] 2174(3.1%) 2174(3.1%) ??? /home/p92/racket/collects/ffi/unsafe.rkt:898:4 -------------------------------------------------------------------------------- ??? [152] 13.9% ulp-difference [173] 42.4% ->flonum [171] 43.7% [185] 2144(3.1%) 914(1.3%) return/no-unsupplied ...ct/private/arr-i.rkt:534:0 filter [189] 57.4% -------------------------------------------------------------------------------- update-en-expr [174] 100.0% [186] 1218(1.7%) 1218(1.7%) for-loop ...rbie/develop/src/core/egraph.rkt:214:6 -------------------------------------------------------------------------------- ??? [176] 100.0% [187] 632(0.9%) 632(0.9%) ??? ...lects/racket/contract/private/orc.rkt:83:14 -------------------------------------------------------------------------------- namespace-syntax-introduce3 [133] 5.7% expand-capturing-lifts [160] 13.8% for-loop [188] 13.9% compile-forms31 [166] 16.4% finish-bodys [182] 50.3% [188] 5532(7.9%) 1830(2.6%) for-loop (unknown source) finish-bodys [182] 44.3% for-loop [188] 13.9% dispatch-transformer41 [6] 7.0% generate-links+imports [191] 5.6% syntax-e [7] 3.0% expand-id-application-form17 [194] 2.7% loop [190] 0.5% expand-implicit [192] 0.4% -------------------------------------------------------------------------------- for-loop [92] 18.5% return/no-unsupplied [185] 81.5% [189] 1510(2.2%) 1510(2.2%) filter ...t/collects/racket/private/list.rkt:256:2 -------------------------------------------------------------------------------- datum->syntax6 [49] 0.2% syntax->list [72] 2.9% for-loop [188] 3.2% lambda-clause-expander [172] 3.2% temp74_0 [139] 8.9% compile16 [126] 8.9% loop [190] 11.9% apply-transformer52 [22] 18.8% syntax-e/no-taint [23] 42.0% [190] 3402(4.9%) 614(0.9%) loop (unknown source) gf [193] 42.0% core-form-sym [195] 18.8% loop [190] 11.9% expand-capturing-lifts [160] 8.9% dispatch-transformer41 [6] 3.2% expand-id-application-form17 [194] 3.2% syntax-e [7] 2.9% -------------------------------------------------------------------------------- for-loop [188] 100.0% [191] 310(0.4%) 310(0.4%) generate-links+imports (unknown source) -------------------------------------------------------------------------------- for-loop [188] 100.0% [192] 300(0.4%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [196] 100.0% -------------------------------------------------------------------------------- add-ns-scopes [144] 14.4% loop [190] 85.6% [193] 2154(3.1%) 610(0.9%) gf (unknown source) propagation-apply [197] 30.2% cache-or-reuse-set [198] 27.7% propagation-merge [200] 13.8% -------------------------------------------------------------------------------- for-loop [188] 32.3% expand-capturing-lifts [160] 32.9% loop [190] 34.8% [194] 924(1.3%) 0(0.0%) expand-id-application-form17 (unknown source) syntax-e/no-taint [23] 34.8% resolve+shift28 [196] 32.9% binding-lookup50 [199] 32.3% -------------------------------------------------------------------------------- loop [190] 100.0% [195] 640(0.9%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [196] 100.0% -------------------------------------------------------------------------------- expand-implicit [192] 24.1% expand-id-application-form17 [194] 24.4% core-form-sym [195] 51.4% [196] 1244(1.8%) 628(0.9%) resolve+shift28 (unknown source) fallback-loop [201] 49.5% -------------------------------------------------------------------------------- gf [193] 100.0% [197] 650(0.9%) 650(0.9%) propagation-apply (unknown source) -------------------------------------------------------------------------------- gf [193] 100.0% [198] 596(0.9%) 596(0.9%) cache-or-reuse-set (unknown source) -------------------------------------------------------------------------------- expand-id-application-form17 [194] 100.0% [199] 298(0.4%) 298(0.4%) binding-lookup50 (unknown source) -------------------------------------------------------------------------------- gf [193] 100.0% [200] 298(0.4%) 298(0.4%) propagation-merge (unknown source) -------------------------------------------------------------------------------- resolve+shift28 [196] 100.0% [201] 616(0.9%) 616(0.9%) fallback-loop (unknown source) --------------------------------------------------------------------------------