Mercurial > forge
changeset 11259:6a4719ed5eb4 octave-forge
fixed bug in csape
author | nir-krakauer |
---|---|
date | Thu, 22 Nov 2012 00:14:33 +0000 |
parents | 75392b463b77 |
children | 525d72fc3135 |
files | main/splines/inst/csape.m |
diffstat | 1 files changed, 16 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/main/splines/inst/csape.m Tue Nov 20 19:23:59 2012 +0000 +++ b/main/splines/inst/csape.m Thu Nov 22 00:14:33 2012 +0000 @@ -41,6 +41,7 @@ ## "Numerical Algorithms with C", Springer, 1996 ## Paul Kienzle, 19. feb 2001, csape supports now matrix y value +## Nir Krakauer, 21 Nov 2012, fixed a bug with periodic boundary conditions and matrix y (noticed by Ted Rippert); added more tests to verify it won't happen again function pp = csape (x, y, cond, valc) @@ -160,7 +161,7 @@ fact = (z(1,2:end) + h(1) * z(end,2:end) / gamma) / ... (1.0 + z(1,1) + h(1) * z(end,1) / gamma); - c(2:n,idx) = z(:,2:end) - z(:,1) * fact; + c(2:n,:) = z(:,2:end) - z(:,1) * fact; endif c(1,:) = c(n,:); @@ -224,8 +225,8 @@ endfunction -%!shared x,y,cond -%! x = linspace(0,2*pi,15); y = sin(x); +%!shared x,x2,y,cond +%! x = linspace(0,2*pi,5); y = sin(x); x2 = linspace(0,2*pi,16); %!assert (ppval(csape(x,y),x), y, 10*eps); %!assert (ppval(csape(x,y),x'), y', 10*eps); @@ -233,6 +234,8 @@ %!assert (ppval(csape(x',y'),x), y, 10*eps); %!assert (ppval(csape(x,[y;y]),x), \ %! [ppval(csape(x,y),x);ppval(csape(x,y),x)], 10*eps) +%!assert (ppval(csape(x,[y;y]),x2), \ +%! [ppval(csape(x,y),x2);ppval(csape(x,y),x2)], 10*eps) %!test cond='complete'; %!assert (ppval(csape(x,y,cond),x), y, 10*eps); @@ -241,6 +244,8 @@ %!assert (ppval(csape(x',y',cond),x), y, 10*eps); %!assert (ppval(csape(x,[y;y],cond),x), \ %! [ppval(csape(x,y,cond),x);ppval(csape(x,y,cond),x)], 10*eps) +%!assert (ppval(csape(x,[y;y],cond),x2), \ +%! [ppval(csape(x,y,cond),x2);ppval(csape(x,y,cond),x2)], 10*eps) %!test cond='variational'; %!assert (ppval(csape(x,y,cond),x), y, 10*eps); @@ -249,6 +254,8 @@ %!assert (ppval(csape(x',y',cond),x), y, 10*eps); %!assert (ppval(csape(x,[y;y],cond),x), \ %! [ppval(csape(x,y,cond),x);ppval(csape(x,y,cond),x)], 10*eps) +%!assert (ppval(csape(x,[y;y],cond),x2), \ +%! [ppval(csape(x,y,cond),x2);ppval(csape(x,y,cond),x2)], 10*eps) %!test cond='second'; %!assert (ppval(csape(x,y,cond),x), y, 10*eps); @@ -257,6 +264,8 @@ %!assert (ppval(csape(x',y',cond),x), y, 10*eps); %!assert (ppval(csape(x,[y;y],cond),x), \ %! [ppval(csape(x,y,cond),x);ppval(csape(x,y,cond),x)], 10*eps) +%!assert (ppval(csape(x,[y;y],cond),x2), \ +%! [ppval(csape(x,y,cond),x2);ppval(csape(x,y,cond),x2)], 10*eps) %!test cond='periodic'; %!assert (ppval(csape(x,y,cond),x), y, 10*eps); @@ -265,6 +274,8 @@ %!assert (ppval(csape(x',y',cond),x), y, 10*eps); %!assert (ppval(csape(x,[y;y],cond),x), \ %! [ppval(csape(x,y,cond),x);ppval(csape(x,y,cond),x)], 10*eps) +%!assert (ppval(csape(x,[y;y],cond),x2), \ +%! [ppval(csape(x,y,cond),x2);ppval(csape(x,y,cond),x2)], 10*eps) %!test cond='not-a-knot'; %!assert (ppval(csape(x,y,cond),x), y, 10*eps); @@ -273,3 +284,5 @@ %!assert (ppval(csape(x',y',cond),x), y, 10*eps); %!assert (ppval(csape(x,[y;y],cond),x), \ %! [ppval(csape(x,y,cond),x);ppval(csape(x,y,cond),x)], 10*eps) +%!assert (ppval(csape(x,[y;y],cond),x2), \ +%! [ppval(csape(x,y,cond),x2);ppval(csape(x,y,cond),x2)], 10*eps)