Diff of the two buildlogs: -- --- b1/build.log 2025-10-18 13:47:10.415585255 +0000 +++ b2/build.log 2025-10-18 13:54:27.264082143 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sat Oct 18 01:42:05 -12 2025 -I: pbuilder-time-stamp: 1760794925 +I: Current time: Sat Nov 21 10:10:12 +14 2026 +I: pbuilder-time-stamp: 1795205412 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/forky-reproducible-base.tgz] I: copying local configuration @@ -22,52 +22,84 @@ dpkg-source: info: unpacking octave-splines_1.3.5-3.debian.tar.xz I: using fakeroot in build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/2380845/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/817078/tmp/hooks/D01_modify_environment starting +debug: Running on infom02-amd64. +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 20 20:10 /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/817078/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/817078/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='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='forky' - HOME='/root' - HOST_ARCH='amd64' + 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]="3" [2]="3" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.3.3(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=16 ' + DIRSTACK=() + DISTRIBUTION=forky + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='dc8ea71151b24016ad79d88e700b2aad' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - 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='2380845' - PS1='# ' - PS2='> ' + INVOCATION_ID=bf48a07620c9410290e1d85b9062c4dd + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-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=817078 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.qlHvKDGu/pbuilderrc_yFJI --distribution forky --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.qlHvKDGu/b1 --logfile b1/build.log octave-splines_1.3.5-3.dsc' - SUDO_GID='109' - SUDO_HOME='/var/lib/jenkins' - 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.qlHvKDGu/pbuilderrc_4JEu --distribution forky --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.qlHvKDGu/b2 --logfile b2/build.log octave-splines_1.3.5-3.dsc' + SUDO_GID=109 + SUDO_HOME=/var/lib/jenkins + 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 infom01-amd64 6.12.48+deb13-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.48-1 (2025-09-20) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.12.48+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.48-1 (2025-09-20) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 10 12:30 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/2380845/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 10 2025 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/817078/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -642,7 +674,7 @@ Get: 535 http://deb.debian.org/debian forky/main amd64 gfortran amd64 4:15.2.0-4 [1436 B] Get: 536 http://deb.debian.org/debian forky/main amd64 octave-dev amd64 10.3.0-2 [1072 kB] Get: 537 http://deb.debian.org/debian forky/main amd64 dh-octave all 1.11.4 [24.5 kB] -Fetched 282 MB in 8s (35.3 MB/s) +Fetched 282 MB in 12s (23.0 MB/s) Preconfiguring packages ... Selecting previously unselected package libexpat1:amd64. (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 ... 19898 files and directories currently installed.) @@ -2848,7 +2880,11 @@ fakeroot is already the newest version (1.37.1.2-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 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-3_source.changes +I: user script /srv/workspace/pbuilder/817078/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for forky +I: user script /srv/workspace/pbuilder/817078/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-3_source.changes dpkg-buildpackage: info: source package octave-splines dpkg-buildpackage: info: source version 1.3.5-3 dpkg-buildpackage: info: source distribution unstable @@ -2888,41 +2924,129 @@ Checking package... Run the unit tests... Checking m files ... -[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_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; +[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 + 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); +***** assert (ppval(csape(x',y'),x'), y', 10*eps); +***** 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) +***** assert (ppval(csape([1 2 4],[2, 3, 6]), 3), 13/3, 10*eps); +***** test cond='complete'; +***** assert (ppval(csape(x,y,cond),x), y, 10*eps); +***** assert (ppval(csape(x,y,cond),x'), y', 10*eps); +***** assert (ppval(csape(x',y',cond),x'), y', 10*eps); +***** 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) +***** assert (ppval(csape([1 2 4],[2, 3, 6], cond, [2 1]), 3), 215/48, 10*eps); +***** test cond='variational'; +***** assert (ppval(csape(x,y,cond),x), y, 10*eps); +***** assert (ppval(csape(x,y,cond),x'), y', 10*eps); +***** assert (ppval(csape(x',y',cond),x'), y', 10*eps); +***** 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) +***** assert (ppval(csape([1 2 3],[2, 3, 5],cond), 1.5), 2.40625, 10*eps); +***** assert (ppval(csape([1 2 4],[2, 3, 6], cond), 3), 4.375, 10*eps); +***** test cond='second'; +***** assert (ppval(csape(x,y,cond),x), y, 10*eps); +***** assert (ppval(csape(x,y,cond),x'), y', 10*eps); +***** assert (ppval(csape(x',y',cond),x'), y', 10*eps); +***** 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) +***** assert (ppval(csape([1 2 4],[2, 3, 6], cond, [1 2]), 3), 49/12, 10*eps); +***** test cond='periodic'; +***** assert (ppval(csape(x,y,cond),x), y, 10*eps); +***** assert (ppval(csape(x,y,cond),x'), y', 10*eps); +***** assert (ppval(csape(x',y',cond),x'), y', 10*eps); +***** 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); +***** assert (ppval(csape(x,y,cond),x'), y', 10*eps); +***** assert (ppval(csape(x',y',cond),x'), y', 10*eps); +***** 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) +***** assert (ppval(csape(x(1:4),y(1:4),cond),x(1:4)), y(1:4), 10*eps); +***** assert (ppval(csape(x(1:4)',y(1:4)',cond),x(1:4)), y(1:4), 10*eps); +***** test assert (ppval(csape([1 2 4],[2, 3, 6], 'not-a-knot'), 3), 13/3, 10*eps); +***** test assert (ppval(csape([1 2 4 5],[2, 3, 6, 5], 'not-a-knot'), 3), 29/6, 10*eps); +***** test assert (ppval(csape([1 2 4 5 6],[2, 3, 6, 5, 6], 'not-a-knot'), 3), 141/28, 10*eps); +***** test cond='complete'; + h = pi/6; n = 3; x = linspace(0,(n-1)*h,n)'; y = sin(x); valc = cos([x(1) x(end)]); pp = csape(x, y, cond, valc); +***** assert (ppval(csape(x,[y y],cond, valc),x)', ... + repmat(ppval(pp, x), [1 2]), 10*eps) +***** assert (polyval(pp.coefs(1, :), [0 h])', y(1:2), 10*eps) +***** assert (polyval(pp.coefs(2, :), [0 h])', y(2:3), 10*eps) +***** assert (polyval([3*pp.coefs(1, 1) 2*pp.coefs(1, 2) pp.coefs(1, 3)], 0), valc(1), 10*eps) +***** assert (polyval([3*pp.coefs(2, 1) 2*pp.coefs(2, 2) pp.coefs(2, 3)], h), valc(2), 10*eps) +***** assert (polyval([3*pp.coefs(1, 1) 2*pp.coefs(1, 2) pp.coefs(1, 3)], h), polyval([3*pp.coefs(2, 1) 2*pp.coefs(2, 2) pp.coefs(2, 3)], 0), 10*eps) +***** assert (polyval([6*pp.coefs(1, 1) 2*pp.coefs(1, 2)], h), polyval([6*pp.coefs(2, 1) 2*pp.coefs(2, 2)], 0), 10*eps) + y = cos(x); valc = -sin([x(1) x(end)]); pp1 = csape(x, y, cond, valc); +***** assert (ppval(csape(x,[y y],cond, valc),x)', ... + repmat(ppval(pp1, x), [1 2]), 10*eps) +***** assert (polyval(pp1.coefs(1, :), [0 h])', y(1:2), 10*eps) +***** assert (polyval(pp1.coefs(2, :), [0 h])', y(2:3), 10*eps) +***** assert (polyval([3*pp1.coefs(1, 1) 2*pp1.coefs(1, 2) pp1.coefs(1, 3)], 0), valc(1), 10*eps) +***** assert (polyval([3*pp1.coefs(2, 1) 2*pp1.coefs(2, 2) pp1.coefs(2, 3)], h), valc(2), 10*eps) +***** assert (polyval([3*pp1.coefs(1, 1) 2*pp1.coefs(1, 2) pp1.coefs(1, 3)], h), polyval([3*pp1.coefs(2, 1) 2*pp1.coefs(2, 2) pp1.coefs(2, 3)], 0), 10*eps) +***** assert (polyval([6*pp1.coefs(1, 1) 2*pp1.coefs(1, 2)], h), polyval([6*pp1.coefs(2, 1) 2*pp1.coefs(2, 2)], 0), 10*eps) + y = [sin(x) cos(x)]; valc = [cos([x(1); x(end)]) -sin([x(1); x(end)])]; pp2 = csape(x, y, cond, valc); +***** assert (pp2.coefs([1 3], :), pp.coefs) +***** assert (pp2.coefs([2 4], :), pp1.coefs) +***** test cond='periodic'; + x = [1 2 4 5 6]'; y = [2 3 6 5 6]'; xi = 3; yi = 129/26; pp = csape (x, y, cond); +***** assert (ppval(pp, x), y, 10*eps); +***** assert (ppval(pp, xi), yi, 10*eps); +***** 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); + x = [1 2 4 6]'; y = [2 3 4 2]'; xi = 3; yi = 4 + 1/64; pp = csape (x, y, cond); +***** assert (ppval(pp, x), y, 10*eps); +***** assert (ppval(pp, xi), yi, 10*eps); +***** 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); + x = [1 2 4 5]'; y = [2 3 6 5]'; xi = 3; yi = 5.1; pp = csape (x, y, cond); +***** assert (ppval(pp, x), y, 10*eps); +***** assert (ppval(pp, xi), yi, 10*eps); +***** 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); + x = [1 2 4]'; y = [2 3 2]'; xi = 3; yi = 2.5; pp = csape (x, y, cond); +***** assert (ppval(pp, x), y, 10*eps); +***** assert (ppval(pp, xi), yi, 10*eps); +***** 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/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 (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 +***** 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 @@ -2946,6 +3070,18 @@ 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/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/regularization2D.m] >>>>> /build/reproducible-path/octave-splines-1.3.5/inst/regularization2D.m ***** demo @@ -2992,17 +3128,20 @@ -3.356775648311422e-02]; assert(norm(value_at_data-u_valid(:,3)),0,1e-12) 2 tests, 2 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]); +[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 @@ -3016,18 +3155,35 @@ ***** assert (w_bin(2, :), [3 1]); ***** assert (n_bin, [1; 3]); 5 tests, 5 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 +[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/tpaps.m] +>>>>> /build/reproducible-path/octave-splines-1.3.5/inst/tpaps.m +***** shared x,y 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); +***** assert (tpaps(x,y,1,x), y, 1E3*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 +***** assert (tpaps(x,y,1,x), y, 1E-10); +2 tests, 2 passed, 0 known failure, 0 skipped [inst/regularization.m] >>>>> /build/reproducible-path/octave-splines-1.3.5/inst/regularization.m ***** demo @@ -3101,126 +3257,6 @@ [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/tpaps.m] ->>>>> /build/reproducible-path/octave-splines-1.3.5/inst/tpaps.m -***** shared x,y - x = ([1:10 10.5 11.3])'; y = sin(x); -***** assert (tpaps(x,y,1,x), y, 1E3*eps); - x = ((1 ./ (1:100))' - 0.5) * ([0.2 0.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/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 - 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); -***** assert (ppval(csape(x',y'),x'), y', 10*eps); -***** 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) -***** assert (ppval(csape([1 2 4],[2, 3, 6]), 3), 13/3, 10*eps); -***** test cond='complete'; -***** assert (ppval(csape(x,y,cond),x), y, 10*eps); -***** assert (ppval(csape(x,y,cond),x'), y', 10*eps); -***** assert (ppval(csape(x',y',cond),x'), y', 10*eps); -***** 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) -***** assert (ppval(csape([1 2 4],[2, 3, 6], cond, [2 1]), 3), 215/48, 10*eps); -***** test cond='variational'; -***** assert (ppval(csape(x,y,cond),x), y, 10*eps); -***** assert (ppval(csape(x,y,cond),x'), y', 10*eps); -***** assert (ppval(csape(x',y',cond),x'), y', 10*eps); -***** 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) -***** assert (ppval(csape([1 2 3],[2, 3, 5],cond), 1.5), 2.40625, 10*eps); -***** assert (ppval(csape([1 2 4],[2, 3, 6], cond), 3), 4.375, 10*eps); -***** test cond='second'; -***** assert (ppval(csape(x,y,cond),x), y, 10*eps); -***** assert (ppval(csape(x,y,cond),x'), y', 10*eps); -***** assert (ppval(csape(x',y',cond),x'), y', 10*eps); -***** 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) -***** assert (ppval(csape([1 2 4],[2, 3, 6], cond, [1 2]), 3), 49/12, 10*eps); -***** test cond='periodic'; -***** assert (ppval(csape(x,y,cond),x), y, 10*eps); -***** assert (ppval(csape(x,y,cond),x'), y', 10*eps); -***** assert (ppval(csape(x',y',cond),x'), y', 10*eps); -***** 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); -***** assert (ppval(csape(x,y,cond),x'), y', 10*eps); -***** assert (ppval(csape(x',y',cond),x'), y', 10*eps); -***** 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) -***** assert (ppval(csape(x(1:4),y(1:4),cond),x(1:4)), y(1:4), 10*eps); -***** assert (ppval(csape(x(1:4)',y(1:4)',cond),x(1:4)), y(1:4), 10*eps); -***** test assert (ppval(csape([1 2 4],[2, 3, 6], 'not-a-knot'), 3), 13/3, 10*eps); -***** test assert (ppval(csape([1 2 4 5],[2, 3, 6, 5], 'not-a-knot'), 3), 29/6, 10*eps); -***** test assert (ppval(csape([1 2 4 5 6],[2, 3, 6, 5, 6], 'not-a-knot'), 3), 141/28, 10*eps); -***** test cond='complete'; - h = pi/6; n = 3; x = linspace(0,(n-1)*h,n)'; y = sin(x); valc = cos([x(1) x(end)]); pp = csape(x, y, cond, valc); -***** assert (ppval(csape(x,[y y],cond, valc),x)', ... - repmat(ppval(pp, x), [1 2]), 10*eps) -***** assert (polyval(pp.coefs(1, :), [0 h])', y(1:2), 10*eps) -***** assert (polyval(pp.coefs(2, :), [0 h])', y(2:3), 10*eps) -***** assert (polyval([3*pp.coefs(1, 1) 2*pp.coefs(1, 2) pp.coefs(1, 3)], 0), valc(1), 10*eps) -***** assert (polyval([3*pp.coefs(2, 1) 2*pp.coefs(2, 2) pp.coefs(2, 3)], h), valc(2), 10*eps) -***** assert (polyval([3*pp.coefs(1, 1) 2*pp.coefs(1, 2) pp.coefs(1, 3)], h), polyval([3*pp.coefs(2, 1) 2*pp.coefs(2, 2) pp.coefs(2, 3)], 0), 10*eps) -***** assert (polyval([6*pp.coefs(1, 1) 2*pp.coefs(1, 2)], h), polyval([6*pp.coefs(2, 1) 2*pp.coefs(2, 2)], 0), 10*eps) - y = cos(x); valc = -sin([x(1) x(end)]); pp1 = csape(x, y, cond, valc); -***** assert (ppval(csape(x,[y y],cond, valc),x)', ... - repmat(ppval(pp1, x), [1 2]), 10*eps) -***** assert (polyval(pp1.coefs(1, :), [0 h])', y(1:2), 10*eps) -***** assert (polyval(pp1.coefs(2, :), [0 h])', y(2:3), 10*eps) -***** assert (polyval([3*pp1.coefs(1, 1) 2*pp1.coefs(1, 2) pp1.coefs(1, 3)], 0), valc(1), 10*eps) -***** assert (polyval([3*pp1.coefs(2, 1) 2*pp1.coefs(2, 2) pp1.coefs(2, 3)], h), valc(2), 10*eps) -***** assert (polyval([3*pp1.coefs(1, 1) 2*pp1.coefs(1, 2) pp1.coefs(1, 3)], h), polyval([3*pp1.coefs(2, 1) 2*pp1.coefs(2, 2) pp1.coefs(2, 3)], 0), 10*eps) -***** assert (polyval([6*pp1.coefs(1, 1) 2*pp1.coefs(1, 2)], h), polyval([6*pp1.coefs(2, 1) 2*pp1.coefs(2, 2)], 0), 10*eps) - y = [sin(x) cos(x)]; valc = [cos([x(1); x(end)]) -sin([x(1); x(end)])]; pp2 = csape(x, y, cond, valc); -***** assert (pp2.coefs([1 3], :), pp.coefs) -***** assert (pp2.coefs([2 4], :), pp1.coefs) -***** test cond='periodic'; - x = [1 2 4 5 6]'; y = [2 3 6 5 6]'; xi = 3; yi = 129/26; pp = csape (x, y, cond); -***** assert (ppval(pp, x), y, 10*eps); -***** assert (ppval(pp, xi), yi, 10*eps); -***** 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); - x = [1 2 4 6]'; y = [2 3 4 2]'; xi = 3; yi = 4 + 1/64; pp = csape (x, y, cond); -***** assert (ppval(pp, x), y, 10*eps); -***** assert (ppval(pp, xi), yi, 10*eps); -***** 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); - x = [1 2 4 5]'; y = [2 3 6 5]'; xi = 3; yi = 5.1; pp = csape (x, y, cond); -***** assert (ppval(pp, x), y, 10*eps); -***** assert (ppval(pp, xi), yi, 10*eps); -***** 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); - x = [1 2 4]'; y = [2 3 2]'; xi = 3; yi = 2.5; pp = csape (x, y, cond); -***** assert (ppval(pp, x), y, 10*eps); -***** assert (ppval(pp, xi), yi, 10*eps); -***** 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 Checking C++ files ... Done running the unit tests. Summary: 125 tests, 125 passed, 0 known failures, 0 skipped @@ -3249,12 +3285,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/817078/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/817078/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/2380845 and its subdirectories -I: Current time: Sat Oct 18 01:47:09 -12 2025 -I: pbuilder-time-stamp: 1760795229 +I: removing directory /srv/workspace/pbuilder/817078 and its subdirectories +I: Current time: Sat Nov 21 10:17:26 +14 2026 +I: pbuilder-time-stamp: 1795205846