Profiling results ----------------- Total cpu time observed: 5024ms (out of 5724ms) Number of samples taken: 24 (once every 209ms) ======================================================================================= Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ======================================================================================= [1] 5024(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [6] 100.0% --------------------------------------------------------------------------------------- ??? [65] 100.0% [2] 1078(21.5%) 0(0.0%) approximate9 ...and-minor/src/core/taylor.rkt:11:0 loop [7] 100.0% --------------------------------------------------------------------------------------- matcher [76] 100.0% [3] 436(8.7%) 0(0.0%) ??? ...actor-and-minor/src/core/matcher.rkt:127:11 for-loop [8] 100.0% --------------------------------------------------------------------------------------- hash-ref! [14] 100.0% [4] 200(4.0%) 0(0.0%) taylor ...ctor-and-minor/src/core/taylor.rkt:169:0 taylor-invert [10] 100.0% --------------------------------------------------------------------------------------- loop [89] 100.0% [5] 200(4.0%) 0(0.0%) expand-id-application-form17 (unknown source) syntax-e/no-taint [9] 100.0% --------------------------------------------------------------------------------------- ??? [1] 100.0% [6] 5024(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [11] 100.0% --------------------------------------------------------------------------------------- approximate9 [2] 100.0% [7] 1078(21.5%) 0(0.0%) loop ...efactor-and-minor/src/core/taylor.rkt:86:4 hash-ref! [14] 100.0% --------------------------------------------------------------------------------------- ??? [3] 100.0% [8] 436(8.7%) 0(0.0%) for-loop ...-and-minor/src/core/matcher.rkt:129:15 matcher [76] 100.0% --------------------------------------------------------------------------------------- expand-id-application-form17 [5] 100.0% [9] 200(4.0%) 0(0.0%) syntax-e/no-taint (unknown source) loop [89] 100.0% --------------------------------------------------------------------------------------- taylor [4] 100.0% [10] 200(4.0%) 0(0.0%) taylor-invert ...d-minor/src/core/taylor.rkt:317:0 first-nonzero-exp [12] 100.0% --------------------------------------------------------------------------------------- profile-thunk16 [6] 100.0% [11] 5024(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [13] 100.0% --------------------------------------------------------------------------------------- taylor-invert [10] 100.0% [12] 200(4.0%) 0(0.0%) first-nonzero-exp ...nor/src/core/taylor.rkt:265:0 hash-ref! [14] 100.0% --------------------------------------------------------------------------------------- for-loop [74] 3.6% run [11] 96.4% [13] 5024(100.0%) 0(0.0%) .../more-scheme.rkt:261:28 (unknown source) run-improve47 [15] 67.8% prepare-points-intervals [24] 15.5% errors [66] 5.5% get-final-combination [20] 4.0% oracle-error [22] 3.5% ??? [19] 2.0% ulp-difference [93] 1.6% --------------------------------------------------------------------------------------- ??? [21] 4.6% first-nonzero-exp [12] 6.2% ??? [17] 25.6% ??? [65] 31.8% loop [7] 31.8% [14] 1078(21.5%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [16] 31.8% ??? [17] 25.6% f40 [18] 21.0% parse-loop74 [33] 10.8% taylor [4] 6.2% ??? [21] 4.6% --------------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [13] 100.0% [15] 3508(69.8%) 0(0.0%) run-improve47 ...-and-minor/src/mainloop.rkt:345:0 for-loop [23] 93.3% prepare-points-intervals [24] 6.7% --------------------------------------------------------------------------------------- hash-ref! [14] 100.0% [16] 1078(21.5%) 0(0.0%) ??? ...efactor-and-minor/src/core/taylor.rkt:67:15 ??? [65] 100.0% --------------------------------------------------------------------------------------- hash-ref! [14] 100.0% [17] 878(17.5%) 0(0.0%) ??? ...efactor-and-minor/src/core/taylor.rkt:44:15 hash-ref! [14] 100.0% --------------------------------------------------------------------------------------- map [25] 35.3% hash-ref! [14] 64.7% [18] 678(13.5%) 0(0.0%) f40 (unknown source) map [25] 100.0% --------------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [13] 100.0% [19] 202(4.0%) 0(0.0%) ??? ...ctor-and-minor/src/syntax/syntax.rkt:214:17 return/no-unsupplied [26] 100.0% --------------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [13] 100.0% [20] 200(4.0%) 0(0.0%) get-final-combination ...or/src/mainloop.rkt:370:0 infer-splitpoints [27] 100.0% --------------------------------------------------------------------------------------- hash-ref! [14] 100.0% [21] 200(4.0%) 0(0.0%) ??? ...factor-and-minor/src/core/taylor.rkt:343:33 hash-ref! [14] 100.0% --------------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [13] 100.0% [22] 178(3.5%) 0(0.0%) oracle-error ...tor-and-minor/src/points.rkt:179:0 for-loop [28] 100.0% --------------------------------------------------------------------------------------- run-improve47 [15] 100.0% [23] 3272(65.1%) 0(0.0%) for-loop ...actor-and-minor/src/mainloop.rkt:364:4 run-iter! [29] 100.0% --------------------------------------------------------------------------------------- run-improve47 [15] 23.2% .../more-scheme.rkt:261:28 [13] 76.8% [24] 1016(20.2%) 0(0.0%) prepare-points-intervals ...r/src/points.rkt:122:0 loop [30] 76.8% loop [89] 23.2% --------------------------------------------------------------------------------------- f40 [18] 100.0% [25] 678(13.5%) 0(0.0%) map ...t-7.5/collects/racket/private/map.rkt:35:13 f40 [18] 35.3% parse-loop74 [33] 35.3% parse-loop49 [32] 29.5% --------------------------------------------------------------------------------------- ??? [19] 100.0% [26] 202(4.0%) 202(4.0%) return/no-unsupplied ...ct/private/arr-i.rkt:566:0 --------------------------------------------------------------------------------------- get-final-combination [20] 100.0% [27] 200(4.0%) 0(0.0%) infer-splitpoints ...nor/src/core/regimes.rkt:33:0 for-loop [31] 100.0% --------------------------------------------------------------------------------------- oracle-error [22] 100.0% [28] 178(3.5%) 0(0.0%) for-loop ...efactor-and-minor/src/points.rkt:180:2 loop [89] 100.0% --------------------------------------------------------------------------------------- for-loop [23] 100.0% [29] 3272(65.1%) 0(0.0%) run-iter! ...ctor-and-minor/src/mainloop.rkt:326:0 gen-series! [34] 32.9% finalize-iter! [35] 30.8% simplify! [36] 22.9% gen-rewrites! [37] 13.3% --------------------------------------------------------------------------------------- prepare-points-intervals [24] 100.0% [30] 780(15.5%) 0(0.0%) loop ...ie/refactor-and-minor/src/points.rkt:134:4 loop [38] 50.0% do-curry [84] 25.1% ??? [40] 24.9% --------------------------------------------------------------------------------------- infer-splitpoints [27] 100.0% [31] 200(4.0%) 0(0.0%) for-loop ...or-and-minor/src/core/regimes.rkt:45:6 option-on-expr [39] 100.0% --------------------------------------------------------------------------------------- map [25] 100.0% [32] 200(4.0%) 0(0.0%) parse-loop49 (unknown source) parse-loop74 [33] 100.0% --------------------------------------------------------------------------------------- parse-loop49 [32] 18.6% hash-ref! [14] 37.1% map [25] 44.3% [33] 1078(21.5%) 200(4.0%) parse-loop74 (unknown source) eval-const-expr [43] 81.4% --------------------------------------------------------------------------------------- run-iter! [29] 100.0% [34] 1078(21.5%) 0(0.0%) gen-series! ...or-and-minor/src/mainloop.rkt:159:0 for-loop [41] 100.0% --------------------------------------------------------------------------------------- run-iter! [29] 100.0% [35] 1008(20.1%) 0(0.0%) finalize-iter! ...and-minor/src/mainloop.rkt:277:0 ??? [42] 100.0% --------------------------------------------------------------------------------------- run-iter! [29] 100.0% [36] 750(14.9%) 0(0.0%) simplify! ...ctor-and-minor/src/mainloop.rkt:223:0 ??? [44] 100.0% --------------------------------------------------------------------------------------- run-iter! [29] 100.0% [37] 436(8.7%) 0(0.0%) gen-rewrites! ...-and-minor/src/mainloop.rkt:182:0 for-loop [45] 100.0% --------------------------------------------------------------------------------------- loop [30] 100.0% [38] 390(7.8%) 0(0.0%) loop ...bie/refactor-and-minor/src/points.rkt:79:2 real->precision [47] 50.8% ??? [49] 49.2% --------------------------------------------------------------------------------------- for-loop [31] 100.0% [39] 200(4.0%) 0(0.0%) option-on-expr ...minor/src/core/regimes.rkt:124:0 err-lsts->split-indices [46] 100.0% --------------------------------------------------------------------------------------- loop [30] 100.0% [40] 194(3.9%) 0(0.0%) ??? ...bie/refactor-and-minor/src/points.rkt:115:6 sample-multi-bounded [48] 100.0% --------------------------------------------------------------------------------------- gen-series! [34] 100.0% [41] 1078(21.5%) 0(0.0%) for-loop ...actor-and-minor/src/mainloop.rkt:166:7 taylor-alt [50] 100.0% --------------------------------------------------------------------------------------- finalize-iter! [35] 100.0% [42] 1008(20.1%) 0(0.0%) ??? ...contract/private/arrow-val-first.rkt:486:18 for-loop [51] 100.0% --------------------------------------------------------------------------------------- parse-loop74 [33] 100.0% [43] 878(17.5%) 0(0.0%) eval-const-expr ...nd-minor/src/programs.rkt:144:0 temp85_0 [72] 100.0% --------------------------------------------------------------------------------------- simplify! [36] 100.0% [44] 750(14.9%) 0(0.0%) ??? ...factor-and-minor/src/core/simplify.rkt:42:0 egraph-run [52] 100.0% --------------------------------------------------------------------------------------- gen-rewrites! [37] 100.0% [45] 436(8.7%) 0(0.0%) for-loop ...ctor-and-minor/src/mainloop.rkt:190:11 rewrite-expression-head24 [53] 100.0% --------------------------------------------------------------------------------------- option-on-expr [39] 100.0% [46] 200(4.0%) 0(0.0%) err-lsts->split-indices .../core/regimes.rkt:263:0 loop [54] 100.0% --------------------------------------------------------------------------------------- loop [38] 100.0% [47] 198(3.9%) 0(0.0%) real->precision ...d-minor/src/programs.rkt:118:11 ??? [65] 100.0% --------------------------------------------------------------------------------------- ??? [40] 100.0% [48] 194(3.9%) 0(0.0%) sample-multi-bounded ...-minor/src/points.rkt:14:0 random-ranges [55] 100.0% --------------------------------------------------------------------------------------- loop [38] 100.0% [49] 192(3.8%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:379:33 ival-div [56] 100.0% --------------------------------------------------------------------------------------- for-loop [41] 100.0% [50] 1078(21.5%) 0(0.0%) taylor-alt ...tor-and-minor/src/mainloop.rkt:145:0 for-loop [57] 100.0% --------------------------------------------------------------------------------------- ??? [42] 100.0% [51] 1008(20.1%) 0(0.0%) for-loop ...and-minor/src/core/alt-table.rkt:192:2 loop [60] 39.7% override-at-pnts [61] 20.4% atab-add-altn [62] 20.0% errors [66] 19.8% --------------------------------------------------------------------------------------- ??? [44] 100.0% [52] 750(14.9%) 0(0.0%) egraph-run .../pkgs/egg-herbie-linux/main.rkt:49:0 egraph-add-exprs [58] 100.0% --------------------------------------------------------------------------------------- for-loop [45] 100.0% [53] 436(8.7%) 0(0.0%) rewrite-expression-head24 ...core/matcher.rkt:85:0 rewriter [59] 100.0% --------------------------------------------------------------------------------------- err-lsts->split-indices [46] 100.0% [54] 200(4.0%) 0(0.0%) loop ...actor-and-minor/src/core/regimes.rkt:314:4 for-loop [63] 100.0% --------------------------------------------------------------------------------------- sample-multi-bounded [48] 100.0% [55] 194(3.9%) 0(0.0%) random-ranges ...or-and-minor/src/common.rkt:164:0 build--> [64] 100.0% --------------------------------------------------------------------------------------- ??? [49] 100.0% [56] 192(3.8%) 192(3.8%) ival-div ...or-and-minor/src/biginterval.rkt:156:0 --------------------------------------------------------------------------------------- taylor-alt [50] 100.0% [57] 1078(21.5%) 0(0.0%) for-loop ...actor-and-minor/src/mainloop.rkt:151:6 ??? [65] 100.0% --------------------------------------------------------------------------------------- egraph-run [52] 100.0% [58] 750(14.9%) 0(0.0%) egraph-add-exprs ...gg-herbie-linux/main.rkt:111:0 ??? [67] 100.0% --------------------------------------------------------------------------------------- rewrite-expression-head24 [53] 38.2% matcher [76] 61.8% [59] 436(8.7%) 0(0.0%) rewriter ...or-and-minor/src/core/matcher.rkt:87:2 for-loop [68] 100.0% --------------------------------------------------------------------------------------- for-loop [51] 100.0% [60] 400(8.0%) 200(4.0%) loop ...tor-and-minor/src/core/alt-table.rkt:159:2 loop [70] 50.0% --------------------------------------------------------------------------------------- for-loop [51] 100.0% [61] 206(4.1%) 0(0.0%) override-at-pnts ...r/src/core/alt-table.rkt:120:0 for-loop [69] 100.0% --------------------------------------------------------------------------------------- for-loop [51] 100.0% [62] 202(4.0%) 0(0.0%) atab-add-altn ...inor/src/core/alt-table.rkt:195:0 errors [66] 100.0% --------------------------------------------------------------------------------------- loop [54] 100.0% [63] 200(4.0%) 200(4.0%) for-loop ...r-and-minor/src/core/regimes.rkt:279:4 --------------------------------------------------------------------------------------- random-ranges [55] 100.0% [64] 194(3.9%) 194(3.9%) build--> ...act/private/arrow-val-first.rkt:1214:0 --------------------------------------------------------------------------------------- real->precision [47] 15.5% ??? [16] 28.2% location-do [71] 28.2% for-loop [57] 28.2% [65] 1276(25.4%) 198(3.9%) ??? ...tract/private/arrow-higher-order.rkt:375:33 location-do [71] 28.2% approximate9 [2] 28.2% hash-ref! [14] 28.2% --------------------------------------------------------------------------------------- for-loop [51] 26.3% atab-add-altn [62] 26.6% .../more-scheme.rkt:261:28 [13] 47.1% [66] 760(15.1%) 0(0.0%) errors .../refactor-and-minor/src/points.rkt:192:0 for-loop [74] 73.7% temp85_0 [72] 26.3% --------------------------------------------------------------------------------------- egraph-add-exprs [58] 100.0% [67] 750(14.9%) 0(0.0%) ??? ...actor-and-minor/src/core/simplify.rkt:102:6 for-loop [73] 100.0% --------------------------------------------------------------------------------------- rewriter [59] 100.0% [68] 436(8.7%) 0(0.0%) for-loop ...or-and-minor/src/core/matcher.rkt:89:4 matcher [76] 61.8% for-loop [75] 38.2% --------------------------------------------------------------------------------------- override-at-pnts [61] 100.0% [69] 206(4.1%) 206(4.1%) for-loop ...nd-minor/src/core/alt-table.rkt:121:22 --------------------------------------------------------------------------------------- loop [60] 100.0% [70] 200(4.0%) 200(4.0%) loop ...ctor-and-minor/src/core/alt-table.rkt:83:2 --------------------------------------------------------------------------------------- location-do [71] 18.6% ??? [65] 81.4% [71] 1078(21.5%) 0(0.0%) location-do ...tor-and-minor/src/programs.rkt:87:0 ??? [65] 81.4% location-do [71] 18.6% --------------------------------------------------------------------------------------- errors [66] 18.6% eval-const-expr [43] 81.4% [72] 1078(21.5%) 0(0.0%) temp85_0 (unknown source) compile15 [77] 100.0% --------------------------------------------------------------------------------------- ??? [67] 100.0% [73] 750(14.9%) 750(14.9%) for-loop ...-and-minor/src/core/simplify.rkt:121:2 --------------------------------------------------------------------------------------- errors [66] 100.0% [74] 560(11.1%) 194(3.9%) for-loop ...efactor-and-minor/src/points.rkt:194:2 .../more-scheme.rkt:261:28 [13] 65.4% --------------------------------------------------------------------------------------- for-loop [68] 100.0% [75] 436(8.7%) 0(0.0%) for-loop ...or-and-minor/src/core/matcher.rkt:96:8 fix-up-variables [78] 100.0% --------------------------------------------------------------------------------------- for-loop [8] 50.0% for-loop [68] 50.0% [76] 436(8.7%) 0(0.0%) matcher ...or-and-minor/src/core/matcher.rkt:115:2 ??? [3] 50.0% rewriter [59] 50.0% --------------------------------------------------------------------------------------- temp85_0 [72] 100.0% [77] 1078(21.5%) 0(0.0%) compile15 (unknown source) temp91_0 [79] 100.0% --------------------------------------------------------------------------------------- for-loop [75] 100.0% [78] 436(8.7%) 0(0.0%) fix-up-variables ...nor/src/core/matcher.rkt:108:2 for-loop [80] 52.8% pattern-substitute [81] 47.2% --------------------------------------------------------------------------------------- compile15 [77] 100.0% [79] 1078(21.5%) 0(0.0%) temp91_0 (unknown source) temp118_0 [82] 55.7% compile-top9 [83] 44.3% --------------------------------------------------------------------------------------- fix-up-variables [78] 100.0% [80] 230(4.6%) 0(0.0%) for-loop ...or-and-minor/src/core/matcher.rkt:41:9 for-loop [85] 100.0% --------------------------------------------------------------------------------------- pattern-substitute [81] 50.0% fix-up-variables [78] 50.0% [81] 206(4.1%) 0(0.0%) pattern-substitute ...or/src/core/matcher.rkt:45:0 pattern-substitute [81] 50.0% do-curry [84] 50.0% --------------------------------------------------------------------------------------- temp91_0 [79] 100.0% [82] 600(11.9%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [86] 100.0% --------------------------------------------------------------------------------------- temp91_0 [79] 100.0% [83] 478(9.5%) 200(4.0%) compile-top9 (unknown source) compile-forms33 [87] 58.2% --------------------------------------------------------------------------------------- loop [30] 48.8% pattern-substitute [81] 51.2% [84] 402(8.0%) 402(8.0%) do-curry ...-7.5/collects/racket/function.rkt:71:2 --------------------------------------------------------------------------------------- for-loop [80] 100.0% [85] 230(4.6%) 0(0.0%) for-loop ...or-and-minor/src/core/matcher.rkt:26:9 core457 [88] 100.0% --------------------------------------------------------------------------------------- loop [89] 28.2% temp118_0 [82] 71.8% [86] 836(16.6%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [90] 71.8% loop [89] 28.2% --------------------------------------------------------------------------------------- compile-top9 [83] 100.0% [87] 278(5.5%) 0(0.0%) compile-forms33 (unknown source) for-loop [96] 100.0% --------------------------------------------------------------------------------------- for-loop [85] 100.0% [88] 230(4.6%) 0(0.0%) core457 ...acket/contract/private/arr-i.rkt:976:19 ??? [91] 100.0% --------------------------------------------------------------------------------------- syntax-e/no-taint [9] 10.9% for-loop [96] 10.9% expand-capturing-lifts [86] 12.8% prepare-points-intervals [24] 12.8% loop [89] 23.7% for-loop [28] 29.0% [89] 614(12.2%) 0(0.0%) loop (unknown source) ulp-difference [93] 29.0% loop [89] 23.7% expand-capturing-lifts [86] 12.8% for-loop [96] 12.8% expand-id-application-form17 [5] 10.9% gf [95] 10.9% --------------------------------------------------------------------------------------- expand-capturing-lifts [86] 100.0% [90] 600(11.9%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [92] 100.0% --------------------------------------------------------------------------------------- core457 [88] 100.0% [91] 230(4.6%) 0(0.0%) ??? ...s/racket/contract/private/arr-i.rkt:1288:27 build-nullary-very-simple--> [94] 100.0% --------------------------------------------------------------------------------------- lambda-clause-expander [90] 38.1% for-loop [96] 61.9% [92] 600(11.9%) 0(0.0%) finish-bodys (unknown source) for-loop [96] 100.0% --------------------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [13] 48.0% loop [89] 52.0% [93] 342(6.8%) 342(6.8%) ulp-difference ...tor-and-minor/src/float.rkt:19:0 --------------------------------------------------------------------------------------- ??? [91] 100.0% [94] 230(4.6%) 0(0.0%) build-nullary-very-simple--> ...l-first.rkt:1131:0 chaperone-contract? [97] 100.0% --------------------------------------------------------------------------------------- loop [89] 100.0% [95] 200(4.0%) 200(4.0%) gf (unknown source) --------------------------------------------------------------------------------------- for-loop [96] 2.2% run-module-instance!125 [100] 10.6% loop [89] 10.6% compile-forms33 [87] 25.0% finish-bodys [92] 51.6% [96] 1114(22.2%) 0(0.0%) for-loop (unknown source) finish-bodys [92] 31.4% compile-module-linklet57 [98] 25.0% run-module-instance!125 [100] 10.6% temp37_0 [99] 10.6% dispatch-transformer41 [101] 9.0% expand-implicit [102] 9.0% for-loop [96] 2.2% loop [89] 2.2% --------------------------------------------------------------------------------------- build-nullary-very-simple--> [94] 100.0% [97] 230(4.6%) 230(4.6%) chaperone-contract? ...ract/private/guts.rkt:135:0 --------------------------------------------------------------------------------------- for-loop [96] 100.0% [98] 278(5.5%) 278(5.5%) compile-module-linklet57 (unknown source) --------------------------------------------------------------------------------------- for-loop [96] 100.0% [99] 236(4.7%) 0(0.0%) temp37_0 (unknown source) [running body] [103] 100.0% --------------------------------------------------------------------------------------- for-loop [96] 100.0% [100] 236(4.7%) 0(0.0%) run-module-instance!125 (unknown source) for-loop [96] 100.0% --------------------------------------------------------------------------------------- for-loop [96] 100.0% [101] 200(4.0%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [104] 100.0% --------------------------------------------------------------------------------------- for-loop [96] 100.0% [102] 200(4.0%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [105] 100.0% --------------------------------------------------------------------------------------- temp37_0 [99] 100.0% [103] 236(4.7%) 0(0.0%) [running body] .../collects/syntax/struct.rkt":##f do-partial-app [106] 100.0% --------------------------------------------------------------------------------------- dispatch-transformer41 [101] 100.0% [104] 200(4.0%) 200(4.0%) apply-transformer52 (unknown source) --------------------------------------------------------------------------------------- expand-implicit [102] 100.0% [105] 200(4.0%) 0(0.0%) resolve+shift28 (unknown source) fallback-loop [107] 100.0% --------------------------------------------------------------------------------------- [running body] [103] 100.0% [106] 236(4.7%) 0(0.0%) do-partial-app ...ntract/private/provide.rkt:493:0 successfully-got-the-right-kind-of-function [108]100.0% --------------------------------------------------------------------------------------- resolve+shift28 [105] 100.0% [107] 200(4.0%) 200(4.0%) fallback-loop (unknown source) --------------------------------------------------------------------------------------- do-partial-app [106] 100.0% [108] 236(4.7%) 236(4.7%) successfully-got-the-right-kind-of-function ...5:4 ---------------------------------------------------------------------------------------