Profiling results ----------------- Total cpu time observed: 142368ms (out of 144748ms) Number of samples taken: 366 (once every 389ms) ============================================================================= Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ============================================================================= ??? [12] 100.0% [1] 142368(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [7] 100.0% ----------------------------------------------------------------------------- hash-ref! [41] 100.0% [2] 2582(1.8%) 0(0.0%) ??? ...tlies/herbie/develop/src/programs.rkt:142:5 loop [36] 100.0% ----------------------------------------------------------------------------- ??? [12] 100.0% [3] 840(0.6%) 0(0.0%) errors ...lies/herbie/develop/src/points.rkt:223:0 for-loop [8] 100.0% ----------------------------------------------------------------------------- for-loop [99] 47.3% loop [84] 52.7% [4] 660(0.5%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [9] 100.0% ----------------------------------------------------------------------------- for-loop [99] 46.1% loop [84] 53.9% [5] 646(0.5%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [10] 100.0% ----------------------------------------------------------------------------- for-loop [99] 100.0% [6] 180(0.1%) 0(0.0%) [running body] ...contract/private/opters.rkt":##f module-identifier-mapping-put! [11]100.0% ----------------------------------------------------------------------------- profile-thunk16 [1] 100.0% [7] 142368(100.0%) 0(0.0%) run ...et-7.0/share/pkgs/profile-lib/main.rkt:39:2 ??? [12] 100.0% ----------------------------------------------------------------------------- errors [3] 100.0% [8] 840(0.6%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:225:2 ??? [12] 100.0% ----------------------------------------------------------------------------- dispatch-transformer41 [4] 100.0% [9] 660(0.5%) 0(0.0%) apply-transformer52 (unknown source) loop [84] 100.0% ----------------------------------------------------------------------------- syntax-e [5] 100.0% [10] 646(0.5%) 0(0.0%) syntax-e/no-taint (unknown source) loop [84] 100.0% ----------------------------------------------------------------------------- [running body] [6] 100.0% [11] 180(0.1%) 0(0.0%) module-identifier-mapping-put! ...undmap.rkt:47:12 identifier-binding-symbol30 [13] 100.0% ----------------------------------------------------------------------------- for-loop [8] 0.2% run [7] 49.9% [12] 142368(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 49.9% loop [22] 45.7% run-improve43 [14] 3.5% oracle-error [15] 0.2% errors [3] 0.2% eval-errors [16] 0.2% errors-score [54] 0.1% ??? [52] 0.1% ulp-difference [73] 0.1% ??? [46] 0.1% ----------------------------------------------------------------------------- module-identifier-mapping-put! [11]100.0% [13] 180(0.1%) 0(0.0%) identifier-binding-symbol30 (unknown source) resolve+shift28 [96] 100.0% ----------------------------------------------------------------------------- ??? [12] 100.0% [14] 9912(7.0%) 0(0.0%) run-improve43 ...ie/develop/src/mainloop.rkt:339:0 setup-prog!34 [17] 61.4% for-loop [18] 35.3% simplify! [21] 3.3% ----------------------------------------------------------------------------- ??? [12] 100.0% [15] 568(0.4%) 0(0.0%) oracle-error ...erbie/develop/src/points.rkt:207:0 for-loop [19] 100.0% ----------------------------------------------------------------------------- ??? [12] 100.0% [16] 556(0.4%) 0(0.0%) eval-errors ...herbie/develop/src/points.rkt:198:0 for-loop [20] 100.0% ----------------------------------------------------------------------------- run-improve43 [14] 100.0% [17] 6090(4.3%) 0(0.0%) setup-prog!34 ...bie/develop/src/mainloop.rkt:67:0 loop [22] 100.0% ----------------------------------------------------------------------------- run-improve43 [14] 100.0% [18] 3494(2.5%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:354:4 run-iter! [23] 100.0% ----------------------------------------------------------------------------- oracle-error [15] 100.0% [19] 568(0.4%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:208:2 loop [36] 50.4% map [56] 49.6% ----------------------------------------------------------------------------- eval-errors [16] 100.0% [20] 556(0.4%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:200:2 ??? [46] 100.0% ----------------------------------------------------------------------------- run-improve43 [14] 100.0% [21] 328(0.2%) 0(0.0%) simplify! ...herbie/develop/src/mainloop.rkt:217:0 ??? [24] 100.0% ----------------------------------------------------------------------------- setup-prog!34 [17] 4.5% ??? [12] 95.5% [22] 136298(95.7%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:300:2 loop [30] 35.0% loop [25] 32.8% make-exacts-walkup [31] 31.4% for-loop [28] 0.4% ??? [34] 0.3% ----------------------------------------------------------------------------- for-loop [18] 100.0% [23] 3494(2.5%) 0(0.0%) run-iter! ...herbie/develop/src/mainloop.rkt:320:0 localize! [26] 59.2% finalize-iter! [27] 40.8% ----------------------------------------------------------------------------- simplify! [21] 100.0% [24] 328(0.2%) 0(0.0%) ??? ...s/herbie/develop/src/core/simplify.rkt:26:0 one-iter [29] 100.0% ----------------------------------------------------------------------------- loop [22] 100.0% [25] 44720(31.4%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:261:2 loop [30] 52.6% make-exacts-walkup [31] 47.4% ----------------------------------------------------------------------------- run-iter! [23] 100.0% [26] 2070(1.5%) 0(0.0%) localize! ...herbie/develop/src/mainloop.rkt:120:0 localize-error [32] 100.0% ----------------------------------------------------------------------------- run-iter! [23] 100.0% [27] 1424(1.0%) 0(0.0%) finalize-iter! ...e/develop/src/mainloop.rkt:271:0 ??? [33] 100.0% ----------------------------------------------------------------------------- loop [22] 100.0% [28] 598(0.4%) 0(0.0%) for-loop ...s/herbie/develop/src/points.rkt:320:19 ??? [34] 100.0% ----------------------------------------------------------------------------- ??? [24] 100.0% [29] 328(0.2%) 0(0.0%) one-iter ...bie/develop/src/core/simplify.rkt:85:0 for-loop [35] 100.0% ----------------------------------------------------------------------------- loop [25] 33.0% loop [22] 67.0% [30] 71246(50.0%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:244:4 loop [36] 97.8% composed [40] 2.2% ----------------------------------------------------------------------------- loop [25] 33.1% loop [22] 66.9% [31] 64052(45.0%) 0(0.0%) make-exacts-walkup ...develop/src/points.rkt:240:0 loop [36] 92.6% eval-prog [37] 7.4% ----------------------------------------------------------------------------- localize! [26] 100.0% [32] 2070(1.5%) 0(0.0%) localize-error ...velop/src/core/localize.rkt:57:0 ??? [38] 70.2% hash-ref! [41] 29.8% ----------------------------------------------------------------------------- finalize-iter! [27] 100.0% [33] 1424(1.0%) 1424(1.0%) ??? ...contract/private/arrow-val-first.rkt:388:18 ----------------------------------------------------------------------------- loop [22] 40.2% for-loop [28] 59.8% [34] 1000(0.7%) 0(0.0%) ??? ...ghtlies/herbie/develop/src/points.rkt:127:2 ??? [52] 100.0% ----------------------------------------------------------------------------- one-iter [29] 100.0% [35] 328(0.2%) 0(0.0%) for-loop ...bie/develop/src/core/simplify.rkt:94:2 reduce-to-single! [39] 100.0% ----------------------------------------------------------------------------- map [56] 0.0% for-loop [19] 0.2% make-exacts-walkup [31] 0.6% loop [30] 1.2% ??? [2] 1.9% loop [36] 96.0% [36] 132426(93.0%) 358(0.3%) loop ...-7.0/collects/racket/private/map.rkt:40:19 loop [36] 96.0% hash-ref! [41] 1.9% composed [40] 1.8% ??? [46] 0.3% ??? [58] 0.0% ----------------------------------------------------------------------------- make-exacts-walkup [31] 100.0% [37] 4766(3.3%) 0(0.0%) eval-prog .../herbie/develop/src/programs.rkt:83:0 hash-ref! [41] 61.8% temp68_2 [43] 20.1% loop [84] 11.1% inductor [44] 7.0% ----------------------------------------------------------------------------- localize-error [32] 100.0% [38] 1454(1.0%) 0(0.0%) ??? ...-7.0/collects/racket/private/sort.rkt:369:3 generic-sort/key [42] 100.0% ----------------------------------------------------------------------------- for-loop [35] 100.0% [39] 328(0.2%) 0(0.0%) reduce-to-single! ...lop/src/core/egraph.rkt:318:0 for-loop [45] 100.0% ----------------------------------------------------------------------------- loop [30] 1.3% loop [36] 98.7% [40] 125180(87.9%) 358(0.3%) composed ...ollects/racket/private/list.rkt:321:16 ??? [46] 99.7% ----------------------------------------------------------------------------- localize-error [32] 4.3% map [56] 13.0% eval-prog [37] 35.7% loop [36] 47.0% [41] 3560(2.5%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [2] 47.0% bigfloat-hash [47] 35.7% parse-loop30 [50] 17.3% ----------------------------------------------------------------------------- ??? [38] 100.0% [42] 1454(1.0%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [48] 100.0% ----------------------------------------------------------------------------- eval-prog [37] 100.0% [43] 958(0.7%) 0(0.0%) temp68_2 (unknown source) compile16 [49] 100.0% ----------------------------------------------------------------------------- eval-prog [37] 33.3% inductor [44] 66.7% [44] 334(0.2%) 0(0.0%) inductor ...s/herbie/develop/src/programs.rkt:88:4 inductor [44] 66.7% ??? [52] 33.3% ----------------------------------------------------------------------------- reduce-to-single! [39] 100.0% [45] 328(0.2%) 328(0.2%) for-loop ...rbie/develop/src/core/egraph.rkt:319:8 ----------------------------------------------------------------------------- ??? [12] 0.2% for-loop [20] 0.4% loop [36] 4.0% composed [40] 95.3% [46] 130936(92.0%) 324(0.2%) ??? ...htlies/herbie/develop/src/programs.rkt:99:2 ??? [51] 91.0% ??? [52] 8.7% ----------------------------------------------------------------------------- hash-ref! [41] 100.0% [47] 2944(2.1%) 0(0.0%) bigfloat-hash ...h/private/bigfloat/mpfr.rkt:167:0 sig+exp->bigfloat [53] 80.4% bfcanonicalize [57] 19.6% ----------------------------------------------------------------------------- generic-sort/key [42] 100.0% [48] 1454(1.0%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 errors-score [54] 100.0% ----------------------------------------------------------------------------- temp68_2 [43] 100.0% [49] 958(0.7%) 0(0.0%) compile16 (unknown source) temp74_0 [55] 100.0% ----------------------------------------------------------------------------- hash-ref! [41] 100.0% [50] 616(0.4%) 0(0.0%) parse-loop30 ...s/racket/match/compiler.rkt:418:15 map [56] 100.0% ----------------------------------------------------------------------------- ??? [46] 100.0% [51] 119214(83.7%) 0(0.0%) ??? ...t-7.0/collects/racket/private/kw.rkt:592:14 ??? [58] 100.0% ----------------------------------------------------------------------------- ??? [12] 2.2% inductor [44] 2.6% ??? [34] 7.7% ??? [46] 87.6% [52] 13014(9.1%) 360(0.3%) ??? ...tract/private/arrow-higher-order.rkt:357:33 bf [59] 49.3% ->bf [60] 29.5% ->flonum [62] 10.8% sample-multi-bounded [63] 7.7% ----------------------------------------------------------------------------- bigfloat-hash [47] 100.0% [53] 2366(1.7%) 0(0.0%) sig+exp->bigfloat ...ivate/bigfloat/mpfr.rkt:387:0 new-mpfr [94] 100.0% ----------------------------------------------------------------------------- ??? [12] 16.3% copying-mergesort [48] 83.7% [54] 1738(1.2%) 0(0.0%) errors-score ...erbie/develop/src/points.rkt:215:0 loop [61] 100.0% ----------------------------------------------------------------------------- compile16 [49] 100.0% [55] 958(0.7%) 0(0.0%) temp74_0 (unknown source) expand-single [64] 100.0% ----------------------------------------------------------------------------- for-loop [19] 31.4% parse-loop30 [50] 68.6% [56] 898(0.6%) 0(0.0%) map ...t-7.0/collects/racket/private/map.rkt:35:13 hash-ref! [41] 51.4% ??? [65] 31.4% loop [36] 17.1% ----------------------------------------------------------------------------- bigfloat-hash [47] 100.0% [57] 578(0.4%) 578(0.4%) bfcanonicalize .../private/bigfloat/mpfr.rkt:157:0 ----------------------------------------------------------------------------- loop [36] 0.5% ??? [51] 99.5% [58] 119830(84.2%) 288(0.2%) ??? ...tract/private/arrow-higher-order.rkt:361:33 bf-complex-exp [66] 74.3% bf-complex-div [67] 17.8% bf-complex-add [68] 5.1% bf-complex-neg [69] 2.5% ----------------------------------------------------------------------------- ??? [52] 100.0% [59] 6414(4.5%) 300(0.2%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 new-mpfr [94] 89.7% ??? [95] 5.6% ----------------------------------------------------------------------------- ??? [52] 100.0% [60] 3838(2.7%) 300(0.2%) ->bf ...ghtlies/herbie/develop/src/float.rkt:170:0 for-loop [83] 92.2% ----------------------------------------------------------------------------- errors-score [54] 100.0% [61] 1738(1.2%) 0(0.0%) loop .../racket-7.0/collects/racket/list.rkt:559:2 ordinary-value? [70] 100.0% ----------------------------------------------------------------------------- ??? [52] 100.0% [62] 1402(1.0%) 276(0.2%) ->flonum ...ies/herbie/develop/src/float.rkt:149:0 ??? [72] 80.3% ----------------------------------------------------------------------------- ??? [52] 100.0% [63] 1000(0.7%) 598(0.4%) sample-multi-bounded ...evelop/src/points.rkt:15:0 loop [74] 40.2% ----------------------------------------------------------------------------- temp74_0 [55] 100.0% [64] 958(0.7%) 0(0.0%) expand-single (unknown source) expand-capturing-lifts [71] 100.0% ----------------------------------------------------------------------------- map [56] 100.0% [65] 282(0.2%) 0(0.0%) ??? ...htlies/herbie/develop/src/points.rkt:209:26 ulp-difference [73] 100.0% ----------------------------------------------------------------------------- ??? [58] 100.0% [66] 89054(62.6%) 2422(1.7%) bf-complex-exp .../develop/src/bigcomplex.rkt:37:0 ??? [82] 88.0% bf* [75] 8.8% ...higher-order.rkt:361:33 [76] 0.4% ----------------------------------------------------------------------------- ??? [58] 100.0% [67] 21362(15.0%) 356(0.3%) bf-complex-div .../develop/src/bigcomplex.rkt:54:0 bf* [75] 55.1% ??? [82] 38.4% ...higher-order.rkt:361:33 [76] 4.8% ----------------------------------------------------------------------------- ??? [58] 100.0% [68] 6152(4.3%) 602(0.4%) bf-complex-add .../develop/src/bigcomplex.rkt:23:0 ??? [82] 84.6% ...higher-order.rkt:361:33 [76] 5.7% ----------------------------------------------------------------------------- ??? [58] 100.0% [69] 2974(2.1%) 648(0.5%) bf-complex-neg .../develop/src/bigcomplex.rkt:20:0 ??? [82] 66.4% ...higher-order.rkt:361:33 [76] 11.8% ----------------------------------------------------------------------------- loop [61] 100.0% [70] 1738(1.2%) 1454(1.0%) ordinary-value? ...rbie/develop/src/float.rkt:80:0 special-value? [80] 16.3% ----------------------------------------------------------------------------- loop [84] 35.6% expand-single [64] 64.4% [71] 1488(1.0%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [78] 64.4% loop [84] 35.6% ----------------------------------------------------------------------------- ->flonum [62] 100.0% [72] 1126(0.8%) 0(0.0%) ??? ...nightlies/herbie/develop/src/float.rkt:23:2 for-loop [77] 100.0% ----------------------------------------------------------------------------- ??? [12] 49.8% ??? [65] 50.2% [73] 562(0.4%) 280(0.2%) ulp-difference ...erbie/develop/src/float.rkt:46:0 infer-representation [81] 50.2% ----------------------------------------------------------------------------- sample-multi-bounded [63] 100.0% [74] 402(0.3%) 0(0.0%) loop ...ghtlies/herbie/develop/src/points.rkt:42:6 random-exp [79] 100.0% ----------------------------------------------------------------------------- bf-complex-exp [66] 40.0% bf-complex-div [67] 60.0% [75] 19644(13.8%) 360(0.3%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [82] 98.2% ----------------------------------------------------------------------------- bf-complex-add [68] 16.7% bf-complex-neg [69] 16.9% bf-complex-exp [66] 17.1% bf-complex-div [67] 49.3% [76] 2084(1.5%) 710(0.5%) ...higher-order.rkt:361:33 (unknown source) ??? [85] 65.9% ----------------------------------------------------------------------------- ??? [72] 100.0% [77] 1126(0.8%) 564(0.4%) for-loop ...lies/herbie/develop/src/float.rkt:24:5 ??? [90] 25.0% ??? [91] 24.9% ----------------------------------------------------------------------------- expand-capturing-lifts [71] 100.0% [78] 958(0.7%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [86] 63.7% loop [84] 36.3% ----------------------------------------------------------------------------- loop [74] 100.0% [79] 402(0.3%) 402(0.3%) random-exp .../herbie/develop/src/common.rkt:172:0 ----------------------------------------------------------------------------- ordinary-value? [70] 100.0% [80] 284(0.2%) 0(0.0%) special-value? ...erbie/develop/src/float.rkt:76:0 for-loop [83] 100.0% ----------------------------------------------------------------------------- ulp-difference [73] 100.0% [81] 282(0.2%) 282(0.2%) infer-representation ...develop/src/float.rkt:15:0 ----------------------------------------------------------------------------- bf-complex-neg [69] 1.7% bf-complex-add [68] 4.6% bf-complex-div [67] 7.3% bf* [75] 17.1% bf-complex-exp [66] 69.3% [82] 113070(79.4%) 71702(50.4%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfmul [87] 21.9% bfneg [88] 14.6% ----------------------------------------------------------------------------- special-value? [80] 7.4% ->bf [60] 92.6% [83] 3822(2.7%) 2390(1.7%) for-loop ...lies/herbie/develop/src/float.rkt:17:3 return/no-unsupplied [89] 28.4% ??? [91] 9.1% ----------------------------------------------------------------------------- lambda-clause-expander [78] 7.8% loop [84] 11.9% expand-capturing-lifts [71] 11.9% eval-prog [37] 11.9% syntax-e/no-taint [10] 27.8% apply-transformer52 [9] 28.8% [84] 1488(1.0%) 348(0.2%) loop (unknown source) core-form-sym [92] 21.0% gf [93] 20.0% expand-capturing-lifts [71] 11.9% loop [84] 11.9% for-loop [99] 11.9% dispatch-transformer41 [4] 7.8% syntax-e [5] 7.8% ----------------------------------------------------------------------------- ...higher-order.rkt:361:33 [76] 100.0% [85] 1374(1.0%) 712(0.5%) ??? ...cts/racket/contract/private/list.rkt:209:10 ??? [90] 48.2% ----------------------------------------------------------------------------- lambda-clause-expander [78] 21.5% for-loop [99] 78.5% [86] 610(0.4%) 0(0.0%) finish-bodys (unknown source) for-loop [99] 100.0% ----------------------------------------------------------------------------- ??? [82] 100.0% [87] 24814(17.4%) 382(0.3%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:821:4 new-mpfr [94] 78.9% ??? [95] 19.5% ----------------------------------------------------------------------------- ??? [82] 100.0% [88] 16554(11.6%) 0(0.0%) bfneg ...-lib/math/private/bigfloat/mpfr.rkt:618:4 new-mpfr [94] 68.0% ??? [95] 32.0% ----------------------------------------------------------------------------- for-loop [83] 100.0% [89] 1084(0.8%) 1084(0.8%) return/no-unsupplied ...ct/private/arr-i.rkt:534:0 ----------------------------------------------------------------------------- for-loop [77] 29.9% ??? [85] 70.1% [90] 944(0.7%) 944(0.7%) ??? ...ects/racket/contract/private/guts.rkt:746:8 ----------------------------------------------------------------------------- for-loop [77] 44.6% for-loop [83] 55.4% [91] 628(0.4%) 628(0.4%) ??? ...s/racket/contract/private/arr-i.rkt:1252:29 ----------------------------------------------------------------------------- loop [84] 100.0% [92] 312(0.2%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [96] 100.0% ----------------------------------------------------------------------------- loop [84] 100.0% [93] 298(0.2%) 0(0.0%) gf (unknown source) propagation-apply [97] 100.0% ----------------------------------------------------------------------------- sig+exp->bigfloat [53] 6.1% bf [59] 14.8% bfneg [88] 28.9% bfmul [87] 50.3% [94] 38958(27.4%) 38958(27.4%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 ----------------------------------------------------------------------------- bf [59] 3.4% bfmul [87] 46.2% bfneg [88] 50.4% [95] 10508(7.4%) 10508(7.4%) ??? /opt/racket-7.0/collects/ffi/unsafe.rkt:898:4 ----------------------------------------------------------------------------- identifier-binding-symbol30 [13] 36.6% core-form-sym [92] 63.4% [96] 492(0.3%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [98] 100.0% ----------------------------------------------------------------------------- gf [93] 100.0% [97] 298(0.2%) 298(0.2%) propagation-apply (unknown source) ----------------------------------------------------------------------------- resolve+shift28 [96] 100.0% [98] 492(0.3%) 0(0.0%) fallback-loop (unknown source) for-loop [99] 100.0% ----------------------------------------------------------------------------- for-loop [99] 9.4% fallback-loop [98] 9.4% run-module-instance!125 [100] 19.3% loop [84] 19.3% finish-bodys [86] 42.6% [99] 1140(0.8%) 492(0.3%) for-loop (unknown source) finish-bodys [86] 34.7% run-module-instance!125 [100] 19.3% for-loop [99] 9.4% [running body] [101] 7.7% namespace->name [102] 7.6% dispatch-transformer41 [4] 5.5% [running body] [6] 3.9% syntax-e [5] 2.4% ----------------------------------------------------------------------------- for-loop [99] 100.0% [100] 530(0.4%) 0(0.0%) run-module-instance!125 (unknown source) for-loop [99] 100.0% ----------------------------------------------------------------------------- for-loop [99] 100.0% [101] 176(0.1%) 0(0.0%) [running body] ...ollects/syntax/id-table.rkt":##f do-partial-app [103] 100.0% ----------------------------------------------------------------------------- for-loop [99] 100.0% [102] 174(0.1%) 174(0.1%) namespace->name (unknown source) ----------------------------------------------------------------------------- [running body] [101] 100.0% [103] 176(0.1%) 176(0.1%) do-partial-app ...ntract/private/provide.rkt:431:0 -----------------------------------------------------------------------------