Input buildinfo: https://buildinfos.debian.net/buildinfo-pool/o/octave-level-set/octave-level-set_0.3.1~git.2019.04.13-2_amd64.buildinfo Use metasnap for getting required timestamps New buildinfo file: /tmp/octave-level-set-0.3.1~git.2019.04.13-2p1ilkeny/octave-level-set_0.3.1~git.2019.04.13-2_amd64.buildinfo Get source package info: octave-level-set=0.3.1~git.2019.04.13-2 Source URL: http://snapshot.notset.fr/mr/package/octave-level-set/0.3.1~git.2019.04.13-2/srcfiles?fileinfo=1 env -i PATH=/usr/sbin:/usr/bin:/sbin:/bin TMPDIR=/tmp mmdebstrap --arch=amd64 --include=aglfn=1.7+git20191031.4036a9c-2 autoconf=2.69-14 autoconf-archive=20190106-2.1 automake=1:1.16.3-2 autopoint=0.21-3 autotools-dev=20180224.1+nmu1 base-files=11 base-passwd=3.5.48 bash=5.1-2 binutils=2.35.1-6 binutils-common=2.35.1-6 binutils-x86-64-linux-gnu=2.35.1-6 bsdextrautils=2.36.1-4 bsdutils=1:2.36.1-4 build-essential=12.9 bzip2=1.0.8-4 ca-certificates=20200601 cme=1.032-1 coreutils=8.32-4+b1 cpp=4:10.2.0-1 cpp-10=10.2.1-3 dash=0.5.11+git20200708+dd9ef66-5 debconf=1.5.74 debhelper=13.3.1 debianutils=4.11.2 dh-autoreconf=19 dh-octave=1.0.3 dh-octave-autopkgtest=1.0.3 dh-strip-nondeterminism=1.9.0-1 diffstat=1.63-1 diffutils=1:3.7-5 dpkg=1.20.5 dpkg-dev=1.20.5 dwz=0.13+20201015-2 file=1:5.39-3 findutils=4.7.0+git20201010-2 fontconfig=2.13.1-4.2 fontconfig-config=2.13.1-4.2 fonts-dejavu-core=2.37-2 fonts-freefont-otf=20120503-10 g++=4:10.2.0-1 g++-10=10.2.1-3 gcc=4:10.2.0-1 gcc-10=10.2.1-3 gcc-10-base=10.2.1-3 gettext=0.21-3 gettext-base=0.21-3 gfortran=4:10.2.0-1 gfortran-10=10.2.1-3 gnuplot-data=5.4.1+dfsg1-1 gnuplot-nox=5.4.1+dfsg1-1 gpg=2.2.20-1 gpgconf=2.2.20-1 grep=3.6-1 groff-base=1.22.4-5 gzip=1.10-2 hdf5-helpers=1.10.6+repack-2 hostname=3.23 init-system-helpers=1.60 intltool-debian=0.35.0+20060710.5 libacl1=2.2.53-9 libaec-dev=1.0.4-1 libaec0=1.0.4-1 libalgorithm-c3-perl=0.11-1 libaliased-perl=0.34-1.1 libamd2=1:5.8.1+dfsg-2 libapp-cmd-perl=0.331-1 libapt-pkg-perl=0.1.36+b4 libapt-pkg6.0=2.1.15 libarchive-zip-perl=1.68-1 libarpack2=3.8.0-1 libarray-intspan-perl=2.004-1 libasan6=10.2.1-3 libasound2=1.2.4-1 libasound2-data=1.2.4-1 libassuan0=2.5.3-7.1 libatomic1=10.2.1-3 libattr1=1:2.4.48-6 libaudit-common=1:3.0-1 libaudit1=1:3.0-1 libavahi-client3=0.8-3 libavahi-common-data=0.8-3 libavahi-common3=0.8-3 libb-hooks-endofscope-perl=0.24-1.1 libb-hooks-op-check-perl=0.22-1+b3 libbinutils=2.35.1-6 libblas-dev=3.9.0-3 libblas3=3.9.0-3 libblkid1=2.36.1-4 libboolean-perl=0.46-1 libbrotli1=1.0.9-2+b2 libbsd0=0.10.0-1 libbz2-1.0=1.0.8-4 libc-bin=2.31-7 libc-dev-bin=2.31-7 libc6=2.31-7 libc6-dev=2.31-7 libcairo2=1.16.0-5 libcamd2=1:5.8.1+dfsg-2 libcap-ng0=0.7.9-2.2+b1 libcapture-tiny-perl=0.48-1 libcarp-assert-more-perl=1.26-1 libcarp-assert-perl=0.21-1.1 libcc1-0=10.2.1-3 libccolamd2=1:5.8.1+dfsg-2 libcholmod3=1:5.8.1+dfsg-2 libclass-c3-perl=0.35-1 libclass-data-inheritable-perl=0.08-3 libclass-load-perl=0.25-1 libclass-method-modifiers-perl=2.13-1 libclass-xsaccessor-perl=1.19-3+b6 libclone-choose-perl=0.010-1 libclone-perl=0.45-1+b1 libcolamd2=1:5.8.1+dfsg-2 libcom-err2=1.45.6-1 libcommon-sense-perl=3.75-1+b3 libconfig-model-backend-yaml-perl=2.133-2 libconfig-model-dpkg-perl=2.141 libconfig-model-perl=2.140-1 libconfig-tiny-perl=2.24-1 libconvert-binhex-perl=1.125-1 libcpanel-json-xs-perl=4.25-1+b1 libcrypt-dev=1:4.4.17-1 libcrypt1=1:4.4.17-1 libctf-nobfd0=2.35.1-6 libctf0=2.35.1-6 libcups2=2.3.3op1-4 libcurl3-gnutls=7.74.0-1 libcxsparse3=1:5.8.1+dfsg-2 libdata-dpath-perl=0.58-1 libdata-messagepack-perl=1.00-4+b1 libdata-optlist-perl=0.110-1.1 libdata-section-perl=0.200007-1 libdata-validate-domain-perl=0.10-1.1 libdatrie1=0.2.12-3 libdb5.3=5.3.28+dfsg1-0.6 libdbus-1-3=1.12.20-1 libdebconfclient0=0.256 libdebhelper-perl=13.3.1 libdeflate0=1.7-1 libdevel-callchecker-perl=0.008-1+b2 libdevel-size-perl=0.83-1+b2 libdevel-stacktrace-perl=2.0400-1 libdouble-conversion3=3.1.5-6.1 libdpkg-perl=1.20.5 libdrm-amdgpu1=2.4.103-2 libdrm-common=2.4.103-2 libdrm-intel1=2.4.103-2 libdrm-nouveau2=2.4.103-2 libdrm-radeon1=2.4.103-2 libdrm2=2.4.103-2 libdynaloader-functions-perl=0.003-1.1 libedit2=3.1-20191231-2+b1 libegl-dev=1.3.2-1 libegl-mesa0=20.3.2-1 libegl1=1.3.2-1 libelf1=0.182-2 libemail-address-xs-perl=1.04-1+b3 libencode-locale-perl=1.05-1.1 liberror-perl=0.17029-1 libevdev2=1.10.0+dfsg-1 libexception-class-perl=1.44-1 libexpat1=2.2.10-1 libexporter-lite-perl=0.08-1 libexporter-tiny-perl=1.002002-1 libffi7=3.3-5 libfftw3-bin=3.3.8-2 libfftw3-dev=3.3.8-2 libfftw3-double3=3.3.8-2 libfftw3-long3=3.3.8-2 libfftw3-quad3=3.3.8-2 libfftw3-single3=3.3.8-2 libfile-basedir-perl=0.08-1 libfile-find-rule-perl=0.34-1 libfile-homedir-perl=1.006-1 libfile-listing-perl=6.14-1 libfile-stripnondeterminism-perl=1.9.0-1 libfile-which-perl=1.23-1 libflac8=1.3.3-2 libfltk-gl1.3=1.3.5-2 libfltk1.3=1.3.5-2 libfont-ttf-perl=1.06-1.1 libfontconfig1=2.13.1-4.2 libfreetype6=2.10.4+dfsg-1 libfribidi0=1.0.8-2 libgbm1=20.3.2-1 libgcc-10-dev=10.2.1-3 libgcc-s1=10.2.1-3 libgcrypt20=1.8.7-2 libgd3=2.3.0-2 libgdbm-compat4=1.18.1-5.1 libgdbm6=1.18.1-5.1 libgetopt-long-descriptive-perl=0.105-1 libgfortran-10-dev=10.2.1-3 libgfortran5=10.2.1-3 libgl-dev=1.3.2-1 libgl1=1.3.2-1 libgl1-mesa-dev=20.3.2-1 libgl1-mesa-dri=20.3.2-1 libgl2ps1.4=1.4.2+dfsg1-1 libglapi-mesa=20.3.2-1 libgles-dev=1.3.2-1 libgles1=1.3.2-1 libgles2=1.3.2-1 libglib2.0-0=2.66.4-1 libglpk40=5.0-1 libglu1-mesa=9.0.1-1 libglvnd-dev=1.3.2-1 libglvnd0=1.3.2-1 libglx-dev=1.3.2-1 libglx-mesa0=20.3.2-1 libglx0=1.3.2-1 libgmp10=2:6.2.1+dfsg-1 libgnutls30=3.7.0-5 libgomp1=10.2.1-3 libgpg-error0=1.38-2 libgraphicsmagick++-q16-12=1.4+really1.3.36-1 libgraphicsmagick-q16-3=1.4+really1.3.36-1 libgraphite2-3=1.3.14-1 libgssapi-krb5-2=1.18.3-4 libgudev-1.0-0=234-1 libharfbuzz0b=2.6.7-1 libhash-fieldhash-perl=0.15-1+b3 libhash-merge-perl=0.302-1 libhdf5-103-1=1.10.6+repack-2 libhdf5-cpp-103-1=1.10.6+repack-2 libhdf5-dev=1.10.6+repack-2 libhdf5-fortran-102=1.10.6+repack-2 libhdf5-hl-100=1.10.6+repack-2 libhdf5-hl-cpp-100=1.10.6+repack-2 libhdf5-hl-fortran-100=1.10.6+repack-2 libhogweed6=3.6-2 libhtml-html5-entities-perl=0.004-1.1 libhtml-parser-perl=3.75-1+b1 libhtml-tagset-perl=3.20-4 libhtml-tree-perl=5.07-2 libhttp-cookies-perl=6.09-1 libhttp-date-perl=6.05-1 libhttp-message-perl=6.26-1 libhttp-negotiate-perl=6.01-1 libice6=2:1.0.10-1 libicu67=67.1-5 libidn2-0=2.3.0-4 libimport-into-perl=1.002005-1 libinput-bin=1.16.4-3 libinput10=1.16.4-3 libio-html-perl=1.001-1.1 libio-socket-ssl-perl=2.068-1 libio-string-perl=1.08-3.1 libio-stringy-perl=2.111-3 libio-tiecombine-perl=1.005-1.1 libipc-run3-perl=0.048-2 libipc-system-simple-perl=1.30-1 libisl23=0.23-1 libiterator-perl=0.03+ds1-1.1 libiterator-util-perl=0.02+ds1-1.1 libitm1=10.2.1-3 libjack-jackd2-0=1.9.16~dfsg-1 libjbig0=2.1-3.1+b2 libjpeg-dev=1:2.0.5-2 libjpeg62-turbo=1:2.0.5-2 libjpeg62-turbo-dev=1:2.0.5-2 libjson-maybexs-perl=1.004003-1 libjson-perl=4.02000-2 libk5crypto3=1.18.3-4 libkeyutils1=1.6.1-2 libkrb5-3=1.18.3-4 libkrb5support0=1.18.3-4 liblapack-dev=3.9.0-3 liblapack3=3.9.0-3 liblcms2-2=2.9-4+b1 libldap-2.4-2=2.4.56+dfsg-1 liblist-compare-perl=0.55-1 liblist-moreutils-perl=0.430-2 liblist-moreutils-xs-perl=0.430-2 liblist-someutils-perl=0.58-1 liblist-utilsby-perl=0.11-1 libllvm11=1:11.0.1~+rc2-1 liblog-any-adapter-screen-perl=0.140-1 liblog-any-perl=1.708-1 liblog-log4perl-perl=1.53-1 liblsan0=10.2.1-3 libltdl7=2.4.6-14 liblua5.4-0=5.4.2-1 liblwp-mediatypes-perl=6.04-1 liblwp-protocol-https-perl=6.10-1 liblz4-1=1.9.3-1 liblzma5=5.2.5-1.0 liblzo2-2=2.10-2 libmagic-mgc=1:5.39-3 libmagic1=1:5.39-3 libmailtools-perl=2.21-1 libmarkdown2=2.2.6-1 libmd4c0=0.4.7-1 libmetis5=5.1.0.dfsg-7 libmime-tools-perl=5.509-1 libmodule-implementation-perl=0.09-1.1 libmodule-pluggable-perl=5.2-1 libmodule-runtime-perl=0.016-1 libmoo-perl=2.004004-1 libmoox-aliases-perl=0.001006-1.1 libmoox-struct-perl=0.020-1 libmount1=2.36.1-4 libmouse-perl=2.5.10-1+b1 libmousex-nativetraits-perl=1.09-2.1 libmousex-strictconstructor-perl=0.02-2.1 libmpc3=1.2.0-1 libmpfr6=4.1.0-3 libmro-compat-perl=0.13-1 libmtdev1=1.1.6-1 libnamespace-autoclean-perl=0.29-1 libnamespace-clean-perl=0.27-1 libncurses-dev=6.2+20201114-2 libncurses6=6.2+20201114-2 libncursesw6=6.2+20201114-2 libnet-domain-tld-perl=1.75-1.1 libnet-http-perl=6.19-1 libnet-smtp-ssl-perl=1.04-1 libnet-ssleay-perl=1.88-3+b1 libnettle8=3.6-2 libnghttp2-14=1.42.0-1 libnsl-dev=1.3.0-2 libnsl2=1.3.0-2 libnumber-compare-perl=0.03-1.1 libnumber-range-perl=0.12-1.1 libobject-id-perl=0.1.2-2.1 liboctave-dev=6.1.1~hg.2020.12.27-2 liboctave8=6.1.1~hg.2020.12.27-2 libogg0=1.3.4-0.1 libopengl-dev=1.3.2-1 libopengl0=1.3.2-1 libp11-kit0=0.23.22-1 libpackage-stash-perl=0.39-1 libpam-modules=1.4.0-2 libpam-modules-bin=1.4.0-2 libpam-runtime=1.4.0-2 libpam0g=1.4.0-2 libpango-1.0-0=1.46.2-3 libpangocairo-1.0-0=1.46.2-3 libpangoft2-1.0-0=1.46.2-3 libparams-classify-perl=0.015-1+b3 libparams-util-perl=1.102-1+b1 libparams-validate-perl=1.30-1+b1 libparse-debcontrol-perl=2.005-4.1 libparse-recdescent-perl=1.967015+dfsg-2 libpath-iterator-rule-perl=1.014-1 libpath-tiny-perl=0.114-2 libpciaccess0=0.16-1 libpcre2-16-0=10.36-2 libpcre2-8-0=10.36-2 libpcre3=2:8.39-13 libperl5.32=5.32.0-6 libperlio-gzip-perl=0.19-1+b7 libpipeline1=1.5.3-1 libpixman-1-0=0.40.0-1 libpng16-16=1.6.37-3 libpod-constants-perl=0.19-2 libpod-parser-perl=1.63-2 libpod-pom-perl=2.01-3 libportaudio2=19.6.0-1.1 libproc-processtable-perl=0.59-2+b1 libpsl5=0.21.0-1.1 libpthread-stubs0-dev=0.4-1 libqhull8.0=2020.2-3 libqrupdate1=1.1.2-4 libqscintilla2-qt5-15=2.11.6+dfsg-1 libqscintilla2-qt5-l10n=2.11.6+dfsg-1 libqt5core5a=5.15.2+dfsg-2 libqt5dbus5=5.15.2+dfsg-2 libqt5gui5=5.15.2+dfsg-2 libqt5help5=5.15.2-3 libqt5network5=5.15.2+dfsg-2 libqt5printsupport5=5.15.2+dfsg-2 libqt5sql5=5.15.2+dfsg-2 libqt5widgets5=5.15.2+dfsg-2 libqt5xml5=5.15.2+dfsg-2 libquadmath0=10.2.1-3 libre-engine-re2-perl=0.13-5+b5 libre2-9=20201101+dfsg-2 libreadline-dev=8.1-1 libreadline8=8.1-1 libregexp-common-perl=2017060201-1 libregexp-pattern-license-perl=3.4.0-1 libregexp-pattern-perl=0.2.14-1 librole-tiny-perl=2.001004-1 librtmp1=2.4+20151223.gitfa8646d.1-2+b2 libsamplerate0=0.1.9-2 libsasl2-2=2.1.27+dfsg-2 libsasl2-modules-db=2.1.27+dfsg-2 libseccomp2=2.5.1-1 libselinux1=3.1-2+b2 libsensors-config=1:3.6.0-2 libsensors5=1:3.6.0-2 libsereal-decoder-perl=4.018+ds-1+b1 libsereal-encoder-perl=4.018+ds-1+b1 libsigsegv2=2.12-3 libsm6=2:1.2.3-1 libsmartcols1=2.36.1-4 libsndfile1=1.0.28-8 libsoftware-license-perl=0.103014-2 libsoftware-licensemoreutils-perl=1.005-1 libsort-key-perl=1.33-2+b3 libsort-versions-perl=1.62-1 libsqlite3-0=3.34.0-1 libssh2-1=1.9.0-2 libssl1.1=1.1.1i-1 libstdc++-10-dev=10.2.1-3 libstdc++6=10.2.1-3 libstrictures-perl=2.000006-1 libstring-copyright-perl=0.003006-1 libstring-escape-perl=2010.002-2 libstring-rewriteprefix-perl=0.008-1 libsub-exporter-perl=0.987-1 libsub-exporter-progressive-perl=0.001013-1 libsub-identify-perl=0.14-1+b3 libsub-install-perl=0.928-1.1 libsub-name-perl=0.26-1+b1 libsub-override-perl=0.09-2 libsub-quote-perl=2.006006-1 libsub-uplevel-perl=0.2800-1.1 libsuitesparseconfig5=1:5.8.1+dfsg-2 libsystemd0=247.2-4 libsz2=1.0.4-1 libtasn1-6=4.16.0-2 libtest-exception-perl=0.43-1 libtext-autoformat-perl=1.750000-1 libtext-glob-perl=0.11-1 libtext-levenshtein-damerau-perl=0.41-1.1 libtext-levenshteinxs-perl=0.03-4+b8 libtext-markdown-discount-perl=0.12-1+b1 libtext-reform-perl=1.20-3 libtext-template-perl=1.59-1 libtext-unidecode-perl=1.30-1 libtext-xslate-perl=3.5.8-1+b1 libthai-data=0.1.28-3 libthai0=0.1.28-3 libtiff5=4.2.0-1 libtime-duration-perl=1.21-1 libtime-moment-perl=0.44-1+b3 libtimedate-perl=2.3300-1 libtinfo6=6.2+20201114-2 libtirpc-common=1.3.1-1 libtirpc-dev=1.3.1-1 libtirpc3=1.3.1-1 libtoml-parser-perl=0.91-1 libtoml-perl=0.97-1 libtool=2.4.6-14 libtry-tiny-perl=0.30-1 libtsan0=10.2.1-3 libtype-tiny-perl=1.012000-1 libtypes-serialiser-perl=1.01-1 libubsan1=10.2.1-3 libuchardet0=0.0.7-1 libudev1=247.2-4 libumfpack5=1:5.8.1+dfsg-2 libunicode-utf8-perl=0.62-1+b2 libunistring2=0.9.10-4 liburi-perl=5.05-1 libuuid1=2.36.1-4 libvariable-magic-perl=0.62-1+b3 libvorbis0a=1.3.7-1 libvorbisenc2=1.3.7-1 libvulkan1=1.2.154.1-1 libwacom-common=1.7-1 libwacom2=1.7-1 libwayland-client0=1.18.0-2~exp1.1 libwayland-server0=1.18.0-2~exp1.1 libwebp6=0.6.1-2+b1 libwebpmux3=0.6.1-2+b1 libwmf0.2-7=0.2.8.4-17 libwww-perl=6.51-1 libwww-robotrules-perl=6.02-1 libx11-6=2:1.6.12-1 libx11-data=2:1.6.12-1 libx11-dev=2:1.6.12-1 libx11-xcb1=2:1.6.12-1 libxau-dev=1:1.0.8-1+b2 libxau6=1:1.0.8-1+b2 libxcb-dri2-0=1.14-2.1 libxcb-dri3-0=1.14-2.1 libxcb-glx0=1.14-2.1 libxcb-icccm4=0.4.1-1.1 libxcb-image0=0.4.0-1+b3 libxcb-keysyms1=0.4.0-1+b2 libxcb-present0=1.14-2.1 libxcb-randr0=1.14-2.1 libxcb-render-util0=0.3.9-1+b1 libxcb-render0=1.14-2.1 libxcb-shape0=1.14-2.1 libxcb-shm0=1.14-2.1 libxcb-sync1=1.14-2.1 libxcb-util1=0.4.0-1+b1 libxcb-xfixes0=1.14-2.1 libxcb-xinerama0=1.14-2.1 libxcb-xinput0=1.14-2.1 libxcb-xkb1=1.14-2.1 libxcb1=1.14-2.1 libxcb1-dev=1.14-2.1 libxcursor1=1:1.2.0-2 libxdamage1=1:1.1.5-2 libxdmcp-dev=1:1.1.2-3 libxdmcp6=1:1.1.2-3 libxext6=2:1.3.3-1.1 libxfixes3=1:5.0.3-2 libxft2=2.3.2-2 libxinerama1=2:1.1.4-2 libxkbcommon-x11-0=1.0.3-2 libxkbcommon0=1.0.3-2 libxml-libxml-perl=2.0134+dfsg-2+b1 libxml-namespacesupport-perl=1.12-1.1 libxml-sax-base-perl=1.09-1.1 libxml-sax-perl=1.02+dfsg-1 libxml2=2.9.10+dfsg-6.3+b1 libxpm4=1:3.5.12-1 libxrender1=1:0.9.10-1 libxshmfence1=1.3-1 libxxf86vm1=1:1.1.4-1+b2 libxxhash0=0.8.0-1 libyaml-0-2=0.2.2-1 libyaml-libyaml-perl=0.82+repack-1+b1 libyaml-perl=1.30-1 libyaml-tiny-perl=1.73-1 libz3-4=4.8.9-1 libzstd1=1.4.8+dfsg-1 licensecheck=3.0.47-1 lintian=2.104.0 linux-libc-dev=5.10.4-1 login=1:4.8.1-1 lsb-base=11.1.0 lzip=1.21-8 lzop=1.04-2 m4=1.4.18-4 make=4.3-4 man-db=2.9.3-2 mawk=1.3.4.20200120-2 ncurses-base=6.2+20201114-2 ncurses-bin=6.2+20201114-2 netbase=6.2 octave=6.1.1~hg.2020.12.27-2 octave-common=6.1.1~hg.2020.12.27-2 octave-parallel=4.0.0-2+b1 octave-struct=1.0.16-8 openssl=1.1.1i-1 patch=2.7.6-6 patchutils=0.4.2-1 perl=5.32.0-6 perl-base=5.32.0-6 perl-modules-5.32=5.32.0-6 perl-openssl-defaults=5 po-debconf=1.0.21+nmu1 readline-common=8.1-1 sed=4.7-1 sensible-utils=0.0.12+nmu1 shared-mime-info=2.0-1 sysvinit-utils=2.96-5 t1utils=1.41-4 tar=1.32+dfsg-1 tex-common=6.15 texinfo=6.7.0.dfsg.2-5+b1 ucf=3.0043 unzip=6.0-25 util-linux=2.36.1-4 x11-common=1:7.7+21 x11proto-core-dev=2020.1-1 x11proto-dev=2020.1-1 xkb-data=2.29-2 xorg-sgml-doctools=1:1.11-1.1 xtrans-dev=1.4.0-1 xz-utils=5.2.5-1.0 zlib1g=1:1.2.11.dfsg-2 zlib1g-dev=1:1.2.11.dfsg-2 --variant=apt --aptopt=Acquire::Check-Valid-Until "false" --aptopt=Acquire::http::Dl-Limit "1000"; --aptopt=Acquire::https::Dl-Limit "1000"; --aptopt=Acquire::Retries "5"; --aptopt=APT::Get::allow-downgrades "true"; --keyring=/usr/share/keyrings/ --essential-hook=chroot "$1" sh -c "apt-get --yes install fakeroot util-linux" --essential-hook=copy-in /usr/share/keyrings/debian-archive-bullseye-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-stable.gpg /usr/share/keyrings/debian-archive-buster-automatic.gpg /usr/share/keyrings/debian-archive-buster-security-automatic.gpg /usr/share/keyrings/debian-archive-buster-stable.gpg /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-removed-keys.gpg /usr/share/keyrings/debian-archive-stretch-automatic.gpg /usr/share/keyrings/debian-archive-stretch-security-automatic.gpg /usr/share/keyrings/debian-archive-stretch-stable.gpg /usr/share/keyrings/debian-ports-archive-keyring-removed.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg /usr/share/keyrings/debian-keyring.gpg /etc/apt/trusted.gpg.d/ --essential-hook=chroot "$1" sh -c "rm /etc/apt/sources.list && echo 'deb http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20210104T143637Z/ unstable main' >> /etc/apt/sources.list && apt-get update" --customize-hook=chroot "$1" useradd --no-create-home -d /nonexistent -p "" builduser -s /bin/bash --customize-hook=chroot "$1" env sh -c "apt-get source --only-source -d octave-level-set=0.3.1~git.2019.04.13-2 && mkdir -p /build/octave-level-set-kLIsmh && dpkg-source --no-check -x /*.dsc /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13 && chown -R builduser:builduser /build/octave-level-set-kLIsmh" --customize-hook=chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13 && env DEB_BUILD_OPTIONS="parallel=4" LC_ALL="C.UTF-8" SOURCE_DATE_EPOCH="1609754975" dpkg-buildpackage -uc -a amd64 --build=any" --customize-hook=sync-out /build/octave-level-set-kLIsmh /tmp/octave-level-set-0.3.1~git.2019.04.13-2p1ilkeny bullseye /dev/null deb http://snapshot.notset.fr/archive/debian/20210104T143637Z unstable main I: automatically chosen mode: root I: chroot architecture amd64 is equal to the host's architecture I: automatically chosen format: tar I: using /tmp/mmdebstrap.iCvK09QSQP as tempdir I: running apt-get update... I: downloading packages with apt... I: extracting archives... I: installing essential packages... I: running --essential-hook in shell: sh -c 'chroot "$1" sh -c "apt-get --yes install fakeroot util-linux"' exec /tmp/mmdebstrap.iCvK09QSQP Reading package lists... Building dependency tree... util-linux is already the newest version (2.36.1-4). The following NEW packages will be installed: fakeroot libfakeroot 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 134 kB of archives. After this operation, 397 kB of additional disk space will be used. Get:1 http://snapshot.notset.fr/archive/debian/20210104T143637Z unstable/main amd64 libfakeroot amd64 1.25.3-1.1 [47.0 kB] Get:2 http://snapshot.notset.fr/archive/debian/20210104T143637Z unstable/main amd64 fakeroot amd64 1.25.3-1.1 [87.0 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 134 kB in 0s (667 kB/s) Selecting previously unselected package libfakeroot: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 ... 4647 files and directories currently installed.) Preparing to unpack .../libfakeroot_1.25.3-1.1_amd64.deb ... Unpacking libfakeroot:amd64 (1.25.3-1.1) ... Selecting previously unselected package fakeroot. Preparing to unpack .../fakeroot_1.25.3-1.1_amd64.deb ... Unpacking fakeroot (1.25.3-1.1) ... Setting up libfakeroot:amd64 (1.25.3-1.1) ... Setting up fakeroot (1.25.3-1.1) ... update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode Processing triggers for libc-bin (2.31-7) ... I: running special hook: copy-in /usr/share/keyrings/debian-archive-bullseye-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-stable.gpg /usr/share/keyrings/debian-archive-buster-automatic.gpg /usr/share/keyrings/debian-archive-buster-security-automatic.gpg /usr/share/keyrings/debian-archive-buster-stable.gpg /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-removed-keys.gpg /usr/share/keyrings/debian-archive-stretch-automatic.gpg /usr/share/keyrings/debian-archive-stretch-security-automatic.gpg /usr/share/keyrings/debian-archive-stretch-stable.gpg /usr/share/keyrings/debian-ports-archive-keyring-removed.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg /usr/share/keyrings/debian-keyring.gpg /etc/apt/trusted.gpg.d/ I: running --essential-hook in shell: sh -c 'chroot "$1" sh -c "rm /etc/apt/sources.list && echo 'deb http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20210104T143637Z/ unstable main' >> /etc/apt/sources.list && apt-get update"' exec /tmp/mmdebstrap.iCvK09QSQP Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm InRelease [81.6 kB] Hit:2 http://snapshot.notset.fr/archive/debian/20210104T143637Z unstable InRelease Ign:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Get:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources [11.4 MB] Get:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages [11.1 MB] Fetched 22.6 MB in 20s (1139 kB/s) Reading package lists... I: installing remaining packages inside the chroot... I: running --customize-hook in shell: sh -c 'chroot "$1" useradd --no-create-home -d /nonexistent -p "" builduser -s /bin/bash' exec /tmp/mmdebstrap.iCvK09QSQP I: running --customize-hook in shell: sh -c 'chroot "$1" env sh -c "apt-get source --only-source -d octave-level-set=0.3.1~git.2019.04.13-2 && mkdir -p /build/octave-level-set-kLIsmh && dpkg-source --no-check -x /*.dsc /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13 && chown -R builduser:builduser /build/octave-level-set-kLIsmh"' exec /tmp/mmdebstrap.iCvK09QSQP Reading package lists... NOTICE: 'octave-level-set' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/pkg-octave-team/octave-level-set.git Please use: git clone https://salsa.debian.org/pkg-octave-team/octave-level-set.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 141 kB of source archives. Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main octave-level-set 0.3.1~git.2019.04.13-2 (dsc) [2208 B] Get:2 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main octave-level-set 0.3.1~git.2019.04.13-2 (tar) [133 kB] Get:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main octave-level-set 0.3.1~git.2019.04.13-2 (diff) [5100 B] Fetched 141 kB in 0s (801 kB/s) Download complete and in download only mode W: Download is performed unsandboxed as root as file 'octave-level-set_0.3.1~git.2019.04.13-2.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) dpkg-source: info: extracting octave-level-set in /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13 dpkg-source: info: unpacking octave-level-set_0.3.1~git.2019.04.13.orig.tar.xz dpkg-source: info: unpacking octave-level-set_0.3.1~git.2019.04.13-2.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying xtest-fastmarching.patch dpkg-source: info: applying octave5.patch dpkg-source: info: applying xtest-ls-distance-fcn.patch dpkg-source: info: applying bist-unload-parallel.patch dpkg-source: info: applying skip-failings-bists.patch I: running --customize-hook in shell: sh -c 'chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13 && env DEB_BUILD_OPTIONS="parallel=4" LC_ALL="C.UTF-8" SOURCE_DATE_EPOCH="1609754975" dpkg-buildpackage -uc -a amd64 --build=any"' exec /tmp/mmdebstrap.iCvK09QSQP dpkg-buildpackage: info: source package octave-level-set dpkg-buildpackage: info: source version 0.3.1~git.2019.04.13-2 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Rafael Laboissière dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 dpkg-source: info: using options from octave-level-set-0.3.1-git.2019.04.13/debian/source/options: --extend-diff-ignore=src/config.log|src/config.status|src/Makefile|src/configure debian/rules clean dh clean --buildsystem=octave --with=octave dh_auto_clean -O--buildsystem=octave dh_octave_clean make[1]: Entering directory '/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/src' make[1]: *** No rule to make target 'clean'. make[1]: Leaving directory '/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/src' dh_autoreconf_clean -O--buildsystem=octave dh_clean -O--buildsystem=octave debian/rules binary-arch dh binary-arch --buildsystem=octave --with=octave dh_update_autotools_config -a -O--buildsystem=octave dh_autoreconf -a -O--buildsystem=octave dh_octave_version -a -O--buildsystem=octave Checking the Octave version... ok debian/rules override_dh_auto_configure make[1]: Entering directory '/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13' ( cd src ; aclocal ; autoconf ) make[1]: Leaving directory '/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13' dh_auto_build -a -O--buildsystem=octave dh_auto_test -a -O--buildsystem=octave create-stamp debian/debhelper-build-stamp dh_testroot -a -O--buildsystem=octave dh_prep -a -O--buildsystem=octave dh_auto_install -a -O--buildsystem=octave octave --no-gui --no-history --silent --no-init-file --no-window-system /usr/share/dh-octave/install-pkg.m warning: creating installation directory /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/debian/octave-level-set/usr/share/octave/packages warning: called from install at line 36 column 5 pkg at line 568 column 9 /usr/share/dh-octave/install-pkg.m at line 43 column 1 checking whether the C++ compiler works... yes checking for C++ compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking whether g++ supports C++11 features with -std=c++11... yes configure: creating ./config.status config.status: creating Makefile make[1]: Entering directory '/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/src' g++ -std=c++11 -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -Weffc++ -pedantic -fPIC -c FastMarching.cpp -o FastMarching.o CXXFLAGS="-g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose -c Utils.cpp -o Utils.o g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security Utils.cpp -o Utils.o CXXFLAGS="-g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose internal_fastmarching.cpp FastMarching.o Utils.o -o __levelset_internal_fastmarching.oct CXXFLAGS="-g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose internal_init_narrowband.cpp FastMarching.o Utils.o -o __levelset_internal_init_narrowband.oct g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security internal_fastmarching.cpp -o /tmp/oct-XeN9jz.o CXXFLAGS="-g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose geomElements.cpp FastMarching.o Utils.o -o __levelset_geomElements.oct CXXFLAGS="-g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose geomBoundary.cpp FastMarching.o Utils.o -o __levelset_geomBoundary.oct CXXFLAGS="-g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose geomGamma.cpp FastMarching.o Utils.o -o __levelset_geomGamma.oct CXXFLAGS="-g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose nbFromGeom.cpp FastMarching.o Utils.o -o __levelset_nbFromGeom.oct CXXFLAGS="-g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose internal_mesh.cpp FastMarching.o Utils.o -o __levelset_internal_mesh.oct g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security internal_init_narrowband.cpp -o /tmp/oct-1pch42.o g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security geomElements.cpp -o /tmp/oct-4Am0M9.o g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security geomBoundary.cpp -o /tmp/oct-1zaIyf.o g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security geomGamma.cpp -o /tmp/oct-Jwsmtv.o CXXFLAGS="-g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security" /usr/bin/mkoctfile --verbose upwindGrad.cpp FastMarching.o Utils.o -o __levelset_upwindGrad.oct g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security nbFromGeom.cpp -o /tmp/oct-MWov6w.o g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security internal_mesh.cpp -o /tmp/oct-WVHbDv.o g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security upwindGrad.cpp -o /tmp/oct-Ub2fMH.o g++ -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -o __levelset_upwindGrad.oct FastMarching.o Utils.o /tmp/oct-Ub2fMH.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro g++ -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -o __levelset_internal_fastmarching.oct FastMarching.o Utils.o /tmp/oct-XeN9jz.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro g++ -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -o __levelset_internal_init_narrowband.oct FastMarching.o Utils.o /tmp/oct-1pch42.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro g++ -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -o __levelset_geomElements.oct FastMarching.o Utils.o /tmp/oct-4Am0M9.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro g++ -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -o __levelset_nbFromGeom.oct FastMarching.o Utils.o /tmp/oct-MWov6w.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro g++ -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -o __levelset_geomBoundary.oct FastMarching.o Utils.o /tmp/oct-1zaIyf.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro g++ -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -o __levelset_geomGamma.oct FastMarching.o Utils.o /tmp/oct-Jwsmtv.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro g++ -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave/.. -I/usr/include/octave-6.1.1~hg.2020.12.27-1/octave -pthread -fopenmp -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13=. -fstack-protector-strong -Wformat -Werror=format-security -o __levelset_internal_mesh.oct FastMarching.o Utils.o /tmp/oct-WVHbDv.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro make[1]: Leaving directory '/build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/src' copyfile /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/./src/__levelset_geomBoundary.oct /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/./src/__levelset_geomElements.oct /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/./src/__levelset_geomGamma.oct /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/./src/__levelset_internal_fastmarching.oct /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/./src/__levelset_internal_init_narrowband.oct /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/./src/__levelset_internal_mesh.oct /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/./src/__levelset_nbFromGeom.oct /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/./src/__levelset_upwindGrad.oct /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/./inst/x86_64-pc-linux-gnu-api-v55 /tmp/octave-help-8mw6oM:149: table requires an argument: the formatter for @item /tmp/octave-help-8mw6oM:149: table requires an argument: the formatter for @item warning: doc_cache_create: unusable help text found in file 'ls_sign_colourmap' warning: called from doc_cache_create>handle_function at line 98 column 5 doc_cache_create>create_cache at line 118 column 36 gen_doc_cache_in_dir>@ at line 150 column 16 doc_cache_create>gen_doc_cache_in_dir at line 151 column 9 doc_cache_create at line 62 column 12 install>generate_lookfor_cache at line 825 column 5 install at line 237 column 7 pkg at line 568 column 9 /usr/share/dh-octave/install-pkg.m at line 43 column 1 /tmp/octave-help-2FUyrN:144: @code expected braces /tmp/octave-help-2FUyrN:148: @code expected braces /tmp/octave-help-2FUyrN:144: @code expected braces /tmp/octave-help-2FUyrN:148: @code expected braces warning: doc_cache_create: unusable help text found in file 'so_example_problem' warning: called from doc_cache_create>handle_function at line 98 column 5 doc_cache_create>create_cache at line 118 column 36 gen_doc_cache_in_dir>@ at line 150 column 16 doc_cache_create>gen_doc_cache_in_dir at line 151 column 9 doc_cache_create at line 62 column 12 install>generate_lookfor_cache at line 825 column 5 install at line 237 column 7 pkg at line 568 column 9 /usr/share/dh-octave/install-pkg.m at line 43 column 1 For information about changes from previous versions of the level-set package, run 'news level-set'. chmod: cannot access 'debian/*/usr/lib/*/octave/packages/*/*/*.mex': No such file or directory dh_octave_check -a -O--buildsystem=octave Checking package... Checking m files ... [inst/ls_isempty.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_isempty.m ***** error ls_isempty () ***** error ls_isempty (1, 2) ***** test n = 50; x = linspace (-10, 10, n); [XX, YY] = meshgrid (x, x); phi1 = (XX - 2).^2 + (YY - 2).^2 - 2^2; phi2 = (XX + 2).^2 + (YY + 2).^2 - 2^2; assert (~ls_isempty (phi1) && ~ls_isempty (phi2)); assert (ls_isempty (ls_intersect (phi1, phi2))); assert (~ls_isempty (ls_union (phi1, phi2))); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/ls_distance_fcn.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_distance_fcn.m ***** error ls_distance_fcn () ***** error ls_distance_fcn (1, 2, 3) ***** test assert (ls_distance_fcn ([]), []); ***** test n = 10; x = linspace (-2, 2, n); h = x(2) - x(1); phi = abs (x) - 1; d = ls_distance_fcn (phi, h); assert (d, max (phi, 0), sqrt (eps)); ***** test n = 50; x = linspace (-2, 2, n); h = x(2) - x(1); [XX, YY, ZZ] = ndgrid (x); RRsq = XX.^2 + YY.^2 + ZZ.^2; phi = RRsq - 1; d = ls_distance_fcn (phi, h); assert (d, max (sqrt (RRsq) - 1, 0), h); ***** xtest n = 500; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_genbasic (XX, YY, "sphere", [0, 0], 8); id = tic (); d = ls_distance_fcn (phi, h); time1 = toc (id); id = tic (); sd = ls_signed_distance (phi, h); time2 = toc (id); assert (d, max (sd, 0), sqrt (eps)); printf ("ls_distance_fcn faster than ls_signed_distance by %.1f%%\n", ... 100 * ((time2 - time1) / time2)); assert (time1 < time2); ls_distance_fcn faster than ls_signed_distance by 28.5% ***** test phis = ls_get_tests (); for i = 1 : length (phis) phi = ls_normalise (phis{i}); d = ls_distance_fcn (phi); sd = ls_signed_distance (phi); assert (d, max (sd, 0), sqrt (eps)); endfor ***** demo n = 100; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_genbasic (XX, YY, "sphere", [0, 0], [8, 5]); d = ls_distance_fcn (phi, h); figure (); mesh (XX, YY, d); view ([45, 45]); 7 tests, 7 passed, 0 known failure, 0 skipped [inst/ls_nb_from_geom.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_nb_from_geom.m ***** error ls_nb_from_geom (1) ***** error ls_nb_from_geom (1, 2, 3, 4) ***** error [a, b] = ls_nb_from_geom (1, 2); ***** error ls_nb_from_geom (1, 2, rand (2, 2)); ***** error x = linspace (-10, 10, 10); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_genbasic (XX, YY, "sphere", [0, 0], 5); phi = ls_normalise (phi, h); geom = ls_find_geometry (phi, h); ls_nb_from_geom (geom, phi); ***** error x = linspace (-10, 10, 10); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_genbasic (XX, YY, "sphere", [0, 0], 5); phi = ls_normalise (phi, h); geom = ls_find_geometry (phi, h); ls_nb_from_geom (geom, phi, [1, 2, 3]); ***** test n = 50; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_setdiff (ls_genbasic (XX, YY, "sphere", [0, 0], 8), ... ls_genbasic (XX, YY, "sphere", [1, 1], 5)); phi = ls_normalise (phi, h); geom = ls_find_geometry (phi, h); geom = ls_absolute_geom (geom, XX, YY); dOld = ls_init_narrowband (phi, h); dNew = ls_nb_from_geom (geom, phi); where = (!isna (dOld)); assert (all (!isna (dNew(where)))); assert (dNew(where), dOld(where), h / 4); ***** demo n = 50; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_genbasic (XX, YY, "sphere", [0, 0], 3); phi = ls_normalise (phi, h); geom = ls_find_geometry (phi, h); geom = ls_absolute_geom (geom, XX, YY); g0 = NA (1, geom.bedges.n); for i = 1 : geom.bedges.n a = geom.ispts.coord(geom.bedges.ispts(i, 1), :); b = geom.ispts.coord(geom.bedges.ispts(i, 2), :); m = (a + b) / 2; angle = abs (atan2 (m(2), m(1))); g0(i) = min (angle, 2 * pi - angle); endfor [d, g] = ls_nb_from_geom (geom, phi, g0); [d, g] = fastmarching (d, g, h * ones (size (phi))); figure (); hold ("on"); imagesc (x, x, g); set (gca (), "ydir", "normal"); contour (XX, YY, phi, [0, 0], "k"); hold ("off"); colorbar (); 7 tests, 7 passed, 0 known failure, 0 skipped [inst/ls_inside.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_inside.m ***** error ls_inside () ***** error ls_inside (1, 2) ***** test assert (ls_inside ([1, 0, -1, 0, 1]), [false, false, true, false, false]); ***** test if (exist ("signbit") == 5) assert (ls_inside ([-0, 0]), [true, false]); else warning ("'signbit' function not available, skipping test."); endif 4 tests, 4 passed, 0 known failure, 0 skipped [inst/so_save_descent.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/so_save_descent.m ***** error so_save_descent (1, 2); ***** error so_save_descent (1, 2, 3, 4); ***** error so_save_descent (1, 2, 3); ***** error so_save_descent (struct (), 2, struct ()); ***** error so_save_descent ([2, 3], 2, struct ()); ***** error <'fsave' is not available> pkg unload -nodeps parallel; so_save_descent ("foo", 2, struct ()); ***** test pkg load parallel; so_save_descent ("foo", 2, struct ()); so_save_descent (5, 2, struct ()); 7 tests, 7 passed, 0 known failure, 0 skipped [inst/ls_absolute_geom.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_absolute_geom.m ***** error ls_absolute_geom (1, 2); ***** error ls_absolute_geom (1, 2, 3, 4); ***** error x = [-1, 1]; [XX, YY, ZZ] = ndgrid (x); ls_absolute_geom (struct (), XX, YY); ***** error ls_absolute_geom (struct (), [-1, 0, 1], [0, 0, 0]); ***** error ls_absolute_geom (struct (), zeros (3, 2), zeros (2, 2)); 5 tests, 5 passed, 0 known failure, 0 skipped [inst/ls_complement.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_complement.m ***** error ls_complement () ***** error ls_complement (1, 2) ***** test n = 50; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi1 = (XX - 2).^2 + (YY - 2).^2 - 2^2; phi2 = (XX + 2).^2 + (YY + 2).^2 - 2^2; assert (ls_disjoint (phi1, ls_complement (phi1))); assert (ls_disjoint (phi2, ls_complement (phi2))); assert (~ls_disjoint (phi1, ls_complement (phi2))); assert (~ls_disjoint (phi2, ls_complement (phi1))); sd1 = ls_signed_distance (ls_complement (phi1), h); sd2 = ls_complement (ls_signed_distance (phi1, h)); assert (sd1, sd2, sqrt (eps)); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/ls_extract_solution.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_extract_solution.m ***** error ls_extract_solution (1, 2, 3) ***** error ls_extract_solution (1, 2, 3, 4, 5) ***** error ls_extract_solution (1, [1, 2], [1, 2], [3; 4]); ***** error ls_extract_solution (1, [1; 2], [3, 4], [3, 4]); ***** test assert (ls_extract_solution (1, [], [], []), []); ***** test ts = [0, 1, 2, 3]; phis = ls_get_tests (); for i = 1 : length (phis) f = ones (size (phis{i})); for j = -1 : 1 curF = j * f; d = ls_solve_stationary (phis{i}, curF); for t = ts phit = ls_extract_solution (t, d, phis{i}, curF); assert (phit(curF == 0), phis{i}(curF == 0)); endfor endfor endfor ***** test n = 100; x = linspace (-1.5, 1.5, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_genbasic (XX, YY, "sphere", [0, 0], 1); f = -ones (size (XX)); d = ls_solve_stationary (phi, f, h); phiNew = ls_extract_solution (2, d, phi, f); assert (ls_isempty (phiNew)); ***** test n = 50; x = linspace (-3, 3, n); h = x(2) - x(1); [XX, YY, ZZ] = ndgrid (x); phi0 = ls_genbasic (XX, YY, ZZ, "sphere", [0, 0, 0], 1); phit = ls_genbasic (XX, YY, ZZ, "sphere", [0, 0, 0], 2); f = ones (size (phi0)); d = ls_solve_stationary (phi0, f, h); phi = ls_extract_solution (1, d, phi0, f); sd1 = ls_signed_distance (phi, h); sd2 = ls_signed_distance (phit, h); diff = norm (sd1(:) - sd2(:), Inf); assert (diff, 0, h); warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.088561 to 0.090209 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 warning: increased distance in fast marching 0.105699 to 0.105896 warning: called from fastmarching at line 110 column 19 ls_signed_distance at line 45 column 5 __test__ at line 16 column 7 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 70 column 31 ***** demo n = 100; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_genbasic (XX, YY, "half", [5, -10], [1, -1]); f = sign (XX) + 2; times = linspace (1, 9, 80); ls_animate_evolution (phi, f, h, times, 0.05); ***** demo n = 101; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_genbasic (XX, YY, "half", [-9, 0], [-1, 0]); f = ones (size (phi)); f(XX == 0 & abs (YY) > 2) = 0; times = linspace (1, 19, 80); ls_animate_evolution (phi, f, h, times, 0.05); ***** demo n = 1000; x = linspace (-5, 5, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); F = sin (XX .* YY); phi0 = ls_genbasic (XX, YY, "sphere", [0, 0], 3); ls_animate_evolution (phi0, F, h, linspace (0, 3, 40), 0.01); 8 tests, 8 passed, 0 known failure, 0 skipped [inst/ls_enforce.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_enforce.m ***** error ls_enforce (1, 2) ***** error ls_enforce (1, 2, 3, 4) ***** error ls_enforce (1, "inside", [1, 2]); ***** error ls_enforce (1, "foo", true); ***** error ls_enforce (1, NA, false); ***** test n = 100; x = linspace (-10, 10, n); [XX, YY] = meshgrid (x, x); circ2 = (XX.^2 + YY.^2 < 2^2); circ8 = (XX.^2 + YY.^2 < 8^2); phi = (XX.^2 + YY.^2 - 5^2); phi2 = ls_enforce (phi, "inside", circ8); assert (ls_equal (phi2, phi)); phi2 = ls_enforce (phi, "inside", circ2); assert (ls_check (phi2, "inside", circ2)); phi2 = ls_enforce (phi, "contain", circ2); assert (ls_equal (phi2, phi)); phi2 = ls_enforce (phi, "contain", circ8); assert (ls_check (phi2, "contain", circ8)); phi2 = ls_enforce (phi, "outside", ~circ8); assert (ls_equal (phi2, phi)); phi2 = ls_enforce (phi, "outside", ~circ2); ls_check (phi2, "outside", ~circ2); phi2 = ls_enforce (phi, "outside", circ2); ls_check (phi2, "outside", circ2); 6 tests, 6 passed, 0 known failure, 0 skipped [inst/ls_signed_distance.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_signed_distance.m ***** error ls_signed_distance () ***** error ls_signed_distance (1, 2, 3) ***** test assert (ls_signed_distance ([]), []); ***** test n = 10; x = linspace (-2, 2, n); h = x(2) - x(1); phi = abs (x) - 1; d = ls_signed_distance (phi, h); assert (d, phi, sqrt (eps)); ***** test n = 50; x = linspace (-2, 2, n); h = x(2) - x(1); [XX, YY, ZZ] = ndgrid (x); RRsq = XX.^2 + YY.^2 + ZZ.^2; phi = RRsq - 1; d = ls_signed_distance (phi, h); assert (d, sqrt (RRsq) - 1, h); ***** test phi = [5e-6, 1.7e-154, -1.3e-2]; for h = [0.02, 0.01, 0.005] d = ls_signed_distance (phi, h); assert (all (isfinite (d))); assert (d(2), 0); endfor ***** test phis = ls_get_tests (); for i = 1 : length (phis) phi = ls_normalise (phis{i}); d = ls_signed_distance (phi); assert (ls_equal (d, phi)); endfor ***** test if (exist ("signbit") == 5) phi = [-0, 0]; d = ls_signed_distance (phi); assert (ls_equal (phi, d)); else warning ("'signbit' function not available, skipping test."); endif ***** demo n = 100; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi0 = atan (ls_union ((XX.^2 + (YY - 5).^2) - 20, ... (XX.^2 + (YY + 5).^2) - 20)); %phi0 = XX.^2 / 1.3^2 + YY.^2 - 1; d = ls_signed_distance (phi0, h); figure (); subplot (1, 2, 1); contour (XX, YY, phi0); title ("Initial"); colorbar (); axis ("equal"); subplot (1, 2, 2); contour (XX, YY, d); title ("Signed Distance"); colorbar (); axis ("equal"); 8 tests, 8 passed, 0 known failure, 0 skipped [inst/ls_time_step.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_time_step.m ***** error ls_time_step (1, 2) ***** error ls_time_step (1, 2, 3, 4, 5, 6) ***** error ls_time_step (1, 2, 3, 4, [5, 5]) ***** error ls_time_step ([1; 1], [2, 2], [3, 3, 3]) ***** error ls_time_step ([1, 1], 1, [2, 2], [3, 3, 3]) ***** error ls_time_step (ones (2, 2), 1, 1) ***** test n = 100; x = linspace (0, 1, n); h = x(2) - x(1); phi0 = sin (x); fPos = ones (size (phi0)); % Single time step, moving exactly one grid step. phit = ls_time_step (1, phi0, fPos); assert (phit(2 : end), phi0(1 : end - 1)); % t = 1 should correspond to the previous result, and t = 2 % shifts one more time step. However, due to boundary effects, % we have to exclude some elements in the comparisons. phitArr = ls_time_step ([1, 2], 0.5, phi0, fPos); assert (size (phitArr), [2, 1]); assert (phitArr{1}(3 : end), phit(3 : end), 1e-4); assert (phitArr{2}(5 : end), phi0(3 : end - 2), 1e-4); % Try out movement in the other direction. phit = ls_time_step (0.5, 0.1, phi0, -fPos, 0.5); assert (phit(1 : end - 4), phi0(2 : end - 3), 1e-4); ***** function compareFastMarching (t, phi0, F, h, tol) phit = ls_time_step (t, phi0, F, h); d = ls_solve_stationary (phi0, F, h); phit_fm = ls_extract_solution (t, d, phi0, F); sd1 = ls_signed_distance (phit, h); sd2 = ls_signed_distance (phit_fm, h); assert (sd1, sd2, tol); ***** endfunction ***** test warning ("off", "level-set:fast-marching:too-far-alive"); n = 100; x = linspace (-5, 5, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi0 = ls_genbasic (XX, YY, "sphere", [0, 0], [3, 1.5]); F = ones (size (phi0)); compareFastMarching (0.5, phi0, F, h, h / 2); compareFastMarching (1.5, phi0, F, h, h / 2); phi0 = ls_genbasic (XX, YY, "box", [-3, -3], [3, 3]); F = YY / 5; compareFastMarching (1, phi0, F, h, h); F = ones (size (phi0)); compareFastMarching (1, phi0, F, h, h / 2); phi0 = ls_genbasic (XX, YY, "sphere", [0, 0], 3); F = sin (XX .* YY); compareFastMarching (1, phi0, F, h, h); ***** test warning ("off", "level-set:fast-marching:increased-distance"); n = 50; x = linspace (-5, 5, n); h = x(2) - x(1); [XX, YY, ZZ] = ndgrid (x, x, x); phi0 = ls_genbasic (XX, YY, ZZ, "sphere", [0, 0, 0], 3); F = ones (size (phi0)); compareFastMarching (1, phi0, F, h, h / 2); compareFastMarching (1, phi0, -F, h, h / 2); ***** demo n = 500; x = linspace (-5, 5, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); F = sin (XX .* YY); phi0 = ls_genbasic (XX, YY, "sphere", [0, 0], 3); phit = ls_time_step ([0.5, 1], phi0, F, h); figure (); hold ("on"); imagesc (x, x, F); axis ("equal"); set (gca (), "ydir", "normal"); ls_sign_colourmap (); contour (XX, YY, phi0, [0, 0], "k", "LineWidth", 2); contour (XX, YY, phit{1}, [0, 0], "k", "LineWidth", 2); contour (XX, YY, phit{2}, [0, 0], "k", "LineWidth", 2); hold ("off"); 9 tests, 9 passed, 0 known failure, 0 skipped [inst/so_run_descent.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/so_run_descent.m ***** shared data, phi0 data = struct (); data.p = so_init_params (false); data.p.vol = 10; data.p.weight = 50; n = 100; x = linspace (-10, 10, n); h = x(2) - x(1); data.g = struct ("x", x, "h", h); data = so_example_problem (data); data.handler = struct (); phi0 = ls_genbasic (data.g.x, "box", -3, 5); ***** error so_run_descent (1, 2); ***** error so_run_descent (1, 2, 3, 4); ***** error so_run_descent (0, phi0, data); ***** error so_run_descent (1.5, phi0, data); ***** error so_run_descent ([2, 3], phi0, data); ***** error d = data; d.p.descent.initialStep = 0; so_run_descent (1, phi0, d); ***** test nSteps = 12; [s, descentLog] = so_run_descent (nSteps, phi0, data); assert (s.cost, 0, 1e-3); assert (length (descentLog.costs), nSteps + 1); assert (descentLog.costs(end), s.cost); %semilogy (descentLog.costs, "o"); ***** test tol = 5e-2; nSteps = 100; d = data; d.cb.check_stop = @(data) (data.cost < tol); [s, descentLog] = so_run_descent (nSteps, phi0, d); assert (s.cost < tol); printf ("Steps needed: %d\n", descentLog.steps); assert (descentLog.steps < nSteps); Steps needed: 8 ***** demo data = struct (); data.p = so_init_params (true); data.p.vol = 10; data.p.weight = 50; n = 100; x = linspace (-10, 10, n); h = x(2) - x(1); data.g = struct ("x", x, "h", h); % Look at so_example_problem to see how the callbacks % and the plotting handler is defined. data = so_example_problem (data); phi0 = ls_genbasic (data.g.x, "box", -3, 7); [s, descentLog] = so_run_descent (5, phi0, data); figure (); semilogy (0 : descentLog.steps, descentLog.costs, "o"); title ("Cost Descrease"); printf ("\nFinal interval: [%.6d, %.6d]\n", s.a, s.b); printf ("Final cost: %.6d\n", s.cost); 8 tests, 8 passed, 0 known failure, 0 skipped [inst/ls_find_geometry.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_find_geometry.m ***** error ls_find_geometry () ***** error ls_find_geometry (1, 2, 3, 4) ***** error ls_find_geometry (resize (zeros (8, 1), [2, 2, 2])) ***** error ls_find_geometry ([1, -1, 1]) ***** error ls_find_geometry ([0, 1; -1, -1]) ***** error ls_find_geometry ([-1, NA; -1, -1]) ***** function verifyGeometry (phi, geom) sz = size (phi); nNode = prod (sz); L = sz(1); M = sz(2); nElem = (L - 1) * (M - 1); assert (geom.dim, sz); % Basic properties of the elem field. assert (geom.elem.n, nElem); assert (size (geom.elem.nodelist), [nElem, 4]); assert (all (geom.elem.type(geom.elem.index.inner) == -1)); assert (all ((geom.elem.type(geom.elem.index.bdry) == 0))); assert (all ((geom.elem.type(geom.elem.index.outer) == 1))); % Order of the nodes in nodelist. assert (geom.elem.nodelist(1, :), [L+2, 2, 1, L+1]); % Correct classification of inner/outer/bdry elements. assert (all (phi(geom.elem.nodelist(geom.elem.index.inner, :))(:) < 0)); assert (all (phi(geom.elem.nodelist(geom.elem.index.outer, :))(:) > 0)); bdryPhis = phi(geom.elem.nodelist(geom.elem.index.bdry, :)); bdryPhis = sort (bdryPhis, 2); assert (all (bdryPhis(:, 1) < 0) && all (bdryPhis(:, end) > 0)); % Each boundary element should have two or four intersected edges. % Also verify that the start/endEdge fields of the internal information % match up to the points in question. for i = 1 : geom.bdryel.n empty = length (find (isna (geom.bdryel.edges(i, :)))); assert (empty == 2 || empty == 0); for j = 1 : length (geom.internal.bdryelSegments{i}) s = geom.internal.bdryelSegments{i}{j}; assert (geom.bdryel.edges(i, s.startEdge) == s.startPt); assert (geom.bdryel.edges(i, s.endEdge) == s.endPt); endfor endfor % Run through gamma components and verify that geom.ispts.onedge matches. for i = 1 : geom.gamma.n c = geom.gamma.ispts{i}; c(end + 1) = c(1); for j = 1 : length (c) - 1 cur = c(j); next = c(j + 1); bdryel = geom.ispts.onedge(cur, 1, 1); assert (geom.ispts.onedge(next, 2, 1), bdryel); assert (geom.bdryel.edges(bdryel, geom.ispts.onedge(cur, 1, 2)), cur); assert (geom.bdryel.edges(bdryel, geom.ispts.onedge(next, 2, 2)), next); edgeForward = geom.ispts.onedge(cur, 1, 3); assert (geom.bedges.ispts(edgeForward, 1), cur); assert (geom.bedges.ispts(edgeForward, 2), next); assert (geom.ispts.gammachain(cur, 1), next); assert (geom.ispts.gammachain(next, 2), cur); endfor endfor % Verify that the ordering of points in bedges matches the onedge % information about start / end points in each boundary element. for i = 1 : geom.bedges.n assert (geom.ispts.onedge(geom.bedges.ispts(i, 1), 1, 1), ... geom.ispts.onedge(geom.bedges.ispts(i, 2), 2, 1)); assert (geom.ispts.onedge(geom.bedges.ispts(i, 1), 1, 3), i); assert (geom.ispts.onedge(geom.bedges.ispts(i, 2), 2, 3), i); endfor ***** endfunction ***** test phis = ls_get_tests (); hs = [0.1, 0.5, 1, 1.5]; for i = 1 : length (phis) for h = hs for s = [-1, 1] cur = phis{i} * s; phi = ls_normalise (cur, h); geom = ls_find_geometry (phi, h); verifyGeometry (phi, geom); endfor endfor endfor ***** test phi = ones (4, 4); phi(2 : 3, 2 : 3) = [Inf, -1; -Inf, 2]; g = ls_find_geometry (phi, 0.1, 0.01); ind = find (g.elem.index.bdry == 5); assert (size (ind), [1, 1]); edges = g.bdryel.edges(ind, :); assert (all (~isna (edges))); assert (g.ispts.inout(edges, :), [7, 11; 7, 6; 10, 6; 10, 11]); assert (g.ispts.frac(edges), [0.99; 0.5; 0.01; 1/3], sqrt (eps)); assert (g.ispts.incoord(edges, :), ... [0.099, 0; 0, -0.05; -0.001, 0; 0, 1/30], sqrt (eps)); ***** error phi = [-1, -1; 1, 1]; ls_find_geometry (phi); ***** test phi = ones (3, 3); phi(2, 2) = -1; geom = ls_find_geometry (phi); % Permute the component array such that it starts with the north point % and then compare coordinates. Note that the "north" point is "south" % in matrix interpretation and thus has "outindex" of 6. assert (geom.gamma.n, 1); c = geom.gamma.ispts{1}'; while (geom.ispts.inout(c(1), 2) != 6) c = [c(2 : end), c(1)]; endwhile assert (geom.ispts.incoord(c, :), ... [0, 1/2; -1/2, 0; 0, -1/2; 1/2, 0], sqrt (eps)); ***** function checkBoundaryDirection (pts, dir) pts(end + 1, :) = pts(1, :); for i = 1 : length (pts) - 1 a = [pts(i, :), 0]; b = [pts(i + 1, :), 0]; z = cross (a, b); assert (z(1 : 2), [0, 0]); assert (sign (z(3)), dir); endfor ***** endfunction ***** test n = 50; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_setdiff (ls_genbasic (XX, YY, "sphere", [0, 0], 8), ... ls_genbasic (XX, YY, "sphere", [0, 0], 4)); phi = ls_normalise (phi, h); geom = ls_find_geometry (phi, h); geom = ls_absolute_geom (geom, XX, YY); assert (geom.gamma.n, 2); len1 = length (geom.gamma.ispts{1}); len2 = length (geom.gamma.ispts{2}); if (len1 < len2) outer = geom.gamma.ispts{2}; inner = geom.gamma.ispts{1}; else assert (len1 > len2); outer = geom.gamma.ispts{1}; inner = geom.gamma.ispts{2}; endif checkBoundaryDirection (geom.ispts.coord(outer, :), 1); checkBoundaryDirection (geom.ispts.coord(inner, :), -1); ***** test phi = ones (4, 4); phi(2, 2) = -1; phi(3, 3) = -1; geom = ls_find_geometry (phi); assert (geom.gamma.n, 2); geom = ls_find_geometry (-phi); assert (geom.gamma.n, 1); % Now also try with other "kind" of narrow pair. phi = phi(:, end : -1 : 1); geom = ls_find_geometry (phi); assert (geom.gamma.n, 2); geom = ls_find_geometry (-phi); assert (geom.gamma.n, 1); ***** demo n = 15; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); r1 = sqrt (2) * 2.9; r2 = 3; phi = ls_union (ls_genbasic (XX, YY, "sphere", [-3, -3], r1), ... ls_genbasic (XX, YY, "sphere", [3, 3], r1), ... ls_genbasic (XX, YY, "sphere", [-5, 5], r2), ... ls_genbasic (XX, YY, "sphere", [5, -5], r2)); phi = ls_normalise (phi, h); g = ls_find_geometry (phi, h, 0.2); g = ls_absolute_geom (g, XX, YY); figure (); hold ("on"); for i = 1 : size (g.elem.nodelist, 1) nodes = g.elem.nodelist(i, :); switch (g.elem.type(i)) case -1 colour = [0.5, 0.5, 1]; case 0 colour = [1, 0.5, 0.5]; case 1 colour = [0.8, 0.8, 0.8]; endswitch patch (XX(nodes), YY(nodes), colour); endfor plot (g.ispts.coord(:, 1), g.ispts.coord(:, 2), "k.", "MarkerSize", 8); for i = 1 : g.gamma.n pts = g.gamma.ispts{i}; pts(end + 1) = pts(1); plot (g.ispts.coord(pts, 1), g.ispts.coord(pts, 2), "k-", "LineWidth", 2); endfor contour (XX, YY, phi, [0, 0], "g"); axis ([min(x), max(x), min(x), max(x)]); axis ("equal"); grid ("on"); set (gca (), "xtick", x, "ytick", x, "xticklabel", "", "yticklabel", ""); hold ("off"); 12 tests, 12 passed, 0 known failure, 0 skipped [inst/ls_sign_colourmap.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_sign_colourmap.m ***** shared colours colours = [1, 1, 1; 0, 0, 0; 1, 1, 1; 0, 0, 0]; ***** error ls_sign_colourmap (1, 2); ***** error ls_sign_colourmap (1); ***** error cmap = ls_sign_colourmap (); ***** error ls_sign_colourmap ("foo"); ***** test figure (); ls_sign_colourmap (); ls_sign_colourmap ("highlight"); ls_sign_colourmap (colours); close (); ***** error ls_sign_colourmap (1, 2, 3); ***** error ls_sign_colourmap ([1, 2, 3]); ***** error ls_sign_colourmap ([1, 2], 1); ***** error ls_sign_colourmap ([1, 2], "foo"); ***** test cmap = ls_sign_colourmap ([1, 2]); cmap = ls_sign_colourmap ([1; 2], "highlight"); cmap = ls_sign_colourmap ([1; 2], colours); ***** demo n = 100; x = linspace (-2, 2, n); y = linspace (-1, 3, n); [XX, YY] = meshgrid (x, y); phi = ls_genbasic (XX, YY, "sphere", [0, 1], 1); figure (); imagesc (x, y, phi); set (gca (), "ydir", "normal"); ls_sign_colourmap (); colorbar (); title ("Type 'sign'"); ***** demo n = 100; x = linspace (-2, 2, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_genbasic (XX, YY, "sphere", [0, 0], 1); d = ls_signed_distance (phi, h); F = YY .* exp (-10 * d.^2); figure (); hold ("on"); imagesc (x, x, F); set (gca (), "ydir", "normal"); ls_sign_colourmap ("highlight"); colorbar (); contour (XX, YY, phi, [0, 0], "k", "LineWidth", 2); hold ("off"); title ("Type 'highlight'"); 10 tests, 10 passed, 0 known failure, 0 skipped [inst/so_example_problem.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/so_example_problem.m ***** shared basicData basicData = struct (); basicData.p = so_init_params (true); basicData.p.vol = 4; basicData.p.weight = 10; n = 50; x = linspace (-4, 5, n); h = x(2) - x(1); basicData.g = struct ("x", x, "h", h); ***** error so_example_problem (); ***** error so_example_problem (1, 2); ***** error so_example_problem (1); ***** test data = so_example_problem (basicData); phi = ls_genbasic (data.g.x, "box", -2.5, 1.3); [a, b] = data.util.bounds (phi, data); assert (a, -2.5, sqrt (eps)); assert (b, 1.3, sqrt (eps)); ***** test data = so_example_problem (basicData); phi = ls_genbasic (data.g.x, "box", -2, 2); s0 = data.cb.update_state (phi, data); phi = ls_genbasic (data.g.x, "box", -3, 3); s1 = data.cb.update_state (phi, data); phi = ls_genbasic (data.g.x, "box", -1, 1); s2 = data.cb.update_state (phi, data); phi = ls_genbasic (data.g.x, "box", -1, 3); s3 = data.cb.update_state (phi, data); phi = ls_genbasic (data.g.x, "box", -3, 1); s4 = data.cb.update_state (phi, data); assert (all ([s0.cost, s1.cost, s2.cost, s3.cost, s4.cost] >= 0)); assert (s0.cost, 0, 1e-1); assert (s1.cost > s3.cost); assert (s1.cost > s4.cost); assert (s2.cost > s3.cost); assert (s2.cost > s4.cost); assert (s3.cost > s0.cost); assert (s4.cost > s0.cost); ***** function testDeriv (a, b, data) phi = ls_genbasic (data.g.x, "box", a, b); data.s = data.cb.update_state (phi, data); [f, dJ] = data.cb.get_direction (data); assert (dJ < 0); dt = 5e-3; dists = ls_solve_stationary (phi, f, data.g.h); phip = ls_extract_solution (dt, dists, phi, f); sp = data.cb.update_state (phip, data); assert (sp.cost < data.s.cost); relErr = abs (sp.cost - (data.s.cost + dt * dJ)) / data.s.cost; assert (relErr < 0.1); ***** endfunction ***** test data = so_example_problem (basicData); testDeriv (-1, 1, data); testDeriv (-3, 3, data); testDeriv (-1, 3, data); testDeriv (-3, 1, data); 6 tests, 6 passed, 0 known failure, 0 skipped [inst/ls_setxor.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_setxor.m ***** error ls_setxor (1) ***** error ls_setxor (1, 2, 3) ***** error ls_setxor (1, [1, 2]) ***** test assert (ls_equal (ls_setxor ([-1, -1, Inf], [1, -1, -Inf]), [-1, 1, -1])); n = 50; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi1 = XX.^2 + YY.^2 - 8^2; phi2 = XX.^2 + YY.^2 - 5^2; assert (ls_equal (ls_setdiff (phi1, phi2), ls_setxor (phi1, phi2))); ***** demo n = 100; x = linspace (-7, 7, n); [XX, YY] = meshgrid (x, x); phi1 = (XX - 2).^2 + YY.^2 - 3^2; phi2 = (XX + 2).^2 + YY.^2 - 3^2; phi = ls_setxor (phi1, phi2); figure (); subplot (1, 2, 1); hold ("on"); contour (XX, YY, phi1, [0, 0], "k"); contour (XX, YY, phi2, [0, 0], "k"); hold ("off"); axis ("equal"); subplot (1, 2, 2); hold ("on"); imagesc (x, x, phi); set (gca (), "ydir", "normal"); ls_sign_colourmap (); contour (XX, YY, phi, [0, 0], "k"); hold ("off"); axis ("equal"); 4 tests, 4 passed, 0 known failure, 0 skipped [inst/ls_solve_stationary.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_solve_stationary.m ***** error ls_solve_stationary (1) ***** error ls_solve_stationary (1, 2, 3, 4, 5) ***** error ls_solve_stationary ([1, 2], [3; 4]); ***** error ls_solve_stationary ([1, 2], [1, 2], :, [3; 4]); ***** test assert (ls_solve_stationary ([], []), []); ***** function checkOutput (phi, f, d) assert (all (isna (d(f == 0)))); where = (f ~= 0); assert (all (isfinite (d(where)) | isinf (d(where)))); assert (sign (d(where)), sign (phi(where))); ***** endfunction ***** test phis = ls_get_tests (); for i = 1 : length (phis) f = ones (size (phis{i})); for j = -1 : 1 phi = ls_normalise (phis{i}); d = ls_solve_stationary (phi, j * f); checkOutput (phi, j * f, d); endfor endfor ***** test n = 101; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); r1 = (XX - 5).^2 + YY.^2; r2 = (XX + 5).^2 + YY.^2; phi = ls_union (r1 - 2^2, r2 - 2^2); f1 = max (r1 - 3^2, 1^2 - r1); f2 = max (r2 - 3^2, 1^2 - r2); f = min (f1, f2) .* sign (XX); assert (~all (f(:) ~= 0)); d = ls_solve_stationary (phi, f, h); checkOutput (phi, f, d); where = (f ~= 0); assert (any (isinf (d(where)))); %{ contour (phi, [0, 0]); colorbar (); figure (); imagesc (f); colorbar (); figure (); imagesc (d); colorbar (); %} ***** test phi = [3, 1, -1, 1, 3]; f = ones (size (phi)); dists1 = ls_solve_stationary (phi, f); dists2 = ls_solve_stationary (phi, f, :, [NA, NA, -0.1, NA, NA]); assert (dists1, [1.5, 0.5, -0.5, 0.5, 1.5], sqrt (eps)); assert (dists2, [1.9, 0.9, -0.1, 0.9, 1.9]); ***** demo n = 100; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi0 = YY - XX + 15; f = sign (XX) + 2; d = ls_solve_stationary (phi0, f, h); figure (); contour (XX, YY, d); line ([0, 0], [-10, 10]); title ("Refraction"); ***** demo n = 101; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi0 = XX + 9; f = ones (size (phi0)); f(XX == 0 & abs (YY) > 2) = 0; d = ls_solve_stationary (phi0, f, h); figure (); contour (XX, YY, d); line ([0, 0], [-10, -2]); line ([0, 0], [2, 10]); title ("Diffraction"); 8 tests, 8 passed, 0 known failure, 0 skipped [inst/ls_build_mesh.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_build_mesh.m ***** error ls_build_mesh (1) ***** error ls_build_mesh (1, 2, 3, 4) ***** error x = linspace (-10, 10, 10); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_genbasic (XX, YY, "sphere", [0, 0], 5); phi = ls_normalise (phi, h); geom = ls_find_geometry (phi, h); ls_build_mesh (geom, phi); ***** function verifyDirection (a, b, centre) v1 = [a - centre; 0]; v2 = [b - centre; 0]; x = cross (v1, v2); assert (x(1 : 2), zeros (2, 1)); assert (x(3) > 0); ***** endfunction ***** function verifyMesh (geom, phi, glob) [mesh, vmap] = ls_build_mesh (geom, phi, glob); nPts = prod (geom.dim); % Verify ordering of triangle points. for i = 1 : size (mesh.t, 2) verifyDirection (mesh.p(:, mesh.t(1, i)), mesh.p(:, mesh.t(2, i)), ... mesh.p(:, mesh.t(3, i))); endfor % Go through all grid points and verify them with the mesh. for i = 1 : nPts gridInd = vmap.grid(i); if (isna (gridInd)) assert (!glob); continue; endif assert (vmap.mesh(gridInd), i); assert (mesh.p(:, gridInd), geom.nodes.coord(i, :)'); endfor % Go through all intersection points and verify them. for i = 1 : geom.ispts.n gridInd = vmap.ispt(i); assert (vmap.mesh(gridInd), -i); assert (mesh.p(:, gridInd), geom.ispts.coord(i, :)'); endfor % Verify mesh.e against geom.bedges. for i = 1 : geom.bedges.n assert (mesh.e(1 : 2, i), vmap.ispt(geom.bedges.ispts(i, :)')); assert (mesh.e(5, i), geom.bedges.comp(i)); endfor ***** endfunction ***** function verifyPhi (phi, XX, YY, h) for s = [-1, 1] cur = phi * s; cur = ls_normalise (cur, h); geom = ls_find_geometry (cur, h); geom = ls_absolute_geom (geom, XX, YY); verifyMesh (geom, cur, false); verifyMesh (geom, cur, true); endfor ***** endfunction ***** test n = 20; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_union (ls_genbasic (XX, YY, "sphere", [-6, -6], 3), ... ls_genbasic (XX, YY, "sphere", [6, 6], 3)); verifyPhi (phi, XX, YY, h); phi = ls_setdiff (ls_genbasic (XX, YY, "sphere", [0, 0], 8), ... ls_genbasic (XX, YY, "sphere", [0, 0], 4)); verifyPhi (phi, XX, YY, h); ***** demo x = linspace (-10, 10, 11); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = ls_union (ls_genbasic (XX, YY, "sphere", [5, 5], 4.5), ... ls_genbasic (XX, YY, "sphere", [-2, -2], 4)); phi = ls_normalise (phi, h); geom = ls_find_geometry (phi, h); geom = ls_absolute_geom (geom, XX, YY); mesh = ls_build_mesh (geom, phi, false); meshGlob = ls_build_mesh (geom, phi, true); figure (); hold ("on"); trimesh (meshGlob.t(1 : 3, :)', meshGlob.p(1, :), meshGlob.p(2, :), "r"); trimesh (mesh.t(1 : 3, :)', mesh.p(1, :), mesh.p(2, :), "g"); for i = 1 : size (mesh.e, 2) plot (mesh.p(1, mesh.e(1 : 2, i)), mesh.p(2, mesh.e(1 : 2, i)), "b"); endfor hold ("off"); legend ("Global", "Domain", "Boundary"); axis ("equal"); axis ("square"); 4 tests, 4 passed, 0 known failure, 0 skipped [inst/ls_issubset.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_issubset.m ***** error ls_issubset (1) ***** error ls_issubset (1, 2, 3) ***** error ls_issubset (1, [1, 2]) ***** test n = 50; x = linspace (-10, 10, n); [XX, YY] = meshgrid (x, x); phi1 = XX.^2 + YY.^2 - 1^2; phi2 = XX.^2 + YY.^2 - 5^2; phi3 = XX.^2 + YY.^2 - 8^2; phi4 = (XX - 3).^2 + YY.^2 - 3^2; assert (ls_issubset (phi1, phi2)); assert (ls_issubset (phi4, phi3)); assert (~ls_issubset (phi4, phi2)); 4 tests, 4 passed, 0 known failure, 0 skipped [inst/upwind_gradient_norm.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/upwind_gradient_norm.m ***** error upwind_gradient_norm () ***** error upwind_gradient_norm (1, 2, 3, 4) ***** error upwind_gradient_norm ([1, 1], [2, 2], [3, 3]) ***** error upwind_gradient_norm ([1, 1], [2, 2, 2]) ***** error upwind_gradient_norm ([1, 1], [2, 2, 2], 5) ***** test phi = [0, 2, 3]; fPos = ones (size (phi)); % Propagate the original phi to the right. This should result % in the *backward* difference to be used in the middle. g = upwind_gradient_norm (phi); assert (g(2), 2); gp = upwind_gradient_norm (phi, fPos); assert (gp, g); gp = upwind_gradient_norm (phi, 0.5); assert (gp, 2 * g); gp = upwind_gradient_norm (phi, fPos, 0.5); assert (gp, 2 * g); % Propagate to the left for the reverse effect. g = upwind_gradient_norm (phi, -fPos); assert (g(2), 1); % Propagate -phi, which again turns everything around. g = upwind_gradient_norm (-phi, fPos); assert (g(2), 1); g = upwind_gradient_norm (-phi, -fPos); assert (g(2), 2); ***** test n = 50; x = linspace (-1, 1, n); h = x(2) - x(1); [XX, YY, ZZ] = ndgrid (x, x, x); phi = XX.^2 + YY.^2 + ZZ.^2; g = upwind_gradient_norm (phi, h); r = sqrt (phi); assert (g, 2 * r, 0.1); 7 tests, 7 passed, 0 known failure, 0 skipped [inst/ls_union.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_union.m ***** error ls_union () ***** error ls_union (1, -2, [1, 2]) ***** test n = 50; x = linspace (-10, 10, n); [XX, YY] = meshgrid (x, x); phi1 = (XX - 3).^2 + (YY - 3).^2 - 2^2; phi2 = (XX + 3).^2 + (YY + 3).^2 - 2^2; phi3 = XX.^2 + YY.^2 - 2^2; phi = ls_union (phi1, phi2, phi3); assert (ls_issubset (phi1, phi)); assert (ls_issubset (phi2, phi)); assert (ls_issubset (phi3, phi)); assert (ls_union (phi3), phi3); ***** demo n = 100; x = linspace (-7, 7, n); [XX, YY] = meshgrid (x, x); phi1 = (XX - 2 * cos (7/6 * pi)).^2 + (YY - 2 * sin (7/6 * pi)).^2 - 3^2; phi2 = (XX - 2 * cos (11/6 * pi)).^2 + (YY - 2 * sin (11/6 * pi)).^2 - 3^2; phi3 = XX.^2 + (YY - 2).^2 - 3^2; phi = ls_union (phi1, phi2, phi3); figure (); subplot (1, 2, 1); hold ("on"); contour (XX, YY, phi1, [0, 0], "k"); contour (XX, YY, phi2, [0, 0], "k"); contour (XX, YY, phi3, [0, 0], "k"); hold ("off"); axis ("equal"); subplot (1, 2, 2); hold ("on"); imagesc (x, x, phi); set (gca (), "ydir", "normal"); ls_sign_colourmap (); contour (XX, YY, phi, [0, 0], "k"); hold ("off"); axis ("equal"); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/ls_normalise.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_normalise.m ***** error ls_normalise () ***** error ls_normalise (1, 2, 3, 4) ***** test h = 0.1; zeroTol = 0.2; phi = ones (4, 4); phiEx = phi; phi(2 : 3, 2 : 3) = [-eps, -0; 0, eps]; phiEx(2 : 3, 2 : 3) = [-zeroTol*h, -zeroTol*h; zeroTol*h, zeroTol*h]; phin = ls_normalise (phi, h, zeroTol); if (exist ("signbit") == 5) assert (phin, phiEx); else warning ("'signbit' function not available, skipping test."); endif 3 tests, 3 passed, 0 known failure, 0 skipped [inst/so_explore_descent.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/so_explore_descent.m ***** error so_explore_descent (1); ***** error so_explore_descent (1, 2, 3); ***** error so_explore_descent (struct (), 2); ***** error so_explore_descent ([2, 3], 2); ***** error <'fload' is not available> pkg unload -nodeps parallel; so_explore_descent ("foo", 2); ***** demo pkg load parallel; data = struct (); data.p = so_init_params (false); data.p.vol = 10; data.p.weight = 50; data.p.nSteps = 10; data.figs = struct (); data.figs.speed = figure (); data.figs.exploreCosts = figure (); n = 100; x = linspace (-10, 10, n); h = x(2) - x(1); data.g = struct ("x", x, "h", h); data = so_example_problem (data); phi0 = ls_genbasic (data.g.x, "box", -3, 7); printf ("Computing descent...\n"); f = tmpfile (); d = data; d.handler = struct (); d = so_save_descent (f, struct (), d); s = so_run_descent (data.p.nSteps, phi0, d); printf ("Final cost: %.6d\n", s.cost); printf ("\nNow replaying...\n"); init = @() data; frewind (f); so_explore_descent (f, init); fclose (f); 5 tests, 5 passed, 0 known failure, 0 skipped [inst/ls_genbasic.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_genbasic.m ***** shared x, y, XX, YY, XXX, YYY, ZZZ n = 121; x = linspace (-5, 7, n); y = linspace (-7, 5, n); [XX, YY] = meshgrid (x, y); [XXX, YYY, ZZZ] = ndgrid (x, y, x); ***** error ls_genbasic (); ***** error ls_genbasic (1, 2); ***** error ls_genbasic ("sphere"); ***** error ls_genbasic (XX, YY, "unknown"); ***** test ls_genbasic (x, "sphere", 0, 1); ls_genbasic (x', "sphere", 0, 1); ls_genbasic (XX, YY, "sphere", [0, 0], 1); ls_genbasic (0, 1, "sphere", [0, 0], 1); ***** error ls_genbasic (XX, YY, "sphere"); ***** error ls_genbasic (XX, YY, "sphere", 1); ***** error ls_genbasic (XX, YY, "sphere", 1, 2, 3); ***** error ls_genbasic (XX, YY, "sphere", [1, 2, 3], 1); ***** error ls_genbasic (XX, YY, "sphere", [1, 2], [1, 2, 3]); ***** test assert (ls_genbasic (XX, YY, "sphere", [1, -1], 1), ... ls_genbasic (XX, YY, "sphere", [1, -1], [1, 1])); ***** test c = [1; -1; 2]; r = [1; 2; 0.6]; tol = 0.4; phi1 = ls_genbasic (XXX, YYY, ZZZ, "sphere", c, r); phi2 = ls_genbasic (XXX, YYY, ZZZ, "sphere", c, min (r) - tol); assert (ls_issubset (phi2, phi1)); coords = {XXX, YYY, ZZZ}; for i = 1 : length (c) assert (ls_disjoint (phi1, ... coords{i} - (c(i) - r(i)), ... c(i) + r(i) - coords{i})); assert (~ls_disjoint (phi1 - tol, coords{i} - (c(i) - r(i)))); assert (~ls_disjoint (phi1 - tol, c(i) + r(i) - coords{i})); endfor ***** error ls_genbasic (XX, YY, "box", 1); ***** error ls_genbasic (XX, YY, "box", 1, 2, 3); ***** error ls_genbasic (XX, YY, "box", [1, 2, 3], [1, 2]); ***** error ls_genbasic (XX, YY, "box", [1; 2], [1, 2, 3]); ***** test assert (ls_equal (ls_genbasic (x, "box", -1, 2), abs (x - 0.5) - 1.5)); assert (ls_equal (ls_genbasic (x, "box", 2, -1), abs (x - 0.5) - 1.5)); ***** test a = [2; -3; 1]; b = [0; 2; -1]; tol = 0.2; phi1 = ls_genbasic (XXX, YYY, ZZZ, "box", a, b); phi2 = ls_genbasic (XXX, YYY, ZZZ, "box", b, a); assert (phi1, phi2); coords = {XXX, YYY, ZZZ}; for i = 1 : length (coords) assert (ls_disjoint (phi1, ... coords{i} - min (a(i), b(i)), ... max (a(i), b(i)) - coords{i})); assert (~ls_disjoint (phi1 - tol, coords{i} - min (a(i), b(i)))); assert (~ls_disjoint (phi1 - tol, max (a(i), b(i)) - coords{i})); endfor ***** error ls_genbasic (XX, YY, "half", 1); ***** error ls_genbasic (XX, YY, "half", 1, 2, 3); ***** error ls_genbasic (XX, YY, "half", [1, 2, 3], [1, 2]); ***** error ls_genbasic (XX, YY, "half", [1; 2], [1, 2, 3]); ***** test p = [0, 2, 1]; phi = ls_genbasic (XXX, YYY, ZZZ, "half", p, [0; 0; 1]); assert (ls_equal (phi, 1 - ZZZ)); normal = [1; 2; -0.5]; phi1 = ls_genbasic (XXX, YYY, ZZZ, "half", p, normal); phi2 = ls_genbasic (XXX, YYY, ZZZ, "half", p, 2 * normal); assert (ls_equal (phi1, phi2)); phi = ls_genbasic (XX, YY, "half", [0, 0], [1, -1]); assert (ls_equal (phi, YY - XX)); ***** demo n = 200; x = linspace (-7, 7, n); [XX, YY] = meshgrid (x, x); phi1 = ls_genbasic (XX, YY, "box", [-5, -3], [3, 6]); phi2 = ls_genbasic (XX, YY, "sphere", [-1; 1], 2); phi3 = ls_genbasic (XX, YY, "sphere", [0; 0], [6, 1]); phi4 = ls_genbasic (XX, YY, "half", [3, -3], [1, -2]) / 8; phi = ls_union (ls_setdiff (phi1, phi2), phi3, phi4); figure (); hold ("on"); imagesc (x, x, phi); set (gca (), "ydir", "normal"); ls_sign_colourmap (); contour (XX, YY, phi, [0, 0], "k"); hold ("off"); axis ("equal"); 23 tests, 23 passed, 0 known failure, 0 skipped [inst/so_init_params.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/so_init_params.m ***** error so_init_params () ***** error so_init_params (true, 1, 2) ***** error so_init_params (true, 0); ***** error so_init_params (true, 1.5); ***** test p = so_init_params (true); ***** error <'pararrayfun' is not available> pkg unload -nodeps parallel; p = so_init_params (true, 2); ***** test pkg load parallel; p = so_init_params (true, 2); 7 tests, 7 passed, 0 known failure, 0 skipped [inst/ls_check.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_check.m ***** error ls_check (1, 2) ***** error ls_check (1, 2, 3, 4) ***** error ls_check (1, "inside", [1, 2]); ***** error ls_check (1, "foo", true); ***** error ls_check (1, NA, false); ***** test n = 100; x = linspace (-10, 10, n); [XX, YY] = meshgrid (x, x); circ2 = (XX.^2 + YY.^2 < 2^2); circ8 = (XX.^2 + YY.^2 < 8^2); phi = (XX.^2 + YY.^2 - 5^2); assert (ls_check (phi, "inside", circ8)); assert (ls_check (phi, "contain", circ2)); assert (ls_check (phi, "outside", ~circ8)); assert (~ls_check (phi, "inside", circ2)); assert (~ls_check (phi, "contain", circ8)); assert (~ls_check (phi, "outside", circ8)); 6 tests, 6 passed, 0 known failure, 0 skipped [inst/ls_hausdorff_dist.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_hausdorff_dist.m ***** error ls_hausdorff_dist (1) ***** error ls_hausdorff_dist (1, 2, 3, 4) ***** error ls_hausdorff_dist (1, 2, [3, 3]) ***** error ls_hausdorff_dist (1, 2, "foo") ***** test n = 50; x = linspace (-5, 5, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi1 = ls_genbasic (XX, YY, "sphere", [3, 0], 1); phi2 = ls_genbasic (XX, YY, "sphere", [-2, 0], 2); assert (ls_hausdorff_dist (phi1, phi2, h), 6, h); % Make sure that phi isn't a signed-distance fcn already. % ls_genbasic should return the same, but make it explicit. rSq = XX.^2 + YY.^2; d = ls_hausdorff_dist (rSq - 4^2, rSq - 2^2, h); assert (d, 2, h); dWrong = ls_hausdorff_dist (rSq - 4^2, rSq - 2^2, "sd"); assert (abs (d - dWrong) > 10 * h); dRight = ls_hausdorff_dist (sqrt (rSq) - 4, sqrt (rSq) - 2, "sd"); assert (dRight, d, h); ***** test n = 200; x = linspace (-5, 5, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phiA = ls_genbasic (XX, YY, "sphere", [0, 0], 4); phiInner = ls_genbasic (XX, YY, "sphere", [0, 0], 2); phiB = ls_setdiff (phiA, phiInner); d1 = ls_hausdorff_dist (phiA, phiB, h); d2 = ls_hausdorff_dist (phiB, phiA, h); assert (d1, d2); assert (d1, 2, 2 * h); dc = ls_hausdorff_dist (ls_complement (phiA), ... ls_complement (phiB), h); assert (dc, 4, 2 * h); sdA = ls_signed_distance (phiA, h); sdB = ls_signed_distance (phiB, h); sdDiff = norm (sdA(:) - sdB(:), inf); assert (abs (sdDiff - d1) > 10 * h); 6 tests, 6 passed, 0 known failure, 0 skipped [inst/fastmarching.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/fastmarching.m ***** error fastmarching () ***** error fastmarching (1, 2, 3, 4) ***** error [a, b] = fastmarching (1, 2) ***** error fastmarching ([1, 2], [1; 2]) ***** error fastmarching ([1, 2], [1; 2], [1, 2]) ***** error fastmarching ([NA, 1], [0, 5]); ***** test n = 600; x = linspace (0, 1, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); u0 = NA (n, n); u0(2 : end - 1, 2 : end - 1) = Inf; u0(1, 1) = 0; f = 1 + YY; u = fastmarching (u0, h * f); % Length of vertical side: integrate (1 + y, y, 0, x) vertLength = @(x) x/2 .* (x + 2); % Speed difference at top and bottom, gives where the % paths will meet on the bottom side. % solve (x * fBot = fTop + (1 - x) * fBot, x) fTop = mean (f(1, :)); fBot = mean (f(end, :)); xMeet = (fTop + fBot) / 2 / fBot; botRow = vertLength (1) + fBot * x; where = (x > xMeet); botRow(where) = vertLength (1) + 1 + fBot * (1 - x(where)); assert (u(1, :), x, sqrt (eps)); assert (u(:, 1), vertLength (x'), 1e-3); assert (u(:, end), 1 + vertLength (x'), 1e-3); assert (u(end, :), botRow, 1e-3); ***** test n = 1100; x = linspace (0, 1, n); h = x(2) - x(1); obst1 = round (0.5 / h); obst2 = round (0.75 / h); s1 = round (0.2 / h); s1val = 1; s2 = round (0.9 / h); s2val = -1; u0 = NA (n, 1); u0([obst1, obst2]) = Inf; u0([s1, s2]) = [s1val, s2val]; f = ones (size (u0)); g0 = NA (size (u0)); g0([s1, s2]) = [s1val, s2val]; [u, g] = fastmarching (u0, g0, f * h); gDesired = NA (size (u0)); gDesired(1 : obst1 - 1) = s1val; gDesired(obst2 + 1 : end) = s2val; assert (g, gDesired, sqrt (eps)); uDesired = NA (size (u0)); uDesired([obst1, obst2]) = Inf; uDesired(1 : obst1 - 1) = s1val + abs (s1 * h - x(1 : obst1 - 1)); uDesired(obst2 + 1 : end) = s2val + abs (s2 * h - x(obst2 + 1 : end)); assert (u, uDesired, 1e-3); ***** test assert (fastmarching ([], []), []); ***** test n = 42; r = 1; R = 2; x = linspace (-R, R, n); h = x(2) - x(1); [XX, YY, ZZ] = ndgrid (x); RR = sqrt (XX.^2 + YY.^2 + ZZ.^2); PPhi = NA (size (XX)); for i = 1 : numel (PPhi) pt = [XX(i), YY(i), ZZ(i)]; PPhi(i) = acos (dot (pt, [0, 0, 1]) / norm (pt)); endfor initial = (RR < r); u0 = NA (size (XX)); u0(initial) = 0; g0 = NA (size (XX)); g0(initial) = PPhi(initial); f = ones (size (u0)); [u, g] = fastmarching (u0, g0, h * f); assert (u(~initial), RR(~initial) - r, 1e-1); assert (g(~initial), PPhi(~initial), 2e-1); ***** function [dx, dy] = gradient (fcn, h) ext = NA (size (fcn) + 2); ext(2 : end - 1, 2 : end - 1) = fcn; ext(:, 1) = 2 * ext(:, 2) - ext(:, 3); ext(:, end) = 2 * ext(:, end - 1) - ext(:, end - 2); ext(1, :) = 2 * ext(2, :) - ext(3, :); ext(end, :) = 2 * ext(end - 1, :) - ext(end - 2, :); dx = (ext(2 : end - 1, 3 : end) - ext(2 : end - 1, 1 : end - 2)) / (2 * h); dy = (ext(3 : end, 2 : end - 1) - ext(1 : end - 2, 2 : end - 1)) / (2 * h); ***** endfunction ***** test n = 1000; x = linspace (-2, 2, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi0 = 2 * XX.^2 + 0.4 * YY.^2 - 1; initial = (phi0 < 0); %contour (XX, YY, phi0, [0, 0], "r"); f = ones (size (XX)); u0 = NA (size (XX)); u0(initial) = 0; g0 = NA (size (XX)); g0(initial) = sin (atan2 (YY(initial), XX(initial))); [u, g] = fastmarching (u0, g0, h * f); [dxu, dyu] = gradient (u, h); [dxg, dyg] = gradient (g, h); % We only verify the mean error here, since there tend % to be lower-dimensional lines on which the error is % large while it is very low otherwise. err = abs (dxu .* dxg + dyu .* dyg); assert (mean (err(initial)), 0, 1e-3); ***** test u0 = [1.257221, NA, NA; Inf, 0.275128, 0.433001]; f = [NA, 0.85714, 0.66667; NA, NA, NA]; u = fastmarching (u0, f); warning: increased distance in fast marching 1.121446 to 1.131670 warning: called from fastmarching at line 110 column 19 __test__ at line 5 column 5 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 230 column 31 ***** test u0 = [0, NA; Inf, 2]; f = ones (size (u0)); u = fastmarching (u0, f); assert (u(1, 2), 1, sqrt (eps)); warning: found too far alive point in fast marching, d = -8.000000 warning: called from fastmarching at line 110 column 19 __test__ at line 5 column 5 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 230 column 31 warning: found too far alive point in fast marching, d = -8.000000 warning: called from fastmarching at line 110 column 19 __test__ at line 5 column 5 test at line 677 column 11 /tmp/tmp.efrTQvNZND at line 230 column 31 ***** test u0 = [0, NA, NA, NA, 0.1; ... Inf, Inf, Inf, Inf, Inf; ... 0.1, NA, NA, NA, 0]; f = ones (size (u0)); u = fastmarching (u0, f); uExpected = [0, 1, 2, 1.1, 0.1; ... Inf, Inf, Inf, Inf, Inf; ... 0.1, 1.1, 2, 1, 0]; assert (u, uExpected, sqrt (eps)); ***** xtest ns = [101, 201, 501, 1001, 2001]; realNs = NA (size (ns)); times = NA (size (ns)); for i = 1 : length (ns) nMid = (ns(i) + 1) / 2; assert (nMid, round (nMid)); u0 = NA (ns(i), ns(i)); u0(nMid, nMid) = 0; f = ones (size (u0)); realNs(i) = numel (u0); old = cputime (); u = fastmarching (u0, f); new = cputime (); times(i) = new - old; printf ("n = %4d: t = %6.3f s\n", ns(i), times(i)); endfor nLogN = realNs .* log (realNs); p = polyfit (log (realNs), log (times), 1); pLogN = polyfit (log(nLogN), log (times), 1); printf ("Exponents:\n O(n): %4.2f\n O(n log n): %4.2f\n", ... p(1), pLogN(1)); assert (p(1), 1, 1e-1); assert (pLogN(1), 1, 1e-1); n = 101: t = 0.018 s n = 201: t = 0.105 s n = 501: t = 0.697 s n = 1001: t = 3.111 s n = 2001: t = 14.400 s Exponents: O(n): 1.10 O(n log n): 1.02 !!!!! known failure ASSERT errors for: assert (p (1),1,1e-1) Location | Observed | Expected | Reason () 1.1026 1 Abs err 0.10257 exceeds tol 0.1 by 0.003 ***** test T = 1.6; timeSteps = 10000; L = 2; gridSteps = 10000; eps = 1e-4; floorValue = -1/2; tol = 7e-2; t = linspace (0, T, timeSteps); dt = t(2) - t(1); x = linspace (-L/2, L/2, gridSteps); h = x(2) - x(1); F = sqrt (abs (x)); phi0 = NA (size (x)); phi0(1 : end/4) = floorValue; phi0(3*end/4 : end) = floorValue; phi0 = fastmarching (phi0, h ./ F); % Plot the speed field and initial data. %{ figure (); plot (x, F, "r", x, phi0, "k"); legend ("F", "\\phi_0"); title ("Speed Field and Initial Data"); ax = [-L/2, L/2, -1, 1]; axis (ax); %} % Create the Laplacian as matrix. We assume homogeneous Neumann boundary % conditions so that the initial data can be chosen as we like. Delta = spdiags (repmat ([1, -2, 1], gridSteps, 1), [-1, 0, 1], ... gridSteps, gridSteps); Delta(1, 1) += Delta(1, 2); Delta(end, end) += Delta(end - 1, end); Delta /= h^2; % Perform the calculation. The Laplacian is done implicitly, the % non-linear term explicitly: % % phi+ - phi0 = dt (eps Delta phi+ - F |grad phi0|) % => (I - dt eps Delta) phi+ = phi0 - F |grad phi0| %figure (); phi = phi0'; M = eye (gridSteps) - dt * eps * Delta; for tInd = 2 : timeSteps % Calculate derivatives as symmetric differences, and zero on the % boundary. Since the data is flat there, this is correct. d = NA (size (phi)); low = 1 : gridSteps - 2; mid = 2 : gridSteps - 1; high = 3 : gridSteps; d(mid) = (phi(high) - phi(low)) / (2 * h); d([1, end]) = 0; gradNorm = abs (d); % Do the solve. phi = M \ (phi - dt * F' .* gradNorm); phiEx = max (phi0 - t(tInd), floorValue); assert (phi, phiEx', tol); % Show solution as animation in real time. %{ if (mod (tInd, 100) == 0) plot (x, phi, "r", x, phiEx, "k"); legend ("Approximate", "Exact"); axis (ax); title (sprintf ("t = %.2f", t(tInd))); drawnow (); %pause (0.1); endif %} endfor ***** demo n = 100; x = linspace (-1, 1, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); u0 = NA (size (XX)); u0(sqrt (XX.^2 + YY.^2) < 0.5) = Inf; u0(end, :) = 0; f = 3 + XX; g0 = NA (size (XX)); g0(end, :) = x; [u, g] = fastmarching (u0, g0, h * f); figure (); subplot (2, 2, 1); imagesc (f); colorbar (); title ("Speed Field"); subplot (2, 2, 2); imagesc (u0); colorbar (); title ("Initial Distances"); subplot (2, 2, 3); imagesc (u); colorbar (); title ("Distance u"); subplot (2, 2, 4); imagesc (g); colorbar (); title ("Extended Function g"); ***** demo pkgs = pkg ("list"); file = false; for i = 1 : length (pkgs) if (strcmp (pkgs{i}.name, "level-set")) file = fullfile (pkgs{i}.dir, "maze.png"); endif endfor if (!file) error ("could not locate example image file"); endif img = double (imread (file)) / 255; % Red is the start area, white (not black) the accessible domain. start = (img(:, :, 1) > img(:, :, 2) + img(:, :, 3)); domain = (img(:, :, 2) + img(:, :, 3) > 1.0) | start; u0 = NA (size (domain)); u0(start) = 0; u0(~domain) = Inf; f = ones (size (u0)); u = fastmarching (u0, f); u = u / max (u(isfinite (u))); % Format result as image. walls = isinf (u); notReached = isna (u); ur = u; ug = u; ub = u; ur(notReached) = 1; ug(notReached) = 0; ub(notReached) = 0; ur(walls) = 0; ug(walls) = 0; ub(walls) = 1; ur(start) = 1; ug(start) = 1; ub(start) = 0; u = NA (size (u, 1), size (u, 2), 3); u(:, :, 1) = ur; u(:, :, 2) = ug; u(:, :, 3) = ub; figure (); imshow (u); title ("Solved Maze. Blue: Walls, Red: Unreachable, Yellow: Start."); 16 tests, 15 passed, 1 known failure, 0 skipped [inst/ls_enforce_speed.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_enforce_speed.m ***** error ls_enforce_speed (1, 2) ***** error ls_enforce_speed (1, 2, 3, 4) ***** error ls_enforce_speed (1, "inside", [1, 2]); ***** error ls_enforce_speed (1, "foo", true); ***** error ls_enforce_speed (1, NA, false); ***** function checkCircleRadius (XX, YY, h, phi, r) phiCorrect = XX.^2 + YY.^2 - r^2; sd1 = ls_signed_distance (phi, h); sd2 = ls_signed_distance (phiCorrect, h); assert (sd1, sd2, h); ***** endfunction ***** test n = 100; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = XX.^2 + YY.^2 - 3^2; F = ones (size (XX)); whereContain = (XX.^2 + YY.^2 < 5^2); F = ls_enforce_speed (F, "contain", whereContain); whereInside = (XX.^2 + YY.^2 < 8^2); F = ls_enforce_speed (F, "inside", whereInside); dists = ls_solve_stationary (phi, F, h); phi2 = ls_extract_solution (10, dists, phi, F); assert (ls_check (phi2, "contain", whereContain)); assert (ls_check (phi2, "inside", whereInside)); checkCircleRadius (XX, YY, h, phi2, 8); phi = XX.^2 + YY.^2 - 8^2; F = -ones (size (XX)); whereContain = (XX.^2 + YY.^2 < 5^2); F = ls_enforce_speed (F, "contain", whereContain); whereOutside = (XX.^2 + YY.^2 >= 7^2); F = ls_enforce_speed (F, "outside", whereOutside); dists = ls_solve_stationary (phi, F, h); phi2 = ls_extract_solution (10, dists, phi, F); assert (ls_check (phi2, "contain", whereContain)); assert (ls_check (phi2, "outside", whereOutside)); checkCircleRadius (XX, YY, h, phi2, 5); ***** demo n = 100; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi = XX.^2 + YY.^2 - 8^2; F = -ones (size (XX)); F = ls_enforce_speed (F, "outside", XX.^2 + YY.^2 >= 7^2); F = ls_enforce_speed (F, "contain", XX.^2 + YY.^2 < 3^2); times = linspace (1, 6, 40); ls_animate_evolution (phi, F, h, times, 0.05); phi = XX.^2 + YY.^2 - 3^2; F = ones (size (XX)); F = ls_enforce_speed (F, "inside", XX.^2 + YY.^2 < 8^2); F = ls_enforce_speed (F, "contain", XX.^2 + YY.^2 < 5^2); ls_animate_evolution (phi, F, h, times, 0.05); 6 tests, 6 passed, 0 known failure, 0 skipped [inst/ls_init_narrowband.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_init_narrowband.m ***** error ls_init_narrowband () ***** error ls_init_narrowband (1, 2, 3) ***** test assert (ls_init_narrowband ([]), []); ***** test n = 10; x = linspace (-2, 2, n); h = x(2) - x(1); phi = abs (x) - 1; d = ls_init_narrowband (phi, h); where = ~isna (d); assert (d(where), phi(where), sqrt (eps)); ***** test n = 50; x = linspace (-2, 2, n); h = x(2) - x(1); [XX, YY, ZZ] = ndgrid (x); RRsq = XX.^2 + YY.^2 + ZZ.^2; phi = RRsq - 1; d = ls_init_narrowband (phi, h); where = ~isna (d); assert (d(where), sqrt (RRsq(where)) - 1, h / 3); ***** test tol = sqrt (eps); assert (ls_init_narrowband ([Inf, -Inf, Inf]), [0.5, -0.5, 0.5], tol); assert (ls_init_narrowband ([Inf, -1, Inf]), [1, 0, 1], tol); %assert (ls_init_narrowband ([1, -Inf, 1]), [0, 1, 0], tol); ***** function dh = distToSegment (x, a, b) dir = b - a; dir /= norm (dir); proj = dot (x - a, dir); if (proj < 0) dh = norm (x - a); elseif (proj > 1) dh = norm (x - b); else dh = norm (x - (a + proj * dir)); endif ***** endfunction ***** function dh = distToLine (x, c) assert (c(1, 1), 0); dh = Inf; for i = 2 : size (c, 2) - 1 dh = min (dh, distToSegment (x, c(:, i), c(:, i + 1))); endfor ***** endfunction ***** function dh = distOfContoursAsym (c1, c2) dh = 0; for i = 2 : size (c1, 2) dh = max (dh, distToLine (c1(:, i), c2)); endfor ***** endfunction ***** function dh = distOfContours (c1, c2) dh = max (distOfContoursAsym (c1, c2), distOfContoursAsym (c2, c1)); ***** endfunction ***** test phis = ls_get_tests (); printf ("Comparing contours for %d cases...\n", length (phis)); for i = 1 : length (phis) d = ls_init_narrowband (phis{i}); c1 = contourc (d, [0, 0]); if (size (c1, 2) > 0) c2 = contourc (phis{i}, [0, 0]); dh = distOfContours (c1, c2); printf ("i = %d: dist = %f\n", i, dh); if (isfinite (dh)) assert (dh, 0, 1e-1); endif endif endfor Comparing contours for 6 cases... i = 1: dist = 0.060660 i = 2: dist = Inf i = 4: dist = 0.039039 i = 5: dist = 0.085786 i = 6: dist = 0.085786 7 tests, 7 passed, 0 known failure, 0 skipped [inst/ls_disjoint.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_disjoint.m ***** error ls_disjoint () ***** error ls_disjoint (1, -2, [1, 2]) ***** test assert (ls_disjoint ([-1, 0, 1], [0, 0, 0], [1, 0, -1])); assert (~ls_disjoint ([Inf, -Inf, 1], [-1, -1, 1])); assert (~ls_disjoint ([-1, -1, 1], [0, 0, 0], [1, -1, -1])); ***** test n = 50; x = linspace (-10, 10, n); [XX, YY] = meshgrid (x, x); phi1 = (XX - 2).^2 + (YY - 2).^2 - 2^2; phi2 = (XX + 2).^2 + (YY + 2).^2 - 2^2; phi3 = XX.^2 + YY.^2 - 2^2; assert (ls_disjoint (phi1, phi2)); assert (~ls_disjoint (phi1, phi3)); assert (~ls_disjoint (phi2, phi3)); assert (~ls_disjoint (phi1, phi2, phi3)); 4 tests, 4 passed, 0 known failure, 0 skipped [inst/so_step_armijo.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/so_step_armijo.m ***** function s = updateState (phi, data) inside = ls_inside (phi); vol = data.g.h * length (find (inside)); cost = 1 / vol; % Throw if the volume is too large. This is used % to check the error handling code. if (vol > 15) error ("volume too large"); endif s = struct ("phi", phi, "cost", cost); ***** endfunction ***** shared n, phi, baseData, d, f, dJ n = 100; x = linspace (-10, 10, n); h = x(2) - x(1); a = 0; b = 5; phi = ls_genbasic (x, "box", a, b); baseData = struct (); baseData.p = so_init_params (false); baseData.g = struct ("x", x, "h", h); baseData.cb = struct ("update_state", @updateState); baseData.s = updateState (phi, baseData); baseData.s.phi = phi; f = ones (size (phi)); d = ls_solve_stationary (phi, f, h); curVol = b - a; dJ = -2 / curVol^2; ***** error so_step_armijo (1, 2, 3, 4) ***** error so_step_armijo (1, 2, 3, 4, 5, 6) ***** error so_step_armijo ([1, 1], 2, 3, 4, struct ()) ***** error so_step_armijo (1, 2, 3, [4, 4], struct ()) ***** error so_step_armijo (1, 2, 3, 4, 5) ***** error so_step_armijo (1, d, f, 4, baseData) ***** error so_step_armijo (1, 2, f, dJ, baseData) ***** error so_step_armijo (1, 2, 3, dJ, baseData) ***** error data = baseData; data.p.lineSearch.relaxation = 0; so_step_armijo (1, d, f, dJ, data); ***** error data = baseData; data.p.lineSearch.relaxation = 1; so_step_armijo (1, d, f, dJ, data); ***** error data = baseData; data.p.lineSearch.backtrack = 0; so_step_armijo (1, d, f, dJ, data); ***** error data = baseData; data.p.lineSearch.backtrack = 1; so_step_armijo (1, d, f, dJ, data); ***** error data = baseData; data.p.lineSearch.initial = 1; so_step_armijo (1, d, f, dJ, data); ***** error data = baseData; data.p.lineSearch.minStep = -1; so_step_armijo (1, d, f, dJ, data); ***** test data = baseData; data.p.lineSearch.minStep = 0; so_step_armijo (1, d, f, dJ, data); ***** test data = baseData; data.p.verbose = true; data.p.lineSearch.relaxation = 0.9; [~, t] = so_step_armijo (1, d, f, dJ, data); assert (t < 0.5); Armijo step 2.000000: cost = 0.110000 Armijo step 1.600000: cost = 0.120732 Armijo step 1.280000: cost = 0.133784 Armijo step 1.024000: cost = 0.141429 Armijo step 0.819200: cost = 0.150000 Armijo step 0.655360: cost = 0.159677 Armijo step 0.524288: cost = 0.165000 Armijo step 0.419430: cost = 0.170690 Armijo step 0.335544: cost = 0.176786 Armijo step 0.268435: cost = 0.183333 Armijo step 0.214748: cost = 0.183333 Armijo step 0.171799: cost = 0.183333 ***** test so_step_armijo (2, d, f, dJ, baseData); ***** error so_step_armijo (3, d, f, dJ, baseData); 18 tests, 18 passed, 0 known failure, 0 skipped [inst/so_replay_descent.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/so_replay_descent.m ***** error so_replay_descent (1); ***** error so_replay_descent (1, 2, 3, 4); ***** error so_replay_descent (1, 2, 0); ***** error so_replay_descent (1, 2, 1.5); ***** error so_replay_descent (1, 2, [2, 3]); ***** error so_replay_descent (struct (), 2); ***** error so_replay_descent ([2, 3], 2); ***** error <'fload' is not available> pkg unload -nodeps parallel; so_replay_descent ("foo", 2); ***** function x = compressionCheckStruct (s, data) x = struct ("weight", data.p.weight, "cost", s.cost); ***** endfunction ***** function checkCompression (s, data, field) assert (isfield (s, field)); assert (getfield (s, field), compressionCheckStruct (s, data)); ***** endfunction ***** function s = compressState (s, data) s.compressed = compressionCheckStruct (s, data); ***** endfunction ***** function s = uncompressState (s, data) checkCompression (s, data, "compressed"); s.uncompressed = compressionCheckStruct (s, data); ***** endfunction ***** function log = initialised (data) log = data.log; log.mashUp = [data.s.a, data.s.b]; ***** endfunction ***** function log = beforeStep (k, data) log = data.log; log.mashUp = [log.mashUp, k, data.s.vol]; if (data.checkUncompression) checkCompression (data.s, data, "uncompressed"); endif ***** endfunction ***** function log = direction (k, f, dJ, data) log = data.log; log.mashUp = [log.mashUp, k, mean(f), sum(f), dJ, data.s.integ]; ***** endfunction ***** function log = afterStep (k, t, s, data) log = data.log; log.mashUp = [log.mashUp, k, t, s.a, s.b, s.cost, data.s.cost]; if (data.checkUncompression) checkCompression (s, data, "uncompressed"); endif ***** endfunction ***** function log = finished (data) log = data.log; log.mashUp = [log.mashUp, data.s.cost, log.steps, log.costs]; ***** endfunction ***** function data = getData () data = struct (); data.p = so_init_params (false); data.p.vol = 10; data.p.weight = 50; n = 100; x = linspace (-10, 10, n); h = x(2) - x(1); data.g = struct ("x", x, "h", h); data = so_example_problem (data); data.handler = struct ("initialised", @initialised, ... "before_step", @beforeStep, ... "direction", @direction, ... "after_step", @afterStep, ... "finished", @finished); % Unless explicitly set, do not expect compressed states. data.checkUncompression = false; data.phi0 = ls_genbasic (data.g.x, "box", -3, 5); ***** endfunction ***** function data = getDataForCompression (uncompress) data = getData (); data.compress = struct (); data.compress.save = struct ("state", @compressState); data.compress.load = struct ("state", @uncompressState); data.checkUncompression = uncompress; ***** endfunction ***** function compareResults (s1, l1, s2, l2) assert (s2, s1); assert (l2.mashUp, l1.mashUp); ***** endfunction ***** xtest pkg load parallel; nSteps = 10; baseData = getData (); f = tempname (); data = so_save_descent (f, struct (), baseData); [s1, l1] = so_run_descent (nSteps, data.phi0, data); [s2, l2] = so_replay_descent (f, @getData); unlink (f); compareResults (s1, l1, s2, l2); f = tmpfile (); data = so_save_descent (f, struct (), baseData); [s1, l1] = so_run_descent (nSteps, data.phi0, data); frewind (f); [s2, l2] = so_replay_descent (f, @getData); fclose (f); compareResults (s1, l1, s2, l2); [pr, pw] = pipe (); data = so_save_descent (pw, struct (), baseData); [s1, l1] = so_run_descent (nSteps, data.phi0, data); fclose (pw); [s2, l2] = so_replay_descent (pr, @getData); fclose (pr); compareResults (s1, l1, s2, l2); !!!!! known failure structure has no member 'openFile' ***** xtest pkg load parallel; baseData = getData (); [pr, pw] = pipe (); data = so_save_descent (pw, struct (), baseData); data.cb.check_stop = @() true; [s1, l1] = so_run_descent (1, data.phi0, data); fclose (pw); assert (l1.steps, 0); [s2, l2] = so_replay_descent (pr, @getData); fclose (pr); compareResults (s1, l1, s2, l2); baseData = getData (); [pr, pw] = pipe (); data = so_save_descent (pw, struct (), baseData); [s1, l1] = so_run_descent (1, data.phi0, data); fclose (pw); [s2, l2] = so_replay_descent (pr, @getData, 1); fclose (pr); compareResults (s1, l1, s2, l2); !!!!! known failure structure has no member 'openFile' ***** xtest pkg load parallel; nStepsShort = 5; nStepsLong = 10; baseData = getData (); [prl, pwl] = pipe (); data = so_save_descent (pwl, struct (), baseData); [sl, ll] = so_run_descent (nStepsLong, data.phi0, data); fclose (pwl); baseData = getData (); [prs, pws] = pipe (); data = so_save_descent (pws, struct (), baseData); [ss, ls] = so_run_descent (nStepsShort, data.phi0, data); fclose (pws); [s, l] = so_replay_descent (prl, @getData, nStepsShort); fclose (prl); compareResults (s, l, ss, ls); [s, l] = so_replay_descent (prs, @getData, nStepsLong); fclose (prs); compareResults (s, l, sl, ll); !!!!! known failure structure has no member 'openFile' ***** xtest pkg load parallel; nSteps = 10; [pr, pw] = pipe (); data = getDataForCompression (false); data = so_save_descent (pw, struct (), data); [s1, l1] = so_run_descent (nSteps, data.phi0, data); fclose (pw); init = @(header) getDataForCompression (true); [s2, l2] = so_replay_descent (pr, init); fclose (pr); % No result comparison here, since the compress / uncompress % functions introduced changes to the state structs. !!!!! known failure structure has no member 'openFile' ***** demo pkg load parallel; data = struct (); data.p = so_init_params (false); data.p.vol = 10; data.p.weight = 50; n = 100; x = linspace (-10, 10, n); h = x(2) - x(1); data.g = struct ("x", x, "h", h); data = so_example_problem (data); phi0 = ls_genbasic (data.g.x, "box", -3, 7); printf ("Computing descent...\n"); [pr, pw] = pipe (); d = data; d.handler = struct (); d = so_save_descent (pw, struct (), d); s = so_run_descent (5, phi0, d); fclose (pw); printf ("Final cost: %.6d\n", s.cost); printf ("\nNow replaying...\n"); d = data; d.p.verbose = true; init = @() d; s = so_replay_descent (pr, init); fclose (pr); printf ("Final cost: %.6d\n", s.cost); warning: test: file /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/so_replay_descent.m leaked file descriptors 12 tests, 8 passed, 4 known failures, 0 skipped [inst/ls_equal.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_equal.m ***** error ls_equal (1) ***** error ls_equal (1, 2, 3) ***** error ls_equal (1, [1, 2]) ***** test assert (ls_equal ([Inf, 0, -2, -Inf, eps], ... [1, 0, -Inf, -eps, 1])); assert (ls_equal ([1, 0; -1, 0], [Inf, 0; -5, 0])); assert (!ls_equal ([1, -1; 0, 0], [1, 0; 0, 0])); ***** test if (exist ("signbit") == 5) assert (ls_equal ([0, -0], [1, -1])); else warning ("'signbit' function not available, skipping test."); endif 5 tests, 5 passed, 0 known failure, 0 skipped [inst/ls_intersect.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_intersect.m ***** error ls_intersect () ***** error ls_intersect (1, -2, [1, 2]) ***** test n = 50; x = linspace (-10, 10, n); [XX, YY] = meshgrid (x, x); phi1 = (XX - 2).^2 + (YY - 2).^2 - 2^2; phi2 = (XX + 2).^2 + (YY + 2).^2 - 2^2; phi3 = XX.^2 + YY.^2 - 2^2; assert (ls_isempty (ls_intersect (phi1, phi2))); assert (ls_intersect (phi3), phi3); phi = ls_intersect (phi1, phi3); assert (~ls_isempty (phi)); assert (ls_issubset (phi, phi1) && ls_issubset (phi, phi3)); phi = ls_intersect (phi2, phi3); assert (~ls_isempty (phi)); assert (ls_issubset (phi, phi2) && ls_issubset (phi, phi3)); ***** demo n = 100; x = linspace (-7, 7, n); [XX, YY] = meshgrid (x, x); phi1 = (XX - 2 * cos (7/6 * pi)).^2 + (YY - 2 * sin (7/6 * pi)).^2 - 3^2; phi2 = (XX - 2 * cos (11/6 * pi)).^2 + (YY - 2 * sin (11/6 * pi)).^2 - 3^2; phi3 = XX.^2 + (YY - 2).^2 - 3^2; phi = ls_intersect (phi1, phi2, phi3); figure (); subplot (1, 2, 1); hold ("on"); contour (XX, YY, phi1, [0, 0], "k"); contour (XX, YY, phi2, [0, 0], "k"); contour (XX, YY, phi3, [0, 0], "k"); hold ("off"); axis ("equal"); subplot (1, 2, 2); hold ("on"); imagesc (x, x, phi); set (gca (), "ydir", "normal"); ls_sign_colourmap (); contour (XX, YY, phi, [0, 0], "k"); hold ("off"); axis ("equal"); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/ls_setdiff.m] >>>>> /build/octave-level-set-kLIsmh/octave-level-set-0.3.1-git.2019.04.13/inst/ls_setdiff.m ***** error ls_setdiff (1) ***** error ls_setdiff (1, 2, 3) ***** error ls_setdiff (1, [1, 2]) ***** test assert (ls_equal (ls_setdiff ([-1, -1, 1], [1, -1, -1]), [-1, 1, 1])); n = 50; x = linspace (-10, 10, n); h = x(2) - x(1); [XX, YY] = meshgrid (x, x); phi1 = XX.^2 + YY.^2 - 8^2; phi2 = XX.^2 + YY.^2 - 5^2; phi = ls_setdiff (phi1, phi2); assert (ls_issubset (phi, phi1)); assert (ls_disjoint (phi, phi2)); phi = ls_setdiff (phi2, phi1); assert (ls_isempty (phi)); ***** demo n = 100; x = linspace (-7, 7, n); [XX, YY] = meshgrid (x, x); phi1 = (XX - 2).^2 + YY.^2 - 3^2; phi2 = (XX + 2).^2 + YY.^2 - 3^2; phi = ls_setdiff (phi1, phi2); figure (); subplot (1, 2, 1); hold ("on"); contour (XX, YY, phi1, [0, 0], "k"); contour (XX, YY, phi2, [0, 0], "k"); hold ("off"); axis ("equal"); subplot (1, 2, 2); hold ("on"); imagesc (x, x, phi); set (gca (), "ydir", "normal"); ls_sign_colourmap (); contour (XX, YY, phi, [0, 0], "k"); hold ("off"); axis ("equal"); ***** demo n = 100; x = linspace (-7, 7, n); [XX, YY] = meshgrid (x, x); phi1 = XX.^2 + YY.^2 - 6^2; phi2 = XX.^2 + YY.^2 - 3^2; phi = ls_setdiff (phi1, phi2); figure (); subplot (1, 2, 1); hold ("on"); contour (XX, YY, phi1, [0, 0], "k"); contour (XX, YY, phi2, [0, 0], "k"); hold ("off"); axis ("equal"); subplot (1, 2, 2); hold ("on"); imagesc (x, x, phi); set (gca (), "ydir", "normal"); ls_sign_colourmap (); contour (XX, YY, phi, [0, 0], "k"); hold ("off"); axis ("equal"); 4 tests, 4 passed, 0 known failure, 0 skipped Checking C++ files ... Summary: 258 tests, 253 passed, 5 known failures, 0 skipped dh_installdocs -a -O--buildsystem=octave dh_installchangelogs -a -O--buildsystem=octave dh_octave_changelogs -a -O--buildsystem=octave dh_octave_examples -a -O--buildsystem=octave dh_installsystemduser -a -O--buildsystem=octave dh_perl -a -O--buildsystem=octave dh_link -a -O--buildsystem=octave dh_strip_nondeterminism -a -O--buildsystem=octave dh_compress -a -O--buildsystem=octave dh_fixperms -a -O--buildsystem=octave dh_missing -a -O--buildsystem=octave dh_dwz -a -a -O--buildsystem=octave dh_strip -a -a -O--buildsystem=octave dh_makeshlibs -a -a -O--buildsystem=octave dh_shlibdeps -a -a -O--buildsystem=octave dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/octave-level-set/usr/lib/x86_64-linux-gnu/octave/packages/level-set-0.3.1/x86_64-pc-linux-gnu-api-v55/__levelset_geomBoundary.oct debian/octave-level-set/usr/lib/x86_64-linux-gnu/octave/packages/level-set-0.3.1/x86_64-pc-linux-gnu-api-v55/__levelset_nbFromGeom.oct debian/octave-level-set/usr/lib/x86_64-linux-gnu/octave/packages/level-set-0.3.1/x86_64-pc-linux-gnu-api-v55/__levelset_upwindGrad.oct debian/octave-level-set/usr/lib/x86_64-linux-gnu/octave/packages/level-set-0.3.1/x86_64-pc-linux-gnu-api-v55/__levelset_internal_init_narrowband.oct debian/octave-level-set/usr/lib/x86_64-linux-gnu/octave/packages/level-set-0.3.1/x86_64-pc-linux-gnu-api-v55/__levelset_internal_fastmarching.oct debian/octave-level-set/usr/lib/x86_64-linux-gnu/octave/packages/level-set-0.3.1/x86_64-pc-linux-gnu-api-v55/__levelset_internal_mesh.oct debian/octave-level-set/usr/lib/x86_64-linux-gnu/octave/packages/level-set-0.3.1/x86_64-pc-linux-gnu-api-v55/__levelset_geomElements.oct debian/octave-level-set/usr/lib/x86_64-linux-gnu/octave/packages/level-set-0.3.1/x86_64-pc-linux-gnu-api-v55/__levelset_geomGamma.oct were not linked against libpthread.so.0 (they use none of the library's symbols) dh_octave_substvar -a -O--buildsystem=octave dh_installdeb -a -O--buildsystem=octave dh_gencontrol -a -O--buildsystem=octave dpkg-gencontrol: warning: package octave-level-set: substitution variable ${octave:Upstream-Description} unused, but is defined dpkg-gencontrol: warning: package octave-level-set: substitution variable ${octave:Upstream-Description} unused, but is defined dh_md5sums -a -O--buildsystem=octave dh_builddeb -a -O--buildsystem=octave dpkg-deb: building package 'octave-level-set-dbgsym' in '../octave-level-set-dbgsym_0.3.1~git.2019.04.13-2_amd64.deb'. dpkg-deb: building package 'octave-level-set' in '../octave-level-set_0.3.1~git.2019.04.13-2_amd64.deb'. dpkg-genbuildinfo --build=any dpkg-genchanges --build=any >../octave-level-set_0.3.1~git.2019.04.13-2_amd64.changes dpkg-genchanges: info: binary-only arch-specific upload (source code and arch-indep packages not included) dpkg-source --after-build . dpkg-source: info: using options from octave-level-set-0.3.1-git.2019.04.13/debian/source/options: --extend-diff-ignore=src/config.log|src/config.status|src/Makefile|src/configure dpkg-buildpackage: info: binary-only upload (no source included) I: running special hook: sync-out /build/octave-level-set-kLIsmh /tmp/octave-level-set-0.3.1~git.2019.04.13-2p1ilkeny I: cleaning package lists and apt cache... W: deleting files in /tmp: oct-DNz3nb I: creating tarball... I: done I: removing tempdir /tmp/mmdebstrap.iCvK09QSQP... I: success in 931.4704 seconds md5: octave-level-set-dbgsym_0.3.1~git.2019.04.13-2_amd64.deb: OK md5: octave-level-set_0.3.1~git.2019.04.13-2_amd64.deb: OK sha1: octave-level-set-dbgsym_0.3.1~git.2019.04.13-2_amd64.deb: OK sha1: octave-level-set_0.3.1~git.2019.04.13-2_amd64.deb: OK sha256: octave-level-set-dbgsym_0.3.1~git.2019.04.13-2_amd64.deb: OK sha256: octave-level-set_0.3.1~git.2019.04.13-2_amd64.deb: OK Checksums: OK