Profiling results ----------------- Total cpu time observed: 30540ms (out of 30712ms) Number of samples taken: 162 (once every 189ms) (Hiding functions with self<1.0% and local<2.0%: 3 of 205 hidden) =============================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee =============================================================================== [1] 30540(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [9] 100.0% ------------------------------------------------------------------------------- ??? [135] 100.0% [2] 13676(44.8%) 0(0.0%) approximate9 ...constants/src/core/taylor.rkt:12:0 loop [10] 89.4% for-loop [14] 10.6% ------------------------------------------------------------------------------- hash-ref! [174] 100.0% [3] 11866(38.9%) 0(0.0%) ??? ...-herbie-constants/src/core/taylor.rkt:68:15 hash-ref! [174] 72.4% ??? [135] 27.1% get-coeffs [17] 0.5% ------------------------------------------------------------------------------- hash-ref! [174] 100.0% [4] 8670(28.4%) 0(0.0%) ??? ...herbie-constants/src/core/taylor.rkt:291:26 for-loop [11] 100.0% ------------------------------------------------------------------------------- hash-ref! [174] 100.0% [5] 5670(18.6%) 0(0.0%) ??? ...herbie-constants/src/core/taylor.rkt:301:23 for-loop [12] 100.0% ------------------------------------------------------------------------------- stx-pair? [118] 7.5% loop [121] 14.8% for-loop [145] 77.7% [6] 2456(8.0%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [13] 100.0% ------------------------------------------------------------------------------- for-loop [145] 100.0% [7] 1472(4.8%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [129] 87.2% datum->syntax6 [16] 12.8% ------------------------------------------------------------------------------- matcher [78] 100.0% [8] 1072(3.5%) 0(0.0%) ??? ...erbie-constants/src/core/matcher.rkt:130:11 for-loop [15] 100.0% ------------------------------------------------------------------------------- ??? [1] 100.0% [9] 30540(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [18] 100.0% ------------------------------------------------------------------------------- approximate9 [2] 100.0% [10] 12232(40.1%) 0(0.0%) loop ...-herbie-constants/src/core/taylor.rkt:87:4 hash-ref! [174] 97.0% ??? [135] 3.0% ------------------------------------------------------------------------------- ??? [4] 100.0% [11] 8670(28.4%) 0(0.0%) for-loop ...e-constants/src/core/taylor.rkt:291:52 hash-ref! [174] 72.5% ??? [20] 25.6% simplify [19] 1.9% ------------------------------------------------------------------------------- ??? [5] 100.0% [12] 5670(18.6%) 168(0.6%) for-loop ...e-constants/src/core/taylor.rkt:304:27 hash-ref! [174] 98.5% ------------------------------------------------------------------------------- gf [123] 6.0% expand-id-application-form17 [161] 13.3% syntax-e [6] 80.6% [13] 3046(10.0%) 0(0.0%) syntax-e/no-taint (unknown source) loop [121] 100.0% ------------------------------------------------------------------------------- approximate9 [2] 100.0% [14] 1444(4.7%) 0(0.0%) for-loop ...ie-constants/src/core/taylor.rkt:30:18 taylor [137] 75.1% taylor-invert [146] 12.6% taylor-quotient [21] 12.3% ------------------------------------------------------------------------------- ??? [8] 100.0% [15] 1072(3.5%) 0(0.0%) for-loop ...-constants/src/core/matcher.rkt:132:15 matcher [78] 100.0% ------------------------------------------------------------------------------- expand-implicit [7] 100.0% [16] 188(0.6%) 0(0.0%) datum->syntax6 (unknown source) loop [121] 100.0% ------------------------------------------------------------------------------- ??? [3] 100.0% [17] 170(0.6%) 0(0.0%) get-coeffs ...e-constants/src/core/taylor.rkt:65:2 listof [177] 100.0% ------------------------------------------------------------------------------- profile-thunk16 [9] 100.0% [18] 30540(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [22] 100.0% ------------------------------------------------------------------------------- for-loop [11] 1.3% loop [121] 1.3% taylor-quotient [21] 1.4% ??? [184] 1.4% ??? [135] 1.7% taylor-invert [146] 5.9% hash-ref! [174] 86.8% [19] 12648(41.4%) 0(0.0%) simplify ...bie-constants/src/core/reduce.rkt:16:0 f46 [122] 44.9% parse-loop80 [23] 31.2% f67 [24] 12.8% debug-print [148] 5.8% simplify* [139] 2.8% simplify-node [138] 2.6% ------------------------------------------------------------------------------- ??? [184] 4.2% for-loop [11] 95.8% [20] 4428(14.5%) 0(0.0%) ??? ...herbie-constants/src/core/taylor.rkt:294:19 hash-ref! [174] 100.0% ------------------------------------------------------------------------------- map [127] 47.3% for-loop [14] 52.7% [21] 338(1.1%) 0(0.0%) taylor-quotient ...tants/src/core/taylor.rkt:334:0 simplify [19] 52.7% first-nonzero-exp [162] 47.3% ------------------------------------------------------------------------------- for-loop [93] 5.5% run [18] 94.5% [22] 30540(100.0%) 204(0.7%) .../more-scheme.rkt:261:28 (unknown source) run-improve47 [25] 72.7% prepare-points-intervals [27] 10.0% oracle-error [29] 5.9% get-final-combination [28] 4.9% ??? [128] 3.5% ulp-difference [131] 1.0% baseline-error [32] 0.6% ??? [135] 0.3% errors [89] 0.3% *bit-width* [31] 0.3% ------------------------------------------------------------------------------- map [127] 43.7% simplify [19] 56.3% [23] 6994(22.9%) 0(0.0%) parse-loop80 (unknown source) eval-const-expr [26] 100.0% ------------------------------------------------------------------------------- map [127] 24.7% simplify [19] 75.3% [24] 2158(7.1%) 0(0.0%) f67 (unknown source) eval-const-expr [26] 56.8% composed [30] 43.2% ------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [25] 23276(76.2%) 0(0.0%) run-improve47 ...-constants/src/mainloop.rkt:346:0 for-loop [33] 98.2% simplify! [48] 1.8% ------------------------------------------------------------------------------- f67 [24] 14.9% parse-loop80 [23] 85.1% [26] 8220(26.9%) 0(0.0%) eval-const-expr ...onstants/src/programs.rkt:118:0 temp85_0 [96] 82.7% loop [121] 6.8% eval [37] 6.6% inductor [97] 1.9% ------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [27] 3058(10.0%) 0(0.0%) prepare-points-intervals ...s/src/points.rkt:110:0 loop [34] 100.0% ------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [28] 2006(6.6%) 0(0.0%) get-final-combination ...ts/src/mainloop.rkt:371:0 infer-splitpoints [35] 100.0% ------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [29] 1800(5.9%) 0(0.0%) oracle-error ...bie-constants/src/points.rkt:188:0 for-loop [36] 100.0% ------------------------------------------------------------------------------- f67 [24] 100.0% [30] 932(3.1%) 0(0.0%) composed ...ollects/racket/private/list.rkt:321:16 free-variables [200] 100.0% ------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [31] 202(0.7%) 0(0.0%) *bit-width* ...herbie-constants/src/float.rkt:35:0 return/no-unsupplied [152] 100.0% ------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 100.0% [32] 194(0.6%) 0(0.0%) baseline-error ...e-constants/src/points.rkt:192:0 loop [68] 100.0% ------------------------------------------------------------------------------- run-improve47 [25] 100.0% [33] 22850(74.8%) 0(0.0%) for-loop ...erbie-constants/src/mainloop.rkt:365:4 run-iter! [38] 100.0% ------------------------------------------------------------------------------- prepare-points-intervals [27] 100.0% [34] 3058(10.0%) 0(0.0%) loop ...-egg-herbie-constants/src/points.rkt:123:4 loop [40] 53.1% ??? [41] 40.1% andmap [42] 6.8% ------------------------------------------------------------------------------- get-final-combination [28] 100.0% [35] 2006(6.6%) 0(0.0%) infer-splitpoints ...nts/src/core/regimes.rkt:34:0 for-loop [39] 100.0% ------------------------------------------------------------------------------- oracle-error [29] 100.0% [36] 1800(5.9%) 0(0.0%) for-loop ...-herbie-constants/src/points.rkt:189:2 loop [121] 88.8% map [127] 11.2% ------------------------------------------------------------------------------- eval-const-expr [26] 100.0% [37] 546(1.8%) 190(0.6%) eval (unknown source) add-ns-scopes [50] 34.1% namespace-syntax-introduce3 [43] 31.1% ------------------------------------------------------------------------------- for-loop [33] 100.0% [38] 22850(74.8%) 0(0.0%) run-iter! ...rbie-constants/src/mainloop.rkt:327:0 gen-series! [44] 60.8% finalize-iter! [45] 28.3% gen-rewrites! [47] 6.2% simplify! [48] 2.9% choose-best-alt! [49] 1.8% ------------------------------------------------------------------------------- infer-splitpoints [35] 100.0% [39] 2006(6.6%) 0(0.0%) for-loop ...ie-constants/src/core/regimes.rkt:47:6 option-on-expr [46] 100.0% ------------------------------------------------------------------------------- loop [34] 100.0% [40] 1624(5.3%) 0(0.0%) loop ...x-egg-herbie-constants/src/points.rkt:81:2 ??? [128] 87.7% ??? [77] 12.3% ------------------------------------------------------------------------------- loop [34] 100.0% [41] 1226(4.0%) 0(0.0%) ??? ...x-egg-herbie-constants/src/points.rkt:106:2 ??? [135] 50.9% loop [121] 32.6% ??? [140] 16.5% ------------------------------------------------------------------------------- loop [34] 100.0% [42] 208(0.7%) 208(0.7%) andmap ...5/collects/racket/private/map.rkt:102:13 ------------------------------------------------------------------------------- eval [37] 100.0% [43] 170(0.6%) 0(0.0%) namespace-syntax-introduce3 (unknown source) add-ns-scopes [50] 100.0% ------------------------------------------------------------------------------- run-iter! [38] 100.0% [44] 13892(45.5%) 0(0.0%) gen-series! ...ie-constants/src/mainloop.rkt:160:0 for-loop [51] 100.0% ------------------------------------------------------------------------------- run-iter! [38] 100.0% [45] 6470(21.2%) 0(0.0%) finalize-iter! ...constants/src/mainloop.rkt:278:0 ??? [77] 100.0% ------------------------------------------------------------------------------- for-loop [39] 100.0% [46] 2006(6.6%) 0(0.0%) option-on-expr ...tants/src/core/regimes.rkt:126:0 for-loop [52] 60.4% err-lsts->split-indices [55] 39.6% ------------------------------------------------------------------------------- run-iter! [38] 100.0% [47] 1408(4.6%) 0(0.0%) gen-rewrites! ...-constants/src/mainloop.rkt:183:0 for-loop [54] 76.1% for-loop [57] 23.9% ------------------------------------------------------------------------------- run-improve47 [25] 39.0% run-iter! [38] 61.0% [48] 1092(3.6%) 0(0.0%) simplify! ...rbie-constants/src/mainloop.rkt:224:0 egraph-run [53] 100.0% ------------------------------------------------------------------------------- run-iter! [38] 100.0% [49] 414(1.4%) 0(0.0%) choose-best-alt! ...nstants/src/mainloop.rkt:117:0 ...ow-val-first.rkt:486:18 [56] 100.0% ------------------------------------------------------------------------------- namespace-syntax-introduce3 [43] 47.8% eval [37] 52.2% [50] 356(1.2%) 0(0.0%) add-ns-scopes (unknown source) gf [123] 100.0% ------------------------------------------------------------------------------- gen-series! [44] 100.0% [51] 13892(45.5%) 0(0.0%) for-loop ...erbie-constants/src/mainloop.rkt:167:7 taylor-alt [58] 100.0% ------------------------------------------------------------------------------- option-on-expr [46] 100.0% [52] 1212(4.0%) 0(0.0%) for-loop ...e-constants/src/core/regimes.rkt:136:4 errors [89] 100.0% ------------------------------------------------------------------------------- simplify! [48] 100.0% [53] 1092(3.6%) 0(0.0%) egraph-run ...-constants/src/core/eggmath.rkt:51:0 egraph-add-exprs [59] 100.0% ------------------------------------------------------------------------------- gen-rewrites! [47] 100.0% [54] 1072(3.5%) 0(0.0%) for-loop ...rbie-constants/src/mainloop.rkt:191:11 rewrite-expression-head20 [60] 100.0% ------------------------------------------------------------------------------- option-on-expr [46] 100.0% [55] 794(2.6%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:262:0 loop [61] 100.0% ------------------------------------------------------------------------------- choose-best-alt! [49] 100.0% [56] 414(1.4%) 0(0.0%) ...ow-val-first.rkt:486:18 (unknown source) ??? [62] 100.0% ------------------------------------------------------------------------------- gen-rewrites! [47] 100.0% [57] 336(1.1%) 0(0.0%) for-loop ...erbie-constants/src/mainloop.rkt:208:4 for-loop [63] 100.0% ------------------------------------------------------------------------------- for-loop [51] 100.0% [58] 13892(45.5%) 0(0.0%) taylor-alt ...bie-constants/src/mainloop.rkt:146:0 for-loop [64] 100.0% ------------------------------------------------------------------------------- egraph-run [53] 100.0% [59] 1092(3.6%) 0(0.0%) egraph-add-exprs ...nts/src/core/eggmath.rkt:113:0 ??? [65] 100.0% ------------------------------------------------------------------------------- for-loop [54] 100.0% [60] 1072(3.5%) 0(0.0%) rewrite-expression-head20 ...core/matcher.rkt:87:0 rewriter [66] 100.0% ------------------------------------------------------------------------------- err-lsts->split-indices [55] 100.0% [61] 794(2.6%) 0(0.0%) loop ...erbie-constants/src/core/regimes.rkt:313:4 for-loop [67] 100.0% ------------------------------------------------------------------------------- ...ow-val-first.rkt:486:18 [56] 100.0% [62] 414(1.4%) 0(0.0%) ??? ...erbie-constants/src/core/alt-table.rkt:58:0 loop [68] 100.0% ------------------------------------------------------------------------------- for-loop [57] 100.0% [63] 336(1.1%) 0(0.0%) for-loop ...erbie-constants/src/mainloop.rkt:209:6 ??? [135] 54.8% change-apply [69] 45.2% ------------------------------------------------------------------------------- taylor-alt [58] 100.0% [64] 13892(45.5%) 0(0.0%) for-loop ...erbie-constants/src/mainloop.rkt:152:6 ??? [135] 100.0% ------------------------------------------------------------------------------- egraph-add-exprs [59] 100.0% [65] 1092(3.6%) 0(0.0%) ??? ...herbie-constants/src/core/simplify.rkt:72:6 for-loop [70] 100.0% ------------------------------------------------------------------------------- rewrite-expression-head20 [60] 40.3% matcher [78] 59.7% [66] 1072(3.5%) 380(1.2%) rewriter ...ie-constants/src/core/matcher.rkt:90:2 for-loop [71] 59.7% *rules* [72] 27.1% ------------------------------------------------------------------------------- loop [61] 100.0% [67] 794(2.6%) 194(0.6%) for-loop ...e-constants/src/core/regimes.rkt:278:4 for-loop [73] 75.6% ------------------------------------------------------------------------------- baseline-error [32] 31.9% ??? [62] 68.1% [68] 608(2.0%) 0(0.0%) loop .../racket-7.5/collects/racket/list.rkt:751:4 ??? [74] 68.1% ??? [75] 31.9% ------------------------------------------------------------------------------- for-loop [63] 100.0% [69] 152(0.5%) 0(0.0%) change-apply ...onstants/src/core/matcher.rkt:70:0 pattern-substitute [76] 100.0% ------------------------------------------------------------------------------- ??? [65] 100.0% [70] 1092(3.6%) 1092(3.6%) for-loop ...e-constants/src/core/simplify.rkt:91:2 ------------------------------------------------------------------------------- rewriter [66] 100.0% [71] 1072(3.5%) 0(0.0%) for-loop ...ie-constants/src/core/matcher.rkt:92:4 matcher [78] 100.0% ------------------------------------------------------------------------------- rewriter [66] 100.0% [72] 692(2.3%) 0(0.0%) *rules* ...ie-constants/src/syntax/rules.rkt:666:0 for-loop [145] 100.0% ------------------------------------------------------------------------------- for-loop [67] 100.0% [73] 600(2.0%) 394(1.3%) for-loop ...e-constants/src/core/regimes.rkt:282:8 ??? [79] 34.3% ------------------------------------------------------------------------------- loop [68] 100.0% [74] 414(1.4%) 0(0.0%) ??? ...gg-herbie-constants/src/mainloop.rkt:114:10 errors [89] 100.0% ------------------------------------------------------------------------------- loop [68] 100.0% [75] 194(0.6%) 0(0.0%) ??? ...-egg-herbie-constants/src/points.rkt:193:27 eval-errors [80] 100.0% ------------------------------------------------------------------------------- change-apply [69] 33.3% pattern-substitute [76] 66.7% [76] 152(0.5%) 0(0.0%) pattern-substitute ...ts/src/core/matcher.rkt:46:0 pattern-substitute [76] 66.7% ??? [77] 33.3% ------------------------------------------------------------------------------- pattern-substitute [76] 2.1% free-variables [200] 2.5% loop [40] 2.7% variable? [201] 4.8% finalize-iter! [45] 88.0% [77] 7354(24.1%) 684(2.2%) ??? ...contract/private/arrow-val-first.rkt:486:18 for-loop [81] 79.5% atab-add-altns [82] 8.4% ??? [83] 2.7% ------------------------------------------------------------------------------- for-loop [15] 50.0% for-loop [71] 50.0% [78] 1072(3.5%) 0(0.0%) matcher ...ie-constants/src/core/matcher.rkt:118:2 ??? [8] 50.0% rewriter [66] 50.0% ------------------------------------------------------------------------------- for-loop [73] 100.0% [79] 206(0.7%) 206(0.7%) ??? ...cket-7.5/collects/racket/function.rkt:93:12 ------------------------------------------------------------------------------- ??? [75] 100.0% [80] 194(0.6%) 0(0.0%) eval-errors ...rbie-constants/src/points.rkt:179:0 for-loop [84] 100.0% ------------------------------------------------------------------------------- ??? [77] 100.0% [81] 5850(19.2%) 0(0.0%) for-loop ...-constants/src/core/alt-table.rkt:55:2 atab-add-altn [85] 70.3% errors [89] 26.3% for-loop [90] 3.4% ------------------------------------------------------------------------------- ??? [77] 100.0% [82] 620(2.0%) 0(0.0%) atab-add-altns ...ants/src/core/alt-table.rkt:49:0 atab-add-altn [85] 37.4% loop [86] 33.5% loop [88] 29.0% ------------------------------------------------------------------------------- ??? [77] 100.0% [83] 200(0.7%) 0(0.0%) ??? ...ects/racket/contract/private/guts.rkt:770:8 bigvalue? [87] 100.0% ------------------------------------------------------------------------------- eval-errors [80] 100.0% [84] 194(0.6%) 194(0.6%) for-loop ...-herbie-constants/src/points.rkt:181:2 ------------------------------------------------------------------------------- atab-add-altns [82] 5.3% for-loop [81] 94.7% [85] 4342(14.2%) 0(0.0%) atab-add-altn ...ants/src/core/alt-table.rkt:203:0 errors [89] 91.0% for-loop [90] 4.6% override-at-pnts [91] 4.5% ------------------------------------------------------------------------------- atab-add-altns [82] 1.8% loop [86] 98.2% [86] 208(0.7%) 208(0.7%) loop ...racket-7.5/collects/racket/list.rkt:434:17 loop [86] 98.2% ------------------------------------------------------------------------------- ??? [83] 100.0% [87] 200(0.7%) 200(0.7%) bigvalue? ...e-constants/src/syntax/types.rkt:19:0 ------------------------------------------------------------------------------- atab-add-altns [82] 100.0% [88] 180(0.6%) 0(0.0%) loop ...bie-constants/src/core/alt-table.rkt:177:2 loop [92] 100.0% ------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [22] 2.8% ??? [74] 5.7% for-loop [52] 16.6% for-loop [81] 21.0% atab-add-altn [85] 53.9% [89] 7322(24.0%) 0(0.0%) errors ...gg-herbie-constants/src/points.rkt:201:0 for-loop [93] 51.8% eval-prog [94] 48.2% ------------------------------------------------------------------------------- atab-add-altn [85] 49.7% for-loop [81] 50.3% [90] 398(1.3%) 398(1.3%) for-loop ...constants/src/core/alt-table.rkt:119:2 ------------------------------------------------------------------------------- atab-add-altn [85] 100.0% [91] 194(0.6%) 0(0.0%) override-at-pnts ...s/src/core/alt-table.rkt:138:0 for-loop [95] 100.0% ------------------------------------------------------------------------------- loop [88] 1.7% loop [92] 98.3% [92] 180(0.6%) 180(0.6%) loop ...racket-7.5/collects/racket/list.rkt:434:28 loop [92] 98.3% ------------------------------------------------------------------------------- errors [89] 100.0% [93] 3792(12.4%) 416(1.4%) for-loop ...-herbie-constants/src/points.rkt:203:2 .../more-scheme.rkt:261:28 [22] 89.0% ------------------------------------------------------------------------------- errors [89] 100.0% [94] 3530(11.6%) 0(0.0%) eval-prog ...erbie-constants/src/programs.rkt:83:0 temp85_0 [96] 94.2% inductor [97] 5.8% ------------------------------------------------------------------------------- override-at-pnts [91] 100.0% [95] 194(0.6%) 194(0.6%) for-loop ...onstants/src/core/alt-table.rkt:139:22 ------------------------------------------------------------------------------- eval-prog [94] 32.9% eval-const-expr [26] 67.1% [96] 10124(33.1%) 0(0.0%) temp85_0 (unknown source) compile15 [98] 100.0% ------------------------------------------------------------------------------- eval-prog [94] 18.8% inductor [97] 37.6% eval-const-expr [26] 43.6% [97] 362(1.2%) 204(0.7%) inductor ...erbie-constants/src/programs.rkt:104:4 table-ref [99] 43.6% inductor [97] 37.6% ------------------------------------------------------------------------------- temp85_0 [96] 100.0% [98] 10124(33.1%) 0(0.0%) compile15 (unknown source) temp91_0 [100] 98.5% loop [121] 1.5% ------------------------------------------------------------------------------- inductor [97] 100.0% [99] 158(0.5%) 0(0.0%) table-ref ...-herbie-constants/src/common.rkt:33:0 dict? [101] 100.0% ------------------------------------------------------------------------------- compile15 [98] 100.0% [100] 9972(32.7%) 190(0.6%) temp91_0 (unknown source) temp118_0 [102] 85.8% compile-top9 [103] 12.3% ------------------------------------------------------------------------------- table-ref [99] 100.0% [101] 158(0.5%) 158(0.5%) dict? ...ollects/racket/private/generic.rkt:146:11 ------------------------------------------------------------------------------- temp91_0 [100] 100.0% [102] 8556(28.0%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [104] 100.0% ------------------------------------------------------------------------------- temp91_0 [100] 100.0% [103] 1226(4.0%) 0(0.0%) compile-top9 (unknown source) compile-forms33 [105] 85.2% hash->linklet-bundle [106] 14.8% ------------------------------------------------------------------------------- loop [121] 7.7% temp118_0 [102] 92.3% [104] 9266(30.3%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [107] 84.8% dispatch-transformer41 [108] 9.8% loop [121] 3.4% expand-id-application-form17 [161] 2.1% ------------------------------------------------------------------------------- compile-top9 [103] 100.0% [105] 1044(3.4%) 342(1.1%) compile-forms33 (unknown source) for-loop [145] 67.2% ------------------------------------------------------------------------------- compile-top9 [103] 100.0% [106] 182(0.6%) 182(0.6%) hash->linklet-bundle (unknown source) ------------------------------------------------------------------------------- expand-capturing-lifts [104] 100.0% [107] 7856(25.7%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [109] 88.3% loop [121] 11.7% ------------------------------------------------------------------------------- for-loop [145] 23.3% expand-capturing-lifts [104] 38.1% loop [121] 38.6% [108] 2382(7.8%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [110] 100.0% ------------------------------------------------------------------------------- lambda-clause-expander [107] 21.1% for-loop [145] 78.9% [109] 6936(22.7%) 0(0.0%) finish-bodys (unknown source) for-loop [145] 100.0% ------------------------------------------------------------------------------- dispatch-transformer41 [108] 100.0% [110] 2382(7.8%) 184(0.6%) apply-transformer52 (unknown source) apply-transformer-in-context [111] 62.5% loop [121] 22.1% apply-post-expansion [112] 7.7% ------------------------------------------------------------------------------- apply-transformer52 [110] 100.0% [111] 1488(4.9%) 568(1.9%) apply-transformer-in-context (unknown source) ??? [113] 36.3% go [114] 13.2% parse-lambda [115] 12.4% ------------------------------------------------------------------------------- apply-transformer52 [110] 100.0% [112] 184(0.6%) 0(0.0%) apply-post-expansion (unknown source) gf [123] 100.0% ------------------------------------------------------------------------------- apply-transformer-in-context [111] 100.0% [113] 540(1.8%) 186(0.6%) ??? ...collects/racket/private/qq-and-or.rkt:155:9 ??? [116] 65.6% ------------------------------------------------------------------------------- apply-transformer-in-context [111] 100.0% [114] 196(0.6%) 0(0.0%) go .../collects/racket/private/qq-and-or.rkt:50:20 loop [117] 100.0% ------------------------------------------------------------------------------- apply-transformer-in-context [111] 100.0% [115] 184(0.6%) 0(0.0%) parse-lambda ...llects/racket/private/kw.rkt:619:2 stx-pair? [118] 100.0% ------------------------------------------------------------------------------- ??? [113] 100.0% [116] 354(1.2%) 184(0.6%) ??? ...ollects/racket/private/qq-and-or.rkt:164:21 syntax->list [120] 48.0% ------------------------------------------------------------------------------- go [114] 100.0% [117] 196(0.6%) 0(0.0%) loop ...llects/racket/private/qq-and-or.rkt:101:61 datum->syntax [119] 100.0% ------------------------------------------------------------------------------- parse-lambda [115] 100.0% [118] 184(0.6%) 0(0.0%) stx-pair? .../collects/racket/private/stx.rkt:40:4 syntax-e [6] 100.0% ------------------------------------------------------------------------------- loop [117] 100.0% [119] 196(0.6%) 196(0.6%) datum->syntax (unknown source) ------------------------------------------------------------------------------- ??? [116] 100.0% [120] 170(0.6%) 0(0.0%) syntax->list (unknown source) loop [121] 100.0% ------------------------------------------------------------------------------- syntax->list [120] 0.6% compile15 [98] 0.8% parse-loop55 [143] 1.0% taylor [137] 1.9% datum->syntax6 [16] 2.1% gf [123] 2.5% expand-capturing-lifts [104] 2.6% ??? [41] 4.5% eval-const-expr [26] 4.5% for-loop [36] 4.6% apply-transformer52 [110] 4.8% for-loop [145] 7.7% lambda-clause-expander [107] 9.0% ??? [128] 12.0% loop [121] 14.0% syntax-e/no-taint [13] 27.5% [121] 8986(29.4%) 2018(6.6%) loop (unknown source) gf [123] 25.8% loop [121] 14.0% ??? [135] 13.0% dispatch-transformer41 [108] 9.0% expand-capturing-lifts [104] 5.3% expand-id-application-form17 [161] 4.0% core-form-sym [126] 3.7% ??? [124] 3.0% simplify [19] 1.9% expand-identifier [125] 1.8% syntax-e [6] 1.7% ??? [128] 1.0% f46 [122] 1.0% ------------------------------------------------------------------------------- loop [121] 0.4% map [127] 37.1% simplify [19] 60.8% [122] 5678(18.6%) 0(0.0%) f46 (unknown source) map [127] 100.0% ------------------------------------------------------------------------------- apply-post-expansion [112] 1.2% add-ns-scopes [50] 6.6% loop [121] 92.2% [123] 3054(10.0%) 1098(3.6%) gf (unknown source) propagation-apply [130] 38.6% loop [121] 9.9% propagation-apply-shifted [132] 7.6% cache-or-reuse-hash [133] 6.1% cache-or-reuse-set [134] 5.7% syntax-e/no-taint [13] 1.2% ------------------------------------------------------------------------------- map [127] 16.9% loop [121] 83.1% [124] 1196(3.9%) 0(0.0%) ??? ...-egg-herbie-constants/src/points.rkt:190:26 ??? [128] 67.1% ulp-difference [131] 32.9% ------------------------------------------------------------------------------- loop [121] 29.9% for-loop [145] 70.1% [125] 536(1.8%) 0(0.0%) expand-identifier (unknown source) resolve+shift28 [129] 100.0% ------------------------------------------------------------------------------- loop [121] 100.0% [126] 332(1.1%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [129] 100.0% ------------------------------------------------------------------------------- parse-loop55 [143] 0.8% for-loop [36] 2.7% taylor [137] 22.6% f46 [122] 73.9% [127] 7486(24.5%) 0(0.0%) map ...t-7.5/collects/racket/private/map.rkt:35:13 parse-loop80 [23] 30.5% f46 [122] 28.1% taylor [137] 14.4% taylor-invert [146] 7.5% simplify-node [138] 4.5% parse-loop55 [143] 3.5% f67 [24] 2.9% ??? [124] 2.7% ??? [142] 1.7% simplify* [139] 1.7% make-multiplication-node [175] 0.9% taylor-quotient [21] 0.7% ------------------------------------------------------------------------------- loop [121] 8.3% ??? [124] 16.8% loop [40] 29.8% .../more-scheme.rkt:261:28 [22] 45.2% [128] 4784(15.7%) 1390(4.6%) ??? ...egg-herbie-constants/src/programs.rkt:115:2 loop [121] 28.8% ??? [135] 17.1% ??? [141] 12.6% ??? [140] 12.5% ------------------------------------------------------------------------------- core-form-sym [126] 12.3% expand-identifier [125] 19.9% expand-id-application-form17 [161] 20.1% expand-implicit [7] 47.7% [129] 2692(8.8%) 190(0.6%) resolve+shift28 (unknown source) fallback-loop [136] 92.9% ------------------------------------------------------------------------------- gf [123] 100.0% [130] 1180(3.9%) 1180(3.9%) propagation-apply (unknown source) ------------------------------------------------------------------------------- ??? [124] 39.6% .../more-scheme.rkt:261:28 [22] 60.4% [131] 996(3.3%) 796(2.6%) ulp-difference ...bie-constants/src/float.rkt:20:0 ??? [135] 20.1% ------------------------------------------------------------------------------- gf [123] 100.0% [132] 232(0.8%) 232(0.8%) propagation-apply-shifted (unknown source) ------------------------------------------------------------------------------- gf [123] 100.0% [133] 186(0.6%) 0(0.0%) cache-or-reuse-hash (unknown source) for-loop [145] 100.0% ------------------------------------------------------------------------------- gf [123] 100.0% [134] 174(0.6%) 174(0.6%) cache-or-reuse-set (unknown source) ------------------------------------------------------------------------------- loop [10] 0.7% for-loop [63] 1.1% ulp-difference [131] 1.2% .../more-scheme.rkt:261:28 [22] 1.2% ??? [41] 3.7% ??? [128] 4.8% loop [121] 6.8% ??? [3] 22.8% location-do [144] 28.2% for-loop [64] 28.9% [135] 17092(56.0%) 1166(3.8%) ??? ...tract/private/arrow-higher-order.rkt:375:33 location-do [144] 30.0% approximate9 [2] 28.2% hash-ref! [174] 23.5% sample-multi-bounded [147] 6.0% ival-mult [151] 2.5% mk-ival [153] 2.4% simplify [19] 0.6% ------------------------------------------------------------------------------- resolve+shift28 [129] 100.0% [136] 2502(8.2%) 194(0.6%) fallback-loop (unknown source) for-loop [145] 92.2% ------------------------------------------------------------------------------- map [127] 15.9% hash-ref! [174] 16.8% for-loop [14] 20.1% taylor [137] 47.1% [137] 2294(7.5%) 522(1.7%) taylor ...rbie-constants/src/core/taylor.rkt:170:0 taylor [137] 47.1% map [127] 27.0% taylor-invert [146] 10.6% debug-print [148] 8.0% loop [121] 1.5% ------------------------------------------------------------------------------- for-loop [188] 9.2% simplify [19] 31.2% map [127] 59.6% [138] 1044(3.4%) 0(0.0%) simplify-node ...onstants/src/core/reduce.rkt:48:0 gather-additive-terms6 [149] 57.5% combine-aterms [158] 17.6% combine-mterms [159] 15.7% gather-multiplicative-terms [157] 9.2% ------------------------------------------------------------------------------- simplify [19] 43.1% map [127] 56.9% [139] 816(2.7%) 634(2.1%) simplify* ...ie-constants/src/core/reduce.rkt:31:0 hash-ref! [174] 22.3% ------------------------------------------------------------------------------- ??? [41] 25.2% ??? [128] 74.8% [140] 800(2.6%) 202(0.7%) ??? ...tract/private/arrow-higher-order.rkt:379:33 ival-add [154] 49.8% ival-sub [156] 25.0% ------------------------------------------------------------------------------- ??? [128] 100.0% [141] 602(2.0%) 200(0.7%) ??? ...rbie-constants/src/syntax/syntax.rkt:214:17 list-member? [155] 33.6% return/no-unsupplied [152] 33.2% ------------------------------------------------------------------------------- map [127] 100.0% [142] 536(1.8%) 0(0.0%) ??? ...g-herbie-constants/src/core/reduce.rkt:59:5 for-loop [150] 100.0% ------------------------------------------------------------------------------- map [127] 100.0% [143] 536(1.8%) 0(0.0%) parse-loop55 (unknown source) map [127] 34.3% make-multiplication-node [175] 32.8% loop [121] 32.8% ------------------------------------------------------------------------------- location-do [144] 15.2% ??? [135] 84.8% [144] 14076(46.1%) 184(0.6%) location-do ...bie-constants/src/programs.rkt:64:0 ??? [135] 84.1% location-do [144] 15.2% ------------------------------------------------------------------------------- cache-or-reuse-hash [133] 0.7% fallback-loop [136] 5.0% *rules* [72] 8.0% compile-forms33 [105] 8.1% for-loop [145] 8.6% finish-bodys [109] 67.7% [145] 8646(28.3%) 4108(13.5%) for-loop (unknown source) finish-bodys [109] 54.8% for-loop [145] 8.6% compile-module-linklet57 [163] 8.1% expand-id-application-form17 [161] 2.5% syntax-e [6] 2.4% flag-set? [179] 2.4% ormap [173] 1.9% expand-implicit [7] 1.7% loop [121] 1.7% expand-identifier [125] 0.9% dispatch-variable [170] 0.8% dispatch-transformer41 [108] 0.7% ------------------------------------------------------------------------------- for-loop [14] 12.6% taylor [137] 36.2% map [127] 51.1% [146] 1440(4.7%) 0(0.0%) taylor-invert ...nstants/src/core/taylor.rkt:318:0 simplify [19] 52.2% first-nonzero-exp [162] 47.8% ------------------------------------------------------------------------------- ??? [135] 100.0% [147] 1024(3.4%) 404(1.3%) sample-multi-bounded ...stants/src/points.rkt:15:0 random-ranges [164] 60.5% ------------------------------------------------------------------------------- taylor [137] 20.2% simplify [19] 79.8% [148] 912(3.0%) 360(1.2%) debug-print ...erbie-constants/src/debug.rkt:110:0 for-loop [165] 60.5% ------------------------------------------------------------------------------- gather-additive-terms6 [149] 11.9% simplify-node [138] 88.1% [149] 696(2.3%) 0(0.0%) gather-additive-terms6 ...src/core/reduce.rkt:70:0 append-map [160] 53.2% parse-loop374 [169] 34.9% gather-additive-terms6 [149] 11.9% ------------------------------------------------------------------------------- ??? [142] 100.0% [150] 536(1.8%) 176(0.6%) for-loop ...bie-constants/src/core/reduce.rkt:60:7 pattern-match [168] 67.2% ------------------------------------------------------------------------------- ??? [135] 100.0% [151] 424(1.4%) 222(0.7%) ival-mult ...e-constants/src/biginterval.rkt:119:0 bfsub [166] 47.6% ------------------------------------------------------------------------------- ??? [141] 49.8% *bit-width* [31] 50.2% [152] 402(1.3%) 402(1.3%) return/no-unsupplied ...ct/private/arr-i.rkt:566:0 ------------------------------------------------------------------------------- ??? [135] 100.0% [153] 402(1.3%) 0(0.0%) mk-ival ...rbie-constants/src/biginterval.rkt:65:0 bf [167] 100.0% ------------------------------------------------------------------------------- ??? [140] 100.0% [154] 398(1.3%) 398(1.3%) ival-add ...ie-constants/src/biginterval.rkt:101:0 ------------------------------------------------------------------------------- ??? [141] 100.0% [155] 202(0.7%) 202(0.7%) list-member? ...llects/racket/private/set.rkt:24:0 ------------------------------------------------------------------------------- ??? [140] 100.0% [156] 200(0.7%) 0(0.0%) ival-sub ...ie-constants/src/biginterval.rkt:107:0 bfsub [166] 100.0% ------------------------------------------------------------------------------- simplify-node [138] 100.0% [157] 192(0.6%) 0(0.0%) gather-multiplicative-terms ...re/reduce.rkt:112:0 compose [171] 100.0% ------------------------------------------------------------------------------- simplify-node [138] 100.0% [158] 184(0.6%) 0(0.0%) combine-aterms ...stants/src/core/reduce.rkt:187:0 for-loop [172] 100.0% ------------------------------------------------------------------------------- simplify-node [138] 100.0% [159] 164(0.5%) 164(0.5%) combine-mterms ...stants/src/core/reduce.rkt:195:0 ------------------------------------------------------------------------------- append-map [160] 7.4% gather-additive-terms6 [149] 21.0% free-variables [200] 71.6% [160] 1302(4.3%) 0(0.0%) append-map ...t-7.5/collects/racket/list.rkt:586:2 free-variables [200] 71.6% parse-loop395 [178] 21.0% append-map [160] 7.4% ------------------------------------------------------------------------------- expand-capturing-lifts [104] 16.6% for-loop [145] 34.3% loop [121] 49.1% [161] 1144(3.7%) 0(0.0%) expand-id-application-form17 (unknown source) resolve+shift28 [129] 47.2% syntax-e/no-taint [13] 35.5% binding-lookup52 [183] 17.3% ------------------------------------------------------------------------------- taylor-quotient [21] 18.9% taylor-invert [146] 81.1% [162] 848(2.8%) 0(0.0%) first-nonzero-exp ...nts/src/core/taylor.rkt:266:0 hash-ref! [174] 100.0% ------------------------------------------------------------------------------- for-loop [145] 100.0% [163] 702(2.3%) 702(2.3%) compile-module-linklet57 (unknown source) ------------------------------------------------------------------------------- sample-multi-bounded [147] 100.0% [164] 620(2.0%) 0(0.0%) random-ranges ...ie-constants/src/common.rkt:171:0 listof [177] 67.7% build--> [182] 32.3% ------------------------------------------------------------------------------- debug-print [148] 100.0% [165] 552(1.8%) 552(1.8%) for-loop ...g-herbie-constants/src/debug.rkt:116:2 ------------------------------------------------------------------------------- ival-sub [156] 49.8% ival-mult [151] 50.2% [166] 402(1.3%) 0(0.0%) bfsub ...-lib/math/private/bigfloat/mpfr.rkt:835:4 new-mpfr [176] 100.0% ------------------------------------------------------------------------------- mk-ival [153] 100.0% [167] 402(1.3%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:615:2 new-mpfr [176] 100.0% ------------------------------------------------------------------------------- for-loop [150] 100.0% [168] 360(1.2%) 0(0.0%) pattern-match ...nstants/src/core/matcher.rkt:30:0 for-loop [180] 100.0% ------------------------------------------------------------------------------- gather-additive-terms6 [149] 100.0% [169] 326(1.1%) 0(0.0%) parse-loop374 (unknown source) parse-loop395 [178] 50.9% make-multiplication-node [175] 49.1% ------------------------------------------------------------------------------- for-loop [145] 100.0% [170] 202(0.7%) 0(0.0%) dispatch-variable (unknown source) substitute-variable6 [181] 100.0% ------------------------------------------------------------------------------- gather-multiplicative-terms [157] 100.0% [171] 192(0.6%) 192(0.6%) compose ...collects/racket/private/list.rkt:385:12 ------------------------------------------------------------------------------- combine-aterms [158] 100.0% [172] 184(0.6%) 0(0.0%) for-loop ...ie-constants/src/core/reduce.rkt:189:4 hash-ref! [174] 100.0% ------------------------------------------------------------------------------- for-loop [145] 100.0% [173] 168(0.6%) 0(0.0%) ormap ....5/collects/racket/private/map.rkt:141:13 flag-set? [179] 100.0% ------------------------------------------------------------------------------- for-loop [172] 0.2% simplify* [139] 0.7% ??? [186] 2.1% first-nonzero-exp [162] 2.5% ??? [185] 3.3% ??? [20] 4.3% for-loop [12] 6.6% ??? [184] 9.7% loop [10] 11.6% ??? [135] 13.3% for-loop [11] 13.3% ??? [3] 32.4% [174] 12580(41.2%) 366(1.2%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [3] 44.0% ??? [4] 17.1% simplify [19] 12.3% ??? [184] 11.9% ??? [5] 6.7% ??? [185] 3.3% ??? [186] 2.4% taylor [137] 1.4% ------------------------------------------------------------------------------- parse-loop374 [169] 18.3% parse-loop55 [143] 20.1% map [127] 22.4% for-loop [188] 39.3% [175] 876(2.9%) 0(0.0%) make-multiplication-node .../core/reduce.rkt:234:0 make-multiplication-subnode [187] 100.0% ------------------------------------------------------------------------------- bfsub [166] 50.0% bf [167] 50.0% [176] 804(2.6%) 804(2.6%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:348:0 ------------------------------------------------------------------------------- get-coeffs [17] 28.8% random-ranges [164] 71.2% [177] 590(1.9%) 372(1.2%) listof .../racket/contract/private/guts.rkt:500:15 coerce-contract [189] 36.9% ------------------------------------------------------------------------------- parse-loop374 [169] 31.0% append-map [160] 69.0% [178] 536(1.8%) 0(0.0%) parse-loop395 (unknown source) for-loop [188] 100.0% ------------------------------------------------------------------------------- ormap [173] 44.4% for-loop [145] 55.6% [179] 378(1.2%) 378(1.2%) flag-set? ...-herbie-constants/src/config.rkt:28:0 ------------------------------------------------------------------------------- pattern-match [168] 100.0% [180] 360(1.2%) 178(0.6%) for-loop ...ie-constants/src/core/matcher.rkt:27:9 core457 [190] 50.6% ------------------------------------------------------------------------------- dispatch-variable [170] 100.0% [181] 202(0.7%) 202(0.7%) substitute-variable6 (unknown source) ------------------------------------------------------------------------------- random-ranges [164] 100.0% [182] 200(0.7%) 0(0.0%) build--> ...act/private/arrow-val-first.rkt:1214:0 coerce-contract [189] 100.0% ------------------------------------------------------------------------------- expand-id-application-form17 [161] 100.0% [183] 198(0.6%) 198(0.6%) binding-lookup52 (unknown source) ------------------------------------------------------------------------------- hash-ref! [174] 100.0% [184] 10852(35.5%) 0(0.0%) ??? ...-herbie-constants/src/core/taylor.rkt:45:15 hash-ref! [174] 96.6% ??? [20] 1.7% simplify [19] 1.7% ------------------------------------------------------------------------------- hash-ref! [174] 100.0% [185] 4310(14.1%) 0(0.0%) ??? ...herbie-constants/src/core/taylor.rkt:344:33 hash-ref! [174] 100.0% ------------------------------------------------------------------------------- hash-ref! [174] 100.0% [186] 2656(8.7%) 200(0.7%) ??? ...herbie-constants/src/core/taylor.rkt:328:33 hash-ref! [174] 92.5% ------------------------------------------------------------------------------- make-multiplication-node [175] 100.0% [187] 876(2.9%) 178(0.6%) make-multiplication-subnode ...re/reduce.rkt:244:0 for-loop [191] 57.3% group-by61 [193] 22.4% ------------------------------------------------------------------------------- parse-loop395 [178] 100.0% [188] 536(1.8%) 0(0.0%) for-loop ...ie-constants/src/core/reduce.rkt:97:13 make-multiplication-node [175] 64.2% simplify-node [138] 35.8% ------------------------------------------------------------------------------- build--> [182] 47.8% listof [177] 52.2% [189] 418(1.4%) 0(0.0%) coerce-contract ...contract/private/guts.rkt:307:0 coerce-contract/f [192] 100.0% ------------------------------------------------------------------------------- for-loop [180] 100.0% [190] 182(0.6%) 0(0.0%) core457 ...acket/contract/private/arr-i.rkt:976:19 ??? [194] 100.0% ------------------------------------------------------------------------------- make-multiplication-subnode [187] 100.0% [191] 502(1.6%) 342(1.1%) for-loop ...ie-constants/src/core/reduce.rkt:246:3 make-multiplication-subsubsubnode [197] 31.9% ------------------------------------------------------------------------------- coerce-contract [189] 100.0% [192] 418(1.4%) 0(0.0%) coerce-contract/f ...ntract/private/guts.rkt:372:0 coerce-simple-value [195] 100.0% ------------------------------------------------------------------------------- make-multiplication-subnode [187] 100.0% [193] 196(0.6%) 196(0.6%) group-by61 ...t-7.5/collects/racket/list.rkt:771:0 ------------------------------------------------------------------------------- core457 [190] 100.0% [194] 182(0.6%) 0(0.0%) ??? ...s/racket/contract/private/arr-i.rkt:1288:27 build-nullary-very-simple--> [196] 100.0% ------------------------------------------------------------------------------- coerce-contract/f [192] 100.0% [195] 418(1.4%) 418(1.4%) coerce-simple-value ...ract/private/guts.rkt:385:0 ------------------------------------------------------------------------------- ??? [194] 100.0% [196] 182(0.6%) 0(0.0%) build-nullary-very-simple--> ...l-first.rkt:1131:0 flat-contract? [198] 100.0% ------------------------------------------------------------------------------- for-loop [191] 100.0% [197] 160(0.5%) 0(0.0%) make-multiplication-subsubsubnode ...uce.rkt:266:0 mterm->expr [199] 100.0% ------------------------------------------------------------------------------- build-nullary-very-simple--> [196] 100.0% [198] 182(0.6%) 182(0.6%) flat-contract? .../contract/private/guts.rkt:129:0 ------------------------------------------------------------------------------- make-multiplication-subsubsubnode [197]100.0% [199] 160(0.5%) 0(0.0%) mterm->expr ...constants/src/core/reduce.rkt:274:0 free-variables [200] 100.0% ------------------------------------------------------------------------------- mterm->expr [199] 14.7% composed [30] 24.3% append-map [160] 61.0% [200] 1092(3.6%) 400(1.3%) free-variables ...-constants/src/programs.rkt:57:0 append-map [160] 61.0% variable? [201] 25.3% ??? [77] 5.6% ------------------------------------------------------------------------------- free-variables [200] 100.0% [201] 510(1.7%) 0(0.0%) variable? ...constants/src/syntax/syntax.rkt:729:0 ??? [77] 68.6% value? [202] 31.4% ------------------------------------------------------------------------------- variable? [201] 100.0% [202] 160(0.5%) 160(0.5%) value? ...rbie-constants/src/syntax/types.rkt:18:0 -------------------------------------------------------------------------------