# HG changeset patch # User Marco Caliari # Date 1341217579 -7200 # Node ID e437bacb3ef6cd062d4e2df0d2341922f9050347 # Parent 93e5ade3fda43a14aef811a3224a4086cd41a162 Fix ppval when pp.dim > 1 and xi is an array (bug #36665) * ppval.m: Correctly evaluate a piecewise polynomial structure when pp.dim > 1 and xi is a multi-dimensional array. Added a test for this bug. diff -r 93e5ade3fda4 -r e437bacb3ef6 scripts/polynomial/ppval.m --- a/scripts/polynomial/ppval.m Sun Jul 01 13:10:50 2012 +0200 +++ b/scripts/polynomial/ppval.m Mon Jul 02 10:26:19 2012 +0200 @@ -68,8 +68,8 @@ ndv = length (dimvec); ## Offsets. - dx = (xi - x(idx)); - dx = repmat (dx, [prod(d), 1]); + dx = (xi - x(idx))(:); + dx = repmat (dx, [1, prod(d)])'; dx = reshape (dx, dimvec); dx = shiftdim (dx, ndv - 1); @@ -119,4 +119,11 @@ %!assert (ppval (pp2, xi), [1.1 1.3 1.9 1.1;1.1 1.3 1.9 1.1], abserr) %!assert (ppval (pp2, xi'), [1.1 1.3 1.9 1.1;1.1 1.3 1.9 1.1], abserr) %!assert (size (ppval (pp2, [xi;xi])), [2 2 4]) - +%!test +%! breaks = [0, 1, 2, 3]; +%! coefs = rand (6, 4); +%! pp = mkpp (breaks, coefs, 2); +%! ret = zeros (2, 4, 2); +%! ret(:,:,1) = ppval (pp, breaks'); +%! ret(:,:,2) = ppval (pp, breaks'); +%! assert (ppval (pp, [breaks',breaks']), ret)