Profiling results ----------------- Total cpu time observed: 8020ms (out of 8196ms) Number of samples taken: 45 (once every 178ms) =================================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee =================================================================================== [1] 8020(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [8] 100.0% ----------------------------------------------------------------------------------- hash-ref! [85] 20.9% map [95] 79.1% [2] 1432(17.9%) 0(0.0%) parse-loop74 (unknown source) eval-const-expr [9] 100.0% ----------------------------------------------------------------------------------- ??? [59] 100.0% [3] 1432(17.9%) 0(0.0%) approximate9 ...-pow-test/src/core/taylor.rkt:11:0 loop [10] 89.5% for-loop [13] 10.5% ----------------------------------------------------------------------------------- hash-ref! [85] 100.0% [4] 1282(16.0%) 0(0.0%) ??? ...ie/ival-pow-test/src/core/taylor.rkt:406:23 for-loop [11] 100.0% ----------------------------------------------------------------------------------- hash-ref! [85] 100.0% [5] 750(9.4%) 0(0.0%) ??? ...ie/ival-pow-test/src/core/taylor.rkt:300:23 for-loop [12] 100.0% ----------------------------------------------------------------------------------- map [95] 100.0% [6] 450(5.6%) 0(0.0%) parse-loop49 (unknown source) loop [84] 66.7% f40 [90] 33.3% ----------------------------------------------------------------------------------- hash-ref! [85] 100.0% [7] 150(1.9%) 0(0.0%) ??? ...herbie/ival-pow-test/src/programs.rkt:178:5 loop [84] 100.0% ----------------------------------------------------------------------------------- ??? [1] 100.0% [8] 8020(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [14] 100.0% ----------------------------------------------------------------------------------- parse-loop74 [2] 100.0% [9] 1432(17.9%) 0(0.0%) eval-const-expr ...pow-test/src/programs.rkt:120:0 temp85_0 [64] 52.4% loop [84] 26.7% eval-prog [16] 10.5% eval [17] 10.5% ----------------------------------------------------------------------------------- approximate9 [3] 100.0% [10] 1282(16.0%) 0(0.0%) loop ...bie/ival-pow-test/src/core/taylor.rkt:86:4 ??? [59] 100.0% ----------------------------------------------------------------------------------- ??? [4] 100.0% [11] 1282(16.0%) 0(0.0%) for-loop ...al-pow-test/src/core/taylor.rkt:410:33 for-loop [15] 100.0% ----------------------------------------------------------------------------------- ??? [5] 100.0% [12] 750(9.4%) 0(0.0%) for-loop ...al-pow-test/src/core/taylor.rkt:303:27 hash-ref! [85] 100.0% ----------------------------------------------------------------------------------- approximate9 [3] 100.0% [13] 150(1.9%) 0(0.0%) for-loop ...val-pow-test/src/core/taylor.rkt:29:18 taylor [18] 100.0% ----------------------------------------------------------------------------------- profile-thunk16 [8] 100.0% [14] 8020(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [19] 100.0% ----------------------------------------------------------------------------------- for-loop [11] 100.0% [15] 1282(16.0%) 0(0.0%) for-loop ...al-pow-test/src/core/taylor.rkt:412:39 hash-ref! [85] 100.0% ----------------------------------------------------------------------------------- eval-const-expr [9] 100.0% [16] 150(1.9%) 0(0.0%) eval-prog ...e/ival-pow-test/src/programs.rkt:82:0 hash-ref! [85] 100.0% ----------------------------------------------------------------------------------- eval-const-expr [9] 100.0% [17] 150(1.9%) 0(0.0%) eval (unknown source) datum->syntax6 [20] 100.0% ----------------------------------------------------------------------------------- for-loop [13] 100.0% [18] 150(1.9%) 0(0.0%) taylor .../ival-pow-test/src/core/taylor.rkt:169:0 loop [21] 100.0% ----------------------------------------------------------------------------------- for-loop [66] 3.2% run [14] 96.8% [19] 8020(100.0%) 186(2.3%) .../more-scheme.rkt:261:28 (unknown source) prepare-points-intervals [22] 48.4% run-improve47 [23] 39.7% oracle-error [24] 3.9% get-final-combination [25] 2.7% errors [60] 2.1% ulp-difference [26] 1.1% ??? [91] 1.0% ----------------------------------------------------------------------------------- eval [17] 100.0% [20] 150(1.9%) 0(0.0%) datum->syntax6 (unknown source) loop [84] 100.0% ----------------------------------------------------------------------------------- taylor [18] 100.0% [21] 150(1.9%) 0(0.0%) loop ...ie/ival-pow-test/src/core/taylor.rkt:267:2 hash-ref! [85] 100.0% ----------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [19] 100.0% [22] 3878(48.4%) 0(0.0%) prepare-points-intervals ...t/src/points.rkt:120:0 loop [27] 100.0% ----------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [19] 100.0% [23] 3276(40.8%) 0(0.0%) run-improve47 ...l-pow-test/src/mainloop.rkt:346:0 for-loop [28] 100.0% ----------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [19] 100.0% [24] 314(3.9%) 0(0.0%) oracle-error ...ival-pow-test/src/points.rkt:177:0 for-loop [29] 100.0% ----------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [19] 100.0% [25] 218(2.7%) 0(0.0%) get-final-combination ...st/src/mainloop.rkt:371:0 infer-splitpoints [30] 100.0% ----------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [19] 100.0% [26] 170(2.1%) 170(2.1%) ulp-difference ...ival-pow-test/src/float.rkt:19:0 ----------------------------------------------------------------------------------- prepare-points-intervals [22] 100.0% [27] 3878(48.4%) 190(2.4%) loop .../herbie/ival-pow-test/src/points.rkt:132:4 loop [32] 76.7% ??? [33] 13.2% andmap [35] 5.2% ----------------------------------------------------------------------------------- run-improve47 [23] 100.0% [28] 3276(40.8%) 0(0.0%) for-loop ...e/ival-pow-test/src/mainloop.rkt:365:4 run-iter! [31] 100.0% ----------------------------------------------------------------------------------- oracle-error [24] 100.0% [29] 314(3.9%) 0(0.0%) for-loop ...bie/ival-pow-test/src/points.rkt:178:2 loop [84] 100.0% ----------------------------------------------------------------------------------- get-final-combination [25] 100.0% [30] 218(2.7%) 0(0.0%) infer-splitpoints ...est/src/core/regimes.rkt:33:0 for-loop [34] 100.0% ----------------------------------------------------------------------------------- for-loop [28] 100.0% [31] 3276(40.8%) 0(0.0%) run-iter! .../ival-pow-test/src/mainloop.rkt:327:0 gen-series! [37] 43.7% simplify! [38] 23.8% finalize-iter! [39] 23.0% localize! [41] 9.5% ----------------------------------------------------------------------------------- loop [27] 100.0% [32] 2974(37.1%) 522(6.5%) loop ...s/herbie/ival-pow-test/src/points.rkt:79:2 ??? [36] 76.7% real->precision [44] 5.7% ----------------------------------------------------------------------------------- loop [27] 100.0% [33] 512(6.4%) 0(0.0%) ??? ...s/herbie/ival-pow-test/src/points.rkt:113:6 sample-multi-bounded [40] 100.0% ----------------------------------------------------------------------------------- infer-splitpoints [30] 100.0% [34] 218(2.7%) 0(0.0%) for-loop ...val-pow-test/src/core/regimes.rkt:45:6 option-on-expr [42] 100.0% ----------------------------------------------------------------------------------- loop [27] 100.0% [35] 202(2.5%) 0(0.0%) andmap ...5/collects/racket/private/map.rkt:102:13 ordinary-value? [43] 100.0% ----------------------------------------------------------------------------------- loop [32] 100.0% [36] 2282(28.5%) 858(10.7%) ??? ...tract/private/arrow-higher-order.rkt:379:33 ival-cos [46] 62.4% ----------------------------------------------------------------------------------- run-iter! [31] 100.0% [37] 1432(17.9%) 0(0.0%) gen-series! ...val-pow-test/src/mainloop.rkt:160:0 for-loop [45] 100.0% ----------------------------------------------------------------------------------- run-iter! [31] 100.0% [38] 780(9.7%) 0(0.0%) simplify! .../ival-pow-test/src/mainloop.rkt:224:0 ??? [47] 100.0% ----------------------------------------------------------------------------------- run-iter! [31] 100.0% [39] 754(9.4%) 0(0.0%) finalize-iter! ...-pow-test/src/mainloop.rkt:278:0 ??? [48] 100.0% ----------------------------------------------------------------------------------- ??? [33] 100.0% [40] 512(6.4%) 170(2.1%) sample-multi-bounded ...w-test/src/points.rkt:14:0 random-ranges [49] 66.8% ----------------------------------------------------------------------------------- run-iter! [31] 100.0% [41] 310(3.9%) 154(1.9%) localize! .../ival-pow-test/src/mainloop.rkt:127:0 localize-error [51] 50.3% ----------------------------------------------------------------------------------- for-loop [34] 100.0% [42] 218(2.7%) 0(0.0%) option-on-expr ...-test/src/core/regimes.rkt:124:0 do-curry [50] 100.0% ----------------------------------------------------------------------------------- andmap [35] 100.0% [43] 202(2.5%) 202(2.5%) ordinary-value? ...val-pow-test/src/float.rkt:51:0 ----------------------------------------------------------------------------------- loop [32] 100.0% [44] 170(2.1%) 0(0.0%) real->precision ...pow-test/src/programs.rkt:94:11 ??? [59] 100.0% ----------------------------------------------------------------------------------- gen-series! [37] 100.0% [45] 1432(17.9%) 0(0.0%) for-loop ...e/ival-pow-test/src/mainloop.rkt:167:7 taylor-alt [52] 100.0% ----------------------------------------------------------------------------------- ??? [36] 100.0% [46] 1424(17.8%) 680(8.5%) ival-cos ...val-pow-test/src/biginterval.rkt:286:0 bfsub [55] 38.2% bfcos [102] 14.0% ----------------------------------------------------------------------------------- simplify! [38] 100.0% [47] 780(9.7%) 0(0.0%) ??? ...ie/ival-pow-test/src/core/simplify.rkt:42:0 egraph-run [53] 100.0% ----------------------------------------------------------------------------------- finalize-iter! [39] 100.0% [48] 754(9.4%) 0(0.0%) ??? ...contract/private/arrow-val-first.rkt:486:18 for-loop [54] 100.0% ----------------------------------------------------------------------------------- sample-multi-bounded [40] 100.0% [49] 342(4.3%) 342(4.3%) random-ranges ...val-pow-test/src/common.rkt:164:0 ----------------------------------------------------------------------------------- option-on-expr [42] 100.0% [50] 218(2.7%) 218(2.7%) do-curry ...-7.5/collects/racket/function.rkt:71:2 ----------------------------------------------------------------------------------- localize! [41] 100.0% [51] 156(1.9%) 0(0.0%) localize-error ...-test/src/core/localize.rkt:58:0 hash-ref! [85] 100.0% ----------------------------------------------------------------------------------- for-loop [45] 100.0% [52] 1432(17.9%) 0(0.0%) taylor-alt ...ival-pow-test/src/mainloop.rkt:146:0 for-loop [56] 100.0% ----------------------------------------------------------------------------------- ??? [47] 100.0% [53] 780(9.7%) 0(0.0%) egraph-run .../pkgs/egg-herbie-linux/main.rkt:49:0 egraph-add-exprs [57] 100.0% ----------------------------------------------------------------------------------- ??? [48] 100.0% [54] 754(9.4%) 0(0.0%) for-loop ...l-pow-test/src/core/alt-table.rkt:46:2 atab-add-altn [58] 50.7% errors [60] 49.3% ----------------------------------------------------------------------------------- ival-cos [46] 100.0% [55] 544(6.8%) 0(0.0%) bfsub ...-lib/math/private/bigfloat/mpfr.rkt:835:4 new-mpfr [104] 100.0% ----------------------------------------------------------------------------------- taylor-alt [52] 100.0% [56] 1432(17.9%) 0(0.0%) for-loop ...e/ival-pow-test/src/mainloop.rkt:152:6 ??? [59] 100.0% ----------------------------------------------------------------------------------- egraph-run [53] 100.0% [57] 780(9.7%) 0(0.0%) egraph-add-exprs ...gg-herbie-linux/main.rkt:111:0 ??? [61] 100.0% ----------------------------------------------------------------------------------- for-loop [54] 100.0% [58] 382(4.8%) 0(0.0%) atab-add-altn ...test/src/core/alt-table.rkt:194:0 override-at-pnts [62] 50.8% errors [60] 49.2% ----------------------------------------------------------------------------------- real->precision [44] 10.6% loop [10] 26.7% location-do [63] 31.4% for-loop [56] 31.4% [59] 1602(20.0%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:375:33 location-do [63] 31.4% approximate9 [3] 31.4% hash-ref! [85] 26.7% bf [68] 10.6% ----------------------------------------------------------------------------------- atab-add-altn [58] 21.0% .../more-scheme.rkt:261:28 [19] 37.4% for-loop [54] 41.6% [60] 894(11.1%) 0(0.0%) errors ...erbie/ival-pow-test/src/points.rkt:190:0 for-loop [66] 58.2% temp85_0 [64] 21.0% loop [84] 20.8% ----------------------------------------------------------------------------------- egraph-add-exprs [57] 100.0% [61] 780(9.7%) 0(0.0%) ??? ...e/ival-pow-test/src/core/simplify.rkt:102:6 for-loop [65] 100.0% ----------------------------------------------------------------------------------- atab-add-altn [58] 100.0% [62] 194(2.4%) 0(0.0%) override-at-pnts ...t/src/core/alt-table.rkt:129:0 for-loop [67] 100.0% ----------------------------------------------------------------------------------- ??? [59] 34.2% location-do [63] 65.8% [63] 1432(17.9%) 0(0.0%) location-do ...ival-pow-test/src/programs.rkt:63:0 location-do [63] 65.8% ??? [59] 34.2% ----------------------------------------------------------------------------------- errors [60] 20.0% eval-const-expr [9] 80.0% [64] 938(11.7%) 0(0.0%) temp85_0 (unknown source) compile15 [69] 100.0% ----------------------------------------------------------------------------------- ??? [61] 100.0% [65] 780(9.7%) 780(9.7%) for-loop ...l-pow-test/src/core/simplify.rkt:121:2 ----------------------------------------------------------------------------------- errors [60] 100.0% [66] 520(6.5%) 0(0.0%) for-loop ...bie/ival-pow-test/src/points.rkt:192:2 .../more-scheme.rkt:261:28 [19] 100.0% ----------------------------------------------------------------------------------- override-at-pnts [62] 100.0% [67] 194(2.4%) 194(2.4%) for-loop ...pow-test/src/core/alt-table.rkt:130:22 ----------------------------------------------------------------------------------- ??? [59] 100.0% [68] 170(2.1%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:615:2 new-mpfr [104] 100.0% ----------------------------------------------------------------------------------- temp85_0 [64] 100.0% [69] 938(11.7%) 0(0.0%) compile15 (unknown source) temp91_0 [70] 100.0% ----------------------------------------------------------------------------------- compile15 [69] 100.0% [70] 938(11.7%) 0(0.0%) temp91_0 (unknown source) temp118_0 [71] 100.0% ----------------------------------------------------------------------------------- temp91_0 [70] 100.0% [71] 938(11.7%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [72] 100.0% ----------------------------------------------------------------------------------- loop [84] 26.4% temp118_0 [71] 73.6% [72] 1274(15.9%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [73] 73.6% dispatch-transformer41 [74] 26.4% ----------------------------------------------------------------------------------- expand-capturing-lifts [72] 100.0% [73] 938(11.7%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [75] 100.0% ----------------------------------------------------------------------------------- expand-capturing-lifts [72] 40.8% for-loop [98] 59.2% [74] 824(10.3%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [76] 100.0% ----------------------------------------------------------------------------------- lambda-clause-expander [73] 35.2% for-loop [98] 64.8% [75] 938(11.7%) 0(0.0%) finish-bodys (unknown source) for-loop [98] 100.0% ----------------------------------------------------------------------------------- dispatch-transformer41 [74] 100.0% [76] 824(10.3%) 0(0.0%) apply-transformer52 (unknown source) apply-transformer-in-context [77] 41.0% apply-post-expansion [78] 22.6% syntax-remove-taint-dispatch-properties [79] 18.2% loop [84] 18.2% ----------------------------------------------------------------------------------- apply-transformer52 [76] 100.0% [77] 338(4.2%) 0(0.0%) apply-transformer-in-context (unknown source) parse-app [80] 55.6% new-lambda [82] 44.4% ----------------------------------------------------------------------------------- apply-transformer52 [76] 100.0% [78] 186(2.3%) 0(0.0%) apply-post-expansion (unknown source) gf [81] 100.0% ----------------------------------------------------------------------------------- apply-transformer52 [76] 100.0% [79] 150(1.9%) 150(1.9%) syntax-remove-taint-dispatch-properties ...source) ----------------------------------------------------------------------------------- apply-transformer-in-context [77] 100.0% [80] 188(2.3%) 0(0.0%) parse-app ...collects/racket/private/kw.rkt:1142:2 syntax->list [83] 100.0% ----------------------------------------------------------------------------------- apply-post-expansion [78] 16.7% loop [84] 83.3% [81] 186(2.3%) 0(0.0%) gf (unknown source) loop [84] 83.3% syntax-e/no-taint [96] 16.7% ----------------------------------------------------------------------------------- apply-transformer-in-context [77] 100.0% [82] 150(1.9%) 150(1.9%) new-lambda ...ollects/racket/private/kw.rkt:856:11 ----------------------------------------------------------------------------------- parse-app [80] 100.0% [83] 188(2.3%) 0(0.0%) syntax->list (unknown source) loop [84] 100.0% ----------------------------------------------------------------------------------- datum->syntax6 [20] 0.1% errors [60] 1.0% ??? [7] 4.1% gf [81] 5.1% syntax->list [83] 5.2% syntax-e/no-taint [96] 6.2% apply-transformer52 [76] 8.2% for-loop [98] 8.2% parse-loop49 [6] 10.3% loop [84] 13.3% for-loop [29] 17.3% eval-const-expr [9] 21.0% [84] 1820(22.7%) 524(6.5%) loop (unknown source) core-form-sym [86] 21.0% ??? [87] 17.3% loop [84] 13.3% f40 [90] 10.3% expand-capturing-lifts [72] 9.3% expand-id-application-form17 [88] 8.2% syntax-e [92] 5.2% gf [81] 5.1% hash-ref! [85] 4.1% ----------------------------------------------------------------------------------- eval-prog [16] 1.3% loop [84] 2.7% loop [21] 4.7% map [95] 4.9% localize-error [51] 4.9% for-loop [12] 13.2% for-loop [15] 22.7% ??? [89] 22.7% ??? [59] 22.7% [85] 1588(19.8%) 150(1.9%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [89] 22.7% ??? [4] 22.7% f40 [90] 20.4% ??? [5] 13.2% parse-loop15 [94] 9.8% parse-loop74 [2] 7.1% ??? [7] 2.7% ----------------------------------------------------------------------------------- loop [84] 100.0% [86] 382(4.8%) 0(0.0%) core-form-sym (unknown source) syntax-e [92] 60.7% resolve+shift28 [93] 39.3% ----------------------------------------------------------------------------------- loop [84] 100.0% [87] 314(3.9%) 0(0.0%) ??? .../herbie/ival-pow-test/src/points.rkt:179:26 ??? [91] 100.0% ----------------------------------------------------------------------------------- for-loop [98] 50.0% loop [84] 50.0% [88] 300(3.7%) 0(0.0%) expand-id-application-form17 (unknown source) resolve+shift28 [93] 50.0% binding-lookup52 [103] 50.0% ----------------------------------------------------------------------------------- hash-ref! [85] 100.0% [89] 1282(16.0%) 0(0.0%) ??? ...bie/ival-pow-test/src/core/taylor.rkt:44:15 hash-ref! [85] 100.0% ----------------------------------------------------------------------------------- parse-loop49 [6] 4.4% loop [84] 8.8% hash-ref! [85] 38.3% map [95] 48.4% [90] 1132(14.1%) 0(0.0%) f40 (unknown source) map [95] 100.0% ----------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [19] 34.3% ??? [87] 65.7% [91] 478(6.0%) 478(6.0%) ??? .../ival-pow-test/src/syntax/syntax.rkt:214:17 ----------------------------------------------------------------------------------- loop [84] 44.8% core-form-sym [86] 55.2% [92] 420(5.2%) 232(2.9%) syntax-e (unknown source) syntax-e/no-taint [96] 44.8% ----------------------------------------------------------------------------------- core-form-sym [86] 50.0% expand-id-application-form17 [88] 50.0% [93] 300(3.7%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [97] 100.0% ----------------------------------------------------------------------------------- hash-ref! [85] 100.0% [94] 156(1.9%) 0(0.0%) parse-loop15 (unknown source) map [95] 100.0% ----------------------------------------------------------------------------------- parse-loop15 [94] 12.1% f40 [90] 87.9% [95] 1288(16.1%) 0(0.0%) map ...t-7.5/collects/racket/private/map.rkt:35:13 f40 [90] 42.6% parse-loop74 [2] 33.7% parse-loop49 [6] 11.6% hash-ref! [85] 6.1% loop [99] 6.1% ----------------------------------------------------------------------------------- gf [81] 49.7% syntax-e [92] 50.3% [96] 374(4.7%) 0(0.0%) syntax-e/no-taint (unknown source) loop [84] 100.0% ----------------------------------------------------------------------------------- resolve+shift28 [93] 100.0% [97] 300(3.7%) 150(1.9%) fallback-loop (unknown source) for-loop [98] 50.0% ----------------------------------------------------------------------------------- fallback-loop [97] 2.3% for-loop [98] 25.5% finish-bodys [75] 72.2% [98] 938(11.7%) 150(1.9%) for-loop (unknown source) finish-bodys [75] 46.1% for-loop [98] 25.5% dispatch-transformer41 [74] 10.5% expand-id-application-form17 [88] 8.0% loop [84] 5.3% expand-implicit [101] 2.3% ----------------------------------------------------------------------------------- map [95] 7.7% loop [99] 92.3% [99] 156(1.9%) 0(0.0%) loop ...-7.5/collects/racket/private/map.rkt:40:19 loop [99] 92.3% ??? [100] 7.7% ----------------------------------------------------------------------------------- loop [99] 100.0% [100] 156(1.9%) 0(0.0%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfcos [102] 100.0% ----------------------------------------------------------------------------------- for-loop [98] 100.0% [101] 150(1.9%) 0(0.0%) expand-implicit (unknown source) binding-lookup52 [103] 100.0% ----------------------------------------------------------------------------------- ??? [100] 43.8% ival-cos [46] 56.2% [102] 356(4.4%) 0(0.0%) bfcos ...-lib/math/private/bigfloat/mpfr.rkt:632:4 new-mpfr [104] 100.0% ----------------------------------------------------------------------------------- expand-id-application-form17 [88] 50.0% expand-implicit [101] 50.0% [103] 300(3.7%) 300(3.7%) binding-lookup52 (unknown source) ----------------------------------------------------------------------------------- bf [68] 15.9% bfcos [102] 33.3% bfsub [55] 50.8% [104] 1070(13.3%) 1070(13.3%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:348:0 -----------------------------------------------------------------------------------