Profiling results ----------------- Total cpu time observed: 65870ms (out of 66064ms) Number of samples taken: 321 (once every 205ms) (Hiding functions with self<1.0% and local<2.0%: 5 of 213 hidden) ================================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ================================================================================== [1] 65870(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [12] 100.0% ---------------------------------------------------------------------------------- ??? [90] 100.0% [2] 6156(9.3%) 0(0.0%) approximate9 ...stversion/src/core/taylor.rkt:12:0 loop [13] 96.8% taylor [20] 3.2% ---------------------------------------------------------------------------------- hash-ref! [99] 100.0% [3] 5186(7.9%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:301:23 for-loop [14] 100.0% ---------------------------------------------------------------------------------- hash-ref! [99] 100.0% [4] 4766(7.2%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:407:23 for-loop [15] 91.4% for-loop [25] 8.6% ---------------------------------------------------------------------------------- stx-pair? [51] 8.8% loop [156] 18.4% for-loop [98] 72.7% [5] 2172(3.3%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [16] 100.0% ---------------------------------------------------------------------------------- matcher [101] 100.0% [6] 1518(2.3%) 0(0.0%) ??? ...ath-testversion/src/core/matcher.rkt:130:11 for-loop [17] 100.0% ---------------------------------------------------------------------------------- for-loop [98] 17.9% loop [156] 82.1% [7] 1218(1.8%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [18] 100.0% ---------------------------------------------------------------------------------- hash-ref! [99] 100.0% [8] 792(1.2%) 0(0.0%) ??? ...gmath-testversion/src/core/taylor.rkt:68:15 ??? [90] 87.2% hash-ref! [99] 12.8% ---------------------------------------------------------------------------------- for-loop [98] 100.0% [9] 760(1.2%) 0(0.0%) expand-implicit (unknown source) datum->syntax6 [22] 51.6% resolve+shift28 [19] 48.4% ---------------------------------------------------------------------------------- hash-ref! [99] 100.0% [10] 408(0.6%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:291:26 for-loop [21] 100.0% ---------------------------------------------------------------------------------- for-loop [98] 100.0% [11] 406(0.6%) 0(0.0%) expand-identifier (unknown source) resolve+shift28 [19] 100.0% ---------------------------------------------------------------------------------- ??? [1] 100.0% [12] 65870(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [23] 100.0% ---------------------------------------------------------------------------------- approximate9 [2] 100.0% [13] 5956(9.0%) 0(0.0%) loop ...gmath-testversion/src/core/taylor.rkt:87:4 ??? [90] 86.7% hash-ref! [99] 13.3% ---------------------------------------------------------------------------------- ??? [3] 100.0% [14] 5186(7.9%) 0(0.0%) for-loop ...testversion/src/core/taylor.rkt:304:27 hash-ref! [99] 90.6% simplify [24] 9.4% ---------------------------------------------------------------------------------- ??? [4] 100.0% [15] 4354(6.6%) 0(0.0%) for-loop ...testversion/src/core/taylor.rkt:411:33 for-loop [25] 100.0% ---------------------------------------------------------------------------------- expand-id-application-form17 [171] 15.2% syntax-e [5] 84.8% [16] 2562(3.9%) 0(0.0%) syntax-e/no-taint (unknown source) loop [156] 100.0% ---------------------------------------------------------------------------------- ??? [6] 100.0% [17] 1518(2.3%) 0(0.0%) for-loop ...estversion/src/core/matcher.rkt:132:15 matcher [101] 100.0% ---------------------------------------------------------------------------------- dispatch-transformer41 [7] 100.0% [18] 1218(1.8%) 0(0.0%) apply-transformer52 (unknown source) apply-transformer-in-context [26] 100.0% ---------------------------------------------------------------------------------- expand-implicit [9] 31.5% expand-id-application-form17 [171] 33.7% expand-identifier [11] 34.8% [19] 1168(1.8%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [27] 100.0% ---------------------------------------------------------------------------------- approximate9 [2] 11.4% hash-ref! [99] 27.2% taylor [20] 61.4% [20] 586(0.9%) 184(0.3%) taylor ...th-testversion/src/core/taylor.rkt:170:0 taylor [20] 61.4% loop [28] 11.5% taylor-log [29] 11.4% ---------------------------------------------------------------------------------- ??? [10] 100.0% [21] 408(0.6%) 0(0.0%) for-loop ...testversion/src/core/taylor.rkt:291:52 hash-ref! [99] 50.5% simplify [24] 49.5% ---------------------------------------------------------------------------------- expand-implicit [9] 100.0% [22] 392(0.6%) 200(0.3%) datum->syntax6 (unknown source) loop [156] 49.0% ---------------------------------------------------------------------------------- profile-thunk16 [12] 100.0% [23] 65870(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [30] 100.0% ---------------------------------------------------------------------------------- taylor-log [29] 3.3% for-loop [21] 3.4% for-loop [14] 9.8% hash-ref! [99] 83.5% [24] 5972(9.1%) 0(0.0%) simplify ...h-testversion/src/core/reduce.rkt:16:0 parse-loop80 [31] 66.8% f46 [32] 29.9% f67 [142] 3.3% ---------------------------------------------------------------------------------- ??? [4] 8.6% for-loop [15] 91.4% [25] 4766(7.2%) 0(0.0%) for-loop ...testversion/src/core/taylor.rkt:413:39 hash-ref! [99] 100.0% ---------------------------------------------------------------------------------- apply-transformer52 [18] 100.0% [26] 1218(1.8%) 420(0.6%) apply-transformer-in-context (unknown source) ??? [33] 49.8% go [34] 15.8% ---------------------------------------------------------------------------------- resolve+shift28 [19] 100.0% [27] 1168(1.8%) 184(0.3%) fallback-loop (unknown source) for-loop [98] 84.2% ---------------------------------------------------------------------------------- taylor [20] 100.0% [28] 202(0.3%) 0(0.0%) loop ...math-testversion/src/core/taylor.rkt:268:2 hash-ref! [99] 100.0% ---------------------------------------------------------------------------------- taylor [20] 100.0% [29] 200(0.3%) 0(0.0%) taylor-log ...estversion/src/core/taylor.rkt:503:0 simplify [24] 100.0% ---------------------------------------------------------------------------------- for-loop [118] 0.2% for-loop [179] 1.4% run [23] 98.4% [30] 65870(100.0%) 404(0.6%) .../more-scheme.rkt:261:28 (unknown source) run-improve47 [35] 90.9% prepare-points-intervals [37] 3.2% oracle-error [38] 2.1% ??? [175] 1.3% get-final-combination [39] 1.1% eval-errors [40] 0.9% errors [166] 0.2% ---------------------------------------------------------------------------------- map [126] 16.6% simplify [24] 83.4% [31] 4780(7.3%) 0(0.0%) parse-loop80 (unknown source) eval-const-expr [36] 100.0% ---------------------------------------------------------------------------------- map [126] 34.1% simplify [24] 65.9% [32] 1784(2.7%) 0(0.0%) f46 (unknown source) map [126] 100.0% ---------------------------------------------------------------------------------- apply-transformer-in-context [26] 100.0% [33] 606(0.9%) 0(0.0%) ??? ...collects/racket/private/qq-and-or.rkt:155:9 ??? [41] 67.0% syntax->list [49] 33.0% ---------------------------------------------------------------------------------- apply-transformer-in-context [26] 100.0% [34] 192(0.3%) 0(0.0%) go .../collects/racket/private/qq-and-or.rkt:50:20 loop [42] 100.0% ---------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [30] 100.0% [35] 60674(92.1%) 0(0.0%) run-improve47 ...estversion/src/mainloop.rkt:346:0 for-loop [43] 74.3% simplify! [58] 25.7% ---------------------------------------------------------------------------------- f67 [142] 17.2% parse-loop80 [31] 82.8% [36] 5770(8.8%) 0(0.0%) eval-const-expr ...tversion/src/programs.rkt:118:0 temp85_0 [44] 100.0% ---------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [30] 100.0% [37] 2134(3.2%) 0(0.0%) prepare-points-intervals ...n/src/points.rkt:110:0 loop [45] 100.0% ---------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [30] 100.0% [38] 1386(2.1%) 0(0.0%) oracle-error ...h-testversion/src/points.rkt:188:0 for-loop [46] 100.0% ---------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [30] 100.0% [39] 848(1.3%) 0(0.0%) get-final-combination ...on/src/mainloop.rkt:371:0 infer-splitpoints [47] 76.4% ??? [50] 23.6% ---------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [30] 100.0% [40] 606(0.9%) 0(0.0%) eval-errors ...th-testversion/src/points.rkt:179:0 for-loop [48] 100.0% ---------------------------------------------------------------------------------- ??? [33] 100.0% [41] 406(0.6%) 206(0.3%) ??? ...ollects/racket/private/qq-and-or.rkt:164:21 syntax->list [49] 49.3% ---------------------------------------------------------------------------------- go [34] 100.0% [42] 192(0.3%) 0(0.0%) loop ...llects/racket/private/qq-and-or.rkt:101:61 stx-pair? [51] 100.0% ---------------------------------------------------------------------------------- run-improve47 [35] 100.0% [43] 45064(68.4%) 0(0.0%) for-loop ...ath-testversion/src/mainloop.rkt:365:4 run-iter! [52] 100.0% ---------------------------------------------------------------------------------- eval-prog [180] 14.9% eval-const-expr [36] 85.1% [44] 6778(10.3%) 0(0.0%) temp85_0 (unknown source) compile15 [53] 100.0% ---------------------------------------------------------------------------------- prepare-points-intervals [37] 100.0% [45] 2134(3.2%) 0(0.0%) loop ...e/eggmath-testversion/src/points.rkt:123:4 loop [54] 79.0% ??? [57] 21.0% ---------------------------------------------------------------------------------- oracle-error [38] 100.0% [46] 1386(2.1%) 0(0.0%) for-loop ...gmath-testversion/src/points.rkt:189:2 loop [156] 100.0% ---------------------------------------------------------------------------------- get-final-combination [39] 100.0% [47] 648(1.0%) 0(0.0%) infer-splitpoints ...ion/src/core/regimes.rkt:34:0 for-loop [55] 100.0% ---------------------------------------------------------------------------------- eval-errors [40] 100.0% [48] 606(0.9%) 0(0.0%) for-loop ...gmath-testversion/src/points.rkt:181:2 ulp-difference [56] 100.0% ---------------------------------------------------------------------------------- ??? [33] 50.0% ??? [41] 50.0% [49] 400(0.6%) 0(0.0%) syntax->list (unknown source) loop [156] 100.0% ---------------------------------------------------------------------------------- get-final-combination [39] 100.0% [50] 200(0.3%) 0(0.0%) ??? ...math-testversion/src/core/simplify.rkt:33:0 ??? [66] 100.0% ---------------------------------------------------------------------------------- loop [42] 100.0% [51] 192(0.3%) 0(0.0%) stx-pair? .../collects/racket/private/stx.rkt:40:4 syntax-e [5] 100.0% ---------------------------------------------------------------------------------- for-loop [43] 100.0% [52] 45064(68.4%) 0(0.0%) run-iter! ...th-testversion/src/mainloop.rkt:327:0 simplify! [58] 75.4% gen-series! [60] 13.7% finalize-iter! [61] 6.3% gen-rewrites! [62] 3.8% localize! [64] 0.9% ---------------------------------------------------------------------------------- temp85_0 [44] 100.0% [53] 6778(10.3%) 0(0.0%) compile15 (unknown source) temp91_0 [59] 97.2% loop [156] 2.8% ---------------------------------------------------------------------------------- loop [45] 100.0% [54] 1686(2.6%) 218(0.3%) loop ...ie/eggmath-testversion/src/points.rkt:81:2 ??? [175] 75.2% ??? [65] 11.9% ---------------------------------------------------------------------------------- infer-splitpoints [47] 100.0% [55] 648(1.0%) 0(0.0%) for-loop ...-testversion/src/core/regimes.rkt:47:6 option-on-expr [63] 100.0% ---------------------------------------------------------------------------------- for-loop [48] 100.0% [56] 606(0.9%) 606(0.9%) ulp-difference ...h-testversion/src/float.rkt:20:0 ---------------------------------------------------------------------------------- loop [45] 100.0% [57] 448(0.7%) 0(0.0%) ??? ...ie/eggmath-testversion/src/points.rkt:106:2 ??? [90] 100.0% ---------------------------------------------------------------------------------- run-improve47 [35] 31.5% run-iter! [52] 68.5% [58] 49568(75.3%) 0(0.0%) simplify! ...th-testversion/src/mainloop.rkt:224:0 ??? [66] 100.0% ---------------------------------------------------------------------------------- compile15 [53] 100.0% [59] 6586(10.0%) 0(0.0%) temp91_0 (unknown source) temp118_0 [68] 84.4% compile-top9 [70] 15.6% ---------------------------------------------------------------------------------- run-iter! [52] 100.0% [60] 6156(9.3%) 0(0.0%) gen-series! ...-testversion/src/mainloop.rkt:160:0 for-loop [67] 100.0% ---------------------------------------------------------------------------------- run-iter! [52] 100.0% [61] 2828(4.3%) 0(0.0%) finalize-iter! ...stversion/src/mainloop.rkt:278:0 ??? [139] 100.0% ---------------------------------------------------------------------------------- run-iter! [52] 100.0% [62] 1720(2.6%) 0(0.0%) gen-rewrites! ...estversion/src/mainloop.rkt:183:0 for-loop [69] 100.0% ---------------------------------------------------------------------------------- for-loop [55] 100.0% [63] 648(1.0%) 0(0.0%) option-on-expr ...rsion/src/core/regimes.rkt:126:0 err-lsts->split-indices [71] 68.2% for-loop [73] 31.8% ---------------------------------------------------------------------------------- run-iter! [52] 100.0% [64] 402(0.6%) 0(0.0%) localize! ...th-testversion/src/mainloop.rkt:127:0 localize-error [72] 100.0% ---------------------------------------------------------------------------------- loop [54] 100.0% [65] 200(0.3%) 200(0.3%) ??? /opt/racket-7.5/collects/ffi/unsafe.rkt:938:4 ---------------------------------------------------------------------------------- ??? [50] 0.4% simplify! [58] 99.6% [66] 49768(75.6%) 0(0.0%) ??? ...-testversion/src/core/herbie-egraph.rkt:9:0 for-loop [74] 100.0% ---------------------------------------------------------------------------------- gen-series! [60] 100.0% [67] 6156(9.3%) 0(0.0%) for-loop ...ath-testversion/src/mainloop.rkt:167:7 taylor-alt [75] 100.0% ---------------------------------------------------------------------------------- temp91_0 [59] 100.0% [68] 5556(8.4%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [76] 100.0% ---------------------------------------------------------------------------------- gen-rewrites! [62] 100.0% [69] 1720(2.6%) 0(0.0%) for-loop ...th-testversion/src/mainloop.rkt:191:11 rewrite-expression-head20 [77] 100.0% ---------------------------------------------------------------------------------- temp91_0 [59] 100.0% [70] 1030(1.6%) 0(0.0%) compile-top9 (unknown source) compile-forms33 [78] 100.0% ---------------------------------------------------------------------------------- option-on-expr [63] 100.0% [71] 442(0.7%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:262:0 loop [79] 100.0% ---------------------------------------------------------------------------------- localize! [64] 100.0% [72] 402(0.6%) 0(0.0%) localize-error ...rsion/src/core/localize.rkt:66:0 hash-ref! [99] 100.0% ---------------------------------------------------------------------------------- option-on-expr [63] 100.0% [73] 206(0.3%) 0(0.0%) for-loop ...testversion/src/core/regimes.rkt:136:4 errors [166] 100.0% ---------------------------------------------------------------------------------- ??? [66] 100.0% [74] 49768(75.6%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:29:2 ??? [80] 97.6% for-loop [84] 1.6% precompute-phase [87] 0.8% ---------------------------------------------------------------------------------- for-loop [67] 100.0% [75] 6156(9.3%) 0(0.0%) taylor-alt ...h-testversion/src/mainloop.rkt:146:0 for-loop [81] 100.0% ---------------------------------------------------------------------------------- loop [156] 3.3% temp118_0 [68] 96.7% [76] 5748(8.7%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [82] 96.7% expand-id-application-form17 [171] 3.3% ---------------------------------------------------------------------------------- for-loop [69] 100.0% [77] 1720(2.6%) 0(0.0%) rewrite-expression-head20 ...core/matcher.rkt:87:0 rewriter [83] 100.0% ---------------------------------------------------------------------------------- compile-top9 [70] 100.0% [78] 1030(1.6%) 0(0.0%) compile-forms33 (unknown source) loop! [85] 61.0% for-loop [98] 39.0% ---------------------------------------------------------------------------------- err-lsts->split-indices [71] 100.0% [79] 442(0.7%) 0(0.0%) loop ...ath-testversion/src/core/regimes.rkt:313:4 for-loop [86] 100.0% ---------------------------------------------------------------------------------- for-loop [74] 100.0% [80] 48570(73.7%) 0(0.0%) ??? ...testversion/src/core/herbie-egraph.rkt:70:0 for-loop [88] 67.6% find-matches [89] 32.4% ---------------------------------------------------------------------------------- taylor-alt [75] 100.0% [81] 6156(9.3%) 0(0.0%) for-loop ...ath-testversion/src/mainloop.rkt:152:6 ??? [90] 100.0% ---------------------------------------------------------------------------------- expand-capturing-lifts [76] 100.0% [82] 5556(8.4%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [111] 82.0% loop [156] 18.0% ---------------------------------------------------------------------------------- rewrite-expression-head20 [77] 27.9% matcher [101] 72.1% [83] 1720(2.6%) 0(0.0%) rewriter ...-testversion/src/core/matcher.rkt:90:2 for-loop [91] 80.1% *rules* [92] 19.9% ---------------------------------------------------------------------------------- for-loop [74] 100.0% [84] 800(1.2%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:37:4 prune-phase [93] 100.0% ---------------------------------------------------------------------------------- compile-forms33 [78] 100.0% [85] 628(1.0%) 0(0.0%) loop! (unknown source) for-loop [98] 100.0% ---------------------------------------------------------------------------------- loop [79] 100.0% [86] 442(0.7%) 0(0.0%) for-loop ...testversion/src/core/regimes.rkt:278:4 for-loop [94] 100.0% ---------------------------------------------------------------------------------- for-loop [74] 100.0% [87] 398(0.6%) 0(0.0%) precompute-phase ...rc/core/herbie-egraph.rkt:79:0 for-loop [95] 100.0% ---------------------------------------------------------------------------------- ??? [80] 100.0% [88] 32816(49.8%) 208(0.3%) for-loop ...ersion/src/core/herbie-egraph.rkt:71:2 for-loop [96] 99.4% ---------------------------------------------------------------------------------- ??? [80] 100.0% [89] 15754(23.9%) 0(0.0%) find-matches ...on/src/core/herbie-egraph.rkt:62:0 for-loop [97] 100.0% ---------------------------------------------------------------------------------- ??? [8] 3.6% ??? [57] 6.0% ??? [175] 11.1% loop [13] 23.2% location-do [100] 28.1% for-loop [81] 28.1% [90] 7426(11.3%) 200(0.3%) ??? ...tract/private/arrow-higher-order.rkt:375:33 location-do [100] 28.1% approximate9 [2] 28.1% hash-ref! [99] 26.7% sample-multi-bounded [104] 6.0% ival-mult [105] 5.7% mk-ival [107] 2.7% ---------------------------------------------------------------------------------- rewriter [83] 100.0% [91] 1518(2.3%) 0(0.0%) for-loop ...-testversion/src/core/matcher.rkt:92:4 matcher [101] 90.9% for-loop [103] 9.1% ---------------------------------------------------------------------------------- rewriter [83] 100.0% [92] 968(1.5%) 0(0.0%) *rules* ...-testversion/src/syntax/rules.rkt:669:0 for-loop [98] 100.0% ---------------------------------------------------------------------------------- for-loop [84] 100.0% [93] 800(1.2%) 0(0.0%) prune-phase ...ion/src/core/herbie-egraph.rkt:84:0 for-loop [102] 100.0% ---------------------------------------------------------------------------------- for-loop [86] 100.0% [94] 442(0.7%) 224(0.3%) for-loop ...testversion/src/core/regimes.rkt:282:8 ??? [194] 49.3% ---------------------------------------------------------------------------------- precompute-phase [87] 100.0% [95] 398(0.6%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:80:2 set-precompute! [106] 100.0% ---------------------------------------------------------------------------------- for-loop [88] 100.0% [96] 32608(49.5%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:74:4 merge-egraph-nodes! [108] 58.3% dedup-children! [136] 33.8% mk-enode-rec! [169] 4.3% pattern-substitute [112] 3.6% ---------------------------------------------------------------------------------- for-loop [97] 50.0% find-matches [89] 50.0% [97] 15754(23.9%) 406(0.6%) for-loop ...ersion/src/core/herbie-egraph.rkt:64:8 for-loop [97] 50.0% match-e [109] 48.7% ---------------------------------------------------------------------------------- fallback-loop [27] 0.5% for-loop [98] 3.4% compile-let13 [128] 4.8% loop! [85] 4.8% compile-forms33 [78] 6.1% *rules* [92] 14.8% finish-bodys [111] 65.6% [98] 6554(9.9%) 1978(3.0%) for-loop (unknown source) finish-bodys [111] 61.7% compile5 [114] 9.6% compile-module-linklet57 [116] 6.1% ormap [119] 5.7% for-loop [98] 3.4% do-curry [141] 2.8% expand-implicit [9] 1.8% syntax-e [5] 0.6% loop [156] 0.5% dispatch-transformer41 [7] 0.3% expand-identifier [11] 0.1% dispatch-variable [120] 0.1% ---------------------------------------------------------------------------------- for-loop [21] 0.5% loop [28] 0.6% ??? [8] 0.6% map [126] 2.6% loop [13] 3.3% localize-error [72] 3.7% for-loop [25] 18.0% for-loop [14] 22.1% ??? [110] 23.2% ??? [90] 25.3% [99] 6358(9.7%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [3] 24.7% ??? [110] 23.2% simplify [24] 20.7% ??? [4] 18.0% parse-loop30 [117] 6.3% ??? [8] 4.0% taylor [20] 2.1% ??? [10] 1.1% ---------------------------------------------------------------------------------- ??? [90] 24.2% location-do [100] 75.8% [100] 6156(9.3%) 0(0.0%) location-do ...h-testversion/src/programs.rkt:64:0 location-do [100] 75.8% ??? [90] 24.2% ---------------------------------------------------------------------------------- for-loop [17] 50.0% for-loop [91] 50.0% [101] 1518(2.3%) 0(0.0%) matcher ...-testversion/src/core/matcher.rkt:118:2 ??? [6] 50.0% rewriter [83] 50.0% ---------------------------------------------------------------------------------- prune-phase [93] 100.0% [102] 800(1.2%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:85:2 update-leader! [124] 75.0% reduce-to-single! [121] 25.0% ---------------------------------------------------------------------------------- for-loop [91] 100.0% [103] 752(1.1%) 0(0.0%) for-loop ...-testversion/src/core/matcher.rkt:99:8 fix-up-variables [113] 100.0% ---------------------------------------------------------------------------------- ??? [90] 100.0% [104] 448(0.7%) 0(0.0%) sample-multi-bounded ...ersion/src/points.rkt:15:0 random-ranges [115] 100.0% ---------------------------------------------------------------------------------- ??? [90] 100.0% [105] 422(0.6%) 200(0.3%) ival-mult ...testversion/src/biginterval.rkt:119:0 bfdiv [205] 52.6% ---------------------------------------------------------------------------------- for-loop [95] 100.0% [106] 398(0.6%) 0(0.0%) set-precompute! ...src/core/herbie-egraph.rkt:88:0 for-loop [118] 100.0% ---------------------------------------------------------------------------------- ??? [90] 100.0% [107] 200(0.3%) 0(0.0%) mk-ival ...th-testversion/src/biginterval.rkt:65:0 bf [122] 100.0% ---------------------------------------------------------------------------------- for-loop [125] 5.9% merge-egraph-nodes! [108] 7.2% for-loop [96] 86.9% [108] 19008(28.9%) 220(0.3%) merge-egraph-nodes! ...n/src/core/egraph.rkt:145:0 loop! [164] 44.6% update-leader! [124] 28.4% for-loop [125] 11.8% merge-egraph-nodes! [108] 7.2% dedup-children! [136] 5.8% ---------------------------------------------------------------------------------- for-loop [137] 31.6% for-loop [97] 68.4% [109] 15348(23.3%) 1580(2.4%) match-e ...th-testversion/src/core/ematch.rkt:39:0 for-loop [123] 78.4% constant? [167] 9.0% variable? [127] 3.0% ??? [139] 0.9% ---------------------------------------------------------------------------------- hash-ref! [99] 100.0% [110] 5570(8.5%) 0(0.0%) ??? ...gmath-testversion/src/core/taylor.rkt:45:15 hash-ref! [99] 100.0% ---------------------------------------------------------------------------------- lambda-clause-expander [82] 6.7% for-loop [98] 93.3% [111] 4556(6.9%) 0(0.0%) finish-bodys (unknown source) for-loop [98] 100.0% ---------------------------------------------------------------------------------- pattern-substitute [112] 49.8% for-loop [96] 50.2% [112] 1176(1.8%) 200(0.3%) pattern-substitute ...on/src/core/matcher.rkt:46:0 pattern-substitute [112] 49.8% variable? [127] 10.9% assoc-ref [132] 8.8% ??? [194] 7.8% ??? [139] 5.7% ---------------------------------------------------------------------------------- for-loop [103] 100.0% [113] 752(1.1%) 0(0.0%) fix-up-variables ...ion/src/core/matcher.rkt:111:2 for-loop [130] 51.1% pattern-match [160] 48.9% ---------------------------------------------------------------------------------- for-loop [98] 100.0% [114] 628(1.0%) 628(1.0%) compile5 (unknown source) compile-let13 [128] 50.0% ---------------------------------------------------------------------------------- sample-multi-bounded [104] 100.0% [115] 448(0.7%) 0(0.0%) random-ranges ...-testversion/src/common.rkt:171:0 build--> [129] 100.0% ---------------------------------------------------------------------------------- for-loop [98] 100.0% [116] 402(0.6%) 402(0.6%) compile-module-linklet57 (unknown source) ---------------------------------------------------------------------------------- hash-ref! [99] 100.0% [117] 402(0.6%) 0(0.0%) parse-loop30 (unknown source) map [126] 50.2% for-loop [133] 49.8% ---------------------------------------------------------------------------------- set-precompute! [106] 100.0% [118] 398(0.6%) 0(0.0%) for-loop ...ersion/src/core/herbie-egraph.rkt:90:2 .../more-scheme.rkt:261:28 [30] 50.3% setfindf [134] 49.7% ---------------------------------------------------------------------------------- for-loop [98] 100.0% [119] 376(0.6%) 0(0.0%) ormap ....5/collects/racket/private/map.rkt:141:13 ??? [194] 50.5% flag-set? [135] 49.5% ---------------------------------------------------------------------------------- for-loop [98] 100.0% [120] 222(0.3%) 0(0.0%) dispatch-variable (unknown source) substitute-variable6 [131] 100.0% ---------------------------------------------------------------------------------- for-loop [102] 100.0% [121] 200(0.3%) 200(0.3%) reduce-to-single! ...ion/src/core/egraph.rkt:320:0 ---------------------------------------------------------------------------------- mk-ival [107] 100.0% [122] 200(0.3%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:615:2 new-mpfr [207] 100.0% ---------------------------------------------------------------------------------- match-e [109] 100.0% [123] 13192(20.0%) 5942(9.0%) for-loop ...-testversion/src/core/ematch.rkt:52:11 for-loop [137] 47.9% do-curry [141] 6.8% procedure-reduce-keyword-arity-mask [140] 6.1% loop [156] 3.0% ---------------------------------------------------------------------------------- for-loop [102] 8.7% merge-egraph-nodes! [108] 91.3% [124] 6880(10.4%) 0(0.0%) update-leader! ...ersion/src/core/egraph.rkt:213:0 for-loop [138] 100.0% ---------------------------------------------------------------------------------- merge-egraph-nodes! [108] 100.0% [125] 3414(5.2%) 0(0.0%) for-loop ...-testversion/src/core/egraph.rkt:199:4 merge-egraph-nodes! [108] 67.0% dedup-children! [136] 33.0% ---------------------------------------------------------------------------------- parse-loop30 [117] 10.2% f46 [32] 89.8% [126] 1986(3.0%) 0(0.0%) map ...t-7.5/collects/racket/private/map.rkt:35:13 parse-loop80 [31] 31.7% f46 [32] 30.6% f67 [142] 17.3% ??? [145] 10.2% hash-ref! [99] 8.5% loop [144] 1.7% ---------------------------------------------------------------------------------- pattern-substitute [112] 24.2% match-e [109] 75.8% [127] 1584(2.4%) 0(0.0%) variable? ...stversion/src/syntax/syntax.rkt:729:0 ??? [139] 50.5% value? [178] 49.5% ---------------------------------------------------------------------------------- compile5 [114] 12.5% compile-let13 [128] 87.5% [128] 628(1.0%) 0(0.0%) compile-let13 (unknown source) compile-let13 [128] 87.5% for-loop [98] 12.5% ---------------------------------------------------------------------------------- random-ranges [115] 100.0% [129] 448(0.7%) 224(0.3%) build--> ...act/private/arrow-val-first.rkt:1214:0 coerce-contract [143] 50.0% ---------------------------------------------------------------------------------- fix-up-variables [113] 100.0% [130] 384(0.6%) 0(0.0%) for-loop ...-testversion/src/core/matcher.rkt:42:9 for-loop [172] 100.0% ---------------------------------------------------------------------------------- dispatch-variable [120] 100.0% [131] 222(0.3%) 222(0.3%) substitute-variable6 (unknown source) ---------------------------------------------------------------------------------- pattern-substitute [112] 100.0% [132] 208(0.3%) 208(0.3%) assoc-ref ...collects/racket/private/dict.rkt:56:0 ---------------------------------------------------------------------------------- parse-loop30 [117] 100.0% [133] 200(0.3%) 200(0.3%) for-loop ...estversion/src/core/localize.rkt:53:21 ---------------------------------------------------------------------------------- for-loop [118] 100.0% [134] 198(0.3%) 0(0.0%) setfindf ...gmath-testversion/src/common.rkt:130:0 for-loop [146] 100.0% ---------------------------------------------------------------------------------- ormap [119] 100.0% [135] 186(0.3%) 186(0.3%) flag-set? ...gmath-testversion/src/config.rkt:28:0 ---------------------------------------------------------------------------------- merge-egraph-nodes! [108] 10.0% for-loop [125] 10.4% for-loop [96] 79.6% [136] 13830(21.0%) 0(0.0%) dedup-children! ...ersion/src/core/enode.rkt:202:0 loop [147] 87.2% loop [150] 12.8% ---------------------------------------------------------------------------------- for-loop [123] 100.0% [137] 9034(13.7%) 416(0.6%) for-loop ...-testversion/src/core/ematch.rkt:58:37 match-e [109] 96.6% ??? [152] 1.1% ---------------------------------------------------------------------------------- update-leader! [124] 100.0% [138] 6880(10.4%) 0(0.0%) for-loop ...-testversion/src/core/egraph.rkt:218:6 for-loop [148] 55.8% hash-update! [157] 44.2% ---------------------------------------------------------------------------------- pattern-substitute [112] 4.7% match-e [109] 9.5% variable? [127] 18.9% finalize-iter! [61] 66.8% [139] 4232(6.4%) 1204(1.8%) ??? ...contract/private/arrow-val-first.rkt:486:18 for-loop [149] 66.8% ??? [155] 4.7% ---------------------------------------------------------------------------------- for-loop [123] 100.0% [140] 1220(1.9%) 1220(1.9%) procedure-reduce-keyword-arity-mask ....rkt:1597:4 ---------------------------------------------------------------------------------- for-loop [98] 15.5% for-loop [123] 84.5% [141] 1186(1.8%) 1186(1.8%) do-curry ...-7.5/collects/racket/function.rkt:71:2 ---------------------------------------------------------------------------------- simplify [24] 20.2% map [126] 79.8% [142] 990(1.5%) 0(0.0%) f67 (unknown source) eval-const-expr [36] 100.0% ---------------------------------------------------------------------------------- build--> [129] 100.0% [143] 224(0.3%) 0(0.0%) coerce-contract ...contract/private/guts.rkt:307:0 coerce-contract/f [151] 100.0% ---------------------------------------------------------------------------------- map [126] 10.0% loop [144] 90.0% [144] 202(0.3%) 0(0.0%) loop ...-7.5/collects/racket/private/map.rkt:40:19 loop [144] 90.0% ??? [153] 10.0% ---------------------------------------------------------------------------------- map [126] 100.0% [145] 202(0.3%) 0(0.0%) ??? ...ggmath-testversion/src/core/reduce.rkt:59:5 for-loop [154] 100.0% ---------------------------------------------------------------------------------- setfindf [134] 100.0% [146] 198(0.3%) 198(0.3%) for-loop ...gmath-testversion/src/common.rkt:131:2 ---------------------------------------------------------------------------------- dedup-children! [136] 6.2% loop [147] 93.8% [147] 12058(18.3%) 12058(18.3%) loop ...racket-7.5/collects/racket/list.rkt:434:17 loop [147] 93.8% ---------------------------------------------------------------------------------- for-loop [138] 100.0% [148] 3842(5.8%) 0(0.0%) for-loop ...-testversion/src/core/egraph.rkt:219:8 hash-update! [157] 100.0% ---------------------------------------------------------------------------------- ??? [139] 100.0% [149] 2828(4.3%) 0(0.0%) for-loop ...estversion/src/core/alt-table.rkt:55:2 atab-add-altn [158] 78.5% errors [166] 21.5% ---------------------------------------------------------------------------------- dedup-children! [136] 19.4% loop [150] 80.6% [150] 1772(2.7%) 0(0.0%) loop ...racket-7.5/collects/racket/list.rkt:417:34 loop [150] 80.6% loop [156] 10.7% member [159] 8.7% ---------------------------------------------------------------------------------- coerce-contract [143] 100.0% [151] 224(0.3%) 0(0.0%) coerce-contract/f ...ntract/private/guts.rkt:372:0 coerce-simple-value [161] 100.0% ---------------------------------------------------------------------------------- for-loop [137] 100.0% [152] 206(0.3%) 0(0.0%) ??? ...ggmath-testversion/src/core/ematch.rkt:43:5 for-loop [162] 100.0% ---------------------------------------------------------------------------------- loop [144] 100.0% [153] 202(0.3%) 0(0.0%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfcbrt [163] 100.0% ---------------------------------------------------------------------------------- ??? [145] 100.0% [154] 202(0.3%) 0(0.0%) for-loop ...h-testversion/src/core/reduce.rkt:60:7 pattern-match [160] 100.0% ---------------------------------------------------------------------------------- ??? [139] 100.0% [155] 200(0.3%) 200(0.3%) ??? ...ects/racket/contract/private/guts.rkt:770:8 ---------------------------------------------------------------------------------- for-loop [123] 0.7% syntax->list [49] 1.0% ??? [175] 1.4% compile15 [53] 1.4% datum->syntax6 [22] 1.4% mk-enode-rec! [169] 3.0% for-loop [98] 4.4% lambda-clause-expander [82] 4.8% loop! [164] 4.8% loop [150] 8.7% for-loop [46] 9.2% syntax-e/no-taint [16] 14.9% loop [156] 44.1% [156] 13412(20.4%) 2730(4.1%) loop (unknown source) loop [156] 44.1% gf [168] 13.7% ??? [170] 9.2% dispatch-transformer41 [7] 4.8% loop! [164] 4.5% expand-id-application-form17 [171] 4.4% mk-enode-rec! [169] 3.0% expand-capturing-lifts [76] 1.4% syntax-e [5] 1.0% foldl [173] 0.7% ---------------------------------------------------------------------------------- for-loop [138] 44.2% for-loop [148] 55.8% [157] 6880(10.4%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [165] 100.0% ---------------------------------------------------------------------------------- for-loop [149] 100.0% [158] 2220(3.4%) 0(0.0%) atab-add-altn ...sion/src/core/alt-table.rkt:203:0 errors [166] 100.0% ---------------------------------------------------------------------------------- loop [150] 100.0% [159] 600(0.9%) 600(0.9%) member (unknown source) ---------------------------------------------------------------------------------- for-loop [154] 35.4% fix-up-variables [113] 64.6% [160] 570(0.9%) 0(0.0%) pattern-match ...version/src/core/matcher.rkt:30:0 for-loop [172] 64.6% constant? [167] 35.4% ---------------------------------------------------------------------------------- coerce-contract/f [151] 100.0% [161] 224(0.3%) 224(0.3%) coerce-simple-value ...ract/private/guts.rkt:385:0 ---------------------------------------------------------------------------------- ??? [152] 100.0% [162] 206(0.3%) 0(0.0%) for-loop ...h-testversion/src/core/ematch.rkt:44:7 constant? [167] 100.0% ---------------------------------------------------------------------------------- ??? [153] 100.0% [163] 202(0.3%) 0(0.0%) bfcbrt ...lib/math/private/bigfloat/mpfr.rkt:632:4 new-mpfr [207] 100.0% ---------------------------------------------------------------------------------- loop [156] 30.6% merge-egraph-nodes! [108] 69.4% [164] 9488(14.4%) 1594(2.4%) loop! ...math-testversion/src/core/enode.rkt:194:2 loop [156] 37.8% custom-set-union [177] 30.5% set [176] 18.1% update-en-expr [193] 3.2% ---------------------------------------------------------------------------------- hash-update! [157] 100.0% [165] 6880(10.4%) 600(0.9%) ??? ...math-testversion/src/core/egraph.rkt:221:24 for-loop [174] 88.3% update-en-expr [193] 3.0% ---------------------------------------------------------------------------------- for-loop [73] 6.3% .../more-scheme.rkt:261:28 [30] 6.8% for-loop [149] 18.7% atab-add-altn [158] 68.2% [166] 3256(4.9%) 0(0.0%) errors ...eggmath-testversion/src/points.rkt:201:0 for-loop [179] 69.0% eval-prog [180] 31.0% ---------------------------------------------------------------------------------- pattern-match [160] 9.3% for-loop [162] 9.5% match-e [109] 81.2% [167] 2174(3.3%) 402(0.6%) constant? ...stversion/src/syntax/syntax.rkt:726:0 value? [178] 81.5% ---------------------------------------------------------------------------------- loop [156] 100.0% [168] 2170(3.3%) 400(0.6%) gf (unknown source) propagation-apply-shifted [181] 35.9% propagation-apply [182] 28.0% propagation-merge [186] 17.6% ---------------------------------------------------------------------------------- loop [156] 14.4% for-loop [96] 85.6% [169] 1412(2.1%) 0(0.0%) mk-enode-rec! ...version/src/core/egraph.rkt:117:0 for-loop [183] 42.9% new-enode [184] 35.3% loop [156] 14.4% hash-has-key? [187] 7.4% ---------------------------------------------------------------------------------- loop [156] 100.0% [170] 1386(2.1%) 204(0.3%) ??? ...e/eggmath-testversion/src/points.rkt:190:26 ??? [175] 70.9% ordinary-value? [188] 14.4% ---------------------------------------------------------------------------------- expand-capturing-lifts [76] 19.7% loop [156] 80.3% [171] 976(1.5%) 0(0.0%) expand-id-application-form17 (unknown source) resolve+shift28 [19] 40.4% syntax-e/no-taint [16] 40.0% binding-lookup52 [189] 19.7% ---------------------------------------------------------------------------------- pattern-match [160] 48.9% for-loop [130] 51.1% [172] 752(1.1%) 384(0.6%) for-loop ...-testversion/src/core/matcher.rkt:27:9 core457 [191] 24.5% fallback-update [190] 24.5% ---------------------------------------------------------------------------------- loop [156] 100.0% [173] 400(0.6%) 0(0.0%) foldl ....5/collects/racket/private/list.rkt:229:4 merge2 [185] 100.0% ---------------------------------------------------------------------------------- ??? [165] 100.0% [174] 6072(9.2%) 5668(8.6%) for-loop ...testversion/src/core/egraph.rkt:222:26 update-en-expr [193] 6.7% ---------------------------------------------------------------------------------- ??? [170] 25.2% loop [54] 32.5% .../more-scheme.rkt:261:28 [30] 42.3% [175] 3898(5.9%) 1420(2.2%) ??? .../eggmath-testversion/src/programs.rkt:115:2 ??? [90] 21.1% ??? [195] 16.6% ??? [196] 15.7% ??? [194] 5.3% loop [156] 4.9% ---------------------------------------------------------------------------------- loop! [164] 100.0% [176] 3524(5.3%) 3524(5.3%) set ...collects/racket/private/set-types.rkt:992:0 ---------------------------------------------------------------------------------- loop! [164] 100.0% [177] 2990(4.5%) 1570(2.4%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [192] 40.8% for-loop [198] 6.7% ---------------------------------------------------------------------------------- variable? [127] 30.7% constant? [167] 69.3% [178] 2556(3.9%) 2556(3.9%) value? ...th-testversion/src/syntax/types.rkt:18:0 ---------------------------------------------------------------------------------- errors [166] 100.0% [179] 2248(3.4%) 396(0.6%) for-loop ...gmath-testversion/src/points.rkt:203:2 .../more-scheme.rkt:261:28 [30] 82.4% ---------------------------------------------------------------------------------- errors [166] 100.0% [180] 1008(1.5%) 0(0.0%) eval-prog ...ath-testversion/src/programs.rkt:83:0 temp85_0 [44] 100.0% ---------------------------------------------------------------------------------- gf [168] 100.0% [181] 780(1.2%) 780(1.2%) propagation-apply-shifted (unknown source) ---------------------------------------------------------------------------------- gf [168] 100.0% [182] 608(0.9%) 608(0.9%) propagation-apply (unknown source) ---------------------------------------------------------------------------------- mk-enode-rec! [169] 100.0% [183] 606(0.9%) 606(0.9%) for-loop ...testversion/src/core/egraph.rkt:109:10 ---------------------------------------------------------------------------------- mk-enode-rec! [169] 100.0% [184] 598(0.9%) 0(0.0%) new-enode ...-testversion/src/core/enode.rkt:101:0 type-of-enode-expr [197] 100.0% ---------------------------------------------------------------------------------- foldl [173] 100.0% [185] 400(0.6%) 400(0.6%) merge2 ...ath-testversion/src/core/ematch.rkt:24:0 ---------------------------------------------------------------------------------- gf [168] 100.0% [186] 382(0.6%) 382(0.6%) propagation-merge (unknown source) ---------------------------------------------------------------------------------- mk-enode-rec! [169] 100.0% [187] 208(0.3%) 208(0.3%) hash-has-key? ...ket/private/more-scheme.rkt:371:2 ---------------------------------------------------------------------------------- ??? [170] 100.0% [188] 200(0.3%) 200(0.3%) ordinary-value? ...-testversion/src/float.rkt:52:0 ---------------------------------------------------------------------------------- expand-id-application-form17 [171] 100.0% [189] 192(0.3%) 192(0.3%) binding-lookup52 (unknown source) ---------------------------------------------------------------------------------- for-loop [172] 100.0% [190] 184(0.3%) 184(0.3%) fallback-update ...s/racket/private/dict.rkt:115:2 ---------------------------------------------------------------------------------- for-loop [172] 100.0% [191] 184(0.3%) 0(0.0%) core457 ...acket/contract/private/arr-i.rkt:976:19 un-dep/maybe-chaperone [199] 100.0% ---------------------------------------------------------------------------------- custom-set-union [177] 100.0% [192] 1220(1.9%) 0(0.0%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [200] 100.0% ---------------------------------------------------------------------------------- ??? [165] 17.2% for-loop [174] 33.4% loop! [164] 49.4% [193] 1210(1.8%) 1210(1.8%) update-en-expr ...ersion/src/core/egraph.rkt:207:0 ---------------------------------------------------------------------------------- pattern-substitute [112] 23.1% ormap [119] 23.8% ??? [175] 25.8% for-loop [94] 27.3% [194] 798(1.2%) 798(1.2%) ??? ...cket-7.5/collects/racket/function.rkt:93:12 ---------------------------------------------------------------------------------- ??? [175] 100.0% [195] 646(1.0%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:379:33 ival-div [201] 100.0% ---------------------------------------------------------------------------------- ??? [175] 100.0% [196] 612(0.9%) 192(0.3%) ??? ...th-testversion/src/syntax/syntax.rkt:214:17 return/no-unsupplied [202] 68.6% ---------------------------------------------------------------------------------- new-enode [184] 100.0% [197] 598(0.9%) 398(0.6%) type-of-enode-expr ...sion/src/core/enode.rkt:66:0 table-ref [203] 33.4% ---------------------------------------------------------------------------------- custom-set-union [177] 100.0% [198] 200(0.3%) 200(0.3%) for-loop ...cts/racket/private/set-types.rkt:152:2 ---------------------------------------------------------------------------------- core457 [191] 100.0% [199] 184(0.3%) 0(0.0%) un-dep/maybe-chaperone ...private/arr-i.rkt:1137:2 ??? [204] 100.0% ---------------------------------------------------------------------------------- for-loop [192] 100.0% [200] 1220(1.9%) 1220(1.9%) for-loop ...cts/racket/private/set-types.rkt:178:5 ---------------------------------------------------------------------------------- ??? [195] 100.0% [201] 646(1.0%) 446(0.7%) ival-div ...-testversion/src/biginterval.rkt:155:0 bfdiv [205] 31.0% ---------------------------------------------------------------------------------- ??? [196] 100.0% [202] 420(0.6%) 420(0.6%) return/no-unsupplied ...ct/private/arr-i.rkt:566:0 ---------------------------------------------------------------------------------- type-of-enode-expr [197] 100.0% [203] 200(0.3%) 200(0.3%) table-ref ...gmath-testversion/src/common.rkt:33:0 ---------------------------------------------------------------------------------- un-dep/maybe-chaperone [199] 100.0% [204] 184(0.3%) 0(0.0%) ??? ...cts/racket/contract/private/guts.rkt:835:10 ??? [206] 100.0% ---------------------------------------------------------------------------------- ival-div [201] 47.4% ival-mult [105] 52.6% [205] 422(0.6%) 222(0.3%) bfdiv ...-lib/math/private/bigfloat/mpfr.rkt:835:4 new-mpfr [207] 47.4% ---------------------------------------------------------------------------------- ??? [204] 100.0% [206] 184(0.3%) 0(0.0%) ??? ...ntract/private/arrow-higher-order.rkt:575:2 build-subcontract-late-negs [208] 100.0% ---------------------------------------------------------------------------------- bf [122] 33.2% bfdiv [205] 33.2% bfcbrt [163] 33.6% [207] 602(0.9%) 602(0.9%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:348:0 ---------------------------------------------------------------------------------- ??? [206] 100.0% [208] 184(0.3%) 184(0.3%) build-subcontract-late-negs ...her-order.rkt:711:0 ----------------------------------------------------------------------------------