Profiling results ----------------- Total cpu time observed: 232188ms (out of 233764ms) Number of samples taken: 694 (once every 335ms) (Hiding functions with self<1.0% and local<2.0%: 6 of 207 hidden) ============================================================================ Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ============================================================================ ??? [91] 100.0% [1] 232188(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [11] 100.0% ---------------------------------------------------------------------------- ??? [91] 100.0% [2] 88876(38.3%) 0(0.0%) run-improve47 ...bie/master/src/mainloop.rkt:342:0 for-loop [13] 95.1% prepare-points [12] 4.4% simplify! [31] 0.5% ---------------------------------------------------------------------------- ??? [145] 100.0% [3] 2810(1.2%) 0(0.0%) approximate9 ...ie/master/src/core/taylor.rkt:12:0 loop [14] 84.6% for-loop [21] 15.4% ---------------------------------------------------------------------------- ??? [145] 12.9% hash-ref! [154] 87.1% [4] 2730(1.2%) 0(0.0%) simplify ...herbie/master/src/core/reduce.rkt:16:0 f46 [18] 61.8% parse-loop80 [123] 38.2% ---------------------------------------------------------------------------- expand-capturing-lifts [179] 15.6% loop [197] 28.7% for-loop [196] 55.7% [5] 2302(1.0%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [15] 100.0% ---------------------------------------------------------------------------- ??? [91] 100.0% [6] 1888(0.8%) 0(0.0%) get-final-combination ...er/src/mainloop.rkt:365:0 infer-splitpoints [17] 100.0% ---------------------------------------------------------------------------- for-loop [196] 100.0% [7] 1560(0.7%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [16] 100.0% ---------------------------------------------------------------------------- hash-ref! [154] 100.0% [8] 1354(0.6%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:407:23 for-loop [19] 73.4% for-loop [27] 26.6% ---------------------------------------------------------------------------- hash-ref! [154] 100.0% [9] 720(0.3%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:291:26 for-loop [20] 100.0% ---------------------------------------------------------------------------- hash-ref! [154] 100.0% [10] 300(0.1%) 0(0.0%) ??? ...es/herbie/master/src/core/taylor.rkt:301:23 for-loop [22] 100.0% ---------------------------------------------------------------------------- profile-thunk16 [1] 100.0% [11] 232188(100.0%) 0(0.0%) run ...et-7.0/share/pkgs/profile-lib/main.rkt:39:2 ??? [91] 100.0% ---------------------------------------------------------------------------- run-improve47 [2] 2.9% ??? [91] 97.1% [12] 134150(57.8%) 0(0.0%) prepare-points ...rbie/master/src/points.rkt:146:0 loop [23] 99.7% eval-prog [131] 0.3% ---------------------------------------------------------------------------- run-improve47 [2] 100.0% [13] 84560(36.4%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:359:4 run-iter! [24] 100.0% ---------------------------------------------------------------------------- approximate9 [3] 100.0% [14] 2378(1.0%) 0(0.0%) loop ...ies/herbie/master/src/core/taylor.rkt:87:4 ??? [145] 100.0% ---------------------------------------------------------------------------- dispatch-transformer41 [5] 100.0% [15] 2302(1.0%) 360(0.2%) apply-transformer52 (unknown source) apply-transformer-in-context [28] 57.3% loop [197] 27.0% ---------------------------------------------------------------------------- expand-id-application-form17 [201] 11.6% core-form-sym [200] 15.1% expand-implicit [7] 73.2% [16] 2130(0.9%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [25] 100.0% ---------------------------------------------------------------------------- get-final-combination [6] 100.0% [17] 1888(0.8%) 0(0.0%) infer-splitpoints ...ter/src/core/regimes.rkt:34:0 for-loop [26] 100.0% ---------------------------------------------------------------------------- loop [125] 5.9% map [117] 26.3% simplify [4] 67.8% [18] 1686(0.7%) 0(0.0%) f46 ...0/collects/racket/match/compiler.rkt:507:40 map [117] 89.6% composed [29] 10.4% ---------------------------------------------------------------------------- ??? [8] 100.0% [19] 994(0.4%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:411:33 for-loop [27] 100.0% ---------------------------------------------------------------------------- ??? [9] 100.0% [20] 720(0.3%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:291:52 hash-ref! [154] 100.0% ---------------------------------------------------------------------------- approximate9 [3] 100.0% [21] 432(0.2%) 432(0.2%) for-loop ...herbie/master/src/core/taylor.rkt:20:9 ---------------------------------------------------------------------------- ??? [10] 100.0% [22] 300(0.1%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:304:27 hash-ref! [154] 100.0% ---------------------------------------------------------------------------- prepare-points [12] 100.0% [23] 133794(57.6%) 0(0.0%) loop ...ghtlies/herbie/master/src/points.rkt:122:4 loop [30] 98.4% infer-representation [156] 0.9% ??? [37] 0.7% ---------------------------------------------------------------------------- for-loop [13] 100.0% [24] 84560(36.4%) 0(0.0%) run-iter! .../herbie/master/src/mainloop.rkt:323:0 simplify! [31] 83.3% finalize-iter! [32] 9.6% gen-series! [33] 3.7% choose-best-alt! [35] 1.8% localize! [36] 1.1% gen-rewrites! [41] 0.4% ---------------------------------------------------------------------------- resolve+shift28 [16] 100.0% [25] 2130(0.9%) 0(0.0%) fallback-loop (unknown source) for-loop [196] 100.0% ---------------------------------------------------------------------------- infer-splitpoints [17] 100.0% [26] 1888(0.8%) 0(0.0%) for-loop ...erbie/master/src/core/regimes.rkt:46:6 option-on-expr [34] 100.0% ---------------------------------------------------------------------------- ??? [8] 26.6% for-loop [19] 73.4% [27] 1354(0.6%) 0(0.0%) for-loop ...rbie/master/src/core/taylor.rkt:413:39 hash-ref! [154] 100.0% ---------------------------------------------------------------------------- apply-transformer52 [15] 100.0% [28] 1320(0.6%) 0(0.0%) apply-transformer-in-context (unknown source) parse-app [38] 50.0% parse-lambda [39] 27.3% datum->syntax6 [42] 22.7% ---------------------------------------------------------------------------- f46 [18] 100.0% [29] 352(0.2%) 0(0.0%) composed ...ollects/racket/private/list.rkt:321:16 free-variables [40] 100.0% ---------------------------------------------------------------------------- loop [23] 100.0% [30] 131608(56.7%) 2144(0.9%) loop ...ightlies/herbie/master/src/points.rkt:81:2 ??? [134] 98.4% ---------------------------------------------------------------------------- run-improve47 [2] 0.6% run-iter! [24] 99.4% [31] 70884(30.5%) 0(0.0%) simplify! .../herbie/master/src/mainloop.rkt:220:0 ??? [43] 100.0% ---------------------------------------------------------------------------- run-iter! [24] 100.0% [32] 8144(3.5%) 0(0.0%) finalize-iter! ...ie/master/src/mainloop.rkt:274:0 ??? [44] 100.0% ---------------------------------------------------------------------------- run-iter! [24] 100.0% [33] 3162(1.4%) 0(0.0%) gen-series! ...erbie/master/src/mainloop.rkt:156:0 for-loop [45] 100.0% ---------------------------------------------------------------------------- for-loop [26] 100.0% [34] 1888(0.8%) 0(0.0%) option-on-expr ...aster/src/core/regimes.rkt:126:0 for-loop [46] 67.1% sort-context-on-expr [49] 32.9% ---------------------------------------------------------------------------- run-iter! [24] 100.0% [35] 1496(0.6%) 0(0.0%) choose-best-alt! .../master/src/mainloop.rkt:114:0 ??? [44] 100.0% ---------------------------------------------------------------------------- run-iter! [24] 100.0% [36] 956(0.4%) 0(0.0%) localize! .../herbie/master/src/mainloop.rkt:123:0 localize-error [47] 100.0% ---------------------------------------------------------------------------- loop [23] 100.0% [37] 920(0.4%) 300(0.1%) ??? ...ightlies/herbie/master/src/points.rkt:106:2 ??? [145] 67.4% ---------------------------------------------------------------------------- apply-transformer-in-context [28] 100.0% [38] 660(0.3%) 0(0.0%) parse-app ...collects/racket/private/kw.rkt:1105:2 check-loc [52] 50.6% syntax-e [48] 49.4% ---------------------------------------------------------------------------- apply-transformer-in-context [28] 100.0% [39] 360(0.2%) 0(0.0%) parse-lambda ...llects/racket/private/kw.rkt:585:2 stx-car [50] 100.0% ---------------------------------------------------------------------------- composed [29] 20.0% append-map [51] 80.0% [40] 352(0.2%) 0(0.0%) free-variables ...bie/master/src/programs.rkt:57:0 append-map [51] 100.0% ---------------------------------------------------------------------------- run-iter! [24] 100.0% [41] 334(0.1%) 0(0.0%) gen-rewrites! ...bie/master/src/mainloop.rkt:179:0 for-loop [53] 100.0% ---------------------------------------------------------------------------- apply-transformer-in-context [28] 100.0% [42] 300(0.1%) 0(0.0%) datum->syntax6 (unknown source) loop [197] 100.0% ---------------------------------------------------------------------------- simplify! [31] 100.0% [43] 70884(30.5%) 0(0.0%) ??? ...es/herbie/master/src/core/simplify.rkt:26:0 for-loop [54] 93.4% one-iter [63] 4.0% loop [57] 2.2% loop [125] 0.5% ---------------------------------------------------------------------------- choose-best-alt! [35] 11.1% match-e [88] 11.9% variable? [95] 16.3% finalize-iter! [32] 60.7% [44] 13426(5.8%) 3786(1.6%) ??? ...contract/private/arrow-val-first.rkt:388:18 for-loop [55] 58.2% ??? [58] 11.1% atab-add-altns [60] 2.5% ---------------------------------------------------------------------------- gen-series! [33] 100.0% [45] 3162(1.4%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:163:7 taylor-alt [56] 100.0% ---------------------------------------------------------------------------- option-on-expr [34] 100.0% [46] 1266(0.5%) 0(0.0%) for-loop ...rbie/master/src/core/regimes.rkt:137:4 errors [72] 100.0% ---------------------------------------------------------------------------- localize! [36] 100.0% [47] 956(0.4%) 0(0.0%) localize-error ...aster/src/core/localize.rkt:61:0 hash-ref! [154] 100.0% ---------------------------------------------------------------------------- loop [197] 47.9% parse-app [38] 52.1% [48] 626(0.3%) 326(0.1%) syntax-e (unknown source) syntax-e/no-taint [62] 47.9% ---------------------------------------------------------------------------- option-on-expr [34] 100.0% [49] 622(0.3%) 0(0.0%) sort-context-on-expr ...src/core/regimes.rkt:118:0 ??? [59] 100.0% ---------------------------------------------------------------------------- parse-lambda [39] 100.0% [50] 360(0.2%) 360(0.2%) stx-car ....0/collects/racket/private/stx.rkt:67:4 ---------------------------------------------------------------------------- free-variables [40] 100.0% [51] 352(0.2%) 352(0.2%) append-map ...t-7.0/collects/racket/list.rkt:586:2 free-variables [40] 80.0% ---------------------------------------------------------------------------- parse-app [38] 100.0% [52] 334(0.1%) 334(0.1%) check-loc ...cts/racket/private/template.rkt:602:0 ---------------------------------------------------------------------------- gen-rewrites! [41] 100.0% [53] 334(0.1%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:204:4 for-loop [61] 100.0% ---------------------------------------------------------------------------- ??? [43] 100.0% [54] 66186(28.5%) 0(0.0%) for-loop ...rbie/master/src/core/simplify.rkt:33:2 one-iter [63] 100.0% ---------------------------------------------------------------------------- ??? [44] 100.0% [55] 7808(3.4%) 0(0.0%) for-loop ...bie/master/src/core/alt-table.rkt:56:2 atab-add-altn [64] 72.0% errors [72] 19.9% for-loop [67] 8.0% ---------------------------------------------------------------------------- for-loop [45] 100.0% [56] 3162(1.4%) 0(0.0%) taylor-alt ...herbie/master/src/mainloop.rkt:142:0 for-loop [65] 100.0% ---------------------------------------------------------------------------- ??? [43] 100.0% [57] 1560(0.7%) 0(0.0%) loop .../herbie/master/src/core/simplify.rkt:104:2 for-loop [66] 80.8% debug-print [69] 19.2% ---------------------------------------------------------------------------- ??? [44] 100.0% [58] 1496(0.6%) 0(0.0%) ??? ...s/herbie/master/src/core/alt-table.rkt:59:0 ??? [145] 100.0% ---------------------------------------------------------------------------- sort-context-on-expr [49] 100.0% [59] 622(0.3%) 0(0.0%) ??? ...-7.0/collects/racket/private/sort.rkt:369:3 generic-sort/key [68] 100.0% ---------------------------------------------------------------------------- ??? [44] 100.0% [60] 336(0.1%) 0(0.0%) atab-add-altns ...ster/src/core/alt-table.rkt:50:0 atab-add-altn [64] 100.0% ---------------------------------------------------------------------------- for-loop [53] 100.0% [61] 334(0.1%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:205:6 ??? [145] 100.0% ---------------------------------------------------------------------------- syntax-e [48] 100.0% [62] 300(0.1%) 0(0.0%) syntax-e/no-taint (unknown source) loop [197] 100.0% ---------------------------------------------------------------------------- ??? [43] 4.1% for-loop [54] 95.9% [63] 69000(29.7%) 0(0.0%) one-iter ...rbie/master/src/core/simplify.rkt:65:0 for-loop [70] 51.6% find-matches [71] 41.8% for-loop [73] 5.7% for-loop [76] 0.9% ---------------------------------------------------------------------------- atab-add-altns [60] 5.6% for-loop [55] 94.4% [64] 5960(2.6%) 0(0.0%) atab-add-altn ...ster/src/core/alt-table.rkt:203:0 errors [72] 95.0% override-at-pnts [80] 5.0% ---------------------------------------------------------------------------- taylor-alt [56] 100.0% [65] 3162(1.4%) 0(0.0%) for-loop ...s/herbie/master/src/mainloop.rkt:148:6 ??? [145] 100.0% ---------------------------------------------------------------------------- loop [57] 100.0% [66] 1260(0.5%) 0(0.0%) for-loop ...bie/master/src/core/simplify.rkt:110:4 for-loop [74] 100.0% ---------------------------------------------------------------------------- for-loop [55] 100.0% [67] 628(0.3%) 0(0.0%) for-loop ...ie/master/src/core/alt-table.rkt:119:2 ??? [75] 100.0% ---------------------------------------------------------------------------- ??? [59] 100.0% [68] 622(0.3%) 0(0.0%) generic-sort/key .../racket/private/sort.rkt:156:2 copying-mergesort [77] 51.4% loop [78] 48.6% ---------------------------------------------------------------------------- loop [57] 100.0% [69] 300(0.1%) 0(0.0%) debug-print ...s/herbie/master/src/debug.rkt:110:0 ??? [79] 100.0% ---------------------------------------------------------------------------- one-iter [63] 100.0% [70] 35616(15.3%) 0(0.0%) for-loop ...rbie/master/src/core/simplify.rkt:67:2 for-loop [81] 100.0% ---------------------------------------------------------------------------- one-iter [63] 100.0% [71] 28874(12.4%) 0(0.0%) find-matches .../master/src/core/simplify.rkt:55:0 for-loop [82] 100.0% ---------------------------------------------------------------------------- ??? [91] 8.9% for-loop [46] 11.6% ??? [174] 13.7% for-loop [55] 14.2% atab-add-altn [64] 51.7% [72] 10954(4.7%) 0(0.0%) errors ...tlies/herbie/master/src/points.rkt:205:0 for-loop [83] 85.9% eval-prog [131] 14.1% ---------------------------------------------------------------------------- one-iter [63] 100.0% [73] 3912(1.7%) 0(0.0%) for-loop ...rbie/master/src/core/simplify.rkt:72:2 set-precompute! [84] 100.0% ---------------------------------------------------------------------------- for-loop [66] 100.0% [74] 1260(0.5%) 310(0.1%) for-loop ...ie/master/src/core/simplify.rkt:114:16 for-loop [85] 75.4% ---------------------------------------------------------------------------- for-loop [67] 100.0% [75] 628(0.3%) 628(0.3%) ??? ...7.0/collects/racket/private/for.rkt:1208:14 ---------------------------------------------------------------------------- one-iter [63] 100.0% [76] 598(0.3%) 0(0.0%) for-loop ...rbie/master/src/core/simplify.rkt:75:2 update-leader! [99] 100.0% ---------------------------------------------------------------------------- generic-sort/key [68] 25.0% copying-mergesort [77] 75.0% [77] 320(0.1%) 0(0.0%) copying-mergesort ...racket/private/sort.rkt:129:8 copying-mergesort [77] 75.0% jloop [86] 25.0% ---------------------------------------------------------------------------- generic-sort/key [68] 100.0% [78] 302(0.1%) 0(0.0%) loop ...7.0/collects/racket/private/sort.rkt:96:12 ??? [134] 100.0% ---------------------------------------------------------------------------- debug-print [69] 100.0% [79] 300(0.1%) 300(0.1%) ??? .../contract/private/arrow-val-first.rkt:428:3 ---------------------------------------------------------------------------- atab-add-altn [64] 100.0% [80] 300(0.1%) 0(0.0%) override-at-pnts ...r/src/core/alt-table.rkt:138:0 for-loop [87] 100.0% ---------------------------------------------------------------------------- for-loop [70] 100.0% [81] 35616(15.3%) 0(0.0%) for-loop ...rbie/master/src/core/simplify.rkt:70:4 merge-egraph-nodes! [92] 81.8% dedup-children! [109] 12.9% substitute-e [90] 3.4% mk-enode! [102] 1.9% ---------------------------------------------------------------------------- for-loop [82] 49.5% find-matches [71] 50.5% [82] 28874(12.4%) 904(0.4%) for-loop ...rbie/master/src/core/simplify.rkt:57:8 for-loop [82] 49.5% match-e [88] 48.4% ---------------------------------------------------------------------------- errors [72] 100.0% [83] 9408(4.1%) 300(0.1%) for-loop ...ies/herbie/master/src/points.rkt:207:2 ??? [91] 96.8% ---------------------------------------------------------------------------- for-loop [73] 100.0% [84] 3912(1.7%) 0(0.0%) set-precompute! ...ster/src/core/simplify.rkt:79:0 for-loop [89] 100.0% ---------------------------------------------------------------------------- for-loop [74] 100.0% [85] 950(0.4%) 950(0.4%) for-loop ...ie/master/src/core/simplify.rkt:118:23 ---------------------------------------------------------------------------- copying-mergesort [77] 100.0% [86] 320(0.1%) 0(0.0%) jloop ...0/collects/racket/private/sort.rkt:120:23 precision->real [104] 100.0% ---------------------------------------------------------------------------- override-at-pnts [80] 100.0% [87] 300(0.1%) 300(0.1%) for-loop ...e/master/src/core/alt-table.rkt:139:22 ---------------------------------------------------------------------------- for-loop [98] 34.9% for-loop [82] 65.1% [88] 27970(12.0%) 3166(1.4%) match-e .../herbie/master/src/core/ematch.rkt:39:0 for-loop [93] 79.1% constant? [94] 6.5% variable? [95] 4.3% ??? [44] 2.1% ---------------------------------------------------------------------------- set-precompute! [84] 100.0% [89] 3912(1.7%) 416(0.2%) for-loop ...rbie/master/src/core/simplify.rkt:81:2 merge-egraph-nodes! [92] 40.6% ??? [91] 40.3% setfindf [97] 8.5% ---------------------------------------------------------------------------- for-loop [96] 41.9% for-loop [81] 58.1% [90] 1228(0.5%) 0(0.0%) substitute-e ...ie/master/src/core/ematch.rkt:64:0 for-loop [96] 78.4% constant? [94] 21.6% ---------------------------------------------------------------------------- for-loop [89] 0.2% for-loop [83] 1.3% run [11] 49.2% [91] 232188(100.0%) 630(0.3%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [1] 49.2% prepare-points [12] 28.0% run-improve47 [2] 18.5% oracle-error [100] 1.8% ??? [134] 0.9% get-final-combination [6] 0.3% eval-const-expr [127] 0.2% eval-errors [103] 0.2% errors [72] 0.2% infer-double-representation [139] 0.1% loop [125] 0.1% precision->real [104] 0.1% baseline-error [106] 0.1% ---------------------------------------------------------------------------- for-loop [89] 4.6% for-loop [101] 6.6% merge-egraph-nodes! [92] 8.0% for-loop [81] 80.7% [92] 30728(13.2%) 298(0.1%) merge-egraph-nodes! ...r/src/core/egraph.rkt:143:0 update-leader! [99] 46.6% loop! [129] 31.2% merge-egraph-nodes! [92] 8.0% for-loop [101] 6.8% dedup-children! [109] 5.2% ---------------------------------------------------------------------------- match-e [88] 100.0% [93] 25432(11.0%) 7936(3.4%) for-loop ...erbie/master/src/core/ematch.rkt:52:11 for-loop [98] 54.5% loop [125] 24.8% foldl [132] 1.9% ---------------------------------------------------------------------------- substitute-e [90] 16.3% match-e [88] 83.7% [94] 3868(1.7%) 336(0.1%) constant? ...ie/master/src/syntax/syntax.rkt:719:0 value? [122] 91.3% ---------------------------------------------------------------------------- match-e [88] 100.0% [95] 3456(1.5%) 0(0.0%) variable? ...ie/master/src/syntax/syntax.rkt:722:0 ??? [44] 63.5% value? [122] 36.5% ---------------------------------------------------------------------------- substitute-e [90] 100.0% [96] 1228(0.5%) 0(0.0%) for-loop ...erbie/master/src/core/ematch.rkt:73:24 substitute-e [90] 63.5% mk-enode! [102] 36.5% ---------------------------------------------------------------------------- for-loop [89] 100.0% [97] 332(0.1%) 0(0.0%) setfindf ...ies/herbie/master/src/common.rkt:142:0 for-loop [105] 100.0% ---------------------------------------------------------------------------- for-loop [93] 100.0% [98] 17840(7.7%) 334(0.1%) for-loop ...erbie/master/src/core/ematch.rkt:58:37 match-e [88] 95.5% ??? [112] 3.5% ---------------------------------------------------------------------------- for-loop [76] 3.7% merge-egraph-nodes! [92] 96.3% [99] 16324(7.0%) 322(0.1%) update-leader! ...master/src/core/egraph.rkt:211:0 for-loop [107] 94.0% for-loop [111] 4.1% ---------------------------------------------------------------------------- ??? [91] 100.0% [100] 8446(3.6%) 0(0.0%) oracle-error ...herbie/master/src/points.rkt:188:0 for-loop [108] 100.0% ---------------------------------------------------------------------------- merge-egraph-nodes! [92] 100.0% [101] 4650(2.0%) 0(0.0%) for-loop ...erbie/master/src/core/egraph.rkt:197:4 merge-egraph-nodes! [92] 97.7% dedup-children! [109] 2.3% ---------------------------------------------------------------------------- for-loop [96] 47.3% for-loop [81] 52.7% [102] 1264(0.5%) 666(0.3%) mk-enode! ...erbie/master/src/core/egraph.rkt:97:0 new-enode [113] 23.7% hash-has-key? [114] 23.6% ---------------------------------------------------------------------------- ??? [176] 24.8% ??? [91] 75.2% [103] 1204(0.5%) 0(0.0%) eval-errors .../herbie/master/src/points.rkt:179:0 for-loop [110] 100.0% ---------------------------------------------------------------------------- jloop [86] 33.6% ??? [91] 66.4% [104] 952(0.4%) 298(0.1%) precision->real ...e/master/src/programs.rkt:92:33 infer-representation [156] 68.7% ---------------------------------------------------------------------------- setfindf [97] 100.0% [105] 332(0.1%) 332(0.1%) for-loop ...ies/herbie/master/src/common.rkt:143:2 ---------------------------------------------------------------------------- ??? [91] 100.0% [106] 298(0.1%) 0(0.0%) baseline-error ...rbie/master/src/points.rkt:192:0 loop [158] 100.0% ---------------------------------------------------------------------------- update-leader! [99] 100.0% [107] 15340(6.6%) 648(0.3%) for-loop ...erbie/master/src/core/egraph.rkt:216:6 for-loop [115] 56.5% hash-update! [121] 39.3% ---------------------------------------------------------------------------- oracle-error [100] 100.0% [108] 8446(3.6%) 164(0.1%) for-loop ...ies/herbie/master/src/points.rkt:189:2 loop [125] 74.4% map [117] 20.7% argmin [161] 3.0% ---------------------------------------------------------------------------- for-loop [101] 4.4% merge-egraph-nodes! [92] 31.7% for-loop [81] 63.9% [109] 7174(3.1%) 0(0.0%) dedup-children! ...master/src/core/enode.rkt:195:0 loop [116] 86.8% loop [118] 13.2% ---------------------------------------------------------------------------- eval-errors [103] 100.0% [110] 1204(0.5%) 0(0.0%) for-loop ...ies/herbie/master/src/points.rkt:181:2 ??? [134] 73.8% infer-double-representation [139] 26.2% ---------------------------------------------------------------------------- update-leader! [99] 100.0% [111] 662(0.3%) 662(0.3%) for-loop ...erbie/master/src/core/egraph.rkt:226:6 ---------------------------------------------------------------------------- for-loop [98] 100.0% [112] 628(0.3%) 330(0.1%) ??? ...lies/herbie/master/src/core/ematch.rkt:43:5 for-loop [120] 47.5% ---------------------------------------------------------------------------- mk-enode! [102] 100.0% [113] 300(0.1%) 0(0.0%) new-enode ...herbie/master/src/core/enode.rkt:94:0 check-valid-enode5 [119] 100.0% ---------------------------------------------------------------------------- mk-enode! [102] 100.0% [114] 298(0.1%) 298(0.1%) hash-has-key? ...ket/private/more-scheme.rkt:371:2 ---------------------------------------------------------------------------- for-loop [107] 100.0% [115] 8666(3.7%) 0(0.0%) for-loop ...erbie/master/src/core/egraph.rkt:217:8 hash-update! [121] 100.0% ---------------------------------------------------------------------------- dedup-children! [109] 8.3% loop [116] 91.7% [116] 6226(2.7%) 6226(2.7%) loop ...racket-7.0/collects/racket/list.rkt:434:17 loop [116] 91.7% ---------------------------------------------------------------------------- parse-loop80 [123] 21.8% f46 [18] 38.4% for-loop [108] 39.8% [117] 4390(1.9%) 0(0.0%) map ...t-7.0/collects/racket/private/map.rkt:35:13 loop [125] 43.6% parse-loop80 [123] 24.3% f46 [18] 14.1% hash-ref! [154] 12.1% ??? [130] 5.8% ---------------------------------------------------------------------------- dedup-children! [109] 11.2% loop [118] 88.8% [118] 948(0.4%) 0(0.0%) loop ...racket-7.0/collects/racket/list.rkt:417:34 loop [118] 88.8% loop [197] 7.4% member [124] 3.8% ---------------------------------------------------------------------------- new-enode [113] 100.0% [119] 300(0.1%) 0(0.0%) check-valid-enode5 ...ter/src/core/enode.rkt:204:0 value? [122] 100.0% ---------------------------------------------------------------------------- ??? [112] 100.0% [120] 298(0.1%) 298(0.1%) for-loop ...herbie/master/src/core/ematch.rkt:44:7 ---------------------------------------------------------------------------- for-loop [107] 41.0% for-loop [115] 59.0% [121] 14692(6.3%) 0(0.0%) hash-update! ...cket/private/more-scheme.rkt:365:4 ??? [126] 100.0% ---------------------------------------------------------------------------- check-valid-enode5 [119] 5.9% variable? [95] 24.8% constant? [94] 69.3% [122] 5094(2.2%) 5094(2.2%) value? .../herbie/master/src/syntax/types.rkt:18:0 ---------------------------------------------------------------------------- hash-ref! [154] 28.7% simplify [4] 31.3% map [117] 40.0% [123] 3334(1.4%) 334(0.1%) parse-loop80 ...s/racket/match/compiler.rkt:418:15 eval-const-expr [127] 56.8% map [117] 28.7% loop [125] 4.5% ---------------------------------------------------------------------------- loop [118] 100.0% [124] 324(0.1%) 324(0.1%) member (unknown source) ---------------------------------------------------------------------------- parse-loop80 [123] 0.4% ??? [43] 1.4% ??? [91] 1.5% loop! [129] 2.0% for-loop [93] 2.5% map [117] 3.9% for-loop [108] 15.6% loop [125] 72.7% [125] 23788(10.2%) 5460(2.4%) loop ...-7.0/collects/racket/private/map.rkt:40:19 loop [125] 72.7% ??? [130] 16.2% ??? [134] 2.6% loop! [129] 1.9% eval-prog [131] 1.5% foldl [132] 0.8% f46 [18] 0.4% ??? [141] 0.1% bf* [133] 0.0% ---------------------------------------------------------------------------- hash-update! [121] 100.0% [126] 14692(6.3%) 336(0.1%) ??? ...es/herbie/master/src/core/egraph.rkt:219:24 for-loop [128] 97.7% ---------------------------------------------------------------------------- ??? [91] 43.5% parse-loop80 [123] 56.5% [127] 3620(1.6%) 0(0.0%) eval-const-expr ...e/master/src/programs.rkt:111:0 eval-prog [131] 100.0% ---------------------------------------------------------------------------- ??? [126] 100.0% [128] 14356(6.2%) 13342(5.7%) for-loop ...rbie/master/src/core/egraph.rkt:220:26 update-en-expr [140] 7.1% ---------------------------------------------------------------------------- loop [125] 29.3% merge-egraph-nodes! [92] 70.7% [129] 11746(5.1%) 3248(1.4%) loop! ...es/herbie/master/src/core/enode.rkt:187:2 loop [125] 37.9% custom-set-union [136] 31.4% set [137] 11.4% update-en-expr [140] 3.7% ---------------------------------------------------------------------------- map [117] 3.7% loop [125] 96.3% [130] 7004(3.0%) 250(0.1%) ??? ...ghtlies/herbie/master/src/points.rkt:190:26 ??? [134] 82.0% infer-double-representation [139] 14.4% ---------------------------------------------------------------------------- prepare-points [12] 5.9% loop [125] 9.0% errors [72] 25.5% eval-const-expr [127] 59.6% [131] 6070(2.6%) 0(0.0%) eval-prog ...s/herbie/master/src/programs.rkt:83:0 temp68_2 [135] 83.9% loop [197] 5.9% eval [142] 5.3% eval-one-top12 [143] 4.9% ---------------------------------------------------------------------------- for-loop [93] 27.3% loop [125] 72.7% [132] 2344(1.0%) 0(0.0%) foldl ....0/collects/racket/private/list.rkt:229:4 merge2 [138] 100.0% ---------------------------------------------------------------------------- loop [125] 100.0% [133] 314(0.1%) 0(0.0%) bf* ...ath/private/bigfloat/bigfloat-mpfr.rkt:95:0 ??? [141] 100.0% ---------------------------------------------------------------------------- loop [78] 0.2% loop [125] 0.5% for-loop [110] 0.6% ??? [130] 4.0% ??? [91] 4.6% loop [30] 90.1% [134] 143734(61.9%) 0(0.0%) ??? ...htlies/herbie/master/src/programs.rkt:108:2 ??? [144] 97.9% ??? [145] 1.3% real->precision [149] 0.6% ??? [151] 0.2% ---------------------------------------------------------------------------- eval-prog [131] 100.0% [135] 5092(2.2%) 0(0.0%) temp68_2 (unknown source) compile16 [146] 100.0% ---------------------------------------------------------------------------- loop! [129] 100.0% [136] 3846(1.7%) 2192(0.9%) custom-set-union ...et/private/set-types.rkt:168:0 for-loop [148] 43.0% ---------------------------------------------------------------------------- loop! [129] 100.0% [137] 2678(1.2%) 2678(1.2%) set ...collects/racket/private/set-types.rkt:981:0 ---------------------------------------------------------------------------- foldl [132] 100.0% [138] 2344(1.0%) 2344(1.0%) merge2 ...s/herbie/master/src/core/ematch.rkt:24:0 ---------------------------------------------------------------------------- for-loop [110] 13.7% ??? [91] 42.7% ??? [130] 43.6% [139] 2314(1.0%) 0(0.0%) infer-double-representation .../src/float.rkt:22:0 for-loop [147] 100.0% ---------------------------------------------------------------------------- loop! [129] 48.9% for-loop [128] 51.1% [140] 1984(0.9%) 1984(0.9%) update-en-expr ...master/src/core/egraph.rkt:205:0 ---------------------------------------------------------------------------- bf* [133] 47.6% loop [125] 52.4% [141] 660(0.3%) 660(0.3%) ??? ...-racket/utils/simple-result-arrow.rkt:39:12 ---------------------------------------------------------------------------- eval-prog [131] 100.0% [142] 322(0.1%) 0(0.0%) eval (unknown source) namespace-syntax-introduce3 [150] 100.0% ---------------------------------------------------------------------------- eval-prog [131] 100.0% [143] 300(0.1%) 0(0.0%) eval-one-top12 (unknown source) for-loop [196] 100.0% ---------------------------------------------------------------------------- ??? [134] 100.0% [144] 140660(60.6%) 2686(1.2%) ??? ...t-7.0/collects/racket/private/kw.rkt:592:14 ??? [151] 90.7% ??? [152] 7.4% ---------------------------------------------------------------------------- for-loop [61] 4.4% ??? [37] 8.2% loop [14] 10.5% location-do [155] 15.7% for-loop [65] 15.7% ??? [58] 19.8% ??? [134] 25.6% [145] 7538(3.2%) 334(0.1%) ??? ...tract/private/arrow-higher-order.rkt:357:33 mk-ival [157] 25.6% loop [158] 15.9% location-do [155] 15.7% approximate9 [3] 13.4% hash-ref! [154] 10.5% sample-multi-bounded [160] 8.2% argmin [161] 4.0% simplify [4] 2.3% ---------------------------------------------------------------------------- temp68_2 [135] 100.0% [146] 5092(2.2%) 0(0.0%) compile16 (unknown source) temp74_0 [153] 100.0% ---------------------------------------------------------------------------- infer-double-representation [139] 100.0% [147] 2314(1.0%) 836(0.4%) for-loop ...tlies/herbie/master/src/float.rkt:17:3 ??? [170] 25.1% return/no-unsupplied [171] 24.8% ??? [162] 14.0% ---------------------------------------------------------------------------- custom-set-union [136] 100.0% [148] 1654(0.7%) 680(0.3%) for-loop ...cts/racket/private/set-types.rkt:174:3 for-loop [159] 58.9% ---------------------------------------------------------------------------- ??? [134] 100.0% [149] 912(0.4%) 0(0.0%) real->precision ...e/master/src/programs.rkt:87:33 infer-representation [156] 100.0% ---------------------------------------------------------------------------- eval [142] 100.0% [150] 322(0.1%) 0(0.0%) namespace-syntax-introduce3 (unknown source) add-ns-scopes [163] 100.0% ---------------------------------------------------------------------------- ??? [134] 0.2% ??? [144] 99.8% [151] 127774(55.0%) 51160(22.0%) ??? ...tract/private/arrow-higher-order.rkt:361:33 ival-expm1 [164] 18.4% ival-atan2 [165] 18.1% ival-sin [166] 9.7% ival-fmod [167] 6.8% ival-atan [168] 4.5% ival-fabs [180] 2.5% ---------------------------------------------------------------------------- ??? [144] 100.0% [152] 10436(4.5%) 6040(2.6%) ??? .../herbie/master/src/syntax/syntax.rkt:207:17 ??? [170] 19.0% return/no-unsupplied [171] 17.3% list-member? [175] 5.7% ---------------------------------------------------------------------------- compile16 [146] 100.0% [153] 5092(2.2%) 0(0.0%) temp74_0 (unknown source) expand-single [169] 94.1% compile-top9 [177] 5.9% ---------------------------------------------------------------------------- for-loop [22] 2.2% for-loop [20] 7.0% for-loop [27] 10.4% localize-error [47] 12.7% map [117] 16.0% ??? [172] 25.8% ??? [145] 25.8% [154] 3334(1.4%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 parse-loop80 [123] 28.7% ??? [172] 25.8% simplify [4] 25.8% ??? [8] 10.4% ??? [9] 7.0% ??? [10] 2.2% ---------------------------------------------------------------------------- ??? [145] 29.9% location-do [155] 70.1% [155] 3162(1.4%) 0(0.0%) location-do ...herbie/master/src/programs.rkt:64:0 location-do [155] 70.1% ??? [145] 29.9% ---------------------------------------------------------------------------- precision->real [104] 23.1% real->precision [149] 32.2% loop [23] 44.7% [156] 2832(1.2%) 2062(0.9%) infer-representation .../master/src/float.rkt:15:0 list-member? [175] 11.3% return/no-unsupplied [171] 10.5% ??? [170] 5.4% ---------------------------------------------------------------------------- ??? [145] 100.0% [157] 1926(0.8%) 0(0.0%) mk-ival .../herbie/master/src/biginterval.rkt:57:0 bf [173] 100.0% ---------------------------------------------------------------------------- baseline-error [106] 19.9% ??? [145] 80.1% [158] 1494(0.6%) 0(0.0%) loop .../racket-7.0/collects/racket/list.rkt:751:4 ??? [174] 80.1% ??? [176] 19.9% ---------------------------------------------------------------------------- for-loop [148] 100.0% [159] 974(0.4%) 974(0.4%) for-loop ...cts/racket/private/set-types.rkt:178:5 ---------------------------------------------------------------------------- ??? [145] 100.0% [160] 620(0.3%) 324(0.1%) sample-multi-bounded ...master/src/points.rkt:15:0 random-ranges [178] 47.7% ---------------------------------------------------------------------------- for-loop [108] 45.5% ??? [145] 54.5% [161] 550(0.2%) 250(0.1%) argmin ...acket-7.0/collects/racket/list.rkt:765:0 ??? [174] 54.5% ---------------------------------------------------------------------------- for-loop [147] 100.0% [162] 324(0.1%) 324(0.1%) ??? ...ects/racket/contract/private/guts.rkt:746:8 ---------------------------------------------------------------------------- namespace-syntax-introduce3 [150] 100.0% [163] 322(0.1%) 0(0.0%) add-ns-scopes (unknown source) gf [199] 100.0% ---------------------------------------------------------------------------- ??? [151] 100.0% [164] 23498(10.1%) 20166(8.7%) ival-expm1 ...bie/master/src/biginterval.rkt:183:0 bfexpm1 [190] 14.2% ---------------------------------------------------------------------------- ??? [151] 100.0% [165] 23122(10.0%) 21562(9.3%) ival-atan2 ...bie/master/src/biginterval.rkt:318:0 bfsub [189] 6.7% ---------------------------------------------------------------------------- ??? [151] 100.0% [166] 12342(5.3%) 3130(1.3%) ival-sin ...erbie/master/src/biginterval.rkt:292:0 bfsub [189] 23.2% pi.bf [184] 16.7% bftruncate [181] 15.9% bfexpm1 [190] 14.0% bfodd? [186] 2.4% bfeven? [187] 2.4% ---------------------------------------------------------------------------- ??? [151] 100.0% [167] 8634(3.7%) 1564(0.7%) ival-fmod ...rbie/master/src/biginterval.rkt:382:0 ival-div [182] 30.6% ival-mult [183] 24.0% bftruncate [181] 15.3% bfsub [189] 7.3% ival-fabs [180] 4.7% ---------------------------------------------------------------------------- ??? [151] 100.0% [168] 5792(2.5%) 3458(1.5%) ival-atan ...rbie/master/src/biginterval.rkt:312:0 bfexpm1 [190] 40.3% ---------------------------------------------------------------------------- temp74_0 [153] 100.0% [169] 4794(2.1%) 0(0.0%) expand-single (unknown source) expand-capturing-lifts [179] 100.0% ---------------------------------------------------------------------------- infer-representation [156] 5.6% for-loop [147] 21.3% ??? [152] 73.1% [170] 2720(1.2%) 2720(1.2%) ??? ...s/racket/contract/private/arr-i.rkt:1252:29 ---------------------------------------------------------------------------- infer-representation [156] 11.1% for-loop [147] 21.4% ??? [152] 67.5% [171] 2682(1.2%) 1036(0.4%) return/no-unsupplied ...ct/private/arr-i.rkt:534:0 filter [185] 61.4% ---------------------------------------------------------------------------- hash-ref! [154] 100.0% [172] 2378(1.0%) 0(0.0%) ??? ...ies/herbie/master/src/core/taylor.rkt:45:15 hash-ref! [154] 100.0% ---------------------------------------------------------------------------- mk-ival [157] 100.0% [173] 1926(0.8%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:601:2 new-mpfr [193] 84.4% ??? [194] 15.6% ---------------------------------------------------------------------------- argmin [161] 20.1% loop [158] 79.9% [174] 1496(0.6%) 0(0.0%) ??? ...tlies/herbie/master/src/mainloop.rkt:111:10 errors [72] 100.0% ---------------------------------------------------------------------------- infer-representation [156] 34.9% ??? [152] 65.1% [175] 918(0.4%) 918(0.4%) list-member? ...llects/racket/private/set.rkt:24:0 ---------------------------------------------------------------------------- loop [158] 100.0% [176] 298(0.1%) 0(0.0%) ??? ...ghtlies/herbie/master/src/points.rkt:193:27 eval-errors [103] 100.0% ---------------------------------------------------------------------------- temp74_0 [153] 100.0% [177] 298(0.1%) 0(0.0%) compile-top9 (unknown source) compile-forms31 [188] 100.0% ---------------------------------------------------------------------------- sample-multi-bounded [160] 100.0% [178] 296(0.1%) 296(0.1%) random-ranges ...erbie/master/src/common.rkt:183:0 ---------------------------------------------------------------------------- loop [197] 6.9% expand-single [169] 93.1% [179] 5150(2.2%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [191] 86.1% dispatch-transformer41 [5] 7.0% loop [197] 6.9% ---------------------------------------------------------------------------- ival-fmod [167] 11.2% ??? [151] 88.8% [180] 3632(1.6%) 0(0.0%) ival-fabs ...rbie/master/src/biginterval.rkt:354:0 bfexpm1 [190] 60.9% bfsub [189] 39.1% ---------------------------------------------------------------------------- ival-fmod [167] 40.2% ival-sin [166] 59.8% [181] 3280(1.4%) 0(0.0%) bftruncate ...math/private/bigfloat/mpfr.rkt:716:4 new-mpfr [193] 80.7% ??? [194] 19.3% ---------------------------------------------------------------------------- ival-fmod [167] 100.0% [182] 2640(1.1%) 966(0.4%) ival-div ...erbie/master/src/biginterval.rkt:148:0 bfsub [189] 63.4% ---------------------------------------------------------------------------- ival-fmod [167] 100.0% [183] 2070(0.9%) 0(0.0%) ival-mult ...rbie/master/src/biginterval.rkt:112:0 bfsub [189] 100.0% ---------------------------------------------------------------------------- ival-sin [166] 100.0% [184] 2064(0.9%) 300(0.1%) pi.bf ...-lib/math/private/bigfloat/mpfr.rkt:998:4 new-mpfr [193] 70.9% ??? [194] 14.5% ---------------------------------------------------------------------------- return/no-unsupplied [171] 100.0% [185] 1646(0.7%) 1646(0.7%) filter ...0/collects/racket/private/list.rkt:256:2 ---------------------------------------------------------------------------- ival-sin [166] 100.0% [186] 300(0.1%) 300(0.1%) bfodd? ...lib/math/private/bigfloat/mpfr.rkt:803:0 ---------------------------------------------------------------------------- ival-sin [166] 100.0% [187] 298(0.1%) 0(0.0%) bfeven? ...ib/math/private/bigfloat/mpfr.rkt:800:0 new-mpz [192] 100.0% ---------------------------------------------------------------------------- compile-top9 [177] 100.0% [188] 298(0.1%) 0(0.0%) compile-forms31 (unknown source) for-loop [196] 100.0% ---------------------------------------------------------------------------- ival-fmod [167] 6.2% ival-fabs [180] 13.9% ival-atan2 [165] 15.3% ival-div [182] 16.4% ival-mult [183] 20.3% ival-sin [166] 28.0% [189] 10220(4.4%) 298(0.1%) bfsub ...-lib/math/private/bigfloat/mpfr.rkt:821:4 new-mpfr [193] 72.1% ??? [194] 25.0% ---------------------------------------------------------------------------- ival-sin [166] 18.0% ival-fabs [180] 23.0% ival-atan [168] 24.3% ival-expm1 [164] 34.7% [190] 9606(4.1%) 300(0.1%) bfexpm1 ...ib/math/private/bigfloat/mpfr.rkt:618:4 new-mpfr [193] 86.9% ??? [194] 10.0% ---------------------------------------------------------------------------- expand-capturing-lifts [179] 100.0% [191] 4434(1.9%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [195] 85.1% loop [197] 14.9% ---------------------------------------------------------------------------- bfeven? [187] 100.0% [192] 298(0.1%) 298(0.1%) new-mpz ...-lib/math/private/bigfloat/gmp.rkt:73:0 ---------------------------------------------------------------------------- pi.bf [184] 6.8% bf [173] 7.6% bftruncate [181] 12.3% bfsub [189] 34.4% bfexpm1 [190] 38.9% [193] 21454(9.2%) 21454(9.2%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:335:0 ---------------------------------------------------------------------------- pi.bf [184] 6.3% bf [173] 6.3% bftruncate [181] 13.4% bfexpm1 [190] 20.2% bfsub [189] 53.8% [194] 4744(2.0%) 4744(2.0%) ??? /opt/racket-7.0/collects/ffi/unsafe.rkt:898:4 ---------------------------------------------------------------------------- lambda-clause-expander [191] 38.4% for-loop [196] 61.6% [195] 3774(1.6%) 0(0.0%) finish-bodys (unknown source) for-loop [196] 100.0% ---------------------------------------------------------------------------- loop [197] 0.4% run-module-instance!125 [198] 3.6% fallback-loop [25] 5.8% compile-forms31 [188] 6.3% eval-one-top12 [143] 6.3% for-loop [196] 13.6% finish-bodys [195] 64.1% [196] 4728(2.0%) 3768(1.6%) for-loop (unknown source) finish-bodys [195] 40.1% for-loop [196] 13.6% dispatch-transformer41 [5] 4.2% expand-implicit [7] 4.2% run-module-instance!125 [198] 3.6% loop [197] 1.0% ---------------------------------------------------------------------------- datum->syntax6 [42] 4.0% expand-capturing-lifts [179] 4.7% eval-prog [131] 4.7% syntax-e/no-taint [62] 6.0% loop [197] 8.7% for-loop [196] 9.9% lambda-clause-expander [191] 18.3% apply-transformer52 [15] 18.8% loop [118] 24.9% [197] 2510(1.1%) 924(0.4%) loop (unknown source) dispatch-transformer41 [5] 18.3% core-form-sym [200] 12.8% expand-id-application-form17 [201] 9.9% loop [197] 8.7% syntax-e [48] 6.0% gf [199] 6.0% expand-capturing-lifts [179] 4.7% for-loop [196] 4.7% ---------------------------------------------------------------------------- for-loop [196] 100.0% [198] 356(0.2%) 0(0.0%) run-module-instance!125 (unknown source) for-loop [196] 100.0% ---------------------------------------------------------------------------- loop [197] 48.2% add-ns-scopes [163] 51.8% [199] 622(0.3%) 622(0.3%) gf (unknown source) ---------------------------------------------------------------------------- loop [197] 100.0% [200] 322(0.1%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [16] 100.0% ---------------------------------------------------------------------------- loop [197] 100.0% [201] 248(0.1%) 0(0.0%) expand-id-application-form17 (unknown source) resolve+shift28 [16] 100.0% ----------------------------------------------------------------------------