Diff of the two buildlogs: -- --- b1/build.log 2024-12-13 20:06:30.537933241 +0000 +++ b2/build.log 2024-12-13 20:21:53.963973187 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Fri Dec 13 07:42:23 -12 2024 -I: pbuilder-time-stamp: 1734118943 +I: Current time: Sat Dec 14 10:06:43 +14 2024 +I: pbuilder-time-stamp: 1734120403 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -31,52 +31,84 @@ dpkg-source: info: applying remove-Makefile-in-distclean-rule.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/4932/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/18666/tmp/hooks/D01_modify_environment starting +debug: Running on virt32c. +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 Dec 13 20:07 /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/18666/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/18666/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='armhf' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='armhf' + 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]="37" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=armhf + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=4 ' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='407e1b33f5834a74abcd96241b2fbc28' - 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='4932' - PS1='# ' - PS2='> ' + INVOCATION_ID=b0bf7beaa1a244549ee73153104ea6ef + LANG=C + LANGUAGE=it_CH:it + LC_ALL=C + MACHTYPE=arm-unknown-linux-gnueabihf + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnueabihf + 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=18666 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.iZsjE0My/pbuilderrc_mPio --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.iZsjE0My/b1 --logfile b1/build.log octave-optim_1.6.2-3.dsc' - SUDO_GID='113' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://10.0.0.15:3142/' + 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.iZsjE0My/pbuilderrc_5F9x --distribution trixie --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.iZsjE0My/b2 --logfile b2/build.log octave-optim_1.6.2-3.dsc' + SUDO_GID=113 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://10.0.0.15:3142/ I: uname -a - Linux virt64c 6.1.0-28-arm64 #1 SMP Debian 6.1.119-1 (2024-11-22) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-28-armmp-lpae #1 SMP Debian 6.1.119-1 (2024-11-22) armv7l GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/4932/tmp/hooks/D02_print_environment finished +I: user script /srv/workspace/pbuilder/18666/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -683,7 +715,7 @@ Get: 557 http://deb.debian.org/debian trixie/main armhf texlive-latex-base all 2024.20241115-1 [1278 kB] Get: 558 http://deb.debian.org/debian trixie/main armhf texlive-latex-recommended all 2024.20241115-1 [8757 kB] Get: 559 http://deb.debian.org/debian trixie/main armhf texlive all 2024.20241115-1 [18.6 kB] -Fetched 242 MB in 8s (31.2 MB/s) +Fetched 242 MB in 7s (35.3 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package poppler-data. (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 ... 19680 files and directories currently installed.) @@ -2986,7 +3018,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/octave-optim-1.6.2/ && 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-optim_1.6.2-3_source.changes +I: user script /srv/workspace/pbuilder/18666/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/18666/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/octave-optim-1.6.2/ && 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-optim_1.6.2-3_source.changes dpkg-buildpackage: info: source package octave-optim dpkg-buildpackage: info: source version 1.6.2-3 dpkg-buildpackage: info: source distribution unstable @@ -3169,12 +3205,10 @@ "The string 'DEFUN_DLD_REPLACEMENT_FOR_PACKAGE_DOCS' must not be present in source code, but is in __max_nargin_optim__.cc."; \ exit 1; \ fi -CXXFLAGS="-g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose -c error-helpers.cc if grep -q DEFUNX_DLD_REPLACEMENT_FOR_PACKAGE_DOCS __max_nargin_optim__.cc; \ then echo "The string 'DEFUNX_DLD_REPLACEMENT_FOR_PACKAGE_DOCS' must not be present in source code, but is in __max_nargin_optim__.cc."; \ exit 1; \ fi -g++ -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security error-helpers.cc -o error-helpers.o (echo "#include "; \ echo "int main () {"; \ sed -e s/DEFUN_DLD/DEFUN_DLD_REPLACEMENT_FOR_PACKAGE_DOCS/g \ @@ -3186,6 +3220,8 @@ echo "}"; \ ) \ | g++ -x c++ -D'DEFUN_DLD_REPLACEMENT_FOR_PACKAGE_DOCS(name,doc)=printf("%c" #name "\n@c " #name " __max_nargin_optim__.cc\n" doc "\n\n", 0x1D);' -o __max_nargin_optim__.bin - +CXXFLAGS="-g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose -c error-helpers.cc +g++ -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security error-helpers.cc -o error-helpers.o (echo "### This file is generated automatically from the"; \ echo "### corresponding .cc file by a Makefile rule."; \ echo ""; ./__bfgsmin.bin) > __bfgsmin.cc.docstrings @@ -3207,20 +3243,20 @@ CXXFLAGS="-g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose __bfgsmin.cc error-helpers.o CXXFLAGS="-g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose numgradient.cc error-helpers.o CXXFLAGS="-g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose numhessian.cc error-helpers.o -g++ -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security __bfgsmin.cc -o /tmp/oct-sXcfNB.o CXXFLAGS="-g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose \ -llapack -lblas \ __disna_optim__.cc error-helpers.o -g++ -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security numhessian.cc -o /tmp/oct-dSpUmD.o -g++ -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security numgradient.cc -o /tmp/oct-9wAmFg.o -g++ -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security __disna_optim__.cc -o /tmp/oct-I0Ow1r.o -g++ -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -o __disna_optim__.oct error-helpers.o /tmp/oct-I0Ow1r.o -llapack -lblas -shared -Wl,-Bsymbolic -Wl,-z,relro -flto=auto -ffat-lto-objects -Wl,-z,relro +g++ -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security __bfgsmin.cc -o /tmp/oct-Q00gpY.o +g++ -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security numgradient.cc -o /tmp/oct-LV25Dp.o +g++ -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security numhessian.cc -o /tmp/oct-OaKBPs.o +g++ -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security __disna_optim__.cc -o /tmp/oct-ezms5J.o +g++ -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -o __disna_optim__.oct error-helpers.o /tmp/oct-ezms5J.o -llapack -lblas -shared -Wl,-Bsymbolic -Wl,-z,relro -flto=auto -ffat-lto-objects -Wl,-z,relro CXXFLAGS="-g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose __max_nargin_optim__.cc error-helpers.o -g++ -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security __max_nargin_optim__.cc -o /tmp/oct-hTxR9f.o -g++ -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -o numhessian.oct error-helpers.o /tmp/oct-dSpUmD.o -shared -Wl,-Bsymbolic -Wl,-z,relro -flto=auto -ffat-lto-objects -Wl,-z,relro -g++ -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -o numgradient.oct error-helpers.o /tmp/oct-9wAmFg.o -shared -Wl,-Bsymbolic -Wl,-z,relro -flto=auto -ffat-lto-objects -Wl,-z,relro -g++ -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -o __max_nargin_optim__.oct error-helpers.o /tmp/oct-hTxR9f.o -shared -Wl,-Bsymbolic -Wl,-z,relro -flto=auto -ffat-lto-objects -Wl,-z,relro -g++ -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -o __bfgsmin.oct error-helpers.o /tmp/oct-sXcfNB.o -shared -Wl,-Bsymbolic -Wl,-z,relro -flto=auto -ffat-lto-objects -Wl,-z,relro +g++ -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security __max_nargin_optim__.cc -o /tmp/oct-A6Q6aX.o +g++ -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -o numgradient.oct error-helpers.o /tmp/oct-LV25Dp.o -shared -Wl,-Bsymbolic -Wl,-z,relro -flto=auto -ffat-lto-objects -Wl,-z,relro +g++ -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -o numhessian.oct error-helpers.o /tmp/oct-OaKBPs.o -shared -Wl,-Bsymbolic -Wl,-z,relro -flto=auto -ffat-lto-objects -Wl,-z,relro +g++ -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -o __bfgsmin.oct error-helpers.o /tmp/oct-Q00gpY.o -shared -Wl,-Bsymbolic -Wl,-z,relro -flto=auto -ffat-lto-objects -Wl,-z,relro +g++ -I/usr/include/octave-9.2.0/octave/.. -I/usr/include/octave-9.2.0/octave -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-optim-1.6.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -o __max_nargin_optim__.oct error-helpers.o /tmp/oct-A6Q6aX.o -shared -Wl,-Bsymbolic -Wl,-z,relro -flto=auto -ffat-lto-objects -Wl,-z,relro rm numhessian.bin numgradient.cc.docstrings MFDOCSTRINGS numgradient.bin __disna_optim__.cc.docstrings __disna_optim__.bin numhessian.cc.docstrings __max_nargin_optim__.bin __max_nargin_optim__.cc.docstrings __bfgsmin.bin __bfgsmin.cc.docstrings make[1]: Leaving directory '/build/reproducible-path/octave-optim-1.6.2/src' copyfile /build/reproducible-path/octave-optim-1.6.2/./src/__bfgsmin.oct /build/reproducible-path/octave-optim-1.6.2/./src/__disna_optim__.oct /build/reproducible-path/octave-optim-1.6.2/./src/__max_nargin_optim__.oct /build/reproducible-path/octave-optim-1.6.2/./src/numgradient.oct /build/reproducible-path/octave-optim-1.6.2/./src/numhessian.oct /build/reproducible-path/octave-optim-1.6.2/./inst/arm-unknown-linux-gnueabihf-api-v59 @@ -3274,8 +3310,8 @@ For information about changes from previous versions of the optim package, run 'news optim'. rm: cannot remove '/build/reproducible-path/octave-optim-1.6.2/debian/octave-optim/usr/share/octave/packages/optim-1.6.2/doc': Is a directory -rm: cannot remove '/build/reproducible-path/octave-optim-1.6.2/debian/octave-optim/usr/share/octave/packages/optim-1.6.2/doc/development': Is a directory rm: cannot remove '/build/reproducible-path/octave-optim-1.6.2/debian/octave-optim/usr/share/octave/packages/optim-1.6.2/doc/html': Is a directory +rm: cannot remove '/build/reproducible-path/octave-optim-1.6.2/debian/octave-optim/usr/share/octave/packages/optim-1.6.2/doc/development': Is a directory debian/rules execute_after_dh_auto_install make[1]: Entering directory '/build/reproducible-path/octave-optim-1.6.2' ( cd src ; ./configure ; make doc ) @@ -3335,6 +3371,360 @@ Checking package... Run the unit tests... Checking m files ... +[inst/linprog.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/linprog.m +***** test + f = [1; -1]; + A = []; + b = []; + Aeq = [1, 0]; + beq = [2]; + lb = [0; Inf]; + ub = [-Inf; 0]; + x_exp = [2; 0]; + assert (linprog (f, A, b, Aeq, beq, lb, ub), x_exp); +***** shared f, A, b, lb, ub, x_exp, fval_exp + f = [21 25 31 34 23 19 32 36 27 25 19]'; + + A1 = [ 1 0 0 0 1 0 0 1 0 0 0; + 0 1 0 0 0 1 0 0 1 0 0; + 0 0 1 0 0 0 0 0 0 1 0; + 0 0 0 1 0 0 1 0 0 0 1]; + A2 = [ 1 1 1 1 0 0 0 0 0 0 0; + 0 0 0 0 1 1 1 0 0 0 0; + 0 0 0 0 0 0 0 1 1 1 1]; + A = [-A1; A2]; + + b1 = [40; 50; 50; 70]; + b2 = [100; 60; 50]; + b = [-b1; b2]; + + lb = zeros (rows (f), 1); + ub = Inf (rows (f), 1); + + x_exp = [40 0 50 10 0 50 10 0 0 0 50]'; + fval_exp = f' * x_exp; + +***** test + Aeq = []; + beq = []; + [x_obs fval_obs] = linprog (f, A, b, Aeq, beq, lb, ub); + assert ([x_obs; fval_obs], [x_exp; fval_exp]); + +***** test + Aeq = zeros (1, rows (f)); + beq = 0; + assert (linprog (f, A, b, Aeq, beq, lb, ub), x_exp); +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/statset.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/statset.m +***** assert (isfield (statset (), "TolFun")) +***** assert (isfield (statset ("tolFun", 1e-3), "TolFun")) +***** error statset ("1_Parameter") +***** error statset ("%NOT_A_REAL_FUNCTION_NAME%") +***** warning statset ("foobar", 13); +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/lsqlin.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/lsqlin.m +***** test +***** shared C,d,A,b + C = [0.9501,0.7620,0.6153,0.4057;... + 0.2311,0.4564,0.7919,0.9354;... + 0.6068,0.0185,0.9218,0.9169;... + 0.4859,0.8214,0.7382,0.4102;... + 0.8912,0.4447,0.1762,0.8936]; + d = [0.0578; 0.3528; 0.8131; 0.0098; 0.1388]; + A =[0.2027, 0.2721, 0.7467, 0.4659;... + 0.1987, 0.1988, 0.4450, 0.4186;... + 0.6037 , 0.0152, 0.9318, 0.8462]; + b =[0.5251;0.2026;0.6721]; + Aeq = [3, 5, 7, 9]; + beq = 4; + lb = -0.1*ones(4,1); + ub = 2*ones(4,1); + [x,resnorm,residual,exitflag] = lsqlin(C,d,A,b,Aeq,beq,lb,ub); + assert(x,[-0.10000; -0.10000; 0.15991; 0.40896],10e-5) + assert(resnorm,0.16951,10e-5) + assert(residual, [0.035297; 0.087623; -0.353251; 0.145270; 0.121232],10e-5) + assert(exitflag,1) +***** test + Aeq = []; + beq = []; + lb = []; + ub = []; + x0 = 0.1*ones(4,1); + x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0); + [x,resnorm,residual,exitflag] = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0); + assert(x,[ 0.12986; -0.57569 ; 0.42510; 0.24384],10e-5) + assert(resnorm,0.017585,10e-5) + assert(residual, [-0.0126033; -0.0208040; -0.1295084; -0.0057389; 0.01372462],10e-5) + assert(exitflag,1) +***** demo + C = [0.9501 0.7620 0.6153 0.4057 + 0.2311 0.4564 0.7919 0.9354 + 0.6068 0.0185 0.9218 0.9169 + 0.4859 0.8214 0.7382 0.4102 + 0.8912 0.4447 0.1762 0.8936]; + d = [0.0578; 0.3528; 0.8131; 0.0098; 0.1388]; + %% Linear Inequality Constraints + A =[0.2027 0.2721 0.7467 0.4659 + 0.1987 0.1988 0.4450 0.4186 + 0.6037 0.0152 0.9318 0.8462]; + b =[0.5251; 0.2026; 0.6721]; + %% Linear Equality Constraints + Aeq = [3 5 7 9]; + beq = 4; + %% Bound constraints + lb = -0.1*ones(4,1); + ub = ones(4,1); + [x, resnorm, residual, flag, output, lambda] = lsqlin (C, d, A, b, Aeq, beq, lb, ub) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/residmin_stat.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/residmin_stat.m +***** test + ## independents + indep = 1:5; + ## residual function: + f = @ (p) p(1) * exp (p(2) * indep) - [1, 2, 4, 7, 14]; + ## parameters: + p = [.53203; .65307]; + + settings = optimset ("objf_type", "wls", + "ret_dfdp", true, "ret_covd", true, + "ret_covp", true, "ret_corp", true); + + info = residmin_stat (f, p, settings); + + assert (info.corp, [1, -.98918; -.98918, 1], .0001); +***** test + ## independents + indep = 1:5; + ## residual function: + f = @ (p) p(1) * exp (p(2) * indep) - [1, 2, 4, 7, 14]; + ## parameters: + p = single ([.53203; .65307]); + + settings = optimset ("objf_type", "wls", + "ret_dfdp", true, "ret_covd", true, + "ret_covp", true, "ret_corp", true); + + info = residmin_stat (f, p, settings); + + assert (info.corp, [1, -.98918; -.98918, 1], .0001); + assert (isa (info.dfdp, "single")); + assert (isa (info.covd, "single")); + assert (isa (info.covp, "single")); + assert (isa (info.corp, "single")); +***** test +***** shared x, misc, corp + x = [.871, .643, .550; + .228, .669, .854; + .528, .229, .170; + .110, .354, .337; + .911, .056, .493; + .476, .154, .918; + .655, .421, .077; + .649, .140, .199; + .995, .045, NA; + .130, .016, .195; + .823, .690, .690; + .768, .992, .389; + .203, .740, .120; + .302, .519, .221; + .991, .450, .249; + .224, .030, .502; + .428, .127, .772; + .552, .494, .110; + .461, .824, .714; + .799, .494, .295]; + + misc = [4.36, 5.21, 5.35; + 4.99, 3.30, 3.10; + 1.67, NA, 2.75; + 2.17, 1.48, 1.49; + 2.98, 4.69, 4.23; + 4.46, 3.87, 3.15; + 1.79, 3.18, 3.57; + 1.71, 3.13, 3.07; + 3.07, 5.01, 4.58; + 0.94, 0.93, 0.74; + 4.97, 5.37, 5.35; + 4.32, 4.85, 5.46; + 2.17, 1.78, 2.43; + 2.22, 2.18, 2.44; + 2.88, 4.90, 5.11; + 2.29, 1.94, 1.46; + 3.76, 3.39, 2.71; + 1.99, 2.93, 3.31; + 4.95, 4.08, 4.19; + 2.96, 4.26, 4.48]; + + corp = [1.000000, -0.396899, -0.402479, -0.019351, -0.167128; + -0.396899, 1.000000, -0.462988, -0.053813, 0.214705; + -0.402479, -0.462988, 1.000000, 0.127128, -0.187121; + -0.019351, -0.053813, 0.127128, 1.000000, -0.035904; + -0.167128, 0.214705, -0.187121, -0.035904, 1.000000]; + + p = struct ("a", [.9925145; 2.005293; 3.999732], + "b", 2.680371, "c", .4977683); + + pconf.a.TypicalX = .5 * ones (3, 1); + pconf.a. diffp = [.0001; .00001; .0001]; + pconf.b.diff_onesided = true; + + settings = optimset ("param_config", pconf, "f_pstruct", true, + "objf_type", "wls", + "ret_dfdp", true, "ret_covd", true, + "ret_covp", true, "ret_corp", true); + + f = @ (p) ... + subsasgn (x, struct ("type", "()", "subs", {{9, 3}}), p.c) ... + * horzcat (p.a, p.a([3, 1, 2]), p.a([3, 2, 1])) ... + - subsasgn (misc, struct ("type", "()", "subs", {{3, 2}}), p.b); + + info = residmin_stat (f, p, settings); + + assert (info.corp, corp, .0001); +***** test + p = [.9925145; 2.005293; 3.999732; 2.680371; .4977683]; + + settings = optimset ("TypicalX", .5, + "diffp", [.0001; .00001; .0001; .00001; .0001], + "diff_onesided", true, + "objf_type", "wls", + "ret_dfdp", true, "ret_covd", true, + "ret_covp", true, "ret_corp", true); + + f = @ (p) ... + subsasgn (x, struct ("type", "()", "subs", {{9, 3}}), p(5)) ... + * horzcat (p([1, 2, 3]), p([3, 1, 2]), p([3, 2, 1])) ... + - subsasgn (misc, struct ("type", "()", "subs", {{3, 2}}), p(4)); + + info = residmin_stat (f, p, settings); + + assert (info.corp, corp, .0001); +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/de_min.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/de_min.m +***** function result = f(x); + result = 100 * (x(2) - x(1)^2)^2 + (1 - x(1))^2; +***** test + tol = 1.0e-4; + ctl.tol = 0.0; + ctl.VTR = 1.0e-6; + ctl.XVmin = [-2 -2]; + ctl.XVmax = [ 2 2]; + rand("state", 11) + [x, obj_value, nfeval, convergence] = de_min (@f, ctl); + assert (convergence == 1); + assert (f(x) == obj_value); + assert (obj_value < ctl.VTR); +***** demo + ## define a simple example function + f = @(x) peaks(x(1), x(2)); + ## plot the function to see where the minimum might be + peaks() + ## first we set the region where we expect the minimum + ctl.XVmin = [-3 -3]; + ctl.XVmax = [ 3 3]; + ## and solve it with de_min + [x, obj_value, nfeval, convergence] = de_min (f, ctl) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/fmincon.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/fmincon.m +***** demo + ## Example for default optimization (Levenberg/Marquardt with + ## BFGS), one non-linear equality constraint. Constrained optimum is + ## at p = [0; 1]. + objective_function = @ (p) p(1)^2 + p(2)^2; + pin = [-2; 5]; + constraint_function = @ (p) - (p(1)^2 + 1 - p(2)); + [p, objf, cvg, outp] = fmincon (objective_function, pin, [], [], [], [], [], [], @ (p) {[], constraint_function(p)}{:}) +***** test + ## equality constraint + objective_function = @ (p) p(1)^2 + p(2)^2; + pin = [-2; 5]; + constraint_function = @ (p) - (p(1)^2 + 1 - p(2)); + [p, objf, cvg, outp] = fmincon (objective_function, pin, [], [], [], [], [], [], @ (p) {[], constraint_function(p)}{:}, optimset ("Algorithm", "lm_feasible")); + assert (p, [0; 1], 1e-6) +***** test + ## inequality constraint + objective_function = @ (p) p(1)^2 + p(2)^2; + pin = [2; 6]; + constraint_function = @ (p) p(1)^2 + 1 - p(2); + [p, objf, cvg, outp] = fmincon (objective_function, pin, [], [], [], [], [], [], @ (p) {constraint_function(p), []}{:}, optimset ("Algorithm", "lm_feasible")); + assert (p, [0; 1], 1e-6) +***** test + ## independents + indep = 1:5; + ## objective function: + f = @ (p) sumsq (p(1) * exp (p(2) * indep) - [1, 2, 4, 7, 14]); + ## initial values: + init = [.25; .25]; + ## linear constraints, A * parametervector + B >= 0 + A = [1, -1]; B = 0; # p(1) >= p(2); + + assert (fmincon (f, init, -A, B), [.6203; .6203], .0001); +***** test + ## problem structure + indep = 1:5; + problem = struct ("objective", + @ (p) sumsq (p(1) * exp (p(2) * indep) - [1, 2, 4, 7, 14]), + "x0", [.25; .25], + "Aineq", [-1, 1], + "bineq", 0, + "solver", "fmincon"); + assert (fmincon (problem), [.6203; .6203], .0001); +***** test + ## Octave sqp solver with a lot of inequality constraints + objf = @ (p) sumsq (p(4:9)); + init = [300; -100; -.1997; -127; -151; 379; 421; 460; 426]; + lbound = [-Inf; -Inf; -Inf; 0; 0; 0; 0; 0; 0]; + inequc = @ (p) vertcat ( ... + p(1) + p(2) * exp (-5 * p(3)) + p(4) - 127, + p(1) + p(2) * exp (-3 * p(3)) + p(5) - 151, + p(1) + p(2) * exp (-p(3)) + p(6) - 379, + p(1) + p(2) * exp (p(3)) + p(7) - 421, + p(1) + p(2) * exp (3 * p(3)) + p(8) - 460, + p(1) + p(2) * exp (5 * p(3)) + p(9) - 426, + -p(1) - p(2) * exp (-5 * p(3)) + p(4) + 127, + -p(1) - p(2) * exp (-3 * p(3)) + p(5) + 151, + -p(1) - p(2) * exp (-p(3)) + p(6) + 379, + -p(1) - p(2) * exp (p(3)) + p(7) + 421, + -p(1) - p(2) * exp (3 * p(3)) + p(8) + 460, + -p(1) - p(2) * exp (5 * p(3)) + p(9) + 426); + [p, objf, cvg, outp] = fmincon (objf, init, [], [], [], [], lbound, [], + @ (p) {- inequc(p), []}{:}, + optimset ("Algorithm", "octave_sqp")); + assert (p, [5.2330e+02; -1.5694e+02; -1.9966e-01; 2.9607e+01; + 8.6615e+01; 4.7326e+01; 2.6235e+01; 2.2915e+01; + 3.9470e+01], .01); +***** test + ## Same as above with re-ordered parameters to test bound vectors + ## with less elements than parameters. + objf = @ (p) sumsq (p(1:6)); + init = [-127; -151; 379; 421; 460; 426; 300; -100; -.1997]; + lbound = [0; 0; 0; 0; 0; 0]; + inequc = @ (p) vertcat ( ... + p(7) + p(8) * exp (-5 * p(9)) + p(1) - 127, + p(7) + p(8) * exp (-3 * p(9)) + p(2) - 151, + p(7) + p(8) * exp (-p(9)) + p(3) - 379, + p(7) + p(8) * exp (p(9)) + p(4) - 421, + p(7) + p(8) * exp (3 * p(9)) + p(5) - 460, + p(7) + p(8) * exp (5 * p(9)) + p(6) - 426, + -p(7) - p(8) * exp (-5 * p(9)) + p(1) + 127, + -p(7) - p(8) * exp (-3 * p(9)) + p(2) + 151, + -p(7) - p(8) * exp (-p(9)) + p(3) + 379, + -p(7) - p(8) * exp (p(9)) + p(4) + 421, + -p(7) - p(8) * exp (3 * p(9)) + p(5) + 460, + -p(7) - p(8) * exp (5 * p(9)) + p(6) + 426); + [p, objf, cvg, outp] = fmincon (objf, init, [], [], [], [], lbound, [], + @ (p) {- inequc(p), []}{:}, + optimset ("Algorithm", "octave_sqp")); + assert (p, [2.9607e+01; 8.6615e+01; 4.7326e+01; 2.6235e+01; + 2.2915e+01; 3.9470e+01; 5.2330e+02; -1.5694e+02; + -1.9966e-01], .01); +6 tests, 6 passed, 0 known failure, 0 skipped [inst/nonlin_residmin.m] >>>>> /build/reproducible-path/octave-optim-1.6.2/inst/nonlin_residmin.m ***** demo @@ -3473,95 +3863,55 @@ assert (p, [1.0590; 1.9266; 4.0456; 2.7061; .3; 1], .0001); 4 tests, 4 passed, 0 known failure, 0 skipped -[inst/statget.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/statget.m -***** shared opts - opts = statset ("maxit", 100); -***** assert (statget (opts, "maxit"), 100) -***** assert (statget (opts, "MaxITer"), 100) -***** assert (statget (opts, "TolFun"), []) -***** assert (statget (opts, "TolFun", 1e-3), 1e-3) -***** error statget () -***** error statget (1) -***** error statget (1,2,3,4,5) -***** error statget (1, "name") -***** error statget (struct (), 2) -9 tests, 9 passed, 0 known failure, 0 skipped +[inst/nonlin_curvefit.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/nonlin_curvefit.m +***** demo + ## Example for linear inequality constraints + ## (see also the same example in 'demo nonlin_residmin') + + ## independents and observations + indep = 1:5; + obs = [1, 2, 4, 7, 14]; + ## model function: + f = @ (p, x) p(1) * exp (p(2) * x); + ## initial values: + init = [.25; .25]; + ## linear constraints, A.' * parametervector + B >= 0 + A = [1; -1]; B = 0; # p(1) >= p(2); + settings = optimset ("inequc", {A, B}); + + ## start optimization + [p, model_values, cvg, outp] = nonlin_curvefit (f, init, indep, obs, settings) +***** test + t = optim_problems ().curve.schittkowski_327; + cp = nonlin_curvefit (@ (p, x) t.f (x, p), t.init_p, t.data.x, t.data.y, optimset ("lbound", t.non_strict_inequc.bounds(:, 1), "ubound", t.non_strict_inequc.bounds(:, 2), "inequc", {t.non_strict_inequc.general}, "dfdp", @ (p, x) t.dfdp (x, p))); + assert (cp, t.result.p, [.0001; .001]); +1 test, 1 passed, 0 known failure, 0 skipped [inst/__all_stat_opts__.m] >>>>> /build/reproducible-path/octave-optim-1.6.2/inst/__all_stat_opts__.m ***** assert (1) 1 test, 1 passed, 0 known failure, 0 skipped -[inst/quadprog.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/quadprog.m -***** test - C = [0.9501 0.7620 0.6153 0.4057 - 0.2311 0.4564 0.7919 0.9354 - 0.6068 0.0185 0.9218 0.9169 - 0.4859 0.8214 0.7382 0.4102 - 0.8912 0.4447 0.1762 0.8936]; - %% Linear Inequality Constraints - d = [0.0578; 0.3528; 0.8131; 0.0098; 0.1388]; - A =[0.2027 0.2721 0.7467 0.4659 - 0.1987 0.1988 0.4450 0.4186 - 0.6037 0.0152 0.9318 0.8462]; - b =[0.5251; 0.2026; 0.6721]; - %% Linear Equality Constraints - Aeq = [3 5 7 9]; - beq = 4; - %% Bound constraints - lb = -0.1*ones(4,1); - ub = ones(4,1); - H = C' * C; - f = -C' * d; - [x, obj, flag, output, lambda]=quadprog (H, f, A, b, Aeq, beq, lb, ub); - assert (x, [-.1; -.1; .1599; .4090], .0001); - assert (obj, -0.3194, .0001); - assert (flag, 1); - assert (lambda.lower, [.0674; .2499; 0; 0], .0001); - assert (lambda.upper, [0; 0; 0; 0]); -***** demo - C = [0.9501 0.7620 0.6153 0.4057 - 0.2311 0.4564 0.7919 0.9354 - 0.6068 0.0185 0.9218 0.9169 - 0.4859 0.8214 0.7382 0.4102 - 0.8912 0.4447 0.1762 0.8936]; - %% Linear Inequality Constraints - d = [0.0578; 0.3528; 0.8131; 0.0098; 0.1388]; - A =[0.2027 0.2721 0.7467 0.4659 - 0.1987 0.1988 0.4450 0.4186 - 0.6037 0.0152 0.9318 0.8462]; - b =[0.5251; 0.2026; 0.6721]; - %% Linear Equality Constraints - Aeq = [3 5 7 9]; - beq = 4; - %% Bound constraints - lb = -0.1*ones(4,1); - ub = ones(4,1); - H = C' * C; - f = -C' * d; - [x, obj, flag, output, lambda]=quadprog (H, f, A, b, Aeq, beq, lb, ub) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/lsqcurvefit.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/lsqcurvefit.m +[inst/lsqnonlin.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/lsqnonlin.m ***** test - xdata = [0 .3 .8 1.1 1.6 2.3]; - ydata = [.82 .72 .63 .60 .55 .50]; - yhat = @(p,x) p(1) + p(2)*exp(-x); - opt = optimset('TolFun',1e-100); - [p, resnorm, residual] = lsqcurvefit(yhat,[1 1], xdata, ydata,[0 0],[],opt); - assert (p, [ 0.47595; 0.34132], 1e-5) + t = [0 .3 .8 1.1 1.6 2.3]; + y = [.82 .72 .63 .60 .55 .50]; + yhat = @(c,t) c(1) + c(2)*exp(-t); + opt = optimset('TolFun',1e-10); + [c,resnorm,residual] = lsqnonlin(@(c)yhat(c,t)-y,[1 1],[0 0],[],opt); + assert (c, [ 0.47595; 0.34132], 1e-5) assert (resnorm, 3.2419e-004, 1e-8) assert(residual, [-2.7283e-003, 8.8079e-003, -6.8307e-004, -1.0432e-002, -5.1366e-003, 1.0172e-002], 1e-5) ***** test - problem.solver = "lsqcurvefit"; - problem.objective = @(p,x) p(1) + p(2)*exp(-x); + problem.solver = "lsqnonlin"; + xdata = [0 .3 .8 1.1 1.6 2.3]; + ydata = [.82 .72 .63 .60 .55 .50]; + problem.objective = @(p) p(1) + p(2)*exp(-xdata) - ydata; problem.x0 = [1, 1]; - problem.xdata = [0 .3 .8 1.1 1.6 2.3]; - problem.ydata = [.82 .72 .63 .60 .55 .50]; problem.lb = [0, 0]; problem.ub = []; problem.options = optimset('TolFun',1e-100); - [p, resnorm, residual] = lsqcurvefit (problem); + [p, resnorm, residual] = lsqnonlin (problem); assert (p, [ 0.47595; 0.34132], 1e-5) assert (resnorm, 3.2419e-004, 1e-8) assert(residual, [-2.7283e-003, 8.8079e-003, -6.8307e-004, -1.0432e-002, -5.1366e-003, 1.0172e-002], 1e-5) @@ -3581,15 +3931,15 @@ opts = optimset ("Jacobian", "on") %% model function: - function [F,J] = myfun (p, x) - F = p(1) * exp (-p(2) * x); + function [F,J] = myfun (p, x, y) + F = p(1) * exp (-p(2) * x) - y; if nargout > 1 J = [exp(- p(2) * x), - p(1) * x .* exp(- p(2) * x)]; endif endfunction [c, resnorm, residual, flag, output, lambda, jacob] = ... - lsqcurvefit (@ (varargin) myfun(varargin{:}), p0, x, y, lb, ub, opts) + lsqnonlin(@(p) myfun(p, x, y), p0, lb, ub, opts) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/nonlin_min.m] >>>>> /build/reproducible-path/octave-optim-1.6.2/inst/nonlin_min.m @@ -3715,142 +4065,20 @@ assert (p, [1.0590; 1.9266; 4.0456; 2.7061; .3; 1], .005); 3 tests, 3 passed, 0 known failure, 0 skipped -[inst/nonlin_curvefit.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/nonlin_curvefit.m -***** demo - ## Example for linear inequality constraints - ## (see also the same example in 'demo nonlin_residmin') - - ## independents and observations - indep = 1:5; - obs = [1, 2, 4, 7, 14]; - ## model function: - f = @ (p, x) p(1) * exp (p(2) * x); - ## initial values: - init = [.25; .25]; - ## linear constraints, A.' * parametervector + B >= 0 - A = [1; -1]; B = 0; # p(1) >= p(2); - settings = optimset ("inequc", {A, B}); - - ## start optimization - [p, model_values, cvg, outp] = nonlin_curvefit (f, init, indep, obs, settings) -***** test - t = optim_problems ().curve.schittkowski_327; - cp = nonlin_curvefit (@ (p, x) t.f (x, p), t.init_p, t.data.x, t.data.y, optimset ("lbound", t.non_strict_inequc.bounds(:, 1), "ubound", t.non_strict_inequc.bounds(:, 2), "inequc", {t.non_strict_inequc.general}, "dfdp", @ (p, x) t.dfdp (x, p))); - assert (cp, t.result.p, [.0001; .001]); -1 test, 1 passed, 0 known failure, 0 skipped -[inst/lsqlin.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/lsqlin.m -***** test -***** shared C,d,A,b - C = [0.9501,0.7620,0.6153,0.4057;... - 0.2311,0.4564,0.7919,0.9354;... - 0.6068,0.0185,0.9218,0.9169;... - 0.4859,0.8214,0.7382,0.4102;... - 0.8912,0.4447,0.1762,0.8936]; - d = [0.0578; 0.3528; 0.8131; 0.0098; 0.1388]; - A =[0.2027, 0.2721, 0.7467, 0.4659;... - 0.1987, 0.1988, 0.4450, 0.4186;... - 0.6037 , 0.0152, 0.9318, 0.8462]; - b =[0.5251;0.2026;0.6721]; - Aeq = [3, 5, 7, 9]; - beq = 4; - lb = -0.1*ones(4,1); - ub = 2*ones(4,1); - [x,resnorm,residual,exitflag] = lsqlin(C,d,A,b,Aeq,beq,lb,ub); - assert(x,[-0.10000; -0.10000; 0.15991; 0.40896],10e-5) - assert(resnorm,0.16951,10e-5) - assert(residual, [0.035297; 0.087623; -0.353251; 0.145270; 0.121232],10e-5) - assert(exitflag,1) -***** test - Aeq = []; - beq = []; - lb = []; - ub = []; - x0 = 0.1*ones(4,1); - x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0); - [x,resnorm,residual,exitflag] = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0); - assert(x,[ 0.12986; -0.57569 ; 0.42510; 0.24384],10e-5) - assert(resnorm,0.017585,10e-5) - assert(residual, [-0.0126033; -0.0208040; -0.1295084; -0.0057389; 0.01372462],10e-5) - assert(exitflag,1) -***** demo - C = [0.9501 0.7620 0.6153 0.4057 - 0.2311 0.4564 0.7919 0.9354 - 0.6068 0.0185 0.9218 0.9169 - 0.4859 0.8214 0.7382 0.4102 - 0.8912 0.4447 0.1762 0.8936]; - d = [0.0578; 0.3528; 0.8131; 0.0098; 0.1388]; - %% Linear Inequality Constraints - A =[0.2027 0.2721 0.7467 0.4659 - 0.1987 0.1988 0.4450 0.4186 - 0.6037 0.0152 0.9318 0.8462]; - b =[0.5251; 0.2026; 0.6721]; - %% Linear Equality Constraints - Aeq = [3 5 7 9]; - beq = 4; - %% Bound constraints - lb = -0.1*ones(4,1); - ub = ones(4,1); - [x, resnorm, residual, flag, output, lambda] = lsqlin (C, d, A, b, Aeq, beq, lb, ub) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/polyconf.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/polyconf.m -***** test - # data from Hocking, RR, "Methods and Applications of Linear Models" - temperature=[40;40;40;45;45;45;50;50;50;55;55;55;60;60;60;65;65;65]; - strength=[66.3;64.84;64.36;69.70;66.26;72.06;73.23;71.4;68.85;75.78;72.57;76.64;78.87;77.37;75.94;78.82;77.13;77.09]; - [p,s] = polyfit(temperature,strength,1); - [y,dy] = polyconf(p,40,s,0.05,'ci'); - assert([y,dy],[66.15396825396826,1.71702862681486],200*eps); - [y,dy] = polyconf(p,40,s,0.05,'pi'); - assert(dy,4.45345484470743,200*eps); -1 test, 1 passed, 0 known failure, 0 skipped -[inst/linprog.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/linprog.m -***** test - f = [1; -1]; - A = []; - b = []; - Aeq = [1, 0]; - beq = [2]; - lb = [0; Inf]; - ub = [-Inf; 0]; - x_exp = [2; 0]; - assert (linprog (f, A, b, Aeq, beq, lb, ub), x_exp); -***** shared f, A, b, lb, ub, x_exp, fval_exp - f = [21 25 31 34 23 19 32 36 27 25 19]'; - - A1 = [ 1 0 0 0 1 0 0 1 0 0 0; - 0 1 0 0 0 1 0 0 1 0 0; - 0 0 1 0 0 0 0 0 0 1 0; - 0 0 0 1 0 0 1 0 0 0 1]; - A2 = [ 1 1 1 1 0 0 0 0 0 0 0; - 0 0 0 0 1 1 1 0 0 0 0; - 0 0 0 0 0 0 0 1 1 1 1]; - A = [-A1; A2]; - - b1 = [40; 50; 50; 70]; - b2 = [100; 60; 50]; - b = [-b1; b2]; - - lb = zeros (rows (f), 1); - ub = Inf (rows (f), 1); - - x_exp = [40 0 50 10 0 50 10 0 0 0 50]'; - fval_exp = f' * x_exp; - -***** test - Aeq = []; - beq = []; - [x_obs fval_obs] = linprog (f, A, b, Aeq, beq, lb, ub); - assert ([x_obs; fval_obs], [x_exp; fval_exp]); - -***** test - Aeq = zeros (1, rows (f)); - beq = 0; - assert (linprog (f, A, b, Aeq, beq, lb, ub), x_exp); -3 tests, 3 passed, 0 known failure, 0 skipped +[inst/statget.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/statget.m +***** shared opts + opts = statset ("maxit", 100); +***** assert (statget (opts, "maxit"), 100) +***** assert (statget (opts, "MaxITer"), 100) +***** assert (statget (opts, "TolFun"), []) +***** assert (statget (opts, "TolFun", 1e-3), 1e-3) +***** error statget () +***** error statget (1) +***** error statget (1,2,3,4,5) +***** error statget (1, "name") +***** error statget (struct (), 2) +9 tests, 9 passed, 0 known failure, 0 skipped [inst/nlinfit.m] >>>>> /build/reproducible-path/octave-optim-1.6.2/inst/nlinfit.m ***** test @@ -3884,280 +4112,27 @@ [beta, R, J, covb, mse] = nlinfit (x, y_noisy, modelfun, beta0) [beta_w, R_w, J_w, covb_w, mse_w] = nlinfit (x, y_noisy, modelfun, beta0, [], "weights", weights) 1 test, 1 passed, 0 known failure, 0 skipped -[inst/de_min.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/de_min.m -***** function result = f(x); - result = 100 * (x(2) - x(1)^2)^2 + (1 - x(1))^2; -***** test - tol = 1.0e-4; - ctl.tol = 0.0; - ctl.VTR = 1.0e-6; - ctl.XVmin = [-2 -2]; - ctl.XVmax = [ 2 2]; - rand("state", 11) - [x, obj_value, nfeval, convergence] = de_min (@f, ctl); - assert (convergence == 1); - assert (f(x) == obj_value); - assert (obj_value < ctl.VTR); -***** demo - ## define a simple example function - f = @(x) peaks(x(1), x(2)); - ## plot the function to see where the minimum might be - peaks() - ## first we set the region where we expect the minimum - ctl.XVmin = [-3 -3]; - ctl.XVmax = [ 3 3]; - ## and solve it with de_min - [x, obj_value, nfeval, convergence] = de_min (f, ctl) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/residmin_stat.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/residmin_stat.m -***** test - ## independents - indep = 1:5; - ## residual function: - f = @ (p) p(1) * exp (p(2) * indep) - [1, 2, 4, 7, 14]; - ## parameters: - p = [.53203; .65307]; - - settings = optimset ("objf_type", "wls", - "ret_dfdp", true, "ret_covd", true, - "ret_covp", true, "ret_corp", true); - - info = residmin_stat (f, p, settings); - - assert (info.corp, [1, -.98918; -.98918, 1], .0001); -***** test - ## independents - indep = 1:5; - ## residual function: - f = @ (p) p(1) * exp (p(2) * indep) - [1, 2, 4, 7, 14]; - ## parameters: - p = single ([.53203; .65307]); - - settings = optimset ("objf_type", "wls", - "ret_dfdp", true, "ret_covd", true, - "ret_covp", true, "ret_corp", true); - - info = residmin_stat (f, p, settings); - - assert (info.corp, [1, -.98918; -.98918, 1], .0001); - assert (isa (info.dfdp, "single")); - assert (isa (info.covd, "single")); - assert (isa (info.covp, "single")); - assert (isa (info.corp, "single")); -***** test -***** shared x, misc, corp - x = [.871, .643, .550; - .228, .669, .854; - .528, .229, .170; - .110, .354, .337; - .911, .056, .493; - .476, .154, .918; - .655, .421, .077; - .649, .140, .199; - .995, .045, NA; - .130, .016, .195; - .823, .690, .690; - .768, .992, .389; - .203, .740, .120; - .302, .519, .221; - .991, .450, .249; - .224, .030, .502; - .428, .127, .772; - .552, .494, .110; - .461, .824, .714; - .799, .494, .295]; - - misc = [4.36, 5.21, 5.35; - 4.99, 3.30, 3.10; - 1.67, NA, 2.75; - 2.17, 1.48, 1.49; - 2.98, 4.69, 4.23; - 4.46, 3.87, 3.15; - 1.79, 3.18, 3.57; - 1.71, 3.13, 3.07; - 3.07, 5.01, 4.58; - 0.94, 0.93, 0.74; - 4.97, 5.37, 5.35; - 4.32, 4.85, 5.46; - 2.17, 1.78, 2.43; - 2.22, 2.18, 2.44; - 2.88, 4.90, 5.11; - 2.29, 1.94, 1.46; - 3.76, 3.39, 2.71; - 1.99, 2.93, 3.31; - 4.95, 4.08, 4.19; - 2.96, 4.26, 4.48]; - - corp = [1.000000, -0.396899, -0.402479, -0.019351, -0.167128; - -0.396899, 1.000000, -0.462988, -0.053813, 0.214705; - -0.402479, -0.462988, 1.000000, 0.127128, -0.187121; - -0.019351, -0.053813, 0.127128, 1.000000, -0.035904; - -0.167128, 0.214705, -0.187121, -0.035904, 1.000000]; - - p = struct ("a", [.9925145; 2.005293; 3.999732], - "b", 2.680371, "c", .4977683); - - pconf.a.TypicalX = .5 * ones (3, 1); - pconf.a. diffp = [.0001; .00001; .0001]; - pconf.b.diff_onesided = true; - - settings = optimset ("param_config", pconf, "f_pstruct", true, - "objf_type", "wls", - "ret_dfdp", true, "ret_covd", true, - "ret_covp", true, "ret_corp", true); - - f = @ (p) ... - subsasgn (x, struct ("type", "()", "subs", {{9, 3}}), p.c) ... - * horzcat (p.a, p.a([3, 1, 2]), p.a([3, 2, 1])) ... - - subsasgn (misc, struct ("type", "()", "subs", {{3, 2}}), p.b); - - info = residmin_stat (f, p, settings); - - assert (info.corp, corp, .0001); -***** test - p = [.9925145; 2.005293; 3.999732; 2.680371; .4977683]; - - settings = optimset ("TypicalX", .5, - "diffp", [.0001; .00001; .0001; .00001; .0001], - "diff_onesided", true, - "objf_type", "wls", - "ret_dfdp", true, "ret_covd", true, - "ret_covp", true, "ret_corp", true); - - f = @ (p) ... - subsasgn (x, struct ("type", "()", "subs", {{9, 3}}), p(5)) ... - * horzcat (p([1, 2, 3]), p([3, 1, 2]), p([3, 2, 1])) ... - - subsasgn (misc, struct ("type", "()", "subs", {{3, 2}}), p(4)); - - info = residmin_stat (f, p, settings); - - assert (info.corp, corp, .0001); -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/fmincon.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/fmincon.m -***** demo - ## Example for default optimization (Levenberg/Marquardt with - ## BFGS), one non-linear equality constraint. Constrained optimum is - ## at p = [0; 1]. - objective_function = @ (p) p(1)^2 + p(2)^2; - pin = [-2; 5]; - constraint_function = @ (p) - (p(1)^2 + 1 - p(2)); - [p, objf, cvg, outp] = fmincon (objective_function, pin, [], [], [], [], [], [], @ (p) {[], constraint_function(p)}{:}) -***** test - ## equality constraint - objective_function = @ (p) p(1)^2 + p(2)^2; - pin = [-2; 5]; - constraint_function = @ (p) - (p(1)^2 + 1 - p(2)); - [p, objf, cvg, outp] = fmincon (objective_function, pin, [], [], [], [], [], [], @ (p) {[], constraint_function(p)}{:}, optimset ("Algorithm", "lm_feasible")); - assert (p, [0; 1], 1e-6) -***** test - ## inequality constraint - objective_function = @ (p) p(1)^2 + p(2)^2; - pin = [2; 6]; - constraint_function = @ (p) p(1)^2 + 1 - p(2); - [p, objf, cvg, outp] = fmincon (objective_function, pin, [], [], [], [], [], [], @ (p) {constraint_function(p), []}{:}, optimset ("Algorithm", "lm_feasible")); - assert (p, [0; 1], 1e-6) -***** test - ## independents - indep = 1:5; - ## objective function: - f = @ (p) sumsq (p(1) * exp (p(2) * indep) - [1, 2, 4, 7, 14]); - ## initial values: - init = [.25; .25]; - ## linear constraints, A * parametervector + B >= 0 - A = [1, -1]; B = 0; # p(1) >= p(2); - - assert (fmincon (f, init, -A, B), [.6203; .6203], .0001); -***** test - ## problem structure - indep = 1:5; - problem = struct ("objective", - @ (p) sumsq (p(1) * exp (p(2) * indep) - [1, 2, 4, 7, 14]), - "x0", [.25; .25], - "Aineq", [-1, 1], - "bineq", 0, - "solver", "fmincon"); - assert (fmincon (problem), [.6203; .6203], .0001); -***** test - ## Octave sqp solver with a lot of inequality constraints - objf = @ (p) sumsq (p(4:9)); - init = [300; -100; -.1997; -127; -151; 379; 421; 460; 426]; - lbound = [-Inf; -Inf; -Inf; 0; 0; 0; 0; 0; 0]; - inequc = @ (p) vertcat ( ... - p(1) + p(2) * exp (-5 * p(3)) + p(4) - 127, - p(1) + p(2) * exp (-3 * p(3)) + p(5) - 151, - p(1) + p(2) * exp (-p(3)) + p(6) - 379, - p(1) + p(2) * exp (p(3)) + p(7) - 421, - p(1) + p(2) * exp (3 * p(3)) + p(8) - 460, - p(1) + p(2) * exp (5 * p(3)) + p(9) - 426, - -p(1) - p(2) * exp (-5 * p(3)) + p(4) + 127, - -p(1) - p(2) * exp (-3 * p(3)) + p(5) + 151, - -p(1) - p(2) * exp (-p(3)) + p(6) + 379, - -p(1) - p(2) * exp (p(3)) + p(7) + 421, - -p(1) - p(2) * exp (3 * p(3)) + p(8) + 460, - -p(1) - p(2) * exp (5 * p(3)) + p(9) + 426); - [p, objf, cvg, outp] = fmincon (objf, init, [], [], [], [], lbound, [], - @ (p) {- inequc(p), []}{:}, - optimset ("Algorithm", "octave_sqp")); - assert (p, [5.2330e+02; -1.5694e+02; -1.9966e-01; 2.9607e+01; - 8.6615e+01; 4.7326e+01; 2.6235e+01; 2.2915e+01; - 3.9470e+01], .01); -***** test - ## Same as above with re-ordered parameters to test bound vectors - ## with less elements than parameters. - objf = @ (p) sumsq (p(1:6)); - init = [-127; -151; 379; 421; 460; 426; 300; -100; -.1997]; - lbound = [0; 0; 0; 0; 0; 0]; - inequc = @ (p) vertcat ( ... - p(7) + p(8) * exp (-5 * p(9)) + p(1) - 127, - p(7) + p(8) * exp (-3 * p(9)) + p(2) - 151, - p(7) + p(8) * exp (-p(9)) + p(3) - 379, - p(7) + p(8) * exp (p(9)) + p(4) - 421, - p(7) + p(8) * exp (3 * p(9)) + p(5) - 460, - p(7) + p(8) * exp (5 * p(9)) + p(6) - 426, - -p(7) - p(8) * exp (-5 * p(9)) + p(1) + 127, - -p(7) - p(8) * exp (-3 * p(9)) + p(2) + 151, - -p(7) - p(8) * exp (-p(9)) + p(3) + 379, - -p(7) - p(8) * exp (p(9)) + p(4) + 421, - -p(7) - p(8) * exp (3 * p(9)) + p(5) + 460, - -p(7) - p(8) * exp (5 * p(9)) + p(6) + 426); - [p, objf, cvg, outp] = fmincon (objf, init, [], [], [], [], lbound, [], - @ (p) {- inequc(p), []}{:}, - optimset ("Algorithm", "octave_sqp")); - assert (p, [2.9607e+01; 8.6615e+01; 4.7326e+01; 2.6235e+01; - 2.2915e+01; 3.9470e+01; 5.2330e+02; -1.5694e+02; - -1.9966e-01], .01); -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/vfzero.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/vfzero.m -***** shared opt0 - opt0 = optimset ("tolx", 0); -***** assert(vfzero(@cos, [0, 3], opt0), pi/2, 10*eps) -***** assert(vfzero(@(x) x^(1/3) - 1e-8, [0,1], opt0), 1e-24, 1e-22*eps) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/lsqnonlin.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/lsqnonlin.m +[inst/lsqcurvefit.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/lsqcurvefit.m ***** test - t = [0 .3 .8 1.1 1.6 2.3]; - y = [.82 .72 .63 .60 .55 .50]; - yhat = @(c,t) c(1) + c(2)*exp(-t); - opt = optimset('TolFun',1e-10); - [c,resnorm,residual] = lsqnonlin(@(c)yhat(c,t)-y,[1 1],[0 0],[],opt); - assert (c, [ 0.47595; 0.34132], 1e-5) + xdata = [0 .3 .8 1.1 1.6 2.3]; + ydata = [.82 .72 .63 .60 .55 .50]; + yhat = @(p,x) p(1) + p(2)*exp(-x); + opt = optimset('TolFun',1e-100); + [p, resnorm, residual] = lsqcurvefit(yhat,[1 1], xdata, ydata,[0 0],[],opt); + assert (p, [ 0.47595; 0.34132], 1e-5) assert (resnorm, 3.2419e-004, 1e-8) assert(residual, [-2.7283e-003, 8.8079e-003, -6.8307e-004, -1.0432e-002, -5.1366e-003, 1.0172e-002], 1e-5) ***** test - problem.solver = "lsqnonlin"; - xdata = [0 .3 .8 1.1 1.6 2.3]; - ydata = [.82 .72 .63 .60 .55 .50]; - problem.objective = @(p) p(1) + p(2)*exp(-xdata) - ydata; + problem.solver = "lsqcurvefit"; + problem.objective = @(p,x) p(1) + p(2)*exp(-x); problem.x0 = [1, 1]; + problem.xdata = [0 .3 .8 1.1 1.6 2.3]; + problem.ydata = [.82 .72 .63 .60 .55 .50]; problem.lb = [0, 0]; problem.ub = []; problem.options = optimset('TolFun',1e-100); - [p, resnorm, residual] = lsqnonlin (problem); + [p, resnorm, residual] = lsqcurvefit (problem); assert (p, [ 0.47595; 0.34132], 1e-5) assert (resnorm, 3.2419e-004, 1e-8) assert(residual, [-2.7283e-003, 8.8079e-003, -6.8307e-004, -1.0432e-002, -5.1366e-003, 1.0172e-002], 1e-5) @@ -4177,15 +4152,15 @@ opts = optimset ("Jacobian", "on") %% model function: - function [F,J] = myfun (p, x, y) - F = p(1) * exp (-p(2) * x) - y; + function [F,J] = myfun (p, x) + F = p(1) * exp (-p(2) * x); if nargout > 1 J = [exp(- p(2) * x), - p(1) * x .* exp(- p(2) * x)]; endif endfunction [c, resnorm, residual, flag, output, lambda, jacob] = ... - lsqnonlin(@(p) myfun(p, x, y), p0, lb, ub, opts) + lsqcurvefit (@ (varargin) myfun(varargin{:}), p0, x, y, lb, ub, opts) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/jacobs.m] >>>>> /build/reproducible-path/octave-optim-1.6.2/inst/jacobs.m @@ -4209,14 +4184,75 @@ xlabel ("h"); ylabel ("|Df(x) - cos(x)| / |cos(x)|") title ("f(x)=sin(x), f'(x)=cos(x) at x = 0.3pi") 9 tests, 9 passed, 0 known failure, 0 skipped -[inst/statset.m] ->>>>> /build/reproducible-path/octave-optim-1.6.2/inst/statset.m -***** assert (isfield (statset (), "TolFun")) -***** assert (isfield (statset ("tolFun", 1e-3), "TolFun")) -***** error statset ("1_Parameter") -***** error statset ("%NOT_A_REAL_FUNCTION_NAME%") -***** warning statset ("foobar", 13); -5 tests, 5 passed, 0 known failure, 0 skipped +[inst/vfzero.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/vfzero.m +***** shared opt0 + opt0 = optimset ("tolx", 0); +***** assert(vfzero(@cos, [0, 3], opt0), pi/2, 10*eps) +***** assert(vfzero(@(x) x^(1/3) - 1e-8, [0,1], opt0), 1e-24, 1e-22*eps) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/polyconf.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/polyconf.m +***** test + # data from Hocking, RR, "Methods and Applications of Linear Models" + temperature=[40;40;40;45;45;45;50;50;50;55;55;55;60;60;60;65;65;65]; + strength=[66.3;64.84;64.36;69.70;66.26;72.06;73.23;71.4;68.85;75.78;72.57;76.64;78.87;77.37;75.94;78.82;77.13;77.09]; + [p,s] = polyfit(temperature,strength,1); + [y,dy] = polyconf(p,40,s,0.05,'ci'); + assert([y,dy],[66.15396825396826,1.71702862681486],200*eps); + [y,dy] = polyconf(p,40,s,0.05,'pi'); + assert(dy,4.45345484470743,200*eps); +1 test, 1 passed, 0 known failure, 0 skipped +[inst/quadprog.m] +>>>>> /build/reproducible-path/octave-optim-1.6.2/inst/quadprog.m +***** test + C = [0.9501 0.7620 0.6153 0.4057 + 0.2311 0.4564 0.7919 0.9354 + 0.6068 0.0185 0.9218 0.9169 + 0.4859 0.8214 0.7382 0.4102 + 0.8912 0.4447 0.1762 0.8936]; + %% Linear Inequality Constraints + d = [0.0578; 0.3528; 0.8131; 0.0098; 0.1388]; + A =[0.2027 0.2721 0.7467 0.4659 + 0.1987 0.1988 0.4450 0.4186 + 0.6037 0.0152 0.9318 0.8462]; + b =[0.5251; 0.2026; 0.6721]; + %% Linear Equality Constraints + Aeq = [3 5 7 9]; + beq = 4; + %% Bound constraints + lb = -0.1*ones(4,1); + ub = ones(4,1); + H = C' * C; + f = -C' * d; + [x, obj, flag, output, lambda]=quadprog (H, f, A, b, Aeq, beq, lb, ub); + assert (x, [-.1; -.1; .1599; .4090], .0001); + assert (obj, -0.3194, .0001); + assert (flag, 1); + assert (lambda.lower, [.0674; .2499; 0; 0], .0001); + assert (lambda.upper, [0; 0; 0; 0]); +***** demo + C = [0.9501 0.7620 0.6153 0.4057 + 0.2311 0.4564 0.7919 0.9354 + 0.6068 0.0185 0.9218 0.9169 + 0.4859 0.8214 0.7382 0.4102 + 0.8912 0.4447 0.1762 0.8936]; + %% Linear Inequality Constraints + d = [0.0578; 0.3528; 0.8131; 0.0098; 0.1388]; + A =[0.2027 0.2721 0.7467 0.4659 + 0.1987 0.1988 0.4450 0.4186 + 0.6037 0.0152 0.9318 0.8462]; + b =[0.5251; 0.2026; 0.6721]; + %% Linear Equality Constraints + Aeq = [3 5 7 9]; + beq = 4; + %% Bound constraints + lb = -0.1*ones(4,1); + ub = ones(4,1); + H = C' * C; + f = -C' * d; + [x, obj, flag, output, lambda]=quadprog (H, f, A, b, Aeq, beq, lb, ub) +1 test, 1 passed, 0 known failure, 0 skipped Checking C++ files ... Done running the unit tests. Summary: 57 tests, 57 passed, 0 known failures, 0 skipped @@ -4246,8 +4282,8 @@ dpkg-gencontrol: warning: package octave-optim: substitution variable ${octave:Upstream-Description} unused, but is defined dh_md5sums -O--buildsystem=octave dh_builddeb -O--buildsystem=octave -dpkg-deb: building package 'octave-optim' in '../octave-optim_1.6.2-3_armhf.deb'. dpkg-deb: building package 'octave-optim-dbgsym' in '../octave-optim-dbgsym_1.6.2-3_armhf.deb'. +dpkg-deb: building package 'octave-optim' in '../octave-optim_1.6.2-3_armhf.deb'. dpkg-genbuildinfo --build=binary -O../octave-optim_1.6.2-3_armhf.buildinfo dpkg-genchanges --build=binary -O../octave-optim_1.6.2-3_armhf.changes dpkg-genchanges: info: binary-only upload (no source code included) @@ -4256,12 +4292,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/18666/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/18666/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/4932 and its subdirectories -I: Current time: Fri Dec 13 08:06:26 -12 2024 -I: pbuilder-time-stamp: 1734120386 +I: removing directory /srv/workspace/pbuilder/18666 and its subdirectories +I: Current time: Sat Dec 14 10:21:48 +14 2024 +I: pbuilder-time-stamp: 1734121308