View Raw SPL
/* insert row at r, c - caled by _cbinsertrow and _cbinserterow */
_cbinsertrow_insert(s = {}, val = {}, r = 1, c = 1, mode = 0)
{
        local y, nr_s, nc_s, nr_v, nc_v, c_end, ins;

        y = s;

        if (not(isempty(val)))
        {
                (nr_s, nc_s) = size(y);
                (nr_v, nc_v) = size(val);
                
                c_end = min(c + nc_v - 1, nc_s);

                ins = y[.., c..c_end];

                r = r * ones(1, nc_v);

                ins = insert(ins, val, r, mode);

                (nr_v, nc_v) = size(ins);

                y[.., c..(c + nc_v - 1)] = ins;
        }

        return(y);
}