Profiling results ----------------- Total cpu time observed: 19962ms (out of 20060ms) Number of samples taken: 154 (once every 130ms) (Hiding functions with self<1.0% and local<2.0%: 6 of 214 hidden) ========================================================================= Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ========================================================================= [1] 19962(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [17] 100.0% ------------------------------------------------------------------------- ??? [195] 100.0% [2] 11122(55.7%) 0(0.0%) approximate9 ...pler-alts/src/core/taylor.rkt:11:0 loop [18] 88.4% for-loop [25] 8.8% f40 [42] 1.5% taylor-exp [36] 1.3% ------------------------------------------------------------------------- hash-ref! [197] 100.0% [3] 9730(48.7%) 0(0.0%) ??? ...rbie/simpler-alts/src/core/taylor.rkt:67:15 hash-ref! [197] 71.2% ??? [195] 28.8% ------------------------------------------------------------------------- hash-ref! [197] 100.0% [4] 5988(30.0%) 0(0.0%) ??? ...bie/simpler-alts/src/core/taylor.rkt:290:26 for-loop [19] 100.0% ------------------------------------------------------------------------- hash-ref! [197] 100.0% [5] 4862(24.4%) 0(0.0%) ??? ...bie/simpler-alts/src/core/taylor.rkt:300:23 for-loop [20] 100.0% ------------------------------------------------------------------------- loop [178] 7.3% expand-capturing-lifts [174] 30.3% for-loop [179] 62.5% [6] 2142(10.7%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [22] 100.0% ------------------------------------------------------------------------- hash-ref! [197] 100.0% [7] 1716(8.6%) 0(0.0%) ??? ...bie/simpler-alts/src/core/taylor.rkt:406:23 for-loop [24] 66.4% for-loop [26] 33.6% ------------------------------------------------------------------------- core-form-sym [183] 8.8% loop [178] 43.8% for-loop [179] 47.4% [8] 1702(8.5%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [21] 100.0% ------------------------------------------------------------------------- map [64] 18.3% taylor [72] 81.7% [9] 1018(5.1%) 0(0.0%) taylor-invert ...er-alts/src/core/taylor.rkt:317:0 first-nonzero-exp [44] 100.0% ------------------------------------------------------------------------- for-loop [179] 100.0% [10] 918(4.6%) 184(0.9%) expand-implicit (unknown source) resolve+shift28 [23] 80.0% ------------------------------------------------------------------------- for-loop [179] 100.0% [11] 448(2.2%) 0(0.0%) expand-identifier (unknown source) resolve+shift28 [23] 100.0% ------------------------------------------------------------------------- matcher [203] 100.0% [12] 436(2.2%) 0(0.0%) ??? ...ie/simpler-alts/src/core/matcher.rkt:129:11 for-loop [27] 100.0% ------------------------------------------------------------------------- append-map [90] 100.0% [13] 202(1.0%) 0(0.0%) parse-loop368 (unknown source) parse-loop389 [28] 100.0% ------------------------------------------------------------------------- loop [178] 100.0% [14] 174(0.9%) 0(0.0%) read-one/not-eof (unknown source) read-undotted [46] 100.0% ------------------------------------------------------------------------- loop [178] 100.0% [15] 174(0.9%) 0(0.0%) egg-expr->expr ...s/egg-herbie-linux/main.rkt:55:0 read [29] 100.0% ------------------------------------------------------------------------- hash-ref! [197] 100.0% [16] 100(0.5%) 0(0.0%) ??? ...bie/simpler-alts/src/core/taylor.rkt:509:23 for-loop [30] 100.0% ------------------------------------------------------------------------- ??? [1] 100.0% [17] 19962(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [31] 100.0% ------------------------------------------------------------------------- approximate9 [2] 100.0% [18] 9830(49.2%) 0(0.0%) loop ...rbie/simpler-alts/src/core/taylor.rkt:86:4 hash-ref! [197] 99.0% ??? [195] 1.0% ------------------------------------------------------------------------- ??? [4] 100.0% [19] 5988(30.0%) 0(0.0%) for-loop ...impler-alts/src/core/taylor.rkt:290:52 hash-ref! [197] 84.2% ??? [32] 13.2% f61 [43] 2.6% ------------------------------------------------------------------------- ??? [5] 100.0% [20] 4862(24.4%) 0(0.0%) for-loop ...impler-alts/src/core/taylor.rkt:303:27 hash-ref! [197] 97.9% f40 [42] 2.1% ------------------------------------------------------------------------- gf [180] 6.6% expand-id-application-form17 [181] 22.2% syntax-e [8] 71.2% [21] 2390(12.0%) 0(0.0%) syntax-e/no-taint (unknown source) loop [178] 100.0% ------------------------------------------------------------------------- dispatch-transformer41 [6] 100.0% [22] 2142(10.7%) 416(2.1%) apply-transformer52 (unknown source) apply-transformer-in-context [34] 38.5% loop [178] 34.7% apply-post-expansion [39] 7.4% ------------------------------------------------------------------------- free-identifier=? [145] 6.2% core-form-sym [183] 20.7% expand-identifier [11] 27.7% expand-implicit [10] 45.4% [23] 1616(8.1%) 404(2.0%) resolve+shift28 (unknown source) fallback-loop [33] 75.0% ------------------------------------------------------------------------- ??? [7] 100.0% [24] 1140(5.7%) 0(0.0%) for-loop ...impler-alts/src/core/taylor.rkt:412:39 hash-ref! [197] 100.0% ------------------------------------------------------------------------- approximate9 [2] 100.0% [25] 976(4.9%) 0(0.0%) for-loop ...simpler-alts/src/core/taylor.rkt:29:18 taylor [72] 74.4% taylor-quotient [35] 15.4% taylor-exp [36] 10.2% ------------------------------------------------------------------------- ??? [7] 100.0% [26] 576(2.9%) 0(0.0%) for-loop ...impler-alts/src/core/taylor.rkt:410:33 hash-ref! [197] 100.0% ------------------------------------------------------------------------- ??? [12] 100.0% [27] 436(2.2%) 0(0.0%) for-loop ...mpler-alts/src/core/matcher.rkt:131:15 hash-ref! [197] 100.0% ------------------------------------------------------------------------- parse-loop368 [13] 100.0% [28] 202(1.0%) 0(0.0%) parse-loop389 (unknown source) for-loop [37] 100.0% ------------------------------------------------------------------------- egg-expr->expr [15] 100.0% [29] 174(0.9%) 0(0.0%) read (unknown source) read32 [38] 100.0% ------------------------------------------------------------------------- ??? [16] 100.0% [30] 100(0.5%) 0(0.0%) for-loop ...impler-alts/src/core/taylor.rkt:513:35 parse-loop402 [40] 100.0% ------------------------------------------------------------------------- profile-thunk16 [17] 100.0% [31] 19962(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [41] 100.0% ------------------------------------------------------------------------- for-loop [19] 100.0% [32] 2234(11.2%) 0(0.0%) ??? ...bie/simpler-alts/src/core/taylor.rkt:293:19 hash-ref! [197] 100.0% ------------------------------------------------------------------------- resolve+shift28 [23] 100.0% [33] 1212(6.1%) 286(1.4%) fallback-loop (unknown source) for-loop [179] 76.4% ------------------------------------------------------------------------- apply-transformer52 [22] 100.0% [34] 824(4.1%) 488(2.4%) apply-transformer-in-context (unknown source) parse-app [45] 40.8% ------------------------------------------------------------------------- for-loop [25] 27.0% taylor [72] 73.0% [35] 556(2.8%) 0(0.0%) taylor-quotient ...-alts/src/core/taylor.rkt:333:0 first-nonzero-exp [44] 82.0% f40 [42] 18.0% ------------------------------------------------------------------------- for-loop [25] 40.0% approximate9 [2] 60.0% [36] 250(1.3%) 0(0.0%) taylor-exp ...mpler-alts/src/core/taylor.rkt:400:0 f61 [43] 60.0% f40 [42] 40.0% ------------------------------------------------------------------------- parse-loop389 [28] 100.0% [37] 202(1.0%) 0(0.0%) for-loop ...simpler-alts/src/core/reduce.rkt:94:13 simplify-node [74] 50.5% make-multiplication-node [77] 49.5% ------------------------------------------------------------------------- read [29] 100.0% [38] 174(0.9%) 0(0.0%) read32 (unknown source) read-undotted [46] 100.0% ------------------------------------------------------------------------- apply-transformer52 [22] 100.0% [39] 158(0.8%) 0(0.0%) apply-post-expansion (unknown source) gf [180] 100.0% ------------------------------------------------------------------------- for-loop [30] 100.0% [40] 100(0.5%) 0(0.0%) parse-loop402 (unknown source) for-loop [47] 100.0% ------------------------------------------------------------------------- for-loop [156] 3.7% run [31] 96.3% [41] 19962(100.0%) 656(3.3%) .../more-scheme.rkt:261:28 (unknown source) run-improve47 [48] 80.7% prepare-points-intervals [49] 6.2% get-final-combination [50] 4.6% oracle-error [53] 3.0% ??? [52] 1.6% errors [146] 1.3% eval-errors [56] 0.5% ??? [186] 0.3% ??? [195] 0.3% ------------------------------------------------------------------------- for-loop [20] 0.5% taylor-quotient [35] 0.7% approximate9 [2] 0.8% taylor-exp [36] 1.4% map [64] 38.4% hash-ref! [197] 58.3% [42] 7122(35.7%) 200(1.0%) f40 (unknown source) map [64] 98.2% ------------------------------------------------------------------------- parse-loop74 [70] 6.4% taylor-exp [36] 8.6% for-loop [19] 8.8% hash-ref! [197] 25.8% map [64] 50.5% [43] 1752(8.8%) 168(0.8%) f61 (unknown source) eval-const-expr [87] 49.9% composed [51] 40.5% ------------------------------------------------------------------------- taylor-quotient [35] 30.9% taylor-invert [9] 69.1% [44] 1474(7.4%) 0(0.0%) first-nonzero-exp ...lts/src/core/taylor.rkt:265:0 hash-ref! [197] 100.0% ------------------------------------------------------------------------- apply-transformer-in-context [34] 100.0% [45] 336(1.7%) 0(0.0%) parse-app ...collects/racket/private/kw.rkt:1142:2 syntax->list [54] 100.0% ------------------------------------------------------------------------- read32 [38] 16.7% read-one/not-eof [14] 83.3% [46] 174(0.9%) 0(0.0%) read-undotted (unknown source) read-unwrapped-sequence17 [55] 100.0% ------------------------------------------------------------------------- parse-loop402 [40] 100.0% [47] 100(0.5%) 0(0.0%) for-loop ...impler-alts/src/core/taylor.rkt:516:59 hash-ref! [197] 100.0% ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [41] 100.0% [48] 16592(83.1%) 0(0.0%) run-improve47 ...mpler-alts/src/mainloop.rkt:365:0 for-loop [57] 97.3% simplify! [73] 2.7% ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [41] 100.0% [49] 1232(6.2%) 0(0.0%) prepare-points-intervals ...s/src/points.rkt:122:0 loop [58] 100.0% ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [41] 100.0% [50] 1026(5.1%) 0(0.0%) get-final-combination ...ts/src/mainloop.rkt:390:0 infer-splitpoints [59] 100.0% ------------------------------------------------------------------------- f61 [43] 100.0% [51] 710(3.6%) 0(0.0%) composed ...ollects/racket/private/list.rkt:321:16 free-variables [60] 100.0% ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [41] 100.0% [52] 626(3.1%) 316(1.6%) ??? ...e/simpler-alts/src/syntax/syntax.rkt:214:17 return/no-unsupplied [168] 49.5% ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [41] 100.0% [53] 604(3.0%) 0(0.0%) oracle-error .../simpler-alts/src/points.rkt:179:0 for-loop [61] 100.0% ------------------------------------------------------------------------- parse-app [45] 100.0% [54] 336(1.7%) 0(0.0%) syntax->list (unknown source) loop [178] 100.0% ------------------------------------------------------------------------- read-undotted [46] 100.0% [55] 174(0.9%) 174(0.9%) read-unwrapped-sequence17 (unknown source) loop [178] 83.3% ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [41] 100.0% [56] 100(0.5%) 0(0.0%) eval-errors ...e/simpler-alts/src/points.rkt:170:0 for-loop [62] 100.0% ------------------------------------------------------------------------- run-improve47 [48] 100.0% [57] 16144(80.9%) 0(0.0%) for-loop ...ie/simpler-alts/src/mainloop.rkt:384:4 run-iter! [63] 100.0% ------------------------------------------------------------------------- prepare-points-intervals [49] 100.0% [58] 1232(6.2%) 0(0.0%) loop ...s/herbie/simpler-alts/src/points.rkt:134:4 loop [67] 50.0% ??? [66] 50.0% ------------------------------------------------------------------------- get-final-combination [50] 100.0% [59] 1026(5.1%) 0(0.0%) infer-splitpoints ...lts/src/core/regimes.rkt:33:0 for-loop [65] 100.0% ------------------------------------------------------------------------- composed [51] 36.3% append-map [90] 63.7% [60] 710(3.6%) 104(0.5%) free-variables ...mpler-alts/src/programs.rkt:80:0 append-map [90] 85.4% variable? [68] 7.4% constant? [207] 5.3% ??? [88] 1.2% ------------------------------------------------------------------------- oracle-error [53] 100.0% [61] 604(3.0%) 0(0.0%) for-loop ...rbie/simpler-alts/src/points.rkt:180:2 loop [178] 66.2% map [64] 33.8% ------------------------------------------------------------------------- eval-errors [56] 100.0% [62] 100(0.5%) 100(0.5%) for-loop ...rbie/simpler-alts/src/points.rkt:172:2 ------------------------------------------------------------------------- for-loop [57] 100.0% [63] 16144(80.9%) 0(0.0%) run-iter! ...e/simpler-alts/src/mainloop.rkt:346:0 gen-series! [69] 68.9% finalize-iter! [71] 19.4% simplify! [73] 5.6% gen-rewrites! [76] 3.6% localize! [82] 1.6% choose-best-alt! [83] 0.9% ------------------------------------------------------------------------- gather-multiplicative-terms [92] 0.2% for-loop [61] 2.3% taylor [72] 17.3% f40 [42] 78.9% [64] 8784(44.0%) 100(0.5%) map ...t-7.5/collects/racket/private/map.rkt:35:13 f40 [42] 30.8% parse-loop74 [70] 30.4% taylor [72] 16.3% f61 [43] 4.7% simplify-node [74] 4.2% make-multiplication-node [77] 3.8% ??? [182] 2.3% ??? [79] 2.1% simplify* [80] 1.7% hash-ref! [197] 1.1% taylor-invert [9] 1.1% loop [85] 0.2% gather-multiplicative-terms [92] 0.2% ------------------------------------------------------------------------- infer-splitpoints [59] 100.0% [65] 1026(5.1%) 0(0.0%) for-loop ...simpler-alts/src/core/regimes.rkt:45:6 option-on-expr [75] 100.0% ------------------------------------------------------------------------- loop [58] 100.0% [66] 616(3.1%) 100(0.5%) ??? ...es/herbie/simpler-alts/src/points.rkt:115:6 sample-multi-bounded [78] 83.8% ------------------------------------------------------------------------- loop [58] 100.0% [67] 616(3.1%) 0(0.0%) loop ...es/herbie/simpler-alts/src/points.rkt:79:2 ??? [81] 49.4% ??? [195] 32.5% real->precision [84] 18.2% ------------------------------------------------------------------------- free-variables [60] 100.0% [68] 200(1.0%) 0(0.0%) variable? ...pler-alts/src/syntax/syntax.rkt:729:0 ??? [88] 100.0% ------------------------------------------------------------------------- run-iter! [63] 100.0% [69] 11122(55.7%) 0(0.0%) gen-series! ...simpler-alts/src/mainloop.rkt:160:0 for-loop [86] 100.0% ------------------------------------------------------------------------- hash-ref! [197] 39.6% map [64] 58.7% [70] 6030(30.2%) 284(1.4%) parse-loop74 (unknown source) eval-const-expr [87] 93.4% f61 [43] 1.9% ------------------------------------------------------------------------- run-iter! [63] 100.0% [71] 3128(15.7%) 0(0.0%) finalize-iter! ...pler-alts/src/mainloop.rkt:278:0 ??? [88] 100.0% ------------------------------------------------------------------------- for-loop [25] 11.5% map [64] 22.4% hash-ref! [197] 25.5% taylor [72] 40.5% [72] 2734(13.7%) 0(0.0%) taylor ...e/simpler-alts/src/core/taylor.rkt:169:0 taylor [72] 40.5% map [64] 24.7% debug-print [91] 9.0% taylor-invert [9] 8.9% taylor-quotient [35] 8.9% loop [97] 7.0% ------------------------------------------------------------------------- run-improve47 [48] 33.2% run-iter! [63] 66.8% [73] 1348(6.8%) 0(0.0%) simplify! ...e/simpler-alts/src/mainloop.rkt:224:0 ??? [89] 100.0% ------------------------------------------------------------------------- for-loop [37] 4.8% map [64] 95.2% [74] 1072(5.4%) 0(0.0%) simplify-node ...ler-alts/src/core/reduce.rkt:45:0 gather-multiplicative-terms [92] 54.6% combine-mterms [99] 31.3% append-map [90] 14.1% ------------------------------------------------------------------------- for-loop [65] 100.0% [75] 1026(5.1%) 0(0.0%) option-on-expr ...-alts/src/core/regimes.rkt:124:0 for-loop [96] 50.1% err-lsts->split-indices [100] 30.2% sort-context-on-expr [103] 19.7% ------------------------------------------------------------------------- run-iter! [63] 100.0% [76] 586(2.9%) 0(0.0%) gen-rewrites! ...mpler-alts/src/mainloop.rkt:183:0 for-loop [93] 100.0% ------------------------------------------------------------------------- for-loop [37] 17.4% map [64] 82.6% [77] 574(2.9%) 0(0.0%) make-multiplication-node .../core/reduce.rkt:231:0 make-multiplication-subnode [94] 100.0% ------------------------------------------------------------------------- ??? [66] 100.0% [78] 516(2.6%) 0(0.0%) sample-multi-bounded ...r-alts/src/points.rkt:14:0 random-ranges [95] 100.0% ------------------------------------------------------------------------- map [64] 100.0% [79] 452(2.3%) 0(0.0%) ??? ...erbie/simpler-alts/src/core/reduce.rkt:56:5 for-loop [98] 100.0% ------------------------------------------------------------------------- map [64] 100.0% [80] 398(2.0%) 0(0.0%) simplify* ...simpler-alts/src/core/reduce.rkt:28:0 hash-ref! [197] 71.9% return/no-unsupplied [168] 28.1% ------------------------------------------------------------------------- loop [67] 100.0% [81] 304(1.5%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:379:33 ival-add [102] 66.4% ival-sub [106] 33.6% ------------------------------------------------------------------------- run-iter! [63] 100.0% [82] 258(1.3%) 0(0.0%) localize! ...e/simpler-alts/src/mainloop.rkt:127:0 localize-error [101] 100.0% ------------------------------------------------------------------------- run-iter! [63] 100.0% [83] 150(0.8%) 0(0.0%) choose-best-alt! ...er-alts/src/mainloop.rkt:117:0 ...ow-val-first.rkt:486:18 [104] 100.0% ------------------------------------------------------------------------- loop [67] 100.0% [84] 112(0.6%) 0(0.0%) real->precision ...er-alts/src/programs.rkt:118:11 ??? [195] 100.0% ------------------------------------------------------------------------- map [64] 2.1% loop [85] 97.9% [85] 110(0.6%) 0(0.0%) loop ...-7.5/collects/racket/private/map.rkt:40:19 loop [85] 97.9% bf* [105] 2.1% ------------------------------------------------------------------------- gen-series! [69] 100.0% [86] 11122(55.7%) 0(0.0%) for-loop ...ie/simpler-alts/src/mainloop.rkt:167:7 taylor-alt [107] 100.0% ------------------------------------------------------------------------- f61 [43] 13.4% parse-loop74 [70] 86.6% [87] 6508(32.6%) 0(0.0%) eval-const-expr ...ler-alts/src/programs.rkt:144:0 temp85_0 [155] 80.4% loop [178] 13.9% eval-prog [157] 4.1% eval [123] 1.5% ------------------------------------------------------------------------- free-variables [60] 3.0% variable? [68] 5.8% finalize-iter! [71] 91.2% [88] 3430(17.2%) 302(1.5%) ??? ...contract/private/arrow-val-first.rkt:486:18 for-loop [108] 91.2% ------------------------------------------------------------------------- simplify! [73] 100.0% [89] 1348(6.8%) 162(0.8%) ??? ...bie/simpler-alts/src/core/simplify.rkt:42:0 egraph-run [109] 88.0% ------------------------------------------------------------------------- simplify-node [74] 7.7% append-map [90] 14.4% free-variables [60] 77.9% [90] 912(4.6%) 154(0.8%) append-map ...t-7.5/collects/racket/list.rkt:586:2 free-variables [60] 61.0% append-map [90] 14.4% parse-loop368 [13] 7.7% ------------------------------------------------------------------------- taylor [72] 100.0% [91] 654(3.3%) 0(0.0%) debug-print ...ie/simpler-alts/src/debug.rkt:110:0 ??? [137] 76.5% for-loop [118] 23.5% ------------------------------------------------------------------------- map [64] 12.6% simplify-node [74] 87.4% [92] 636(3.2%) 370(1.9%) gather-multiplicative-terms ...re/reduce.rkt:109:0 do-curry [117] 26.1% compose [122] 15.7% map [64] 12.6% ------------------------------------------------------------------------- gen-rewrites! [76] 100.0% [93] 586(2.9%) 0(0.0%) for-loop ...e/simpler-alts/src/mainloop.rkt:191:11 rewrite-expression-head23 [110] 100.0% ------------------------------------------------------------------------- make-multiplication-node [77] 100.0% [94] 574(2.9%) 0(0.0%) make-multiplication-subnode ...re/reduce.rkt:241:0 group-by61 [111] 66.9% for-loop [116] 33.1% ------------------------------------------------------------------------- sample-multi-bounded [78] 100.0% [95] 516(2.6%) 102(0.5%) random-ranges ...simpler-alts/src/common.rkt:164:0 cons/c [114] 60.5% build--> [121] 19.8% ------------------------------------------------------------------------- option-on-expr [75] 100.0% [96] 514(2.6%) 0(0.0%) for-loop ...impler-alts/src/core/regimes.rkt:135:4 errors [146] 100.0% ------------------------------------------------------------------------- taylor [72] 100.0% [97] 454(2.3%) 0(0.0%) loop ...bie/simpler-alts/src/core/taylor.rkt:267:2 hash-ref! [197] 100.0% ------------------------------------------------------------------------- ??? [79] 100.0% [98] 452(2.3%) 100(0.5%) for-loop .../simpler-alts/src/core/reduce.rkt:57:7 pattern-match [112] 77.9% ------------------------------------------------------------------------- simplify-node [74] 100.0% [99] 336(1.7%) 336(1.7%) combine-mterms ...r-alts/src/core/reduce.rkt:192:0 ------------------------------------------------------------------------- option-on-expr [75] 100.0% [100] 310(1.6%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:263:0 loop [115] 100.0% ------------------------------------------------------------------------- localize! [82] 100.0% [101] 258(1.3%) 0(0.0%) localize-error ...-alts/src/core/localize.rkt:57:0 ??? [113] 57.4% hash-ref! [197] 42.6% ------------------------------------------------------------------------- ??? [81] 100.0% [102] 202(1.0%) 0(0.0%) ival-add ...simpler-alts/src/biginterval.rkt:111:0 bfmul [204] 100.0% ------------------------------------------------------------------------- option-on-expr [75] 100.0% [103] 202(1.0%) 0(0.0%) sort-context-on-expr ...src/core/regimes.rkt:117:0 ??? [113] 100.0% ------------------------------------------------------------------------- choose-best-alt! [83] 100.0% [104] 150(0.8%) 0(0.0%) ...ow-val-first.rkt:486:18 (unknown source) ??? [119] 100.0% ------------------------------------------------------------------------- loop [85] 100.0% [105] 110(0.6%) 0(0.0%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [120] 100.0% ------------------------------------------------------------------------- ??? [81] 100.0% [106] 102(0.5%) 102(0.5%) ival-sub ...simpler-alts/src/biginterval.rkt:117:0 ------------------------------------------------------------------------- for-loop [86] 100.0% [107] 11122(55.7%) 0(0.0%) taylor-alt .../simpler-alts/src/mainloop.rkt:146:0 for-loop [124] 100.0% ------------------------------------------------------------------------- ??? [88] 100.0% [108] 3128(15.7%) 0(0.0%) for-loop ...pler-alts/src/core/alt-table.rkt:201:2 atab-add-altn [125] 95.2% loop [132] 4.8% ------------------------------------------------------------------------- ??? [89] 100.0% [109] 1186(5.9%) 0(0.0%) egraph-run .../pkgs/egg-herbie-linux/main.rkt:49:0 egraph-add-exprs [126] 100.0% ------------------------------------------------------------------------- for-loop [93] 100.0% [110] 586(2.9%) 0(0.0%) rewrite-expression-head23 ...core/matcher.rkt:83:0 rewriter [127] 100.0% ------------------------------------------------------------------------- make-multiplication-subnode [94] 100.0% [111] 384(1.9%) 284(1.4%) group-by61 ...t-7.5/collects/racket/list.rkt:771:0 for-loop [134] 26.0% ------------------------------------------------------------------------- for-loop [98] 100.0% [112] 352(1.8%) 102(0.5%) pattern-match ...er-alts/src/core/matcher.rkt:29:0 for-loop [131] 71.0% ------------------------------------------------------------------------- localize-error [101] 42.3% sort-context-on-expr [103] 57.7% [113] 350(1.8%) 0(0.0%) ??? ...-7.5/collects/racket/private/sort.rkt:369:3 generic-sort/key [128] 100.0% ------------------------------------------------------------------------- random-ranges [95] 100.0% [114] 312(1.6%) 0(0.0%) cons/c .../racket/contract/private/guts.rkt:500:15 coerce-contract [129] 100.0% ------------------------------------------------------------------------- err-lsts->split-indices [100] 100.0% [115] 310(1.6%) 0(0.0%) loop ...ie/simpler-alts/src/core/regimes.rkt:314:4 for-loop [130] 100.0% ------------------------------------------------------------------------- make-multiplication-subnode [94] 100.0% [116] 190(1.0%) 190(1.0%) for-loop ...simpler-alts/src/core/reduce.rkt:243:3 ------------------------------------------------------------------------- gather-multiplicative-terms [92] 100.0% [117] 166(0.8%) 166(0.8%) do-curry ...-7.5/collects/racket/function.rkt:71:2 ------------------------------------------------------------------------- debug-print [91] 100.0% [118] 154(0.8%) 154(0.8%) for-loop ...erbie/simpler-alts/src/debug.rkt:116:2 ------------------------------------------------------------------------- ...ow-val-first.rkt:486:18 [104] 100.0% [119] 150(0.8%) 0(0.0%) ??? ...ie/simpler-alts/src/core/alt-table.rkt:41:0 loop [133] 100.0% ------------------------------------------------------------------------- bf* [105] 100.0% [120] 110(0.6%) 0(0.0%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfmul [204] 100.0% ------------------------------------------------------------------------- random-ranges [95] 100.0% [121] 102(0.5%) 102(0.5%) build--> ...act/private/arrow-val-first.rkt:1214:0 ------------------------------------------------------------------------- gather-multiplicative-terms [92] 100.0% [122] 100(0.5%) 100(0.5%) compose ...collects/racket/private/list.rkt:385:12 ------------------------------------------------------------------------- eval-const-expr [87] 100.0% [123] 100(0.5%) 0(0.0%) eval (unknown source) namespace-syntax-introduce3 [135] 100.0% ------------------------------------------------------------------------- taylor-alt [107] 100.0% [124] 11122(55.7%) 0(0.0%) for-loop ...ie/simpler-alts/src/mainloop.rkt:152:6 ??? [195] 100.0% ------------------------------------------------------------------------- for-loop [108] 100.0% [125] 2978(14.9%) 0(0.0%) atab-add-altn ...alts/src/core/alt-table.rkt:204:0 errors [146] 94.8% ??? [137] 5.2% ------------------------------------------------------------------------- egraph-run [109] 100.0% [126] 1186(5.9%) 0(0.0%) egraph-add-exprs ...gg-herbie-linux/main.rkt:111:0 ??? [136] 85.3% loop [178] 14.7% ------------------------------------------------------------------------- matcher [203] 43.0% rewrite-expression-head23 [110] 57.0% [127] 586(2.9%) 0(0.0%) rewriter ...simpler-alts/src/core/matcher.rkt:85:2 for-loop [138] 100.0% ------------------------------------------------------------------------- ??? [113] 100.0% [128] 350(1.8%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [142] 57.7% jloop [144] 42.3% ------------------------------------------------------------------------- cons/c [114] 100.0% [129] 312(1.6%) 0(0.0%) coerce-contract ...contract/private/guts.rkt:307:0 coerce-contract/f [139] 100.0% ------------------------------------------------------------------------- loop [115] 100.0% [130] 310(1.6%) 0(0.0%) for-loop ...impler-alts/src/core/regimes.rkt:279:4 for-loop [140] 100.0% ------------------------------------------------------------------------- pattern-match [112] 100.0% [131] 250(1.3%) 0(0.0%) for-loop ...simpler-alts/src/core/matcher.rkt:26:9 core457 [141] 100.0% ------------------------------------------------------------------------- for-loop [108] 100.0% [132] 150(0.8%) 0(0.0%) loop .../simpler-alts/src/core/alt-table.rkt:163:2 loop [178] 100.0% ------------------------------------------------------------------------- ??? [119] 100.0% [133] 150(0.8%) 0(0.0%) loop .../racket-7.5/collects/racket/list.rkt:751:4 ??? [143] 100.0% ------------------------------------------------------------------------- group-by61 [111] 100.0% [134] 100(0.5%) 100(0.5%) for-loop ...ket-7.5/collects/racket/list.rkt:805:4 ------------------------------------------------------------------------- eval [123] 100.0% [135] 100(0.5%) 0(0.0%) namespace-syntax-introduce3 (unknown source) free-identifier=? [145] 100.0% ------------------------------------------------------------------------- egraph-add-exprs [126] 100.0% [136] 1012(5.1%) 0(0.0%) ??? ...ie/simpler-alts/src/core/simplify.rkt:103:6 for-loop [147] 89.7% egg-run-rules [153] 10.3% ------------------------------------------------------------------------- atab-add-altn [125] 23.8% debug-print [91] 76.2% [137] 656(3.3%) 100(0.5%) ??? .../contract/private/arrow-val-first.rkt:555:3 ~r92 [148] 61.0% ??? [152] 23.8% ------------------------------------------------------------------------- rewriter [127] 100.0% [138] 586(2.9%) 0(0.0%) for-loop ...simpler-alts/src/core/matcher.rkt:87:4 hash-ref! [197] 84.3% for-loop [151] 15.7% ------------------------------------------------------------------------- coerce-contract [129] 100.0% [139] 312(1.6%) 0(0.0%) coerce-contract/f ...ntract/private/guts.rkt:372:0 coerce-simple-value [149] 100.0% ------------------------------------------------------------------------- for-loop [130] 100.0% [140] 310(1.6%) 310(1.6%) for-loop ...impler-alts/src/core/regimes.rkt:283:8 ------------------------------------------------------------------------- for-loop [131] 100.0% [141] 250(1.3%) 150(0.8%) core457 ...acket/contract/private/arr-i.rkt:976:19 or/c [154] 40.0% ------------------------------------------------------------------------- copying-mergesort [142] 25.2% generic-sort/key [128] 74.8% [142] 202(1.0%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 loop [150] 74.8% copying-mergesort [142] 25.2% ------------------------------------------------------------------------- loop [133] 100.0% [143] 150(0.8%) 0(0.0%) ??? ...herbie/simpler-alts/src/mainloop.rkt:114:10 errors [146] 100.0% ------------------------------------------------------------------------- generic-sort/key [128] 100.0% [144] 148(0.7%) 148(0.7%) jloop ...5/collects/racket/private/sort.rkt:120:23 ------------------------------------------------------------------------- namespace-syntax-introduce3 [135] 100.0% [145] 100(0.5%) 0(0.0%) free-identifier=? (unknown source) resolve+shift28 [23] 100.0% ------------------------------------------------------------------------- ??? [143] 3.9% .../more-scheme.rkt:261:28 [41] 10.5% for-loop [96] 13.2% atab-add-altn [125] 72.5% [146] 3894(19.5%) 0(0.0%) errors ...herbie/simpler-alts/src/points.rkt:192:0 temp85_0 [155] 49.7% for-loop [156] 44.6% eval-prog [157] 5.7% ------------------------------------------------------------------------- ??? [136] 100.0% [147] 908(4.5%) 908(4.5%) for-loop ...mpler-alts/src/core/simplify.rkt:121:2 ------------------------------------------------------------------------- ??? [137] 100.0% [148] 400(2.0%) 244(1.2%) ~r92 ...acket-7.5/collects/racket/format.rkt:189:0 number->string* [159] 39.0% ------------------------------------------------------------------------- coerce-contract/f [139] 100.0% [149] 312(1.6%) 312(1.6%) coerce-simple-value ...ract/private/guts.rkt:385:0 ------------------------------------------------------------------------- copying-mergesort [142] 100.0% [150] 202(1.0%) 102(0.5%) loop ...7.5/collects/racket/private/sort.rkt:96:12 ??? [186] 49.5% ------------------------------------------------------------------------- for-loop [138] 100.0% [151] 184(0.9%) 0(0.0%) for-loop ...simpler-alts/src/core/matcher.rkt:94:8 fix-up-variables [158] 100.0% ------------------------------------------------------------------------- ??? [137] 100.0% [152] 156(0.8%) 0(0.0%) ??? /opt/racket-7.5/collects/racket/hash.rkt:7:0 for-loop [160] 100.0% ------------------------------------------------------------------------- ??? [136] 100.0% [153] 104(0.5%) 0(0.0%) egg-run-rules ...-alts/src/core/simplify.rkt:109:0 make-ffi-rules [161] 100.0% ------------------------------------------------------------------------- core457 [141] 100.0% [154] 100(0.5%) 100(0.5%) or/c ...lects/racket/contract/private/orc.rkt:16:2 ------------------------------------------------------------------------- errors [146] 27.0% eval-const-expr [87] 73.0% [155] 7168(35.9%) 0(0.0%) temp85_0 (unknown source) compile15 [162] 100.0% ------------------------------------------------------------------------- errors [146] 100.0% [156] 1738(8.7%) 252(1.3%) for-loop ...rbie/simpler-alts/src/points.rkt:194:2 .../more-scheme.rkt:261:28 [41] 85.5% ------------------------------------------------------------------------- errors [146] 45.3% eval-const-expr [87] 54.7% [157] 490(2.5%) 164(0.8%) eval-prog ...e/simpler-alts/src/programs.rkt:106:0 for-loop [164] 24.5% inductor [165] 21.2% hash-ref! [197] 20.8% ------------------------------------------------------------------------- for-loop [151] 100.0% [158] 184(0.9%) 0(0.0%) fix-up-variables ...lts/src/core/matcher.rkt:106:2 pattern-substitute [163] 100.0% ------------------------------------------------------------------------- ~r92 [148] 100.0% [159] 156(0.8%) 156(0.8%) number->string* ...ollects/racket/format.rkt:417:0 ------------------------------------------------------------------------- ??? [152] 100.0% [160] 156(0.8%) 156(0.8%) for-loop ...cket-7.5/collects/racket/hash.rkt:14:2 ------------------------------------------------------------------------- egg-run-rules [153] 100.0% [161] 104(0.5%) 0(0.0%) make-ffi-rules ...s/egg-herbie-linux/main.rkt:28:0 for-loop [166] 100.0% ------------------------------------------------------------------------- temp85_0 [155] 100.0% [162] 7168(35.9%) 0(0.0%) compile15 (unknown source) temp91_0 [167] 100.0% ------------------------------------------------------------------------- fix-up-variables [158] 100.0% [163] 184(0.9%) 184(0.9%) pattern-substitute ...ts/src/core/matcher.rkt:45:0 ------------------------------------------------------------------------- eval-prog [157] 100.0% [164] 120(0.6%) 0(0.0%) for-loop ...e/simpler-alts/src/programs.rkt:138:15 return/no-unsupplied [168] 100.0% ------------------------------------------------------------------------- eval-prog [157] 100.0% [165] 104(0.5%) 0(0.0%) inductor ...ie/simpler-alts/src/programs.rkt:127:4 table-ref [169] 100.0% ------------------------------------------------------------------------- make-ffi-rules [161] 100.0% [166] 104(0.5%) 0(0.0%) for-loop ....5/pkgs/egg-herbie-linux/main.rkt:29:2 to-egg-pattern [170] 100.0% ------------------------------------------------------------------------- compile15 [162] 100.0% [167] 7168(35.9%) 0(0.0%) temp91_0 (unknown source) temp118_0 [171] 86.4% compile-top9 [172] 11.0% loop [178] 2.6% ------------------------------------------------------------------------- simplify* [80] 20.7% for-loop [164] 22.1% ??? [52] 57.2% [168] 542(2.7%) 422(2.1%) return/no-unsupplied ...ct/private/arr-i.rkt:566:0 filter [173] 22.1% ------------------------------------------------------------------------- inductor [165] 100.0% [169] 104(0.5%) 104(0.5%) table-ref ...rbie/simpler-alts/src/common.rkt:33:0 ------------------------------------------------------------------------- for-loop [166] 100.0% [170] 104(0.5%) 104(0.5%) to-egg-pattern ...ie-linux/to-egg-pattern.rkt:17:0 ------------------------------------------------------------------------- temp91_0 [167] 100.0% [171] 6190(31.0%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [174] 100.0% ------------------------------------------------------------------------- temp91_0 [167] 100.0% [172] 792(4.0%) 150(0.8%) compile-top9 (unknown source) compile-forms33 [175] 81.1% ------------------------------------------------------------------------- return/no-unsupplied [168] 100.0% [173] 120(0.6%) 120(0.6%) filter ...5/collects/racket/private/list.rkt:256:2 ------------------------------------------------------------------------- loop [178] 15.0% temp118_0 [171] 85.0% [174] 7282(36.5%) 186(0.9%) expand-capturing-lifts (unknown source) lambda-clause-expander [176] 80.4% dispatch-transformer41 [6] 8.9% expand-id-application-form17 [181] 4.3% loop [178] 3.9% ------------------------------------------------------------------------- compile-top9 [172] 100.0% [175] 642(3.2%) 0(0.0%) compile-forms33 (unknown source) for-loop [179] 100.0% ------------------------------------------------------------------------- expand-capturing-lifts [174] 100.0% [176] 5852(29.3%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [177] 97.3% loop [178] 2.7% ------------------------------------------------------------------------- lambda-clause-expander [176] 32.3% for-loop [179] 67.7% [177] 5696(28.5%) 0(0.0%) finish-bodys (unknown source) for-loop [179] 100.0% ------------------------------------------------------------------------- loop [132] 0.1% egraph-add-exprs [126] 0.1% read-unwrapped-sequence17 [55] 0.4% lambda-clause-expander [176] 0.9% gf [180] 1.2% ??? [205] 2.3% expand-capturing-lifts [174] 3.2% syntax->list [54] 3.8% temp91_0 [167] 4.2% for-loop [61] 5.6% for-loop [179] 9.6% apply-transformer52 [22] 10.7% eval-const-expr [87] 12.0% loop [178] 12.9% syntax-e/no-taint [21] 33.0% [178] 4434(22.2%) 996(5.0%) loop (unknown source) gf [180] 30.8% expand-capturing-lifts [174] 16.2% loop [178] 12.9% core-form-sym [183] 9.2% syntax-e [8] 7.0% expand-id-application-form17 [181] 5.6% ??? [182] 4.9% hash-ref! [197] 2.3% dispatch-transformer41 [6] 0.9% ulp-difference [190] 0.8% read-one/not-eof [14] 0.4% egg-expr->expr [15] 0.1% ------------------------------------------------------------------------- fallback-loop [33] 3.0% compile-forms33 [175] 9.8% for-loop [179] 19.6% finish-bodys [177] 67.5% [179] 6522(32.7%) 1644(8.2%) for-loop (unknown source) finish-bodys [177] 45.8% for-loop [179] 19.6% compile-module-linklet57 [184] 9.8% dispatch-transformer41 [6] 5.5% loop [178] 4.2% expand-implicit [10] 4.1% get-body [192] 2.5% syntax-e [8] 2.2% add-local-binding!39 [188] 0.8% expand-identifier [11] 0.6% dispatch-variable [191] 0.1% ------------------------------------------------------------------------- apply-post-expansion [39] 2.5% loop [178] 97.5% [180] 2088(10.5%) 822(4.1%) gf (unknown source) propagation-apply [185] 28.4% propagation-apply-shifted [189] 12.3% propagation-merge [193] 7.5% loop [178] 5.0% cache-or-reuse-set [194] 4.9% syntax-e/no-taint [21] 2.5% ------------------------------------------------------------------------- expand-capturing-lifts [174] 37.1% loop [178] 62.9% [181] 842(4.2%) 0(0.0%) expand-id-application-form17 (unknown source) syntax-e/no-taint [21] 62.9% binding-lookup52 [187] 37.1% ------------------------------------------------------------------------- map [64] 40.5% loop [178] 59.5% [182] 504(2.5%) 104(0.5%) ??? ...s/herbie/simpler-alts/src/points.rkt:181:26 ??? [186] 39.7% ??? [195] 19.8% ulp-difference [190] 19.8% ------------------------------------------------------------------------- loop [178] 100.0% [183] 484(2.4%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [23] 69.0% syntax-e [8] 31.0% ------------------------------------------------------------------------- for-loop [179] 100.0% [184] 642(3.2%) 642(3.2%) compile-module-linklet57 (unknown source) ------------------------------------------------------------------------- gf [180] 100.0% [185] 594(3.0%) 594(3.0%) propagation-apply (unknown source) ------------------------------------------------------------------------- loop [150] 24.8% .../more-scheme.rkt:261:28 [41] 25.7% ??? [182] 49.5% [186] 404(2.0%) 404(2.0%) ??? ...cket-7.5/collects/racket/function.rkt:93:12 ------------------------------------------------------------------------- expand-id-application-form17 [181]100.0% [187] 312(1.6%) 312(1.6%) binding-lookup52 (unknown source) ------------------------------------------------------------------------- for-loop [179] 100.0% [188] 264(1.3%) 264(1.3%) add-local-binding!39 (unknown source) ------------------------------------------------------------------------- gf [180] 100.0% [189] 256(1.3%) 256(1.3%) propagation-apply-shifted (unknown source) ------------------------------------------------------------------------- ??? [182] 50.0% loop [178] 50.0% [190] 200(1.0%) 100(0.5%) ulp-difference .../simpler-alts/src/float.rkt:19:0 ??? [195] 50.0% ------------------------------------------------------------------------- for-loop [179] 100.0% [191] 162(0.8%) 0(0.0%) dispatch-variable (unknown source) substitute-variable6 [196] 100.0% ------------------------------------------------------------------------- for-loop [179] 100.0% [192] 160(0.8%) 160(0.8%) get-body (unknown source) ------------------------------------------------------------------------- gf [180] 100.0% [193] 156(0.8%) 156(0.8%) propagation-merge (unknown source) ------------------------------------------------------------------------- gf [180] 100.0% [194] 102(0.5%) 102(0.5%) cache-or-reuse-set (unknown source) ------------------------------------------------------------------------- loop [18] 0.3% .../more-scheme.rkt:261:28 [41] 0.9% ulp-difference [190] 0.9% ??? [182] 0.9% real->precision [84] 1.0% loop [67] 1.7% ??? [3] 27.6% location-do [198] 33.4% for-loop [124] 33.4% [195] 11734(58.8%) 300(1.5%) ??? ...tract/private/arrow-higher-order.rkt:375:33 location-do [198] 33.4% approximate9 [2] 33.4% hash-ref! [197] 27.9% bf [199] 1.0% ival-mult [200] 0.9% ------------------------------------------------------------------------- dispatch-variable [191] 100.0% [196] 162(0.8%) 162(0.8%) substitute-variable6 (unknown source) ------------------------------------------------------------------------- for-loop [47] 0.1% localize-error [101] 0.1% eval-prog [157] 0.2% simplify* [80] 0.2% for-loop [26] 0.5% loop [178] 0.7% map [64] 0.8% for-loop [24] 1.5% for-loop [27] 1.7% ??? [32] 1.7% loop [97] 2.1% ??? [202] 2.9% for-loop [138] 3.5% first-nonzero-exp [44] 4.0% for-loop [20] 5.7% ??? [201] 8.2% loop [18] 11.0% ??? [195] 11.3% for-loop [19] 13.3% ??? [3] 29.4% [197] 11248(56.3%) 640(3.2%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [3] 40.4% ??? [4] 15.3% f40 [42] 9.1% ??? [201] 8.2% ??? [5] 6.6% matcher [203] 3.8% parse-loop74 [70] 3.5% taylor [72] 3.1% ??? [202] 2.9% ??? [7] 2.0% ??? [205] 0.7% f61 [43] 0.6% ??? [16] 0.1% ------------------------------------------------------------------------- location-do [198] 45.4% ??? [195] 54.6% [198] 11122(55.7%) 0(0.0%) location-do .../simpler-alts/src/programs.rkt:87:0 ??? [195] 54.6% location-do [198] 45.4% ------------------------------------------------------------------------- ??? [195] 100.0% [199] 112(0.6%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:615:2 new-mpfr [206] 100.0% ------------------------------------------------------------------------- ??? [195] 100.0% [200] 100(0.5%) 0(0.0%) ival-mult ...impler-alts/src/biginterval.rkt:129:0 bfmul [204] 100.0% ------------------------------------------------------------------------- hash-ref! [197] 100.0% [201] 7822(39.2%) 0(0.0%) ??? ...rbie/simpler-alts/src/core/taylor.rkt:44:15 hash-ref! [197] 100.0% ------------------------------------------------------------------------- hash-ref! [197] 100.0% [202] 2728(13.7%) 0(0.0%) ??? ...bie/simpler-alts/src/core/taylor.rkt:327:33 hash-ref! [197] 100.0% ------------------------------------------------------------------------- hash-ref! [197] 100.0% [203] 436(2.2%) 0(0.0%) matcher ...simpler-alts/src/core/matcher.rkt:117:2 ??? [12] 44.3% rewriter [127] 44.3% constant? [207] 11.5% ------------------------------------------------------------------------- ival-mult [200] 24.3% ??? [120] 26.7% ival-add [102] 49.0% [204] 412(2.1%) 100(0.5%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:835:4 new-mpfr [206] 75.7% ------------------------------------------------------------------------- hash-ref! [197] 100.0% [205] 102(0.5%) 0(0.0%) ??? .../herbie/simpler-alts/src/programs.rkt:202:5 loop [178] 100.0% ------------------------------------------------------------------------- bf [199] 26.4% bfmul [204] 73.6% [206] 424(2.1%) 424(2.1%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:348:0 ------------------------------------------------------------------------- matcher [203] 50.0% free-variables [60] 50.0% [207] 300(1.5%) 0(0.0%) constant? ...pler-alts/src/syntax/syntax.rkt:726:0 value? [208] 100.0% ------------------------------------------------------------------------- constant? [207] 100.0% [208] 300(1.5%) 300(1.5%) value? ...e/simpler-alts/src/syntax/types.rkt:18:0 -------------------------------------------------------------------------