32 : nx(ctrl.
orderX + 1), ny(ctrl.orderY + 1) {
48 ndarray::Array<double const, 1, 1>
const& tx,
49 ndarray::Array<double const, 1, 1>
const& ty)
const {
50 double* outIter = out.begin();
51 for (
int i = 0; i <
m; ++i) {
52 for (
int j = 0; j <
nx; ++j, ++outIter) {
53 *outIter = ty[i] * tx[j];
56 for (
int i =
m; i <
ny; ++i) {
57 for (
int j = 0, nj =
nx +
m - i; j < nj; ++j, ++outIter) {
58 *outIter = ty[i] * tx[j];
64 ndarray::Array<double const, 2, 2>
const& unpacked)
const {
65 double* outIter = out.begin();
66 for (
int i = 0; i <
m; ++i) {
67 ndarray::Array<double const, 1, 1> unpackedRow = unpacked[i];
68 for (
int j = 0; j <
nx; ++j, ++outIter) {
69 *outIter = unpackedRow[j];
72 for (
int i =
m; i <
ny; ++i) {
73 ndarray::Array<double const, 1, 1> unpackedRow = unpacked[i];
74 for (
int j = 0, nj =
nx +
m - i; j < nj; ++j, ++outIter) {
75 *outIter = unpackedRow[j];
81 ndarray::Array<double const, 1, 1>
const& packed)
const {
83 double const* packedIter = packed.begin();
84 for (
int i = 0; i <
m; ++i) {
85 ndarray::Array<double, 1, 1> outRow = out[i];
86 for (
int j = 0; j <
nx; ++j, ++packedIter) {
87 outRow[j] = *packedIter;
90 for (
int i =
m; i <
ny; ++i) {
91 ndarray::Array<double, 1, 1> outRow = out[i];
92 for (
int j = 0, nj =
nx +
m - i; j < nj; ++j, ++packedIter) {
93 outRow[j] = *packedIter;
99 ndarray::Array<double const, 1, 1>
const& packed)
const {
100 ndarray::Array<double, 2, 2> out = ndarray::allocate(
ny,
nx);