spr

@trusted pure @nogc nothrow
void
spr
(
T
SliceKind kindA
string type
)
(,
Slice!(const(T)*, 1, kindA) a
,
Slice!(StairsIterator!(T*, type)) c
)
if (
type == "+" ||
type == "-"
)

Examples

import mir.algorithm.iteration: equal;
import mir.ndslice.allocation: uninitSlice;
import mir.ndslice.slice: sliced;
import mir.ndslice.topology: stairs;

auto result = [1.0, 2, 4, 3, 6, 9].stairs!"+"(3);

auto x = [1.0, 2, 3].sliced;
auto output = uninitSlice!double(6).stairs!"+"(3);

spr(1.0, x, output);
assert(output.equal(result));
import mir.algorithm.iteration: equal;
import mir.ndslice.allocation: uninitSlice;
import mir.ndslice.slice: sliced;
import mir.ndslice.topology: stairs;

auto result = [1.0, 2, 3, 4, 6, 9].stairs!"-"(3);

auto x = [1.0, 2, 3].sliced;
auto output = uninitSlice!double(6).stairs!"-"(3);

spr(1.0, x, output);
assert(output.equal(result));