Profiling results ----------------- Total cpu time observed: 7190ms (out of 7576ms) Number of samples taken: 35 (once every 205ms) ======================================================================= Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ======================================================================= [1] 7190(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [6] 100.0% ----------------------------------------------------------------------- ??? [85] 100.0% [2] 1226(17.1%) 0(0.0%) approximate9 .../findroot/src/core/taylor.rkt:11:0 loop [7] 68.5% f40 [10] 16.3% for-loop [11] 15.2% ----------------------------------------------------------------------- for-loop [101] 100.0% [3] 216(3.0%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [87] 100.0% ----------------------------------------------------------------------- for-loop [101] 100.0% [4] 208(2.9%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [8] 100.0% ----------------------------------------------------------------------- matcher [84] 100.0% [5] 200(2.8%) 0(0.0%) ??? ...herbie/findroot/src/core/matcher.rkt:131:11 for-loop [9] 100.0% ----------------------------------------------------------------------- ??? [1] 100.0% [6] 7190(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [12] 100.0% ----------------------------------------------------------------------- approximate9 [2] 100.0% [7] 840(11.7%) 0(0.0%) loop ...s/herbie/findroot/src/core/taylor.rkt:86:4 hash-ref! [75] 77.4% ??? [85] 22.6% ----------------------------------------------------------------------- syntax-e [4] 48.4% gf [105] 51.6% [8] 430(6.0%) 0(0.0%) syntax-e/no-taint (unknown source) loop [76] 100.0% ----------------------------------------------------------------------- ??? [5] 100.0% [9] 200(2.8%) 0(0.0%) for-loop ...e/findroot/src/core/matcher.rkt:133:15 hash-ref! [75] 100.0% ----------------------------------------------------------------------- map [16] 50.0% approximate9 [2] 50.0% [10] 200(2.8%) 0(0.0%) f40 (unknown source) map [16] 100.0% ----------------------------------------------------------------------- approximate9 [2] 100.0% [11] 186(2.6%) 0(0.0%) for-loop ...bie/findroot/src/core/taylor.rkt:29:18 taylor [13] 100.0% ----------------------------------------------------------------------- profile-thunk16 [6] 100.0% [12] 7190(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [14] 100.0% ----------------------------------------------------------------------- for-loop [11] 10.5% map [16] 12.2% taylor [13] 33.2% hash-ref! [75] 44.1% [13] 590(8.2%) 0(0.0%) taylor ...erbie/findroot/src/core/taylor.rkt:169:0 taylor-invert [15] 54.6% taylor [13] 33.2% map [16] 12.2% ----------------------------------------------------------------------- for-loop [78] 2.9% run [12] 97.1% [14] 7190(100.0%) 206(2.9%) .../more-scheme.rkt:261:28 (unknown source) run-improve47 [17] 59.4% prepare-points-intervals [18] 30.8% eval-errors [23] 2.8% get-final-combination [22] 2.8% errors [68] 1.4% ??? [85] 1.4% ----------------------------------------------------------------------- taylor [13] 100.0% [15] 590(8.2%) 0(0.0%) taylor-invert ...indroot/src/core/taylor.rkt:317:0 parse-loop74 [19] 63.4% first-nonzero-exp [20] 36.6% ----------------------------------------------------------------------- f40 [10] 48.1% taylor [13] 51.9% [16] 416(5.8%) 0(0.0%) map ...t-7.5/collects/racket/private/map.rkt:35:13 taylor [13] 51.9% f40 [10] 24.0% simplify-node [21] 24.0% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [14] 100.0% [17] 4374(60.8%) 0(0.0%) run-improve47 ...e/findroot/src/mainloop.rkt:346:0 for-loop [24] 95.8% simplify! [37] 4.2% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [14] 100.0% [18] 2212(30.8%) 200(2.8%) prepare-points-intervals ...t/src/points.rkt:120:0 loop [25] 91.0% ----------------------------------------------------------------------- parse-loop74 [19] 12.0% taylor-invert [15] 36.5% hash-ref! [75] 51.6% [19] 1026(14.3%) 0(0.0%) parse-loop74 (unknown source) eval-const-expr [26] 88.0% parse-loop74 [19] 12.0% ----------------------------------------------------------------------- taylor-invert [15] 100.0% [20] 216(3.0%) 0(0.0%) first-nonzero-exp ...oot/src/core/taylor.rkt:265:0 hash-ref! [75] 100.0% ----------------------------------------------------------------------- map [16] 100.0% [21] 200(2.8%) 0(0.0%) simplify-node ...findroot/src/core/reduce.rkt:46:0 gather-additive-terms6 [27] 100.0% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [14] 100.0% [22] 200(2.8%) 0(0.0%) get-final-combination ...ot/src/mainloop.rkt:371:0 infer-splitpoints [28] 100.0% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [14] 100.0% [23] 200(2.8%) 0(0.0%) eval-errors ...erbie/findroot/src/points.rkt:168:0 for-loop [29] 100.0% ----------------------------------------------------------------------- run-improve47 [17] 100.0% [24] 4190(58.3%) 0(0.0%) for-loop ...herbie/findroot/src/mainloop.rkt:365:4 run-iter! [30] 100.0% ----------------------------------------------------------------------- prepare-points-intervals [18] 100.0% [25] 2012(28.0%) 0(0.0%) loop ...tlies/herbie/findroot/src/points.rkt:132:4 loop [31] 80.1% ??? [32] 19.9% ----------------------------------------------------------------------- parse-loop74 [19] 100.0% [26] 1026(14.3%) 186(2.6%) eval-const-expr ...findroot/src/programs.rkt:120:0 temp85_0 [74] 81.9% ----------------------------------------------------------------------- simplify-node [21] 100.0% [27] 200(2.8%) 0(0.0%) gather-additive-terms6 ...src/core/reduce.rkt:68:0 append-map [33] 100.0% ----------------------------------------------------------------------- get-final-combination [22] 100.0% [28] 200(2.8%) 0(0.0%) infer-splitpoints ...oot/src/core/regimes.rkt:33:0 for-loop [34] 100.0% ----------------------------------------------------------------------- eval-errors [23] 100.0% [29] 200(2.8%) 0(0.0%) for-loop ...s/herbie/findroot/src/points.rkt:170:2 ??? [85] 100.0% ----------------------------------------------------------------------- for-loop [24] 100.0% [30] 4190(58.3%) 0(0.0%) run-iter! ...erbie/findroot/src/mainloop.rkt:327:0 finalize-iter! [35] 45.3% gen-series! [36] 34.1% simplify! [37] 15.9% gen-rewrites! [43] 4.8% ----------------------------------------------------------------------- loop [25] 100.0% [31] 1612(22.4%) 200(2.8%) loop ...htlies/herbie/findroot/src/points.rkt:79:2 ??? [85] 49.8% ??? [38] 25.2% real->precision [40] 12.7% ----------------------------------------------------------------------- loop [25] 100.0% [32] 400(5.6%) 0(0.0%) ??? ...htlies/herbie/findroot/src/points.rkt:113:6 sample-multi-bounded [39] 100.0% ----------------------------------------------------------------------- gather-additive-terms6 [27] 100.0% [33] 200(2.8%) 0(0.0%) append-map ...t-7.5/collects/racket/list.rkt:586:2 parse-loop389 [41] 100.0% ----------------------------------------------------------------------- infer-splitpoints [28] 100.0% [34] 200(2.8%) 0(0.0%) for-loop ...bie/findroot/src/core/regimes.rkt:45:6 option-on-expr [42] 100.0% ----------------------------------------------------------------------- run-iter! [30] 100.0% [35] 1896(26.4%) 0(0.0%) finalize-iter! .../findroot/src/mainloop.rkt:278:0 ??? [44] 100.0% ----------------------------------------------------------------------- run-iter! [30] 100.0% [36] 1428(19.9%) 0(0.0%) gen-series! ...bie/findroot/src/mainloop.rkt:160:0 for-loop [45] 100.0% ----------------------------------------------------------------------- run-improve47 [17] 21.6% run-iter! [30] 78.4% [37] 850(11.8%) 0(0.0%) simplify! ...erbie/findroot/src/mainloop.rkt:224:0 ??? [46] 100.0% ----------------------------------------------------------------------- loop [31] 100.0% [38] 406(5.6%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:379:33 ival-sub [48] 50.7% ival-add [49] 49.3% ----------------------------------------------------------------------- ??? [32] 100.0% [39] 400(5.6%) 0(0.0%) sample-multi-bounded ...ndroot/src/points.rkt:14:0 random-ranges [47] 100.0% ----------------------------------------------------------------------- loop [31] 100.0% [40] 204(2.8%) 0(0.0%) real->precision ...findroot/src/programs.rkt:94:11 ??? [85] 100.0% ----------------------------------------------------------------------- append-map [33] 100.0% [41] 200(2.8%) 0(0.0%) parse-loop389 (unknown source) for-loop [50] 100.0% ----------------------------------------------------------------------- for-loop [34] 100.0% [42] 200(2.8%) 0(0.0%) option-on-expr ...droot/src/core/regimes.rkt:124:0 err-lsts->split-indices [51] 100.0% ----------------------------------------------------------------------- run-iter! [30] 100.0% [43] 200(2.8%) 0(0.0%) gen-rewrites! ...e/findroot/src/mainloop.rkt:183:0 for-loop [52] 100.0% ----------------------------------------------------------------------- finalize-iter! [35] 100.0% [44] 1896(26.4%) 0(0.0%) ??? ...contract/private/arrow-val-first.rkt:486:18 for-loop [53] 100.0% ----------------------------------------------------------------------- gen-series! [36] 100.0% [45] 1428(19.9%) 0(0.0%) for-loop ...herbie/findroot/src/mainloop.rkt:167:7 taylor-alt [54] 85.9% ??? [85] 14.1% ----------------------------------------------------------------------- simplify! [37] 100.0% [46] 850(11.8%) 0(0.0%) ??? .../herbie/findroot/src/core/simplify.rkt:42:0 egraph-run [55] 100.0% ----------------------------------------------------------------------- sample-multi-bounded [39] 100.0% [47] 400(5.6%) 0(0.0%) random-ranges ...bie/findroot/src/common.rkt:164:0 cons/c [56] 50.0% build--> [57] 50.0% ----------------------------------------------------------------------- ??? [38] 100.0% [48] 206(2.9%) 0(0.0%) ival-sub ...bie/findroot/src/biginterval.rkt:117:0 bfmul [96] 100.0% ----------------------------------------------------------------------- ??? [38] 100.0% [49] 200(2.8%) 0(0.0%) ival-add ...bie/findroot/src/biginterval.rkt:111:0 bfmul [96] 100.0% ----------------------------------------------------------------------- parse-loop389 [41] 100.0% [50] 200(2.8%) 0(0.0%) for-loop ...bie/findroot/src/core/reduce.rkt:95:13 make-multiplication-node [58] 100.0% ----------------------------------------------------------------------- option-on-expr [42] 100.0% [51] 200(2.8%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:263:0 loop [59] 100.0% ----------------------------------------------------------------------- gen-rewrites! [43] 100.0% [52] 200(2.8%) 0(0.0%) for-loop ...erbie/findroot/src/mainloop.rkt:191:11 rewrite-expression-head24 [60] 100.0% ----------------------------------------------------------------------- ??? [44] 100.0% [53] 1896(26.4%) 0(0.0%) for-loop ...e/findroot/src/core/alt-table.rkt:46:2 atab-add-altn [61] 67.5% for-loop [70] 11.4% errors [68] 10.5% override-at-pnts [66] 10.5% ----------------------------------------------------------------------- for-loop [45] 100.0% [54] 1226(17.1%) 0(0.0%) taylor-alt ...rbie/findroot/src/mainloop.rkt:146:0 for-loop [62] 100.0% ----------------------------------------------------------------------- ??? [46] 100.0% [55] 850(11.8%) 0(0.0%) egraph-run .../pkgs/egg-herbie-linux/main.rkt:49:0 egraph-add-exprs [63] 100.0% ----------------------------------------------------------------------- random-ranges [47] 100.0% [56] 200(2.8%) 200(2.8%) cons/c .../racket/contract/private/guts.rkt:500:15 ----------------------------------------------------------------------- random-ranges [47] 100.0% [57] 200(2.8%) 200(2.8%) build--> ...act/private/arrow-val-first.rkt:1214:0 ----------------------------------------------------------------------- for-loop [50] 100.0% [58] 200(2.8%) 0(0.0%) make-multiplication-node .../core/reduce.rkt:232:0 make-multiplication-subnode [64] 100.0% ----------------------------------------------------------------------- err-lsts->split-indices [51] 100.0% [59] 200(2.8%) 0(0.0%) loop ...herbie/findroot/src/core/regimes.rkt:314:4 for-loop [65] 100.0% ----------------------------------------------------------------------- for-loop [52] 100.0% [60] 200(2.8%) 0(0.0%) rewrite-expression-head24 ...core/matcher.rkt:85:0 rewriter [67] 100.0% ----------------------------------------------------------------------- for-loop [53] 100.0% [61] 1280(17.8%) 0(0.0%) atab-add-altn ...root/src/core/alt-table.rkt:194:0 errors [68] 82.5% for-loop [70] 17.5% ----------------------------------------------------------------------- taylor-alt [54] 100.0% [62] 1226(17.1%) 0(0.0%) for-loop ...herbie/findroot/src/mainloop.rkt:152:6 ??? [85] 100.0% ----------------------------------------------------------------------- egraph-run [55] 100.0% [63] 850(11.8%) 0(0.0%) egraph-add-exprs ...gg-herbie-linux/main.rkt:111:0 ??? [69] 100.0% ----------------------------------------------------------------------- make-multiplication-node [58] 100.0% [64] 200(2.8%) 200(2.8%) make-multiplication-subnode ...re/reduce.rkt:242:0 ----------------------------------------------------------------------- loop [59] 100.0% [65] 200(2.8%) 0(0.0%) for-loop ...ie/findroot/src/core/regimes.rkt:279:4 for-loop [71] 100.0% ----------------------------------------------------------------------- for-loop [53] 100.0% [66] 200(2.8%) 0(0.0%) override-at-pnts ...t/src/core/alt-table.rkt:129:0 for-loop [72] 100.0% ----------------------------------------------------------------------- rewrite-expression-head24 [60] 33.3% matcher [84] 66.7% [67] 200(2.8%) 200(2.8%) rewriter ...bie/findroot/src/core/matcher.rkt:87:2 for-loop [73] 66.7% ----------------------------------------------------------------------- for-loop [53] 13.7% .../more-scheme.rkt:261:28 [14] 14.0% atab-add-altn [61] 72.3% [68] 1460(20.3%) 0(0.0%) errors ...ies/herbie/findroot/src/points.rkt:190:0 for-loop [78] 56.8% temp85_0 [74] 27.9% loop [76] 15.2% ----------------------------------------------------------------------- egraph-add-exprs [63] 100.0% [69] 850(11.8%) 0(0.0%) ??? ...herbie/findroot/src/core/simplify.rkt:102:6 for-loop [77] 100.0% ----------------------------------------------------------------------- for-loop [53] 49.1% atab-add-altn [61] 50.9% [70] 440(6.1%) 440(6.1%) for-loop .../findroot/src/core/alt-table.rkt:110:2 ----------------------------------------------------------------------- for-loop [65] 100.0% [71] 200(2.8%) 200(2.8%) for-loop ...ie/findroot/src/core/regimes.rkt:283:8 ----------------------------------------------------------------------- override-at-pnts [66] 100.0% [72] 200(2.8%) 200(2.8%) for-loop ...findroot/src/core/alt-table.rkt:130:22 ----------------------------------------------------------------------- rewriter [67] 100.0% [73] 200(2.8%) 0(0.0%) for-loop ...bie/findroot/src/core/matcher.rkt:89:4 hash-ref! [75] 100.0% ----------------------------------------------------------------------- errors [68] 32.7% eval-const-expr [26] 67.3% [74] 1248(17.4%) 0(0.0%) temp85_0 (unknown source) compile15 [79] 100.0% ----------------------------------------------------------------------- first-nonzero-exp [20] 5.2% for-loop [9] 9.6% for-loop [73] 9.6% ??? [80] 11.2% ??? [81] 17.0% loop [7] 19.1% ??? [85] 28.2% [75] 1040(14.5%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [80] 30.3% parse-loop74 [19] 22.2% matcher [84] 19.2% ??? [81] 17.0% taylor [13] 11.2% ----------------------------------------------------------------------- errors [68] 12.8% for-loop [101] 21.9% apply-transformer52 [103] 28.4% syntax-e/no-taint [8] 36.8% [76] 866(12.0%) 0(0.0%) loop (unknown source) gf [105] 36.8% core-form-sym [83] 28.4% expand-id-application-form17 [82] 21.9% expand-capturing-lifts [95] 12.8% ----------------------------------------------------------------------- ??? [69] 100.0% [77] 850(11.8%) 850(11.8%) for-loop ...e/findroot/src/core/simplify.rkt:121:2 ----------------------------------------------------------------------- errors [68] 100.0% [78] 830(11.5%) 420(5.8%) for-loop ...s/herbie/findroot/src/points.rkt:192:2 .../more-scheme.rkt:261:28 [14] 49.4% ----------------------------------------------------------------------- temp85_0 [74] 100.0% [79] 1248(17.4%) 0(0.0%) compile15 (unknown source) temp91_0 [86] 100.0% ----------------------------------------------------------------------- hash-ref! [75] 100.0% [80] 650(9.0%) 0(0.0%) ??? ...s/herbie/findroot/src/core/taylor.rkt:67:15 ??? [85] 68.9% hash-ref! [75] 31.1% ----------------------------------------------------------------------- hash-ref! [75] 100.0% [81] 436(6.1%) 0(0.0%) ??? ...s/herbie/findroot/src/core/taylor.rkt:44:15 hash-ref! [75] 100.0% ----------------------------------------------------------------------- loop [76] 48.7% for-loop [101] 51.3% [82] 390(5.4%) 0(0.0%) expand-id-application-form17 (unknown source) binding-lookup52 [88] 51.3% resolve+shift28 [87] 48.7% ----------------------------------------------------------------------- loop [76] 100.0% [83] 246(3.4%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [87] 100.0% ----------------------------------------------------------------------- hash-ref! [75] 100.0% [84] 200(2.8%) 0(0.0%) matcher ...bie/findroot/src/core/matcher.rkt:119:2 ??? [5] 50.0% rewriter [67] 50.0% ----------------------------------------------------------------------- loop [7] 2.2% for-loop [29] 7.0% for-loop [45] 7.1% real->precision [40] 7.2% .../more-scheme.rkt:261:28 [14] 7.2% ??? [80] 7.6% location-do [90] 16.7% for-loop [62] 16.7% loop [31] 28.3% [85] 2838(39.5%) 606(8.4%) ??? ...tract/private/arrow-higher-order.rkt:375:33 ival-mult [91] 21.2% location-do [90] 16.7% approximate9 [2] 16.7% hash-ref! [75] 9.9% bf [92] 7.2% ival-div [93] 7.0% ----------------------------------------------------------------------- compile15 [79] 100.0% [86] 1248(17.4%) 0(0.0%) temp91_0 (unknown source) temp118_0 [89] 100.0% ----------------------------------------------------------------------- expand-id-application-form17 [82] 29.1% expand-implicit [3] 33.1% core-form-sym [83] 37.7% [87] 652(9.1%) 462(6.4%) resolve+shift28 (unknown source) fallback-loop [94] 29.1% ----------------------------------------------------------------------- expand-id-application-form17 [82]100.0% [88] 200(2.8%) 200(2.8%) binding-lookup52 (unknown source) ----------------------------------------------------------------------- temp91_0 [86] 100.0% [89] 1248(17.4%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [95] 100.0% ----------------------------------------------------------------------- location-do [90] 40.5% ??? [85] 59.5% [90] 1226(17.1%) 0(0.0%) location-do ...rbie/findroot/src/programs.rkt:63:0 ??? [85] 59.5% location-do [90] 40.5% ----------------------------------------------------------------------- ??? [85] 100.0% [91] 602(8.4%) 202(2.8%) ival-mult ...ie/findroot/src/biginterval.rkt:129:0 bfmul [96] 66.4% ----------------------------------------------------------------------- ??? [85] 100.0% [92] 204(2.8%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:615:2 new-mpfr [97] 100.0% ----------------------------------------------------------------------- ??? [85] 100.0% [93] 200(2.8%) 200(2.8%) ival-div ...bie/findroot/src/biginterval.rkt:149:0 ----------------------------------------------------------------------- resolve+shift28 [87] 100.0% [94] 190(2.6%) 0(0.0%) fallback-loop (unknown source) for-loop [101] 100.0% ----------------------------------------------------------------------- loop [76] 15.1% temp118_0 [89] 84.9% [95] 1470(20.4%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [98] 84.9% dispatch-transformer41 [102] 15.1% ----------------------------------------------------------------------- ival-add [49] 24.8% ival-sub [48] 25.6% ival-mult [91] 49.6% [96] 806(11.2%) 0(0.0%) bfmul ...-lib/math/private/bigfloat/mpfr.rkt:835:4 ??? [99] 100.0% ----------------------------------------------------------------------- bf [92] 100.0% [97] 204(2.8%) 204(2.8%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:348:0 ----------------------------------------------------------------------- expand-capturing-lifts [95] 100.0% [98] 1248(17.4%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [100] 100.0% ----------------------------------------------------------------------- bfmul [96] 100.0% [99] 806(11.2%) 806(11.2%) ??? /opt/racket-7.5/collects/ffi/unsafe.rkt:938:4 ----------------------------------------------------------------------- lambda-clause-expander [98] 38.5% for-loop [101] 61.5% [100] 1248(17.4%) 0(0.0%) finish-bodys (unknown source) for-loop [101] 100.0% ----------------------------------------------------------------------- fallback-loop [94] 1.9% for-loop [101] 31.8% finish-bodys [100] 66.3% [101] 1248(17.4%) 190(2.6%) for-loop (unknown source) finish-bodys [100] 42.0% for-loop [101] 31.8% dispatch-transformer41 [102] 11.6% expand-id-application-form17 [82] 5.3% expand-implicit [3] 4.3% loop [76] 1.9% syntax-e [4] 1.2% ----------------------------------------------------------------------- expand-capturing-lifts [95] 33.8% for-loop [101] 66.2% [102] 656(9.1%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [103] 100.0% ----------------------------------------------------------------------- dispatch-transformer41 [102] 100.0% [103] 656(9.1%) 188(2.6%) apply-transformer52 (unknown source) loop [76] 37.5% apply-post-expansion [104] 33.8% ----------------------------------------------------------------------- apply-transformer52 [103] 100.0% [104] 222(3.1%) 0(0.0%) apply-post-expansion (unknown source) gf [105] 100.0% ----------------------------------------------------------------------- apply-post-expansion [104] 25.8% loop [76] 74.2% [105] 430(6.0%) 0(0.0%) gf (unknown source) propagation-apply [107] 48.4% syntax-e/no-taint [8] 25.8% cache-or-reuse-hash [106] 25.8% ----------------------------------------------------------------------- gf [105] 100.0% [106] 222(3.1%) 222(3.1%) cache-or-reuse-hash (unknown source) ----------------------------------------------------------------------- gf [105] 100.0% [107] 208(2.9%) 208(2.9%) propagation-apply (unknown source) -----------------------------------------------------------------------