Profiling results ----------------- Total cpu time observed: 8932ms (out of 9056ms) Number of samples taken: 40 (once every 223ms) (Hiding functions with self<1.0% and local<2.0%: 1 of 110 hidden) ======================================================================= Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ======================================================================= [1] 8932(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [10] 100.0% ----------------------------------------------------------------------- ??? [66] 100.0% [2] 1746(19.5%) 0(0.0%) approximate9 ...better-rr/src/core/taylor.rkt:11:0 loop [11] 88.5% taylor [16] 11.5% ----------------------------------------------------------------------- hash-ref! [72] 100.0% [3] 628(7.0%) 0(0.0%) ??? ...herbie/better-rr/src/core/taylor.rkt:300:23 for-loop [12] 100.0% ----------------------------------------------------------------------- hash-ref! [72] 100.0% [4] 406(4.5%) 0(0.0%) ??? ...herbie/better-rr/src/core/taylor.rkt:406:23 for-loop [13] 100.0% ----------------------------------------------------------------------- hash-ref! [72] 100.0% [5] 222(2.5%) 0(0.0%) f61 (unknown source) eval-const-expr [84] 100.0% ----------------------------------------------------------------------- hash-ref! [72] 100.0% [6] 222(2.5%) 0(0.0%) ??? ...herbie/better-rr/src/core/taylor.rkt:290:26 for-loop [14] 100.0% ----------------------------------------------------------------------- map [80] 100.0% [7] 204(2.3%) 0(0.0%) parse-loop49 (unknown source) loop [102] 100.0% ----------------------------------------------------------------------- loop [102] 100.0% [8] 200(2.2%) 0(0.0%) expand-id-application-form17 (unknown source) syntax-e/no-taint [15] 100.0% ----------------------------------------------------------------------- map [80] 100.0% [9] 200(2.2%) 0(0.0%) simplify* ...ie/better-rr/src/core/reduce.rkt:28:0 hash-ref! [72] 100.0% ----------------------------------------------------------------------- ??? [1] 100.0% [10] 8932(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [17] 100.0% ----------------------------------------------------------------------- approximate9 [2] 100.0% [11] 1546(17.3%) 0(0.0%) loop .../herbie/better-rr/src/core/taylor.rkt:86:4 ??? [66] 100.0% ----------------------------------------------------------------------- ??? [3] 100.0% [12] 628(7.0%) 0(0.0%) for-loop ...e/better-rr/src/core/taylor.rkt:303:27 hash-ref! [72] 100.0% ----------------------------------------------------------------------- ??? [4] 100.0% [13] 406(4.5%) 0(0.0%) for-loop ...e/better-rr/src/core/taylor.rkt:410:33 for-loop [19] 50.2% hash-ref! [72] 49.8% ----------------------------------------------------------------------- ??? [6] 100.0% [14] 222(2.5%) 0(0.0%) for-loop ...e/better-rr/src/core/taylor.rkt:290:52 ??? [18] 100.0% ----------------------------------------------------------------------- expand-id-application-form17 [8]100.0% [15] 200(2.2%) 0(0.0%) syntax-e/no-taint (unknown source) loop [102] 100.0% ----------------------------------------------------------------------- approximate9 [2] 33.3% taylor [16] 66.7% [16] 200(2.2%) 0(0.0%) taylor ...rbie/better-rr/src/core/taylor.rkt:169:0 taylor [16] 66.7% taylor-log [20] 33.3% ----------------------------------------------------------------------- profile-thunk16 [10] 100.0% [17] 8932(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [21] 100.0% ----------------------------------------------------------------------- for-loop [14] 100.0% [18] 222(2.5%) 0(0.0%) ??? ...herbie/better-rr/src/core/taylor.rkt:293:19 hash-ref! [72] 100.0% ----------------------------------------------------------------------- for-loop [13] 100.0% [19] 204(2.3%) 0(0.0%) for-loop ...e/better-rr/src/core/taylor.rkt:412:39 hash-ref! [72] 100.0% ----------------------------------------------------------------------- taylor [16] 100.0% [20] 200(2.2%) 0(0.0%) taylor-log .../better-rr/src/core/taylor.rkt:502:0 f40 [77] 100.0% ----------------------------------------------------------------------- for-loop [30] 1.1% for-loop [68] 2.3% run [17] 96.6% [21] 8932(100.0%) 0(0.0%) .../more-scheme.rkt:261:28 (unknown source) run-improve47 [22] 44.2% prepare-points-intervals [23] 34.8% oracle-error [24] 11.5% errors [25] 6.1% composed [26] 2.3% ??? [106] 1.1% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [21] 100.0% [22] 4148(46.4%) 0(0.0%) run-improve47 .../better-rr/src/mainloop.rkt:364:0 for-loop [27] 100.0% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [21] 100.0% [23] 3110(34.8%) 0(0.0%) prepare-points-intervals ...r/src/points.rkt:122:0 loop [28] 100.0% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [21] 100.0% [24] 1026(11.5%) 0(0.0%) oracle-error ...bie/better-rr/src/points.rkt:179:0 for-loop [29] 100.0% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [21] 100.0% [25] 648(7.3%) 0(0.0%) errors ...es/herbie/better-rr/src/points.rkt:192:0 for-loop [30] 100.0% ----------------------------------------------------------------------- .../more-scheme.rkt:261:28 [21] 100.0% [26] 408(4.6%) 208(2.3%) composed ...ollects/racket/private/list.rkt:321:16 ??? [106] 49.0% ----------------------------------------------------------------------- run-improve47 [22] 100.0% [27] 4148(46.4%) 0(0.0%) for-loop ...erbie/better-rr/src/mainloop.rkt:383:4 run-iter! [31] 100.0% ----------------------------------------------------------------------- prepare-points-intervals [23] 100.0% [28] 3110(34.8%) 0(0.0%) loop ...lies/herbie/better-rr/src/points.rkt:134:4 loop [32] 85.3% ??? [33] 14.7% ----------------------------------------------------------------------- oracle-error [24] 100.0% [29] 1026(11.5%) 0(0.0%) for-loop .../herbie/better-rr/src/points.rkt:180:2 loop [102] 58.9% map [80] 41.1% ----------------------------------------------------------------------- errors [25] 100.0% [30] 648(7.3%) 448(5.0%) for-loop .../herbie/better-rr/src/points.rkt:194:2 .../more-scheme.rkt:261:28 [21] 30.9% ----------------------------------------------------------------------- for-loop [27] 100.0% [31] 4148(46.4%) 0(0.0%) run-iter! ...rbie/better-rr/src/mainloop.rkt:345:0 gen-series! [35] 42.1% simplify! [36] 28.8% finalize-iter! [37] 19.5% localize! [39] 4.8% gen-rewrites! [40] 4.8% ----------------------------------------------------------------------- loop [28] 100.0% [32] 2654(29.7%) 0(0.0%) loop ...tlies/herbie/better-rr/src/points.rkt:79:2 ??? [34] 100.0% ----------------------------------------------------------------------- loop [28] 100.0% [33] 456(5.1%) 0(0.0%) ??? ...tlies/herbie/better-rr/src/points.rkt:115:6 sample-multi-bounded [38] 100.0% ----------------------------------------------------------------------- loop [32] 100.0% [34] 2654(29.7%) 966(10.8%) ??? ...tract/private/arrow-higher-order.rkt:379:33 ival-atan [43] 36.2% ival-add [45] 18.3% ival-sub [46] 9.1% ----------------------------------------------------------------------- run-iter! [31] 100.0% [35] 1746(19.5%) 0(0.0%) gen-series! ...ie/better-rr/src/mainloop.rkt:159:0 for-loop [41] 100.0% ----------------------------------------------------------------------- run-iter! [31] 100.0% [36] 1194(13.4%) 0(0.0%) simplify! ...rbie/better-rr/src/mainloop.rkt:223:0 ??? [42] 100.0% ----------------------------------------------------------------------- run-iter! [31] 100.0% [37] 808(9.0%) 0(0.0%) finalize-iter! ...better-rr/src/mainloop.rkt:277:0 ??? [44] 100.0% ----------------------------------------------------------------------- ??? [33] 100.0% [38] 456(5.1%) 0(0.0%) sample-multi-bounded ...ter-rr/src/points.rkt:14:0 for-loop [47] 52.6% random-ranges [48] 47.4% ----------------------------------------------------------------------- run-iter! [31] 100.0% [39] 200(2.2%) 0(0.0%) localize! ...rbie/better-rr/src/mainloop.rkt:126:0 localize-error [49] 100.0% ----------------------------------------------------------------------- run-iter! [31] 100.0% [40] 200(2.2%) 0(0.0%) gen-rewrites! .../better-rr/src/mainloop.rkt:182:0 for-loop [50] 100.0% ----------------------------------------------------------------------- gen-series! [35] 100.0% [41] 1746(19.5%) 0(0.0%) for-loop ...erbie/better-rr/src/mainloop.rkt:166:7 taylor-alt [51] 100.0% ----------------------------------------------------------------------- simplify! [36] 100.0% [42] 1194(13.4%) 0(0.0%) ??? ...herbie/better-rr/src/core/simplify.rkt:42:0 egraph-run [52] 100.0% ----------------------------------------------------------------------- ??? [34] 100.0% [43] 960(10.7%) 720(8.1%) ival-atan ...e/better-rr/src/biginterval.rkt:330:0 bfatan [56] 25.0% ----------------------------------------------------------------------- finalize-iter! [37] 100.0% [44] 808(9.0%) 0(0.0%) ??? ...contract/private/arrow-val-first.rkt:486:18 atab-add-altns [54] 50.5% for-loop [55] 49.5% ----------------------------------------------------------------------- ??? [34] 100.0% [45] 486(5.4%) 0(0.0%) ival-add ...ie/better-rr/src/biginterval.rkt:111:0 bfadd [53] 100.0% ----------------------------------------------------------------------- ??? [34] 100.0% [46] 242(2.7%) 242(2.7%) ival-sub ...ie/better-rr/src/biginterval.rkt:117:0 ----------------------------------------------------------------------- sample-multi-bounded [38] 100.0% [47] 240(2.7%) 240(2.7%) for-loop ...s/herbie/better-rr/src/points.rkt:20:4 ----------------------------------------------------------------------- sample-multi-bounded [38] 100.0% [48] 216(2.4%) 0(0.0%) random-ranges ...ie/better-rr/src/common.rkt:164:0 cons/c [57] 100.0% ----------------------------------------------------------------------- localize! [39] 100.0% [49] 200(2.2%) 0(0.0%) localize-error ...er-rr/src/core/localize.rkt:57:0 hash-ref! [72] 100.0% ----------------------------------------------------------------------- gen-rewrites! [40] 100.0% [50] 200(2.2%) 0(0.0%) for-loop ...rbie/better-rr/src/mainloop.rkt:190:11 rewrite-expression-head23 [58] 100.0% ----------------------------------------------------------------------- for-loop [41] 100.0% [51] 1746(19.5%) 0(0.0%) taylor-alt ...bie/better-rr/src/mainloop.rkt:145:0 for-loop [59] 100.0% ----------------------------------------------------------------------- ??? [42] 100.0% [52] 1194(13.4%) 0(0.0%) egraph-run .../pkgs/egg-herbie-linux/main.rkt:49:0 egraph-add-exprs [60] 100.0% ----------------------------------------------------------------------- ival-add [45] 100.0% [53] 486(5.4%) 0(0.0%) bfadd ...-lib/math/private/bigfloat/mpfr.rkt:835:4 ??? [61] 100.0% ----------------------------------------------------------------------- ??? [44] 100.0% [54] 408(4.6%) 0(0.0%) atab-add-altns ...-rr/src/core/alt-table.rkt:185:0 batch-errors [62] 100.0% ----------------------------------------------------------------------- ??? [44] 100.0% [55] 400(4.5%) 0(0.0%) for-loop ...better-rr/src/core/alt-table.rkt:198:4 loop [63] 100.0% ----------------------------------------------------------------------- ival-atan [43] 100.0% [56] 240(2.7%) 0(0.0%) bfatan ...lib/math/private/bigfloat/mpfr.rkt:632:4 ??? [61] 100.0% ----------------------------------------------------------------------- random-ranges [48] 100.0% [57] 216(2.4%) 0(0.0%) cons/c .../racket/contract/private/guts.rkt:500:15 coerce-contract [64] 100.0% ----------------------------------------------------------------------- for-loop [50] 100.0% [58] 200(2.2%) 0(0.0%) rewrite-expression-head23 ...core/matcher.rkt:83:0 rewriter [65] 100.0% ----------------------------------------------------------------------- taylor-alt [51] 100.0% [59] 1746(19.5%) 0(0.0%) for-loop ...erbie/better-rr/src/mainloop.rkt:151:6 ??? [66] 100.0% ----------------------------------------------------------------------- egraph-run [52] 100.0% [60] 1194(13.4%) 0(0.0%) egraph-add-exprs ...gg-herbie-linux/main.rkt:111:0 ??? [67] 100.0% ----------------------------------------------------------------------- bfatan [56] 33.1% bfadd [53] 66.9% [61] 726(8.1%) 726(8.1%) ??? /opt/racket-7.5/collects/ffi/unsafe.rkt:938:4 ----------------------------------------------------------------------- atab-add-altns [54] 100.0% [62] 408(4.6%) 0(0.0%) batch-errors ...bie/better-rr/src/points.rkt:198:0 for-loop [68] 100.0% ----------------------------------------------------------------------- for-loop [55] 100.0% [63] 400(4.5%) 0(0.0%) loop ...bie/better-rr/src/core/alt-table.rkt:159:2 loop [70] 50.0% map [80] 50.0% ----------------------------------------------------------------------- cons/c [57] 100.0% [64] 216(2.4%) 0(0.0%) coerce-contract ...contract/private/guts.rkt:307:0 coerce-contract/f [69] 100.0% ----------------------------------------------------------------------- rewrite-expression-head23 [58] 100.0% [65] 200(2.2%) 0(0.0%) rewriter ...ie/better-rr/src/core/matcher.rkt:85:2 for-loop [71] 100.0% ----------------------------------------------------------------------- loop [11] 29.5% location-do [73] 35.2% for-loop [59] 35.2% [66] 1746(19.5%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:375:33 location-do [73] 35.2% approximate9 [2] 35.2% hash-ref! [72] 29.5% ----------------------------------------------------------------------- egraph-add-exprs [60] 100.0% [67] 1194(13.4%) 0(0.0%) ??? ...erbie/better-rr/src/core/simplify.rkt:103:6 for-loop [74] 100.0% ----------------------------------------------------------------------- batch-errors [62] 100.0% [68] 408(4.6%) 0(0.0%) for-loop .../herbie/better-rr/src/points.rkt:200:2 .../more-scheme.rkt:261:28 [21] 100.0% ----------------------------------------------------------------------- coerce-contract [64] 100.0% [69] 216(2.4%) 0(0.0%) coerce-contract/f ...ntract/private/guts.rkt:372:0 coerce-simple-value [75] 100.0% ----------------------------------------------------------------------- loop [63] 20.0% loop [70] 80.0% [70] 200(2.2%) 200(2.2%) loop ...racket-7.5/collects/racket/list.rkt:434:28 loop [70] 80.0% ----------------------------------------------------------------------- rewriter [65] 100.0% [71] 200(2.2%) 0(0.0%) for-loop ...ie/better-rr/src/core/matcher.rkt:87:4 hash-ref! [72] 100.0% ----------------------------------------------------------------------- localize-error [49] 1.3% ??? [18] 2.1% ??? [78] 2.1% for-loop [13] 2.4% for-loop [19] 2.4% for-loop [12] 6.8% map [80] 8.0% for-loop [71] 9.3% simplify* [9] 9.3% ??? [76] 28.2% ??? [66] 28.2% [72] 2146(24.0%) 400(4.5%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [76] 28.2% f40 [77] 26.1% parse-loop15 [79] 8.0% ??? [3] 6.8% ??? [4] 4.7% ??? [78] 2.1% ??? [6] 2.1% f61 [5] 2.1% ----------------------------------------------------------------------- ??? [66] 34.5% location-do [73] 65.5% [73] 1746(19.5%) 0(0.0%) location-do ...bie/better-rr/src/programs.rkt:86:0 location-do [73] 65.5% ??? [66] 34.5% ----------------------------------------------------------------------- ??? [67] 100.0% [74] 1194(13.4%) 1194(13.4%) for-loop .../better-rr/src/core/simplify.rkt:121:2 ----------------------------------------------------------------------- coerce-contract/f [69] 100.0% [75] 216(2.4%) 216(2.4%) coerce-simple-value ...ract/private/guts.rkt:385:0 ----------------------------------------------------------------------- hash-ref! [72] 100.0% [76] 1546(17.3%) 0(0.0%) ??? .../herbie/better-rr/src/core/taylor.rkt:44:15 hash-ref! [72] 100.0% ----------------------------------------------------------------------- loop [102] 1.7% taylor-log [20] 3.3% map [80] 29.8% hash-ref! [72] 65.2% [77] 1524(17.1%) 0(0.0%) f40 (unknown source) map [80] 100.0% ----------------------------------------------------------------------- hash-ref! [72] 100.0% [78] 222(2.5%) 0(0.0%) ??? ...herbie/better-rr/src/core/taylor.rkt:343:33 hash-ref! [72] 100.0% ----------------------------------------------------------------------- hash-ref! [72] 100.0% [79] 200(2.2%) 0(0.0%) parse-loop15 (unknown source) map [80] 100.0% ----------------------------------------------------------------------- parse-loop15 [79] 8.5% loop [63] 8.5% for-loop [29] 18.0% f40 [77] 65.0% [80] 2346(26.3%) 0(0.0%) map ...t-7.5/collects/racket/private/map.rkt:35:13 parse-loop74 [81] 41.3% f40 [77] 19.4% ??? [104] 18.0% loop [83] 8.5% hash-ref! [72] 8.5% simplify* [9] 2.1% parse-loop49 [7] 1.1% ??? [82] 1.1% ----------------------------------------------------------------------- map [80] 100.0% [81] 1120(12.5%) 520(5.8%) parse-loop74 (unknown source) eval-const-expr [84] 53.6% ----------------------------------------------------------------------- map [80] 100.0% [82] 204(2.3%) 0(0.0%) ??? ...s/herbie/better-rr/src/core/reduce.rkt:56:5 for-loop [85] 100.0% ----------------------------------------------------------------------- map [80] 2.1% loop [83] 97.9% [83] 200(2.2%) 0(0.0%) loop ...-7.5/collects/racket/private/map.rkt:40:19 loop [83] 97.9% ??? [86] 2.1% ----------------------------------------------------------------------- f61 [5] 27.0% parse-loop74 [81] 73.0% [84] 822(9.2%) 0(0.0%) eval-const-expr ...etter-rr/src/programs.rkt:150:0 temp85_0 [87] 75.9% eval [89] 24.1% ----------------------------------------------------------------------- ??? [82] 100.0% [85] 204(2.3%) 0(0.0%) for-loop ...bie/better-rr/src/core/reduce.rkt:57:7 pattern-match [88] 100.0% ----------------------------------------------------------------------- loop [83] 100.0% [86] 200(2.2%) 200(2.2%) ??? ...bie/better-rr/src/core/alt-table.rkt:176:12 ----------------------------------------------------------------------- eval-const-expr [84] 100.0% [87] 624(7.0%) 0(0.0%) temp85_0 (unknown source) compile15 [90] 100.0% ----------------------------------------------------------------------- for-loop [85] 100.0% [88] 204(2.3%) 0(0.0%) pattern-match ...tter-rr/src/core/matcher.rkt:29:0 for-loop [91] 100.0% ----------------------------------------------------------------------- eval-const-expr [84] 100.0% [89] 198(2.2%) 198(2.2%) eval (unknown source) ----------------------------------------------------------------------- temp85_0 [87] 100.0% [90] 624(7.0%) 0(0.0%) compile15 (unknown source) temp91_0 [92] 100.0% ----------------------------------------------------------------------- pattern-match [88] 100.0% [91] 204(2.3%) 0(0.0%) for-loop ...ie/better-rr/src/core/matcher.rkt:26:9 core457 [93] 100.0% ----------------------------------------------------------------------- compile15 [90] 100.0% [92] 624(7.0%) 0(0.0%) temp91_0 (unknown source) temp118_0 [94] 67.6% compile-top9 [96] 32.4% ----------------------------------------------------------------------- for-loop [91] 100.0% [93] 204(2.3%) 0(0.0%) core457 ...acket/contract/private/arr-i.rkt:976:19 build-unary-very-simple--> [95] 100.0% ----------------------------------------------------------------------- temp91_0 [92] 100.0% [94] 422(4.7%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [97] 100.0% ----------------------------------------------------------------------- core457 [93] 100.0% [95] 204(2.3%) 204(2.3%) build-unary-very-simple--> ...val-first.rkt:1150:0 ----------------------------------------------------------------------- temp91_0 [92] 100.0% [96] 202(2.3%) 0(0.0%) compile-top9 (unknown source) compile-forms33 [98] 100.0% ----------------------------------------------------------------------- temp118_0 [94] 100.0% [97] 422(4.7%) 0(0.0%) expand-capturing-lifts (unknown source) loop [102] 52.6% lambda-clause-expander [99] 47.4% ----------------------------------------------------------------------- compile-top9 [96] 100.0% [98] 202(2.3%) 0(0.0%) compile-forms33 (unknown source) for-loop [101] 100.0% ----------------------------------------------------------------------- expand-capturing-lifts [97] 100.0% [99] 200(2.2%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [100] 100.0% ----------------------------------------------------------------------- lambda-clause-expander [99] 25.0% for-loop [101] 75.0% [100] 200(2.2%) 0(0.0%) finish-bodys (unknown source) for-loop [101] 100.0% ----------------------------------------------------------------------- for-loop [101] 16.6% finish-bodys [100] 33.2% compile-forms33 [98] 50.2% [101] 402(4.5%) 0(0.0%) for-loop (unknown source) compile-module-linklet57 [103] 50.2% finish-bodys [100] 24.9% for-loop [101] 16.6% loop [102] 8.3% ----------------------------------------------------------------------- syntax-e/no-taint [15] 7.0% for-loop [101] 7.0% parse-loop49 [7] 14.3% expand-capturing-lifts [97] 15.5% loop [102] 20.7% for-loop [29] 35.3% [102] 1430(16.0%) 422(4.7%) loop (unknown source) ??? [104] 35.3% loop [102] 20.7% f40 [77] 14.3% expand-id-application-form17 [8] 7.0% gf [105] 7.0% ----------------------------------------------------------------------- for-loop [101] 100.0% [103] 202(2.3%) 202(2.3%) compile-module-linklet57 (unknown source) ----------------------------------------------------------------------- map [80] 41.1% loop [102] 58.9% [104] 1026(11.5%) 200(2.2%) ??? ...lies/herbie/better-rr/src/points.rkt:181:26 ??? [106] 80.5% ----------------------------------------------------------------------- loop [102] 100.0% [105] 200(2.2%) 0(0.0%) gf (unknown source) propagation-apply-shifted [107] 100.0% ----------------------------------------------------------------------- composed [26] 16.3% .../more-scheme.rkt:261:28 [21] 16.3% ??? [104] 67.4% [106] 1226(13.7%) 1004(11.2%) ??? ...rbie/better-rr/src/syntax/syntax.rkt:214:17 return/no-unsupplied [108] 18.1% ----------------------------------------------------------------------- gf [105] 100.0% [107] 200(2.2%) 200(2.2%) propagation-apply-shifted (unknown source) ----------------------------------------------------------------------- ??? [106] 100.0% [108] 222(2.5%) 0(0.0%) return/no-unsupplied ...ct/private/arr-i.rkt:566:0 filter [109] 100.0% ----------------------------------------------------------------------- return/no-unsupplied [108] 100.0% [109] 222(2.5%) 222(2.5%) filter ...5/collects/racket/private/list.rkt:256:2 -----------------------------------------------------------------------