Diff of the two buildlogs: -- --- b1/build.log 2024-10-23 01:15:48.455081264 +0000 +++ b2/build.log 2024-10-23 01:17:20.507814639 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Tue Oct 22 13:13:56 -12 2024 -I: pbuilder-time-stamp: 1729646036 +I: Current time: Tue Nov 25 21:38:51 +14 2025 +I: pbuilder-time-stamp: 1764056331 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -27,53 +27,85 @@ dpkg-source: info: unpacking octave-splines_1.3.5-2.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/26669/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/6355/tmp/hooks/D01_modify_environment starting +debug: Running on infom08-i386. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Nov 25 07:39 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/6355/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/6355/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='i386' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=6 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='i386' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="32" [3]="1" [4]="release" [5]="i686-pc-linux-gnu") + BASH_VERSION='5.2.32(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=i386 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=5 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=i686 + HOST_ARCH=i386 IFS=' ' - INVOCATION_ID='6f14d7276d7b4041b2d6f467243fafd2' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - LD_LIBRARY_PATH='/usr/lib/libeatmydata' - LD_PRELOAD='libeatmydata.so' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='26669' - PS1='# ' - PS2='> ' + INVOCATION_ID=9d1f5217af794d22aee7f8c6c8992df2 + LANG=C + LANGUAGE=de_CH:de + LC_ALL=C + LD_LIBRARY_PATH=/usr/lib/libeatmydata + LD_PRELOAD=libeatmydata.so + MACHTYPE=i686-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=6355 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.zqxT5GdJ/pbuilderrc_PO4O --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.zqxT5GdJ/b1 --logfile b1/build.log octave-splines_1.3.5-2.dsc' - SUDO_GID='111' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.zqxT5GdJ/pbuilderrc_5gDk --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.zqxT5GdJ/b2 --logfile b2/build.log octave-splines_1.3.5-2.dsc' + SUDO_GID=111 + SUDO_UID=104 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' I: uname -a - Linux infom07-i386 6.1.0-26-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.112-1 (2024-09-30) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.10.11+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.10.11-1~bpo12+1 (2024-10-03) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 4 21:30 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/26669/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 4 2024 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/6355/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -626,7 +658,7 @@ Get: 513 http://deb.debian.org/debian unstable/main i386 gfortran i386 4:14.2.0-1 [1432 B] Get: 514 http://deb.debian.org/debian unstable/main i386 octave-dev i386 9.2.0-3+b1 [1004 kB] Get: 515 http://deb.debian.org/debian unstable/main i386 dh-octave all 1.8.0 [22.7 kB] -Fetched 208 MB in 7s (31.4 MB/s) +Fetched 208 MB in 3s (79.8 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package netbase. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19933 files and directories currently installed.) @@ -2740,7 +2772,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/octave-splines-1.3.5/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../octave-splines_1.3.5-2_source.changes +I: user script /srv/workspace/pbuilder/6355/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/6355/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/octave-splines-1.3.5/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../octave-splines_1.3.5-2_source.changes dpkg-buildpackage: info: source package octave-splines dpkg-buildpackage: info: source version 1.3.5-2 dpkg-buildpackage: info: source distribution unstable @@ -2786,219 +2822,6 @@ y = x(:, 1) .^ 2 + x(:, 2) .^ 2; ***** assert (tpaps(x,y,1,x), y, 1E-10); 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/bin_values.m] ->>>>> /build/reproducible-path/octave-splines-1.3.5/inst/bin_values.m -***** shared x, y, x_bin, y_bin, w_bin, n_bin - x = [1; 2; 2; 3; 4]; - y = [0 0; 1 1; 2 1; 3 4; 5 NaN]; - [x_bin y_bin w_bin n_bin] = bin_values(x, y); -***** assert (x_bin, [1; 7/3]); -***** assert (y_bin, [0 0; 2 2]); -***** assert (!any(isfinite(w_bin(1, :)))); -***** assert (w_bin(2, :), [3 1]); -***** assert (n_bin, [1; 3]); -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/dedup.m] ->>>>> /build/reproducible-path/octave-splines-1.3.5/inst/dedup.m -***** shared x, y, w - x = [1; 2; 2; 3; 4]; - y = [0 0; 1 1; 2 1; 3 4; 5 NaN]; - w = [1; 0.1; 1; 0.5; 1]; -***** assert (nthargout(1:3, @dedup, x, y, ones(size(x))), nthargout(1:3, @dedup, x, y)) - [x y w] = dedup(x, y, w); -***** assert (x, [1; 2; 3]); -***** assert (y, [0 0; 21/11 1; 3 4], 10*eps); -***** assert (w, [1; 1.1; 0.5]); -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/tps_val_der.m] ->>>>> /build/reproducible-path/octave-splines-1.3.5/inst/tps_val_der.m -***** shared a,b,x,y,x1,x2,y1,c,dy,dy0 - a = 2; b = -3; x = ([1:2:10 10.5 11.3])'; y = a*x; - c = tpaps(x,y,1); -***** assert (a*ones(size(x)), tps_val_der(x,c,x), 1E3*eps); - [x1 x2] = meshgrid(x, x); - y1 = a*x1+b*x2; - c = tpaps([x1(:) x2(:)],y1(:),0.5); - dy = tps_val_der([x1(:) x2(:)],c,[x1(:) x2(:)]); - dy0 = tps_val_der([x1(:) x2(:)],c,[x1(:) x2(:)],false); -***** assert (a*ones(size(x1(:))), dy(:, 1), 1E3*eps); -***** assert (b*ones(size(x2(:))), dy(:, 2), 1E3*eps); -***** assert (dy0, dy, 1E3*eps); -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/tps_val.m] ->>>>> /build/reproducible-path/octave-splines-1.3.5/inst/tps_val.m -***** shared x,y,c,xi - x = ([1:10 10.5 11.3])'; y = sin(x); - c = tpaps(x,y,1); -***** assert (tpaps(x,y,1,x), tps_val(x,c,x), 100*eps); - x = ((1 ./ (1:100))' - 0.5) * ([0.2 0.6]); - y = x(:, 1) .^ 2 + x(:, 2) .^ 2; - c = tpaps(x,y,1); -***** assert (tpaps(x,y,1,x), tps_val(x,c,x), 100*eps); -***** assert (tps_val(x,c,x,true), tps_val(x,c,x,false), 100*eps); -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/csaps_sel.m] ->>>>> /build/reproducible-path/octave-splines-1.3.5/inst/csaps_sel.m -***** shared x,y,ret,p,sigma2,unc_y - x = [0:0.01:1]'; y = sin(x); - [ret,p,sigma2,unc_y] = csaps_sel(x,y,x); -***** assert (1 - p, 0, 1E-6); -***** assert (sigma2, 0, 1E-10); -***** assert (ret - y, zeros(size(y)), 1E-4); -***** assert (ret, (csaps_sel(x,[y 2*y],x))'(:, 1), 1E-4); -***** assert (unc_y, zeros(size(unc_y)), 1E-5); -***** demo - ni = 400; #number of evaluation points - n = 40; #number of given sample points - f = @(x) sin (2*pi*x); #function generating the synthetic data - x = sort (rand (n, 1)); #sampled points - y = f(x) + 0.1*randn (n, 1); - xi = linspace (0, 1, ni); #evaluation points - yi = csaps_sel (x,y,xi,[],'aicc'); - plot (x, y, 's', xi, yi) - grid on - legend ('Given data', 'Spline fit') - title ('Spline smoothing with synthetic data sampled from sine wave with noise') -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/regularization2D.m] ->>>>> /build/reproducible-path/octave-splines-1.3.5/inst/regularization2D.m -***** demo - M = 100; - lambda1 = 0; lambda2 = 0.05; - x = 2*rand(M,1)-1; y = 2*rand(M,1)-1; - z = x.*y + 0.1*randn(M,1); - data = [x,y,z]; - [grid,u] = regularization2D(data,[-1 1;-1 1],[50 50],lambda1,lambda2); - figure() - mesh(grid.x, grid.y,u) - xlabel('x'); ylabel('y'); - hold on - plot3(data(:,1),data(:,2),data(:,3),'*b','Markersize',2) - hold off - view([30,30]); -***** demo - lambda1 = 0; lambda2 = 0.01; - M = 4; angles = [1:M]/M*2*pi; - data = zeros(M+1,3); data(M+1,3) = 1; - data(1:M,1) = cos(angles); data(1:M,2) = sin(angles); - [grid,u] = regularization2D(data,[-1.5 1.5;-1.5 1.5],[50 50],lambda1,lambda2); - figure() - mesh(grid.x, grid.y,u) - xlabel('x'); ylabel('y'); - hold on - plot3(data(:,1),data(:,2),data(:,3),'*b','Markersize',2) - hold off -***** test - data = [0,0,0;1,2,3;2,0,2;0,2,2]; % data on z = x+y - lambda1 = 0.0 ; lambda2 = 0.1; - [grid,u,u_valid] = regularization2D(data,[-0.2 2.2; -0.2,2.2],[11,12],lambda1,lambda2); - assert(norm(data-u_valid),0,1e-12) - assert(norm(grid.x(:) + grid.y(:) - u(:)),0,1e-10) -***** test - data = [0,0,0;1,1,3;2,1,2;0,2,-2;-1.5,-1,0;-2,2,0]; - lambda1 = 0.001 ; lambda2 = 0.01; - [grid,u,u_valid] = regularization2D(data,[-2.1 2.1;-2.1,2.1],[40,50],lambda1,lambda2); - value_at_data = [ 1.233351091378741e-01 - 2.694454049778803e+00 - 2.102786670571836e+00 - -1.870655633783656e+00 - -1.635243922246946e-02 - -3.356775648311422e-02]; - assert(norm(value_at_data-u_valid(:,3)),0,1e-12) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/regularization.m] ->>>>> /build/reproducible-path/octave-splines-1.3.5/inst/regularization.m -***** demo - N = 100; interval = [0,10]; - x = [3.2,4,5,5.2,5.6]'; y = x; - - clear F1 F2 - %% regularize towards slope 0.1, no smoothing - F1.lambda = 1e-2; F1.g = @(x)0.1*ones(size(x)); - [grid,u1] = regularization([x,y],interval,N,F1); - %% regularize towards slope 0.1, with some smoothing - F2.lambda = 1*1e-3; - [grid,u2] = regularization([x,y],interval,N,F1,F2); - - figure(1) - plot(grid,u1,'b',grid,u2,'g',x,y,'*r') - xlabel('x'); ylabel('solution'); - legend('regular1','regular2','data','location','northwest') -***** demo - N = 1000; interval = [0,pi]; - x = linspace( pi/4,3*pi/4,15)'; y = sin(x)+ 0.03*randn(size(x)); - - clear F1 F2 - %% regularize by smoothing only - F1.lambda = 0; F2.lambda = 1e-3; - [grid,u1] = regularization([x,y],interval,N,F1,F2); - %% regularize by smoothing and aim for slope 0 - F1.lambda = 1*1e-2; - [grid,u2] = regularization([x,y],interval,N,F1,F2); - - figure(1) - plot(grid,u1,'b',grid,u2,'g',x,y,'*r') - xlabel('x'); ylabel('solution'); - legend('regular1','regular2','data','location','northwest') -***** demo - interval = [0,1]; - N = 400; - x = rand(200,1); - %% generate the data on four line segments, add some noise - y = 2 - 2*x + (x>0.25) - 2*(x>0.5).*(x<0.65)+ 0.1*randn(length(x),1); - clear F1 - %% apply regularization with three different parameters - F1.lambda = 1e-3; [grid,u1] = regularization([x,y],interval,N,F1); - F1.lambda = 1e-1; [grid,u2] = regularization([x,y],interval,N,F1); - F1.lambda = 3e+0; [grid,u3] = regularization([x,y],interval,N,F1); - - figure(1); plot(grid,u1,'b',grid,u2,'g',grid,u3,'m',x,y,'+r') - xlabel('x'); ylabel('solution') - legend('\lambda_1=0.001','\lambda_1=0.1','\lambda_1=3','data') -***** demo - %% generate a smoothing spline, see also csaps() in the package splines - N = 1000; interval = [0,10.3]; - x = [0 3 4 6 10]'; y = [0 1 0 1 0]'; - clear F2 - F2.lambda = 1e-2; - %% apply regularization, the result is a smoothing spline - [grid,u] = regularization([x,y],interval,N,0,F2); - - figure(1); - plot(grid,u,'b',x,y,'*r') - legend('spline','data') - xlabel('x'); ylabel('solution') -***** test - data = [0,0;1,1;2,2]; - F1.lambda = 0.0; F2.lambda = 0.1; - [grid,u] = regularization(data,[0,1],10,F1,F2); - assert(norm(grid-u),0,1e-12) -***** test - x = linspace(-1,1,11); - F1.lambda = 0.01;F2.g = @(x) 2*ones(size(x)); F2.lambda = 0.01; - [grid,u] = regularization([x;x.^2]',[-2,2],20,F1,F2); - assert(u(11),7.330959483903200e-03,1e-8) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/csaps.m] ->>>>> /build/reproducible-path/octave-splines-1.3.5/inst/csaps.m -***** shared x,y,xi,yi,p,sigma2,unc_yi,df - x = ([1:10 10.5 11.3])'; y = sin(x); xi = linspace(min(x), max(x), 30)'; -***** assert (csaps(x,y,1,x), y, 10*eps); -***** assert (csaps(x,y,1,x'), y', 10*eps); -***** assert (csaps(x',y',1,x'), y', 10*eps); -***** assert (csaps(x',y',1,x), y, 10*eps); -***** assert (csaps(x,[y 2*y],1,x)', [y 2*y], 10*eps); - [yi,p,sigma2,unc_yi,df] = csaps(x,y,1,xi); -***** assert (yi, ppval(csape(x, y, "variational"), xi), eps); -***** assert (p, 1); -***** assert (unc_yi, zeros(size(xi))); -***** assert (sigma2, 0); -***** assert (df, numel(x)); - [yi,p,~,~,df] = csaps(x,y,0,xi); -***** assert (yi, polyval(polyfit(x, y, 1), xi), 10*eps); -***** assert (p, 0); -***** assert (df, 2, 100*eps); -13 tests, 13 passed, 0 known failure, 0 skipped [inst/csape.m] >>>>> /build/reproducible-path/octave-splines-1.3.5/inst/csape.m ***** shared x,x2,y,cond,pp,pp1,pp2,h,valc,xi,yi @@ -3110,6 +2933,219 @@ ***** assert (ppval(ppder(pp), x(1)), ppval(ppder(pp), x(end)), 10*eps); ***** assert (ppval(ppder(pp, 2), x(1)), ppval(ppder(pp, 2), x(end)), 10*eps); 85 tests, 85 passed, 0 known failure, 0 skipped +[inst/regularization.m] +>>>>> /build/reproducible-path/octave-splines-1.3.5/inst/regularization.m +***** demo + N = 100; interval = [0,10]; + x = [3.2,4,5,5.2,5.6]'; y = x; + + clear F1 F2 + %% regularize towards slope 0.1, no smoothing + F1.lambda = 1e-2; F1.g = @(x)0.1*ones(size(x)); + [grid,u1] = regularization([x,y],interval,N,F1); + %% regularize towards slope 0.1, with some smoothing + F2.lambda = 1*1e-3; + [grid,u2] = regularization([x,y],interval,N,F1,F2); + + figure(1) + plot(grid,u1,'b',grid,u2,'g',x,y,'*r') + xlabel('x'); ylabel('solution'); + legend('regular1','regular2','data','location','northwest') +***** demo + N = 1000; interval = [0,pi]; + x = linspace( pi/4,3*pi/4,15)'; y = sin(x)+ 0.03*randn(size(x)); + + clear F1 F2 + %% regularize by smoothing only + F1.lambda = 0; F2.lambda = 1e-3; + [grid,u1] = regularization([x,y],interval,N,F1,F2); + %% regularize by smoothing and aim for slope 0 + F1.lambda = 1*1e-2; + [grid,u2] = regularization([x,y],interval,N,F1,F2); + + figure(1) + plot(grid,u1,'b',grid,u2,'g',x,y,'*r') + xlabel('x'); ylabel('solution'); + legend('regular1','regular2','data','location','northwest') +***** demo + interval = [0,1]; + N = 400; + x = rand(200,1); + %% generate the data on four line segments, add some noise + y = 2 - 2*x + (x>0.25) - 2*(x>0.5).*(x<0.65)+ 0.1*randn(length(x),1); + clear F1 + %% apply regularization with three different parameters + F1.lambda = 1e-3; [grid,u1] = regularization([x,y],interval,N,F1); + F1.lambda = 1e-1; [grid,u2] = regularization([x,y],interval,N,F1); + F1.lambda = 3e+0; [grid,u3] = regularization([x,y],interval,N,F1); + + figure(1); plot(grid,u1,'b',grid,u2,'g',grid,u3,'m',x,y,'+r') + xlabel('x'); ylabel('solution') + legend('\lambda_1=0.001','\lambda_1=0.1','\lambda_1=3','data') +***** demo + %% generate a smoothing spline, see also csaps() in the package splines + N = 1000; interval = [0,10.3]; + x = [0 3 4 6 10]'; y = [0 1 0 1 0]'; + clear F2 + F2.lambda = 1e-2; + %% apply regularization, the result is a smoothing spline + [grid,u] = regularization([x,y],interval,N,0,F2); + + figure(1); + plot(grid,u,'b',x,y,'*r') + legend('spline','data') + xlabel('x'); ylabel('solution') +***** test + data = [0,0;1,1;2,2]; + F1.lambda = 0.0; F2.lambda = 0.1; + [grid,u] = regularization(data,[0,1],10,F1,F2); + assert(norm(grid-u),0,1e-12) +***** test + x = linspace(-1,1,11); + F1.lambda = 0.01;F2.g = @(x) 2*ones(size(x)); F2.lambda = 0.01; + [grid,u] = regularization([x;x.^2]',[-2,2],20,F1,F2); + assert(u(11),7.330959483903200e-03,1e-8) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/csaps.m] +>>>>> /build/reproducible-path/octave-splines-1.3.5/inst/csaps.m +***** shared x,y,xi,yi,p,sigma2,unc_yi,df + x = ([1:10 10.5 11.3])'; y = sin(x); xi = linspace(min(x), max(x), 30)'; +***** assert (csaps(x,y,1,x), y, 10*eps); +***** assert (csaps(x,y,1,x'), y', 10*eps); +***** assert (csaps(x',y',1,x'), y', 10*eps); +***** assert (csaps(x',y',1,x), y, 10*eps); +***** assert (csaps(x,[y 2*y],1,x)', [y 2*y], 10*eps); + [yi,p,sigma2,unc_yi,df] = csaps(x,y,1,xi); +***** assert (yi, ppval(csape(x, y, "variational"), xi), eps); +***** assert (p, 1); +***** assert (unc_yi, zeros(size(xi))); +***** assert (sigma2, 0); +***** assert (df, numel(x)); + [yi,p,~,~,df] = csaps(x,y,0,xi); +***** assert (yi, polyval(polyfit(x, y, 1), xi), 10*eps); +***** assert (p, 0); +***** assert (df, 2, 100*eps); +13 tests, 13 passed, 0 known failure, 0 skipped +[inst/tps_val.m] +>>>>> /build/reproducible-path/octave-splines-1.3.5/inst/tps_val.m +***** shared x,y,c,xi + x = ([1:10 10.5 11.3])'; y = sin(x); + c = tpaps(x,y,1); +***** assert (tpaps(x,y,1,x), tps_val(x,c,x), 100*eps); + x = ((1 ./ (1:100))' - 0.5) * ([0.2 0.6]); + y = x(:, 1) .^ 2 + x(:, 2) .^ 2; + c = tpaps(x,y,1); +***** assert (tpaps(x,y,1,x), tps_val(x,c,x), 100*eps); +***** assert (tps_val(x,c,x,true), tps_val(x,c,x,false), 100*eps); +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/dedup.m] +>>>>> /build/reproducible-path/octave-splines-1.3.5/inst/dedup.m +***** shared x, y, w + x = [1; 2; 2; 3; 4]; + y = [0 0; 1 1; 2 1; 3 4; 5 NaN]; + w = [1; 0.1; 1; 0.5; 1]; +***** assert (nthargout(1:3, @dedup, x, y, ones(size(x))), nthargout(1:3, @dedup, x, y)) + [x y w] = dedup(x, y, w); +***** assert (x, [1; 2; 3]); +***** assert (y, [0 0; 21/11 1; 3 4], 10*eps); +***** assert (w, [1; 1.1; 0.5]); +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/tps_val_der.m] +>>>>> /build/reproducible-path/octave-splines-1.3.5/inst/tps_val_der.m +***** shared a,b,x,y,x1,x2,y1,c,dy,dy0 + a = 2; b = -3; x = ([1:2:10 10.5 11.3])'; y = a*x; + c = tpaps(x,y,1); +***** assert (a*ones(size(x)), tps_val_der(x,c,x), 1E3*eps); + [x1 x2] = meshgrid(x, x); + y1 = a*x1+b*x2; + c = tpaps([x1(:) x2(:)],y1(:),0.5); + dy = tps_val_der([x1(:) x2(:)],c,[x1(:) x2(:)]); + dy0 = tps_val_der([x1(:) x2(:)],c,[x1(:) x2(:)],false); +***** assert (a*ones(size(x1(:))), dy(:, 1), 1E3*eps); +***** assert (b*ones(size(x2(:))), dy(:, 2), 1E3*eps); +***** assert (dy0, dy, 1E3*eps); +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/bin_values.m] +>>>>> /build/reproducible-path/octave-splines-1.3.5/inst/bin_values.m +***** shared x, y, x_bin, y_bin, w_bin, n_bin + x = [1; 2; 2; 3; 4]; + y = [0 0; 1 1; 2 1; 3 4; 5 NaN]; + [x_bin y_bin w_bin n_bin] = bin_values(x, y); +***** assert (x_bin, [1; 7/3]); +***** assert (y_bin, [0 0; 2 2]); +***** assert (!any(isfinite(w_bin(1, :)))); +***** assert (w_bin(2, :), [3 1]); +***** assert (n_bin, [1; 3]); +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/csaps_sel.m] +>>>>> /build/reproducible-path/octave-splines-1.3.5/inst/csaps_sel.m +***** shared x,y,ret,p,sigma2,unc_y + x = [0:0.01:1]'; y = sin(x); + [ret,p,sigma2,unc_y] = csaps_sel(x,y,x); +***** assert (1 - p, 0, 1E-6); +***** assert (sigma2, 0, 1E-10); +***** assert (ret - y, zeros(size(y)), 1E-4); +***** assert (ret, (csaps_sel(x,[y 2*y],x))'(:, 1), 1E-4); +***** assert (unc_y, zeros(size(unc_y)), 1E-5); +***** demo + ni = 400; #number of evaluation points + n = 40; #number of given sample points + f = @(x) sin (2*pi*x); #function generating the synthetic data + x = sort (rand (n, 1)); #sampled points + y = f(x) + 0.1*randn (n, 1); + xi = linspace (0, 1, ni); #evaluation points + yi = csaps_sel (x,y,xi,[],'aicc'); + plot (x, y, 's', xi, yi) + grid on + legend ('Given data', 'Spline fit') + title ('Spline smoothing with synthetic data sampled from sine wave with noise') +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/regularization2D.m] +>>>>> /build/reproducible-path/octave-splines-1.3.5/inst/regularization2D.m +***** demo + M = 100; + lambda1 = 0; lambda2 = 0.05; + x = 2*rand(M,1)-1; y = 2*rand(M,1)-1; + z = x.*y + 0.1*randn(M,1); + data = [x,y,z]; + [grid,u] = regularization2D(data,[-1 1;-1 1],[50 50],lambda1,lambda2); + figure() + mesh(grid.x, grid.y,u) + xlabel('x'); ylabel('y'); + hold on + plot3(data(:,1),data(:,2),data(:,3),'*b','Markersize',2) + hold off + view([30,30]); +***** demo + lambda1 = 0; lambda2 = 0.01; + M = 4; angles = [1:M]/M*2*pi; + data = zeros(M+1,3); data(M+1,3) = 1; + data(1:M,1) = cos(angles); data(1:M,2) = sin(angles); + [grid,u] = regularization2D(data,[-1.5 1.5;-1.5 1.5],[50 50],lambda1,lambda2); + figure() + mesh(grid.x, grid.y,u) + xlabel('x'); ylabel('y'); + hold on + plot3(data(:,1),data(:,2),data(:,3),'*b','Markersize',2) + hold off +***** test + data = [0,0,0;1,2,3;2,0,2;0,2,2]; % data on z = x+y + lambda1 = 0.0 ; lambda2 = 0.1; + [grid,u,u_valid] = regularization2D(data,[-0.2 2.2; -0.2,2.2],[11,12],lambda1,lambda2); + assert(norm(data-u_valid),0,1e-12) + assert(norm(grid.x(:) + grid.y(:) - u(:)),0,1e-10) +***** test + data = [0,0,0;1,1,3;2,1,2;0,2,-2;-1.5,-1,0;-2,2,0]; + lambda1 = 0.001 ; lambda2 = 0.01; + [grid,u,u_valid] = regularization2D(data,[-2.1 2.1;-2.1,2.1],[40,50],lambda1,lambda2); + value_at_data = [ 1.233351091378741e-01 + 2.694454049778803e+00 + 2.102786670571836e+00 + -1.870655633783656e+00 + -1.635243922246946e-02 + -3.356775648311422e-02]; + assert(norm(value_at_data-u_valid(:,3)),0,1e-12) +2 tests, 2 passed, 0 known failure, 0 skipped Checking C++ files ... Done running the unit tests. Summary: 125 tests, 125 passed, 0 known failures, 0 skipped @@ -3138,12 +3174,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/6355/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/6355/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/26669 and its subdirectories -I: Current time: Tue Oct 22 13:15:47 -12 2024 -I: pbuilder-time-stamp: 1729646147 +I: removing directory /srv/workspace/pbuilder/6355 and its subdirectories +I: Current time: Tue Nov 25 21:40:18 +14 2025 +I: pbuilder-time-stamp: 1764056418