Profiling results ----------------- Total cpu time observed: 83426ms (out of 84396ms) Number of samples taken: 253 (once every 330ms) (Hiding functions with self<1.0% and local<2.0%: 3 of 209 hidden) =========================================================================== Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee =========================================================================== ??? [29] 100.0% [1] 83426(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [17] 100.0% --------------------------------------------------------------------------- ??? [29] 100.0% [2] 33276(39.9%) 0(0.0%) run-improve40 ...ie/develop/src/mainloop.rkt:340:0 for-loop [18] 95.4% prepare-points-intervals [36] 2.8% simplify! [37] 1.8% --------------------------------------------------------------------------- ??? [29] 100.0% [3] 10184(12.2%) 0(0.0%) oracle-error ...erbie/develop/src/points.rkt:212:0 for-loop [19] 100.0% --------------------------------------------------------------------------- ??? [29] 100.0% [4] 3354(4.0%) 0(0.0%) get-final-combination ...op/src/mainloop.rkt:361:0 infer-splitpoints [20] 100.0% --------------------------------------------------------------------------- ??? [134] 100.0% [5] 3230(3.9%) 0(0.0%) approximate9 ...e/develop/src/core/taylor.rkt:12:0 loop [22] 79.5% for-loop [28] 10.4% taylor [34] 10.1% --------------------------------------------------------------------------- stx-pair? [197] 13.9% loop [198] 29.4% for-loop [206] 56.7% [6] 2158(2.6%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [23] 100.0% --------------------------------------------------------------------------- matcher [96] 100.0% [7] 1622(1.9%) 0(0.0%) ??? .../herbie/develop/src/core/matcher.rkt:175:11 for-loop [24] 100.0% --------------------------------------------------------------------------- match-e [102] 100.0% [8] 1200(1.4%) 0(0.0%) variable? .../develop/src/syntax/syntax.rkt:1159:0 ??? [48] 100.0% --------------------------------------------------------------------------- hash-ref! [144] 100.0% [9] 650(0.8%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:291:26 for-loop [25] 100.0% --------------------------------------------------------------------------- for-loop [206] 100.0% [10] 626(0.8%) 300(0.4%) expand-implicit (unknown source) resolve+shift28 [202] 52.1% --------------------------------------------------------------------------- hash-ref! [144] 100.0% [11] 612(0.7%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:301:23 for-loop [26] 100.0% --------------------------------------------------------------------------- matcher [96] 100.0% [12] 358(0.4%) 0(0.0%) for-loop ...bie/develop/src/core/matcher.rkt:155:4 pattern-substitute [27] 100.0% --------------------------------------------------------------------------- hash-ref! [144] 100.0% [13] 334(0.4%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:363:30 simplify [21] 100.0% --------------------------------------------------------------------------- parse-loop15 [33] 1.6% loop [14] 98.4% [14] 310(0.4%) 0(0.0%) loop ...-7.0/collects/racket/private/map.rkt:54:19 loop [14] 98.4% ??? [134] 1.6% --------------------------------------------------------------------------- loop [92] 100.0% [15] 300(0.4%) 0(0.0%) point-error ...herbie/develop/src/points.rkt:195:0 ulp-difference [115] 100.0% --------------------------------------------------------------------------- ??? [29] 100.0% [16] 298(0.4%) 0(0.0%) baseline-error ...bie/develop/src/points.rkt:216:0 loop [84] 100.0% --------------------------------------------------------------------------- profile-thunk16 [1] 100.0% [17] 83426(100.0%) 0(0.0%) run ...et-7.0/share/pkgs/profile-lib/main.rkt:39:2 ??? [29] 100.0% --------------------------------------------------------------------------- run-improve40 [2] 100.0% [18] 31746(38.1%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:355:4 run-iter! [30] 100.0% --------------------------------------------------------------------------- oracle-error [3] 100.0% [19] 10184(12.2%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:213:2 loop [92] 60.7% map [81] 39.3% --------------------------------------------------------------------------- get-final-combination [4] 100.0% [20] 3354(4.0%) 0(0.0%) infer-splitpoints ...lop/src/core/regimes.rkt:34:0 for-loop [31] 100.0% --------------------------------------------------------------------------- ??? [13] 11.5% hash-ref! [144] 88.5% [21] 2894(3.5%) 0(0.0%) simplify ...erbie/develop/src/core/reduce.rkt:16:0 f9 [32] 54.9% parse-loop15 [33] 33.6% debug-print [44] 11.5% --------------------------------------------------------------------------- approximate9 [5] 100.0% [22] 2568(3.1%) 0(0.0%) loop ...es/herbie/develop/src/core/taylor.rkt:87:4 hash-ref! [144] 61.5% ??? [134] 38.5% --------------------------------------------------------------------------- syntax-e [6] 100.0% [23] 2158(2.6%) 0(0.0%) syntax-e/no-taint (unknown source) loop [198] 100.0% --------------------------------------------------------------------------- ??? [7] 100.0% [24] 1622(1.9%) 0(0.0%) for-loop ...ie/develop/src/core/matcher.rkt:179:21 matcher [96] 100.0% --------------------------------------------------------------------------- ??? [9] 100.0% [25] 650(0.8%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:291:52 hash-ref! [144] 100.0% --------------------------------------------------------------------------- ??? [11] 100.0% [26] 612(0.7%) 0(0.0%) for-loop ...bie/develop/src/core/taylor.rkt:304:27 hash-ref! [144] 100.0% --------------------------------------------------------------------------- for-loop [35] 50.0% for-loop [12] 50.0% [27] 358(0.4%) 358(0.4%) pattern-substitute ...op/src/core/matcher.rkt:71:0 for-loop [35] 50.0% --------------------------------------------------------------------------- approximate9 [5] 100.0% [28] 336(0.4%) 0(0.0%) for-loop ...rbie/develop/src/core/taylor.rkt:30:18 taylor [34] 100.0% --------------------------------------------------------------------------- run [17] 50.0% [29] 83426(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 50.0% prepare-points-intervals [36] 20.8% run-improve40 [2] 19.9% oracle-error [3] 6.1% get-final-combination [4] 2.0% errors [80] 0.4% ??? [135] 0.2% loop [92] 0.2% eval-errors [109] 0.2% baseline-error [16] 0.2% --------------------------------------------------------------------------- for-loop [18] 100.0% [30] 31746(38.1%) 0(0.0%) run-iter! ...herbie/develop/src/mainloop.rkt:321:0 simplify! [37] 58.5% finalize-iter! [38] 21.2% gen-series! [40] 10.2% gen-rewrites! [42] 5.1% choose-best-alt! [43] 4.1% localize! [45] 1.0% --------------------------------------------------------------------------- infer-splitpoints [20] 100.0% [31] 3354(4.0%) 0(0.0%) for-loop ...rbie/develop/src/core/regimes.rkt:46:6 option-on-expr [39] 100.0% --------------------------------------------------------------------------- map [81] 8.2% hash-ref! [144] 16.3% simplify [21] 75.4% [32] 1898(2.3%) 326(0.4%) f9 ....0/collects/racket/match/compiler.rkt:507:40 map [81] 48.6% eval-const-expr [41] 34.2% --------------------------------------------------------------------------- hash-ref! [144] 16.4% map [81] 32.3% simplify [21] 51.3% [33] 1894(2.3%) 336(0.4%) parse-loop15 ...s/racket/match/compiler.rkt:418:15 eval-const-expr [41] 65.9% loop [92] 13.1% loop [14] 3.3% --------------------------------------------------------------------------- for-loop [28] 5.6% approximate9 [5] 16.4% taylor [34] 77.9% [34] 662(0.8%) 0(0.0%) taylor ...herbie/develop/src/core/taylor.rkt:170:0 taylor [34] 77.9% map [81] 16.4% debug-print [44] 5.6% --------------------------------------------------------------------------- pattern-substitute [27] 100.0% [35] 358(0.4%) 0(0.0%) for-loop ...bie/develop/src/core/matcher.rkt:79:10 pattern-substitute [27] 100.0% --------------------------------------------------------------------------- run-improve40 [2] 2.6% ??? [29] 97.4% [36] 35696(42.8%) 0(0.0%) prepare-points-intervals ...p/src/points.rkt:133:0 loop [46] 100.0% --------------------------------------------------------------------------- run-improve40 [2] 3.1% run-iter! [30] 96.9% [37] 19166(23.0%) 0(0.0%) simplify! ...herbie/develop/src/mainloop.rkt:217:0 ??? [47] 98.4% for-loop [56] 1.6% --------------------------------------------------------------------------- run-iter! [30] 100.0% [38] 6716(8.1%) 0(0.0%) finalize-iter! ...e/develop/src/mainloop.rkt:272:0 ??? [48] 100.0% --------------------------------------------------------------------------- for-loop [31] 100.0% [39] 3354(4.0%) 0(0.0%) option-on-expr ...velop/src/core/regimes.rkt:150:0 for-loop [50] 72.2% err-lsts->split-indices [53] 9.6% loop [92] 9.2% sort-context-on-expr [55] 9.0% --------------------------------------------------------------------------- run-iter! [30] 100.0% [40] 3230(3.9%) 0(0.0%) gen-series! ...rbie/develop/src/mainloop.rkt:153:0 for-loop [49] 100.0% --------------------------------------------------------------------------- f9 [32] 34.2% parse-loop15 [33] 65.8% [41] 1898(2.3%) 0(0.0%) eval-const-expr .../develop/src/programs.rkt:149:0 eval-prog [104] 100.0% --------------------------------------------------------------------------- run-iter! [30] 100.0% [42] 1622(1.9%) 0(0.0%) gen-rewrites! ...ie/develop/src/mainloop.rkt:176:0 for-loop [51] 100.0% --------------------------------------------------------------------------- run-iter! [30] 100.0% [43] 1304(1.6%) 0(0.0%) choose-best-alt! ...develop/src/mainloop.rkt:111:0 ??? [48] 100.0% --------------------------------------------------------------------------- simplify [21] 49.9% taylor [34] 50.1% [44] 670(0.8%) 336(0.4%) debug-print .../herbie/develop/src/debug.rkt:110:0 ??? [52] 49.9% --------------------------------------------------------------------------- run-iter! [30] 100.0% [45] 310(0.4%) 0(0.0%) localize! ...herbie/develop/src/mainloop.rkt:120:0 localize-error [54] 100.0% --------------------------------------------------------------------------- prepare-points-intervals [36] 100.0% [46] 35696(42.8%) 0(0.0%) loop ...htlies/herbie/develop/src/points.rkt:145:4 loop [57] 88.9% ??? [61] 9.2% --------------------------------------------------------------------------- simplify! [37] 100.0% [47] 18866(22.6%) 0(0.0%) ??? ...s/herbie/develop/src/core/simplify.rkt:26:0 one-iter [69] 47.3% for-loop [59] 33.5% loop [60] 19.2% --------------------------------------------------------------------------- match-e [102] 3.5% variable? [8] 12.6% choose-best-alt! [43] 13.6% finalize-iter! [38] 70.3% [48] 9556(11.5%) 1200(1.4%) ??? ...contract/private/arrow-val-first.rkt:388:18 for-loop [58] 70.3% ??? [64] 13.6% ??? [191] 3.5% --------------------------------------------------------------------------- gen-series! [40] 100.0% [49] 3230(3.9%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:160:7 taylor-alt [62] 100.0% --------------------------------------------------------------------------- option-on-expr [39] 100.0% [50] 2420(2.9%) 0(0.0%) for-loop ...bie/develop/src/core/regimes.rkt:158:4 errors [80] 100.0% --------------------------------------------------------------------------- gen-rewrites! [42] 100.0% [51] 1622(1.9%) 0(0.0%) for-loop ...herbie/develop/src/mainloop.rkt:184:11 rewrite-expression-head20 [63] 100.0% --------------------------------------------------------------------------- debug-print [44] 100.0% [52] 334(0.4%) 0(0.0%) ??? .../contract/private/arrow-val-first.rkt:428:3 ~r78 [65] 100.0% --------------------------------------------------------------------------- option-on-expr [39] 100.0% [53] 322(0.4%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:282:0 loop [66] 100.0% --------------------------------------------------------------------------- localize! [45] 100.0% [54] 310(0.4%) 0(0.0%) localize-error ...velop/src/core/localize.rkt:52:0 hash-ref! [144] 100.0% --------------------------------------------------------------------------- option-on-expr [39] 100.0% [55] 302(0.4%) 0(0.0%) sort-context-on-expr ...src/core/regimes.rkt:145:0 ??? [67] 100.0% --------------------------------------------------------------------------- simplify! [37] 100.0% [56] 300(0.4%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:256:6 for-loop [68] 100.0% --------------------------------------------------------------------------- loop [46] 100.0% [57] 31738(38.0%) 1726(2.1%) loop ...htlies/herbie/develop/src/points.rkt:104:2 ??? [123] 78.9% ??? [134] 15.7% --------------------------------------------------------------------------- ??? [48] 100.0% [58] 6716(8.1%) 0(0.0%) for-loop ...ie/develop/src/core/alt-table.rkt:56:2 atab-add-altn [70] 81.6% loop [74] 18.4% --------------------------------------------------------------------------- ??? [47] 100.0% [59] 6326(7.6%) 0(0.0%) for-loop ...bie/develop/src/core/simplify.rkt:33:2 one-iter [69] 100.0% --------------------------------------------------------------------------- ??? [47] 100.0% [60] 3614(4.3%) 0(0.0%) loop ...herbie/develop/src/core/simplify.rkt:132:2 for-loop [71] 100.0% --------------------------------------------------------------------------- loop [46] 100.0% [61] 3286(3.9%) 302(0.4%) ??? ...ghtlies/herbie/develop/src/points.rkt:129:2 ??? [134] 71.6% curried [76] 10.1% compose [78] 9.1% --------------------------------------------------------------------------- for-loop [49] 100.0% [62] 3230(3.9%) 0(0.0%) taylor-alt ...erbie/develop/src/mainloop.rkt:139:0 for-loop [72] 100.0% --------------------------------------------------------------------------- for-loop [51] 100.0% [63] 1622(1.9%) 0(0.0%) rewrite-expression-head20 ...ore/matcher.rkt:126:0 rewriter [73] 100.0% --------------------------------------------------------------------------- ??? [48] 100.0% [64] 1304(1.6%) 0(0.0%) ??? .../herbie/develop/src/core/alt-table.rkt:59:0 ??? [134] 100.0% --------------------------------------------------------------------------- ??? [52] 100.0% [65] 334(0.4%) 0(0.0%) ~r78 ...acket-7.0/collects/racket/format.rkt:189:0 number->string* [75] 100.0% --------------------------------------------------------------------------- err-lsts->split-indices [53] 100.0% [66] 322(0.4%) 0(0.0%) loop .../herbie/develop/src/core/regimes.rkt:333:4 for-loop [77] 100.0% --------------------------------------------------------------------------- sort-context-on-expr [55] 100.0% [67] 302(0.4%) 302(0.4%) ??? ...-7.0/collects/racket/private/sort.rkt:369:3 --------------------------------------------------------------------------- for-loop [56] 100.0% [68] 300(0.4%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:257:8 expression-cost [95] 100.0% --------------------------------------------------------------------------- for-loop [59] 41.5% ??? [47] 58.5% [69] 15252(18.3%) 0(0.0%) one-iter ...bie/develop/src/core/simplify.rkt:86:0 find-matches [79] 81.5% for-loop [82] 16.5% for-loop [90] 2.0% --------------------------------------------------------------------------- for-loop [58] 100.0% [70] 5480(6.6%) 0(0.0%) atab-add-altn ...elop/src/core/alt-table.rkt:202:0 errors [80] 100.0% --------------------------------------------------------------------------- loop [60] 100.0% [71] 3614(4.3%) 300(0.4%) for-loop ...ie/develop/src/core/simplify.rkt:138:4 argmin [85] 25.0% loop [84] 24.8% for-loop [97] 16.8% expression-cost [95] 16.6% for-loop [88] 8.4% --------------------------------------------------------------------------- taylor-alt [62] 100.0% [72] 3230(3.9%) 0(0.0%) for-loop .../herbie/develop/src/mainloop.rkt:145:6 ??? [134] 100.0% --------------------------------------------------------------------------- rewrite-expression-head20 [63] 27.6% matcher [96] 72.4% [73] 1622(1.9%) 602(0.7%) rewriter ...bie/develop/src/core/matcher.rkt:128:2 for-loop [83] 88.3% *rules* [86] 3.3% --------------------------------------------------------------------------- for-loop [58] 100.0% [74] 1236(1.5%) 0(0.0%) loop ...erbie/develop/src/core/alt-table.rkt:176:2 map [81] 51.5% loop [92] 24.3% loop [89] 24.3% --------------------------------------------------------------------------- ~r78 [65] 100.0% [75] 334(0.4%) 334(0.4%) number->string* ...ollects/racket/format.rkt:417:0 --------------------------------------------------------------------------- ??? [61] 100.0% [76] 332(0.4%) 332(0.4%) curried ...-7.0/collects/racket/function.rkt:71:18 --------------------------------------------------------------------------- loop [66] 100.0% [77] 322(0.4%) 0(0.0%) for-loop ...bie/develop/src/core/regimes.rkt:298:4 for-loop [87] 100.0% --------------------------------------------------------------------------- ??? [61] 100.0% [78] 300(0.4%) 300(0.4%) compose ...collects/racket/private/list.rkt:385:12 --------------------------------------------------------------------------- one-iter [69] 100.0% [79] 12438(14.9%) 0(0.0%) find-matches ...develop/src/core/simplify.rkt:56:0 for-loop [91] 100.0% --------------------------------------------------------------------------- ??? [29] 6.1% ??? [179] 13.3% for-loop [50] 24.7% atab-add-altn [70] 55.9% [80] 9806(11.8%) 0(0.0%) errors ...lies/herbie/develop/src/points.rkt:228:0 for-loop [93] 65.2% eval-prog [104] 34.8% --------------------------------------------------------------------------- taylor [34] 5.5% loop [74] 10.8% f9 [32] 15.7% for-loop [19] 68.0% [81] 5890(7.1%) 0(0.0%) map ...t-7.0/collects/racket/private/map.rkt:35:13 loop [92] 73.1% parse-loop15 [33] 7.7% ??? [103] 5.7% taylor-sqrt [99] 5.5% hash-ref! [144] 5.3% f9 [32] 2.6% --------------------------------------------------------------------------- one-iter [69] 100.0% [82] 2514(3.0%) 300(0.4%) for-loop ...bie/develop/src/core/simplify.rkt:95:2 apply-match [94] 74.8% update-leader! [126] 13.3% --------------------------------------------------------------------------- rewriter [73] 100.0% [83] 1622(1.9%) 336(0.4%) for-loop ...ie/develop/src/core/matcher.rkt:131:10 matcher [96] 89.6% --------------------------------------------------------------------------- baseline-error [16] 24.9% for-loop [71] 75.1% [84] 1196(1.4%) 0(0.0%) loop .../racket-7.0/collects/racket/list.rkt:751:4 expression-cost [95] 50.0% for-loop [97] 25.1% ??? [101] 24.9% --------------------------------------------------------------------------- for-loop [71] 100.0% [85] 904(1.1%) 0(0.0%) argmin ...acket-7.0/collects/racket/list.rkt:765:0 for-loop [97] 67.3% expression-cost [95] 32.7% --------------------------------------------------------------------------- rewriter [73] 100.0% [86] 326(0.4%) 0(0.0%) *rules* ...rbie/develop/src/syntax/rules.rkt:783:0 for-loop [98] 100.0% --------------------------------------------------------------------------- for-loop [77] 100.0% [87] 322(0.4%) 322(0.4%) for-loop ...bie/develop/src/core/regimes.rkt:302:8 --------------------------------------------------------------------------- for-loop [71] 100.0% [88] 304(0.4%) 304(0.4%) for-loop ...e/develop/src/core/simplify.rkt:142:16 --------------------------------------------------------------------------- loop [74] 6.7% loop [89] 93.3% [89] 300(0.4%) 300(0.4%) loop ...racket-7.0/collects/racket/list.rkt:434:28 loop [89] 93.3% --------------------------------------------------------------------------- one-iter [69] 100.0% [90] 300(0.4%) 0(0.0%) for-loop ...ie/develop/src/core/simplify.rkt:100:2 set-precompute! [100] 100.0% --------------------------------------------------------------------------- for-loop [91] 50.0% find-matches [79] 50.0% [91] 12438(14.9%) 3006(3.6%) for-loop ...bie/develop/src/core/simplify.rkt:58:8 for-loop [91] 50.0% match-e [102] 37.9% --------------------------------------------------------------------------- option-on-expr [39] 0.0% loop [74] 0.0% ??? [29] 0.5% parse-loop15 [33] 2.6% map [81] 17.6% for-loop [19] 20.1% loop [92] 59.1% [92] 11714(14.0%) 908(1.1%) loop ...-7.0/collects/racket/private/map.rkt:40:19 loop [92] 59.1% ??? [103] 26.3% ??? [123] 6.6% hash-ref! [144] 2.6% ulp-difference [115] 1.3% point-error [15] 0.6% eval-prog [104] 0.5% ??? [108] 0.1% --------------------------------------------------------------------------- errors [80] 100.0% [93] 6398(7.7%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:230:2 ??? [123] 65.0% ??? [134] 15.7% ulp-difference [115] 14.0% ??? [110] 5.2% --------------------------------------------------------------------------- for-loop [82] 100.0% [94] 1880(2.3%) 0(0.0%) apply-match .../develop/src/core/simplify.rkt:65:0 for-loop [107] 50.3% match-e [102] 33.7% set [111] 16.0% --------------------------------------------------------------------------- argmin [85] 16.5% for-loop [68] 16.7% loop [84] 33.3% for-loop [71] 33.4% [95] 1794(2.2%) 0(0.0%) expression-cost .../develop/src/programs.rkt:204:0 compile [105] 100.0% --------------------------------------------------------------------------- for-loop [24] 50.0% for-loop [83] 50.0% [96] 1622(1.9%) 0(0.0%) matcher ...rbie/develop/src/core/matcher.rkt:163:2 ??? [7] 50.0% rewriter [73] 47.2% for-loop [12] 2.8% --------------------------------------------------------------------------- loop [84] 19.8% for-loop [71] 40.1% argmin [85] 40.1% [97] 1516(1.8%) 308(0.4%) for-loop .../herbie/develop/src/programs.rkt:205:2 table-ref [106] 79.7% --------------------------------------------------------------------------- *rules* [86] 100.0% [98] 326(0.4%) 326(0.4%) for-loop ...ies/herbie/develop/src/common.rkt:71:9 --------------------------------------------------------------------------- map [81] 100.0% [99] 326(0.4%) 0(0.0%) taylor-sqrt ...e/develop/src/core/taylor.rkt:352:0 hash-ref! [144] 100.0% --------------------------------------------------------------------------- for-loop [90] 100.0% [100] 300(0.4%) 0(0.0%) set-precompute! ...lop/src/core/simplify.rkt:106:0 for-loop [112] 100.0% --------------------------------------------------------------------------- loop [84] 100.0% [101] 298(0.4%) 0(0.0%) ??? ...htlies/herbie/develop/src/points.rkt:217:27 eval-errors [109] 100.0% --------------------------------------------------------------------------- apply-match [94] 4.6% for-loop [125] 13.7% for-loop [91] 81.7% [102] 10066(12.1%) 3336(4.0%) match-e ...herbie/develop/src/core/ematch.rkt:39:0 for-loop [113] 59.3% variable? [8] 4.5% make-sequence [120] 3.0% ??? [48] 1.7% --------------------------------------------------------------------------- map [81] 5.5% loop [92] 94.5% [103] 6116(7.3%) 300(0.4%) ??? ...htlies/herbie/develop/src/points.rkt:214:26 ??? [123] 64.6% ??? [134] 25.5% ulp-difference [115] 4.9% --------------------------------------------------------------------------- loop [92] 5.5% eval-const-expr [41] 33.8% errors [80] 60.7% [104] 5616(6.7%) 0(0.0%) eval-prog ...herbie/develop/src/programs.rkt:130:0 temp68_2 [114] 94.5% inductor [119] 5.5% --------------------------------------------------------------------------- expression-cost [95] 100.0% [105] 1794(2.2%) 0(0.0%) compile ...s/herbie/develop/src/programs.rkt:181:0 hash-ref! [144] 100.0% --------------------------------------------------------------------------- for-loop [97] 100.0% [106] 1208(1.4%) 910(1.1%) table-ref ...es/herbie/develop/src/common.rkt:42:0 for-loop [122] 24.7% --------------------------------------------------------------------------- apply-match [94] 100.0% [107] 946(1.1%) 0(0.0%) for-loop ...bie/develop/src/core/simplify.rkt:78:2 merge-egraph-nodes! [116] 67.0% substitute-e [118] 33.0% --------------------------------------------------------------------------- loop [92] 100.0% [108] 636(0.8%) 336(0.4%) ??? ...erbie/develop/src/core/alt-table.rkt:193:30 loop [121] 47.2% --------------------------------------------------------------------------- ??? [101] 49.8% ??? [29] 50.2% [109] 598(0.7%) 0(0.0%) eval-errors ...herbie/develop/src/points.rkt:203:0 for-loop [117] 100.0% --------------------------------------------------------------------------- for-loop [93] 100.0% [110] 334(0.4%) 334(0.4%) ??? ...7.0/collects/racket/private/for.rkt:1208:14 --------------------------------------------------------------------------- apply-match [94] 100.0% [111] 300(0.4%) 300(0.4%) set ...collects/racket/private/set-types.rkt:981:0 --------------------------------------------------------------------------- set-precompute! [100] 100.0% [112] 300(0.4%) 0(0.0%) for-loop ...ie/develop/src/core/simplify.rkt:108:2 merge-egraph-nodes! [116] 100.0% --------------------------------------------------------------------------- match-e [102] 100.0% [113] 6752(8.1%) 3700(4.4%) for-loop ...rbie/develop/src/core/ematch.rkt:52:11 for-loop [125] 34.1% foldr [127] 4.5% foldl [128] 4.4% cartesian-product [129] 4.4% --------------------------------------------------------------------------- eval-prog [104] 100.0% [114] 5306(6.4%) 0(0.0%) temp68_2 (unknown source) compile16 [124] 100.0% --------------------------------------------------------------------------- point-error [15] 14.3% ??? [103] 14.4% loop [92] 28.5% for-loop [93] 42.8% [115] 2098(2.5%) 1198(1.4%) ulp-difference ...erbie/develop/src/float.rkt:14:0 ??? [163] 28.6% ??? [134] 14.3% --------------------------------------------------------------------------- for-loop [112] 32.1% for-loop [107] 67.9% [116] 934(1.1%) 0(0.0%) merge-egraph-nodes! ...p/src/core/egraph.rkt:145:0 update-leader! [126] 100.0% --------------------------------------------------------------------------- eval-errors [109] 100.0% [117] 598(0.7%) 0(0.0%) for-loop ...es/herbie/develop/src/points.rkt:205:2 ??? [134] 50.2% ??? [123] 49.8% --------------------------------------------------------------------------- for-loop [107] 100.0% [118] 312(0.4%) 312(0.4%) substitute-e ...e/develop/src/core/ematch.rkt:64:0 --------------------------------------------------------------------------- inductor [119] 50.0% eval-prog [104] 50.0% [119] 310(0.4%) 310(0.4%) inductor .../herbie/develop/src/programs.rkt:135:4 inductor [119] 50.0% --------------------------------------------------------------------------- match-e [102] 100.0% [120] 302(0.4%) 302(0.4%) make-sequence ...ects/racket/private/for.rkt:528:2 --------------------------------------------------------------------------- ??? [108] 12.5% loop [121] 87.5% [121] 300(0.4%) 300(0.4%) loop ...7.0/collects/racket/private/list.rkt:82:16 loop [121] 87.5% --------------------------------------------------------------------------- table-ref [106] 100.0% [122] 298(0.4%) 298(0.4%) for-loop ...ies/herbie/develop/src/common.rkt:44:4 --------------------------------------------------------------------------- for-loop [117] 0.8% loop [92] 7.9% ??? [103] 10.9% for-loop [93] 11.5% loop [57] 68.9% [123] 36308(43.5%) 910(1.1%) ??? ...tlies/herbie/develop/src/programs.rkt:146:2 ??? [130] 73.3% ??? [134] 24.2% --------------------------------------------------------------------------- temp68_2 [114] 100.0% [124] 5306(6.4%) 0(0.0%) compile16 (unknown source) temp74_0 [131] 100.0% --------------------------------------------------------------------------- for-loop [113] 100.0% [125] 2456(2.9%) 0(0.0%) for-loop ...rbie/develop/src/core/ematch.rkt:58:37 match-e [102] 94.1% ??? [133] 5.9% --------------------------------------------------------------------------- for-loop [82] 26.3% merge-egraph-nodes! [116] 73.7% [126] 1268(1.5%) 0(0.0%) update-leader! ...evelop/src/core/egraph.rkt:213:0 for-loop [132] 100.0% --------------------------------------------------------------------------- for-loop [113] 100.0% [127] 302(0.4%) 302(0.4%) foldr ....0/collects/racket/private/list.rkt:242:4 --------------------------------------------------------------------------- for-loop [113] 100.0% [128] 300(0.4%) 300(0.4%) foldl ....0/collects/racket/private/list.rkt:229:4 --------------------------------------------------------------------------- for-loop [113] 100.0% [129] 300(0.4%) 300(0.4%) cartesian-product ...ollects/racket/list.rkt:822:0 --------------------------------------------------------------------------- ??? [123] 100.0% [130] 26608(31.9%) 1548(1.9%) ??? ...t-7.0/collects/racket/private/kw.rkt:592:14 ??? [135] 46.8% ??? [134] 36.6% ??? [137] 7.0% double->posit16 [138] 2.4% --------------------------------------------------------------------------- compile16 [124] 100.0% [131] 5306(6.4%) 0(0.0%) temp74_0 (unknown source) expand-single [136] 88.4% compile-top9 [139] 11.6% --------------------------------------------------------------------------- update-leader! [126] 100.0% [132] 1268(1.5%) 0(0.0%) for-loop ...rbie/develop/src/core/egraph.rkt:218:6 hash-update! [152] 73.7% for-loop [140] 26.3% --------------------------------------------------------------------------- for-loop [125] 100.0% [133] 290(0.3%) 290(0.3%) ??? ...ies/herbie/develop/src/core/ematch.rkt:43:5 --------------------------------------------------------------------------- for-loop [117] 0.9% ulp-difference [115] 0.9% loop [14] 0.9% loop [22] 1.0% ??? [167] 1.6% for-loop [93] 2.5% ??? [64] 2.9% location-do [146] 3.6% for-loop [72] 3.6% ??? [103] 4.7% ??? [61] 7.1% loop [57] 15.0% ??? [123] 26.0% ??? [130] 29.3% [134] 33200(39.8%) 3552(4.3%) ??? ...tract/private/arrow-higher-order.rkt:357:33 ->flonum [141] 40.1% ival-mult [142] 21.7% loop [147] 7.6% mk-ival [150] 4.8% location-do [146] 3.6% approximate9 [5] 3.6% sample-multi-bounded [153] 3.0% best-alt [151] 2.9% hash-ref! [144] 2.6% --------------------------------------------------------------------------- ??? [29] 2.2% fold-binary-pred [177] 15.0% ??? [130] 82.8% [135] 15058(18.0%) 3206(3.8%) ??? ...tract/private/arrow-higher-order.rkt:361:33 ival-div [143] 41.5% ival-neg [148] 12.9% ival-sub [149] 11.4% ival-add [154] 6.1% ival-sqrt [155] 4.6% ??? [187] 2.2% --------------------------------------------------------------------------- temp74_0 [131] 100.0% [136] 4692(5.6%) 0(0.0%) expand-single (unknown source) expand-capturing-lifts [145] 100.0% --------------------------------------------------------------------------- ??? [130] 100.0% [137] 1872(2.2%) 1268(1.5%) ??? ...herbie/develop/src/syntax/syntax.rkt:317:17 return/no-unsupplied [164] 16.2% ??? [163] 16.0% --------------------------------------------------------------------------- ??? [130] 100.0% [138] 648(0.8%) 0(0.0%) double->posit16 ...ftposit-rkt/softposit.rkt:248:0 get-ffi-obj* [156] 100.0% --------------------------------------------------------------------------- temp74_0 [131] 100.0% [139] 614(0.7%) 312(0.4%) compile-top9 (unknown source) compile-forms31 [157] 49.2% --------------------------------------------------------------------------- for-loop [132] 100.0% [140] 334(0.4%) 0(0.0%) for-loop ...rbie/develop/src/core/egraph.rkt:219:8 hash-update! [152] 100.0% --------------------------------------------------------------------------- ??? [134] 100.0% [141] 13454(16.1%) 10294(12.3%) ->flonum ...s/herbie/develop/src/programs.rkt:38:0 ??? [163] 9.7% return/no-unsupplied [164] 9.2% list-member? [174] 2.4% ??? [190] 2.2% --------------------------------------------------------------------------- ??? [134] 100.0% [142] 7200(8.6%) 908(1.1%) ival-mult ...bie/develop/src/biginterval.rkt:105:0 classify-ival [159] 40.3% bf* [160] 37.9% ...higher-order.rkt:361:33 [171] 9.2% --------------------------------------------------------------------------- ??? [135] 100.0% [143] 6254(7.5%) 3068(3.7%) ival-div ...rbie/develop/src/biginterval.rkt:141:0 ??? [175] 31.6% classify-ival [159] 19.4% --------------------------------------------------------------------------- map [81] 1.0% localize-error [54] 1.0% ??? [183] 1.6% ??? [167] 2.8% for-loop [26] 3.1% taylor-sqrt [99] 3.3% loop [92] 4.1% for-loop [25] 4.6% loop [22] 8.1% ??? [168] 14.0% ??? [161] 16.5% ??? [134] 18.0% compile [105] 21.9% [144] 4998(6.0%) 1198(1.4%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [168] 22.9% simplify [21] 19.1% ??? [161] 18.0% ??? [167] 11.0% parse-loop15 [33] 5.2% ??? [9] 4.6% ??? [11] 3.1% ??? [13] 2.2% f9 [32] 1.0% --------------------------------------------------------------------------- expand-single [136] 100.0% [145] 4692(5.6%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [158] 93.1% dispatch-transformer41 [166] 6.9% --------------------------------------------------------------------------- location-do [146] 44.3% ??? [134] 55.7% [146] 3230(3.9%) 0(0.0%) location-do ...rbie/develop/src/programs.rkt:111:0 ??? [134] 55.7% location-do [146] 44.3% --------------------------------------------------------------------------- ??? [134] 100.0% [147] 2530(3.0%) 284(0.3%) loop ...s/herbie/develop/src/biginterval.rkt:442:9 ival-<2 [162] 88.8% --------------------------------------------------------------------------- ??? [135] 100.0% [148] 1940(2.3%) 0(0.0%) ival-neg ...erbie/develop/src/biginterval.rkt:83:0 ??? [175] 100.0% --------------------------------------------------------------------------- ??? [135] 100.0% [149] 1714(2.1%) 0(0.0%) ival-sub ...erbie/develop/src/biginterval.rkt:93:0 ??? [175] 100.0% --------------------------------------------------------------------------- ??? [134] 100.0% [150] 1588(1.9%) 0(0.0%) mk-ival ...herbie/develop/src/biginterval.rkt:59:0 bf [165] 100.0% --------------------------------------------------------------------------- ??? [134] 100.0% [151] 1304(1.6%) 0(0.0%) best-alt .../herbie/develop/src/mainloop.rkt:106:0 loop [170] 71.6% argmins [173] 28.4% --------------------------------------------------------------------------- for-loop [140] 26.3% for-loop [132] 73.7% [152] 1268(1.5%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [169] 100.0% --------------------------------------------------------------------------- ??? [134] 100.0% [153] 1012(1.2%) 642(0.8%) sample-multi-bounded ...evelop/src/points.rkt:16:0 return/no-unsupplied [164] 36.6% --------------------------------------------------------------------------- ??? [135] 100.0% [154] 916(1.1%) 0(0.0%) ival-add ...erbie/develop/src/biginterval.rkt:87:0 ??? [175] 100.0% --------------------------------------------------------------------------- ??? [135] 100.0% [155] 694(0.8%) 0(0.0%) ival-sqrt ...bie/develop/src/biginterval.rkt:191:0 ??? [175] 100.0% --------------------------------------------------------------------------- double->posit16 [138] 100.0% [156] 648(0.8%) 0(0.0%) get-ffi-obj* ...-7.0/collects/ffi/unsafe.rkt:209:2 get-ffi-lib9 [172] 100.0% --------------------------------------------------------------------------- compile-top9 [139] 100.0% [157] 302(0.4%) 0(0.0%) compile-forms31 (unknown source) for-loop [206] 100.0% --------------------------------------------------------------------------- expand-capturing-lifts [145] 100.0% [158] 4366(5.2%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [176] 71.2% loop [198] 28.8% --------------------------------------------------------------------------- ival-div [143] 29.5% ival-mult [142] 70.5% [159] 4114(4.9%) 1896(2.3%) classify-ival ...develop/src/biginterval.rkt:310:0 fold-binary-pred [177] 39.1% force [184] 7.5% ...higher-order.rkt:357:33 [181] 7.3% --------------------------------------------------------------------------- ival-mult [142] 100.0% [160] 2730(3.3%) 0(0.0%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [175] 100.0% --------------------------------------------------------------------------- hash-ref! [144] 100.0% [161] 2568(3.1%) 0(0.0%) ??? ...es/herbie/develop/src/core/taylor.rkt:45:15 hash-ref! [144] 87.9% ??? [183] 12.1% --------------------------------------------------------------------------- loop [147] 100.0% [162] 2246(2.7%) 678(0.8%) ival-<2 ...erbie/develop/src/biginterval.rkt:417:0 ...higher-order.rkt:357:33 [181] 40.9% fold-binary-pred [177] 28.9% --------------------------------------------------------------------------- ??? [137] 13.6% ulp-difference [115] 27.2% ->flonum [141] 59.1% [163] 2202(2.6%) 2202(2.6%) ??? ...s/racket/contract/private/arr-i.rkt:1252:29 --------------------------------------------------------------------------- ??? [137] 15.9% sample-multi-bounded [153] 19.4% ->flonum [141] 64.7% [164] 1908(2.3%) 1238(1.5%) return/no-unsupplied ...ct/private/arr-i.rkt:534:0 filter [182] 35.1% --------------------------------------------------------------------------- mk-ival [150] 100.0% [165] 1588(1.9%) 610(0.7%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 new-mpfr [189] 61.6% --------------------------------------------------------------------------- expand-capturing-lifts [145] 20.6% loop [198] 79.4% [166] 1584(1.9%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [178] 100.0% --------------------------------------------------------------------------- hash-ref! [144] 100.0% [167] 1580(1.9%) 0(0.0%) ??? ...es/herbie/develop/src/core/taylor.rkt:68:15 ??? [134] 79.9% hash-ref! [144] 20.1% --------------------------------------------------------------------------- hash-ref! [144] 100.0% [168] 1494(1.8%) 596(0.7%) ??? ...tlies/herbie/develop/src/programs.rkt:189:5 hash-ref! [144] 70.1% --------------------------------------------------------------------------- hash-update! [152] 100.0% [169] 1268(1.5%) 0(0.0%) ??? ...s/herbie/develop/src/core/egraph.rkt:221:24 for-loop [180] 100.0% --------------------------------------------------------------------------- best-alt [151] 100.0% [170] 934(1.1%) 0(0.0%) loop ...ghtlies/herbie/develop/src/common.rkt:94:2 ??? [179] 100.0% --------------------------------------------------------------------------- ival-mult [142] 100.0% [171] 660(0.8%) 326(0.4%) ...higher-order.rkt:361:33 (unknown source) ??? [187] 50.6% --------------------------------------------------------------------------- get-ffi-obj* [156] 100.0% [172] 648(0.8%) 648(0.8%) get-ffi-lib9 ...-7.0/collects/ffi/unsafe.rkt:121:0 --------------------------------------------------------------------------- best-alt [151] 100.0% [173] 370(0.4%) 0(0.0%) argmins ...lies/herbie/develop/src/common.rkt:93:0 ??? [179] 100.0% --------------------------------------------------------------------------- ->flonum [141] 100.0% [174] 326(0.4%) 326(0.4%) list-member? ...llects/racket/private/set.rkt:24:0 --------------------------------------------------------------------------- ival-sqrt [155] 7.0% ival-add [154] 9.2% ival-sub [149] 17.2% ival-neg [148] 19.5% ival-div [143] 19.8% bf* [160] 27.4% [175] 9968(11.9%) 1702(2.0%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 bfsub [185] 56.5% bfsqrt [186] 26.4% --------------------------------------------------------------------------- lambda-clause-expander [158] 18.7% for-loop [206] 81.3% [176] 3108(3.7%) 0(0.0%) finish-bodys (unknown source) for-loop [206] 100.0% --------------------------------------------------------------------------- ival-<2 [162] 28.8% classify-ival [159] 71.2% [177] 2260(2.7%) 0(0.0%) fold-binary-pred ...gfloat/bigfloat-mpfr.rkt:117:0 ??? [135] 100.0% --------------------------------------------------------------------------- dispatch-transformer41 [166] 100.0% [178] 1584(1.9%) 0(0.0%) apply-transformer52 (unknown source) apply-transformer-in-context [188] 59.0% loop [198] 41.0% --------------------------------------------------------------------------- argmins [173] 28.4% loop [170] 71.6% [179] 1304(1.6%) 0(0.0%) ??? ...lies/herbie/develop/src/mainloop.rkt:108:19 errors [80] 100.0% --------------------------------------------------------------------------- ??? [169] 100.0% [180] 1268(1.5%) 1268(1.5%) for-loop ...bie/develop/src/core/egraph.rkt:222:26 --------------------------------------------------------------------------- classify-ival [159] 24.6% ival-<2 [162] 75.4% [181] 1218(1.5%) 600(0.7%) ...higher-order.rkt:357:33 (unknown source) ??? [187] 26.1% ??? [191] 24.6% --------------------------------------------------------------------------- return/no-unsupplied [164] 100.0% [182] 670(0.8%) 670(0.8%) filter ...0/collects/racket/private/list.rkt:256:2 --------------------------------------------------------------------------- ??? [161] 100.0% [183] 312(0.4%) 0(0.0%) ??? ...s/herbie/develop/src/core/taylor.rkt:294:19 hash-ref! [144] 100.0% --------------------------------------------------------------------------- classify-ival [159] 100.0% [184] 308(0.4%) 308(0.4%) force ...collects/racket/private/promise.rkt:109:0 --------------------------------------------------------------------------- ??? [175] 100.0% [185] 5632(6.8%) 340(0.4%) bfsub ...-lib/math/private/bigfloat/mpfr.rkt:821:4 new-mpfr [189] 55.5% ??? [190] 38.5% --------------------------------------------------------------------------- ??? [175] 100.0% [186] 2634(3.2%) 0(0.0%) bfsqrt ...lib/math/private/bigfloat/mpfr.rkt:618:4 ??? [190] 62.3% new-mpfr [189] 37.7% --------------------------------------------------------------------------- ...higher-order.rkt:357:33 [181] 32.3% ...higher-order.rkt:361:33 [171] 33.9% ??? [135] 33.9% [187] 986(1.2%) 334(0.4%) ??? ...cts/racket/contract/private/list.rkt:209:10 ??? [191] 66.1% --------------------------------------------------------------------------- apply-transformer52 [178] 100.0% [188] 934(1.1%) 0(0.0%) apply-transformer-in-context (unknown source) ??? [192] 67.9% go [193] 32.1% --------------------------------------------------------------------------- bf [165] 19.2% bfsqrt [186] 19.5% bfsub [185] 61.3% [189] 5098(6.1%) 5098(6.1%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 --------------------------------------------------------------------------- ->flonum [141] 7.3% bfsqrt [186] 40.0% bfsub [185] 52.8% [190] 4104(4.9%) 4104(4.9%) ??? /opt/racket-7.0/collects/ffi/unsafe.rkt:898:4 --------------------------------------------------------------------------- ...higher-order.rkt:357:33 [181] 23.3% ??? [48] 26.1% ??? [187] 50.6% [191] 1288(1.5%) 1288(1.5%) ??? ...ects/racket/contract/private/guts.rkt:746:8 --------------------------------------------------------------------------- apply-transformer-in-context [188]100.0% [192] 634(0.8%) 0(0.0%) ??? ...collects/racket/private/qq-and-or.rkt:155:9 ??? [194] 100.0% --------------------------------------------------------------------------- apply-transformer-in-context [188]100.0% [193] 300(0.4%) 0(0.0%) go .../collects/racket/private/qq-and-or.rkt:50:20 loop [195] 100.0% --------------------------------------------------------------------------- ??? [192] 100.0% [194] 634(0.8%) 0(0.0%) ??? ...ollects/racket/private/qq-and-or.rkt:164:21 syntax->list [196] 100.0% --------------------------------------------------------------------------- loop [195] 50.0% go [193] 50.0% [195] 300(0.4%) 0(0.0%) loop ...llects/racket/private/qq-and-or.rkt:101:61 loop [195] 50.0% stx-pair? [197] 50.0% --------------------------------------------------------------------------- ??? [194] 100.0% [196] 634(0.8%) 0(0.0%) syntax->list (unknown source) loop [198] 100.0% --------------------------------------------------------------------------- loop [195] 100.0% [197] 300(0.4%) 0(0.0%) stx-pair? .../collects/racket/private/stx.rkt:40:4 syntax-e [6] 100.0% --------------------------------------------------------------------------- syntax->list [196] 6.2% apply-transformer52 [178] 14.2% lambda-clause-expander [158] 15.3% for-loop [206] 18.1% syntax-e/no-taint [23] 46.2% [198] 3430(4.1%) 300(0.4%) loop (unknown source) gf [199] 41.8% expand-id-application-form17 [201] 18.1% dispatch-transformer41 [166] 15.3% core-form-sym [200] 14.2% syntax-e [6] 6.2% --------------------------------------------------------------------------- loop [198] 100.0% [199] 1858(2.2%) 634(0.8%) gf (unknown source) propagation-apply [203] 48.4% propagation-merge [204] 17.4% --------------------------------------------------------------------------- loop [198] 100.0% [200] 650(0.8%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [202] 100.0% --------------------------------------------------------------------------- loop [198] 100.0% [201] 622(0.7%) 0(0.0%) expand-id-application-form17 (unknown source) resolve+shift28 [202] 100.0% --------------------------------------------------------------------------- expand-implicit [10] 20.4% expand-id-application-form17 [201] 38.9% core-form-sym [200] 40.7% [202] 1598(1.9%) 330(0.4%) resolve+shift28 (unknown source) fallback-loop [205] 79.3% --------------------------------------------------------------------------- gf [199] 100.0% [203] 900(1.1%) 900(1.1%) propagation-apply (unknown source) --------------------------------------------------------------------------- gf [199] 100.0% [204] 324(0.4%) 324(0.4%) propagation-merge (unknown source) --------------------------------------------------------------------------- resolve+shift28 [202] 100.0% [205] 1268(1.5%) 324(0.4%) fallback-loop (unknown source) for-loop [206] 74.4% --------------------------------------------------------------------------- for-loop [206] 3.7% compile-forms31 [157] 8.1% fallback-loop [205] 10.6% finish-bodys [176] 77.5% [206] 3736(4.5%) 1882(2.3%) for-loop (unknown source) finish-bodys [176] 62.9% for-loop [206] 3.7% loop [198] 3.3% syntax-e [6] 3.1% expand-implicit [10] 2.4% ---------------------------------------------------------------------------