@@ -25,14 +25,14 @@ <h1><a href="index.html">All files</a> accessors.js</h1>
2525 < div class ='fl pad1y space-right2 '>
2626 < span class ="strong "> 100% </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 100/100 </ span >
28+ < span class ='fraction '> 117/117 </ span >
2929 </ div >
3030
3131
3232 < div class ='fl pad1y space-right2 '>
3333 < span class ="strong "> 100% </ span >
3434 < span class ="quiet "> Branches</ span >
35- < span class ='fraction '> 6/6 </ span >
35+ < span class ='fraction '> 8/8 </ span >
3636 </ div >
3737
3838
@@ -46,7 +46,7 @@ <h1><a href="index.html">All files</a> accessors.js</h1>
4646 < div class ='fl pad1y space-right2 '>
4747 < span class ="strong "> 100% </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 100/100 </ span >
49+ < span class ='fraction '> 117/117 </ span >
5050 </ div >
5151
5252
@@ -163,7 +163,24 @@ <h1><a href="index.html">All files</a> accessors.js</h1>
163163< a name ='L98 '> </ a > < a href ='#L98 '> 98</ a >
164164< a name ='L99 '> </ a > < a href ='#L99 '> 99</ a >
165165< a name ='L100 '> </ a > < a href ='#L100 '> 100</ a >
166- < a name ='L101 '> </ a > < a href ='#L101 '> 101</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
166+ < a name ='L101 '> </ a > < a href ='#L101 '> 101</ a >
167+ < a name ='L102 '> </ a > < a href ='#L102 '> 102</ a >
168+ < a name ='L103 '> </ a > < a href ='#L103 '> 103</ a >
169+ < a name ='L104 '> </ a > < a href ='#L104 '> 104</ a >
170+ < a name ='L105 '> </ a > < a href ='#L105 '> 105</ a >
171+ < a name ='L106 '> </ a > < a href ='#L106 '> 106</ a >
172+ < a name ='L107 '> </ a > < a href ='#L107 '> 107</ a >
173+ < a name ='L108 '> </ a > < a href ='#L108 '> 108</ a >
174+ < a name ='L109 '> </ a > < a href ='#L109 '> 109</ a >
175+ < a name ='L110 '> </ a > < a href ='#L110 '> 110</ a >
176+ < a name ='L111 '> </ a > < a href ='#L111 '> 111</ a >
177+ < a name ='L112 '> </ a > < a href ='#L112 '> 112</ a >
178+ < a name ='L113 '> </ a > < a href ='#L113 '> 113</ a >
179+ < a name ='L114 '> </ a > < a href ='#L114 '> 114</ a >
180+ < a name ='L115 '> </ a > < a href ='#L115 '> 115</ a >
181+ < a name ='L116 '> </ a > < a href ='#L116 '> 116</ a >
182+ < a name ='L117 '> </ a > < a href ='#L117 '> 117</ a >
183+ < a name ='L118 '> </ a > < a href ='#L118 '> 118</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
167184< span class ="cline-any cline-yes "> 3x</ span >
168185< span class ="cline-any cline-yes "> 3x</ span >
169186< span class ="cline-any cline-yes "> 3x</ span >
@@ -215,6 +232,16 @@ <h1><a href="index.html">All files</a> accessors.js</h1>
215232< span class ="cline-any cline-yes "> 3x</ span >
216233< span class ="cline-any cline-yes "> 3x</ span >
217234< span class ="cline-any cline-yes "> 3x</ span >
235+ < span class ="cline-any cline-yes "> 3x</ span >
236+ < span class ="cline-any cline-yes "> 3x</ span >
237+ < span class ="cline-any cline-yes "> 3x</ span >
238+ < span class ="cline-any cline-yes "> 3x</ span >
239+ < span class ="cline-any cline-yes "> 3x</ span >
240+ < span class ="cline-any cline-yes "> 30x</ span >
241+ < span class ="cline-any cline-yes "> 30x</ span >
242+ < span class ="cline-any cline-yes "> 30x</ span >
243+ < span class ="cline-any cline-yes "> 30x</ span >
244+ < span class ="cline-any cline-yes "> 30x</ span >
218245< span class ="cline-any cline-yes "> 30x</ span >
219246< span class ="cline-any cline-yes "> 30x</ span >
220247< span class ="cline-any cline-yes "> 30x</ span >
@@ -234,28 +261,35 @@ <h1><a href="index.html">All files</a> accessors.js</h1>
234261< span class ="cline-any cline-yes "> 30x</ span >
235262< span class ="cline-any cline-yes "> 30x</ span >
236263< span class ="cline-any cline-yes "> 30x</ span >
264+ < span class ="cline-any cline-yes "> 12x</ span >
265+ < span class ="cline-any cline-yes "> 12x</ span >
237266< span class ="cline-any cline-yes "> 30x</ span >
267+ < span class ="cline-any cline-yes "> 18x</ span >
268+ < span class ="cline-any cline-yes "> 18x</ span >
269+ < span class ="cline-any cline-yes "> 18x</ span >
238270< span class ="cline-any cline-yes "> 30x</ span >
239271< span class ="cline-any cline-yes "> 30x</ span >
272+ < span class ="cline-any cline-yes "> 30x</ span >
273+ < span class ="cline-any cline-yes "> 90x</ span >
240274< span class ="cline-any cline-yes "> 90x</ span >
275+ < span class ="cline-any cline-yes "> 270x</ span >
276+ < span class ="cline-any cline-yes "> 270x</ span >
277+ < span class ="cline-any cline-yes "> 270x</ span >
241278< span class ="cline-any cline-yes "> 90x</ span >
242279< span class ="cline-any cline-yes "> 90x</ span >
243280< span class ="cline-any cline-yes "> 30x</ span >
244281< span class ="cline-any cline-yes "> 30x</ span >
245282< span class ="cline-any cline-yes "> 30x</ span >
246- < span class ="cline-any cline-yes "> 60x</ span >
247- < span class ="cline-any cline-yes "> 60x</ span >
283+ < span class ="cline-any cline-yes "> 90x</ span >
284+ < span class ="cline-any cline-yes "> 90x</ span >
285+ < span class ="cline-any cline-yes "> 90x</ span >
286+ < span class ="cline-any cline-yes "> 30x</ span >
248287< span class ="cline-any cline-yes "> 30x</ span >
249288< span class ="cline-any cline-yes "> 30x</ span >
250289< span class ="cline-any cline-yes "> 30x</ span >
251290< span class ="cline-any cline-yes "> 60x</ span >
252291< span class ="cline-any cline-yes "> 60x</ span >
253292< span class ="cline-any cline-yes "> 60x</ span >
254- < span class ="cline-any cline-yes "> 90x</ span >
255- < span class ="cline-any cline-yes "> 90x</ span >
256- < span class ="cline-any cline-yes "> 90x</ span >
257- < span class ="cline-any cline-yes "> 60x</ span >
258- < span class ="cline-any cline-yes "> 60x</ span >
259293< span class ="cline-any cline-yes "> 30x</ span >
260294< span class ="cline-any cline-yes "> 30x</ span >
261295< span class ="cline-any cline-yes "> 3x</ span >
@@ -285,6 +319,11 @@ <h1><a href="index.html">All files</a> accessors.js</h1>
285319
286320'use strict';
287321
322+ // MODULES //
323+
324+ var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major' );
325+
326+
288327// MAIN //
289328
290329/**
@@ -322,6 +361,9 @@ <h1><a href="index.html">All files</a> accessors.js</h1>
322361 var getF;
323362 var getS;
324363 var oset;
364+ var sa1;
365+ var sa2;
366+ var sd;
325367 var io;
326368 var ij;
327369 var i;
@@ -334,27 +376,36 @@ <h1><a href="index.html">All files</a> accessors.js</h1>
334376 getS = s.accessors[ 0 ];
335377 oset = out.accessors[ 1 ];
336378
379+ // Resolve the strides for the "fast" and "slow" dimensions so that the inner loop always walks contiguously in memory:
380+ if ( isColumnMajor( [ strideOut1, strideOut2 ] ) ) {
381+ sa1 = strideOut2;
382+ sa2 = strideOut1;
383+ } else {
384+ sa1 = strideOut1;
385+ sa2 = strideOut2;
386+ }
387+ // Zero-fill the output matrix by traversing in cache-optimal order:
388+ io = offsetOut;
389+ for ( i = 0; i < N; i++ ) {
390+ ij = io;
391+ for ( j = 0; j < N; j++ ) {
392+ oset( obuf, ij, 0.0 );
393+ ij += sa2;
394+ }
395+ io += sa1;
396+ }
337397 // Set the first row to the fecundity coefficients:
338398 ij = offsetOut;
339399 for ( j = 0; j < N; j++ ) {
340400 oset( obuf, ij, getF( fbuf, offsetF + ( j * strideF ) ) );
341401 ij += strideOut2;
342402 }
343- // Set the sub-diagonal to the survival coefficients and fill remaining elements with zeros:
344- io = offsetOut + strideOut1;
345- for ( i = 1; i < N; i++ ) {
346- ij = io;
347- for ( j = 0; j < i - 1; j++ ) {
348- oset( obuf, ij, 0.0 );
349- ij += strideOut2;
350- }
351- oset( obuf, ij, getS( sbuf, offsetS + ( ( i - 1 ) * strideS ) ) );
352- ij += strideOut2;
353- for ( j = i; j < N; j++ ) {
354- oset( obuf, ij, 0.0 );
355- ij += strideOut2;
356- }
357- io += strideOut1;
403+ // Set the sub-diagonal to the survival coefficients:
404+ sd = strideOut1 + strideOut2;
405+ ij = offsetOut + strideOut1;
406+ for ( i = 0; i < N - 1; i++ ) {
407+ oset( obuf, ij, getS( sbuf, offsetS + ( i * strideS ) ) );
408+ ij += sd;
358409 }
359410 return out;
360411}
@@ -370,7 +421,7 @@ <h1><a href="index.html">All files</a> accessors.js</h1>
370421 < div class ='footer quiet pad2 space-top1 center small '>
371422 Code coverage generated by
372423 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
373- at 2026-10-16T17:03:48.320Z
424+ at 2026-10-18T14:05:40.293Z
374425 </ div >
375426 < script src ="prettify.js "> </ script >
376427 < script >
0 commit comments