Running as unit: rb-build-amd64_19-46115.service ==================================================================================== Fri Feb 21 14:17:21 UTC 2025 - running /srv/jenkins/bin/reproducible_build.sh (for job reproducible_builder_amd64_19) on jenkins, called using "ionos1-amd64 ionos15-amd64" as arguments. Fri Feb 21 14:17:21 UTC 2025 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-zdOZmW6n" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Fri Feb 21 14:17:21 UTC 2025 - checking /var/lib/jenkins/offline_nodes if ionos1-amd64.debian.net is marked as down. Fri Feb 21 14:17:21 UTC 2025 - checking via ssh if ionos1-amd64.debian.net is up. removed '/tmp/read-only-fs-test-4Ig5bM' Fri Feb 21 14:17:21 UTC 2025 - checking /var/lib/jenkins/offline_nodes if ionos15-amd64.debian.net is marked as down. Fri Feb 21 14:17:21 UTC 2025 - checking via ssh if ionos15-amd64.debian.net is up. removed '/tmp/read-only-fs-test-JqJQsT' ok, let's check if octave-symbolic is building anywhere yet… ok, octave-symbolic is not building anywhere… UPDATE 1 ============================================================================= Initialising reproducibly build of octave-symbolic in unstable on amd64 on jenkins now. 1st build will be done on ionos1-amd64.debian.net. 2nd build will be done on ionos15-amd64.debian.net. ============================================================================= Fri Feb 21 14:17:36 UTC 2025 I: starting to build octave-symbolic/unstable/amd64 on jenkins on '2025-02-21 14:17' Fri Feb 21 14:17:36 UTC 2025 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/amd64_19/46115/console.log 1740147456 amd64 unstable octave-symbolic Fri Feb 21 14:17:36 UTC 2025 I: Downloading source for unstable/octave-symbolic=3.2.1-3 --2025-02-21 14:17:36-- http://deb.debian.org/debian/pool/main/o/octave-symbolic/octave-symbolic_3.2.1-3.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2308 (2.3K) [text/prs.lines.tag] Saving to: ‘octave-symbolic_3.2.1-3.dsc’ 0K .. 100% 295M=0s 2025-02-21 14:17:36 (295 MB/s) - ‘octave-symbolic_3.2.1-3.dsc’ saved [2308/2308] --2025-02-21 14:17:36-- http://deb.debian.org/debian/pool/main/o/octave-symbolic/octave-symbolic_3.2.1-3.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2308 (2.3K) [text/prs.lines.tag] Saving to: ‘octave-symbolic_3.2.1-3.dsc’ 0K .. 100% 295M=0s 2025-02-21 14:17:36 (295 MB/s) - ‘octave-symbolic_3.2.1-3.dsc’ saved [2308/2308] Fri Feb 21 14:17:36 UTC 2025 I: octave-symbolic_3.2.1-3.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Format: 3.0 (quilt) Source: octave-symbolic Binary: octave-symbolic Architecture: all Version: 3.2.1-3 Maintainer: Debian Octave Group Uploaders: Sébastien Villemot , Rafael Laboissière Homepage: https://gnu-octave.github.io/packages/symbolic/ Standards-Version: 4.7.0 Vcs-Browser: https://salsa.debian.org/pkg-octave-team/octave-symbolic Vcs-Git: https://salsa.debian.org/pkg-octave-team/octave-symbolic.git Testsuite: autopkgtest-pkg-octave Build-Depends: debhelper-compat (= 13), debhelper (>= 12.8~), dh-sequence-octave, python3-packaging, python3-sympy Package-List: octave-symbolic deb math optional arch=all Checksums-Sha1: 27e1dbca58dd845ca4751b1b47a0c4192f076b5c 273021 octave-symbolic_3.2.1.orig.tar.gz cc0fbc5e0383ce08d951d955e91a1cea0e68f55a 6832 octave-symbolic_3.2.1-3.debian.tar.xz Checksums-Sha256: d1a6ef4d12c48fc4412ceec380f398a6cd5180e518c131ba12683e9eb8f75460 273021 octave-symbolic_3.2.1.orig.tar.gz 41b77e746a1f05cdf0e42f7cb3d8de7be0fcb50e30504511ef7545e6c4eec7fe 6832 octave-symbolic_3.2.1-3.debian.tar.xz Files: 02e0cb39d309a3a2eaf78cd85f178cf6 273021 octave-symbolic_3.2.1.orig.tar.gz f8897748f933001fa2b7e69163e06b12 6832 octave-symbolic_3.2.1-3.debian.tar.xz Dgit: abceebf8966ed54dddf2a491f9b55c283db87ae1 debian archive/debian/3.2.1-3 https://git.dgit.debian.org/octave-symbolic -----BEGIN PGP SIGNATURE----- iQJGBAEBCAAwFiEEP0ZDkUmP6HS9tdmPISSqGYN4XJAFAmcxKO8SHHJhZmFlbEBk ZWJpYW4ub3JnAAoJECEkqhmDeFyQbp0P/iXMVusYNLBGT49Z+ZfNSqH4WHMKREW0 UwK993OpvbfdwojuLj0nLsMfxOqR0Rj/7Cy29LEgap8h+pkNE4bO6x6yaHjvtl+Y xo53S1FpF1P0ZIAjwi714fH7SQKL4Bbv/MpYGAKWCmYQg6g8K5HdP2z6Zs+95/3d caHMcjNqT2Jp7IFgYxF6w1c5LI7vQsJChDpF/lx1Z/vXfkmA7fYCb7H2JDYXs+ls rXOe40O6Iz8tRk1N/hFuAmTc/nl0yv+NAXd/NlWdc4gr4yfEyA0RyVRBXF2im/FF tBUCRIrJfNNDUE+AvhYvTAN3wydfsoB94mDPnZJBlvsNTv1ZLMxiij7ZotsnXZUD VRuneqfsvsdy5R9WerXlcEGejn8X7FaPWD0vdr/Ob+SIhNJ1O0svsEJl+BemWFQX 7/h00c8QrveByqqLJXnGeEpwGUfU3TdQG8EoN1U6bbdkRE8kFm3mFAtfgshkodo+ XJKMZ0v9j+DbONZ8p14zk3N34HLP5+qImjUr3sBJyjDlauq8Hgj3GmfVRXZbC1IB XIIQnsg3vnRtTsJs9c59mqReSpOqkOOvUA0F+6nva6aNdUK6cvgiEsfTJFNyb6MZ L7a1ROmiujIEa0bCZ/vw3oZYPJovYx9Pfl4myWEQEuMfGGXQ/Fz+HIFgAQljlXfK 9C2MftvC66V4 =9gPh -----END PGP SIGNATURE----- Fri Feb 21 14:17:36 UTC 2025 I: Checking whether the package is not for us Fri Feb 21 14:17:36 UTC 2025 I: Starting 1st build on remote node ionos1-amd64.debian.net. Fri Feb 21 14:17:36 UTC 2025 I: Preparing to do remote build '1' on ionos1-amd64.debian.net. Fri Feb 21 14:17:36 UTC 2025 - checking /var/lib/jenkins/offline_nodes if ionos1-amd64.debian.net is marked as down. Fri Feb 21 14:17:36 UTC 2025 - checking via ssh if ionos1-amd64.debian.net is up. removed '/tmp/read-only-fs-test-HUyhft' ==================================================================================== Fri Feb 21 14:17:38 UTC 2025 - running /srv/jenkins/bin/reproducible_build.sh (for job /srv/jenkins/bin/reproducible_build.sh) on ionos1-amd64, called using "1 octave-symbolic unstable /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS 3.2.1-3" as arguments. Fri Feb 21 14:17:38 UTC 2025 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-lz4cPOZE" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Fri Feb 21 14:17:38 UTC 2025 I: Downloading source for unstable/octave-symbolic=3.2.1-3 Reading package lists... NOTICE: 'octave-symbolic' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/pkg-octave-team/octave-symbolic.git Please use: git clone https://salsa.debian.org/pkg-octave-team/octave-symbolic.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 282 kB of source archives. Get:1 http://deb.debian.org/debian unstable/main octave-symbolic 3.2.1-3 (dsc) [2308 B] Get:2 http://deb.debian.org/debian unstable/main octave-symbolic 3.2.1-3 (tar) [273 kB] Get:3 http://deb.debian.org/debian unstable/main octave-symbolic 3.2.1-3 (diff) [6832 B] Fetched 282 kB in 0s (5519 kB/s) Download complete and in download only mode Reading package lists... NOTICE: 'octave-symbolic' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/pkg-octave-team/octave-symbolic.git Please use: git clone https://salsa.debian.org/pkg-octave-team/octave-symbolic.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 282 kB of source archives. Get:1 http://deb.debian.org/debian unstable/main octave-symbolic 3.2.1-3 (dsc) [2308 B] Get:2 http://deb.debian.org/debian unstable/main octave-symbolic 3.2.1-3 (tar) [273 kB] Get:3 http://deb.debian.org/debian unstable/main octave-symbolic 3.2.1-3 (diff) [6832 B] Fetched 282 kB in 0s (5519 kB/s) Download complete and in download only mode ============================================================================= Building octave-symbolic in unstable on amd64 on ionos1-amd64 now. Date: Fri Feb 21 14:17:38 UTC 2025 Date UTC: Fri Feb 21 14:17:38 UTC 2025 ============================================================================= W: /root/.pbuilderrc does not exist I: Logging to b1/build.log I: pbuilder: network access will be disabled during build I: Current time: Fri Feb 21 02:17:38 -12 2025 I: pbuilder-time-stamp: 1740147458 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [octave-symbolic_3.2.1-3.dsc] I: copying [./octave-symbolic_3.2.1.orig.tar.gz] I: copying [./octave-symbolic_3.2.1-3.debian.tar.xz] I: Extracting source dpkg-source: warning: cannot verify inline signature for ./octave-symbolic_3.2.1-3.dsc: unsupported subcommand dpkg-source: info: extracting octave-symbolic in octave-symbolic-3.2.1 dpkg-source: info: unpacking octave-symbolic_3.2.1.orig.tar.gz dpkg-source: info: unpacking octave-symbolic_3.2.1-3.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying vpa-xtest.patch dpkg-source: info: applying fix-intersect-unit-test.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/1183969/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='amd64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='amd64' IFS=' ' INVOCATION_ID='1ab59e4cb5b44f5ba199297ff251076a' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='1183969' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/pbuilderrc_ZhGU --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b1 --logfile b1/build.log octave-symbolic_3.2.1-3.dsc' SUDO_GID='110' SUDO_UID='105' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://46.16.76.132:3128' I: uname -a Linux ionos1-amd64 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin I: user script /srv/workspace/pbuilder/1183969/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), debhelper (>= 12.8~), dh-sequence-octave, python3-packaging, python3-sympy dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19798 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on debhelper (>= 12.8~); however: Package debhelper is not installed. pbuilder-satisfydepends-dummy depends on dh-sequence-octave; however: Package dh-sequence-octave is not installed. pbuilder-satisfydepends-dummy depends on python3-packaging; however: Package python3-packaging is not installed. pbuilder-satisfydepends-dummy depends on python3-sympy; however: Package python3-sympy is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: aglfn{a} appstream{a} autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} ca-certificates{a} cme{a} comerr-dev{a} debhelper{a} dh-autoreconf{a} dh-octave{a} dh-octave-autopkgtest{a} dh-strip-nondeterminism{a} diffstat{a} dwz{a} file{a} fontconfig{a} fontconfig-config{a} fonts-dejavu-core{a} fonts-dejavu-mono{a} fonts-freefont-otf{a} gettext{a} gettext-base{a} gfortran{a} gfortran-14{a} gfortran-14-x86-64-linux-gnu{a} gfortran-x86-64-linux-gnu{a} gnuplot-data{a} gnuplot-nox{a} gpg{a} gpgconf{a} groff-base{a} hdf5-helpers{a} intltool-debian{a} iso-codes{a} krb5-multidev{a} libabsl20230802{a} libaec-dev{a} libaec0{a} libalgorithm-c3-perl{a} libaliased-perl{a} libamd3{a} libaom3{a} libapp-cmd-perl{a} libappstream5{a} libapt-pkg-perl{a} libarchive-zip-perl{a} libarpack2t64{a} libarray-intspan-perl{a} libasound2-data{a} libasound2t64{a} libassuan9{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libavif16{a} libb-hooks-endofscope-perl{a} libb-hooks-op-check-perl{a} libb2-1{a} libberkeleydb-perl{a} libblas-dev{a} libblas3{a} libboolean-perl{a} libbrotli-dev{a} libbrotli1{a} libcairo2{a} libcamd3{a} libcapture-tiny-perl{a} libcarp-assert-more-perl{a} libccolamd3{a} libcgi-pm-perl{a} libcholmod5{a} libclass-c3-perl{a} libclass-data-inheritable-perl{a} libclass-inspector-perl{a} libclass-load-perl{a} libclass-method-modifiers-perl{a} libclass-xsaccessor-perl{a} libclone-choose-perl{a} libclone-perl{a} libcolamd3{a} libcom-err2{a} libconfig-model-backend-yaml-perl{a} libconfig-model-dpkg-perl{a} libconfig-model-perl{a} libconfig-tiny-perl{a} libconst-fast-perl{a} libconvert-binhex-perl{a} libcpanel-json-xs-perl{a} libcups2t64{a} libcurl3t64-gnutls{a} libcurl4-openssl-dev{a} libcurl4t64{a} libcxsparse4{a} libdata-dpath-perl{a} libdata-messagepack-perl{a} libdata-optlist-perl{a} libdata-section-perl{a} libdata-validate-domain-perl{a} libdata-validate-ip-perl{a} libdata-validate-uri-perl{a} libdatrie1{a} libdav1d7{a} libdbus-1-3{a} libde265-0{a} libdebhelper-perl{a} libdeflate0{a} libdevel-callchecker-perl{a} libdevel-size-perl{a} libdevel-stacktrace-perl{a} libdouble-conversion3{a} libdrm-amdgpu1{a} libdrm-common{a} libdrm-intel1{a} libdrm-radeon1{a} libdrm2{a} libduktape207{a} libdynaloader-functions-perl{a} libedit2{a} libegl-mesa0{a} libegl1{a} libelf1t64{a} libemail-address-xs-perl{a} libencode-locale-perl{a} liberror-perl{a} libevdev2{a} libevent-2.1-7t64{a} libexception-class-perl{a} libexpat1{a} libexporter-lite-perl{a} libexporter-tiny-perl{a} libfeature-compat-class-perl{a} libfeature-compat-try-perl{a} libffi8{a} libfftw3-bin{a} libfftw3-dev{a} libfftw3-double3{a} libfftw3-long3{a} libfftw3-quad3{a} libfftw3-single3{a} libfile-basedir-perl{a} libfile-find-rule-perl{a} libfile-homedir-perl{a} libfile-listing-perl{a} libfile-sharedir-perl{a} libfile-stripnondeterminism-perl{a} libfile-which-perl{a} libflac12t64{a} libfltk-gl1.3t64{a} libfltk1.3t64{a} libfont-ttf-perl{a} libfontconfig1{a} libfreetype6{a} libfribidi0{a} libgav1-1{a} libgbm1{a} libgcrypt20{a} libgd3{a} libgetopt-long-descriptive-perl{a} libgfortran-14-dev{a} libgfortran5{a} libgif7{a} libgl-dev{a} libgl1{a} libgl1-mesa-dri{a} libgl2ps1.4{a} libglapi-mesa{a} libglib2.0-0t64{a} libglpk40{a} libglu1-mesa{a} libglvnd0{a} libglx-dev{a} libglx-mesa0{a} libglx0{a} libgmp-dev{a} libgmpxx4ldbl{a} libgnutls-dane0t64{a} libgnutls-openssl27t64{a} libgnutls28-dev{a} libgnutls30t64{a} libgpg-error0{a} libgraphicsmagick++-q16-12t64{a} libgraphicsmagick-q16-3t64{a} libgraphite2-3{a} libgssapi-krb5-2{a} libgssrpc4t64{a} libgudev-1.0-0{a} libharfbuzz0b{a} libhash-merge-perl{a} libhdf5-310{a} libhdf5-cpp-310{a} libhdf5-dev{a} libhdf5-fortran-310{a} libhdf5-hl-310{a} libhdf5-hl-cpp-310{a} libhdf5-hl-fortran-310{a} libheif-plugin-dav1d{a} libheif-plugin-libde265{a} libheif1{a} libhtml-form-perl{a} libhtml-html5-entities-perl{a} libhtml-parser-perl{a} libhtml-tagset-perl{a} libhtml-tokeparser-simple-perl{a} libhtml-tree-perl{a} libhttp-cookies-perl{a} libhttp-date-perl{a} libhttp-message-perl{a} libhttp-negotiate-perl{a} libhwy1t64{a} libice6{a} libicu72{a} libidn2-0{a} libidn2-dev{a} libimagequant0{a} libimath-3-1-29t64{a} libimport-into-perl{a} libindirect-perl{a} libinput-bin{a} libinput10{a} libio-html-perl{a} libio-interactive-perl{a} libio-socket-ssl-perl{a} libio-string-perl{a} libio-stringy-perl{a} libio-tiecombine-perl{a} libipc-run3-perl{a} libipc-system-simple-perl{a} libiterator-perl{a} libiterator-util-perl{a} libjack-jackd2-0{a} libjbig0{a} libjpeg-dev{a} libjpeg62-turbo{a} libjpeg62-turbo-dev{a} libjson-maybexs-perl{a} libjson-perl{a} libjxl0.10{a} libk5crypto3{a} libkadm5clnt-mit12{a} libkadm5srv-mit12{a} libkdb5-10t64{a} libkeyutils1{a} libkrb5-3{a} libkrb5-dev{a} libkrb5support0{a} liblapack-dev{a} liblapack3{a} liblcms2-2{a} libldap-dev{a} libldap2{a} liblerc4{a} liblist-compare-perl{a} liblist-moreutils-perl{a} liblist-moreutils-xs-perl{a} liblist-someutils-perl{a} liblist-utilsby-perl{a} libllvm19{a} liblog-any-adapter-screen-perl{a} liblog-any-perl{a} liblog-log4perl-perl{a} libltdl7{a} liblua5.4-0{a} liblwp-mediatypes-perl{a} liblwp-protocol-https-perl{a} liblz1{a} liblzo2-2{a} libmagic-mgc{a} libmagic1t64{a} libmailtools-perl{a} libmarkdown2{a} libmd4c0{a} libmime-tools-perl{a} libmldbm-perl{a} libmodule-implementation-perl{a} libmodule-pluggable-perl{a} libmodule-runtime-perl{a} libmoo-perl{a} libmoox-aliases-perl{a} libmouse-perl{a} libmousex-nativetraits-perl{a} libmousex-strictconstructor-perl{a} libmp3lame0{a} libmpg123-0t64{a} libmro-compat-perl{a} libmtdev1t64{a} libnamespace-clean-perl{a} libncurses-dev{a} libncurses6{a} libnet-domain-tld-perl{a} libnet-http-perl{a} libnet-ipv6addr-perl{a} libnet-netmask-perl{a} libnet-smtp-ssl-perl{a} libnet-ssleay-perl{a} libnetaddr-ip-perl{a} libnghttp2-14{a} libnghttp2-dev{a} libnghttp3-9{a} libnghttp3-dev{a} libngtcp2-16{a} libngtcp2-crypto-gnutls8{a} libnumber-compare-perl{a} libobject-pad-perl{a} libogg0{a} libopenexr-3-1-30{a} libopengl0{a} libopus0{a} libp11-kit-dev{a} libp11-kit0{a} libpackage-stash-perl{a} libpango-1.0-0{a} libpangocairo-1.0-0{a} libpangoft2-1.0-0{a} libparams-classify-perl{a} libparams-util-perl{a} libparams-validate-perl{a} libparse-debcontrol-perl{a} libparse-recdescent-perl{a} libpath-iterator-rule-perl{a} libpath-tiny-perl{a} libpciaccess0{a} libpcre2-16-0{a} libperlio-gzip-perl{a} libperlio-utf8-strict-perl{a} libpipeline1{a} libpixman-1-0{a} libpkgconf3{a} libpng16-16t64{a} libpod-constants-perl{a} libpod-parser-perl{a} libpod-pom-perl{a} libportaudio2{a} libproc-processtable-perl{a} libproc2-0{a} libproxy1v5{a} libpsl-dev{a} libpsl5t64{a} libpython3-stdlib{a} libpython3.13-minimal{a} libpython3.13-stdlib{a} libqhull-r8.0{a} libqrupdate1{a} libqscintilla2-qt6-15{a} libqscintilla2-qt6-l10n{a} libqt6core5compat6{a} libqt6core6t64{a} libqt6dbus6{a} libqt6gui6{a} libqt6help6{a} libqt6network6{a} libqt6opengl6{a} libqt6openglwidgets6{a} libqt6printsupport6{a} libqt6sql6{a} libqt6widgets6{a} libqt6xml6{a} libraqm0{a} librav1e0.7{a} libreadline-dev{a} libreadline8t64{a} libregexp-common-perl{a} libregexp-pattern-license-perl{a} libregexp-pattern-perl{a} libregexp-wildcards-perl{a} librole-tiny-perl{a} librtmp-dev{a} librtmp1{a} libsamplerate0{a} libsasl2-2{a} libsasl2-modules-db{a} libsensors-config{a} libsensors5{a} libsereal-decoder-perl{a} libsereal-encoder-perl{a} libset-intspan-perl{a} libsharpyuv0{a} libsm6{a} libsndfile1{a} libsoftware-copyright-perl{a} libsoftware-license-perl{a} libsoftware-licensemoreutils-perl{a} libsort-versions-perl{a} libspqr4{a} libssh2-1-dev{a} libssh2-1t64{a} libssl-dev{a} libstemmer0d{a} libstrictures-perl{a} libstring-copyright-perl{a} libstring-escape-perl{a} libstring-license-perl{a} libstring-rewriteprefix-perl{a} libsub-exporter-perl{a} libsub-exporter-progressive-perl{a} libsub-identify-perl{a} libsub-install-perl{a} libsub-name-perl{a} libsub-quote-perl{a} libsub-uplevel-perl{a} libsuitesparseconfig7{a} libsvtav1enc2{a} libsyntax-keyword-try-perl{a} libsz2{a} libtasn1-6{a} libtasn1-6-dev{a} libterm-readkey-perl{a} libtest-exception-perl{a} libtext-autoformat-perl{a} libtext-charwidth-perl{a} libtext-glob-perl{a} libtext-levenshtein-damerau-perl{a} libtext-levenshteinxs-perl{a} libtext-markdown-discount-perl{a} libtext-reform-perl{a} libtext-template-perl{a} libtext-unidecode-perl{a} libtext-wrapi18n-perl{a} libtext-xslate-perl{a} libthai-data{a} libthai0{a} libtiff6{a} libtime-duration-perl{a} libtime-moment-perl{a} libtimedate-perl{a} libtoml-tiny-perl{a} libtool{a} libtry-tiny-perl{a} libts0t64{a} libuchardet0{a} libumfpack6{a} libunbound8{a} libunicode-utf8-perl{a} libunistring5{a} liburi-perl{a} libvariable-magic-perl{a} libvorbis0a{a} libvorbisenc2{a} libvulkan1{a} libwacom-common{a} libwacom9{a} libwayland-client0{a} libwayland-server0{a} libwebp7{a} libwebpmux3{a} libwmflite-0.2-7{a} libwww-mechanize-perl{a} libwww-perl{a} libwww-robotrules-perl{a} libx11-6{a} libx11-data{a} libx11-dev{a} libx11-xcb1{a} libxau-dev{a} libxau6{a} libxcb-cursor0{a} libxcb-dri3-0{a} libxcb-glx0{a} libxcb-icccm4{a} libxcb-image0{a} libxcb-keysyms1{a} libxcb-present0{a} libxcb-randr0{a} libxcb-render-util0{a} libxcb-render0{a} libxcb-shape0{a} libxcb-shm0{a} libxcb-sync1{a} libxcb-util1{a} libxcb-xfixes0{a} libxcb-xinput0{a} libxcb-xkb1{a} libxcb1{a} libxcb1-dev{a} libxcursor1{a} libxdmcp-dev{a} libxdmcp6{a} libxext6{a} libxfixes3{a} libxft2{a} libxinerama1{a} libxkbcommon-x11-0{a} libxkbcommon0{a} libxml-libxml-perl{a} libxml-namespacesupport-perl{a} libxml-sax-base-perl{a} libxml-sax-perl{a} libxml2{a} libxmlb2{a} libxpm4{a} libxrender1{a} libxs-parse-keyword-perl{a} libxs-parse-sublike-perl{a} libxshmfence1{a} libxxf86vm1{a} libyaml-0-2{a} libyaml-libyaml-perl{a} libyaml-pp-perl{a} libyaml-tiny-perl{a} libyuv0{a} libz3-4{a} libzstd-dev{a} licensecheck{a} lintian{a} lzop{a} m4{a} man-db{a} media-types{a} mesa-libgallium{a} netbase{a} nettle-dev{a} octave{a} octave-common{a} octave-dev{a} openssl{a} patchutils{a} perl-openssl-defaults{a} pkgconf{a} pkgconf-bin{a} plzip{a} po-debconf{a} procps{a} python3{a} python3-minimal{a} python3-mpmath{a} python3-packaging{a} python3-sympy{a} python3.13{a} python3.13-minimal{a} readline-common{a} sensible-utils{a} shared-mime-info{a} t1utils{a} tex-common{a} texinfo{a} texinfo-lib{a} tzdata{a} ucf{a} unzip{a} x11-common{a} x11proto-dev{a} xkb-data{a} xorg-sgml-doctools{a} xtrans-dev{a} zlib1g-dev{a} The following packages are RECOMMENDED but will NOT be installed: alsa-topology-conf alsa-ucm-conf bash-completion curl dbus default-jre-headless epstool fonts-liberation fonts-urw-base35 ghostscript gnupg groff isympy-common krb5-locales libarchive-cpio-perl libauthen-sasl-perl libblis4 libcgi-fast-perl libclass-c3-xs-perl libconfig-model-approx-perl libconfig-model-lcdproc-perl libconfig-model-openssh-perl libconfig-model-systemd-perl libconfig-model-tkui-perl libdata-dump-perl libfreezethaw-perl libfuse-perl libglib2.0-data libgpg-error-l10n libgpm2 libheif-plugin-aomenc libheif-plugin-x265 libhtml-format-perl libhttp-daemon-perl libio-compress-brotli-perl libipc-shareable-perl libjson-xs-perl libldap-common liblist-someutils-xs-perl liblog-dispatch-perl libltdl-dev libmail-sendmail-perl libmath-base85-perl libopenblas0 libpackage-stash-xs-perl libqt6sql6-ibase libqt6sql6-mysql libqt6sql6-odbc libqt6sql6-psql libqt6sql6-sqlite libre-engine-re2-perl libsasl2-modules libsocket6-perl libtasn1-doc libtie-ixhash-perl libtypes-serialiser-perl libxml-sax-expat-perl libxstring-perl linux-sysctl-defaults lynx mesa-vulkan-drivers octave-doc psmisc pstoedit publicsuffix python3-numpy python3-pil qt6-gtk-platformtheme qt6-qpa-plugins qt6-svg-plugins qt6-translations-l10n qt6-wayland wget xdg-user-dirs 0 packages upgraded, 547 newly installed, 0 to remove and 0 not upgraded. Need to get 219 MB of archives. After unpacking 850 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main amd64 libpython3.13-minimal amd64 3.13.2-1 [859 kB] Get: 2 http://deb.debian.org/debian unstable/main amd64 libexpat1 amd64 2.6.4-1 [106 kB] Get: 3 http://deb.debian.org/debian unstable/main amd64 python3.13-minimal amd64 3.13.2-1 [2205 kB] Get: 4 http://deb.debian.org/debian unstable/main amd64 python3-minimal amd64 3.13.1-2 [27.0 kB] Get: 5 http://deb.debian.org/debian unstable/main amd64 media-types all 11.0.0 [27.6 kB] Get: 6 http://deb.debian.org/debian unstable/main amd64 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main amd64 tzdata all 2025a-2 [259 kB] Get: 8 http://deb.debian.org/debian unstable/main amd64 libffi8 amd64 3.4.7-1 [23.9 kB] Get: 9 http://deb.debian.org/debian unstable/main amd64 readline-common all 8.2-6 [69.4 kB] Get: 10 http://deb.debian.org/debian unstable/main amd64 libreadline8t64 amd64 8.2-6 [169 kB] Get: 11 http://deb.debian.org/debian unstable/main amd64 libpython3.13-stdlib amd64 3.13.2-1 [1979 kB] Get: 12 http://deb.debian.org/debian unstable/main amd64 python3.13 amd64 3.13.2-1 [745 kB] Get: 13 http://deb.debian.org/debian unstable/main amd64 libpython3-stdlib amd64 3.13.1-2 [9952 B] Get: 14 http://deb.debian.org/debian unstable/main amd64 python3 amd64 3.13.1-2 [28.0 kB] Get: 15 http://deb.debian.org/debian unstable/main amd64 libproc2-0 amd64 2:4.0.4-7 [64.9 kB] Get: 16 http://deb.debian.org/debian unstable/main amd64 procps amd64 2:4.0.4-7 [878 kB] Get: 17 http://deb.debian.org/debian unstable/main amd64 sensible-utils all 0.0.24 [24.8 kB] Get: 18 http://deb.debian.org/debian unstable/main amd64 openssl amd64 3.4.1-1 [1427 kB] Get: 19 http://deb.debian.org/debian unstable/main amd64 ca-certificates all 20241223 [164 kB] Get: 20 http://deb.debian.org/debian unstable/main amd64 libmagic-mgc amd64 1:5.45-3+b1 [314 kB] Get: 21 http://deb.debian.org/debian unstable/main amd64 libmagic1t64 amd64 1:5.45-3+b1 [108 kB] Get: 22 http://deb.debian.org/debian unstable/main amd64 file amd64 1:5.45-3+b1 [43.3 kB] Get: 23 http://deb.debian.org/debian unstable/main amd64 gettext-base amd64 0.23.1-1 [243 kB] Get: 24 http://deb.debian.org/debian unstable/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 25 http://deb.debian.org/debian unstable/main amd64 groff-base amd64 1.23.0-7 [1185 kB] Get: 26 http://deb.debian.org/debian unstable/main amd64 bsdextrautils amd64 2.40.4-4 [92.4 kB] Get: 27 http://deb.debian.org/debian unstable/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 28 http://deb.debian.org/debian unstable/main amd64 man-db amd64 2.13.0-1 [1420 kB] Get: 29 http://deb.debian.org/debian unstable/main amd64 libtext-charwidth-perl amd64 0.04-11+b4 [9476 B] Get: 30 http://deb.debian.org/debian unstable/main amd64 libtext-wrapi18n-perl all 0.06-10 [8808 B] Get: 31 http://deb.debian.org/debian unstable/main amd64 ucf all 3.0050 [42.7 kB] Get: 32 http://deb.debian.org/debian unstable/main amd64 aglfn all 1.7+git20191031.4036a9c-2 [30.5 kB] Get: 33 http://deb.debian.org/debian unstable/main amd64 libglib2.0-0t64 amd64 2.83.3-2 [1511 kB] Get: 34 http://deb.debian.org/debian unstable/main amd64 libicu72 amd64 72.1-6 [9421 kB] Get: 35 http://deb.debian.org/debian unstable/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-0.2+b1 [699 kB] Get: 36 http://deb.debian.org/debian unstable/main amd64 shared-mime-info amd64 2.4-5+b2 [760 kB] Get: 37 http://deb.debian.org/debian unstable/main amd64 libbrotli1 amd64 1.1.0-2+b6 [302 kB] Get: 38 http://deb.debian.org/debian unstable/main amd64 libunistring5 amd64 1.3-1 [476 kB] Get: 39 http://deb.debian.org/debian unstable/main amd64 libidn2-0 amd64 2.3.7-2+b1 [129 kB] Get: 40 http://deb.debian.org/debian unstable/main amd64 libp11-kit0 amd64 0.25.5-3 [425 kB] Get: 41 http://deb.debian.org/debian unstable/main amd64 libtasn1-6 amd64 4.20.0-2 [49.9 kB] Get: 42 http://deb.debian.org/debian unstable/main amd64 libgnutls30t64 amd64 3.8.9-2 [1464 kB] Get: 43 http://deb.debian.org/debian unstable/main amd64 libkrb5support0 amd64 1.21.3-4 [32.8 kB] Get: 44 http://deb.debian.org/debian unstable/main amd64 libcom-err2 amd64 1.47.2-1 [24.0 kB] Get: 45 http://deb.debian.org/debian unstable/main amd64 libk5crypto3 amd64 1.21.3-4 [80.9 kB] Get: 46 http://deb.debian.org/debian unstable/main amd64 libkeyutils1 amd64 1.6.3-4 [9092 B] Get: 47 http://deb.debian.org/debian unstable/main amd64 libkrb5-3 amd64 1.21.3-4 [326 kB] Get: 48 http://deb.debian.org/debian unstable/main amd64 libgssapi-krb5-2 amd64 1.21.3-4 [138 kB] Get: 49 http://deb.debian.org/debian unstable/main amd64 libsasl2-modules-db amd64 2.1.28+dfsg1-8+b1 [19.9 kB] Get: 50 http://deb.debian.org/debian unstable/main amd64 libsasl2-2 amd64 2.1.28+dfsg1-8+b1 [57.6 kB] Get: 51 http://deb.debian.org/debian unstable/main amd64 libldap2 amd64 2.6.9+dfsg-1 [192 kB] Get: 52 http://deb.debian.org/debian unstable/main amd64 libnghttp2-14 amd64 1.64.0-1 [75.5 kB] Get: 53 http://deb.debian.org/debian unstable/main amd64 libnghttp3-9 amd64 1.6.0-2 [64.8 kB] Get: 54 http://deb.debian.org/debian unstable/main amd64 libngtcp2-16 amd64 1.9.1-1 [119 kB] Get: 55 http://deb.debian.org/debian unstable/main amd64 libngtcp2-crypto-gnutls8 amd64 1.9.1-1 [18.5 kB] Get: 56 http://deb.debian.org/debian unstable/main amd64 libpsl5t64 amd64 0.21.2-1.1+b1 [57.2 kB] Get: 57 http://deb.debian.org/debian unstable/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d.1-2+b5 [58.8 kB] Get: 58 http://deb.debian.org/debian unstable/main amd64 libssh2-1t64 amd64 1.11.1-1 [245 kB] Get: 59 http://deb.debian.org/debian unstable/main amd64 libcurl3t64-gnutls amd64 8.12.1-2 [365 kB] Get: 60 http://deb.debian.org/debian unstable/main amd64 libstemmer0d amd64 2.2.0-4+b2 [119 kB] Get: 61 http://deb.debian.org/debian unstable/main amd64 libxmlb2 amd64 0.3.21-1 [63.0 kB] Get: 62 http://deb.debian.org/debian unstable/main amd64 libyaml-0-2 amd64 0.2.5-2 [52.5 kB] Get: 63 http://deb.debian.org/debian unstable/main amd64 libappstream5 amd64 1.0.4-1 [225 kB] Get: 64 http://deb.debian.org/debian unstable/main amd64 appstream amd64 1.0.4-1 [523 kB] Get: 65 http://deb.debian.org/debian unstable/main amd64 m4 amd64 1.4.19-5 [294 kB] Get: 66 http://deb.debian.org/debian unstable/main amd64 autoconf all 2.72-3 [493 kB] Get: 67 http://deb.debian.org/debian unstable/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 68 http://deb.debian.org/debian unstable/main amd64 automake all 1:1.17-3 [862 kB] Get: 69 http://deb.debian.org/debian unstable/main amd64 autopoint all 0.23.1-1 [770 kB] Get: 70 http://deb.debian.org/debian unstable/main amd64 libcapture-tiny-perl all 0.50-1 [24.6 kB] Get: 71 http://deb.debian.org/debian unstable/main amd64 libparams-util-perl amd64 1.102-3+b1 [24.4 kB] Get: 72 http://deb.debian.org/debian unstable/main amd64 libsub-install-perl all 0.929-1 [10.5 kB] Get: 73 http://deb.debian.org/debian unstable/main amd64 libdata-optlist-perl all 0.114-1 [10.6 kB] Get: 74 http://deb.debian.org/debian unstable/main amd64 libb-hooks-op-check-perl amd64 0.22-3+b2 [10.6 kB] Get: 75 http://deb.debian.org/debian unstable/main amd64 libdynaloader-functions-perl all 0.004-1 [12.1 kB] Get: 76 http://deb.debian.org/debian unstable/main amd64 libdevel-callchecker-perl amd64 0.009-1+b1 [16.2 kB] Get: 77 http://deb.debian.org/debian unstable/main amd64 libparams-classify-perl amd64 0.015-2+b4 [22.5 kB] Get: 78 http://deb.debian.org/debian unstable/main amd64 libmodule-runtime-perl all 0.016-2 [19.6 kB] Get: 79 http://deb.debian.org/debian unstable/main amd64 libtry-tiny-perl all 0.32-1 [22.9 kB] Get: 80 http://deb.debian.org/debian unstable/main amd64 libmodule-implementation-perl all 0.09-2 [12.6 kB] Get: 81 http://deb.debian.org/debian unstable/main amd64 libpackage-stash-perl all 0.40-1 [22.0 kB] Get: 82 http://deb.debian.org/debian unstable/main amd64 libclass-load-perl all 0.25-2 [15.3 kB] Get: 83 http://deb.debian.org/debian unstable/main amd64 libio-stringy-perl all 2.113-2 [48.3 kB] Get: 84 http://deb.debian.org/debian unstable/main amd64 libparams-validate-perl amd64 1.31-2+b3 [63.4 kB] Get: 85 http://deb.debian.org/debian unstable/main amd64 libsub-exporter-perl all 0.990-1 [50.6 kB] Get: 86 http://deb.debian.org/debian unstable/main amd64 libgetopt-long-descriptive-perl all 0.116-2 [27.7 kB] Get: 87 http://deb.debian.org/debian unstable/main amd64 libio-tiecombine-perl all 1.005-3 [10.8 kB] Get: 88 http://deb.debian.org/debian unstable/main amd64 libmodule-pluggable-perl all 5.2-5 [23.0 kB] Get: 89 http://deb.debian.org/debian unstable/main amd64 libstring-rewriteprefix-perl all 0.009-1 [7140 B] Get: 90 http://deb.debian.org/debian unstable/main amd64 libapp-cmd-perl all 0.337-2 [61.4 kB] Get: 91 http://deb.debian.org/debian unstable/main amd64 libboolean-perl all 0.46-3 [9924 B] Get: 92 http://deb.debian.org/debian unstable/main amd64 libsub-uplevel-perl all 0.2800-3 [14.0 kB] Get: 93 http://deb.debian.org/debian unstable/main amd64 libtest-exception-perl all 0.43-3 [16.9 kB] Get: 94 http://deb.debian.org/debian unstable/main amd64 libcarp-assert-more-perl all 2.8.0-1 [21.7 kB] Get: 95 http://deb.debian.org/debian unstable/main amd64 libfile-which-perl all 1.27-2 [15.1 kB] Get: 96 http://deb.debian.org/debian unstable/main amd64 libfile-homedir-perl all 1.006-2 [42.4 kB] Get: 97 http://deb.debian.org/debian unstable/main amd64 libclone-choose-perl all 0.010-2 [8676 B] Get: 98 http://deb.debian.org/debian unstable/main amd64 libhash-merge-perl all 0.302-1 [14.7 kB] Get: 99 http://deb.debian.org/debian unstable/main amd64 libjson-perl all 4.10000-1 [87.5 kB] Get: 100 http://deb.debian.org/debian unstable/main amd64 libexporter-tiny-perl all 1.006002-1 [38.7 kB] Get: 101 http://deb.debian.org/debian unstable/main amd64 liblist-moreutils-xs-perl amd64 0.430-4+b2 [42.1 kB] Get: 102 http://deb.debian.org/debian unstable/main amd64 liblist-moreutils-perl all 0.430-2 [46.9 kB] Get: 103 http://deb.debian.org/debian unstable/main amd64 liblog-log4perl-perl all 1.57-1 [367 kB] Get: 104 http://deb.debian.org/debian unstable/main amd64 libmouse-perl amd64 2.5.11-1+b1 [144 kB] Get: 105 http://deb.debian.org/debian unstable/main amd64 libmousex-nativetraits-perl all 1.09-3 [53.5 kB] Get: 106 http://deb.debian.org/debian unstable/main amd64 libmousex-strictconstructor-perl all 0.02-3 [5304 B] Get: 107 http://deb.debian.org/debian unstable/main amd64 libparse-recdescent-perl all 1.967015+dfsg-4 [147 kB] Get: 108 http://deb.debian.org/debian unstable/main amd64 libpath-tiny-perl all 0.146-1 [56.2 kB] Get: 109 http://deb.debian.org/debian unstable/main amd64 libpod-pom-perl all 2.01-4 [65.0 kB] Get: 110 http://deb.debian.org/debian unstable/main amd64 libregexp-common-perl all 2024080801-1 [167 kB] Get: 111 http://deb.debian.org/debian unstable/main amd64 libyaml-tiny-perl all 1.76-1 [29.8 kB] Get: 112 http://deb.debian.org/debian unstable/main amd64 libconfig-model-perl all 2.155-1 [398 kB] Get: 113 http://deb.debian.org/debian unstable/main amd64 libyaml-pp-perl all 0.39.0-1 [111 kB] Get: 114 http://deb.debian.org/debian unstable/main amd64 cme all 1.041-1 [69.6 kB] Get: 115 http://deb.debian.org/debian unstable/main amd64 comerr-dev amd64 2.1-1.47.2-1 [55.7 kB] Get: 116 http://deb.debian.org/debian unstable/main amd64 libdebhelper-perl all 13.24.1 [90.9 kB] Get: 117 http://deb.debian.org/debian unstable/main amd64 libtool all 2.5.4-3 [539 kB] Get: 118 http://deb.debian.org/debian unstable/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 119 http://deb.debian.org/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 120 http://deb.debian.org/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.14.1-2 [19.7 kB] Get: 121 http://deb.debian.org/debian unstable/main amd64 dh-strip-nondeterminism all 1.14.1-2 [8620 B] Get: 122 http://deb.debian.org/debian unstable/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 123 http://deb.debian.org/debian unstable/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 124 http://deb.debian.org/debian unstable/main amd64 gettext amd64 0.23.1-1 [1680 kB] Get: 125 http://deb.debian.org/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 126 http://deb.debian.org/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 127 http://deb.debian.org/debian unstable/main amd64 debhelper all 13.24.1 [920 kB] Get: 128 http://deb.debian.org/debian unstable/main amd64 gnuplot-data all 6.0.2+dfsg1-1 [72.4 kB] Get: 129 http://deb.debian.org/debian unstable/main amd64 libpng16-16t64 amd64 1.6.46-4 [284 kB] Get: 130 http://deb.debian.org/debian unstable/main amd64 libfreetype6 amd64 2.13.3+dfsg-1 [452 kB] Get: 131 http://deb.debian.org/debian unstable/main amd64 fonts-dejavu-mono all 2.37-8 [489 kB] Get: 132 http://deb.debian.org/debian unstable/main amd64 fonts-dejavu-core all 2.37-8 [840 kB] Get: 133 http://deb.debian.org/debian unstable/main amd64 fonts-freefont-otf all 20211204+svn4273-2 [4328 kB] Get: 134 http://deb.debian.org/debian unstable/main amd64 fontconfig-config amd64 2.15.0-2 [317 kB] Get: 135 http://deb.debian.org/debian unstable/main amd64 libfontconfig1 amd64 2.15.0-2 [391 kB] Get: 136 http://deb.debian.org/debian unstable/main amd64 libpixman-1-0 amd64 0.44.0-3 [248 kB] Get: 137 http://deb.debian.org/debian unstable/main amd64 libxau6 amd64 1:1.0.11-1 [20.4 kB] Get: 138 http://deb.debian.org/debian unstable/main amd64 libxdmcp6 amd64 1:1.1.5-1 [27.8 kB] Get: 139 http://deb.debian.org/debian unstable/main amd64 libxcb1 amd64 1.17.0-2+b1 [144 kB] Get: 140 http://deb.debian.org/debian unstable/main amd64 libx11-data all 2:1.8.10-2 [337 kB] Get: 141 http://deb.debian.org/debian unstable/main amd64 libx11-6 amd64 2:1.8.10-2 [813 kB] Get: 142 http://deb.debian.org/debian unstable/main amd64 libxcb-render0 amd64 1.17.0-2+b1 [115 kB] Get: 143 http://deb.debian.org/debian unstable/main amd64 libxcb-shm0 amd64 1.17.0-2+b1 [105 kB] Get: 144 http://deb.debian.org/debian unstable/main amd64 libxext6 amd64 2:1.3.4-1+b3 [50.4 kB] Get: 145 http://deb.debian.org/debian unstable/main amd64 libxrender1 amd64 1:0.9.10-1.1+b4 [27.8 kB] Get: 146 http://deb.debian.org/debian unstable/main amd64 libcairo2 amd64 1.18.2-2 [535 kB] Get: 147 http://deb.debian.org/debian unstable/main amd64 libedit2 amd64 3.1-20250104-1 [93.8 kB] Get: 148 http://deb.debian.org/debian unstable/main amd64 libaom3 amd64 3.12.0-1 [1870 kB] Get: 149 http://deb.debian.org/debian unstable/main amd64 libdav1d7 amd64 1.5.1-1 [559 kB] Get: 150 http://deb.debian.org/debian unstable/main amd64 libabsl20230802 amd64 20230802.1-4 [464 kB] Get: 151 http://deb.debian.org/debian unstable/main amd64 libgav1-1 amd64 0.19.0-3 [350 kB] Get: 152 http://deb.debian.org/debian unstable/main amd64 librav1e0.7 amd64 0.7.1-9+b1 [946 kB] Get: 153 http://deb.debian.org/debian unstable/main amd64 libsvtav1enc2 amd64 2.3.0+dfsg-1 [2489 kB] Get: 154 http://deb.debian.org/debian unstable/main amd64 libjpeg62-turbo amd64 1:2.1.5-3+b1 [168 kB] Get: 155 http://deb.debian.org/debian unstable/main amd64 libyuv0 amd64 0.0.1904.20250204-1 [174 kB] Get: 156 http://deb.debian.org/debian unstable/main amd64 libavif16 amd64 1.1.1-1 [117 kB] Get: 157 http://deb.debian.org/debian unstable/main amd64 libsharpyuv0 amd64 1.5.0-0.1 [116 kB] Get: 158 http://deb.debian.org/debian unstable/main amd64 libheif-plugin-dav1d amd64 1.19.5-1+b1 [11.5 kB] Get: 159 http://deb.debian.org/debian unstable/main amd64 libde265-0 amd64 1.0.15-1+b2 [189 kB] Get: 160 http://deb.debian.org/debian unstable/main amd64 libheif-plugin-libde265 amd64 1.19.5-1+b1 [15.5 kB] Get: 161 http://deb.debian.org/debian unstable/main amd64 libheif1 amd64 1.19.5-1+b1 [514 kB] Get: 162 http://deb.debian.org/debian unstable/main amd64 libimagequant0 amd64 2.18.0-1+b2 [35.2 kB] Get: 163 http://deb.debian.org/debian unstable/main amd64 libfribidi0 amd64 1.0.16-1 [26.5 kB] Get: 164 http://deb.debian.org/debian unstable/main amd64 libgraphite2-3 amd64 1.3.14-2+b1 [75.4 kB] Get: 165 http://deb.debian.org/debian unstable/main amd64 libharfbuzz0b amd64 10.2.0-1 [479 kB] Get: 166 http://deb.debian.org/debian unstable/main amd64 libraqm0 amd64 0.10.2-1 [13.9 kB] Get: 167 http://deb.debian.org/debian unstable/main amd64 libdeflate0 amd64 1.23-1+b1 [47.5 kB] Get: 168 http://deb.debian.org/debian unstable/main amd64 libjbig0 amd64 2.1-6.1+b2 [32.1 kB] Get: 169 http://deb.debian.org/debian unstable/main amd64 liblerc4 amd64 4.0.0+ds-5 [183 kB] Get: 170 http://deb.debian.org/debian unstable/main amd64 libwebp7 amd64 1.5.0-0.1 [318 kB] Get: 171 http://deb.debian.org/debian unstable/main amd64 libtiff6 amd64 4.5.1+git230720-5 [324 kB] Get: 172 http://deb.debian.org/debian unstable/main amd64 libxpm4 amd64 1:3.5.17-1+b3 [56.2 kB] Get: 173 http://deb.debian.org/debian unstable/main amd64 libgd3 amd64 2.3.3-12+b1 [126 kB] Get: 174 http://deb.debian.org/debian unstable/main amd64 liblua5.4-0 amd64 5.4.7-1+b2 [147 kB] Get: 175 http://deb.debian.org/debian unstable/main amd64 fontconfig amd64 2.15.0-2 [463 kB] Get: 176 http://deb.debian.org/debian unstable/main amd64 libthai-data all 0.1.29-2 [168 kB] Get: 177 http://deb.debian.org/debian unstable/main amd64 libdatrie1 amd64 0.2.13-3+b1 [38.1 kB] Get: 178 http://deb.debian.org/debian unstable/main amd64 libthai0 amd64 0.1.29-2+b1 [49.4 kB] Get: 179 http://deb.debian.org/debian unstable/main amd64 libpango-1.0-0 amd64 1.56.1-1 [226 kB] Get: 180 http://deb.debian.org/debian unstable/main amd64 libpangoft2-1.0-0 amd64 1.56.1-1 [55.3 kB] Get: 181 http://deb.debian.org/debian unstable/main amd64 libpangocairo-1.0-0 amd64 1.56.1-1 [35.8 kB] Get: 182 http://deb.debian.org/debian unstable/main amd64 libwebpmux3 amd64 1.5.0-0.1 [126 kB] Get: 183 http://deb.debian.org/debian unstable/main amd64 gnuplot-nox amd64 6.0.2+dfsg1-1 [922 kB] Get: 184 http://deb.debian.org/debian unstable/main amd64 dh-octave-autopkgtest all 1.8.0 [10.0 kB] Get: 185 http://deb.debian.org/debian unstable/main amd64 libapt-pkg-perl amd64 0.1.41 [68.3 kB] Get: 186 http://deb.debian.org/debian unstable/main amd64 libarray-intspan-perl all 2.004-2 [25.7 kB] Get: 187 http://deb.debian.org/debian unstable/main amd64 libyaml-libyaml-perl amd64 0.903.0+ds-1 [35.4 kB] Get: 188 http://deb.debian.org/debian unstable/main amd64 libconfig-model-backend-yaml-perl all 2.134-2 [10.8 kB] Get: 189 http://deb.debian.org/debian unstable/main amd64 libexporter-lite-perl all 0.09-2 [10.7 kB] Get: 190 http://deb.debian.org/debian unstable/main amd64 libencode-locale-perl all 1.05-3 [12.9 kB] Get: 191 http://deb.debian.org/debian unstable/main amd64 libtimedate-perl all 2.3300-2 [39.3 kB] Get: 192 http://deb.debian.org/debian unstable/main amd64 libhttp-date-perl all 6.06-1 [10.7 kB] Get: 193 http://deb.debian.org/debian unstable/main amd64 libfile-listing-perl all 6.16-1 [12.4 kB] Get: 194 http://deb.debian.org/debian unstable/main amd64 libhtml-tagset-perl all 3.24-1 [14.7 kB] Get: 195 http://deb.debian.org/debian unstable/main amd64 liburi-perl all 5.30-1 [105 kB] Get: 196 http://deb.debian.org/debian unstable/main amd64 libhtml-parser-perl amd64 3.83-1+b2 [99.7 kB] Get: 197 http://deb.debian.org/debian unstable/main amd64 libhtml-tree-perl all 5.07-3 [211 kB] Get: 198 http://deb.debian.org/debian unstable/main amd64 libclone-perl amd64 0.47-1+b1 [13.9 kB] Get: 199 http://deb.debian.org/debian unstable/main amd64 libio-html-perl all 1.004-3 [16.2 kB] Get: 200 http://deb.debian.org/debian unstable/main amd64 liblwp-mediatypes-perl all 6.04-2 [20.2 kB] Get: 201 http://deb.debian.org/debian unstable/main amd64 libhttp-message-perl all 7.00-2 [79.8 kB] Get: 202 http://deb.debian.org/debian unstable/main amd64 libhttp-cookies-perl all 6.11-1 [19.1 kB] Get: 203 http://deb.debian.org/debian unstable/main amd64 libhttp-negotiate-perl all 6.01-2 [13.1 kB] Get: 204 http://deb.debian.org/debian unstable/main amd64 perl-openssl-defaults amd64 7+b2 [6724 B] Get: 205 http://deb.debian.org/debian unstable/main amd64 libnet-ssleay-perl amd64 1.94-3 [339 kB] Get: 206 http://deb.debian.org/debian unstable/main amd64 libio-socket-ssl-perl all 2.089-1 [223 kB] Get: 207 http://deb.debian.org/debian unstable/main amd64 libnet-http-perl all 6.23-1 [23.9 kB] Get: 208 http://deb.debian.org/debian unstable/main amd64 liblwp-protocol-https-perl all 6.14-1 [10.8 kB] Get: 209 http://deb.debian.org/debian unstable/main amd64 libwww-robotrules-perl all 6.02-1 [12.9 kB] Get: 210 http://deb.debian.org/debian unstable/main amd64 libwww-perl all 6.77-1 [183 kB] Get: 211 http://deb.debian.org/debian unstable/main amd64 liberror-perl all 0.17029-2 [29.0 kB] Get: 212 http://deb.debian.org/debian unstable/main amd64 libparse-debcontrol-perl all 2.005-6 [21.6 kB] Get: 213 http://deb.debian.org/debian unstable/main amd64 libsoftware-copyright-perl all 0.012-2 [18.0 kB] Get: 214 http://deb.debian.org/debian unstable/main amd64 libalgorithm-c3-perl all 0.11-2 [10.8 kB] Get: 215 http://deb.debian.org/debian unstable/main amd64 libclass-c3-perl all 0.35-2 [21.0 kB] Get: 216 http://deb.debian.org/debian unstable/main amd64 libmro-compat-perl all 0.15-2 [11.8 kB] Get: 217 http://deb.debian.org/debian unstable/main amd64 libdata-section-perl all 0.200008-1 [13.1 kB] Get: 218 http://deb.debian.org/debian unstable/main amd64 libtext-template-perl all 1.61-1 [54.4 kB] Get: 219 http://deb.debian.org/debian unstable/main amd64 libsoftware-license-perl all 0.104006-1 [116 kB] Get: 220 http://deb.debian.org/debian unstable/main amd64 libsoftware-licensemoreutils-perl all 1.009-1 [22.0 kB] Get: 221 http://deb.debian.org/debian unstable/main amd64 libsort-versions-perl all 1.62-3 [8928 B] Get: 222 http://deb.debian.org/debian unstable/main amd64 libtext-reform-perl all 1.20-5 [36.0 kB] Get: 223 http://deb.debian.org/debian unstable/main amd64 libtext-autoformat-perl all 1.750000-2 [35.2 kB] Get: 224 http://deb.debian.org/debian unstable/main amd64 libtext-levenshtein-damerau-perl all 0.41-3 [12.3 kB] Get: 225 http://deb.debian.org/debian unstable/main amd64 libtoml-tiny-perl all 0.19-1 [23.1 kB] Get: 226 http://deb.debian.org/debian unstable/main amd64 libclass-inspector-perl all 1.36-3 [17.5 kB] Get: 227 http://deb.debian.org/debian unstable/main amd64 libfile-sharedir-perl all 1.118-3 [16.0 kB] Get: 228 http://deb.debian.org/debian unstable/main amd64 libindirect-perl amd64 0.39-2+b4 [27.1 kB] Get: 229 http://deb.debian.org/debian unstable/main amd64 libxs-parse-keyword-perl amd64 0.48-2 [65.7 kB] Get: 230 http://deb.debian.org/debian unstable/main amd64 libxs-parse-sublike-perl amd64 0.37-1 [47.1 kB] Get: 231 http://deb.debian.org/debian unstable/main amd64 libobject-pad-perl amd64 0.819-1 [140 kB] Get: 232 http://deb.debian.org/debian unstable/main amd64 libfeature-compat-class-perl all 0.07-1 [11.5 kB] Get: 233 http://deb.debian.org/debian unstable/main amd64 libsyntax-keyword-try-perl amd64 0.30-1+b1 [27.4 kB] Get: 234 http://deb.debian.org/debian unstable/main amd64 libfeature-compat-try-perl all 0.05-1 [10.4 kB] Get: 235 http://deb.debian.org/debian unstable/main amd64 libio-interactive-perl all 1.026-1 [11.7 kB] Get: 236 http://deb.debian.org/debian unstable/main amd64 liblog-any-perl all 1.717-1 [78.9 kB] Get: 237 http://deb.debian.org/debian unstable/main amd64 liblog-any-adapter-screen-perl all 0.141-1 [14.0 kB] Get: 238 http://deb.debian.org/debian unstable/main amd64 libsub-exporter-progressive-perl all 0.001013-3 [7496 B] Get: 239 http://deb.debian.org/debian unstable/main amd64 libvariable-magic-perl amd64 0.64-1+b1 [44.9 kB] Get: 240 http://deb.debian.org/debian unstable/main amd64 libb-hooks-endofscope-perl all 0.28-1 [17.5 kB] Get: 241 http://deb.debian.org/debian unstable/main amd64 libsub-identify-perl amd64 0.14-3+b3 [11.3 kB] Get: 242 http://deb.debian.org/debian unstable/main amd64 libsub-name-perl amd64 0.28-1 [12.2 kB] Get: 243 http://deb.debian.org/debian unstable/main amd64 libnamespace-clean-perl all 0.27-2 [17.8 kB] Get: 244 http://deb.debian.org/debian unstable/main amd64 libnumber-compare-perl all 0.03-3 [6332 B] Get: 245 http://deb.debian.org/debian unstable/main amd64 libtext-glob-perl all 0.11-3 [7676 B] Get: 246 http://deb.debian.org/debian unstable/main amd64 libpath-iterator-rule-perl all 1.015-2 [41.7 kB] Get: 247 http://deb.debian.org/debian unstable/main amd64 libpod-parser-perl all 1.67-1 [94.1 kB] Get: 248 http://deb.debian.org/debian unstable/main amd64 libpod-constants-perl all 0.19-2 [17.3 kB] Get: 249 http://deb.debian.org/debian unstable/main amd64 libset-intspan-perl all 1.19-3 [25.3 kB] Get: 250 http://deb.debian.org/debian unstable/main amd64 libstring-copyright-perl all 0.003014-1 [23.4 kB] Get: 251 http://deb.debian.org/debian unstable/main amd64 libstring-escape-perl all 2010.002-3 [18.7 kB] Get: 252 http://deb.debian.org/debian unstable/main amd64 libregexp-pattern-license-perl all 3.11.2-1 [94.6 kB] Get: 253 http://deb.debian.org/debian unstable/main amd64 libregexp-pattern-perl all 0.2.14-2 [18.7 kB] Get: 254 http://deb.debian.org/debian unstable/main amd64 libstring-license-perl all 0.0.11-1 [34.7 kB] Get: 255 http://deb.debian.org/debian unstable/main amd64 licensecheck all 3.3.9-1 [50.1 kB] Get: 256 http://deb.debian.org/debian unstable/main amd64 diffstat amd64 1.67-1 [35.5 kB] Get: 257 http://deb.debian.org/debian unstable/main amd64 libgpg-error0 amd64 1.51-3 [82.2 kB] Get: 258 http://deb.debian.org/debian unstable/main amd64 libassuan9 amd64 3.0.1-2 [60.6 kB] Get: 259 http://deb.debian.org/debian unstable/main amd64 libgcrypt20 amd64 1.11.0-7 [843 kB] Get: 260 http://deb.debian.org/debian unstable/main amd64 gpgconf amd64 2.2.46-1+b1 [121 kB] Get: 261 http://deb.debian.org/debian unstable/main amd64 gpg amd64 2.2.46-1+b1 [532 kB] Get: 262 http://deb.debian.org/debian unstable/main amd64 iso-codes all 4.17.0-1 [3055 kB] Get: 263 http://deb.debian.org/debian unstable/main amd64 libberkeleydb-perl amd64 0.66-1 [121 kB] Get: 264 http://deb.debian.org/debian unstable/main amd64 libclass-xsaccessor-perl amd64 1.19-4+b5 [36.1 kB] Get: 265 http://deb.debian.org/debian unstable/main amd64 libconfig-tiny-perl all 2.30-1 [18.9 kB] Get: 266 http://deb.debian.org/debian unstable/main amd64 libconst-fast-perl all 0.014-2 [8792 B] Get: 267 http://deb.debian.org/debian unstable/main amd64 libcpanel-json-xs-perl amd64 4.39-1 [130 kB] Get: 268 http://deb.debian.org/debian unstable/main amd64 libaliased-perl all 0.34-3 [13.5 kB] Get: 269 http://deb.debian.org/debian unstable/main amd64 libclass-data-inheritable-perl all 0.10-1 [8632 B] Get: 270 http://deb.debian.org/debian unstable/main amd64 libdevel-stacktrace-perl all 2.0500-1 [26.4 kB] Get: 271 http://deb.debian.org/debian unstable/main amd64 libexception-class-perl all 1.45-1 [34.6 kB] Get: 272 http://deb.debian.org/debian unstable/main amd64 libiterator-perl all 0.03+ds1-2 [18.8 kB] Get: 273 http://deb.debian.org/debian unstable/main amd64 libiterator-util-perl all 0.02+ds1-2 [14.0 kB] Get: 274 http://deb.debian.org/debian unstable/main amd64 libdata-dpath-perl all 0.60-1 [41.8 kB] Get: 275 http://deb.debian.org/debian unstable/main amd64 libnet-domain-tld-perl all 1.75-4 [31.5 kB] Get: 276 http://deb.debian.org/debian unstable/main amd64 libdata-validate-domain-perl all 0.15-1 [11.9 kB] Get: 277 http://deb.debian.org/debian unstable/main amd64 libnet-ipv6addr-perl all 1.02-1 [21.7 kB] Get: 278 http://deb.debian.org/debian unstable/main amd64 libnet-netmask-perl all 2.0002-2 [28.6 kB] Get: 279 http://deb.debian.org/debian unstable/main amd64 libnetaddr-ip-perl amd64 4.079+dfsg-2+b5 [98.1 kB] Get: 280 http://deb.debian.org/debian unstable/main amd64 libdata-validate-ip-perl all 0.31-1 [20.6 kB] Get: 281 http://deb.debian.org/debian unstable/main amd64 libdata-validate-uri-perl all 0.07-3 [11.0 kB] Get: 282 http://deb.debian.org/debian unstable/main amd64 libdevel-size-perl amd64 0.84-1+b1 [24.2 kB] Get: 283 http://deb.debian.org/debian unstable/main amd64 libemail-address-xs-perl amd64 1.05-1+b4 [29.4 kB] Get: 284 http://deb.debian.org/debian unstable/main amd64 libipc-system-simple-perl all 1.30-2 [26.8 kB] Get: 285 http://deb.debian.org/debian unstable/main amd64 libfile-basedir-perl all 0.09-2 [15.1 kB] Get: 286 http://deb.debian.org/debian unstable/main amd64 libfile-find-rule-perl all 0.34-3 [26.6 kB] Get: 287 http://deb.debian.org/debian unstable/main amd64 libio-string-perl all 1.08-4 [12.1 kB] Get: 288 http://deb.debian.org/debian unstable/main amd64 libfont-ttf-perl all 1.06-2 [318 kB] Get: 289 http://deb.debian.org/debian unstable/main amd64 libhtml-html5-entities-perl all 0.004-3 [21.0 kB] Get: 290 http://deb.debian.org/debian unstable/main amd64 libhtml-tokeparser-simple-perl all 3.16-4 [39.1 kB] Get: 291 http://deb.debian.org/debian unstable/main amd64 libipc-run3-perl all 0.049-1 [31.5 kB] Get: 292 http://deb.debian.org/debian unstable/main amd64 libjson-maybexs-perl all 1.004008-1 [12.9 kB] Get: 293 http://deb.debian.org/debian unstable/main amd64 liblist-compare-perl all 0.55-2 [65.7 kB] Get: 294 http://deb.debian.org/debian unstable/main amd64 liblist-someutils-perl all 0.59-1 [37.1 kB] Get: 295 http://deb.debian.org/debian unstable/main amd64 liblist-utilsby-perl all 0.12-2 [15.5 kB] Get: 296 http://deb.debian.org/debian unstable/main amd64 libmldbm-perl all 2.05-4 [16.8 kB] Get: 297 http://deb.debian.org/debian unstable/main amd64 libclass-method-modifiers-perl all 2.15-1 [18.0 kB] Get: 298 http://deb.debian.org/debian unstable/main amd64 libimport-into-perl all 1.002005-2 [11.3 kB] Get: 299 http://deb.debian.org/debian unstable/main amd64 librole-tiny-perl all 2.002004-1 [21.4 kB] Get: 300 http://deb.debian.org/debian unstable/main amd64 libsub-quote-perl all 2.006008-1 [21.8 kB] Get: 301 http://deb.debian.org/debian unstable/main amd64 libmoo-perl all 2.005005-1 [58.0 kB] Get: 302 http://deb.debian.org/debian unstable/main amd64 libstrictures-perl all 2.000006-1 [18.6 kB] Get: 303 http://deb.debian.org/debian unstable/main amd64 libmoox-aliases-perl all 0.001006-2 [7156 B] Get: 304 http://deb.debian.org/debian unstable/main amd64 libperlio-gzip-perl amd64 0.20-1+b4 [17.5 kB] Get: 305 http://deb.debian.org/debian unstable/main amd64 libperlio-utf8-strict-perl amd64 0.010-1+b3 [11.4 kB] Get: 306 http://deb.debian.org/debian unstable/main amd64 libproc-processtable-perl amd64 0.636-1+b3 [42.3 kB] Get: 307 http://deb.debian.org/debian unstable/main amd64 libregexp-wildcards-perl all 1.05-3 [14.1 kB] Get: 308 http://deb.debian.org/debian unstable/main amd64 libsereal-decoder-perl amd64 5.004+ds-1+b3 [100 kB] Get: 309 http://deb.debian.org/debian unstable/main amd64 libsereal-encoder-perl amd64 5.004+ds-1+b3 [104 kB] Get: 310 http://deb.debian.org/debian unstable/main amd64 libterm-readkey-perl amd64 2.38-2+b4 [24.6 kB] Get: 311 http://deb.debian.org/debian unstable/main amd64 libtext-levenshteinxs-perl amd64 0.03-5+b4 [8720 B] Get: 312 http://deb.debian.org/debian unstable/main amd64 libmarkdown2 amd64 2.2.7-2.1 [36.0 kB] Get: 313 http://deb.debian.org/debian unstable/main amd64 libtext-markdown-discount-perl amd64 0.18-1 [13.1 kB] Get: 314 http://deb.debian.org/debian unstable/main amd64 libdata-messagepack-perl amd64 1.02-1+b4 [32.8 kB] Get: 315 http://deb.debian.org/debian unstable/main amd64 libtext-xslate-perl amd64 3.5.9-2+b1 [174 kB] Get: 316 http://deb.debian.org/debian unstable/main amd64 libtime-duration-perl all 1.21-2 [13.1 kB] Get: 317 http://deb.debian.org/debian unstable/main amd64 libtime-moment-perl amd64 0.44-2+b4 [73.2 kB] Get: 318 http://deb.debian.org/debian unstable/main amd64 libunicode-utf8-perl amd64 0.62-2+b3 [20.4 kB] Get: 319 http://deb.debian.org/debian unstable/main amd64 libcgi-pm-perl all 4.67-1 [217 kB] Get: 320 http://deb.debian.org/debian unstable/main amd64 libhtml-form-perl all 6.12-1 [32.3 kB] Get: 321 http://deb.debian.org/debian unstable/main amd64 libwww-mechanize-perl all 2.19-1 [114 kB] Get: 322 http://deb.debian.org/debian unstable/main amd64 libxml-namespacesupport-perl all 1.12-2 [15.1 kB] Get: 323 http://deb.debian.org/debian unstable/main amd64 libxml-sax-base-perl all 1.09-3 [20.6 kB] Get: 324 http://deb.debian.org/debian unstable/main amd64 libxml-sax-perl all 1.02+dfsg-4 [53.4 kB] Get: 325 http://deb.debian.org/debian unstable/main amd64 libxml-libxml-perl amd64 2.0207+dfsg+really+2.0134-5+b2 [314 kB] Get: 326 http://deb.debian.org/debian unstable/main amd64 liblz1 amd64 1.15-2 [38.9 kB] Get: 327 http://deb.debian.org/debian unstable/main amd64 plzip amd64 1.12-1 [65.0 kB] Get: 328 http://deb.debian.org/debian unstable/main amd64 liblzo2-2 amd64 2.10-3+b1 [55.1 kB] Get: 329 http://deb.debian.org/debian unstable/main amd64 lzop amd64 1.04-2 [84.2 kB] Get: 330 http://deb.debian.org/debian unstable/main amd64 patchutils amd64 0.4.2-1 [77.5 kB] Get: 331 http://deb.debian.org/debian unstable/main amd64 t1utils amd64 1.41-4 [62.1 kB] Get: 332 http://deb.debian.org/debian unstable/main amd64 unzip amd64 6.0-28 [166 kB] Get: 333 http://deb.debian.org/debian unstable/main amd64 lintian all 2.121.1 [1058 kB] Get: 334 http://deb.debian.org/debian unstable/main amd64 libconfig-model-dpkg-perl all 3.010 [174 kB] Get: 335 http://deb.debian.org/debian unstable/main amd64 libconvert-binhex-perl all 1.125-3 [27.4 kB] Get: 336 http://deb.debian.org/debian unstable/main amd64 libnet-smtp-ssl-perl all 1.04-2 [6548 B] Get: 337 http://deb.debian.org/debian unstable/main amd64 libmailtools-perl all 2.22-1 [88.8 kB] Get: 338 http://deb.debian.org/debian unstable/main amd64 libmime-tools-perl all 5.515-1 [203 kB] Get: 339 http://deb.debian.org/debian unstable/main amd64 libsuitesparseconfig7 amd64 1:7.8.3+dfsg-3 [23.9 kB] Get: 340 http://deb.debian.org/debian unstable/main amd64 libamd3 amd64 1:7.8.3+dfsg-3 [40.8 kB] Get: 341 http://deb.debian.org/debian unstable/main amd64 libblas3 amd64 3.12.1-2 [160 kB] Get: 342 http://deb.debian.org/debian unstable/main amd64 libgfortran5 amd64 14.2.0-17 [836 kB] Get: 343 http://deb.debian.org/debian unstable/main amd64 liblapack3 amd64 3.12.1-2 [2452 kB] Get: 344 http://deb.debian.org/debian unstable/main amd64 libarpack2t64 amd64 3.9.1-4 [104 kB] Get: 345 http://deb.debian.org/debian unstable/main amd64 libccolamd3 amd64 1:7.8.3+dfsg-3 [39.3 kB] Get: 346 http://deb.debian.org/debian unstable/main amd64 libcamd3 amd64 1:7.8.3+dfsg-3 [37.6 kB] Get: 347 http://deb.debian.org/debian unstable/main amd64 libcolamd3 amd64 1:7.8.3+dfsg-3 [32.6 kB] Get: 348 http://deb.debian.org/debian unstable/main amd64 libcholmod5 amd64 1:7.8.3+dfsg-3 [639 kB] Get: 349 http://deb.debian.org/debian unstable/main amd64 libcxsparse4 amd64 1:7.8.3+dfsg-3 [84.1 kB] Get: 350 http://deb.debian.org/debian unstable/main amd64 libfftw3-double3 amd64 3.3.10-2+b1 [781 kB] Get: 351 http://deb.debian.org/debian unstable/main amd64 libfftw3-single3 amd64 3.3.10-2+b1 [809 kB] Get: 352 http://deb.debian.org/debian unstable/main amd64 libxfixes3 amd64 1:6.0.0-2+b4 [20.2 kB] Get: 353 http://deb.debian.org/debian unstable/main amd64 libxcursor1 amd64 1:1.2.3-1 [39.7 kB] Get: 354 http://deb.debian.org/debian unstable/main amd64 libxft2 amd64 2.3.6-1+b4 [54.5 kB] Get: 355 http://deb.debian.org/debian unstable/main amd64 libxinerama1 amd64 2:1.1.4-3+b3 [16.0 kB] Get: 356 http://deb.debian.org/debian unstable/main amd64 libfltk1.3t64 amd64 1.3.8-6.1+b1 [556 kB] Get: 357 http://deb.debian.org/debian unstable/main amd64 libglvnd0 amd64 1.7.0-1+b2 [52.0 kB] Get: 358 http://deb.debian.org/debian unstable/main amd64 libdrm-common all 2.4.123-1 [8084 B] Get: 359 http://deb.debian.org/debian unstable/main amd64 libdrm2 amd64 2.4.123-1 [38.7 kB] Get: 360 http://deb.debian.org/debian unstable/main amd64 libglapi-mesa amd64 24.3.4-3 [38.5 kB] Get: 361 http://deb.debian.org/debian unstable/main amd64 libx11-xcb1 amd64 2:1.8.10-2 [241 kB] Get: 362 http://deb.debian.org/debian unstable/main amd64 libxcb-dri3-0 amd64 1.17.0-2+b1 [107 kB] Get: 363 http://deb.debian.org/debian unstable/main amd64 libxcb-glx0 amd64 1.17.0-2+b1 [122 kB] Get: 364 http://deb.debian.org/debian unstable/main amd64 libxcb-present0 amd64 1.17.0-2+b1 [106 kB] Get: 365 http://deb.debian.org/debian unstable/main amd64 libxcb-xfixes0 amd64 1.17.0-2+b1 [109 kB] Get: 366 http://deb.debian.org/debian unstable/main amd64 libxxf86vm1 amd64 1:1.1.4-1+b4 [19.3 kB] Get: 367 http://deb.debian.org/debian unstable/main amd64 libdrm-amdgpu1 amd64 2.4.123-1 [22.3 kB] Get: 368 http://deb.debian.org/debian unstable/main amd64 libpciaccess0 amd64 0.17-3+b3 [51.9 kB] Get: 369 http://deb.debian.org/debian unstable/main amd64 libdrm-intel1 amd64 2.4.123-1 [63.7 kB] Get: 370 http://deb.debian.org/debian unstable/main amd64 libdrm-radeon1 amd64 2.4.123-1 [22.3 kB] Get: 371 http://deb.debian.org/debian unstable/main amd64 libz3-4 amd64 4.13.3-1 [8560 kB] Get: 372 http://deb.debian.org/debian unstable/main amd64 libllvm19 amd64 1:19.1.7-1+b1 [26.0 MB] Get: 373 http://deb.debian.org/debian unstable/main amd64 libsensors-config all 1:3.6.0-10 [14.6 kB] Get: 374 http://deb.debian.org/debian unstable/main amd64 libsensors5 amd64 1:3.6.0-10+b1 [35.1 kB] Get: 375 http://deb.debian.org/debian unstable/main amd64 libxcb-randr0 amd64 1.17.0-2+b1 [117 kB] Get: 376 http://deb.debian.org/debian unstable/main amd64 libxcb-sync1 amd64 1.17.0-2+b1 [109 kB] Get: 377 http://deb.debian.org/debian unstable/main amd64 libxshmfence1 amd64 1.3-1+b3 [8852 B] Get: 378 http://deb.debian.org/debian unstable/main amd64 mesa-libgallium amd64 24.3.4-3 [9492 kB] Get: 379 http://deb.debian.org/debian unstable/main amd64 libwayland-server0 amd64 1.23.1-3 [34.4 kB] Get: 380 http://deb.debian.org/debian unstable/main amd64 libgbm1 amd64 24.3.4-3 [43.7 kB] Get: 381 http://deb.debian.org/debian unstable/main amd64 libvulkan1 amd64 1.4.304.0-1 [129 kB] Get: 382 http://deb.debian.org/debian unstable/main amd64 libgl1-mesa-dri amd64 24.3.4-3 [45.2 kB] Get: 383 http://deb.debian.org/debian unstable/main amd64 libglx-mesa0 amd64 24.3.4-3 [143 kB] Get: 384 http://deb.debian.org/debian unstable/main amd64 libglx0 amd64 1.7.0-1+b2 [34.9 kB] Get: 385 http://deb.debian.org/debian unstable/main amd64 libgl1 amd64 1.7.0-1+b2 [89.5 kB] Get: 386 http://deb.debian.org/debian unstable/main amd64 libfltk-gl1.3t64 amd64 1.3.8-6.1+b1 [63.0 kB] Get: 387 http://deb.debian.org/debian unstable/main amd64 libgl2ps1.4 amd64 1.4.2+dfsg1-2 [41.3 kB] Get: 388 http://deb.debian.org/debian unstable/main amd64 libltdl7 amd64 2.5.4-3 [415 kB] Get: 389 http://deb.debian.org/debian unstable/main amd64 libglpk40 amd64 5.0-1+b2 [401 kB] Get: 390 http://deb.debian.org/debian unstable/main amd64 libopengl0 amd64 1.7.0-1+b2 [30.9 kB] Get: 391 http://deb.debian.org/debian unstable/main amd64 libglu1-mesa amd64 9.0.2-1.1+b3 [184 kB] Get: 392 http://deb.debian.org/debian unstable/main amd64 libgif7 amd64 5.2.2-1+b1 [44.2 kB] Get: 393 http://deb.debian.org/debian unstable/main amd64 libhwy1t64 amd64 1.2.0-2+b2 [676 kB] Get: 394 http://deb.debian.org/debian unstable/main amd64 liblcms2-2 amd64 2.16-2 [160 kB] Get: 395 http://deb.debian.org/debian unstable/main amd64 libimath-3-1-29t64 amd64 3.1.12-1+b3 [45.5 kB] Get: 396 http://deb.debian.org/debian unstable/main amd64 libopenexr-3-1-30 amd64 3.1.5-5.1+b4 [935 kB] Get: 397 http://deb.debian.org/debian unstable/main amd64 libjxl0.10 amd64 0.10.4-2 [1096 kB] Get: 398 http://deb.debian.org/debian unstable/main amd64 libwmflite-0.2-7 amd64 0.2.13-1.1+b3 [75.6 kB] Get: 399 http://deb.debian.org/debian unstable/main amd64 libgraphicsmagick-q16-3t64 amd64 1.4+really1.3.45-1+b2 [1228 kB] Get: 400 http://deb.debian.org/debian unstable/main amd64 libgraphicsmagick++-q16-12t64 amd64 1.4+really1.3.45-1+b2 [126 kB] Get: 401 http://deb.debian.org/debian unstable/main amd64 libcurl4t64 amd64 8.12.1-2 [369 kB] Get: 402 http://deb.debian.org/debian unstable/main amd64 libaec0 amd64 1.1.3-1+b1 [23.8 kB] Get: 403 http://deb.debian.org/debian unstable/main amd64 libsz2 amd64 1.1.3-1+b1 [8080 B] Get: 404 http://deb.debian.org/debian unstable/main amd64 libhdf5-310 amd64 1.14.5+repack-3 [1344 kB] Get: 405 http://deb.debian.org/debian unstable/main amd64 libasound2-data all 1.2.13-1 [21.1 kB] Get: 406 http://deb.debian.org/debian unstable/main amd64 libasound2t64 amd64 1.2.13-1+b1 [373 kB] Get: 407 http://deb.debian.org/debian unstable/main amd64 libopus0 amd64 1.5.2-2 [2852 kB] Get: 408 http://deb.debian.org/debian unstable/main amd64 libsamplerate0 amd64 0.2.2-4+b2 [950 kB] Get: 409 http://deb.debian.org/debian unstable/main amd64 libjack-jackd2-0 amd64 1.9.22~dfsg-4 [287 kB] Get: 410 http://deb.debian.org/debian unstable/main amd64 libportaudio2 amd64 19.6.0-1.2+b3 [64.8 kB] Get: 411 http://deb.debian.org/debian unstable/main amd64 libqhull-r8.0 amd64 2020.2-6+b2 [248 kB] Get: 412 http://deb.debian.org/debian unstable/main amd64 libqrupdate1 amd64 1.1.5-1 [39.9 kB] Get: 413 http://deb.debian.org/debian unstable/main amd64 libqscintilla2-qt6-l10n all 2.14.1+dfsg-1 [105 kB] Get: 414 http://deb.debian.org/debian unstable/main amd64 libb2-1 amd64 0.98.1-1.1+b2 [41.7 kB] Get: 415 http://deb.debian.org/debian unstable/main amd64 libdouble-conversion3 amd64 3.3.1-1 [41.8 kB] Get: 416 http://deb.debian.org/debian unstable/main amd64 libpcre2-16-0 amd64 10.45-1 [281 kB] Get: 417 http://deb.debian.org/debian unstable/main amd64 libqt6core6t64 amd64 6.7.2+dfsg-6 [1799 kB] Get: 418 http://deb.debian.org/debian unstable/main amd64 libwayland-client0 amd64 1.23.1-3 [26.8 kB] Get: 419 http://deb.debian.org/debian unstable/main amd64 libegl-mesa0 amd64 24.3.4-3 [127 kB] Get: 420 http://deb.debian.org/debian unstable/main amd64 libegl1 amd64 1.7.0-1+b2 [34.6 kB] Get: 421 http://deb.debian.org/debian unstable/main amd64 x11-common all 1:7.7+24 [217 kB] Get: 422 http://deb.debian.org/debian unstable/main amd64 libice6 amd64 2:1.1.1-1 [65.4 kB] Get: 423 http://deb.debian.org/debian unstable/main amd64 libevdev2 amd64 1.13.3+dfsg-1 [32.2 kB] Get: 424 http://deb.debian.org/debian unstable/main amd64 libmtdev1t64 amd64 1.1.7-1 [22.6 kB] Get: 425 http://deb.debian.org/debian unstable/main amd64 libgudev-1.0-0 amd64 238-6 [14.5 kB] Get: 426 http://deb.debian.org/debian unstable/main amd64 libwacom-common all 2.14.0-1 [103 kB] Get: 427 http://deb.debian.org/debian unstable/main amd64 libwacom9 amd64 2.14.0-1 [25.3 kB] Get: 428 http://deb.debian.org/debian unstable/main amd64 libinput-bin amd64 1.27.1-1 [26.0 kB] Get: 429 http://deb.debian.org/debian unstable/main amd64 libinput10 amd64 1.27.1-1 [135 kB] Get: 430 http://deb.debian.org/debian unstable/main amd64 libmd4c0 amd64 0.5.2-2+b1 [49.0 kB] Get: 431 http://deb.debian.org/debian unstable/main amd64 libdbus-1-3 amd64 1.16.0-1 [177 kB] Get: 432 http://deb.debian.org/debian unstable/main amd64 libqt6dbus6 amd64 6.7.2+dfsg-6 [260 kB] Get: 433 http://deb.debian.org/debian unstable/main amd64 libsm6 amd64 2:1.2.4-1 [35.2 kB] Get: 434 http://deb.debian.org/debian unstable/main amd64 libts0t64 amd64 1.22-1.1+b1 [61.7 kB] Get: 435 http://deb.debian.org/debian unstable/main amd64 libxcb-util1 amd64 0.4.1-1 [23.5 kB] Get: 436 http://deb.debian.org/debian unstable/main amd64 libxcb-image0 amd64 0.4.0-2+b2 [22.2 kB] Get: 437 http://deb.debian.org/debian unstable/main amd64 libxcb-render-util0 amd64 0.3.10-1 [18.4 kB] Get: 438 http://deb.debian.org/debian unstable/main amd64 libxcb-cursor0 amd64 0.1.5-1 [17.1 kB] Get: 439 http://deb.debian.org/debian unstable/main amd64 libxcb-icccm4 amd64 0.4.2-1 [27.5 kB] Get: 440 http://deb.debian.org/debian unstable/main amd64 libxcb-keysyms1 amd64 0.4.1-1 [16.7 kB] Get: 441 http://deb.debian.org/debian unstable/main amd64 libxcb-shape0 amd64 1.17.0-2+b1 [106 kB] Get: 442 http://deb.debian.org/debian unstable/main amd64 libxcb-xinput0 amd64 1.17.0-2+b1 [130 kB] Get: 443 http://deb.debian.org/debian unstable/main amd64 libxcb-xkb1 amd64 1.17.0-2+b1 [130 kB] Get: 444 http://deb.debian.org/debian unstable/main amd64 xkb-data all 2.42-1 [790 kB] Get: 445 http://deb.debian.org/debian unstable/main amd64 libxkbcommon0 amd64 1.7.0-2 [113 kB] Get: 446 http://deb.debian.org/debian unstable/main amd64 libxkbcommon-x11-0 amd64 1.7.0-2 [16.2 kB] Get: 447 http://deb.debian.org/debian unstable/main amd64 libqt6gui6 amd64 6.7.2+dfsg-6 [3019 kB] Get: 448 http://deb.debian.org/debian unstable/main amd64 libavahi-common-data amd64 0.8-16 [112 kB] Get: 449 http://deb.debian.org/debian unstable/main amd64 libavahi-common3 amd64 0.8-16 [44.2 kB] Get: 450 http://deb.debian.org/debian unstable/main amd64 libavahi-client3 amd64 0.8-16 [48.4 kB] Get: 451 http://deb.debian.org/debian unstable/main amd64 libcups2t64 amd64 2.4.10-2+b1 [251 kB] Get: 452 http://deb.debian.org/debian unstable/main amd64 libqt6widgets6 amd64 6.7.2+dfsg-6 [2586 kB] Get: 453 http://deb.debian.org/debian unstable/main amd64 libqt6printsupport6 amd64 6.7.2+dfsg-6 [214 kB] Get: 454 http://deb.debian.org/debian unstable/main amd64 libqscintilla2-qt6-15 amd64 2.14.1+dfsg-1+b4 [1174 kB] Get: 455 http://deb.debian.org/debian unstable/main amd64 libqt6core5compat6 amd64 6.7.2-3 [135 kB] Get: 456 http://deb.debian.org/debian unstable/main amd64 libqt6sql6 amd64 6.7.2+dfsg-6 [138 kB] Get: 457 http://deb.debian.org/debian unstable/main amd64 libqt6help6 amd64 6.7.2-6 [180 kB] Get: 458 http://deb.debian.org/debian unstable/main amd64 libduktape207 amd64 2.7.0-2+b2 [135 kB] Get: 459 http://deb.debian.org/debian unstable/main amd64 libproxy1v5 amd64 0.5.9-1 [26.4 kB] Get: 460 http://deb.debian.org/debian unstable/main amd64 libqt6network6 amd64 6.7.2+dfsg-6 [766 kB] Get: 461 http://deb.debian.org/debian unstable/main amd64 libqt6opengl6 amd64 6.7.2+dfsg-6 [405 kB] Get: 462 http://deb.debian.org/debian unstable/main amd64 libqt6openglwidgets6 amd64 6.7.2+dfsg-6 [49.3 kB] Get: 463 http://deb.debian.org/debian unstable/main amd64 libqt6xml6 amd64 6.7.2+dfsg-6 [83.7 kB] Get: 464 http://deb.debian.org/debian unstable/main amd64 libogg0 amd64 1.3.5-3+b2 [23.8 kB] Get: 465 http://deb.debian.org/debian unstable/main amd64 libflac12t64 amd64 1.4.3+ds-4 [201 kB] Get: 466 http://deb.debian.org/debian unstable/main amd64 libmp3lame0 amd64 3.100-6+b3 [363 kB] Get: 467 http://deb.debian.org/debian unstable/main amd64 libmpg123-0t64 amd64 1.32.10-1 [149 kB] Get: 468 http://deb.debian.org/debian unstable/main amd64 libvorbis0a amd64 1.3.7-2+b1 [91.1 kB] Get: 469 http://deb.debian.org/debian unstable/main amd64 libvorbisenc2 amd64 1.3.7-2+b1 [76.1 kB] Get: 470 http://deb.debian.org/debian unstable/main amd64 libsndfile1 amd64 1.2.2-2 [199 kB] Get: 471 http://deb.debian.org/debian unstable/main amd64 libspqr4 amd64 1:7.8.3+dfsg-3 [146 kB] Get: 472 http://deb.debian.org/debian unstable/main amd64 libumfpack6 amd64 1:7.8.3+dfsg-3 [280 kB] Get: 473 http://deb.debian.org/debian unstable/main amd64 libtext-unidecode-perl all 1.30-3 [101 kB] Get: 474 http://deb.debian.org/debian unstable/main amd64 texinfo-lib amd64 7.1.1-1+b1 [232 kB] Get: 475 http://deb.debian.org/debian unstable/main amd64 tex-common all 6.18 [32.5 kB] Get: 476 http://deb.debian.org/debian unstable/main amd64 texinfo all 7.1.1-1 [1753 kB] Get: 477 http://deb.debian.org/debian unstable/main amd64 octave-common all 9.4.0-1 [6593 kB] Get: 478 http://deb.debian.org/debian unstable/main amd64 octave amd64 9.4.0-1 [9740 kB] Get: 479 http://deb.debian.org/debian unstable/main amd64 libncurses6 amd64 6.5+20250216-1 [105 kB] Get: 480 http://deb.debian.org/debian unstable/main amd64 libncurses-dev amd64 6.5+20250216-1 [353 kB] Get: 481 http://deb.debian.org/debian unstable/main amd64 libreadline-dev amd64 8.2-6 [153 kB] Get: 482 http://deb.debian.org/debian unstable/main amd64 libhdf5-fortran-310 amd64 1.14.5+repack-3 [111 kB] Get: 483 http://deb.debian.org/debian unstable/main amd64 libhdf5-hl-310 amd64 1.14.5+repack-3 [69.3 kB] Get: 484 http://deb.debian.org/debian unstable/main amd64 libhdf5-hl-fortran-310 amd64 1.14.5+repack-3 [43.9 kB] Get: 485 http://deb.debian.org/debian unstable/main amd64 libhdf5-cpp-310 amd64 1.14.5+repack-3 [133 kB] Get: 486 http://deb.debian.org/debian unstable/main amd64 libhdf5-hl-cpp-310 amd64 1.14.5+repack-3 [24.4 kB] Get: 487 http://deb.debian.org/debian unstable/main amd64 zlib1g-dev amd64 1:1.3.dfsg+really1.3.1-1+b1 [920 kB] Get: 488 http://deb.debian.org/debian unstable/main amd64 libjpeg62-turbo-dev amd64 1:2.1.5-3+b1 [292 kB] Get: 489 http://deb.debian.org/debian unstable/main amd64 libjpeg-dev amd64 1:2.1.5-3+b1 [72.2 kB] Get: 490 http://deb.debian.org/debian unstable/main amd64 libaec-dev amd64 1.1.3-1+b1 [21.5 kB] Get: 491 http://deb.debian.org/debian unstable/main amd64 libbrotli-dev amd64 1.1.0-2+b6 [316 kB] Get: 492 http://deb.debian.org/debian unstable/main amd64 libidn2-dev amd64 2.3.7-2+b1 [123 kB] Get: 493 http://deb.debian.org/debian unstable/main amd64 libgssrpc4t64 amd64 1.21.3-4 [60.0 kB] Get: 494 http://deb.debian.org/debian unstable/main amd64 libkadm5clnt-mit12 amd64 1.21.3-4 [42.2 kB] Get: 495 http://deb.debian.org/debian unstable/main amd64 libkdb5-10t64 amd64 1.21.3-4 [42.4 kB] Get: 496 http://deb.debian.org/debian unstable/main amd64 libkadm5srv-mit12 amd64 1.21.3-4 [54.2 kB] Get: 497 http://deb.debian.org/debian unstable/main amd64 krb5-multidev amd64 1.21.3-4 [126 kB] Get: 498 http://deb.debian.org/debian unstable/main amd64 libkrb5-dev amd64 1.21.3-4 [15.9 kB] Get: 499 http://deb.debian.org/debian unstable/main amd64 libldap-dev amd64 2.6.9+dfsg-1 [307 kB] Get: 500 http://deb.debian.org/debian unstable/main amd64 libpkgconf3 amd64 1.8.1-4 [36.4 kB] Get: 501 http://deb.debian.org/debian unstable/main amd64 pkgconf-bin amd64 1.8.1-4 [30.2 kB] Get: 502 http://deb.debian.org/debian unstable/main amd64 pkgconf amd64 1.8.1-4 [26.2 kB] Get: 503 http://deb.debian.org/debian unstable/main amd64 libnghttp2-dev amd64 1.64.0-1 [115 kB] Get: 504 http://deb.debian.org/debian unstable/main amd64 libnghttp3-dev amd64 1.6.0-2 [88.5 kB] Get: 505 http://deb.debian.org/debian unstable/main amd64 libpsl-dev amd64 0.21.2-1.1+b1 [77.6 kB] Get: 506 http://deb.debian.org/debian unstable/main amd64 libgmpxx4ldbl amd64 2:6.3.0+dfsg-3 [329 kB] Get: 507 http://deb.debian.org/debian unstable/main amd64 libgmp-dev amd64 2:6.3.0+dfsg-3 [642 kB] Get: 508 http://deb.debian.org/debian unstable/main amd64 libevent-2.1-7t64 amd64 2.1.12-stable-10+b1 [182 kB] Get: 509 http://deb.debian.org/debian unstable/main amd64 libunbound8 amd64 1.22.0-1+b1 [598 kB] Get: 510 http://deb.debian.org/debian unstable/main amd64 libgnutls-dane0t64 amd64 3.8.9-2 [455 kB] Get: 511 http://deb.debian.org/debian unstable/main amd64 libgnutls-openssl27t64 amd64 3.8.9-2 [455 kB] Get: 512 http://deb.debian.org/debian unstable/main amd64 libp11-kit-dev amd64 0.25.5-3 [208 kB] Get: 513 http://deb.debian.org/debian unstable/main amd64 libtasn1-6-dev amd64 4.20.0-2 [99.2 kB] Get: 514 http://deb.debian.org/debian unstable/main amd64 nettle-dev amd64 3.10.1-1 [1318 kB] Get: 515 http://deb.debian.org/debian unstable/main amd64 libgnutls28-dev amd64 3.8.9-2 [1401 kB] Get: 516 http://deb.debian.org/debian unstable/main amd64 librtmp-dev amd64 2.4+20151223.gitfa8646d.1-2+b5 [68.0 kB] Get: 517 http://deb.debian.org/debian unstable/main amd64 libssl-dev amd64 3.4.1-1 [2787 kB] Get: 518 http://deb.debian.org/debian unstable/main amd64 libssh2-1-dev amd64 1.11.1-1 [393 kB] Get: 519 http://deb.debian.org/debian unstable/main amd64 libzstd-dev amd64 1.5.6+dfsg-2 [365 kB] Get: 520 http://deb.debian.org/debian unstable/main amd64 libcurl4-openssl-dev amd64 8.12.1-2 [483 kB] Get: 521 http://deb.debian.org/debian unstable/main amd64 hdf5-helpers amd64 1.14.5+repack-3 [26.6 kB] Get: 522 http://deb.debian.org/debian unstable/main amd64 libhdf5-dev amd64 1.14.5+repack-3 [3165 kB] Get: 523 http://deb.debian.org/debian unstable/main amd64 xorg-sgml-doctools all 1:1.11-1.1 [22.1 kB] Get: 524 http://deb.debian.org/debian unstable/main amd64 x11proto-dev all 2024.1-1 [603 kB] Get: 525 http://deb.debian.org/debian unstable/main amd64 libxau-dev amd64 1:1.0.11-1 [23.6 kB] Get: 526 http://deb.debian.org/debian unstable/main amd64 libxdmcp-dev amd64 1:1.1.5-1 [44.3 kB] Get: 527 http://deb.debian.org/debian unstable/main amd64 xtrans-dev all 1.4.0-1 [98.7 kB] Get: 528 http://deb.debian.org/debian unstable/main amd64 libxcb1-dev amd64 1.17.0-2+b1 [181 kB] Get: 529 http://deb.debian.org/debian unstable/main amd64 libx11-dev amd64 2:1.8.10-2 [891 kB] Get: 530 http://deb.debian.org/debian unstable/main amd64 libglx-dev amd64 1.7.0-1+b2 [15.8 kB] Get: 531 http://deb.debian.org/debian unstable/main amd64 libgl-dev amd64 1.7.0-1+b2 [101 kB] Get: 532 http://deb.debian.org/debian unstable/main amd64 libblas-dev amd64 3.12.1-2 [170 kB] Get: 533 http://deb.debian.org/debian unstable/main amd64 liblapack-dev amd64 3.12.1-2 [4998 kB] Get: 534 http://deb.debian.org/debian unstable/main amd64 libfftw3-long3 amd64 3.3.10-2+b1 [347 kB] Get: 535 http://deb.debian.org/debian unstable/main amd64 libfftw3-quad3 amd64 3.3.10-2+b1 [618 kB] Get: 536 http://deb.debian.org/debian unstable/main amd64 libfftw3-bin amd64 3.3.10-2+b1 [51.3 kB] Get: 537 http://deb.debian.org/debian unstable/main amd64 libfftw3-dev amd64 3.3.10-2+b1 [2118 kB] Get: 538 http://deb.debian.org/debian unstable/main amd64 libgfortran-14-dev amd64 14.2.0-17 [879 kB] Get: 539 http://deb.debian.org/debian unstable/main amd64 gfortran-14-x86-64-linux-gnu amd64 14.2.0-17 [11.7 MB] Get: 540 http://deb.debian.org/debian unstable/main amd64 gfortran-14 amd64 14.2.0-17 [14.0 kB] Get: 541 http://deb.debian.org/debian unstable/main amd64 gfortran-x86-64-linux-gnu amd64 4:14.2.0-1 [1284 B] Get: 542 http://deb.debian.org/debian unstable/main amd64 gfortran amd64 4:14.2.0-1 [1436 B] Get: 543 http://deb.debian.org/debian unstable/main amd64 octave-dev amd64 9.4.0-1 [1007 kB] Get: 544 http://deb.debian.org/debian unstable/main amd64 dh-octave all 1.8.0 [22.7 kB] Get: 545 http://deb.debian.org/debian unstable/main amd64 python3-mpmath all 1.3.0-1 [419 kB] Get: 546 http://deb.debian.org/debian unstable/main amd64 python3-packaging all 24.2-1 [55.3 kB] Get: 547 http://deb.debian.org/debian unstable/main amd64 python3-sympy all 1.13.3-3 [4148 kB] Fetched 219 MB in 54s (4073 kB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal: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 ... 19798 files and directories currently installed.) Preparing to unpack .../libpython3.13-minimal_3.13.2-1_amd64.deb ... Unpacking libpython3.13-minimal:amd64 (3.13.2-1) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.6.4-1_amd64.deb ... Unpacking libexpat1:amd64 (2.6.4-1) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.2-1_amd64.deb ... Unpacking python3.13-minimal (3.13.2-1) ... Setting up libpython3.13-minimal:amd64 (3.13.2-1) ... Setting up libexpat1:amd64 (2.6.4-1) ... Setting up python3.13-minimal (3.13.2-1) ... Selecting previously unselected package python3-minimal. (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 ... 20132 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.1-2_amd64.deb ... Unpacking python3-minimal (3.13.1-2) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_11.0.0_all.deb ... Unpacking media-types (11.0.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2025a-2_all.deb ... Unpacking tzdata (2025a-2) ... Selecting previously unselected package libffi8:amd64. Preparing to unpack .../4-libffi8_3.4.7-1_amd64.deb ... Unpacking libffi8:amd64 (3.4.7-1) ... Selecting previously unselected package readline-common. Preparing to unpack .../5-readline-common_8.2-6_all.deb ... Unpacking readline-common (8.2-6) ... Selecting previously unselected package libreadline8t64:amd64. Preparing to unpack .../6-libreadline8t64_8.2-6_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:amd64 (8.2-6) ... Selecting previously unselected package libpython3.13-stdlib:amd64. Preparing to unpack .../7-libpython3.13-stdlib_3.13.2-1_amd64.deb ... Unpacking libpython3.13-stdlib:amd64 (3.13.2-1) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.2-1_amd64.deb ... Unpacking python3.13 (3.13.2-1) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../9-libpython3-stdlib_3.13.1-2_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.13.1-2) ... Setting up python3-minimal (3.13.1-2) ... Selecting previously unselected package python3. (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 ... 21142 files and directories currently installed.) Preparing to unpack .../000-python3_3.13.1-2_amd64.deb ... Unpacking python3 (3.13.1-2) ... Selecting previously unselected package libproc2-0:amd64. Preparing to unpack .../001-libproc2-0_2%3a4.0.4-7_amd64.deb ... Unpacking libproc2-0:amd64 (2:4.0.4-7) ... Selecting previously unselected package procps. Preparing to unpack .../002-procps_2%3a4.0.4-7_amd64.deb ... Unpacking procps (2:4.0.4-7) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../003-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package openssl. Preparing to unpack .../004-openssl_3.4.1-1_amd64.deb ... Unpacking openssl (3.4.1-1) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../005-ca-certificates_20241223_all.deb ... Unpacking ca-certificates (20241223) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../006-libmagic-mgc_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../007-libmagic1t64_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../008-file_1%3a5.45-3+b1_amd64.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../009-gettext-base_0.23.1-1_amd64.deb ... Unpacking gettext-base (0.23.1-1) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../010-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../011-groff-base_1.23.0-7_amd64.deb ... Unpacking groff-base (1.23.0-7) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../012-bsdextrautils_2.40.4-4_amd64.deb ... Unpacking bsdextrautils (2.40.4-4) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../013-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../014-man-db_2.13.0-1_amd64.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package libtext-charwidth-perl:amd64. Preparing to unpack .../015-libtext-charwidth-perl_0.04-11+b4_amd64.deb ... Unpacking libtext-charwidth-perl:amd64 (0.04-11+b4) ... Selecting previously unselected package libtext-wrapi18n-perl. Preparing to unpack .../016-libtext-wrapi18n-perl_0.06-10_all.deb ... Unpacking libtext-wrapi18n-perl (0.06-10) ... Selecting previously unselected package ucf. Preparing to unpack .../017-ucf_3.0050_all.deb ... Moving old data out of the way Unpacking ucf (3.0050) ... Selecting previously unselected package aglfn. Preparing to unpack .../018-aglfn_1.7+git20191031.4036a9c-2_all.deb ... Unpacking aglfn (1.7+git20191031.4036a9c-2) ... Selecting previously unselected package libglib2.0-0t64:amd64. Preparing to unpack .../019-libglib2.0-0t64_2.83.3-2_amd64.deb ... Unpacking libglib2.0-0t64:amd64 (2.83.3-2) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../020-libicu72_72.1-6_amd64.deb ... Unpacking libicu72:amd64 (72.1-6) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../021-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package shared-mime-info. Preparing to unpack .../022-shared-mime-info_2.4-5+b2_amd64.deb ... Unpacking shared-mime-info (2.4-5+b2) ... Selecting previously unselected package libbrotli1:amd64. Preparing to unpack .../023-libbrotli1_1.1.0-2+b6_amd64.deb ... Unpacking libbrotli1:amd64 (1.1.0-2+b6) ... Selecting previously unselected package libunistring5:amd64. Preparing to unpack .../024-libunistring5_1.3-1_amd64.deb ... Unpacking libunistring5:amd64 (1.3-1) ... Selecting previously unselected package libidn2-0:amd64. Preparing to unpack .../025-libidn2-0_2.3.7-2+b1_amd64.deb ... Unpacking libidn2-0:amd64 (2.3.7-2+b1) ... Selecting previously unselected package libp11-kit0:amd64. Preparing to unpack .../026-libp11-kit0_0.25.5-3_amd64.deb ... Unpacking libp11-kit0:amd64 (0.25.5-3) ... Selecting previously unselected package libtasn1-6:amd64. Preparing to unpack .../027-libtasn1-6_4.20.0-2_amd64.deb ... Unpacking libtasn1-6:amd64 (4.20.0-2) ... Selecting previously unselected package libgnutls30t64:amd64. Preparing to unpack .../028-libgnutls30t64_3.8.9-2_amd64.deb ... Unpacking libgnutls30t64:amd64 (3.8.9-2) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../029-libkrb5support0_1.21.3-4_amd64.deb ... Unpacking libkrb5support0:amd64 (1.21.3-4) ... Selecting previously unselected package libcom-err2:amd64. Preparing to unpack .../030-libcom-err2_1.47.2-1_amd64.deb ... Unpacking libcom-err2:amd64 (1.47.2-1) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../031-libk5crypto3_1.21.3-4_amd64.deb ... Unpacking libk5crypto3:amd64 (1.21.3-4) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../032-libkeyutils1_1.6.3-4_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6.3-4) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../033-libkrb5-3_1.21.3-4_amd64.deb ... Unpacking libkrb5-3:amd64 (1.21.3-4) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../034-libgssapi-krb5-2_1.21.3-4_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.21.3-4) ... Selecting previously unselected package libsasl2-modules-db:amd64. Preparing to unpack .../035-libsasl2-modules-db_2.1.28+dfsg1-8+b1_amd64.deb ... Unpacking libsasl2-modules-db:amd64 (2.1.28+dfsg1-8+b1) ... Selecting previously unselected package libsasl2-2:amd64. Preparing to unpack .../036-libsasl2-2_2.1.28+dfsg1-8+b1_amd64.deb ... Unpacking libsasl2-2:amd64 (2.1.28+dfsg1-8+b1) ... Selecting previously unselected package libldap2:amd64. Preparing to unpack .../037-libldap2_2.6.9+dfsg-1_amd64.deb ... Unpacking libldap2:amd64 (2.6.9+dfsg-1) ... Selecting previously unselected package libnghttp2-14:amd64. Preparing to unpack .../038-libnghttp2-14_1.64.0-1_amd64.deb ... Unpacking libnghttp2-14:amd64 (1.64.0-1) ... Selecting previously unselected package libnghttp3-9:amd64. Preparing to unpack .../039-libnghttp3-9_1.6.0-2_amd64.deb ... Unpacking libnghttp3-9:amd64 (1.6.0-2) ... Selecting previously unselected package libngtcp2-16:amd64. Preparing to unpack .../040-libngtcp2-16_1.9.1-1_amd64.deb ... Unpacking libngtcp2-16:amd64 (1.9.1-1) ... Selecting previously unselected package libngtcp2-crypto-gnutls8:amd64. Preparing to unpack .../041-libngtcp2-crypto-gnutls8_1.9.1-1_amd64.deb ... Unpacking libngtcp2-crypto-gnutls8:amd64 (1.9.1-1) ... Selecting previously unselected package libpsl5t64:amd64. Preparing to unpack .../042-libpsl5t64_0.21.2-1.1+b1_amd64.deb ... Unpacking libpsl5t64:amd64 (0.21.2-1.1+b1) ... Selecting previously unselected package librtmp1:amd64. Preparing to unpack .../043-librtmp1_2.4+20151223.gitfa8646d.1-2+b5_amd64.deb ... Unpacking librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Selecting previously unselected package libssh2-1t64:amd64. Preparing to unpack .../044-libssh2-1t64_1.11.1-1_amd64.deb ... Unpacking libssh2-1t64:amd64 (1.11.1-1) ... Selecting previously unselected package libcurl3t64-gnutls:amd64. Preparing to unpack .../045-libcurl3t64-gnutls_8.12.1-2_amd64.deb ... Unpacking libcurl3t64-gnutls:amd64 (8.12.1-2) ... Selecting previously unselected package libstemmer0d:amd64. Preparing to unpack .../046-libstemmer0d_2.2.0-4+b2_amd64.deb ... Unpacking libstemmer0d:amd64 (2.2.0-4+b2) ... Selecting previously unselected package libxmlb2:amd64. Preparing to unpack .../047-libxmlb2_0.3.21-1_amd64.deb ... Unpacking libxmlb2:amd64 (0.3.21-1) ... Selecting previously unselected package libyaml-0-2:amd64. Preparing to unpack .../048-libyaml-0-2_0.2.5-2_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.2.5-2) ... Selecting previously unselected package libappstream5:amd64. Preparing to unpack .../049-libappstream5_1.0.4-1_amd64.deb ... Unpacking libappstream5:amd64 (1.0.4-1) ... Selecting previously unselected package appstream. Preparing to unpack .../050-appstream_1.0.4-1_amd64.deb ... Unpacking appstream (1.0.4-1) ... Selecting previously unselected package m4. Preparing to unpack .../051-m4_1.4.19-5_amd64.deb ... Unpacking m4 (1.4.19-5) ... Selecting previously unselected package autoconf. Preparing to unpack .../052-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../053-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../054-automake_1%3a1.17-3_all.deb ... Unpacking automake (1:1.17-3) ... Selecting previously unselected package autopoint. Preparing to unpack .../055-autopoint_0.23.1-1_all.deb ... Unpacking autopoint (0.23.1-1) ... Selecting previously unselected package libcapture-tiny-perl. Preparing to unpack .../056-libcapture-tiny-perl_0.50-1_all.deb ... Unpacking libcapture-tiny-perl (0.50-1) ... Selecting previously unselected package libparams-util-perl. Preparing to unpack .../057-libparams-util-perl_1.102-3+b1_amd64.deb ... Unpacking libparams-util-perl (1.102-3+b1) ... Selecting previously unselected package libsub-install-perl. Preparing to unpack .../058-libsub-install-perl_0.929-1_all.deb ... Unpacking libsub-install-perl (0.929-1) ... Selecting previously unselected package libdata-optlist-perl. Preparing to unpack .../059-libdata-optlist-perl_0.114-1_all.deb ... Unpacking libdata-optlist-perl (0.114-1) ... Selecting previously unselected package libb-hooks-op-check-perl:amd64. Preparing to unpack .../060-libb-hooks-op-check-perl_0.22-3+b2_amd64.deb ... Unpacking libb-hooks-op-check-perl:amd64 (0.22-3+b2) ... Selecting previously unselected package libdynaloader-functions-perl. Preparing to unpack .../061-libdynaloader-functions-perl_0.004-1_all.deb ... Unpacking libdynaloader-functions-perl (0.004-1) ... Selecting previously unselected package libdevel-callchecker-perl:amd64. Preparing to unpack .../062-libdevel-callchecker-perl_0.009-1+b1_amd64.deb ... Unpacking libdevel-callchecker-perl:amd64 (0.009-1+b1) ... Selecting previously unselected package libparams-classify-perl:amd64. Preparing to unpack .../063-libparams-classify-perl_0.015-2+b4_amd64.deb ... Unpacking libparams-classify-perl:amd64 (0.015-2+b4) ... Selecting previously unselected package libmodule-runtime-perl. Preparing to unpack .../064-libmodule-runtime-perl_0.016-2_all.deb ... Unpacking libmodule-runtime-perl (0.016-2) ... Selecting previously unselected package libtry-tiny-perl. Preparing to unpack .../065-libtry-tiny-perl_0.32-1_all.deb ... Unpacking libtry-tiny-perl (0.32-1) ... Selecting previously unselected package libmodule-implementation-perl. Preparing to unpack .../066-libmodule-implementation-perl_0.09-2_all.deb ... Unpacking libmodule-implementation-perl (0.09-2) ... Selecting previously unselected package libpackage-stash-perl. Preparing to unpack .../067-libpackage-stash-perl_0.40-1_all.deb ... Unpacking libpackage-stash-perl (0.40-1) ... Selecting previously unselected package libclass-load-perl. Preparing to unpack .../068-libclass-load-perl_0.25-2_all.deb ... Unpacking libclass-load-perl (0.25-2) ... Selecting previously unselected package libio-stringy-perl. Preparing to unpack .../069-libio-stringy-perl_2.113-2_all.deb ... Unpacking libio-stringy-perl (2.113-2) ... Selecting previously unselected package libparams-validate-perl:amd64. Preparing to unpack .../070-libparams-validate-perl_1.31-2+b3_amd64.deb ... Unpacking libparams-validate-perl:amd64 (1.31-2+b3) ... Selecting previously unselected package libsub-exporter-perl. Preparing to unpack .../071-libsub-exporter-perl_0.990-1_all.deb ... Unpacking libsub-exporter-perl (0.990-1) ... Selecting previously unselected package libgetopt-long-descriptive-perl. Preparing to unpack .../072-libgetopt-long-descriptive-perl_0.116-2_all.deb ... Unpacking libgetopt-long-descriptive-perl (0.116-2) ... Selecting previously unselected package libio-tiecombine-perl. Preparing to unpack .../073-libio-tiecombine-perl_1.005-3_all.deb ... Unpacking libio-tiecombine-perl (1.005-3) ... Selecting previously unselected package libmodule-pluggable-perl. Preparing to unpack .../074-libmodule-pluggable-perl_5.2-5_all.deb ... Unpacking libmodule-pluggable-perl (5.2-5) ... Selecting previously unselected package libstring-rewriteprefix-perl. Preparing to unpack .../075-libstring-rewriteprefix-perl_0.009-1_all.deb ... Unpacking libstring-rewriteprefix-perl (0.009-1) ... Selecting previously unselected package libapp-cmd-perl. Preparing to unpack .../076-libapp-cmd-perl_0.337-2_all.deb ... Unpacking libapp-cmd-perl (0.337-2) ... Selecting previously unselected package libboolean-perl. Preparing to unpack .../077-libboolean-perl_0.46-3_all.deb ... Unpacking libboolean-perl (0.46-3) ... Selecting previously unselected package libsub-uplevel-perl. Preparing to unpack .../078-libsub-uplevel-perl_0.2800-3_all.deb ... Unpacking libsub-uplevel-perl (0.2800-3) ... Selecting previously unselected package libtest-exception-perl. Preparing to unpack .../079-libtest-exception-perl_0.43-3_all.deb ... Unpacking libtest-exception-perl (0.43-3) ... Selecting previously unselected package libcarp-assert-more-perl. Preparing to unpack .../080-libcarp-assert-more-perl_2.8.0-1_all.deb ... Unpacking libcarp-assert-more-perl (2.8.0-1) ... Selecting previously unselected package libfile-which-perl. Preparing to unpack .../081-libfile-which-perl_1.27-2_all.deb ... Unpacking libfile-which-perl (1.27-2) ... Selecting previously unselected package libfile-homedir-perl. Preparing to unpack .../082-libfile-homedir-perl_1.006-2_all.deb ... Unpacking libfile-homedir-perl (1.006-2) ... Selecting previously unselected package libclone-choose-perl. Preparing to unpack .../083-libclone-choose-perl_0.010-2_all.deb ... Unpacking libclone-choose-perl (0.010-2) ... Selecting previously unselected package libhash-merge-perl. Preparing to unpack .../084-libhash-merge-perl_0.302-1_all.deb ... Unpacking libhash-merge-perl (0.302-1) ... Selecting previously unselected package libjson-perl. Preparing to unpack .../085-libjson-perl_4.10000-1_all.deb ... Unpacking libjson-perl (4.10000-1) ... Selecting previously unselected package libexporter-tiny-perl. Preparing to unpack .../086-libexporter-tiny-perl_1.006002-1_all.deb ... Unpacking libexporter-tiny-perl (1.006002-1) ... Selecting previously unselected package liblist-moreutils-xs-perl. Preparing to unpack .../087-liblist-moreutils-xs-perl_0.430-4+b2_amd64.deb ... Unpacking liblist-moreutils-xs-perl (0.430-4+b2) ... Selecting previously unselected package liblist-moreutils-perl. Preparing to unpack .../088-liblist-moreutils-perl_0.430-2_all.deb ... Unpacking liblist-moreutils-perl (0.430-2) ... Selecting previously unselected package liblog-log4perl-perl. Preparing to unpack .../089-liblog-log4perl-perl_1.57-1_all.deb ... Unpacking liblog-log4perl-perl (1.57-1) ... Selecting previously unselected package libmouse-perl:amd64. Preparing to unpack .../090-libmouse-perl_2.5.11-1+b1_amd64.deb ... Unpacking libmouse-perl:amd64 (2.5.11-1+b1) ... Selecting previously unselected package libmousex-nativetraits-perl. Preparing to unpack .../091-libmousex-nativetraits-perl_1.09-3_all.deb ... Unpacking libmousex-nativetraits-perl (1.09-3) ... Selecting previously unselected package libmousex-strictconstructor-perl. Preparing to unpack .../092-libmousex-strictconstructor-perl_0.02-3_all.deb ... Unpacking libmousex-strictconstructor-perl (0.02-3) ... Selecting previously unselected package libparse-recdescent-perl. Preparing to unpack .../093-libparse-recdescent-perl_1.967015+dfsg-4_all.deb ... Unpacking libparse-recdescent-perl (1.967015+dfsg-4) ... Selecting previously unselected package libpath-tiny-perl. Preparing to unpack .../094-libpath-tiny-perl_0.146-1_all.deb ... Unpacking libpath-tiny-perl (0.146-1) ... Selecting previously unselected package libpod-pom-perl. Preparing to unpack .../095-libpod-pom-perl_2.01-4_all.deb ... Unpacking libpod-pom-perl (2.01-4) ... Selecting previously unselected package libregexp-common-perl. Preparing to unpack .../096-libregexp-common-perl_2024080801-1_all.deb ... Unpacking libregexp-common-perl (2024080801-1) ... Selecting previously unselected package libyaml-tiny-perl. Preparing to unpack .../097-libyaml-tiny-perl_1.76-1_all.deb ... Unpacking libyaml-tiny-perl (1.76-1) ... Selecting previously unselected package libconfig-model-perl. Preparing to unpack .../098-libconfig-model-perl_2.155-1_all.deb ... Unpacking libconfig-model-perl (2.155-1) ... Selecting previously unselected package libyaml-pp-perl. Preparing to unpack .../099-libyaml-pp-perl_0.39.0-1_all.deb ... Unpacking libyaml-pp-perl (0.39.0-1) ... Selecting previously unselected package cme. Preparing to unpack .../100-cme_1.041-1_all.deb ... Unpacking cme (1.041-1) ... Selecting previously unselected package comerr-dev:amd64. Preparing to unpack .../101-comerr-dev_2.1-1.47.2-1_amd64.deb ... Unpacking comerr-dev:amd64 (2.1-1.47.2-1) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../102-libdebhelper-perl_13.24.1_all.deb ... Unpacking libdebhelper-perl (13.24.1) ... Selecting previously unselected package libtool. Preparing to unpack .../103-libtool_2.5.4-3_all.deb ... Unpacking libtool (2.5.4-3) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../104-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../105-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../106-libfile-stripnondeterminism-perl_1.14.1-2_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.1-2) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../107-dh-strip-nondeterminism_1.14.1-2_all.deb ... Unpacking dh-strip-nondeterminism (1.14.1-2) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../108-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../109-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../110-gettext_0.23.1-1_amd64.deb ... Unpacking gettext (0.23.1-1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../111-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../112-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../113-debhelper_13.24.1_all.deb ... Unpacking debhelper (13.24.1) ... Selecting previously unselected package gnuplot-data. Preparing to unpack .../114-gnuplot-data_6.0.2+dfsg1-1_all.deb ... Unpacking gnuplot-data (6.0.2+dfsg1-1) ... Selecting previously unselected package libpng16-16t64:amd64. Preparing to unpack .../115-libpng16-16t64_1.6.46-4_amd64.deb ... Unpacking libpng16-16t64:amd64 (1.6.46-4) ... Selecting previously unselected package libfreetype6:amd64. Preparing to unpack .../116-libfreetype6_2.13.3+dfsg-1_amd64.deb ... Unpacking libfreetype6:amd64 (2.13.3+dfsg-1) ... Selecting previously unselected package fonts-dejavu-mono. Preparing to unpack .../117-fonts-dejavu-mono_2.37-8_all.deb ... Unpacking fonts-dejavu-mono (2.37-8) ... Selecting previously unselected package fonts-dejavu-core. Preparing to unpack .../118-fonts-dejavu-core_2.37-8_all.deb ... Unpacking fonts-dejavu-core (2.37-8) ... Selecting previously unselected package fonts-freefont-otf. Preparing to unpack .../119-fonts-freefont-otf_20211204+svn4273-2_all.deb ... Unpacking fonts-freefont-otf (20211204+svn4273-2) ... Selecting previously unselected package fontconfig-config. Preparing to unpack .../120-fontconfig-config_2.15.0-2_amd64.deb ... Unpacking fontconfig-config (2.15.0-2) ... Selecting previously unselected package libfontconfig1:amd64. Preparing to unpack .../121-libfontconfig1_2.15.0-2_amd64.deb ... Unpacking libfontconfig1:amd64 (2.15.0-2) ... Selecting previously unselected package libpixman-1-0:amd64. Preparing to unpack .../122-libpixman-1-0_0.44.0-3_amd64.deb ... Unpacking libpixman-1-0:amd64 (0.44.0-3) ... Selecting previously unselected package libxau6:amd64. Preparing to unpack .../123-libxau6_1%3a1.0.11-1_amd64.deb ... Unpacking libxau6:amd64 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp6:amd64. Preparing to unpack .../124-libxdmcp6_1%3a1.1.5-1_amd64.deb ... Unpacking libxdmcp6:amd64 (1:1.1.5-1) ... Selecting previously unselected package libxcb1:amd64. Preparing to unpack .../125-libxcb1_1.17.0-2+b1_amd64.deb ... Unpacking libxcb1:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libx11-data. Preparing to unpack .../126-libx11-data_2%3a1.8.10-2_all.deb ... Unpacking libx11-data (2:1.8.10-2) ... Selecting previously unselected package libx11-6:amd64. Preparing to unpack .../127-libx11-6_2%3a1.8.10-2_amd64.deb ... Unpacking libx11-6:amd64 (2:1.8.10-2) ... Selecting previously unselected package libxcb-render0:amd64. Preparing to unpack .../128-libxcb-render0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-render0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-shm0:amd64. Preparing to unpack .../129-libxcb-shm0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-shm0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxext6:amd64. Preparing to unpack .../130-libxext6_2%3a1.3.4-1+b3_amd64.deb ... Unpacking libxext6:amd64 (2:1.3.4-1+b3) ... Selecting previously unselected package libxrender1:amd64. Preparing to unpack .../131-libxrender1_1%3a0.9.10-1.1+b4_amd64.deb ... Unpacking libxrender1:amd64 (1:0.9.10-1.1+b4) ... Selecting previously unselected package libcairo2:amd64. Preparing to unpack .../132-libcairo2_1.18.2-2_amd64.deb ... Unpacking libcairo2:amd64 (1.18.2-2) ... Selecting previously unselected package libedit2:amd64. Preparing to unpack .../133-libedit2_3.1-20250104-1_amd64.deb ... Unpacking libedit2:amd64 (3.1-20250104-1) ... Selecting previously unselected package libaom3:amd64. Preparing to unpack .../134-libaom3_3.12.0-1_amd64.deb ... Unpacking libaom3:amd64 (3.12.0-1) ... Selecting previously unselected package libdav1d7:amd64. Preparing to unpack .../135-libdav1d7_1.5.1-1_amd64.deb ... Unpacking libdav1d7:amd64 (1.5.1-1) ... Selecting previously unselected package libabsl20230802:amd64. Preparing to unpack .../136-libabsl20230802_20230802.1-4_amd64.deb ... Unpacking libabsl20230802:amd64 (20230802.1-4) ... Selecting previously unselected package libgav1-1:amd64. Preparing to unpack .../137-libgav1-1_0.19.0-3_amd64.deb ... Unpacking libgav1-1:amd64 (0.19.0-3) ... Selecting previously unselected package librav1e0.7:amd64. Preparing to unpack .../138-librav1e0.7_0.7.1-9+b1_amd64.deb ... Unpacking librav1e0.7:amd64 (0.7.1-9+b1) ... Selecting previously unselected package libsvtav1enc2:amd64. Preparing to unpack .../139-libsvtav1enc2_2.3.0+dfsg-1_amd64.deb ... Unpacking libsvtav1enc2:amd64 (2.3.0+dfsg-1) ... Selecting previously unselected package libjpeg62-turbo:amd64. Preparing to unpack .../140-libjpeg62-turbo_1%3a2.1.5-3+b1_amd64.deb ... Unpacking libjpeg62-turbo:amd64 (1:2.1.5-3+b1) ... Selecting previously unselected package libyuv0:amd64. Preparing to unpack .../141-libyuv0_0.0.1904.20250204-1_amd64.deb ... Unpacking libyuv0:amd64 (0.0.1904.20250204-1) ... Selecting previously unselected package libavif16:amd64. Preparing to unpack .../142-libavif16_1.1.1-1_amd64.deb ... Unpacking libavif16:amd64 (1.1.1-1) ... Selecting previously unselected package libsharpyuv0:amd64. Preparing to unpack .../143-libsharpyuv0_1.5.0-0.1_amd64.deb ... Unpacking libsharpyuv0:amd64 (1.5.0-0.1) ... Selecting previously unselected package libheif-plugin-dav1d:amd64. Preparing to unpack .../144-libheif-plugin-dav1d_1.19.5-1+b1_amd64.deb ... Unpacking libheif-plugin-dav1d:amd64 (1.19.5-1+b1) ... Selecting previously unselected package libde265-0:amd64. Preparing to unpack .../145-libde265-0_1.0.15-1+b2_amd64.deb ... Unpacking libde265-0:amd64 (1.0.15-1+b2) ... Selecting previously unselected package libheif-plugin-libde265:amd64. Preparing to unpack .../146-libheif-plugin-libde265_1.19.5-1+b1_amd64.deb ... Unpacking libheif-plugin-libde265:amd64 (1.19.5-1+b1) ... Selecting previously unselected package libheif1:amd64. Preparing to unpack .../147-libheif1_1.19.5-1+b1_amd64.deb ... Unpacking libheif1:amd64 (1.19.5-1+b1) ... Selecting previously unselected package libimagequant0:amd64. Preparing to unpack .../148-libimagequant0_2.18.0-1+b2_amd64.deb ... Unpacking libimagequant0:amd64 (2.18.0-1+b2) ... Selecting previously unselected package libfribidi0:amd64. Preparing to unpack .../149-libfribidi0_1.0.16-1_amd64.deb ... Unpacking libfribidi0:amd64 (1.0.16-1) ... Selecting previously unselected package libgraphite2-3:amd64. Preparing to unpack .../150-libgraphite2-3_1.3.14-2+b1_amd64.deb ... Unpacking libgraphite2-3:amd64 (1.3.14-2+b1) ... Selecting previously unselected package libharfbuzz0b:amd64. Preparing to unpack .../151-libharfbuzz0b_10.2.0-1_amd64.deb ... Unpacking libharfbuzz0b:amd64 (10.2.0-1) ... Selecting previously unselected package libraqm0:amd64. Preparing to unpack .../152-libraqm0_0.10.2-1_amd64.deb ... Unpacking libraqm0:amd64 (0.10.2-1) ... Selecting previously unselected package libdeflate0:amd64. Preparing to unpack .../153-libdeflate0_1.23-1+b1_amd64.deb ... Unpacking libdeflate0:amd64 (1.23-1+b1) ... Selecting previously unselected package libjbig0:amd64. Preparing to unpack .../154-libjbig0_2.1-6.1+b2_amd64.deb ... Unpacking libjbig0:amd64 (2.1-6.1+b2) ... Selecting previously unselected package liblerc4:amd64. Preparing to unpack .../155-liblerc4_4.0.0+ds-5_amd64.deb ... Unpacking liblerc4:amd64 (4.0.0+ds-5) ... Selecting previously unselected package libwebp7:amd64. Preparing to unpack .../156-libwebp7_1.5.0-0.1_amd64.deb ... Unpacking libwebp7:amd64 (1.5.0-0.1) ... Selecting previously unselected package libtiff6:amd64. Preparing to unpack .../157-libtiff6_4.5.1+git230720-5_amd64.deb ... Unpacking libtiff6:amd64 (4.5.1+git230720-5) ... Selecting previously unselected package libxpm4:amd64. Preparing to unpack .../158-libxpm4_1%3a3.5.17-1+b3_amd64.deb ... Unpacking libxpm4:amd64 (1:3.5.17-1+b3) ... Selecting previously unselected package libgd3:amd64. Preparing to unpack .../159-libgd3_2.3.3-12+b1_amd64.deb ... Unpacking libgd3:amd64 (2.3.3-12+b1) ... Selecting previously unselected package liblua5.4-0:amd64. Preparing to unpack .../160-liblua5.4-0_5.4.7-1+b2_amd64.deb ... Unpacking liblua5.4-0:amd64 (5.4.7-1+b2) ... Selecting previously unselected package fontconfig. Preparing to unpack .../161-fontconfig_2.15.0-2_amd64.deb ... Unpacking fontconfig (2.15.0-2) ... Selecting previously unselected package libthai-data. Preparing to unpack .../162-libthai-data_0.1.29-2_all.deb ... Unpacking libthai-data (0.1.29-2) ... Selecting previously unselected package libdatrie1:amd64. Preparing to unpack .../163-libdatrie1_0.2.13-3+b1_amd64.deb ... Unpacking libdatrie1:amd64 (0.2.13-3+b1) ... Selecting previously unselected package libthai0:amd64. Preparing to unpack .../164-libthai0_0.1.29-2+b1_amd64.deb ... Unpacking libthai0:amd64 (0.1.29-2+b1) ... Selecting previously unselected package libpango-1.0-0:amd64. Preparing to unpack .../165-libpango-1.0-0_1.56.1-1_amd64.deb ... Unpacking libpango-1.0-0:amd64 (1.56.1-1) ... Selecting previously unselected package libpangoft2-1.0-0:amd64. Preparing to unpack .../166-libpangoft2-1.0-0_1.56.1-1_amd64.deb ... Unpacking libpangoft2-1.0-0:amd64 (1.56.1-1) ... Selecting previously unselected package libpangocairo-1.0-0:amd64. Preparing to unpack .../167-libpangocairo-1.0-0_1.56.1-1_amd64.deb ... Unpacking libpangocairo-1.0-0:amd64 (1.56.1-1) ... Selecting previously unselected package libwebpmux3:amd64. Preparing to unpack .../168-libwebpmux3_1.5.0-0.1_amd64.deb ... Unpacking libwebpmux3:amd64 (1.5.0-0.1) ... Selecting previously unselected package gnuplot-nox. Preparing to unpack .../169-gnuplot-nox_6.0.2+dfsg1-1_amd64.deb ... Unpacking gnuplot-nox (6.0.2+dfsg1-1) ... Selecting previously unselected package dh-octave-autopkgtest. Preparing to unpack .../170-dh-octave-autopkgtest_1.8.0_all.deb ... Unpacking dh-octave-autopkgtest (1.8.0) ... Selecting previously unselected package libapt-pkg-perl. Preparing to unpack .../171-libapt-pkg-perl_0.1.41_amd64.deb ... Unpacking libapt-pkg-perl (0.1.41) ... Selecting previously unselected package libarray-intspan-perl. Preparing to unpack .../172-libarray-intspan-perl_2.004-2_all.deb ... Unpacking libarray-intspan-perl (2.004-2) ... Selecting previously unselected package libyaml-libyaml-perl. Preparing to unpack .../173-libyaml-libyaml-perl_0.903.0+ds-1_amd64.deb ... Unpacking libyaml-libyaml-perl (0.903.0+ds-1) ... Selecting previously unselected package libconfig-model-backend-yaml-perl. Preparing to unpack .../174-libconfig-model-backend-yaml-perl_2.134-2_all.deb ... Unpacking libconfig-model-backend-yaml-perl (2.134-2) ... Selecting previously unselected package libexporter-lite-perl. Preparing to unpack .../175-libexporter-lite-perl_0.09-2_all.deb ... Unpacking libexporter-lite-perl (0.09-2) ... Selecting previously unselected package libencode-locale-perl. Preparing to unpack .../176-libencode-locale-perl_1.05-3_all.deb ... Unpacking libencode-locale-perl (1.05-3) ... Selecting previously unselected package libtimedate-perl. Preparing to unpack .../177-libtimedate-perl_2.3300-2_all.deb ... Unpacking libtimedate-perl (2.3300-2) ... Selecting previously unselected package libhttp-date-perl. Preparing to unpack .../178-libhttp-date-perl_6.06-1_all.deb ... Unpacking libhttp-date-perl (6.06-1) ... Selecting previously unselected package libfile-listing-perl. Preparing to unpack .../179-libfile-listing-perl_6.16-1_all.deb ... Unpacking libfile-listing-perl (6.16-1) ... Selecting previously unselected package libhtml-tagset-perl. Preparing to unpack .../180-libhtml-tagset-perl_3.24-1_all.deb ... Unpacking libhtml-tagset-perl (3.24-1) ... Selecting previously unselected package liburi-perl. Preparing to unpack .../181-liburi-perl_5.30-1_all.deb ... Unpacking liburi-perl (5.30-1) ... Selecting previously unselected package libhtml-parser-perl:amd64. Preparing to unpack .../182-libhtml-parser-perl_3.83-1+b2_amd64.deb ... Unpacking libhtml-parser-perl:amd64 (3.83-1+b2) ... Selecting previously unselected package libhtml-tree-perl. Preparing to unpack .../183-libhtml-tree-perl_5.07-3_all.deb ... Unpacking libhtml-tree-perl (5.07-3) ... Selecting previously unselected package libclone-perl:amd64. Preparing to unpack .../184-libclone-perl_0.47-1+b1_amd64.deb ... Unpacking libclone-perl:amd64 (0.47-1+b1) ... Selecting previously unselected package libio-html-perl. Preparing to unpack .../185-libio-html-perl_1.004-3_all.deb ... Unpacking libio-html-perl (1.004-3) ... Selecting previously unselected package liblwp-mediatypes-perl. Preparing to unpack .../186-liblwp-mediatypes-perl_6.04-2_all.deb ... Unpacking liblwp-mediatypes-perl (6.04-2) ... Selecting previously unselected package libhttp-message-perl. Preparing to unpack .../187-libhttp-message-perl_7.00-2_all.deb ... Unpacking libhttp-message-perl (7.00-2) ... Selecting previously unselected package libhttp-cookies-perl. Preparing to unpack .../188-libhttp-cookies-perl_6.11-1_all.deb ... Unpacking libhttp-cookies-perl (6.11-1) ... Selecting previously unselected package libhttp-negotiate-perl. Preparing to unpack .../189-libhttp-negotiate-perl_6.01-2_all.deb ... Unpacking libhttp-negotiate-perl (6.01-2) ... Selecting previously unselected package perl-openssl-defaults:amd64. Preparing to unpack .../190-perl-openssl-defaults_7+b2_amd64.deb ... Unpacking perl-openssl-defaults:amd64 (7+b2) ... Selecting previously unselected package libnet-ssleay-perl:amd64. Preparing to unpack .../191-libnet-ssleay-perl_1.94-3_amd64.deb ... Unpacking libnet-ssleay-perl:amd64 (1.94-3) ... Selecting previously unselected package libio-socket-ssl-perl. Preparing to unpack .../192-libio-socket-ssl-perl_2.089-1_all.deb ... Unpacking libio-socket-ssl-perl (2.089-1) ... Selecting previously unselected package libnet-http-perl. Preparing to unpack .../193-libnet-http-perl_6.23-1_all.deb ... Unpacking libnet-http-perl (6.23-1) ... Selecting previously unselected package liblwp-protocol-https-perl. Preparing to unpack .../194-liblwp-protocol-https-perl_6.14-1_all.deb ... Unpacking liblwp-protocol-https-perl (6.14-1) ... Selecting previously unselected package libwww-robotrules-perl. Preparing to unpack .../195-libwww-robotrules-perl_6.02-1_all.deb ... Unpacking libwww-robotrules-perl (6.02-1) ... Selecting previously unselected package libwww-perl. Preparing to unpack .../196-libwww-perl_6.77-1_all.deb ... Unpacking libwww-perl (6.77-1) ... Selecting previously unselected package liberror-perl. Preparing to unpack .../197-liberror-perl_0.17029-2_all.deb ... Unpacking liberror-perl (0.17029-2) ... Selecting previously unselected package libparse-debcontrol-perl. Preparing to unpack .../198-libparse-debcontrol-perl_2.005-6_all.deb ... Unpacking libparse-debcontrol-perl (2.005-6) ... Selecting previously unselected package libsoftware-copyright-perl. Preparing to unpack .../199-libsoftware-copyright-perl_0.012-2_all.deb ... Unpacking libsoftware-copyright-perl (0.012-2) ... Selecting previously unselected package libalgorithm-c3-perl. Preparing to unpack .../200-libalgorithm-c3-perl_0.11-2_all.deb ... Unpacking libalgorithm-c3-perl (0.11-2) ... Selecting previously unselected package libclass-c3-perl. Preparing to unpack .../201-libclass-c3-perl_0.35-2_all.deb ... Unpacking libclass-c3-perl (0.35-2) ... Selecting previously unselected package libmro-compat-perl. Preparing to unpack .../202-libmro-compat-perl_0.15-2_all.deb ... Unpacking libmro-compat-perl (0.15-2) ... Selecting previously unselected package libdata-section-perl. Preparing to unpack .../203-libdata-section-perl_0.200008-1_all.deb ... Unpacking libdata-section-perl (0.200008-1) ... Selecting previously unselected package libtext-template-perl. Preparing to unpack .../204-libtext-template-perl_1.61-1_all.deb ... Unpacking libtext-template-perl (1.61-1) ... Selecting previously unselected package libsoftware-license-perl. Preparing to unpack .../205-libsoftware-license-perl_0.104006-1_all.deb ... Unpacking libsoftware-license-perl (0.104006-1) ... Selecting previously unselected package libsoftware-licensemoreutils-perl. Preparing to unpack .../206-libsoftware-licensemoreutils-perl_1.009-1_all.deb ... Unpacking libsoftware-licensemoreutils-perl (1.009-1) ... Selecting previously unselected package libsort-versions-perl. Preparing to unpack .../207-libsort-versions-perl_1.62-3_all.deb ... Unpacking libsort-versions-perl (1.62-3) ... Selecting previously unselected package libtext-reform-perl. Preparing to unpack .../208-libtext-reform-perl_1.20-5_all.deb ... Unpacking libtext-reform-perl (1.20-5) ... Selecting previously unselected package libtext-autoformat-perl. Preparing to unpack .../209-libtext-autoformat-perl_1.750000-2_all.deb ... Unpacking libtext-autoformat-perl (1.750000-2) ... Selecting previously unselected package libtext-levenshtein-damerau-perl. Preparing to unpack .../210-libtext-levenshtein-damerau-perl_0.41-3_all.deb ... Unpacking libtext-levenshtein-damerau-perl (0.41-3) ... Selecting previously unselected package libtoml-tiny-perl. Preparing to unpack .../211-libtoml-tiny-perl_0.19-1_all.deb ... Unpacking libtoml-tiny-perl (0.19-1) ... Selecting previously unselected package libclass-inspector-perl. Preparing to unpack .../212-libclass-inspector-perl_1.36-3_all.deb ... Unpacking libclass-inspector-perl (1.36-3) ... Selecting previously unselected package libfile-sharedir-perl. Preparing to unpack .../213-libfile-sharedir-perl_1.118-3_all.deb ... Unpacking libfile-sharedir-perl (1.118-3) ... Selecting previously unselected package libindirect-perl. Preparing to unpack .../214-libindirect-perl_0.39-2+b4_amd64.deb ... Unpacking libindirect-perl (0.39-2+b4) ... Selecting previously unselected package libxs-parse-keyword-perl. Preparing to unpack .../215-libxs-parse-keyword-perl_0.48-2_amd64.deb ... Unpacking libxs-parse-keyword-perl (0.48-2) ... Selecting previously unselected package libxs-parse-sublike-perl:amd64. Preparing to unpack .../216-libxs-parse-sublike-perl_0.37-1_amd64.deb ... Unpacking libxs-parse-sublike-perl:amd64 (0.37-1) ... Selecting previously unselected package libobject-pad-perl. Preparing to unpack .../217-libobject-pad-perl_0.819-1_amd64.deb ... Unpacking libobject-pad-perl (0.819-1) ... Selecting previously unselected package libfeature-compat-class-perl. Preparing to unpack .../218-libfeature-compat-class-perl_0.07-1_all.deb ... Unpacking libfeature-compat-class-perl (0.07-1) ... Selecting previously unselected package libsyntax-keyword-try-perl. Preparing to unpack .../219-libsyntax-keyword-try-perl_0.30-1+b1_amd64.deb ... Unpacking libsyntax-keyword-try-perl (0.30-1+b1) ... Selecting previously unselected package libfeature-compat-try-perl. Preparing to unpack .../220-libfeature-compat-try-perl_0.05-1_all.deb ... Unpacking libfeature-compat-try-perl (0.05-1) ... Selecting previously unselected package libio-interactive-perl. Preparing to unpack .../221-libio-interactive-perl_1.026-1_all.deb ... Unpacking libio-interactive-perl (1.026-1) ... Selecting previously unselected package liblog-any-perl. Preparing to unpack .../222-liblog-any-perl_1.717-1_all.deb ... Unpacking liblog-any-perl (1.717-1) ... Selecting previously unselected package liblog-any-adapter-screen-perl. Preparing to unpack .../223-liblog-any-adapter-screen-perl_0.141-1_all.deb ... Unpacking liblog-any-adapter-screen-perl (0.141-1) ... Selecting previously unselected package libsub-exporter-progressive-perl. Preparing to unpack .../224-libsub-exporter-progressive-perl_0.001013-3_all.deb ... Unpacking libsub-exporter-progressive-perl (0.001013-3) ... Selecting previously unselected package libvariable-magic-perl. Preparing to unpack .../225-libvariable-magic-perl_0.64-1+b1_amd64.deb ... Unpacking libvariable-magic-perl (0.64-1+b1) ... Selecting previously unselected package libb-hooks-endofscope-perl. Preparing to unpack .../226-libb-hooks-endofscope-perl_0.28-1_all.deb ... Unpacking libb-hooks-endofscope-perl (0.28-1) ... Selecting previously unselected package libsub-identify-perl. Preparing to unpack .../227-libsub-identify-perl_0.14-3+b3_amd64.deb ... Unpacking libsub-identify-perl (0.14-3+b3) ... Selecting previously unselected package libsub-name-perl:amd64. Preparing to unpack .../228-libsub-name-perl_0.28-1_amd64.deb ... Unpacking libsub-name-perl:amd64 (0.28-1) ... Selecting previously unselected package libnamespace-clean-perl. Preparing to unpack .../229-libnamespace-clean-perl_0.27-2_all.deb ... Unpacking libnamespace-clean-perl (0.27-2) ... Selecting previously unselected package libnumber-compare-perl. Preparing to unpack .../230-libnumber-compare-perl_0.03-3_all.deb ... Unpacking libnumber-compare-perl (0.03-3) ... Selecting previously unselected package libtext-glob-perl. Preparing to unpack .../231-libtext-glob-perl_0.11-3_all.deb ... Unpacking libtext-glob-perl (0.11-3) ... Selecting previously unselected package libpath-iterator-rule-perl. Preparing to unpack .../232-libpath-iterator-rule-perl_1.015-2_all.deb ... Unpacking libpath-iterator-rule-perl (1.015-2) ... Selecting previously unselected package libpod-parser-perl. Preparing to unpack .../233-libpod-parser-perl_1.67-1_all.deb ... Adding 'diversion of /usr/bin/podselect to /usr/bin/podselect.bundled by libpod-parser-perl' Adding 'diversion of /usr/share/man/man1/podselect.1.gz to /usr/share/man/man1/podselect.bundled.1.gz by libpod-parser-perl' Unpacking libpod-parser-perl (1.67-1) ... Selecting previously unselected package libpod-constants-perl. Preparing to unpack .../234-libpod-constants-perl_0.19-2_all.deb ... Unpacking libpod-constants-perl (0.19-2) ... Selecting previously unselected package libset-intspan-perl. Preparing to unpack .../235-libset-intspan-perl_1.19-3_all.deb ... Unpacking libset-intspan-perl (1.19-3) ... Selecting previously unselected package libstring-copyright-perl. Preparing to unpack .../236-libstring-copyright-perl_0.003014-1_all.deb ... Unpacking libstring-copyright-perl (0.003014-1) ... Selecting previously unselected package libstring-escape-perl. Preparing to unpack .../237-libstring-escape-perl_2010.002-3_all.deb ... Unpacking libstring-escape-perl (2010.002-3) ... Selecting previously unselected package libregexp-pattern-license-perl. Preparing to unpack .../238-libregexp-pattern-license-perl_3.11.2-1_all.deb ... Unpacking libregexp-pattern-license-perl (3.11.2-1) ... Selecting previously unselected package libregexp-pattern-perl. Preparing to unpack .../239-libregexp-pattern-perl_0.2.14-2_all.deb ... Unpacking libregexp-pattern-perl (0.2.14-2) ... Selecting previously unselected package libstring-license-perl. Preparing to unpack .../240-libstring-license-perl_0.0.11-1_all.deb ... Unpacking libstring-license-perl (0.0.11-1) ... Selecting previously unselected package licensecheck. Preparing to unpack .../241-licensecheck_3.3.9-1_all.deb ... Unpacking licensecheck (3.3.9-1) ... Selecting previously unselected package diffstat. Preparing to unpack .../242-diffstat_1.67-1_amd64.deb ... Unpacking diffstat (1.67-1) ... Selecting previously unselected package libgpg-error0:amd64. Preparing to unpack .../243-libgpg-error0_1.51-3_amd64.deb ... Unpacking libgpg-error0:amd64 (1.51-3) ... Selecting previously unselected package libassuan9:amd64. Preparing to unpack .../244-libassuan9_3.0.1-2_amd64.deb ... Unpacking libassuan9:amd64 (3.0.1-2) ... Selecting previously unselected package libgcrypt20:amd64. Preparing to unpack .../245-libgcrypt20_1.11.0-7_amd64.deb ... Unpacking libgcrypt20:amd64 (1.11.0-7) ... Selecting previously unselected package gpgconf. Preparing to unpack .../246-gpgconf_2.2.46-1+b1_amd64.deb ... Unpacking gpgconf (2.2.46-1+b1) ... Selecting previously unselected package gpg. Preparing to unpack .../247-gpg_2.2.46-1+b1_amd64.deb ... Unpacking gpg (2.2.46-1+b1) ... Selecting previously unselected package iso-codes. Preparing to unpack .../248-iso-codes_4.17.0-1_all.deb ... Unpacking iso-codes (4.17.0-1) ... Selecting previously unselected package libberkeleydb-perl:amd64. Preparing to unpack .../249-libberkeleydb-perl_0.66-1_amd64.deb ... Unpacking libberkeleydb-perl:amd64 (0.66-1) ... Selecting previously unselected package libclass-xsaccessor-perl. Preparing to unpack .../250-libclass-xsaccessor-perl_1.19-4+b5_amd64.deb ... Unpacking libclass-xsaccessor-perl (1.19-4+b5) ... Selecting previously unselected package libconfig-tiny-perl. Preparing to unpack .../251-libconfig-tiny-perl_2.30-1_all.deb ... Unpacking libconfig-tiny-perl (2.30-1) ... Selecting previously unselected package libconst-fast-perl. Preparing to unpack .../252-libconst-fast-perl_0.014-2_all.deb ... Unpacking libconst-fast-perl (0.014-2) ... Selecting previously unselected package libcpanel-json-xs-perl:amd64. Preparing to unpack .../253-libcpanel-json-xs-perl_4.39-1_amd64.deb ... Unpacking libcpanel-json-xs-perl:amd64 (4.39-1) ... Selecting previously unselected package libaliased-perl. Preparing to unpack .../254-libaliased-perl_0.34-3_all.deb ... Unpacking libaliased-perl (0.34-3) ... Selecting previously unselected package libclass-data-inheritable-perl. Preparing to unpack .../255-libclass-data-inheritable-perl_0.10-1_all.deb ... Unpacking libclass-data-inheritable-perl (0.10-1) ... Selecting previously unselected package libdevel-stacktrace-perl. Preparing to unpack .../256-libdevel-stacktrace-perl_2.0500-1_all.deb ... Unpacking libdevel-stacktrace-perl (2.0500-1) ... Selecting previously unselected package libexception-class-perl. Preparing to unpack .../257-libexception-class-perl_1.45-1_all.deb ... Unpacking libexception-class-perl (1.45-1) ... Selecting previously unselected package libiterator-perl. Preparing to unpack .../258-libiterator-perl_0.03+ds1-2_all.deb ... Unpacking libiterator-perl (0.03+ds1-2) ... Selecting previously unselected package libiterator-util-perl. Preparing to unpack .../259-libiterator-util-perl_0.02+ds1-2_all.deb ... Unpacking libiterator-util-perl (0.02+ds1-2) ... Selecting previously unselected package libdata-dpath-perl. Preparing to unpack .../260-libdata-dpath-perl_0.60-1_all.deb ... Unpacking libdata-dpath-perl (0.60-1) ... Selecting previously unselected package libnet-domain-tld-perl. Preparing to unpack .../261-libnet-domain-tld-perl_1.75-4_all.deb ... Unpacking libnet-domain-tld-perl (1.75-4) ... Selecting previously unselected package libdata-validate-domain-perl. Preparing to unpack .../262-libdata-validate-domain-perl_0.15-1_all.deb ... Unpacking libdata-validate-domain-perl (0.15-1) ... Selecting previously unselected package libnet-ipv6addr-perl. Preparing to unpack .../263-libnet-ipv6addr-perl_1.02-1_all.deb ... Unpacking libnet-ipv6addr-perl (1.02-1) ... Selecting previously unselected package libnet-netmask-perl. Preparing to unpack .../264-libnet-netmask-perl_2.0002-2_all.deb ... Unpacking libnet-netmask-perl (2.0002-2) ... Selecting previously unselected package libnetaddr-ip-perl. Preparing to unpack .../265-libnetaddr-ip-perl_4.079+dfsg-2+b5_amd64.deb ... Unpacking libnetaddr-ip-perl (4.079+dfsg-2+b5) ... Selecting previously unselected package libdata-validate-ip-perl. Preparing to unpack .../266-libdata-validate-ip-perl_0.31-1_all.deb ... Unpacking libdata-validate-ip-perl (0.31-1) ... Selecting previously unselected package libdata-validate-uri-perl. Preparing to unpack .../267-libdata-validate-uri-perl_0.07-3_all.deb ... Unpacking libdata-validate-uri-perl (0.07-3) ... Selecting previously unselected package libdevel-size-perl. Preparing to unpack .../268-libdevel-size-perl_0.84-1+b1_amd64.deb ... Unpacking libdevel-size-perl (0.84-1+b1) ... Selecting previously unselected package libemail-address-xs-perl. Preparing to unpack .../269-libemail-address-xs-perl_1.05-1+b4_amd64.deb ... Unpacking libemail-address-xs-perl (1.05-1+b4) ... Selecting previously unselected package libipc-system-simple-perl. Preparing to unpack .../270-libipc-system-simple-perl_1.30-2_all.deb ... Unpacking libipc-system-simple-perl (1.30-2) ... Selecting previously unselected package libfile-basedir-perl. Preparing to unpack .../271-libfile-basedir-perl_0.09-2_all.deb ... Unpacking libfile-basedir-perl (0.09-2) ... Selecting previously unselected package libfile-find-rule-perl. Preparing to unpack .../272-libfile-find-rule-perl_0.34-3_all.deb ... Unpacking libfile-find-rule-perl (0.34-3) ... Selecting previously unselected package libio-string-perl. Preparing to unpack .../273-libio-string-perl_1.08-4_all.deb ... Unpacking libio-string-perl (1.08-4) ... Selecting previously unselected package libfont-ttf-perl. Preparing to unpack .../274-libfont-ttf-perl_1.06-2_all.deb ... Unpacking libfont-ttf-perl (1.06-2) ... Selecting previously unselected package libhtml-html5-entities-perl. Preparing to unpack .../275-libhtml-html5-entities-perl_0.004-3_all.deb ... Unpacking libhtml-html5-entities-perl (0.004-3) ... Selecting previously unselected package libhtml-tokeparser-simple-perl. Preparing to unpack .../276-libhtml-tokeparser-simple-perl_3.16-4_all.deb ... Unpacking libhtml-tokeparser-simple-perl (3.16-4) ... Selecting previously unselected package libipc-run3-perl. Preparing to unpack .../277-libipc-run3-perl_0.049-1_all.deb ... Unpacking libipc-run3-perl (0.049-1) ... Selecting previously unselected package libjson-maybexs-perl. Preparing to unpack .../278-libjson-maybexs-perl_1.004008-1_all.deb ... Unpacking libjson-maybexs-perl (1.004008-1) ... Selecting previously unselected package liblist-compare-perl. Preparing to unpack .../279-liblist-compare-perl_0.55-2_all.deb ... Unpacking liblist-compare-perl (0.55-2) ... Selecting previously unselected package liblist-someutils-perl. Preparing to unpack .../280-liblist-someutils-perl_0.59-1_all.deb ... Unpacking liblist-someutils-perl (0.59-1) ... Selecting previously unselected package liblist-utilsby-perl. Preparing to unpack .../281-liblist-utilsby-perl_0.12-2_all.deb ... Unpacking liblist-utilsby-perl (0.12-2) ... Selecting previously unselected package libmldbm-perl. Preparing to unpack .../282-libmldbm-perl_2.05-4_all.deb ... Unpacking libmldbm-perl (2.05-4) ... Selecting previously unselected package libclass-method-modifiers-perl. Preparing to unpack .../283-libclass-method-modifiers-perl_2.15-1_all.deb ... Unpacking libclass-method-modifiers-perl (2.15-1) ... Selecting previously unselected package libimport-into-perl. Preparing to unpack .../284-libimport-into-perl_1.002005-2_all.deb ... Unpacking libimport-into-perl (1.002005-2) ... Selecting previously unselected package librole-tiny-perl. Preparing to unpack .../285-librole-tiny-perl_2.002004-1_all.deb ... Unpacking librole-tiny-perl (2.002004-1) ... Selecting previously unselected package libsub-quote-perl. Preparing to unpack .../286-libsub-quote-perl_2.006008-1_all.deb ... Unpacking libsub-quote-perl (2.006008-1) ... Selecting previously unselected package libmoo-perl. Preparing to unpack .../287-libmoo-perl_2.005005-1_all.deb ... Unpacking libmoo-perl (2.005005-1) ... Selecting previously unselected package libstrictures-perl. Preparing to unpack .../288-libstrictures-perl_2.000006-1_all.deb ... Unpacking libstrictures-perl (2.000006-1) ... Selecting previously unselected package libmoox-aliases-perl. Preparing to unpack .../289-libmoox-aliases-perl_0.001006-2_all.deb ... Unpacking libmoox-aliases-perl (0.001006-2) ... Selecting previously unselected package libperlio-gzip-perl. Preparing to unpack .../290-libperlio-gzip-perl_0.20-1+b4_amd64.deb ... Unpacking libperlio-gzip-perl (0.20-1+b4) ... Selecting previously unselected package libperlio-utf8-strict-perl. Preparing to unpack .../291-libperlio-utf8-strict-perl_0.010-1+b3_amd64.deb ... Unpacking libperlio-utf8-strict-perl (0.010-1+b3) ... Selecting previously unselected package libproc-processtable-perl:amd64. Preparing to unpack .../292-libproc-processtable-perl_0.636-1+b3_amd64.deb ... Unpacking libproc-processtable-perl:amd64 (0.636-1+b3) ... Selecting previously unselected package libregexp-wildcards-perl. Preparing to unpack .../293-libregexp-wildcards-perl_1.05-3_all.deb ... Unpacking libregexp-wildcards-perl (1.05-3) ... Selecting previously unselected package libsereal-decoder-perl. Preparing to unpack .../294-libsereal-decoder-perl_5.004+ds-1+b3_amd64.deb ... Unpacking libsereal-decoder-perl (5.004+ds-1+b3) ... Selecting previously unselected package libsereal-encoder-perl. Preparing to unpack .../295-libsereal-encoder-perl_5.004+ds-1+b3_amd64.deb ... Unpacking libsereal-encoder-perl (5.004+ds-1+b3) ... Selecting previously unselected package libterm-readkey-perl. Preparing to unpack .../296-libterm-readkey-perl_2.38-2+b4_amd64.deb ... Unpacking libterm-readkey-perl (2.38-2+b4) ... Selecting previously unselected package libtext-levenshteinxs-perl. Preparing to unpack .../297-libtext-levenshteinxs-perl_0.03-5+b4_amd64.deb ... Unpacking libtext-levenshteinxs-perl (0.03-5+b4) ... Selecting previously unselected package libmarkdown2:amd64. Preparing to unpack .../298-libmarkdown2_2.2.7-2.1_amd64.deb ... Unpacking libmarkdown2:amd64 (2.2.7-2.1) ... Selecting previously unselected package libtext-markdown-discount-perl. Preparing to unpack .../299-libtext-markdown-discount-perl_0.18-1_amd64.deb ... Unpacking libtext-markdown-discount-perl (0.18-1) ... Selecting previously unselected package libdata-messagepack-perl. Preparing to unpack .../300-libdata-messagepack-perl_1.02-1+b4_amd64.deb ... Unpacking libdata-messagepack-perl (1.02-1+b4) ... Selecting previously unselected package libtext-xslate-perl:amd64. Preparing to unpack .../301-libtext-xslate-perl_3.5.9-2+b1_amd64.deb ... Unpacking libtext-xslate-perl:amd64 (3.5.9-2+b1) ... Selecting previously unselected package libtime-duration-perl. Preparing to unpack .../302-libtime-duration-perl_1.21-2_all.deb ... Unpacking libtime-duration-perl (1.21-2) ... Selecting previously unselected package libtime-moment-perl. Preparing to unpack .../303-libtime-moment-perl_0.44-2+b4_amd64.deb ... Unpacking libtime-moment-perl (0.44-2+b4) ... Selecting previously unselected package libunicode-utf8-perl. Preparing to unpack .../304-libunicode-utf8-perl_0.62-2+b3_amd64.deb ... Unpacking libunicode-utf8-perl (0.62-2+b3) ... Selecting previously unselected package libcgi-pm-perl. Preparing to unpack .../305-libcgi-pm-perl_4.67-1_all.deb ... Unpacking libcgi-pm-perl (4.67-1) ... Selecting previously unselected package libhtml-form-perl. Preparing to unpack .../306-libhtml-form-perl_6.12-1_all.deb ... Unpacking libhtml-form-perl (6.12-1) ... Selecting previously unselected package libwww-mechanize-perl. Preparing to unpack .../307-libwww-mechanize-perl_2.19-1_all.deb ... Unpacking libwww-mechanize-perl (2.19-1) ... Selecting previously unselected package libxml-namespacesupport-perl. Preparing to unpack .../308-libxml-namespacesupport-perl_1.12-2_all.deb ... Unpacking libxml-namespacesupport-perl (1.12-2) ... Selecting previously unselected package libxml-sax-base-perl. Preparing to unpack .../309-libxml-sax-base-perl_1.09-3_all.deb ... Unpacking libxml-sax-base-perl (1.09-3) ... Selecting previously unselected package libxml-sax-perl. Preparing to unpack .../310-libxml-sax-perl_1.02+dfsg-4_all.deb ... Unpacking libxml-sax-perl (1.02+dfsg-4) ... Selecting previously unselected package libxml-libxml-perl. Preparing to unpack .../311-libxml-libxml-perl_2.0207+dfsg+really+2.0134-5+b2_amd64.deb ... Unpacking libxml-libxml-perl (2.0207+dfsg+really+2.0134-5+b2) ... Selecting previously unselected package liblz1:amd64. Preparing to unpack .../312-liblz1_1.15-2_amd64.deb ... Unpacking liblz1:amd64 (1.15-2) ... Selecting previously unselected package plzip. Preparing to unpack .../313-plzip_1.12-1_amd64.deb ... Unpacking plzip (1.12-1) ... Selecting previously unselected package liblzo2-2:amd64. Preparing to unpack .../314-liblzo2-2_2.10-3+b1_amd64.deb ... Unpacking liblzo2-2:amd64 (2.10-3+b1) ... Selecting previously unselected package lzop. Preparing to unpack .../315-lzop_1.04-2_amd64.deb ... Unpacking lzop (1.04-2) ... Selecting previously unselected package patchutils. Preparing to unpack .../316-patchutils_0.4.2-1_amd64.deb ... Unpacking patchutils (0.4.2-1) ... Selecting previously unselected package t1utils. Preparing to unpack .../317-t1utils_1.41-4_amd64.deb ... Unpacking t1utils (1.41-4) ... Selecting previously unselected package unzip. Preparing to unpack .../318-unzip_6.0-28_amd64.deb ... Unpacking unzip (6.0-28) ... Selecting previously unselected package lintian. Preparing to unpack .../319-lintian_2.121.1_all.deb ... Unpacking lintian (2.121.1) ... Selecting previously unselected package libconfig-model-dpkg-perl. Preparing to unpack .../320-libconfig-model-dpkg-perl_3.010_all.deb ... Unpacking libconfig-model-dpkg-perl (3.010) ... Selecting previously unselected package libconvert-binhex-perl. Preparing to unpack .../321-libconvert-binhex-perl_1.125-3_all.deb ... Unpacking libconvert-binhex-perl (1.125-3) ... Selecting previously unselected package libnet-smtp-ssl-perl. Preparing to unpack .../322-libnet-smtp-ssl-perl_1.04-2_all.deb ... Unpacking libnet-smtp-ssl-perl (1.04-2) ... Selecting previously unselected package libmailtools-perl. Preparing to unpack .../323-libmailtools-perl_2.22-1_all.deb ... Unpacking libmailtools-perl (2.22-1) ... Selecting previously unselected package libmime-tools-perl. Preparing to unpack .../324-libmime-tools-perl_5.515-1_all.deb ... Unpacking libmime-tools-perl (5.515-1) ... Selecting previously unselected package libsuitesparseconfig7:amd64. Preparing to unpack .../325-libsuitesparseconfig7_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libsuitesparseconfig7:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libamd3:amd64. Preparing to unpack .../326-libamd3_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libamd3:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libblas3:amd64. Preparing to unpack .../327-libblas3_3.12.1-2_amd64.deb ... Unpacking libblas3:amd64 (3.12.1-2) ... Selecting previously unselected package libgfortran5:amd64. Preparing to unpack .../328-libgfortran5_14.2.0-17_amd64.deb ... Unpacking libgfortran5:amd64 (14.2.0-17) ... Selecting previously unselected package liblapack3:amd64. Preparing to unpack .../329-liblapack3_3.12.1-2_amd64.deb ... Unpacking liblapack3:amd64 (3.12.1-2) ... Selecting previously unselected package libarpack2t64:amd64. Preparing to unpack .../330-libarpack2t64_3.9.1-4_amd64.deb ... Unpacking libarpack2t64:amd64 (3.9.1-4) ... Selecting previously unselected package libccolamd3:amd64. Preparing to unpack .../331-libccolamd3_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libccolamd3:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libcamd3:amd64. Preparing to unpack .../332-libcamd3_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libcamd3:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libcolamd3:amd64. Preparing to unpack .../333-libcolamd3_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libcolamd3:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libcholmod5:amd64. Preparing to unpack .../334-libcholmod5_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libcholmod5:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libcxsparse4:amd64. Preparing to unpack .../335-libcxsparse4_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libcxsparse4:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libfftw3-double3:amd64. Preparing to unpack .../336-libfftw3-double3_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-double3:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-single3:amd64. Preparing to unpack .../337-libfftw3-single3_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-single3:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libxfixes3:amd64. Preparing to unpack .../338-libxfixes3_1%3a6.0.0-2+b4_amd64.deb ... Unpacking libxfixes3:amd64 (1:6.0.0-2+b4) ... Selecting previously unselected package libxcursor1:amd64. Preparing to unpack .../339-libxcursor1_1%3a1.2.3-1_amd64.deb ... Unpacking libxcursor1:amd64 (1:1.2.3-1) ... Selecting previously unselected package libxft2:amd64. Preparing to unpack .../340-libxft2_2.3.6-1+b4_amd64.deb ... Unpacking libxft2:amd64 (2.3.6-1+b4) ... Selecting previously unselected package libxinerama1:amd64. Preparing to unpack .../341-libxinerama1_2%3a1.1.4-3+b3_amd64.deb ... Unpacking libxinerama1:amd64 (2:1.1.4-3+b3) ... Selecting previously unselected package libfltk1.3t64:amd64. Preparing to unpack .../342-libfltk1.3t64_1.3.8-6.1+b1_amd64.deb ... Unpacking libfltk1.3t64:amd64 (1.3.8-6.1+b1) ... Selecting previously unselected package libglvnd0:amd64. Preparing to unpack .../343-libglvnd0_1.7.0-1+b2_amd64.deb ... Unpacking libglvnd0:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libdrm-common. Preparing to unpack .../344-libdrm-common_2.4.123-1_all.deb ... Unpacking libdrm-common (2.4.123-1) ... Selecting previously unselected package libdrm2:amd64. Preparing to unpack .../345-libdrm2_2.4.123-1_amd64.deb ... Unpacking libdrm2:amd64 (2.4.123-1) ... Selecting previously unselected package libglapi-mesa:amd64. Preparing to unpack .../346-libglapi-mesa_24.3.4-3_amd64.deb ... Unpacking libglapi-mesa:amd64 (24.3.4-3) ... Selecting previously unselected package libx11-xcb1:amd64. Preparing to unpack .../347-libx11-xcb1_2%3a1.8.10-2_amd64.deb ... Unpacking libx11-xcb1:amd64 (2:1.8.10-2) ... Selecting previously unselected package libxcb-dri3-0:amd64. Preparing to unpack .../348-libxcb-dri3-0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-dri3-0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-glx0:amd64. Preparing to unpack .../349-libxcb-glx0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-glx0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-present0:amd64. Preparing to unpack .../350-libxcb-present0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-present0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-xfixes0:amd64. Preparing to unpack .../351-libxcb-xfixes0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-xfixes0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxxf86vm1:amd64. Preparing to unpack .../352-libxxf86vm1_1%3a1.1.4-1+b4_amd64.deb ... Unpacking libxxf86vm1:amd64 (1:1.1.4-1+b4) ... Selecting previously unselected package libdrm-amdgpu1:amd64. Preparing to unpack .../353-libdrm-amdgpu1_2.4.123-1_amd64.deb ... Unpacking libdrm-amdgpu1:amd64 (2.4.123-1) ... Selecting previously unselected package libpciaccess0:amd64. Preparing to unpack .../354-libpciaccess0_0.17-3+b3_amd64.deb ... Unpacking libpciaccess0:amd64 (0.17-3+b3) ... Selecting previously unselected package libdrm-intel1:amd64. Preparing to unpack .../355-libdrm-intel1_2.4.123-1_amd64.deb ... Unpacking libdrm-intel1:amd64 (2.4.123-1) ... Selecting previously unselected package libdrm-radeon1:amd64. Preparing to unpack .../356-libdrm-radeon1_2.4.123-1_amd64.deb ... Unpacking libdrm-radeon1:amd64 (2.4.123-1) ... Selecting previously unselected package libz3-4:amd64. Preparing to unpack .../357-libz3-4_4.13.3-1_amd64.deb ... Unpacking libz3-4:amd64 (4.13.3-1) ... Selecting previously unselected package libllvm19:amd64. Preparing to unpack .../358-libllvm19_1%3a19.1.7-1+b1_amd64.deb ... Unpacking libllvm19:amd64 (1:19.1.7-1+b1) ... Selecting previously unselected package libsensors-config. Preparing to unpack .../359-libsensors-config_1%3a3.6.0-10_all.deb ... Unpacking libsensors-config (1:3.6.0-10) ... Selecting previously unselected package libsensors5:amd64. Preparing to unpack .../360-libsensors5_1%3a3.6.0-10+b1_amd64.deb ... Unpacking libsensors5:amd64 (1:3.6.0-10+b1) ... Selecting previously unselected package libxcb-randr0:amd64. Preparing to unpack .../361-libxcb-randr0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-randr0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-sync1:amd64. Preparing to unpack .../362-libxcb-sync1_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-sync1:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxshmfence1:amd64. Preparing to unpack .../363-libxshmfence1_1.3-1+b3_amd64.deb ... Unpacking libxshmfence1:amd64 (1.3-1+b3) ... Selecting previously unselected package mesa-libgallium:amd64. Preparing to unpack .../364-mesa-libgallium_24.3.4-3_amd64.deb ... Unpacking mesa-libgallium:amd64 (24.3.4-3) ... Selecting previously unselected package libwayland-server0:amd64. Preparing to unpack .../365-libwayland-server0_1.23.1-3_amd64.deb ... Unpacking libwayland-server0:amd64 (1.23.1-3) ... Selecting previously unselected package libgbm1:amd64. Preparing to unpack .../366-libgbm1_24.3.4-3_amd64.deb ... Unpacking libgbm1:amd64 (24.3.4-3) ... Selecting previously unselected package libvulkan1:amd64. Preparing to unpack .../367-libvulkan1_1.4.304.0-1_amd64.deb ... Unpacking libvulkan1:amd64 (1.4.304.0-1) ... Selecting previously unselected package libgl1-mesa-dri:amd64. Preparing to unpack .../368-libgl1-mesa-dri_24.3.4-3_amd64.deb ... Unpacking libgl1-mesa-dri:amd64 (24.3.4-3) ... Selecting previously unselected package libglx-mesa0:amd64. Preparing to unpack .../369-libglx-mesa0_24.3.4-3_amd64.deb ... Unpacking libglx-mesa0:amd64 (24.3.4-3) ... Selecting previously unselected package libglx0:amd64. Preparing to unpack .../370-libglx0_1.7.0-1+b2_amd64.deb ... Unpacking libglx0:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libgl1:amd64. Preparing to unpack .../371-libgl1_1.7.0-1+b2_amd64.deb ... Unpacking libgl1:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libfltk-gl1.3t64:amd64. Preparing to unpack .../372-libfltk-gl1.3t64_1.3.8-6.1+b1_amd64.deb ... Unpacking libfltk-gl1.3t64:amd64 (1.3.8-6.1+b1) ... Selecting previously unselected package libgl2ps1.4. Preparing to unpack .../373-libgl2ps1.4_1.4.2+dfsg1-2_amd64.deb ... Unpacking libgl2ps1.4 (1.4.2+dfsg1-2) ... Selecting previously unselected package libltdl7:amd64. Preparing to unpack .../374-libltdl7_2.5.4-3_amd64.deb ... Unpacking libltdl7:amd64 (2.5.4-3) ... Selecting previously unselected package libglpk40:amd64. Preparing to unpack .../375-libglpk40_5.0-1+b2_amd64.deb ... Unpacking libglpk40:amd64 (5.0-1+b2) ... Selecting previously unselected package libopengl0:amd64. Preparing to unpack .../376-libopengl0_1.7.0-1+b2_amd64.deb ... Unpacking libopengl0:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libglu1-mesa:amd64. Preparing to unpack .../377-libglu1-mesa_9.0.2-1.1+b3_amd64.deb ... Unpacking libglu1-mesa:amd64 (9.0.2-1.1+b3) ... Selecting previously unselected package libgif7:amd64. Preparing to unpack .../378-libgif7_5.2.2-1+b1_amd64.deb ... Unpacking libgif7:amd64 (5.2.2-1+b1) ... Selecting previously unselected package libhwy1t64:amd64. Preparing to unpack .../379-libhwy1t64_1.2.0-2+b2_amd64.deb ... Unpacking libhwy1t64:amd64 (1.2.0-2+b2) ... Selecting previously unselected package liblcms2-2:amd64. Preparing to unpack .../380-liblcms2-2_2.16-2_amd64.deb ... Unpacking liblcms2-2:amd64 (2.16-2) ... Selecting previously unselected package libimath-3-1-29t64:amd64. Preparing to unpack .../381-libimath-3-1-29t64_3.1.12-1+b3_amd64.deb ... Unpacking libimath-3-1-29t64:amd64 (3.1.12-1+b3) ... Selecting previously unselected package libopenexr-3-1-30:amd64. Preparing to unpack .../382-libopenexr-3-1-30_3.1.5-5.1+b4_amd64.deb ... Unpacking libopenexr-3-1-30:amd64 (3.1.5-5.1+b4) ... Selecting previously unselected package libjxl0.10:amd64. Preparing to unpack .../383-libjxl0.10_0.10.4-2_amd64.deb ... Unpacking libjxl0.10:amd64 (0.10.4-2) ... Selecting previously unselected package libwmflite-0.2-7:amd64. Preparing to unpack .../384-libwmflite-0.2-7_0.2.13-1.1+b3_amd64.deb ... Unpacking libwmflite-0.2-7:amd64 (0.2.13-1.1+b3) ... Selecting previously unselected package libgraphicsmagick-q16-3t64. Preparing to unpack .../385-libgraphicsmagick-q16-3t64_1.4+really1.3.45-1+b2_amd64.deb ... Unpacking libgraphicsmagick-q16-3t64 (1.4+really1.3.45-1+b2) ... Selecting previously unselected package libgraphicsmagick++-q16-12t64. Preparing to unpack .../386-libgraphicsmagick++-q16-12t64_1.4+really1.3.45-1+b2_amd64.deb ... Unpacking libgraphicsmagick++-q16-12t64 (1.4+really1.3.45-1+b2) ... Selecting previously unselected package libcurl4t64:amd64. Preparing to unpack .../387-libcurl4t64_8.12.1-2_amd64.deb ... Unpacking libcurl4t64:amd64 (8.12.1-2) ... Selecting previously unselected package libaec0:amd64. Preparing to unpack .../388-libaec0_1.1.3-1+b1_amd64.deb ... Unpacking libaec0:amd64 (1.1.3-1+b1) ... Selecting previously unselected package libsz2:amd64. Preparing to unpack .../389-libsz2_1.1.3-1+b1_amd64.deb ... Unpacking libsz2:amd64 (1.1.3-1+b1) ... Selecting previously unselected package libhdf5-310:amd64. Preparing to unpack .../390-libhdf5-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libasound2-data. Preparing to unpack .../391-libasound2-data_1.2.13-1_all.deb ... Unpacking libasound2-data (1.2.13-1) ... Selecting previously unselected package libasound2t64:amd64. Preparing to unpack .../392-libasound2t64_1.2.13-1+b1_amd64.deb ... Unpacking libasound2t64:amd64 (1.2.13-1+b1) ... Selecting previously unselected package libopus0:amd64. Preparing to unpack .../393-libopus0_1.5.2-2_amd64.deb ... Unpacking libopus0:amd64 (1.5.2-2) ... Selecting previously unselected package libsamplerate0:amd64. Preparing to unpack .../394-libsamplerate0_0.2.2-4+b2_amd64.deb ... Unpacking libsamplerate0:amd64 (0.2.2-4+b2) ... Selecting previously unselected package libjack-jackd2-0:amd64. Preparing to unpack .../395-libjack-jackd2-0_1.9.22~dfsg-4_amd64.deb ... Unpacking libjack-jackd2-0:amd64 (1.9.22~dfsg-4) ... Selecting previously unselected package libportaudio2:amd64. Preparing to unpack .../396-libportaudio2_19.6.0-1.2+b3_amd64.deb ... Unpacking libportaudio2:amd64 (19.6.0-1.2+b3) ... Selecting previously unselected package libqhull-r8.0:amd64. Preparing to unpack .../397-libqhull-r8.0_2020.2-6+b2_amd64.deb ... Unpacking libqhull-r8.0:amd64 (2020.2-6+b2) ... Selecting previously unselected package libqrupdate1:amd64. Preparing to unpack .../398-libqrupdate1_1.1.5-1_amd64.deb ... Unpacking libqrupdate1:amd64 (1.1.5-1) ... Selecting previously unselected package libqscintilla2-qt6-l10n. Preparing to unpack .../399-libqscintilla2-qt6-l10n_2.14.1+dfsg-1_all.deb ... Unpacking libqscintilla2-qt6-l10n (2.14.1+dfsg-1) ... Selecting previously unselected package libb2-1:amd64. Preparing to unpack .../400-libb2-1_0.98.1-1.1+b2_amd64.deb ... Unpacking libb2-1:amd64 (0.98.1-1.1+b2) ... Selecting previously unselected package libdouble-conversion3:amd64. Preparing to unpack .../401-libdouble-conversion3_3.3.1-1_amd64.deb ... Unpacking libdouble-conversion3:amd64 (3.3.1-1) ... Selecting previously unselected package libpcre2-16-0:amd64. Preparing to unpack .../402-libpcre2-16-0_10.45-1_amd64.deb ... Unpacking libpcre2-16-0:amd64 (10.45-1) ... Selecting previously unselected package libqt6core6t64:amd64. Preparing to unpack .../403-libqt6core6t64_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6core6t64:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libwayland-client0:amd64. Preparing to unpack .../404-libwayland-client0_1.23.1-3_amd64.deb ... Unpacking libwayland-client0:amd64 (1.23.1-3) ... Selecting previously unselected package libegl-mesa0:amd64. Preparing to unpack .../405-libegl-mesa0_24.3.4-3_amd64.deb ... Unpacking libegl-mesa0:amd64 (24.3.4-3) ... Selecting previously unselected package libegl1:amd64. Preparing to unpack .../406-libegl1_1.7.0-1+b2_amd64.deb ... Unpacking libegl1:amd64 (1.7.0-1+b2) ... Selecting previously unselected package x11-common. Preparing to unpack .../407-x11-common_1%3a7.7+24_all.deb ... Unpacking x11-common (1:7.7+24) ... Selecting previously unselected package libice6:amd64. Preparing to unpack .../408-libice6_2%3a1.1.1-1_amd64.deb ... Unpacking libice6:amd64 (2:1.1.1-1) ... Selecting previously unselected package libevdev2:amd64. Preparing to unpack .../409-libevdev2_1.13.3+dfsg-1_amd64.deb ... Unpacking libevdev2:amd64 (1.13.3+dfsg-1) ... Selecting previously unselected package libmtdev1t64:amd64. Preparing to unpack .../410-libmtdev1t64_1.1.7-1_amd64.deb ... Unpacking libmtdev1t64:amd64 (1.1.7-1) ... Selecting previously unselected package libgudev-1.0-0:amd64. Preparing to unpack .../411-libgudev-1.0-0_238-6_amd64.deb ... Unpacking libgudev-1.0-0:amd64 (238-6) ... Selecting previously unselected package libwacom-common. Preparing to unpack .../412-libwacom-common_2.14.0-1_all.deb ... Unpacking libwacom-common (2.14.0-1) ... Selecting previously unselected package libwacom9:amd64. Preparing to unpack .../413-libwacom9_2.14.0-1_amd64.deb ... Unpacking libwacom9:amd64 (2.14.0-1) ... Selecting previously unselected package libinput-bin. Preparing to unpack .../414-libinput-bin_1.27.1-1_amd64.deb ... Unpacking libinput-bin (1.27.1-1) ... Selecting previously unselected package libinput10:amd64. Preparing to unpack .../415-libinput10_1.27.1-1_amd64.deb ... Unpacking libinput10:amd64 (1.27.1-1) ... Selecting previously unselected package libmd4c0:amd64. Preparing to unpack .../416-libmd4c0_0.5.2-2+b1_amd64.deb ... Unpacking libmd4c0:amd64 (0.5.2-2+b1) ... Selecting previously unselected package libdbus-1-3:amd64. Preparing to unpack .../417-libdbus-1-3_1.16.0-1_amd64.deb ... Unpacking libdbus-1-3:amd64 (1.16.0-1) ... Selecting previously unselected package libqt6dbus6:amd64. Preparing to unpack .../418-libqt6dbus6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6dbus6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libsm6:amd64. Preparing to unpack .../419-libsm6_2%3a1.2.4-1_amd64.deb ... Unpacking libsm6:amd64 (2:1.2.4-1) ... Selecting previously unselected package libts0t64:amd64. Preparing to unpack .../420-libts0t64_1.22-1.1+b1_amd64.deb ... Unpacking libts0t64:amd64 (1.22-1.1+b1) ... Selecting previously unselected package libxcb-util1:amd64. Preparing to unpack .../421-libxcb-util1_0.4.1-1_amd64.deb ... Unpacking libxcb-util1:amd64 (0.4.1-1) ... Selecting previously unselected package libxcb-image0:amd64. Preparing to unpack .../422-libxcb-image0_0.4.0-2+b2_amd64.deb ... Unpacking libxcb-image0:amd64 (0.4.0-2+b2) ... Selecting previously unselected package libxcb-render-util0:amd64. Preparing to unpack .../423-libxcb-render-util0_0.3.10-1_amd64.deb ... Unpacking libxcb-render-util0:amd64 (0.3.10-1) ... Selecting previously unselected package libxcb-cursor0:amd64. Preparing to unpack .../424-libxcb-cursor0_0.1.5-1_amd64.deb ... Unpacking libxcb-cursor0:amd64 (0.1.5-1) ... Selecting previously unselected package libxcb-icccm4:amd64. Preparing to unpack .../425-libxcb-icccm4_0.4.2-1_amd64.deb ... Unpacking libxcb-icccm4:amd64 (0.4.2-1) ... Selecting previously unselected package libxcb-keysyms1:amd64. Preparing to unpack .../426-libxcb-keysyms1_0.4.1-1_amd64.deb ... Unpacking libxcb-keysyms1:amd64 (0.4.1-1) ... Selecting previously unselected package libxcb-shape0:amd64. Preparing to unpack .../427-libxcb-shape0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-shape0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-xinput0:amd64. Preparing to unpack .../428-libxcb-xinput0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-xinput0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-xkb1:amd64. Preparing to unpack .../429-libxcb-xkb1_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-xkb1:amd64 (1.17.0-2+b1) ... Selecting previously unselected package xkb-data. Preparing to unpack .../430-xkb-data_2.42-1_all.deb ... Unpacking xkb-data (2.42-1) ... Selecting previously unselected package libxkbcommon0:amd64. Preparing to unpack .../431-libxkbcommon0_1.7.0-2_amd64.deb ... Unpacking libxkbcommon0:amd64 (1.7.0-2) ... Selecting previously unselected package libxkbcommon-x11-0:amd64. Preparing to unpack .../432-libxkbcommon-x11-0_1.7.0-2_amd64.deb ... Unpacking libxkbcommon-x11-0:amd64 (1.7.0-2) ... Selecting previously unselected package libqt6gui6:amd64. Preparing to unpack .../433-libqt6gui6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6gui6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libavahi-common-data:amd64. Preparing to unpack .../434-libavahi-common-data_0.8-16_amd64.deb ... Unpacking libavahi-common-data:amd64 (0.8-16) ... Selecting previously unselected package libavahi-common3:amd64. Preparing to unpack .../435-libavahi-common3_0.8-16_amd64.deb ... Unpacking libavahi-common3:amd64 (0.8-16) ... Selecting previously unselected package libavahi-client3:amd64. Preparing to unpack .../436-libavahi-client3_0.8-16_amd64.deb ... Unpacking libavahi-client3:amd64 (0.8-16) ... Selecting previously unselected package libcups2t64:amd64. Preparing to unpack .../437-libcups2t64_2.4.10-2+b1_amd64.deb ... Unpacking libcups2t64:amd64 (2.4.10-2+b1) ... Selecting previously unselected package libqt6widgets6:amd64. Preparing to unpack .../438-libqt6widgets6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6widgets6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6printsupport6:amd64. Preparing to unpack .../439-libqt6printsupport6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6printsupport6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqscintilla2-qt6-15:amd64. Preparing to unpack .../440-libqscintilla2-qt6-15_2.14.1+dfsg-1+b4_amd64.deb ... Unpacking libqscintilla2-qt6-15:amd64 (2.14.1+dfsg-1+b4) ... Selecting previously unselected package libqt6core5compat6:amd64. Preparing to unpack .../441-libqt6core5compat6_6.7.2-3_amd64.deb ... Unpacking libqt6core5compat6:amd64 (6.7.2-3) ... Selecting previously unselected package libqt6sql6:amd64. Preparing to unpack .../442-libqt6sql6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6sql6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6help6:amd64. Preparing to unpack .../443-libqt6help6_6.7.2-6_amd64.deb ... Unpacking libqt6help6:amd64 (6.7.2-6) ... Selecting previously unselected package libduktape207:amd64. Preparing to unpack .../444-libduktape207_2.7.0-2+b2_amd64.deb ... Unpacking libduktape207:amd64 (2.7.0-2+b2) ... Selecting previously unselected package libproxy1v5:amd64. Preparing to unpack .../445-libproxy1v5_0.5.9-1_amd64.deb ... Unpacking libproxy1v5:amd64 (0.5.9-1) ... Selecting previously unselected package libqt6network6:amd64. Preparing to unpack .../446-libqt6network6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6network6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6opengl6:amd64. Preparing to unpack .../447-libqt6opengl6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6opengl6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6openglwidgets6:amd64. Preparing to unpack .../448-libqt6openglwidgets6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6openglwidgets6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6xml6:amd64. Preparing to unpack .../449-libqt6xml6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6xml6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libogg0:amd64. Preparing to unpack .../450-libogg0_1.3.5-3+b2_amd64.deb ... Unpacking libogg0:amd64 (1.3.5-3+b2) ... Selecting previously unselected package libflac12t64:amd64. Preparing to unpack .../451-libflac12t64_1.4.3+ds-4_amd64.deb ... Unpacking libflac12t64:amd64 (1.4.3+ds-4) ... Selecting previously unselected package libmp3lame0:amd64. Preparing to unpack .../452-libmp3lame0_3.100-6+b3_amd64.deb ... Unpacking libmp3lame0:amd64 (3.100-6+b3) ... Selecting previously unselected package libmpg123-0t64:amd64. Preparing to unpack .../453-libmpg123-0t64_1.32.10-1_amd64.deb ... Unpacking libmpg123-0t64:amd64 (1.32.10-1) ... Selecting previously unselected package libvorbis0a:amd64. Preparing to unpack .../454-libvorbis0a_1.3.7-2+b1_amd64.deb ... Unpacking libvorbis0a:amd64 (1.3.7-2+b1) ... Selecting previously unselected package libvorbisenc2:amd64. Preparing to unpack .../455-libvorbisenc2_1.3.7-2+b1_amd64.deb ... Unpacking libvorbisenc2:amd64 (1.3.7-2+b1) ... Selecting previously unselected package libsndfile1:amd64. Preparing to unpack .../456-libsndfile1_1.2.2-2_amd64.deb ... Unpacking libsndfile1:amd64 (1.2.2-2) ... Selecting previously unselected package libspqr4:amd64. Preparing to unpack .../457-libspqr4_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libspqr4:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libumfpack6:amd64. Preparing to unpack .../458-libumfpack6_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libumfpack6:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libtext-unidecode-perl. Preparing to unpack .../459-libtext-unidecode-perl_1.30-3_all.deb ... Unpacking libtext-unidecode-perl (1.30-3) ... Selecting previously unselected package texinfo-lib. Preparing to unpack .../460-texinfo-lib_7.1.1-1+b1_amd64.deb ... Unpacking texinfo-lib (7.1.1-1+b1) ... Selecting previously unselected package tex-common. Preparing to unpack .../461-tex-common_6.18_all.deb ... Unpacking tex-common (6.18) ... Selecting previously unselected package texinfo. Preparing to unpack .../462-texinfo_7.1.1-1_all.deb ... Unpacking texinfo (7.1.1-1) ... Selecting previously unselected package octave-common. Preparing to unpack .../463-octave-common_9.4.0-1_all.deb ... Unpacking octave-common (9.4.0-1) ... Selecting previously unselected package octave. Preparing to unpack .../464-octave_9.4.0-1_amd64.deb ... Unpacking octave (9.4.0-1) ... Selecting previously unselected package libncurses6:amd64. Preparing to unpack .../465-libncurses6_6.5+20250216-1_amd64.deb ... Unpacking libncurses6:amd64 (6.5+20250216-1) ... Selecting previously unselected package libncurses-dev:amd64. Preparing to unpack .../466-libncurses-dev_6.5+20250216-1_amd64.deb ... Unpacking libncurses-dev:amd64 (6.5+20250216-1) ... Selecting previously unselected package libreadline-dev:amd64. Preparing to unpack .../467-libreadline-dev_8.2-6_amd64.deb ... Unpacking libreadline-dev:amd64 (8.2-6) ... Selecting previously unselected package libhdf5-fortran-310:amd64. Preparing to unpack .../468-libhdf5-fortran-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-fortran-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-hl-310:amd64. Preparing to unpack .../469-libhdf5-hl-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-hl-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-hl-fortran-310:amd64. Preparing to unpack .../470-libhdf5-hl-fortran-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-hl-fortran-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-cpp-310:amd64. Preparing to unpack .../471-libhdf5-cpp-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-cpp-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-hl-cpp-310:amd64. Preparing to unpack .../472-libhdf5-hl-cpp-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-hl-cpp-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package zlib1g-dev:amd64. Preparing to unpack .../473-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1+b1_amd64.deb ... Unpacking zlib1g-dev:amd64 (1:1.3.dfsg+really1.3.1-1+b1) ... Selecting previously unselected package libjpeg62-turbo-dev:amd64. Preparing to unpack .../474-libjpeg62-turbo-dev_1%3a2.1.5-3+b1_amd64.deb ... Unpacking libjpeg62-turbo-dev:amd64 (1:2.1.5-3+b1) ... Selecting previously unselected package libjpeg-dev:amd64. Preparing to unpack .../475-libjpeg-dev_1%3a2.1.5-3+b1_amd64.deb ... Unpacking libjpeg-dev:amd64 (1:2.1.5-3+b1) ... Selecting previously unselected package libaec-dev:amd64. Preparing to unpack .../476-libaec-dev_1.1.3-1+b1_amd64.deb ... Unpacking libaec-dev:amd64 (1.1.3-1+b1) ... Selecting previously unselected package libbrotli-dev:amd64. Preparing to unpack .../477-libbrotli-dev_1.1.0-2+b6_amd64.deb ... Unpacking libbrotli-dev:amd64 (1.1.0-2+b6) ... Selecting previously unselected package libidn2-dev:amd64. Preparing to unpack .../478-libidn2-dev_2.3.7-2+b1_amd64.deb ... Unpacking libidn2-dev:amd64 (2.3.7-2+b1) ... Selecting previously unselected package libgssrpc4t64:amd64. Preparing to unpack .../479-libgssrpc4t64_1.21.3-4_amd64.deb ... Unpacking libgssrpc4t64:amd64 (1.21.3-4) ... Selecting previously unselected package libkadm5clnt-mit12:amd64. Preparing to unpack .../480-libkadm5clnt-mit12_1.21.3-4_amd64.deb ... Unpacking libkadm5clnt-mit12:amd64 (1.21.3-4) ... Selecting previously unselected package libkdb5-10t64:amd64. Preparing to unpack .../481-libkdb5-10t64_1.21.3-4_amd64.deb ... Unpacking libkdb5-10t64:amd64 (1.21.3-4) ... Selecting previously unselected package libkadm5srv-mit12:amd64. Preparing to unpack .../482-libkadm5srv-mit12_1.21.3-4_amd64.deb ... Unpacking libkadm5srv-mit12:amd64 (1.21.3-4) ... Selecting previously unselected package krb5-multidev:amd64. Preparing to unpack .../483-krb5-multidev_1.21.3-4_amd64.deb ... Unpacking krb5-multidev:amd64 (1.21.3-4) ... Selecting previously unselected package libkrb5-dev:amd64. Preparing to unpack .../484-libkrb5-dev_1.21.3-4_amd64.deb ... Unpacking libkrb5-dev:amd64 (1.21.3-4) ... Selecting previously unselected package libldap-dev:amd64. Preparing to unpack .../485-libldap-dev_2.6.9+dfsg-1_amd64.deb ... Unpacking libldap-dev:amd64 (2.6.9+dfsg-1) ... Selecting previously unselected package libpkgconf3:amd64. Preparing to unpack .../486-libpkgconf3_1.8.1-4_amd64.deb ... Unpacking libpkgconf3:amd64 (1.8.1-4) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../487-pkgconf-bin_1.8.1-4_amd64.deb ... Unpacking pkgconf-bin (1.8.1-4) ... Selecting previously unselected package pkgconf:amd64. Preparing to unpack .../488-pkgconf_1.8.1-4_amd64.deb ... Unpacking pkgconf:amd64 (1.8.1-4) ... Selecting previously unselected package libnghttp2-dev:amd64. Preparing to unpack .../489-libnghttp2-dev_1.64.0-1_amd64.deb ... Unpacking libnghttp2-dev:amd64 (1.64.0-1) ... Selecting previously unselected package libnghttp3-dev:amd64. Preparing to unpack .../490-libnghttp3-dev_1.6.0-2_amd64.deb ... Unpacking libnghttp3-dev:amd64 (1.6.0-2) ... Selecting previously unselected package libpsl-dev:amd64. Preparing to unpack .../491-libpsl-dev_0.21.2-1.1+b1_amd64.deb ... Unpacking libpsl-dev:amd64 (0.21.2-1.1+b1) ... Selecting previously unselected package libgmpxx4ldbl:amd64. Preparing to unpack .../492-libgmpxx4ldbl_2%3a6.3.0+dfsg-3_amd64.deb ... Unpacking libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-3) ... Selecting previously unselected package libgmp-dev:amd64. Preparing to unpack .../493-libgmp-dev_2%3a6.3.0+dfsg-3_amd64.deb ... Unpacking libgmp-dev:amd64 (2:6.3.0+dfsg-3) ... Selecting previously unselected package libevent-2.1-7t64:amd64. Preparing to unpack .../494-libevent-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libunbound8:amd64. Preparing to unpack .../495-libunbound8_1.22.0-1+b1_amd64.deb ... Unpacking libunbound8:amd64 (1.22.0-1+b1) ... Selecting previously unselected package libgnutls-dane0t64:amd64. Preparing to unpack .../496-libgnutls-dane0t64_3.8.9-2_amd64.deb ... Unpacking libgnutls-dane0t64:amd64 (3.8.9-2) ... Selecting previously unselected package libgnutls-openssl27t64:amd64. Preparing to unpack .../497-libgnutls-openssl27t64_3.8.9-2_amd64.deb ... Unpacking libgnutls-openssl27t64:amd64 (3.8.9-2) ... Selecting previously unselected package libp11-kit-dev:amd64. Preparing to unpack .../498-libp11-kit-dev_0.25.5-3_amd64.deb ... Unpacking libp11-kit-dev:amd64 (0.25.5-3) ... Selecting previously unselected package libtasn1-6-dev:amd64. Preparing to unpack .../499-libtasn1-6-dev_4.20.0-2_amd64.deb ... Unpacking libtasn1-6-dev:amd64 (4.20.0-2) ... Selecting previously unselected package nettle-dev:amd64. Preparing to unpack .../500-nettle-dev_3.10.1-1_amd64.deb ... Unpacking nettle-dev:amd64 (3.10.1-1) ... Selecting previously unselected package libgnutls28-dev:amd64. Preparing to unpack .../501-libgnutls28-dev_3.8.9-2_amd64.deb ... Unpacking libgnutls28-dev:amd64 (3.8.9-2) ... Selecting previously unselected package librtmp-dev:amd64. Preparing to unpack .../502-librtmp-dev_2.4+20151223.gitfa8646d.1-2+b5_amd64.deb ... Unpacking librtmp-dev:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Selecting previously unselected package libssl-dev:amd64. Preparing to unpack .../503-libssl-dev_3.4.1-1_amd64.deb ... Unpacking libssl-dev:amd64 (3.4.1-1) ... Selecting previously unselected package libssh2-1-dev:amd64. Preparing to unpack .../504-libssh2-1-dev_1.11.1-1_amd64.deb ... Unpacking libssh2-1-dev:amd64 (1.11.1-1) ... Selecting previously unselected package libzstd-dev:amd64. Preparing to unpack .../505-libzstd-dev_1.5.6+dfsg-2_amd64.deb ... Unpacking libzstd-dev:amd64 (1.5.6+dfsg-2) ... Selecting previously unselected package libcurl4-openssl-dev:amd64. Preparing to unpack .../506-libcurl4-openssl-dev_8.12.1-2_amd64.deb ... Unpacking libcurl4-openssl-dev:amd64 (8.12.1-2) ... Selecting previously unselected package hdf5-helpers. Preparing to unpack .../507-hdf5-helpers_1.14.5+repack-3_amd64.deb ... Unpacking hdf5-helpers (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-dev. Preparing to unpack .../508-libhdf5-dev_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-dev (1.14.5+repack-3) ... Selecting previously unselected package xorg-sgml-doctools. Preparing to unpack .../509-xorg-sgml-doctools_1%3a1.11-1.1_all.deb ... Unpacking xorg-sgml-doctools (1:1.11-1.1) ... Selecting previously unselected package x11proto-dev. Preparing to unpack .../510-x11proto-dev_2024.1-1_all.deb ... Unpacking x11proto-dev (2024.1-1) ... Selecting previously unselected package libxau-dev:amd64. Preparing to unpack .../511-libxau-dev_1%3a1.0.11-1_amd64.deb ... Unpacking libxau-dev:amd64 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp-dev:amd64. Preparing to unpack .../512-libxdmcp-dev_1%3a1.1.5-1_amd64.deb ... Unpacking libxdmcp-dev:amd64 (1:1.1.5-1) ... Selecting previously unselected package xtrans-dev. Preparing to unpack .../513-xtrans-dev_1.4.0-1_all.deb ... Unpacking xtrans-dev (1.4.0-1) ... Selecting previously unselected package libxcb1-dev:amd64. Preparing to unpack .../514-libxcb1-dev_1.17.0-2+b1_amd64.deb ... Unpacking libxcb1-dev:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libx11-dev:amd64. Preparing to unpack .../515-libx11-dev_2%3a1.8.10-2_amd64.deb ... Unpacking libx11-dev:amd64 (2:1.8.10-2) ... Selecting previously unselected package libglx-dev:amd64. Preparing to unpack .../516-libglx-dev_1.7.0-1+b2_amd64.deb ... Unpacking libglx-dev:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libgl-dev:amd64. Preparing to unpack .../517-libgl-dev_1.7.0-1+b2_amd64.deb ... Unpacking libgl-dev:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libblas-dev:amd64. Preparing to unpack .../518-libblas-dev_3.12.1-2_amd64.deb ... Unpacking libblas-dev:amd64 (3.12.1-2) ... Selecting previously unselected package liblapack-dev:amd64. Preparing to unpack .../519-liblapack-dev_3.12.1-2_amd64.deb ... Unpacking liblapack-dev:amd64 (3.12.1-2) ... Selecting previously unselected package libfftw3-long3:amd64. Preparing to unpack .../520-libfftw3-long3_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-long3:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-quad3:amd64. Preparing to unpack .../521-libfftw3-quad3_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-quad3:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-bin. Preparing to unpack .../522-libfftw3-bin_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-bin (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-dev:amd64. Preparing to unpack .../523-libfftw3-dev_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-dev:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libgfortran-14-dev:amd64. Preparing to unpack .../524-libgfortran-14-dev_14.2.0-17_amd64.deb ... Unpacking libgfortran-14-dev:amd64 (14.2.0-17) ... Selecting previously unselected package gfortran-14-x86-64-linux-gnu. Preparing to unpack .../525-gfortran-14-x86-64-linux-gnu_14.2.0-17_amd64.deb ... Unpacking gfortran-14-x86-64-linux-gnu (14.2.0-17) ... Selecting previously unselected package gfortran-14. Preparing to unpack .../526-gfortran-14_14.2.0-17_amd64.deb ... Unpacking gfortran-14 (14.2.0-17) ... Selecting previously unselected package gfortran-x86-64-linux-gnu. Preparing to unpack .../527-gfortran-x86-64-linux-gnu_4%3a14.2.0-1_amd64.deb ... Unpacking gfortran-x86-64-linux-gnu (4:14.2.0-1) ... Selecting previously unselected package gfortran. Preparing to unpack .../528-gfortran_4%3a14.2.0-1_amd64.deb ... Unpacking gfortran (4:14.2.0-1) ... Selecting previously unselected package octave-dev. Preparing to unpack .../529-octave-dev_9.4.0-1_amd64.deb ... Unpacking octave-dev (9.4.0-1) ... Selecting previously unselected package dh-octave. Preparing to unpack .../530-dh-octave_1.8.0_all.deb ... Unpacking dh-octave (1.8.0) ... Selecting previously unselected package python3-mpmath. Preparing to unpack .../531-python3-mpmath_1.3.0-1_all.deb ... Unpacking python3-mpmath (1.3.0-1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../532-python3-packaging_24.2-1_all.deb ... Unpacking python3-packaging (24.2-1) ... Selecting previously unselected package python3-sympy. Preparing to unpack .../533-python3-sympy_1.13.3-3_all.deb ... Unpacking python3-sympy (1.13.3-3) ... Setting up libapt-pkg-perl (0.1.41) ... Setting up liblz1:amd64 (1.15-2) ... Setting up libhwy1t64:amd64 (1.2.0-2+b2) ... Setting up media-types (11.0.0) ... Setting up libmodule-pluggable-perl (5.2-5) ... Setting up libb2-1:amd64 (0.98.1-1.1+b2) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up libgraphite2-3:amd64 (1.3.14-2+b1) ... Setting up libstring-escape-perl (2010.002-3) ... Setting up liblcms2-2:amd64 (2.16-2) ... Setting up libberkeleydb-perl:amd64 (0.66-1) ... Setting up libpixman-1-0:amd64 (0.44.0-3) ... Setting up plzip (1.12-1) ... update-alternatives: using /usr/bin/lzip.plzip to provide /usr/bin/lzip (lzip) in auto mode update-alternatives: using /usr/bin/lzip.plzip to provide /usr/bin/lzip-compressor (lzip-compressor) in auto mode update-alternatives: using /usr/bin/lzip.plzip to provide /usr/bin/lzip-decompressor (lzip-decompressor) in auto mode Setting up libtext-charwidth-perl:amd64 (0.04-11+b4) ... Setting up libsharpyuv0:amd64 (1.5.0-0.1) ... Setting up libaom3:amd64 (3.12.0-1) ... Setting up libpciaccess0:amd64 (0.17-3+b3) ... Setting up libfile-which-perl (1.27-2) ... Setting up libxau6:amd64 (1:1.0.11-1) ... Setting up libxdmcp6:amd64 (1:1.1.5-1) ... Setting up libdouble-conversion3:amd64 (3.3.1-1) ... Setting up libkeyutils1:amd64 (1.6.3-4) ... Setting up libxcb1:amd64 (1.17.0-2+b1) ... Setting up libunicode-utf8-perl (0.62-2+b3) ... Setting up libfftw3-single3:amd64 (3.3.10-2+b1) ... Setting up libset-intspan-perl (1.19-3) ... Setting up libicu72:amd64 (72.1-6) ... Setting up libxcb-xfixes0:amd64 (1.17.0-2+b1) ... Setting up libogg0:amd64 (1.3.5-3+b2) ... Setting up libmouse-perl:amd64 (2.5.11-1+b1) ... Setting up libzstd-dev:amd64 (1.5.6+dfsg-2) ... Setting up liblerc4:amd64 (4.0.0+ds-5) ... Setting up libpod-pom-perl (2.01-4) ... Setting up bsdextrautils (2.40.4-4) ... Setting up hdf5-helpers (1.14.5+repack-3) ... Setting up libwmflite-0.2-7:amd64 (0.2.13-1.1+b3) ... Setting up libregexp-pattern-perl (0.2.14-2) ... Setting up libgpg-error0:amd64 (1.51-3) ... Setting up libdata-messagepack-perl (1.02-1+b4) ... Setting up libclass-inspector-perl (1.36-3) ... Setting up libxcb-xinput0:amd64 (1.17.0-2+b1) ... Setting up libdynaloader-functions-perl (0.004-1) ... Setting up libdatrie1:amd64 (0.2.13-3+b1) ... Setting up libtext-glob-perl (0.11-3) ... Setting up libclass-method-modifiers-perl (2.15-1) ... Setting up liblist-compare-perl (0.55-2) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libxcb-render0:amd64 (1.17.0-2+b1) ... Setting up libclone-perl:amd64 (0.47-1+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:amd64 (0.2.5-2) ... Setting up libsub-identify-perl (0.14-3+b3) ... Setting up libcpanel-json-xs-perl:amd64 (4.39-1) ... Setting up libglvnd0:amd64 (1.7.0-1+b2) ... Setting up libio-stringy-perl (2.113-2) ... Setting up libhtml-tagset-perl (3.24-1) ... Setting up libts0t64:amd64 (1.22-1.1+b1) ... Setting up liblog-any-perl (1.717-1) ... Setting up libyaml-pp-perl (0.39.0-1) ... Setting up libxcb-glx0:amd64 (1.17.0-2+b1) ... Setting up libdevel-size-perl (0.84-1+b1) ... Setting up unzip (6.0-28) ... Setting up libdebhelper-perl (13.24.1) ... Setting up libbrotli1:amd64 (1.1.0-2+b6) ... Setting up libedit2:amd64 (3.1-20250104-1) ... Setting up libregexp-pattern-license-perl (3.11.2-1) ... Setting up libconvert-binhex-perl (1.125-3) ... Setting up liblwp-mediatypes-perl (6.04-2) ... Setting up libmagic1t64:amd64 (1:5.45-3+b1) ... Setting up libyaml-libyaml-perl (0.903.0+ds-1) ... Setting up fonts-freefont-otf (20211204+svn4273-2) ... Setting up libio-interactive-perl (1.026-1) ... Setting up libxcb-keysyms1:amd64 (0.4.1-1) ... Setting up libxcb-shape0:amd64 (1.17.0-2+b1) ... Setting up x11-common (1:7.7+24) ... invoke-rc.d: could not determine current runlevel Setting up X socket directories... /tmp/.X11-unix /tmp/.ICE-unix. Setting up libtry-tiny-perl (0.32-1) ... Setting up libsensors-config (1:3.6.0-10) ... Setting up libnghttp2-14:amd64 (1.64.0-1) ... Setting up libdeflate0:amd64 (1.23-1+b1) ... Setting up perl-openssl-defaults:amd64 (7+b2) ... Setting up libmldbm-perl (2.05-4) ... Setting up libxml-namespacesupport-perl (1.12-2) ... Setting up libfftw3-long3:amd64 (3.3.10-2+b1) ... Setting up gettext-base (0.23.1-1) ... Setting up m4 (1.4.19-5) ... Setting up libevent-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libgcrypt20:amd64 (1.11.0-7) ... Setting up libclone-choose-perl (0.010-2) ... Setting up libqhull-r8.0:amd64 (2020.2-6+b2) ... Setting up libxcb-render-util0:amd64 (0.3.10-1) ... Setting up xkb-data (2.42-1) ... Setting up liblzo2-2:amd64 (2.10-3+b1) ... Setting up libtime-moment-perl (0.44-2+b4) ... Setting up libencode-locale-perl (1.05-3) ... Setting up libxcb-shm0:amd64 (1.17.0-2+b1) ... Setting up libxcb-icccm4:amd64 (0.4.2-1) ... Setting up libcom-err2:amd64 (1.47.2-1) ... Setting up file (1:5.45-3+b1) ... Setting up texinfo-lib (7.1.1-1+b1) ... Setting up libmpg123-0t64:amd64 (1.32.10-1) ... Setting up libconfig-tiny-perl (2.30-1) ... Setting up libsereal-encoder-perl (5.004+ds-1+b3) ... Setting up liblist-utilsby-perl (0.12-2) ... Setting up libyaml-tiny-perl (1.76-1) ... Setting up libtext-wrapi18n-perl (0.06-10) ... Setting up libjbig0:amd64 (2.1-6.1+b2) ... Setting up octave-common (9.4.0-1) ... Setting up libregexp-common-perl (2024080801-1) ... Setting up libpcre2-16-0:amd64 (10.45-1) ... Setting up libaec0:amd64 (1.1.3-1+b1) ... Setting up libnet-netmask-perl (2.0002-2) ... Setting up libopengl0:amd64 (1.7.0-1+b2) ... Setting up libsub-install-perl (0.929-1) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up libxcb-util1:amd64 (0.4.1-1) ... Setting up libindirect-perl (0.39-2+b4) ... Setting up libxcb-xkb1:amd64 (1.17.0-2+b1) ... Setting up libxcb-image0:amd64 (0.4.0-2+b2) ... Setting up libkrb5support0:amd64 (1.21.3-4) ... Setting up libnumber-compare-perl (0.03-3) ... Setting up libsasl2-modules-db:amd64 (2.1.28+dfsg1-8+b1) ... Setting up tzdata (2025a-2) ... Current default time zone: 'Etc/UTC' Local time is now: Fri Feb 21 14:21:58 UTC 2025. Universal Time is now: Fri Feb 21 14:21:58 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libxcb-present0:amd64 (1.17.0-2+b1) ... Setting up liberror-perl (0.17029-2) ... Setting up libasound2-data (1.2.13-1) ... Setting up libjson-maybexs-perl (1.004008-1) ... Setting up libxml-sax-base-perl (1.09-3) ... Setting up libio-string-perl (1.08-4) ... Setting up libboolean-perl (0.46-3) ... Setting up libnetaddr-ip-perl (4.079+dfsg-2+b5) ... Setting up xtrans-dev (1.4.0-1) ... Setting up autotools-dev (20220109.1) ... Setting up libz3-4:amd64 (4.13.3-1) ... Setting up libblas3:amd64 (3.12.1-2) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/x86_64-linux-gnu/libblas.so.3 (libblas.so.3-x86_64-linux-gnu) in auto mode Setting up libclass-data-inheritable-perl (0.10-1) ... Setting up libunbound8:amd64 (1.22.0-1+b1) ... Setting up libpkgconf3:amd64 (1.8.1-4) ... Setting up libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-3) ... Setting up libalgorithm-c3-perl (0.11-2) ... Setting up libasound2t64:amd64 (1.2.13-1+b1) ... Setting up liblog-log4perl-perl (1.57-1) ... Setting up libtext-reform-perl (1.20-5) ... Setting up libjpeg62-turbo:amd64 (1:2.1.5-3+b1) ... Setting up libx11-data (2:1.8.10-2) ... Setting up libsvtav1enc2:amd64 (2.3.0+dfsg-1) ... Setting up libjpeg62-turbo-dev:amd64 (1:2.1.5-3+b1) ... Setting up libfile-find-rule-perl (0.34-3) ... Setting up libxcb-sync1:amd64 (1.17.0-2+b1) ... Setting up libipc-system-simple-perl (1.30-2) ... Setting up libio-tiecombine-perl (1.005-3) ... Setting up libnet-domain-tld-perl (1.75-4) ... Setting up libperlio-utf8-strict-perl (0.010-1+b3) ... Setting up aglfn (1.7+git20191031.4036a9c-2) ... Setting up libxcb-cursor0:amd64 (0.1.5-1) ... Setting up libavahi-common-data:amd64 (0.8-16) ... Setting up libncurses6:amd64 (6.5+20250216-1) ... Setting up libdbus-1-3:amd64 (1.16.0-1) ... Setting up libfftw3-quad3:amd64 (3.3.10-2+b1) ... Setting up libfribidi0:amd64 (1.0.16-1) ... Setting up libopus0:amd64 (1.5.2-2) ... Setting up t1utils (1.41-4) ... Setting up diffstat (1.67-1) ... Setting up libimagequant0:amd64 (2.18.0-1+b2) ... Setting up libproc2-0:amd64 (2:4.0.4-7) ... Setting up comerr-dev:amd64 (2.1-1.47.2-1) ... Setting up libunistring5:amd64 (1.3-1) ... Setting up fonts-dejavu-mono (2.37-8) ... Setting up libssl-dev:amd64 (3.4.1-1) ... Setting up libpng16-16t64:amd64 (1.6.46-4) ... Setting up libimath-3-1-29t64:amd64 (3.1.12-1+b3) ... Setting up libvorbis0a:amd64 (1.3.7-2+b1) ... Setting up libvariable-magic-perl (0.64-1+b1) ... Setting up libio-html-perl (1.004-3) ... Setting up libtext-template-perl (1.61-1) ... Setting up libpod-parser-perl (1.67-1) ... Setting up autopoint (0.23.1-1) ... Setting up libb-hooks-op-check-perl:amd64 (0.22-3+b2) ... Setting up fonts-dejavu-core (2.37-8) ... Setting up liblist-moreutils-xs-perl (0.430-4+b2) ... Setting up pkgconf-bin (1.8.1-4) ... Setting up libsensors5:amd64 (1:3.6.0-10+b1) ... Setting up libk5crypto3:amd64 (1.21.3-4) ... Setting up libqscintilla2-qt6-l10n (2.14.1+dfsg-1) ... Setting up libltdl7:amd64 (2.5.4-3) ... Setting up libfftw3-double3:amd64 (3.3.10-2+b1) ... Setting up libglapi-mesa:amd64 (24.3.4-3) ... Setting up libparams-util-perl (1.102-3+b1) ... Setting up libsasl2-2:amd64 (2.1.28+dfsg1-8+b1) ... Setting up libgfortran5:amd64 (14.2.0-17) ... Setting up libvulkan1:amd64 (1.4.304.0-1) ... Setting up libtime-duration-perl (1.21-2) ... Setting up autoconf (2.72-3) ... Setting up libtext-xslate-perl:amd64 (3.5.9-2+b1) ... Setting up libnghttp3-9:amd64 (1.6.0-2) ... Setting up libsub-exporter-progressive-perl (0.001013-3) ... Setting up libwebp7:amd64 (1.5.0-0.1) ... Setting up libarray-intspan-perl (2.004-2) ... Setting up libcapture-tiny-perl (0.50-1) ... Setting up libnghttp3-dev:amd64 (1.6.0-2) ... Setting up libtimedate-perl (2.3300-2) ... Setting up libexporter-lite-perl (0.09-2) ... Setting up libsub-name-perl:amd64 (0.28-1) ... Setting up libgif7:amd64 (5.2.2-1+b1) ... Setting up zlib1g-dev:amd64 (1:1.3.dfsg+really1.3.1-1+b1) ... Setting up libffi8:amd64 (3.4.7-1) ... Setting up dwz (0.15-1+b1) ... Setting up libdata-validate-domain-perl (0.15-1) ... Setting up libproc-processtable-perl:amd64 (0.636-1+b3) ... Setting up libparse-recdescent-perl (1.967015+dfsg-4) ... Setting up libdav1d7:amd64 (1.5.1-1) ... Setting up libmtdev1t64:amd64 (1.1.7-1) ... Setting up sensible-utils (0.0.24) ... Setting up libduktape207:amd64 (2.7.0-2+b2) ... Setting up libxshmfence1:amd64 (1.3-1+b3) ... Setting up libtiff6:amd64 (4.5.1+git230720-5) ... Setting up libxcb-randr0:amd64 (1.17.0-2+b1) ... Setting up librav1e0.7:amd64 (0.7.1-9+b1) ... Setting up libpath-tiny-perl (0.146-1) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up lzop (1.04-2) ... Setting up libassuan9:amd64 (3.0.1-2) ... Setting up procps (2:4.0.4-7) ... Setting up libjson-perl (4.10000-1) ... Setting up liblog-any-adapter-screen-perl (0.141-1) ... Setting up librole-tiny-perl (2.002004-1) ... Setting up libtasn1-6:amd64 (4.20.0-2) ... Setting up libipc-run3-perl (0.049-1) ... Setting up libmd4c0:amd64 (0.5.2-2+b1) ... Setting up libregexp-wildcards-perl (1.05-3) ... Setting up libmousex-strictconstructor-perl (0.02-3) ... Setting up libfile-sharedir-perl (1.118-3) ... Setting up libsub-uplevel-perl (0.2800-3) ... Setting up libsuitesparseconfig7:amd64 (1:7.8.3+dfsg-3) ... Setting up liblua5.4-0:amd64 (5.4.7-1+b2) ... Setting up libx11-6:amd64 (2:1.8.10-2) ... Setting up libaliased-perl (0.34-3) ... Setting up libthai-data (0.1.29-2) ... Setting up xorg-sgml-doctools (1:1.11-1.1) ... Setting up netbase (6.4) ... Setting up libabsl20230802:amd64 (20230802.1-4) ... Setting up libngtcp2-16:amd64 (1.9.1-1) ... Setting up libstrictures-perl (2.000006-1) ... Setting up libsub-quote-perl (2.006008-1) ... Setting up libdevel-stacktrace-perl (2.0500-1) ... Setting up libclass-xsaccessor-perl (1.19-4+b5) ... Setting up libtext-autoformat-perl (1.750000-2) ... Setting up libkrb5-3:amd64 (1.21.3-4) ... Setting up libglu1-mesa:amd64 (9.0.2-1.1+b3) ... Setting up libflac12t64:amd64 (1.4.3+ds-4) ... Setting up libtoml-tiny-perl (0.19-1) ... Setting up libstemmer0d:amd64 (2.2.0-4+b2) ... Setting up libsort-versions-perl (1.62-3) ... Setting up libssh2-1t64:amd64 (1.11.1-1) ... Setting up libexporter-tiny-perl (1.006002-1) ... Setting up libterm-readkey-perl (2.38-2+b4) ... Setting up libtext-unidecode-perl (1.30-3) ... Setting up libde265-0:amd64 (1.0.15-1+b2) ... Setting up libfont-ttf-perl (1.06-2) ... Setting up libfile-homedir-perl (1.006-2) ... Setting up libsamplerate0:amd64 (0.2.2-4+b2) ... Setting up libtasn1-6-dev:amd64 (4.20.0-2) ... Setting up openssl (3.4.1-1) ... Setting up libwebpmux3:amd64 (1.5.0-0.1) ... Setting up libtext-levenshteinxs-perl (0.03-5+b4) ... Setting up libperlio-gzip-perl (0.20-1+b4) ... Setting up libdrm-common (2.4.123-1) ... Setting up libyuv0:amd64 (0.0.1904.20250204-1) ... Setting up libevdev2:amd64 (1.13.3+dfsg-1) ... Setting up readline-common (8.2-6) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up libhtml-html5-entities-perl (0.004-3) ... Setting up libtext-levenshtein-damerau-perl (0.41-3) ... Setting up libsereal-decoder-perl (5.004+ds-1+b3) ... Setting up libmarkdown2:amd64 (2.2.7-2.1) ... Setting up libldap2:amd64 (2.6.9+dfsg-1) ... Setting up liburi-perl (5.30-1) ... Setting up iso-codes (4.17.0-1) ... Setting up libnet-ipv6addr-perl (1.02-1) ... Setting up libbrotli-dev:amd64 (1.1.0-2+b6) ... Setting up libmp3lame0:amd64 (3.100-6+b3) ... Setting up libblas-dev:amd64 (3.12.1-2) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so to provide /usr/lib/x86_64-linux-gnu/libblas.so (libblas.so-x86_64-linux-gnu) in auto mode Setting up libsz2:amd64 (1.1.3-1+b1) ... Setting up libvorbisenc2:amd64 (1.3.7-2+b1) ... Setting up libdata-validate-ip-perl (0.31-1) ... Setting up libwacom-common (2.14.0-1) ... Setting up libmousex-nativetraits-perl (1.09-3) ... Setting up libemail-address-xs-perl (1.05-1+b4) ... Setting up libxkbcommon0:amd64 (1.7.0-2) ... Setting up libwayland-client0:amd64 (1.23.1-3) ... Setting up libnet-ssleay-perl:amd64 (1.94-3) ... Setting up automake (1:1.17-3) ... update-alternatives: using /usr/bin/automake-1.17 to provide /usr/bin/automake (automake) in auto mode Setting up libgfortran-14-dev:amd64 (14.2.0-17) ... Setting up x11proto-dev (2024.1-1) ... Setting up libfile-stripnondeterminism-perl (1.14.1-2) ... Setting up libxcb-dri3-0:amd64 (1.17.0-2+b1) ... Setting up gnuplot-data (6.0.2+dfsg1-1) ... Setting up libllvm19:amd64 (1:19.1.7-1+b1) ... Setting up libwayland-server0:amd64 (1.23.1-3) ... Setting up libx11-xcb1:amd64 (2:1.8.10-2) ... Setting up libice6:amd64 (2:1.1.1-1) ... Setting up libhttp-date-perl (6.06-1) ... Setting up liblapack3:amd64 (3.12.1-2) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/x86_64-linux-gnu/liblapack.so.3 (liblapack.so.3-x86_64-linux-gnu) in auto mode Setting up libncurses-dev:amd64 (6.5+20250216-1) ... Setting up libfile-basedir-perl (0.09-2) ... Setting up gettext (0.23.1-1) ... Setting up libarpack2t64:amd64 (3.9.1-4) ... Setting up libgmp-dev:amd64 (2:6.3.0+dfsg-3) ... Setting up libamd3:amd64 (1:7.8.3+dfsg-3) ... Setting up libfile-listing-perl (6.16-1) ... Setting up libxau-dev:amd64 (1:1.0.11-1) ... Setting up libxpm4:amd64 (1:3.5.17-1+b3) ... Setting up nettle-dev:amd64 (3.10.1-1) ... Setting up libxrender1:amd64 (1:0.9.10-1.1+b4) ... Setting up libtool (2.5.4-3) ... Setting up libcolamd3:amd64 (1:7.8.3+dfsg-3) ... Setting up libfftw3-bin (3.3.10-2+b1) ... Setting up fontconfig-config (2.15.0-2) ... Setting up liblist-moreutils-perl (0.430-2) ... Setting up libpod-constants-perl (0.19-2) ... Setting up libhash-merge-perl (0.302-1) ... Setting up libsoftware-copyright-perl (0.012-2) ... Setting up libaec-dev:amd64 (1.1.3-1+b1) ... Setting up libavahi-common3:amd64 (0.8-16) ... Setting up libcxsparse4:amd64 (1:7.8.3+dfsg-3) ... Setting up libjpeg-dev:amd64 (1:2.1.5-3+b1) ... Setting up libxext6:amd64 (2:1.3.4-1+b3) ... Setting up libnet-http-perl (6.23-1) ... Setting up libpath-iterator-rule-perl (1.015-2) ... Setting up libtext-markdown-discount-perl (0.18-1) ... Setting up libidn2-0:amd64 (2.3.7-2+b1) ... Setting up libexception-class-perl (1.45-1) ... Setting up libclass-c3-perl (0.35-2) ... Setting up libqrupdate1:amd64 (1.1.5-1) ... Setting up libdevel-callchecker-perl:amd64 (0.009-1+b1) ... Setting up libcamd3:amd64 (1:7.8.3+dfsg-3) ... Setting up gfortran-14-x86-64-linux-gnu (14.2.0-17) ... Setting up pkgconf:amd64 (1.8.1-4) ... Setting up libxxf86vm1:amd64 (1:1.1.4-1+b4) ... Setting up libxs-parse-sublike-perl:amd64 (0.37-1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up patchutils (0.4.2-1) ... Setting up libthai0:amd64 (0.1.29-2+b1) ... Setting up ca-certificates (20241223) ... Updating certificates in /etc/ssl/certs... 152 added, 0 removed; done. Setting up libxdmcp-dev:amd64 (1:1.1.5-1) ... Setting up libglib2.0-0t64:amd64 (2.83.3-2) ... No schema files found: doing nothing. Setting up libdata-validate-uri-perl (0.07-3) ... Setting up libxs-parse-keyword-perl (0.48-2) ... Setting up libtest-exception-perl (0.43-3) ... Setting up libfreetype6:amd64 (2.13.3+dfsg-1) ... Setting up libglpk40:amd64 (5.0-1+b2) ... Setting up libxfixes3:amd64 (1:6.0.0-2+b4) ... Setting up libstring-copyright-perl (0.003014-1) ... Setting up libldap-dev:amd64 (2.6.9+dfsg-1) ... Setting up libopenexr-3-1-30:amd64 (3.1.5-5.1+b4) ... Setting up shared-mime-info (2.4-5+b2) ... Setting up libp11-kit0:amd64 (0.25.5-3) ... Setting up libxinerama1:amd64 (2:1.1.4-3+b3) ... Setting up libxkbcommon-x11-0:amd64 (1.7.0-2) ... Setting up liblapack-dev:amd64 (3.12.1-2) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/lapack/liblapack.so to provide /usr/lib/x86_64-linux-gnu/liblapack.so (liblapack.so-x86_64-linux-gnu) in auto mode Setting up libgssapi-krb5-2:amd64 (1.21.3-4) ... Setting up libdata-optlist-perl (0.114-1) ... Setting up libgav1-1:amd64 (0.19.0-3) ... Setting up ucf (3.0050) ... Setting up libssh2-1-dev:amd64 (1.11.1-1) ... Setting up libidn2-dev:amd64 (2.3.7-2+b1) ... Setting up libccolamd3:amd64 (1:7.8.3+dfsg-3) ... Setting up libreadline8t64:amd64 (8.2-6) ... Setting up dh-strip-nondeterminism (1.14.1-2) ... Setting up libwww-robotrules-perl (6.02-1) ... Setting up libsyntax-keyword-try-perl (0.30-1+b1) ... Setting up libjack-jackd2-0:amd64 (1.9.22~dfsg-4) ... Setting up libdrm2:amd64 (2.4.123-1) ... Setting up groff-base (1.23.0-7) ... Setting up libhtml-parser-perl:amd64 (3.83-1+b2) ... Setting up gpgconf (2.2.46-1+b1) ... Setting up libharfbuzz0b:amd64 (10.2.0-1) ... Setting up libfontconfig1:amd64 (2.15.0-2) ... Setting up libsndfile1:amd64 (1.2.2-2) ... Setting up libmro-compat-perl (0.15-2) ... Setting up gfortran-14 (14.2.0-17) ... Setting up libsm6:amd64 (2:1.2.4-1) ... Setting up libpython3.13-stdlib:amd64 (3.13.2-1) ... Setting up libfftw3-dev:amd64 (3.3.10-2+b1) ... Setting up libavahi-client3:amd64 (0.8-16) ... Setting up libio-socket-ssl-perl (2.089-1) ... Setting up gpg (2.2.46-1+b1) ... Setting up libgudev-1.0-0:amd64 (238-6) ... Setting up libp11-kit-dev:amd64 (0.25.5-3) ... Setting up libsub-exporter-perl (0.990-1) ... Setting up libpython3-stdlib:amd64 (3.13.1-2) ... Setting up libhttp-message-perl (7.00-2) ... Setting up libdrm-amdgpu1:amd64 (2.4.123-1) ... Setting up libhtml-form-perl (6.12-1) ... Setting up libjxl0.10:amd64 (0.10.4-2) ... Setting up libgnutls30t64:amd64 (3.8.9-2) ... Setting up libiterator-perl (0.03+ds1-2) ... Setting up libgnutls-openssl27t64:amd64 (3.8.9-2) ... Setting up libnghttp2-dev:amd64 (1.64.0-1) ... Setting up libportaudio2:amd64 (19.6.0-1.2+b3) ... Setting up libqt6core6t64:amd64 (6.7.2+dfsg-6) ... Setting up libhttp-negotiate-perl (6.01-2) ... Setting up fontconfig (2.15.0-2) ... Regenerating fonts cache... done. Setting up libavif16:amd64 (1.1.1-1) ... Setting up libcarp-assert-more-perl (2.8.0-1) ... Setting up libcholmod5:amd64 (1:7.8.3+dfsg-3) ... Setting up libxft2:amd64 (2.3.6-1+b4) ... Setting up libfeature-compat-try-perl (0.05-1) ... Setting up libxcb1-dev:amd64 (1.17.0-2+b1) ... Setting up libiterator-util-perl (0.02+ds1-2) ... Setting up libhttp-cookies-perl (6.11-1) ... Setting up libspqr4:amd64 (1:7.8.3+dfsg-3) ... Setting up python3.13 (3.13.2-1) ... Setting up libwacom9:amd64 (2.14.0-1) ... Setting up libdrm-radeon1:amd64 (2.4.123-1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libhtml-tree-perl (5.07-3) ... Setting up libxmlb2:amd64 (0.3.21-1) ... Setting up libxcursor1:amd64 (1:1.2.3-1) ... Setting up libparams-classify-perl:amd64 (0.015-2+b4) ... Setting up libpango-1.0-0:amd64 (1.56.1-1) ... Setting up libdrm-intel1:amd64 (2.4.123-1) ... Setting up libcgi-pm-perl (4.67-1) ... Setting up libpsl5t64:amd64 (0.21.2-1.1+b1) ... Setting up libx11-dev:amd64 (2:1.8.10-2) ... Setting up python3 (3.13.1-2) ... Setting up libreadline-dev:amd64 (8.2-6) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up gfortran-x86-64-linux-gnu (4:14.2.0-1) ... Setting up libxml-sax-perl (1.02+dfsg-4) ... update-perl-sax-parsers: Registering Perl SAX parser XML::SAX::PurePerl with priority 10... update-perl-sax-parsers: Updating overall Perl SAX parser modules info file... Creating config file /etc/perl/XML/SAX/ParserDetails.ini with new version Setting up gfortran (4:14.2.0-1) ... update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f77 (f77) in auto mode Setting up libcairo2:amd64 (1.18.2-2) ... Setting up libpsl-dev:amd64 (0.21.2-1.1+b1) ... Setting up libinput-bin (1.27.1-1) ... Setting up libobject-pad-perl (0.819-1) ... Setting up tex-common (6.18) ... update-language: texlive-base not installed and configured, doing nothing! Setting up python3-packaging (24.2-1) ... Setting up libnet-smtp-ssl-perl (1.04-2) ... Setting up libgnutls-dane0t64:amd64 (3.8.9-2) ... Setting up libqt6xml6:amd64 (6.7.2+dfsg-6) ... Setting up libqt6sql6:amd64 (6.7.2+dfsg-6) ... Setting up libmodule-runtime-perl (0.016-2) ... Setting up libmailtools-perl (2.22-1) ... Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Setting up libgssrpc4t64:amd64 (1.21.3-4) ... Setting up libraqm0:amd64 (0.10.2-1) ... Setting up libconfig-model-perl (2.155-1) ... Setting up libxml-libxml-perl (2.0207+dfsg+really+2.0134-5+b2) ... update-perl-sax-parsers: Registering Perl SAX parser XML::LibXML::SAX::Parser with priority 50... update-perl-sax-parsers: Registering Perl SAX parser XML::LibXML::SAX with priority 50... update-perl-sax-parsers: Updating overall Perl SAX parser modules info file... Replacing config file /etc/perl/XML/SAX/ParserDetails.ini with new version Setting up libumfpack6:amd64 (1:7.8.3+dfsg-3) ... Setting up libconst-fast-perl (0.014-2) ... Setting up libdata-section-perl (0.200008-1) ... Setting up libqt6core5compat6:amd64 (6.7.2-3) ... Setting up libpangoft2-1.0-0:amd64 (1.56.1-1) ... Setting up python3-mpmath (1.3.0-1) ... Setting up libdata-dpath-perl (0.60-1) ... Setting up libfltk1.3t64:amd64 (1.3.8-6.1+b1) ... Setting up libcups2t64:amd64 (2.4.10-2+b1) ... Setting up libngtcp2-crypto-gnutls8:amd64 (1.9.1-1) ... Setting up libstring-rewriteprefix-perl (0.009-1) ... Setting up libpangocairo-1.0-0:amd64 (1.56.1-1) ... Setting up libqt6dbus6:amd64 (6.7.2+dfsg-6) ... Setting up libkadm5clnt-mit12:amd64 (1.21.3-4) ... Setting up libgnutls28-dev:amd64 (3.8.9-2) ... Setting up libconfig-model-backend-yaml-perl (2.134-2) ... Setting up libinput10:amd64 (1.27.1-1) ... Setting up python3-sympy (1.13.3-3) ... Setting up mesa-libgallium:amd64 (24.3.4-3) ... Setting up libcurl4t64:amd64 (8.12.1-2) ... Setting up libkdb5-10t64:amd64 (1.21.3-4) ... Setting up libgbm1:amd64 (24.3.4-3) ... Setting up libmodule-implementation-perl (0.09-2) ... Setting up libpackage-stash-perl (0.40-1) ... Setting up libimport-into-perl (1.002005-2) ... Setting up libmoo-perl (2.005005-1) ... Setting up libgl1-mesa-dri:amd64 (24.3.4-3) ... Setting up libcurl3t64-gnutls:amd64 (8.12.1-2) ... Setting up liblist-someutils-perl (0.59-1) ... Setting up debhelper (13.24.1) ... Setting up libappstream5:amd64 (1.0.4-1) ... Setting up libmime-tools-perl (5.515-1) ... Setting up libsoftware-license-perl (0.104006-1) ... Setting up libclass-load-perl (0.25-2) ... Setting up libfeature-compat-class-perl (0.07-1) ... Setting up libegl-mesa0:amd64 (24.3.4-3) ... Setting up appstream (1.0.4-1) ... ? Metadata cache was updated successfully. Setting up librtmp-dev:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Setting up texinfo (7.1.1-1) ... Setting up libhdf5-310:amd64 (1.14.5+repack-3) ... Setting up libkadm5srv-mit12:amd64 (1.21.3-4) ... Setting up libegl1:amd64 (1.7.0-1+b2) ... Setting up libmoox-aliases-perl (0.001006-2) ... Setting up libparams-validate-perl:amd64 (1.31-2+b3) ... Setting up libhdf5-fortran-310:amd64 (1.14.5+repack-3) ... Setting up libb-hooks-endofscope-perl (0.28-1) ... Setting up krb5-multidev:amd64 (1.21.3-4) ... Setting up libhdf5-cpp-310:amd64 (1.14.5+repack-3) ... Setting up libhdf5-hl-310:amd64 (1.14.5+repack-3) ... Setting up libproxy1v5:amd64 (0.5.9-1) ... Setting up libglx-mesa0:amd64 (24.3.4-3) ... Setting up libglx0:amd64 (1.7.0-1+b2) ... Setting up libsoftware-licensemoreutils-perl (1.009-1) ... Setting up libkrb5-dev:amd64 (1.21.3-4) ... Setting up libgl1:amd64 (1.7.0-1+b2) ... Setting up libqt6gui6:amd64 (6.7.2+dfsg-6) ... Setting up libcurl4-openssl-dev:amd64 (8.12.1-2) ... Setting up libnamespace-clean-perl (0.27-2) ... Setting up libstring-license-perl (0.0.11-1) ... Setting up libgetopt-long-descriptive-perl (0.116-2) ... Setting up libqt6network6:amd64 (6.7.2+dfsg-6) ... Setting up libglx-dev:amd64 (1.7.0-1+b2) ... Setting up libgl-dev:amd64 (1.7.0-1+b2) ... Setting up licensecheck (3.3.9-1) ... Setting up libhdf5-hl-cpp-310:amd64 (1.14.5+repack-3) ... Setting up libhdf5-hl-fortran-310:amd64 (1.14.5+repack-3) ... Setting up libapp-cmd-perl (0.337-2) ... Setting up libqt6opengl6:amd64 (6.7.2+dfsg-6) ... Setting up libgl2ps1.4 (1.4.2+dfsg1-2) ... Setting up libqt6widgets6:amd64 (6.7.2+dfsg-6) ... Setting up libfltk-gl1.3t64:amd64 (1.3.8-6.1+b1) ... Setting up libhdf5-dev (1.14.5+repack-3) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/pkgconfig/hdf5-serial.pc to provide /usr/lib/x86_64-linux-gnu/pkgconfig/hdf5.pc (hdf5.pc) in auto mode Setting up cme (1.041-1) ... Setting up libqt6openglwidgets6:amd64 (6.7.2+dfsg-6) ... Setting up libqt6printsupport6:amd64 (6.7.2+dfsg-6) ... Setting up libqt6help6:amd64 (6.7.2-6) ... Setting up libqscintilla2-qt6-15:amd64 (2.14.1+dfsg-1+b4) ... Setting up libheif-plugin-dav1d:amd64 (1.19.5-1+b1) ... Setting up liblwp-protocol-https-perl (6.14-1) ... Setting up libheif-plugin-libde265:amd64 (1.19.5-1+b1) ... Setting up libwww-perl (6.77-1) ... Setting up libheif1:amd64 (1.19.5-1+b1) ... Setting up libparse-debcontrol-perl (2.005-6) ... Setting up libhtml-tokeparser-simple-perl (3.16-4) ... Setting up libwww-mechanize-perl (2.19-1) ... Setting up libgd3:amd64 (2.3.3-12+b1) ... Setting up gnuplot-nox (6.0.2+dfsg1-1) ... update-alternatives: using /usr/bin/gnuplot-nox to provide /usr/bin/gnuplot (gnuplot) in auto mode Setting up libgraphicsmagick-q16-3t64 (1.4+really1.3.45-1+b2) ... Setting up lintian (2.121.1) ... Setting up libgraphicsmagick++-q16-12t64 (1.4+really1.3.45-1+b2) ... Setting up libconfig-model-dpkg-perl (3.010) ... Setting up dh-octave-autopkgtest (1.8.0) ... Setting up octave (9.4.0-1) ... Setting up octave-dev (9.4.0-1) ... Setting up dh-octave (1.8.0) ... Processing triggers for libc-bin (2.40-7) ... Processing triggers for ca-certificates (20241223) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/octave-symbolic-3.2.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../octave-symbolic_3.2.1-3_source.changes dpkg-buildpackage: info: source package octave-symbolic dpkg-buildpackage: info: source version 3.2.1-3 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 debian/rules clean dh clean --buildsystem=octave dh_auto_clean -O--buildsystem=octave dh_octave_clean make[1]: Entering directory '/build/reproducible-path/octave-symbolic-3.2.1' /bin/bash: line 1: git: command not found rm -rf "tmp" rm -f fntests.log make[1]: *** No rule to make target 'distclean'. make[1]: Leaving directory '/build/reproducible-path/octave-symbolic-3.2.1' make[1]: Entering directory '/build/reproducible-path/octave-symbolic-3.2.1' make[1]: *** src: No such file or directory. Stop. make[1]: Leaving directory '/build/reproducible-path/octave-symbolic-3.2.1' dh_autoreconf_clean -O--buildsystem=octave dh_clean -O--buildsystem=octave debian/rules binary dh binary --buildsystem=octave dh_update_autotools_config -O--buildsystem=octave dh_autoreconf -O--buildsystem=octave dh_octave_version -O--buildsystem=octave Checking the Octave version... ok dh_auto_configure -O--buildsystem=octave dh_auto_build -O--buildsystem=octave dh_auto_test -O--buildsystem=octave create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=octave dh_prep -O--buildsystem=octave dh_auto_install --destdir=debian/octave-symbolic/ -O--buildsystem=octave octave --no-gui --no-history --silent --no-init-file --no-window-system /usr/share/dh-octave/install-pkg.m /build/reproducible-path/octave-symbolic-3.2.1/debian/octave-symbolic/usr/share/octave/packages /build/reproducible-path/octave-symbolic-3.2.1/debian/octave-symbolic/usr/lib/x86_64-linux-gnu/octave/packages For information about changes from previous versions of the symbolic package, run 'news symbolic'. dh_octave_check -O--buildsystem=octave Checking package... Run the unit tests... Checking m files ... [inst/pycall_sympy__.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/pycall_sympy__.m ***** test % general test x = 10; y = 6; cmd = '(x,y) = _ins; return (x+y,x-y)'; [a,b] = pycall_sympy__ (cmd, x, y); assert (a == x + y && b == x - y) Symbolic pkg v3.2.1: Python communication link active, SymPy v1.13.3. ***** test % bool assert (pycall_sympy__ ('return True,')) assert (~pycall_sympy__ ('return False,')) ***** test % float assert (abs(pycall_sympy__ ('return 1.0/3,') - 1/3) < 1e-15) ***** test % int r = pycall_sympy__ ('return 123456'); assert (r == 123456) assert (isinteger (r)) ***** test % string x = 'octave'; cmd = 's = _ins[0]; return s.capitalize(),'; y = pycall_sympy__ (cmd, x); assert (strcmp(y, 'Octave')) ***** test % string with escaped newlines, comes back as escaped newlines x = 'a string\nbroke off\nmy guitar\n'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % string with actual newlines, comes back as actual newlines x = sprintf('a string\nbroke off\nmy guitar\n'); y = pycall_sympy__ ('return _ins', x); y2 = strrep(y, sprintf('\n'), sprintf('\r\n')); % windows assert (strcmp(x, y) || strcmp(x, y2)) ***** test % cmd string with newlines, works with cell y = pycall_sympy__ ('return "string\nbroke",'); y2 = sprintf('string\nbroke'); y3 = strrep(y2, sprintf('\n'), sprintf('\r\n')); % windows assert (strcmp(y, y2) || strcmp(y, y3)) ***** test % string with XML escapes x = '<> >< <<>>'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) x = '&'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % strings with double quotes x = 'a\"b\"c'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) x = '\"'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % cmd has double quotes, these must be escaped by user % (of course: she is writing python code) expy = 'a"b"c'; y = pycall_sympy__ ('return "a\"b\"c",'); assert (strcmp(y, expy)) ***** test % strings with quotes x = 'a''b'; % this is a single quote y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % strings with quotes x = '\"a''b\"c''\"d'; y = pycall_sympy__ ('return _ins[0]', x); assert (strcmp(y, x)) ***** test % strings with quotes expy = '"a''b"c''"d'; y = pycall_sympy__ ('s = "\"a''b\"c''\"d"; return s'); assert (strcmp(y, expy)) ***** test % strings with printf escapes x = '% %% %%% %%%% %s %g %%s'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % cmd with printf escapes x = '% %% %%% %%%% %s %g %%s'; y = pycall_sympy__ (['return "' x '",']); assert (strcmp(y, x)) ***** test % cmd w/ backslash and \n must be escaped by user expy = 'a\b\\c\nd\'; y = pycall_sympy__ ('return "a\\b\\\\c\\nd\\",'); assert (strcmp(y, expy)) ***** test % slashes x = '/\\ // \\\\ \\/\\/\\'; z = '/\ // \\ \/\/\'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % slashes z = '/\ // \\ \/\/\'; y = pycall_sympy__ ('return "/\\ // \\\\ \\/\\/\\"'); assert (strcmp(y, z)) ***** test % strings with special chars x = '!@#$^&* you!'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) x = '~-_=+[{]}|;:,.?'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** xtest % string with backtick trouble for system -c (sysoneline) x = '`'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % unicode s1 = '我爱你'; cmd = 'return u"\u6211\u7231\u4f60",'; s2 = pycall_sympy__ (cmd); assert (strcmp (s1, s2)) ***** test % unicode with \x s1 = '我'; cmd = 'return b"\xe6\x88\x91".decode("utf-8")'; s2 = pycall_sympy__ (cmd); assert (strcmp (s1, s2)) ***** test % unicode with \x and some escaped backslashes s1 = '\我\'; cmd = 'return b"\\\xe6\x88\x91\\".decode("utf-8")'; s2 = pycall_sympy__ (cmd); assert (strcmp (s1, s2)) ***** xtest % unicode passthru s = '我爱你'; s2 = pycall_sympy__ ('return _ins', s); assert (strcmp (s, s2)) s = '我爱你<>\&//\#%% %\我'; s2 = pycall_sympy__ ('return _ins', s); assert (strcmp (s, s2)) ***** xtest % unicode w/ slashes, escapes s = '我<>\&//\#%% %\我'; s2 = pycall_sympy__ ('return "我<>\\&//\\#%% %\\我"'); assert (strcmp (s, s2)) ***** test % list, tuple assert (isequal (pycall_sympy__ ('return [1,2,3],'), {1, 2, 3})) assert (isequal (pycall_sympy__ ('return (4,5),'), {4, 5})) assert (isequal (pycall_sympy__ ('return (6,),'), {6,})) assert (isequal (pycall_sympy__ ('return [],'), {})) ***** test % dict cmd = 'd = dict(); d["a"] = 6; d["b"] = 10; return d,'; d = pycall_sympy__ (cmd); assert (d.a == 6 && d.b == 10) ***** test r = pycall_sympy__ ('return 6'); assert (isequal (r, 6)) ***** test r = pycall_sympy__ ('return "Hi"'); assert (strcmp (r, 'Hi')) ***** test % blank lines, lines with spaces a = pycall_sympy__ ({ '', '', ' ', 'return 6', ' ', ''}); assert (isequal (a, 6)) ***** test % blank lines, strange comment lines cmd = {'a = 1', '', '#', '', '# ', ' #', 'a = a + 2', ' #', 'return a'}; a = pycall_sympy__ (cmd); assert (isequal (a, 3)) ***** test % return empty string (was https://bugs.python.org/issue25270) assert (isempty (pycall_sympy__ ('return ""'))) ***** test % return nothing (via an empty list) % note distinct from 'return [],' pycall_sympy__ ('return []') ***** test % return nothing (because no return command) pycall_sympy__ ('dummy = 1') ***** test % return nothing (because no command) pycall_sympy__ ('') ***** test % return nothing (because no command) pycall_sympy__ ({}) ***** error % python exception while passing variables to python % This tests the "INTERNAL_PYTHON_ERROR" path. % FIXME: this is a very specialized test, relies on internal octsympy % implementation details, and may need to be adjusted for changes. disp('') disp('**********************************************************************') disp('') disp(' Some deliberate AttributeError and ValueError may appear next') disp('') disp('v v v v v v v v v v v v v v v v v v v v v v v v') b = sym([], 'S.This_is_supposed_to_make_an_exception', [1 1], 'Test', 'Test', 'Test'); c = b + 1; ********************************************************************** Some deliberate AttributeError and ValueError may appear next v v v v v v v v v v v v v v v v v v v v v v v v Traceback (most recent call last): File "", line 4, in _ins.append(S.This_is_supposed_to_make_an_exception) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/singleton.py", line 118, in __getattr__ raise AttributeError( "Attribute '%s' was not installed on SymPy registry %s" % ( name, self)) AttributeError: Attribute 'This_is_supposed_to_make_an_exception' was not installed on SymPy registry S ***** test % ...and after the above test, the pipe should still work a = pycall_sympy__ ('return _ins[0]*2', 3); assert (isequal (a, 6)) ***** test % This command does not fail with native interface and '@pyobject' s = warning ('off', 'OctSymPy:pythonic_no_convert'); try q = pycall_sympy__ ({'return type(int)'}); catch msg = lasterror.message; assert (~ isempty (regexp (msg, '.*does not know how to.*'))) end warning (s) disp('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^') disp(' End of deliberate errors!') disp(' You should see "46/46" or "Passes 46 out of 46 tests" below') disp('**********************************************************************') % ...and after the above test, the pipe should still work a = pycall_sympy__ ('return _ins[0]*2', 3); assert (isequal (a, 6)) Traceback (most recent call last): File "", line 2, in octoutput_drv(_outs) ~~~~~~~~~~~~~^^^^^^^ File "", line 12, in octoutput_drv octoutput(x, xroot) ~~~~~~~~~^^^^^^^^^^ File "", line 96, in octoutput raise ValueError("octoutput does not know how to export type " + str(type(x))) ValueError: octoutput does not know how to export type ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ End of deliberate errors! You should see "46/46" or "Passes 46 out of 46 tests" below ********************************************************************** ***** test % complex input [A, B] = pycall_sympy__ ('z = 2*_ins[0]; return (z.real,z.imag)', 3+4i); assert (A, 6) assert (B, 8) ***** test % complex output z = pycall_sympy__ ('return 3+2j'); assert (z, 3+2i) ***** error s = char ('abc', 'defgh', '12345'); r = pycall_sympy__ ('return _ins[0]', s); ***** test r = pycall_sympy__ ('return len(_ins[0])', ''); assert (r == 0) ***** test % ensure the 0x0 matrix in octave gets mapped to the empty list in python % @sym/subsasgn currently replies on this behaviour assert (pycall_sympy__ ('return _ins[0] == []', [])); ***** test % ensure the empty string gets mapped to the empty string in python assert (pycall_sympy__ ('return _ins[0] == ""', '')); warning: test: file /build/reproducible-path/octave-symbolic-3.2.1/inst/pycall_sympy__.m leaked file descriptors 46 tests, 46 passed, 0 known failure, 0 skipped [inst/vpasolve.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/vpasolve.m ***** test syms x vpi = vpa(sym(pi), 64); e = tan(x/4) == 1; q = vpasolve(e, x, 3.0); w = q - vpi ; assert (double(w) < 1e-30) ***** test syms x vpi = vpa(sym(pi), 64); e = tan(x/4) == 1; q = vpasolve(e, x); w = q - vpi; assert (double(w) < 1e-30) q = vpasolve(e); w = q - vpi; assert (double(w) < 1e-30) ***** test % very accurate pi syms x e = tan(x/4) == 1; m = digits(256); q = vpasolve(e, x, 3); assert (double(abs(sin(q))) < 1e-256) digits(m); ***** test % very accurate sqrt 2 syms x e = x*x == 2; m = digits(256); q = vpasolve(e, x, 1.5); assert (double(abs(q*q - 2)) < 1e-256) digits(m); ***** test % very accurate sqrt pi % (used to fail https://github.com/sympy/sympy/issues/8564) syms x e = x*x == sym(pi); m = digits(256); q = vpasolve(e, x, 3); assert (double(abs(sin(q*q))) < 1e-256) digits(m); ***** test syms x r = vpasolve(x^2 + 2 == 0, x, 1i); assert (double (imag(r)^2 - 2), 0, 1e-32) assert (double (real(r)^2), 0, 1e-32) r = vpasolve(x^2 + 2 == 0, x, -3i + 5); assert (double (imag(r)^2 - 2), 0, 1e-32) assert (double (real(r)^2), 0, 1e-32) ***** test % system syms x y f = 3*x^2 - 2*y^2 - 1; g = x^2 - 2*x + y^2 + 2*y - 8; r = vpasolve([f; g], [x; y], sym([-1; 1])); assert (isa (r, 'sym')) assert (numel (r) == 2) ***** test % system, double guess syms x y f = 3*x^2 - 2*y^2 - 1; g = x^2 - 2*x + y^2 + 2*y - 8; r = vpasolve([f; g], [x; y], [-1.1 1.2]); ***** test % system, double guess syms x y f = 3*x^2 - 2*y^2 - 1; g = x^2 - 2*x + y^2 + 2*y - 8; r1 = vpasolve([f; g], [x; y], [-1.1]); r2 = vpasolve([f; g], [x; y], [-1.1 -1.1]); assert (isequal (r1, r2)) ***** test % system, more eqns than unknowns syms x y eqns = [x^3 - x - y == 0; y*exp(x) == 16; log(y) + x == 4*log(sym(2))]; r = vpasolve (eqns, [x; y], [1; 1]); A = subs (lhs (eqns), [x; y], r); err = A - [0; 16; 4*log(sym(2))]; assert (double (err), zeros (size (err)), 1e-31) -1514:7: SymPyDeprecationWarning: non-Expr objects in a Matrix is deprecated. Matrix represents a mathematical matrix. To represent a container of non-numeric entities, Use a list of lists, TableForm, NumPy array, or some other data structure instead. See https://docs.sympy.org/latest/explanation/active-deprecations.html#deprecated-non-expr-in-matrix for details. This has been deprecated since SymPy version 1.9. It will be removed in a future version of SymPy. _proc.append(sp.Matrix([[i]])) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/laguerreL.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/laguerreL.m ***** error laguerreL (1) ***** error laguerreL (1, 2, 3) ***** assert (isequal (laguerreL (0, rand), 1)) ***** test x = rand; assert (isequal (laguerreL (1, x), 1 - x)) ***** test x=rand; y1=laguerreL(2, x); p2=[.5 -2 1]; y2=polyval(p2,x); assert(y1 - y2, 0, 10*eps); ***** test x=rand; y1=laguerreL(3, x); p3=[-1/6 9/6 -18/6 1]; y2=polyval(p3,x); assert(y1 - y2, 0, 20*eps); ***** test x=rand; y1=laguerreL(4, x); p4=[1/24 -16/24 72/24 -96/24 1]; y2=polyval(p4,x); assert(y1 - y2, 0, 30*eps) ***** error laguerreL(1.5, 10) ***** error laguerreL([0 1], [1 2 3]) ***** error laguerreL([0 1], [1; 2]) ***** test % numerically stable implementation (in n) L = laguerreL (10, 10); Lex = 1763/63; assert (L, Lex, -eps) L = laguerreL (20, 10); Lex = -177616901779/14849255421; % e.g., laguerreL(sym(20),10) assert (L, Lex, -eps) ***** test % vectorized x L = laguerreL (2, [5 6 7]); Lex = [3.5 7 11.5]; assert (L, Lex, eps) ***** test L = laguerreL (0, [4 5]); assert (L, [1 1], eps) ***** test % vector n L = laguerreL ([0 1 2 3], [4 5 6 9]); assert (L, [1 -4 7 -26], eps) ***** test % vector n, scalar x L = laguerreL ([0 1 2 3], 6); assert (L, [1 -5 7 1], eps) ***** assert (isa (laguerreL (0, single (1)), 'single')) ***** assert (isa (laguerreL (1, single ([1 2])), 'single')) ***** assert (isa (laguerreL ([1 2], single ([1 2])), 'single')) 18 tests, 18 passed, 0 known failure, 0 skipped [inst/assumptions.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/assumptions.m ***** test syms x assert(isempty(assumptions(x))) ***** test x = sym('x', 'positive'); a = assumptions(x); assert(~isempty(strfind(a{1}, 'positive'))) ***** test syms x assert(isempty(assumptions(x))) ***** test clear variables % for matlab test script syms x positive assert(~isempty(assumptions())) clear x assert(isempty(assumptions())) ***** test % make sure we have at least these possible assumptions A = {'real' 'positive' 'negative' 'integer' 'even' 'odd' 'rational'}; B = assumptions('possible'); assert (isempty (setdiff(A, B))) ***** test A = assumptions('possible'); for i = 1:length(A) x = sym('x', A{i}); a = assumptions(x); assert(strcmp(a{1}, ['x: ' A{i}] )) s1 = sympy (x); s2 = ['Symbol(''x'', ' A{i} '=True)']; assert (strcmp (s1, s2)) end ***** test syms x positive syms y real syms z f = x*y*z; a = assumptions(f); assert(length(a) == 2) assert(~isempty(strfind(a{1}, 'positive'))) assert(~isempty(strfind(a{2}, 'real'))) ***** test % dict output syms x positive syms y real syms z f = x*y*z; [v, d] = assumptions(f, 'dict'); assert(length(v) == 2) assert(iscell(v)) assert(isa(v{1}, 'sym')) assert(isa(v{2}, 'sym')) assert(length(d) == 2) assert(iscell(d)) assert(isstruct(d{1})) assert(isstruct(d{2})) ***** test %% assumptions on just the vars in an expression clear variables % for matlab test script syms x y positive f = 2*x; assert(length(assumptions(f))==1) assert(length(assumptions())==2) ***** test %% assumptions in cell/struct clear variables % for matlab test script syms x y z w positive f = {2*x [1 2 y] {1, {z}}}; assert(length(assumptions())==4) assert(length(assumptions(f))==3) clear x y z w assert(length(assumptions())==3) assert(length(assumptions(f))==3) ***** test % multiple assumptions n = sym('n', 'negative', 'even'); assert (logical (n < 0)) assert (~(logical (n > 0))) assert (~(logical (n == -1))) ***** test % multiple assumptions: eqn neither true nor false n = sym('n', 'negative', 'even'); assert (~isequal (n, sym(true)) && ~isequal (n, sym(false))) ***** test %% TODO: rewrite later with https://github.com/gnu-octave/symbolic/issues/622 a = pycall_sympy__ ('return Symbol("a", real=False)'); assert (strcmp (assumptions (a), {'a: ~real'})) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@logical/isAlways.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@logical/isAlways.m ***** error isAlways (true, false) ***** assert(isAlways(true)) ***** assert(~isAlways(false)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/vpa.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/vpa.m ***** test a = vpa(0, 4); b = double(a); assert(b == 0) ***** test a = vpa(pi, 4); b = sin(a); assert(abs(double(b)) < 1e-4) ***** test % vpa from double is ok, doesn't warn (c.f., sym(2.3)) a = vpa(2.3); assert(true) ***** test % vpa from double not more than 16 digits a = vpa(sqrt(pi), 32); b = sin(a^2); assert(abs(double(b)) > 1e-20) assert(abs(double(b)) < 1e-15) ***** test a = vpa(sym(pi), 32); b = sin(a); assert(abs(double(b)) < 1e-30) ***** test a = vpa(sym(pi), 256); b = sin(a); assert(abs(double(b)) < 1e-256) ***** test % pi str a = vpa('pi', 32); b = sin(a); assert(abs(double(b)) < 1e-32) ***** test % pi str a = vpa('pi', 32); b = vpa(sym('pi'), 32); assert (double (a - b) == 0) ***** test spi = sym(pi); a = vpa(spi, 10); b = double(a); assert(~isAlways(spi == a)) ***** test % matrix of sym a = [sym(pi) 0; sym(1)/2 1]; b = [pi 0; 0.5 1]; c = vpa(a, 6); assert(max(max(abs(double(c)-b))) < 1e-6) ***** test % matrix of double b = [pi 0; 0.5 1]; c = vpa(b, 6); assert(max(max(abs(double(c)-b))) < 1e-6) ***** test % integer type a = vpa(int32(6), 64); b = vpa(6, 64); assert (isequal (a, b)) ***** test % matrix of int b = int32([pi 0; 6.25 1]); c = vpa(b, 6); assert (isequal (double(c), [3 0; 6 1])) ***** test % can pass pi directly to vpa a = vpa(sym(pi), 128); b = vpa(pi, 128); assert (isequal (a, b)) ***** test % if sym does sth special for e so should vpa a = vpa(sym(exp(1)), 64); b = vpa(exp(1), 64); assert (isequal (a, b)) ***** test % can pass pi directly to vpa, even in array a = vpa(sym([2 pi]), 128); b = vpa([2 pi], 128); assert (isequal (a, b)) ***** test % can pass i directly to vpa a = vpa(sym(i)); b = vpa(i); ***** test % 'i' and 'I' just make vars a = vpa(sym(1i)); b = vpa('i'); c = vpa('I'); assert (~isequal (a, b)) assert (~isequal (a, c)) ***** test % '1i' and '1j' strings a = vpa(sym(1i)); b = vpa('1i'); c = vpa('1j'); assert (isequal (a, b)) assert (isequal (a, c)) ***** test % Issue #868, precision loss on '0.33j' a = vpa('0.33j', 40); b = vpa('0.33i', 40); assert (double (abs (imag (a)*100/33) - 1) < 1e-39) assert (isequal (a, b)) ***** test % inf/-inf do not become symbol('inf') S = {'oo', '-oo', 'inf', 'Inf', '-inf', '+inf'}; for j = 1:length(S) a = vpa(S{j}); b = vpa(sym(S{j})); assert (isequal (a, b)) end ***** test a = vpa('2.3', 20); s = strtrim(disp(a, 'flat')); assert (strcmp (s, '2.3000000000000000000')) ***** test % these should *not* be the same a = vpa(2.3, 40); b = vpa('2.3', 40); sa = sympy (a); sb = sympy (b); assert (~isequal (a, b)) assert (abs(double(a - b)) > 1e-20) assert (abs(double(a - b)) < 1e-15) assert (~strcmp(sa, sb)) ***** test % these should *not* be the same x = vpa('1/3', 32); y = vpa(sym(1)/3, 32); z = vpa(1/3, 32); assert (isequal (x, y)) assert (~isequal (x, z)) ***** test % big integers a = int64(12345678); a = a*a; b = vpa(a); c = vpa('152415765279684'); assert (isequal (b, c)) ***** test % big integers (workaround poor num2str, works in 4.0?) a = int64(1234567891); a = a*a; b = vpa(a); c = vpa('1524157877488187881'); assert (isequal (b, c)) ***** test % isequal and other comparisons a = vpa ("2/3", 32); b = vpa ("2/3", 64); assert (~ logical (a == b)) assert (~ isequal (a, b)) a = vpa ("1/3", 32); b = vpa ("1/3", 64); assert (~ logical (a == b)) assert (~ isequal (a, b)) a = vpa ("0.1", 32); b = vpa ("0.1", 64); assert (~ logical (a == b)) assert (~ isequal (a, b)) ***** test % isequal with array: Issue #1285 a = vpa ("2/3", 32); b = vpa ("2/3", 64); assert (~ isequal ([a 2*a], [b 2*b])) ***** xtest % non-equality of vpa that "might be" be integers: Issue #1285 a = vpa ("123", 32); b = vpa ("123", 64); assert (~ logical (a == b)) !!!!! known failure assert (!logical (a == b)) failed ***** xtest % non-equality of vpa that "might be" be integers: Issue #1285 if (pycall_sympy__ ('return Version(spver) >= Version("1.12.1")')) a = vpa ("123", 32); b = vpa ("123", 64); assert (~ isequal (a, b)) end ***** warning vpa ('sqrt(2.0)'); ***** warning a = vpa('2**0.5'); b = vpa(sqrt(sym(2))); assert (isequal (a, b)) ***** test a = vpa('2.3e1'); b = vpa(' 2.3e+1 '); assert (isequal (a, b)) a = vpa('21e-1'); b = vpa('2.1'); assert (isequal (a, b)) ***** test % Issue #859, operations on immutable matrices x = vpa (sym ([1 2])); % If vpa no longer makes an ImmutableDenseMatrix, % may need to adjust or remove this test. assert (~ isempty (strfind (sympy (x), 'Immutable'))) y = sin(x); y2 = [sin(vpa(sym(1))) sin(vpa(sym(2)))]; assert (isequal (y, y2)) 34 tests, 33 passed, 1 known failure, 0 skipped [inst/assume.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/assume.m ***** error a = assume('a', 'real') ***** error assume positive integer ***** error assume x y ***** error assume x clear real ***** error assume a>0 ***** error assume 'x/pi' integer ***** test syms x assume x positive a = assumptions(x); assert(strcmp(a, 'x: positive')) assume x even a = assumptions(x); assert(strcmp(a, 'x: even')) ***** test % multiple assumptions syms x assume x positive integer [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) ***** test % does workspace syms x positive x2 = x; f = sin(x); assume x negative a = assumptions(x); assert(strcmp(a, 'x: negative')) a = assumptions(x2); assert(strcmp(a, 'x: negative')) a = assumptions(f); assert(strcmp(a, 'x: negative')) ***** error % does not create new variable x clear x assume x real ***** error % no explicit variable named x clear x f = 2*sym('x'); assume x real ***** test % clear does workspace syms x positive f = 2*x; assume x clear assert (isempty (assumptions (f))); assert (isempty (assumptions ())); ***** test syms x y f = sin (2*x); assume x y real assert (strcmp (assumptions (x), 'x: real')) assert (strcmp (assumptions (y), 'y: real')) assert (strcmp (assumptions (f), 'x: real')) ***** test syms x y f = sin (2*x); assume x y positive even assert (strcmp (assumptions (x), 'x: positive, even') || strcmp (assumptions (x), 'x: even, positive')) assert (strcmp (assumptions (y), 'y: positive, even') || strcmp (assumptions (y), 'y: even, positive')) assert (strcmp (assumptions (f), 'x: positive, even') || strcmp (assumptions (f), 'x: even, positive')) ***** test % works from variable names not symbols syms x y a = [x y]; assume a real assert (strcmp (assumptions (x), 'x: real')) assert (strcmp (assumptions (y), 'y: real')) ***** test % works from variable names not symbols y = sym('x'); f = 2*y; assume y real assert (strcmp (assumptions (f), 'x: real')) ***** test % matrix of symbols syms a b c d A = [a b; c d]; assume A real assert (strcmp (assumptions (a), 'a: real')) assert (strcmp (assumptions (b), 'b: real')) assert (strcmp (assumptions (c), 'c: real')) assert (strcmp (assumptions (d), 'd: real')) ***** test % assume after symfun clear x syms f(x) assume x real assert (~ isempty (assumptions (formula (f)))) assert (~ isempty (assumptions (argnames (f)))) 18 tests, 18 passed, 0 known failure, 0 skipped [inst/syms.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/syms.m ***** test %% assumptions syms x real x2 = sym('x', 'real'); assert (isequal (x, x2)) ***** test % assumptions and clearing them on a symbol syms x real assert (~isempty (assumptions (x))) syms x assert (isempty (assumptions (x))) ***** test % Note SMT would clear syms in existing expressions syms x real f = {x {2*x} cos(x/2)}; assert (~isempty (assumptions (f))) syms x % but we do not: this would have to toggle for pure SMT compat assert (~isempty (assumptions (f))) % assert (isempty (assumptions (f))) ***** error syms x clear ***** error syms x positive y ***** error % this sometimes catches typos or errors in assumption names % (if you need careful checking, use sym not syms) syms x positive evne ***** error syms positive integer ***** test % does not create a variable called positive syms x positive integer assert (logical(exist('x', 'var'))) assert (~logical(exist('positive', 'var'))) ***** test % Issue #885 syms S(x) I(x) O(x) ***** test % Issue #290 syms FF(x) syms ff(x) syms Eq(x) ***** test % Issue #290 syms beta(x) ***** test syms x real syms f(x) assert (~ isempty (assumptions (x))) ***** test syms x real f(x) = symfun(sym('f(x)'), x); assert (~ isempty (assumptions (x))) assert (~ isempty (assumptions (argnames (f)))) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/catalan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/catalan.m ***** error catalan (sym(1)) ***** assert (double (catalan ()) > 0.915965594177) ***** assert (double (catalan ()) < 0.915965594178) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/heaviside.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/heaviside.m ***** assert (heaviside (0) == 0.5) ***** assert (isnan (heaviside (nan))) ***** assert (isequal (heaviside ([-inf -eps 0 eps inf]), [0 0 0.5 1 1])) ***** assert (isequaln (heaviside ([-1 1 nan]), [0 1 nan])) ***** assert (heaviside (0, 1) == 1) ***** error heaviside (1i) ***** assert (isa (heaviside (single (0)), 'single')) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@symfun/symfun.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/symfun.m ***** error symfun (1, sym('x'), 3) ***** error symfun ('f', sym('x')) ***** test syms x y syms f(x) assert(isa(f,'symfun')) clear f f(x,y) = sym('f(x,y)'); assert(isa(f,'symfun')) ***** test % symfuns are syms as well syms x f(x) = 2*x; assert (isa (f, 'symfun')) assert (isa (f, 'sym')) assert (isequal (f(3), 6)) assert (isequal (f(sin(x)), 2*sin(x))) ***** test syms x y f = symfun(sym('f(x)'), {x}); assert(isa(f, 'symfun')) f = symfun(sym('f(x,y)'), [x y]); assert(isa(f, 'symfun')) f = symfun(sym('f(x,y)'), {x y}); assert(isa(f, 'symfun')) ***** test % rhs is not sym syms x f = symfun(8, x); assert (isa (f,'symfun')) assert (isequal (f(10), sym(8))) ***** test % vector symfun syms x y F(x,y) = [1; 2*x; y; y*sin(x)]; assert (isa (F, 'symfun')) assert (isa (F, 'sym')) assert (isequal (F(sym(pi)/2,4) , [sym(1); sym(pi); 4; 4] )) ***** test x = sym('x'); y = sym('y'); f(x) = sym('f(x)'); g(x,y) = sym('g(x,y)'); % make sure these don't fail f(1); g(1,2); g(x,y); diff(g, x); diff(g, y); ***** test % defining 1D symfun in terms of a 2D symfun syms x y t syms 'g(x,y)' f(t) = g(t,t); f(5); assert (length (argnames (f)) == 1) assert (isequal (argnames (f), t)) assert (isequal( formula(diff(f,x)), sym(0))) ***** test % replace g with shorter and specific fcn syms x g(x) g; g(x) = 2*x; assert( isequal (g(5), 10)) ***** test % octave <= 3.8 needs quotes on 2D symfuns, so make sure it works syms x y syms 'f(x)' syms 'g(x,y)' assert (isa (f, 'symfun')) assert (isa (g, 'symfun')) ***** test % Bug #41: Octave <= 3.8 parser fails without quotes around 2D fcn syms x y eval('syms g(x,y)') assert (isa (g, 'symfun')) ***** test % and these days it works without eval trick syms g(x,y) assert (isa (g, 'symfun')) ***** test % syms f(x) without defining x clear x syms f(x) assert(isa(f, 'symfun')) assert(isa(x, 'sym')) ***** test % SMT compat: symfun indep var overwrites existing var t = 6; syms f(t) assert (logical (t ~= 6)) ***** test % SMT compat: symfun indep var overwrites existing var, even if sym syms x t = x; syms f(t) assert (~ logical (t == x)) ***** test syms x y f(x) = x^2; g(x,y) = sym('g(x,y)'); f2 = 2*f; assert( isequal (f2(4), 32)) assert( isa(f2, 'symfun')) assert( isa(2*g, 'symfun')) assert( isa(0*g, 'symfun')) % in SMT, this is the zero symfun ***** test % syms has its own parsing code, check it works syms f(x,y) g = f; syms f(x, y) assert (isequal (f, g)) syms 'f( x, y )' assert (isequal (f, g)) ***** test % syms own parsing code should not reorder the vars syms f(y, x) v = argnames (f); assert (isequal (v(1), y) && isequal (v(2), x)) ***** test % assignment of symfun to symfun, issue #189 syms t x(t) = 2*t; y(t) = x; assert (isa (y, 'symfun')) y = symfun(x, t); assert (isa (y, 'symfun')) % others y = x; assert (isa (y, 'symfun')) y(t) = x(t); assert (isa (y, 'symfun')) ***** test % assignment of generic symfun to symfun syms t x(t) y(t) = x; assert (isa (y, 'symfun')) y = symfun(x, t); assert (isa (y, 'symfun')) ***** error % Issue #444: invalid args syms x f(x, x) = 2*x; ***** error % Issue #444: invalid args syms x y f(x, y, x) = x + y; ***** error % Issue #444: invalid args syms x y f(x, y, x) = x + y; ***** error % Issue #444: expression as arg syms x f(2*x) = 4*x; 25 tests, 25 passed, 0 known failure, 0 skipped [inst/@symfun/isequaln.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/isequaln.m ***** error isequaln (symfun('x + 1', x)) ***** test syms x y f(x) = 2*x; g(x) = 2*x; assert (isequaln (f, g)) ***** test syms x f(x) = 2*x + 1; g(x) = 2*x + 1; h(x) = 2*x + 1; assert (isequaln (f, g, h)) ***** test syms x f(x) = 2*x + 1; g(x) = 2*x + 1; h(x) = 2*x; assert (~ isequaln (f, g, h)) ***** test syms x y f(x) = 2*x; g(x, y) = 2*x; assert (~ isequaln (f, g)) ***** test syms x y f(x) = symfun(nan, x); g(x) = symfun(nan, x); assert (isequaln (f, g)) ***** test syms x y f(x) = symfun(nan, x); g(x, y) = symfun(nan, x); assert (~ isequaln (f, g)) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@symfun/subsref.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/subsref.m ***** test syms x f(x) = x^2; v = f.vars; assert(iscell(v)) assert(length(v)==1) assert(isequal(v{1},x)) ***** test %% pass through to sym properties syms x f(x) = x^2; y = x^2; % not a symfun assert(strcmp(f.flat, y.flat)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/numel.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/numel.m ***** test syms x f(x) = x^2; assert(numel(f)==1) ***** test syms x f(x) = [1 x]; assert(numel(f)==1) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/int.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/int.m ***** test % indefinite integral of symfun gives symfun syms x f(x) = x^2; g = int(f); assert (isa(g, 'symfun')) g = int(f, x); assert (isa(g, 'symfun')) ***** test % indefinite integral of abstract symfun gives symfun syms f(x) g = int(f); assert (isa(g, 'symfun')) g = int(f, x); assert (isa(g, 'symfun')) ***** test % definite integral does not give symfun syms x f(x) = x^2; g = int(f, x, 0, 2); assert (isa(g, 'sym')) assert (~isa(g, 'symfun')) ***** test % ... even if it has a variable in it syms x t f(x) = x; g = int(f, x, 0, t); assert (isa(g, 'sym')) assert (~isa(g, 'symfun')) ***** test % ... even if the input is abstract function syms f(x) g = int(f, x, 0, 2); assert (isa(g, 'sym')) assert (~isa(g, 'symfun')) ***** test % symfun in x, integrated in y gives symfun still in x % (SMT does this too). syms f(x) y g = int(f, y); assert (isa (g, 'symfun')) assert (isequal (argnames (g), x)) ***** test % same as above, but concrete symfun syms x y f(x) = x^2; g = int(f, y); assert (isa (g, 'symfun')) assert (isequal (argnames (g), x)) assert (isequal (formula(g), x^2*y)) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@symfun/private_disp_name.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/private_disp_name.m ***** test syms f(x) s = private_disp_name(f, 'f'); assert (strcmp (s, 'f(x)')) ***** test syms x y g(y, x) = x + y; s = private_disp_name(g, 'g'); assert (strcmp (s, 'g(y, x)')) ***** test syms f(x) assert (isempty (private_disp_name(f, ''))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@symfun/mpower.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mpower.m ***** test syms x f(x) = 2*x; h = f^f; assert( isa(h, 'symfun')) assert (isequal (formula (h), (2*x)^(2*x))) h = f^sym(2); assert( isa(h, 'symfun')) assert (isequal (formula (h), 4*x^2)) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/formula.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/formula.m ***** test % simple syms x f(x) = sin(x); g = formula(f); assert (isequal (g, sin(x))); ***** test % concrete: return is a sym, not a symfun syms x f(x) = sin(x); g = formula(f); assert (~isa(g, 'symfun')); ***** test % abstract: return is a sym, not a symfun syms f(x) g = formula(f); assert (~isa(g, 'symfun')); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@symfun/mldivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mldivide.m ***** test syms x f(x) = x^2; assert( isa(f\f, 'symfun')) assert( isa(f\x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/minus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/minus.m ***** test syms x f(x) = x^2; assert( isa(f - f, 'symfun')) assert( isa(f - x, 'symfun')) ***** test % Octave bug #42735 fixed in 4.4.2 syms x f(x) = x^2; g = x^2; h = x - f; assert (isa (h, 'symfun') && isequal (formula (h), x - g)) h = x + f; assert (isa (h, 'symfun') && isequal (formula (h), x + g)) h = x * f; assert (isa (h, 'symfun') && isequal (formula (h), x * g)) h = x / f; assert (isa (h, 'symfun') && isequal (formula (h), x / g)) h = x ^ f; assert (isa (h, 'symfun') && isequal (formula (h), x ^ g)) h = x .* f; assert (isa (h, 'symfun') && isequal (formula (h), x .* g)) h = x ./ f; assert (isa (h, 'symfun') && isequal (formula (h), x ./ g)) h = x .^ f; assert (isa (h, 'symfun') && isequal (formula (h), x .^ g)) ***** test % different variables syms x y f(x) = 2*x; g(y) = sin(y); h = f - g(x); assert( isa(h, 'symfun')) assert( isequal (argnames (h), argnames (f))) assert (isequal (formula (h), 2*x - sin(x))) % and even if rh-sym has a dummy variable: h = f - g(y); assert( isa(h, 'symfun')) assert( isequal (argnames (h), argnames(f))) assert (isequal (formula (h), 2*x - sin(y))) ***** test % different variables, f has more syms x y f(x,y) = 2*x*y; g(y) = sin(y); h = f - g(y) + g(x); assert( isa(h, 'symfun')) assert( isequal (argnames (h), argnames (f))) assert (isequal (formula (h), 2*x*y - sin(y) + sin(x))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@symfun/rdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/rdivide.m ***** test syms x f(x) = x^2; assert( isa(f./f, 'symfun')) assert( isa(f./[x x^2], 'symfun')) ***** test syms x f(x) = [x 2*x]; h = f./[x 2]; assert( isa(h, 'symfun')) assert (isequal (formula (h), [1 x])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/isequal.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/isequal.m ***** error isequal (symfun('x + 1', x)) ***** test syms x y f(x) = 2*x; g(x) = 2*x; assert (isequal (f, g)) ***** test syms x f(x) = 2*x + 1; g(x) = 2*x + 1; h(x) = 2*x + 1; assert (isequal (f, g, h)) ***** test syms x f(x) = 2*x + 1; g(x) = 2*x + 1; h(x) = 2*x; assert (~ isequal (f, g, h)) ***** test syms x y f(x) = 2*x; g(x, y) = 2*x; assert (~ isequal (f, g)) ***** test syms x y f(x) = symfun(nan, x); g(x) = symfun(nan, x); assert (~ isequal (f, g)) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@symfun/ldivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/ldivide.m ***** test syms x f(x) = x^2; assert( isa(f .\ f, 'symfun')) assert( isa(f .\ x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/diff.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/diff.m ***** test % concrete fcn syms x f(x) = x*x; g(x) = 2*x; assert (logical (diff(f) == g)) assert (isa (diff(f), 'symfun')) ***** test % abstract fcn syms y(x) assert (logical (diff(y) == diff(y(x)))) assert (isa (diff(y), 'symfun')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/mrdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mrdivide.m ***** test syms x f(x) = x^2; assert( isa(f/f, 'symfun')) assert( isa(f/x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/size.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/size.m ***** test syms x f(x) = x; d = size(f); assert (isequal (d, [1 1])) [n, m] = size(f); assert (isequal ([n m], [1 1])) assert (size(f, 1) == 1) assert (size(f, 2) == 1) ***** test syms x f(x) = [1 x]; d = size(f); assert (isequal (d, [1 1])) [n, m] = size(f); assert (isequal ([n m], [1 1])) assert (size(f, 1) == 1) assert (size(f, 2) == 1) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/plus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/plus.m ***** test syms x f(x) = x^2; assert( isa(f + f, 'symfun')) assert( isa(f + x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/uminus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/uminus.m ***** test % Issue #447 syms x f(x) = x^2; assert (isa (-f, 'symfun')) ***** test syms f(x) h = -f; assert (isa (h, 'symfun')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/symvar.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/symvar.m ***** test % basic syms f(t, s) assert (isempty (symvar (f, 0))) assert (isequal (symvar (f, 1), t)) assert (isequal (symvar (f, 2), [t s])) assert (isequal (symvar (f, 3), [t s])) ***** test % note preference for vars of symfun, if n requested syms x f(y) assert (isequal (symvar(f*x, 1), y)) assert (isequal (symvar(f(y)*x, 1), x)) ***** test % symfun, checked smt syms x f(y) a = f*x; b = f(y)*x; assert (isequal (symvar(a), [x y])) assert (isequal (symvar(b), [x y])) ***** test % preference for the explicit variables syms a x f(t, s) h = f*a + x; assert (isequal (symvar (h, 1), t)) assert (isequal (symvar (h, 2), [t s])) assert (isequal (symvar (h, 3), [t s x])) assert (isequal (symvar (h, 4), [t s x a])) assert (isequal (symvar (h, 5), [t s x a])) assert (isequal (symvar (h), [a s t x])) ***** test % symfun dep on some vars only, matches smt w/ n syms x s t f(s) = x; g(s, t) = x*s; assert (isequal (symvar(f, 1), s)) assert (isequal (symvar(f, 2), [s x])) assert (isequal (symvar(g, 1), s)) assert (isequal (symvar(g, 2), [s t])) assert (isequal (symvar(g, 3), [s t x])) ***** test % A documented difference from SMT on symvar(symfun) w/o n syms x s t f(s) = x; g(s, t) = x*s; % SMT would have %assert (isequal (symvar(f), x)) % no s %assert (isequal (symvar(g), [s x])) % no t assert (isequal (symvar(f), [s x])) assert (isequal (symvar(g), [s t x])) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@symfun/argnames.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/argnames.m ***** test % basic test syms f(x) assert (isequal (argnames (f), x)) ***** test % Multiple variables, abstract symfun syms f(t, x, y) assert (isequal (argnames (f), [t x y])) ***** test % Concrete symfun syms x y z t f(t, x, y) = x + y + z; assert (isequal (argnames (f), [t x y])) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@symfun/times.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/times.m ***** test syms x f(x) = x^2; assert( isa(f .* f, 'symfun')) assert( isa(f .* x, 'symfun')) ***** test syms x f(x) = [x 2*x]; h = f.*[x 3]; assert( isa(h, 'symfun')) assert (isequal (formula (h), [x^2 6*x])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/mtimes.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mtimes.m ***** test syms x f(x) = x^2; assert( isa(f * f, 'symfun')) assert( isa(f * x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/power.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/power.m ***** test syms x f(x) = 2*x; h = f.^f; assert( isa(h, 'symfun')) assert (isequal (formula (h), (2*x)^(2*x))) ***** test syms x f(x) = [x 2*x]; h = f.^[x 3]; assert( isa(h, 'symfun')) assert (isequal (formula (h), [x^x 8*x^3])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@double/logint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/logint.m ***** error logint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = logint (x); B = double (logint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = logint (x); B = double (logint (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Li(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 1.3876787420229375511 + 2.5087546988592328752*1i 1.6987684473874802274 + 4.5936366057115204667*1i 30.126141584079629926 3.4936715673748995398 + 5.5260023797127391973*1i 0.90264689772681592152e-5 + 3.1415953634267361942*1i -2.3996350854560916779 - 7.6971739096353664559*1i ]; B = logint (x); assert (A, B, -eps) ***** assert (logint (inf), inf) ***** assert (isnan (logint (-inf))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/pochhammer.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/pochhammer.m ***** error pochhammer (1) ***** error pochhammer (1, 2, 3) ***** error pochhammer ([1 2], [1 2 3]) ***** error pochhammer ([1 2], [1; 2]) ***** test y = sym(11)/10; t = sym(3); x = 1.1; s = 3; A = pochhammer (x, s); B = double (pochhammer (y, t)); assert (A, B, -2*eps); ***** test % maple A = 256.798558090310131720; B = pochhammer (18.1, 1.9); assert (A, B, -20*eps) ***** test % maple, complex inputs> A = 2.67921619474318221972 + 1.96716724764630702653*1i; B = pochhammer (12.1+3.1*i, 0.5+0.2i); assert (A, B, -4*eps); ***** test % maple, matrix inputs A = [5.61467232547723663908 20.6144884613920190965]; B = pochhammer ([0.9 0.8], [3.1 4.2]); assert (A, B, -3*eps); ***** test % x matrix, s scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; t = sym(2); x = double (y); s = 2; A = pochhammer (s, x); B = double (pochhammer (t, y)); assert (A, B, -3*eps); ***** test % s matrix, x scalar t = [1 2 sym(pi); exp(sym(1)) 5 6]; y = sym(2); s = double (t); x = 2; A = pochhammer (s, x); B = double (pochhammer (t, y)); assert (A, B, -5*eps); 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@double/coshint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/coshint.m ***** error coshint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = coshint (x); B = double (coshint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = coshint (x); B = double (coshint (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Chi(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 0.58447599687824767874 + 1.8682915044330306402*1i -0.63131069034703116988 + 1.8986171211850702957*1i 0.13577763724269399110e42 -0.045456433004455372635 + 1.5707963267948966192*1i -8.6330747070747332203 + 3.1315929868531280002*1i 0.74701205140887966531e7 + 0.10381444259644068585e8*1i ]; B = coshint (x); assert (A, B, -eps) ***** assert (coshint (inf), inf) ***** assert (isinf (coshint (-inf))) ***** assert (imag (coshint (-inf)), pi) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@double/sinint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/sinint.m ***** error sinint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = sinint (x); B = double (sinint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = sinint (x); B = double (sinint (y)); assert (A, B, -4*eps); ***** assert (sinint (0), 0) ***** assert (sinint (inf), pi/2) ***** assert (sinint (-inf), -pi/2) ***** assert (sinint (1), 0.9460830703671830149414, -2*eps) ***** assert (sinint (-1), -0.9460830703671830149414, -2*eps) ***** assert (sinint (pi), 1.851937051982466170361, -2*eps) ***** assert (sinint (-pi), -1.851937051982466170361, -2*eps) ***** assert (sinint (300), 1.5708810882137495193, -2*eps) ***** assert (sinint (1e4), 1.5708915453859619157, -2*eps) ***** assert (sinint (20i), 1.2807826332028294459e7*1i, -2*eps) ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Si(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 1.6782404878293681180 + 2.0396845546022061045*1i -18.154174221650281533 + 1.6146414539230479060*1i 1.5622254668890562934 1246.1144901994233444*1i -0.000099999999944461111128 + 0.99999999833338888972e-6*1i -1.5386156269726011209 - 0.053969388020443786229*1i ]; B = sinint (x); assert (A, B, -eps) 14 tests, 14 passed, 0 known failure, 0 skipped [inst/@double/dilog.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/dilog.m ***** test x = 1.1; y = sym(11)/10; A = dilog (x); B = double (dilog (y)); assert (A, B, -4*eps); ***** test y = [2 2 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = dilog (x); B = double (dilog (y)); assert (A, B, -eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(dilog(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ -0.59248494924959145800 - 1.5760154034463234224*1i -1.0549087538833908441 - 3.8759788000863368495*1i -12.192421669033171348 -2.9195729380904939394 - 3.9540920181102973073*1i 1.6459519160623984119 - 0.00032335296277550987686*1i -1.5445800511775466879 + 9.4256034277816069684*1i ]; B = dilog (x); assert (A, B, -eps) ***** xtest % https://github.com/fredrik-johansson/mpmath/issues/473 assert (isinf (dilog (inf))) !!!!! known failure assert (isinf (dilog (inf))) failed ***** assert (isnan (dilog (-inf))) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@double/sinhint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/sinhint.m ***** error sinhint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = sinhint (x); B = double (sinhint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = sinhint (x); B = double (sinhint (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Shi(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 0.45769171128668800567 + 1.8332099215048436239*1i 0.60888490416819746440 + 1.2482232175376056201*1i 0.13577763724269399110e42 1.6583475942188740493*1i -0.00010000000005553888891 + 0.10000000016666111119e-5*1i -0.74701205140887967022e7 - 0.10381447401236722090e8*1i ]; B = sinhint (x); assert (A, B, -eps) ***** assert (sinhint (inf), inf) ***** assert (sinhint (-inf), -inf) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/chebyshevU.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/chebyshevU.m ***** error chebyshevU (1) ***** error chebyshevU (1, 2, 3) ***** error chebyshevU ([1 2], [1 2 3]) ***** error chebyshevU ([1 2], [1; 2]) ***** test y = sym(11)/10; t = sym(2); x = 1.1; s = 2; A = chebyshevU (s, x); B = double (chebyshevU (t, y)); assert (A, B, -2*eps); ***** test % maple A = 1.661891066691338157; B = chebyshevU (18.1, 0.9); assert (A, B, -3*eps) ***** test % maple, complex inputs> % ChebyshevU(12.1+3.1*I, 0.5+0.2*I); A = 1.046959313670290818 - 0.03386773634958834846*1i; B = chebyshevU (12.1+3.1*i, 0.5+0.2i); assert (A, B, -3*eps); ***** test % maple, matrix inputs A = [2.2543638828875776000 -1.3872651600553574400]; B = chebyshevU ([16 17], [0.9 0.8]); assert (A, B, -10*eps); ***** test % x matrix, s scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; t = sym(2); x = double (y); s = 2; A = chebyshevU (s, x); B = double (chebyshevU (t, y)); assert (A, B, -eps); ***** test % s matrix, x scalar t = [1 2 sym(pi); exp(sym(1)) 5 6]; y = sym(2); s = double (t); x = 2; A = chebyshevU (s, x); B = double (chebyshevU (t, y)); assert (A, B, -2*eps); ***** xtest % https://github.com/fredrik-johansson/mpmath/issues/469 assert (chebyshevU (4, inf), inf) assert (chebyshevU (4, -inf), inf) assert (chebyshevU (3, inf), inf) assert (chebyshevU (3, -inf), -inf) !!!!! known failure ASSERT errors for: assert (chebyshevU (4, inf),inf) Location | Observed | Expected | Reason () 5 Inf 'Inf' mismatch 11 tests, 10 passed, 1 known failure, 0 skipped [inst/@double/bernoulli.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/bernoulli.m ***** error bernoulli (1, 2, 3) ***** error bernoulli ([1 2], [1 2 3]) ***** error bernoulli ([1 2], [1; 2]) ***** assert (bernoulli (0), 1) ***** assert (bernoulli (3), 0) ***** test % two different definitions in literature assert (abs (bernoulli (1)), 0.5, -eps) ***** xtest % we want to use B_1 = 1/2, possible with a version-specific filter assert (bernoulli (1), 0.5, -eps) !!!!! known failure ASSERT errors for: assert (bernoulli (1),0.5,-eps) Location | Observed | Expected | Reason () -0.5 0.5 Rel err 2 exceeds tol 2.2204e-16 by 2 ***** test n = sym(88); m = 88; A = bernoulli (m); B = double (bernoulli (n)); assert (A, B, -eps); ***** test m = [0 2; 3 4]; n = sym(m); A = bernoulli (m); B = double (bernoulli (n)); assert (isequal (A, B)); ***** test y = sym(19)/10; n = sym(2); x = 1.9; m = 2; A = bernoulli (m, x); B = double (bernoulli (n, y)); assert (A, B, -eps); ***** test assert (isequal (bernoulli (4, inf), inf)) assert (isequal (bernoulli (4, -inf), inf)) ***** xtest % still broken? assert (isequal (bernoulli (3, inf), inf)) assert (isequal (bernoulli (3, -inf), -inf)) ***** test assert (isnan (bernoulli(3, nan))) assert (isnumeric (bernoulli(3, nan))) ***** test % maple, complex input A = 34.21957245745810513 - 130.0046256649829101i; B = bernoulli(7, 2.123 + 1.234i); assert (A, B, -5*eps); ***** test % x matrix, m scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; n = sym(2); x = double (y); m = 2; A = bernoulli (m, x); B = double (bernoulli (n, y)); assert (A, B, -eps); ***** test % m matrix, x scalar m = [1 2 3; 4 5 6]; n = sym(m); y = sym(21)/10; x = 2.1; A = bernoulli (m, x); B = double (bernoulli (n, y)); assert (A, B, -3*eps); 16 tests, 15 passed, 1 known failure, 0 skipped [inst/@double/fresnelc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/fresnelc.m ***** error fresnelc (1, 2) ***** test x = 1.1; y = sym(11)/10; A = fresnelc (x); B = double (fresnelc (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = fresnelc (x); B = double (fresnelc (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(FresnelC(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 16.087871374125480424 - 36.225687992881650217*1i 0.47688568479874574722e12 + 0.12213736710985573216e13*1i 0.49999989867881789756 0.49989869420551572361*1i -0.000099999999999999997535 + 0.99999999999999987665e-6*1i 0.15391592966931193100e26 - 0.75738824160998910388e24*1i ]; B = fresnelc (x); assert (A, B, -eps) ***** assert (fresnelc (inf), 0.5) ***** assert (fresnelc (-inf), -0.5) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/fresnels.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/fresnels.m ***** error fresnels (1, 2) ***** test x = 1.1; y = sym(11)/10; A = fresnels (x); B = double (fresnels (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = fresnels (x); B = double (fresnels (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(FresnelS(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 36.725464883991438430 + 15.587751104404587334*1i 0.12213736710980573217e13 - 0.47688568479924574726e12*1i 0.49681690114783755327 -0.46816997858488224040*1i -0.52344169596561937423e-12 + 0.15707439669173367248e-13*1i 0.75738824160998910399e24 + 0.15391592966931193100e26*1i ]; B = fresnels (x); assert (A, B, -eps) ***** assert (fresnels (inf), 0.5) ***** assert (fresnels (-inf), -0.5) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/harmonic.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/harmonic.m ***** error harmonic (1, 2) ***** test x = 1.1; y = sym(11)/10; A = harmonic (x); B = double (harmonic (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = harmonic (x); B = double (harmonic (y)); assert (A, B, -4*eps); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@double/chebyshevT.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/chebyshevT.m ***** error chebyshevT (1) ***** error chebyshevT (1, 2, 3) ***** error chebyshevT ([1 2], [1 2 3]) ***** error chebyshevT ([1 2], [1; 2]) ***** test y = sym(11)/10; t = sym(2); x = 1.1; s = 2; A = chebyshevT (s, x); B = double (chebyshevT (t, y)); assert (A, B, -2*eps); ***** test % maple A = -0.304681164165948269030369; B = chebyshevT (18.1, 0.9); assert (A, B, -10*eps) ***** test % maple, complex inputs % ChebyshevT(12.1+3.1*I, 0.5+0.2*I); A = 0.637229289490379273451 - 0.475324703778957991318*1i; B = chebyshevT (12.1+3.1*i, 0.5+0.2i); assert (A, B, -5*eps); ***** test % maple, matrix inputs A = [0.59523064198266880000 0.57727442996887552000]; B = chebyshevT ([16 17], [0.9 0.7]); assert (A, B, -10*eps); ***** test % x matrix, s scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; t = sym(2); x = double (y); s = 2; A = chebyshevT (s, x); B = double (chebyshevT (t, y)); assert (A, B, -eps); ***** test % s matrix, x scalar t = [1 2 sym(pi); exp(sym(1)) 5 6]; y = sym(2); s = double (t); x = 2; A = chebyshevT (s, x); B = double (chebyshevT (t, y)); assert (A, B, -eps); ***** xtest % https://github.com/fredrik-johansson/mpmath/issues/469 assert (chebyshevT (4, inf), inf) assert (chebyshevT (4, -inf), inf) assert (chebyshevT (3, inf), inf) assert (chebyshevT (3, -inf), -inf) !!!!! known failure ASSERT errors for: assert (chebyshevT (4, inf),inf) Location | Observed | Expected | Reason () 1 Inf 'Inf' mismatch 11 tests, 10 passed, 1 known failure, 0 skipped [inst/@double/adjoint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/adjoint.m ***** test M = [1 2; 3 4]; A = [4 -2; -3 1]; assert (isequal (adjoint (M), A)); ***** test assert (isequal (adjoint (42), 1)); 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@double/polylog.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/polylog.m ***** error polylog (1) ***** error polylog (1, 2, 3) ***** error polylog ([1 2], [1 2 3]) ***** error polylog ([1 2], [1; 2]) ***** test y = sym(11)/10; t = sym(2); x = 1.1; s = 2; A = polylog (s, x); B = double (polylog (t, y)); assert (A, B, -eps); ***** test % maple A = 2.3201804233130983964 - 3.4513922952232026614*1i; B = polylog (2, 3); assert (A, B, -eps) ***** test % maple, complex inputs A = -11.381456201167411758 + 6.2696695219721651947*1i; B = polylog (1+2i, 3+4i); assert (A, B, -eps); ***** test % maple, matrix inputs A1 = 0.47961557317612748431 - 0.52788287823025778869*1i; A2 = -0.0049750526563452645369 - 0.024579343612396884851*1i; B = polylog ([-1-2i -3], [30+40i 40i]); assert ([A1 A2], B, -eps); ***** test % x matrix, s scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; t = sym(2); x = double (y); s = 2; A = polylog (s, x); B = double (polylog (t, y)); assert (A, B, -eps); ***** test % s matrix, x scalar t = [1 2 sym(pi); exp(sym(1)) 5 6]; y = sym(2); s = double (t); x = 2; A = polylog (s, x); B = double (polylog (t, y)); assert (A, B, -eps); 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@double/cosint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/cosint.m ***** error cosint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = cosint (x); B = double (cosint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = cosint (x); B = double (cosint (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Ci(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 2.0302963932917216378 - 0.15190715517585688438*1i 1.6153896382910774851 + 19.725754055338264980*1i -0.0051488251426104921444 1246.1144860424544147 + 1.5707963267948966192*1i -8.6330747120742332203 + 3.1315929869531280002*1i 0.069822228467306149311 - 3.1184744625477294643*1i ]; B = cosint (x); assert (A, B, -eps) ***** xtest % is it nan or -inf? SymPy says zoo. assert (isnan (cosint (0))) !!!!! known failure assert (isnan (cosint (0))) failed ***** assert (cosint (inf), 0) ***** assert (cosint (-inf), pi*1i, -eps) ***** assert (cosint (1), 0.33740392290096813466, -eps) ***** assert (cosint (-1), 0.33740392290096813466 + pi*1i, -eps) ***** assert (cosint (pi), 0.073667912046425485978, -5*eps) ***** assert (cosint (-pi), 0.07366791204642548597821 + pi*1i, -5*eps) ***** assert (cosint (300), -3.3321999185921117800e-3, -2*eps) ***** assert (cosint (1e4), -3.0551916724485212665e-5, -2*eps) ***** assert (cosint (1 + 1i), 0.8821721805559363250506+0.2872491335199559395273*1i, eps) ***** assert (cosint (1i), 0.8378669409802082408947 + pi/2*1i, -2*eps) ***** test % compare both sinint and cosint to expint x = pi; C1 = cosint (x); S1 = sinint (x); R = expint (1i*x); C2 = -real (R); S2 = imag (R) + pi/2; assert (C1, C2, -100*eps); assert (S1, S2, -100*eps); 16 tests, 15 passed, 1 known failure, 0 skipped [inst/@double/zeta.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/zeta.m ***** error zeta (1, 2, 3) ***** assert (isnan (zeta (nan))) ***** test x = 1.1; y = sym(11)/10; A = zeta (x); B = double (zeta (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = zeta (x); B = double (zeta (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Zeta(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 0.59816556976238173670 - 0.35185474521784529050*1i 0.21425967567391921717 + 0.52503846985036050707*1i 1.0 1.7564685929749629608 - 0.10151198543617116894*1i -0.49990811617645824900 - 0.91873792757763831501e-6*1i 175.09070083717643866 - 71.512541417467273425*1i ]; B = zeta (x); assert (A, B, -eps) ***** assert (zeta (inf), 1.0) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/euler.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/euler.m ***** error euler (1, 2, 3) ***** error euler ([1 2], [1 2 3]) ***** error euler ([1 2], [1; 2]) ***** assert (isequal (euler (0), 1)) ***** assert (isequal (euler (1), 0)) ***** assert (isequal (euler (10), -50521)) ***** test n = sym(88); m = 88; A = euler (m); B = double (euler (n)); assert (A, B, -eps); ***** test m = [0 1; 2 4]; n = sym(m); A = euler (m); B = double (euler (n)); assert (isequal (A, B)); ***** test y = sym(19)/10; n = sym(2); x = 1.9; m = 2; A = euler (m, x); B = double (euler (n, y)); assert (A, B, -eps); ***** test % correct behaviour at floating point infinity assert (isequal (euler (4, inf), inf)) assert (isequal (euler (4, -inf), inf)) assert (isequal (euler (3, inf), inf)) assert (isequal (euler (3, -inf), -inf)) ***** test assert (isnan (euler(3, nan))) assert (isnumeric (euler(3, nan))) ***** test % maple, complex input A = 113.33970046079423204 - 46.991080726974811540i; B = euler(7, 2.12345 + 1.23i); assert (A, B, -eps); ***** test % maple, complex input, large m, small x A = 0.18034673393294025238e276 + 0.27756266681280689172e276*i; B = euler (200, 0.123+0.234i); assert (A, B, -eps); ***** test % x matrix, m scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; n = sym(2); x = double (y); m = 2; A = euler (m, x); B = double (euler (n, y)); assert (A, B, -eps); ***** test % m matrix, x scalar m = [1 2 3; 4 5 6]; n = sym(m); y = sym(21)/10; x = 2.1; A = euler (m, x); B = double (euler (n, y)); assert (A, B, -3*eps); 15 tests, 15 passed, 0 known failure, 0 skipped [inst/octsympy_tests.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/octsympy_tests.m ***** assert(true) 1 test, 1 passed, 0 known failure, 0 skipped [inst/poly2sym.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/poly2sym.m ***** shared x,y,a,b,c,p syms x y a b c p = x^3 + 2*x^2 + 3*x + 4; ***** assert(isAlways( poly2sym([1 2 3 4]) == p )) ***** assert(isAlways( poly2sym([1 2 3 4],x) == p )) ***** assert(isAlways( poly2sym([1 2 3 4],y) == subs(p,x,y) )) ***** assert(isAlways( poly2sym([1 2 3 4],5) == subs(p,x,5) )) ***** assert(isequal( poly2sym ([1]), 1 )) ***** assert(isequal( poly2sym ([]), 0 )) ***** assert(isAlways( poly2sym(sym([1 2 3 4]),x) == p )) ***** assert(isAlways( poly2sym([a b c],x) == a*x^2 + b*x + c )) ***** assert(isAlways( poly2sym([a b c]) == a*x^2 + b*x + c )) ***** assert(isequal( poly2sym(sym([])), 0 )) ***** assert(isAlways( poly2sym({sym(1) sym(2)}, x) == x + 2 )) ***** assert(isequal( poly2sym ({1}), 1 )) ***** assert(isequal( poly2sym ({}), 0 )) ***** assert(isequal( poly2sym ({1}, x), 1 )) ***** assert(isequal( poly2sym ({}, x), 0 )) ***** assert(isAlways( poly2sym([x x], x) == x^2 + x )) ***** test % mixed cell array with doubles and syms assert (isequal (poly2sym ({2.0 sym(3) int64(4)}), 2*x^2 + 3*x + 4)) ***** test % string for x p = poly2sym ([1 2], 's'); syms s assert (isequal (p, s + 2)) 18 tests, 18 passed, 0 known failure, 0 skipped [inst/finiteset.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/finiteset.m ***** test s1 = finiteset(sym(1), 2, 2); s2 = finiteset(sym(1), 2, 2, 2); assert (isequal (s1, s2)) ***** test s1 = finiteset(sym(0), 1); s2 = finiteset(sym(0), 2, 3); s = finiteset(sym(0), 1, 2, 3); assert (isequal (s1 + s2, s)) ***** test e = finiteset(); s = finiteset(sym(1)); s2 = e + s; assert (isequal (s, s2)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/logint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logint.m ***** error logint (sym(1), 2) ***** xtest assert (isequaln (logint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (logint (sym (nan)), sym (nan))) failed ***** shared x, d d = 2; x = sym('2'); ***** test f1 = logint(x); f2 = 1.045163780117492784845; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = logint(A); f2 = 1.045163780117492784845; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = logint (d); f = logint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/csch.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/csch.m ***** error csch (sym(1), 2) ***** assert (isequaln (csch (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = csch(x); f2 = csch(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = csch(A); f2 = csch(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = csch (d); f = csch (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/besseljn.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besseljn.m ***** test % roundtrip syms x A = double(besseljn(sym(2), sym(9))); q = besseljn(sym(2), x); h = function_handle(q); B = h(9); assert (abs (A - B) <= eps) ***** error jn(sym('x')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/isfinite.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isfinite.m ***** assert (isfinite(sym(1))) ***** assert (isfinite(sym(-10))) ***** assert (~isfinite(sym('oo'))) ***** assert (~isfinite(sym('-oo'))) ***** assert (~isfinite(sym(1)/0)) ***** assert (~isfinite(sym(nan))) ***** assert (isequal (isfinite (sym ([1 inf])), [true false])) ***** test % finite-by-assumption syms x finite assert (isfinite (x)) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/sym2poly.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sym2poly.m ***** shared x,y,a,b,c syms x y a b c ***** assert (isequal (sym2poly (x^2 + 3*x - 4), [1 3 -4])) ***** assert (isequal (sym2poly (x^6 - x^3), [1 0 0 -1 0 0 0])) ***** assert (isequal (sym2poly (x^2 + 3*x - 4, x), [1 3 -4])) ***** assert (norm (sym2poly (pi*x^2 + exp(sym(1))) - [pi 0 exp(1)]) < 10*eps) ***** assert (isa (sym2poly (x^2 + 3*x - 4), 'double')) ***** assert (isa (sym2poly (x^2 + 3*x - 4, x), 'sym')) ***** assert (isequal (sym2poly (x^2+y*x, x), [sym(1) y sym(0)])) ***** assert (isequal (sym2poly (x^2+y*x, y), [x x^2])) ***** assert (isequal (sym2poly (poly2sym ([a b c], x), x), [a b c])) ***** assert (isequal (poly2sym (sym2poly(a*x^2 + c, x), x), a*x^2 + c)) ***** assert (isequal (sym2poly (poly2sym ([1 2 3])), [1 2 3])) ***** error % too many symbols for single-input p = a*x^2 + 2; c = sym2poly (p); ***** assert (isequal (sym2poly (sym(5)), sym(5))) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/potential.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/potential.m ***** error potential (sym(1), 2, 3, 4) ***** shared x,y,z syms x y z ***** test % 1D f = 3*x^2; F = x^3; assert (isequal (potential(f), F)) assert (isequal (potential(f, x), F)) assert (isequal (potential(f, x, 0), F)) assert (isequal (potential(f, x, 2), F - 8)) ***** test F = x*exp(y) + (z-1)^2; f = gradient(F); G = potential(f, [x;y;z], [0;1;1]); assert (isAlways (G == F)) ***** test F = x*exp(y); f = gradient(F); G = potential(f); assert (isAlways (G == F)) ***** test % no potential exists syms x y a = [x; x*y^2]; assert (isnan (potential (a))) ***** shared ***** xtest % fails b/c of sympy #8458 (piecewise expr that should simplify) syms x f = cos(x); assert (isequal (potential(f, x), sin(x))) !!!!! known failure assert (isequal (potential (f, x), sin (x))) failed 6 tests, 5 passed, 1 known failure, 0 skipped [inst/@sym/eq.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eq.m ***** test % simple tests with scalar numbers assert (logical (sym(1) == sym(1))) assert (logical (sym(1) == 1)) assert (~logical (sym(1) == 0)) assert (isequal (sym(1) == sym(1), sym(true))) assert (isequal (sym(1) == 1, sym(true))) assert (isequal (sym(1) == 0, sym(false))) ***** test % Type of the output is sym or logical? % FIXME: in current version, they are sym e = sym(1) == sym(1); %assert (islogical (e)) assert (isa (e, 'sym')) ***** test % things involving a variable are usually not bool but sym. % (SMT behaviour says always, FIXME: currently we differ.) syms x e = x == 0; assert (~islogical (e)) assert (isa (e, 'sym')) ***** test % ... except of course via cancellation syms x e = x - x == 0; assert (logical (e)) assert (isequal (e, sym(true))) ***** test % array == array a = sym([1 2; 3 4]); y = a == a; assert (isequal( size(y), [2 2])) assert (isequal (y, sym([true true; true true]))) assert (all(all(y))) y = a == 1; assert (isequal( size(y), [2 2])) assert (isequal (y, sym([true false; false false]))) assert (any(any(y))) y = a == 42; assert (isequal( size(y), [2 2])) assert (isequal (y, sym([false false; false false]))) ***** test % more array == array D = [0 1; 2 3]; A = [sym(0) 1; sym(2) 3]; DZ = D - D; assert (isequal (logical(A == A), [true true; true true])) assert (isequal (logical(A == D), [true true; true true])) assert (isequal (logical(A - D == DZ), [true true; true true])) assert (all (all ( A == A ))) assert (all (all ( A == D ))) assert (all (all ( A - D == DZ ))) ***** test % logical output, right shape, etc t = true; f = false; a = sym([0 1 2; 3 4 5]); b = sym([0 1 1; 3 5 5]); e = a == b; eexp = sym(logical([1 1 0; 1 0 1])); assert (isequal (e, eexp)) a = sym([0 1 2]); b = sym([0 1 1]); e = a == b; eexp = sym(logical([1 1 0])); assert (isequal (e, eexp)) e = a' == b'; eexp = eexp.'; % is/was bug here with ' assert (isequal (e, eexp)) ***** test % empty matrices compare to correct empty size a = zeros (sym(3), 0); assert (size (a == a), [3, 0]) a = zeros (sym(0), 2); assert (size (a == a), [0, 2]) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/round.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/round.m ***** test d = 3/2; x = sym('3/2'); f1 = round(x); f2 = round(d); assert (isequal (f1, f2)) ***** xtest % ideally rounding direction would match Octave d = 5/2; x = sym('5/2'); f1 = round(x); f2 = round(d); assert (isequal (f1, f2)) !!!!! known failure assert (isequal (f1, f2)) failed ***** test D = [1.1 4.6; -3.4 -8.9]; A = [sym(11)/10 sym(46)/10; sym(-34)/10 sym(-89)/10]; f1 = round(A); f2 = round(D); assert( isequal (f1, f2)) ***** test d = sym(-11)/10; c = -1; assert (isequal (round (d), c)) ***** test d = sym(-19)/10; c = -2; assert (isequal (round (d), c)) ***** test d = 7j/2; x = sym(7j)/2; f1 = round (x); f2 = round (d); assert (isequal (f1, f2)) ***** test d = 5/3 - 4j/7; x = sym(5)/3 - sym(4j)/7; f1 = round (x); f2 = round (d); assert (isequal (f1, f2)) 7 tests, 6 passed, 1 known failure, 0 skipped [inst/@sym/laplace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laplace.m ***** test % basic syms t s u w assert(logical( laplace(cos(3*t)) == s/(s^2+9) )) assert(logical( laplace(t^3) == 6/s^4 )) ***** test % matlab SMT compat syms t s u w z assert(logical( laplace(exp(2*t)) == 1/(s-2) )) assert(logical( laplace(exp(2*s)) == 1/(z-2) )) assert(logical( laplace(exp(2*u),w) == 1/(w-2) )) assert(logical( laplace(exp(2*u),u,w) == 1/(w-2) )) ***** test syms x s t z % matlab SMT prefers t over x assert (isequal (laplace (x*exp (t), z), x/(z - 1))) % as usual, you can just specify: assert (isequal (laplace(x*exp(t), t, z), x/(z - 1))) % SMT result assert (isequal (laplace(x*exp(t), x, z), exp(t)/z^2)) ***** test syms x a s % if no t, use symvar: take x before a assert (isequal (laplace (a*exp (x)), a/(s - 1))) ***** error laplace (sym('t')*sym('t', 'real')) ***** test % constant, issue #250 syms s f = laplace(2, s); assert (isequal (f, 2/s)) ***** test % Dirac delta and Heaviside tests syms t s assert (isequal (laplace(dirac(t-3)), exp(-3*s))) assert (isequal (laplace((t-3)*heaviside(t-3)), exp(-3*s)/s^2)) ***** xtest % Differential operator to algebraic % SymPy cannot evaluate? (Issue #170) syms s f(t) assert(logical( laplace(diff(f(t),t),t,s) == s*laplace(f(t),t,s)-f(0) )) ***** test % https://github.com/gnu-octave/symbolic/issues/1295 % fails on SymPy 1.10.* and 1.11.* if (pycall_sympy__ ('return Version(spver) >= Version("1.12")')) syms t s L = simplify (laplace (3*t*sin (4*t))); assert (isAlways (L == 24*s / (s^2 + 16)^2)) end 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/tanh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tanh.m ***** error tanh (sym(1), 2) ***** assert (isequaln (tanh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = tanh(x); f2 = tanh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = tanh(A); f2 = tanh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = tanh (d); f = tanh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/intersect.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/intersect.m ***** test A = sym([1 2 3]); B = sym([1 2 4]); C = intersect(A, B); D = sym([1 2]); assert (isequal (C, D)) ***** test % one nonsym A = sym([1 2 3]); B = [1 2 4]; C = intersect(A, B); D = sym([1 2]); assert (isequal (C, D)) ***** test % empty A = sym([1 2 3]); C = intersect(A, A); assert (isequal (C, A)) ***** test % empty input A = sym([1 2]); C = intersect(A, []); assert (isempty (C)) ***** test % scalar syms x assert (isequal (intersect([x 1], x), x)) assert (isequal (intersect(x, x), x)) ***** test A = interval(sym(1), 3); B = interval(sym(2), 5); C = intersect(A, B); assert( isequal( C, interval(sym(2), 3))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/ctranspose.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ctranspose.m ***** test x = sym(1); assert (isequal (x', x)) ***** assert (isempty (sym([])')) ***** test % conjugate does nothing to real x syms x real assert (isequal (x', x)) ***** test % complex syms x assert (isequal (x', conj(x))) ***** test % complex array syms x A = [x 2*x]; B = [conj(x); 2*conj(x)]; assert(isequal(A', B)) ***** test A = [1 2; 3 4]; assert(isequal( sym(A)' , sym(A') )) ***** test A = [1 2] + 1i; assert(isequal( sym(A)' , sym(A') )) ***** test % true/false t = sym(true); f = sym(false); assert (isequal ( t', t)) assert (isequal ( f', f)) ***** test % more true/false syms x A = [x true 1i]; B = [conj(x); true; -sym(1i)]; assert (isequal ( A', B)) /usr/lib/python3/dist-packages/sympy/matrices/matrixbase.py:2051: SymPyDeprecationWarning: non-Expr objects in a Matrix is deprecated. Matrix represents a mathematical matrix. To represent a container of non-numeric entities, Use a list of lists, TableForm, NumPy array, or some other data structure instead. See https://docs.sympy.org/latest/explanation/active-deprecations.html#deprecated-non-expr-in-matrix for details. This has been deprecated since SymPy version 1.9. It will be removed in a future version of SymPy. out = self.from_dok(self.rows, self.cols, fdok) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/simplify.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/simplify.m ***** shared x,p,q syms x p = x^2 + x + 1; q = horner (p); ***** assert(~isequal( p - q, 0)) ***** assert(isequal( simplify(p - q), 0)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/acot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acot.m ***** error acot (sym(1), 2) ***** assert (isequaln (acot (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acot(x); f2 = acot(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acot(A); f2 = acot(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acot (d); f = acot (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/symsum.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symsum.m ***** error symsum (sym(1), 2, 3, 4, 5) ***** test % finite sums syms n assert (isequal (symsum(n,n,1,10), 55)) assert(isa(symsum(n,n,1,10), 'sym')) assert (isequal (symsum(n,n,sym(1),sym(10)), 55)) assert (isequal (symsum(n,n,sym(1),sym(10)), 55)) assert (isequal (symsum(1/n,n,1,10), sym(7381)/2520)) ***** test % negative limits syms n assert (isequal (symsum(n,n,-3,3), sym(0))) assert (isequal (symsum(n,n,-3,0), sym(-6))) assert (isequal (symsum(n,n,-3,-1), sym(-6))) ***** test % one input syms n f = symsum (n); g = n^2/2 - n/2; assert (isequal (f, g)) f = symsum (2*n); g = n^2 - n; assert (isequal (f, g)) ***** test % constant input f = symsum (sym(2)); syms x g = 2*x; assert (isequal (f, g)) ***** test % two inputs syms n f = symsum (2*n, n); g = n^2 - n; assert (isequal (f, g)) ***** test % two inputs, second is range syms n f = symsum (n, [1 6]); g = 21; assert (isequal (f, g)) f = symsum (n, [sym(1) 6]); g = 21; assert (isequal (f, g)) f = symsum (2*n, [1 6]); g = 2*21; assert (isequal (f, g)) ***** test % three inputs, last is range syms n f = symsum (2*n, n, [1 4]); g = sym(20); assert (isequal (f, g)) f = symsum (2*n, n, [sym(1) 4]); g = sym(20); assert (isequal (f, g)) f = symsum (2, n, [sym(1) 4]); g = sym(8); assert (isequal (f, g)) ***** test % three inputs, no range syms n f = symsum (2*n, 1, 4); g = sym(20); assert (isequal (f, g)) f = symsum (5, sym(1), 3); g = sym(15); assert (isequal (f, g)) ***** test % ok to use double's for arguments in infinite series syms n oo assert(isequal(symsum(1/n^2,n,1,oo), sym(pi)^2/6)) assert(isequal(symsum(1/n^2,n,1,inf), sym(pi)^2/6)) ***** test % should be oo because 1 is real but seems to be % zoo/oo depending on sympy version syms n oo zoo = sym('zoo'); assert (isequal (symsum(1/n,n,1,oo), oo) || ... isequal (symsum(1/n,n,1,oo), zoo)) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/rewrite.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rewrite.m ***** test syms x assert (isequal (rewrite(x, 'exp'), x)) ***** test % empty e = sym([]); assert (isequal (rewrite(e, 'sin'), e)) ***** test syms x A = [exp(x) exp(2*x)]; B = [sinh(x) + cosh(x) sinh(2*x) + cosh(2*x)]; assert (isequal (rewrite(A, 'sin'), B)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/gt.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gt.m ***** test % simple x = sym(1); y = sym(1); e = x > y; assert (~logical (e)) x = sym(1); y = sym(2); e = x > y; assert (~logical (e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a > b; assert (isa (e, 'sym')) assert (~logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 > x)) assert (~logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x > 10)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/and.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/and.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple assert (isequal (t & f, f)) assert (isequal (t & t, t)) ***** test % mix with nonsym assert (isequal (t & false, f)) assert (isequal (t & true, t)) assert (isequal (t & 0, f)) assert (isequal (t & 1, t)) assert (isa (t & false, 'sym')) assert (isa (t & 1, 'sym')) ***** test % array w = [t t f f]; z = [t f t f]; assert (isequal (w & z, [t f f f])) ***** test % number assert (isequal( sym(1) & t, t)) assert (isequal( sym(0) & t, f)) ***** test % output is sym even for scalar t/f assert (isa (t & f, 'sym')) ***** test % eqns, exclusive syms x e = (x == 3) & (x^2 == 9); assert (isequal (subs(e, x, [-3 0 3]), [f f t])) ***** error and (sym('x'), 2, 3) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/erfi.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfi.m ***** error erfi (sym(1), 2) ***** assert (isequaln (erfi (sym(nan)), sym(nan))) ***** shared x, d d = 0; x = sym('0'); ***** test f1 = erfi(x); f2 = 0; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erfi(A); f2 = 0; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erfi (d); f = erfi (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/gradient.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gradient.m ***** shared x,y,z syms x y z ***** test % 1D f = x^2; assert (isequal (gradient(f), diff(f,x))) assert (isequal (gradient(f,{x}), diff(f,x))) assert (isequal (gradient(f,[x]), diff(f,x))) assert (isequal (gradient(f,x), diff(f,x))) ***** test % const f = sym(1); g = sym(0); assert (isequal (gradient(f), g)) assert (isequal (gradient(f,x), g)) ***** test % double const f = 1; g = sym(0); assert (isequal (gradient(f,x), g)) ***** test % 1D fcn in 2d/3d f = sin(y); assert (isequal (gradient(f), diff(f,y))) assert (isequal (gradient(f, {x,y}), [sym(0); diff(f,y)])) assert (isequal (gradient(f, [x y]), [sym(0); diff(f,y)])) assert (isequal (size (gradient(f, {x,y})), [2 1])) assert (isequal (gradient(f, {x,y,z}), [0; diff(f,y); 0])) assert (isequal (gradient(f, [x y z]), [0; diff(f,y); 0])) assert (isequal (size (gradient(f, {x,y,z})), [3 1])) ***** test % grad is column vector f = sin(y); assert (isequal (size (gradient(f, {x,y})), [2 1])) assert (isequal (size (gradient(f, {x,y,z})), [3 1])) assert (isequal (size (gradient(f, [x y])), [2 1])) assert (isequal (size (gradient(f, [x;y])), [2 1])) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y); g2 = [diff(f,x); diff(f,y)]; g3 = [diff(f,x); diff(f,y); diff(f,z)]; assert (isequal (gradient(f), g2)) assert (isequal (gradient(f, {x,y}), g2)) assert (isequal (gradient(f, {x,y,z}), g3)) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y+sinh(z)); g2 = [diff(f,x); diff(f,y)]; g3 = [diff(f,x); diff(f,y); diff(f,z)]; assert (isequal (gradient(f), g3)) assert (isequal (gradient(f, {x,y}), g2)) assert (isequal (gradient(f, {x,y,z}), g3)) ***** error gradient(sym('x'), 42, 42) ***** error gradient([sym('x') sym('x')]) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/pochhammer.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pochhammer.m ***** error pochhammer (sym(1)) ***** error pochhammer (sym(1), 2, 3) ***** assert (isequal (pochhammer (sym(3), 4), sym(360))) ***** assert (isequal (pochhammer (sym([2 3]), 3), sym([24 60]))) ***** test % round trip syms n z f = pochhammer (z, n); h = function_handle (f, 'vars', [z n]); A = h (1.1, 2.2); B = pochhammer (1.1, 2.2); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/fplot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fplot.m ***** test % simple syms x f = cos (x); fplot (f); No entry for terminal type "unknown"; using dumb terminal settings. warning: using the gnuplot graphics toolkit is discouraged The gnuplot graphics toolkit is not actively maintained and has a number of limitations that are unlikely to be fixed. Communication with gnuplot uses a one-directional pipe and limited information is passed back to the Octave interpreter so most changes made interactively in the plot window will not be reflected in the graphics properties managed by Octave. For example, if the plot window is closed with a mouse click, Octave will not be notified and will not update its internal list of open figure windows. The qt toolkit is recommended instead. ***** test % constant function fplot (sym (10)); No entry for terminal type "unknown"; using dumb terminal settings. line 0: warning: iconv failed to convert degree sign |--------------------------------------------------------------------| 1 +|+ + + **** + + +-+| | + + ** + ** + +-----------------+ | #|############################*########*##########+***?***x) cos (x)+ | #|###########################*##########*########################### | #|##########################*############*########################## | 0.5 +|+########################*##############*########################+-+| #|########################*################*######################## | *|########################*################*######################## *| #|#######################*##################*#######################* | #|######################**##################**######################* | 0 +|*####################*######################*####################*-+| #|*####################*######################*####################* | #|#**#################*########################*#################**# | #|##*#################*########################*#################*## | #|###*###############*##########################*###############*### | -0.5 +|+###*#############*############################*#############*###+-+| #|####**###########*##############################*###########**#### | #|#####*##########*################################*##########*##### | #|######**#######*##################################*#######**###### | #|--------------------------------------------------------------------| -1 +-+####+###*****#####+#############+############+#####*****###+####+-+ -4 -2 0 2 4 warning: fplot: FCN is not a vectorized function which reduces performance warning: called from fplot at line 172 column 7 fplot at line 107 column 5 __test__ at line 4 column 2 test at line 682 column 11 /tmp/tmp.EEULPfFdek at line 606 column 31 ***** test syms x f = cos (x); [xx, yy] = fplot (f); assert (xx(1), -5) assert (xx(end), 5) assert (min (yy), -1, 0.1) assert (max (yy), 1, 0.1) line 0: warning: iconv failed to convert degree sign |--------------------------------------------------------------------| 11 +|+ + + + + + +-+| | + + + + +------------+ | #|#####################################################+***?***x) 10+ | #|################################################################## | #|################################################################## | 10.5 +|+################################################################+-+| #|################################################################## | #|################################################################## | #|################################################################## | #|################################################################## | 10 *|********************************************************************| #|################################################################## | #|################################################################## | #|################################################################## | #|################################################################## | 9.5 +|+################################################################+-+| #|################################################################## | #|################################################################## | #|################################################################## | #|--------------------------------------------------------------------| 9 +-+####+#############+#############+############+#############+####+-+ -4 -2 0 2 4 ***** test syms x f = cos (x); dom = [1 3]; [xx, yy] = fplot (f, dom); assert (xx(1), dom(1)) assert (xx(end), dom(2)) ***** test syms x f = cos (x); dom = [1 3]; fplot (f, dom); assert (get (gca, 'xlim'), dom) ***** test syms x f = exp (x); dom = [1 2 3 4]; fplot (f, dom); assert (get (gca, 'xlim'), dom(1:2)) assert (get (gca, 'ylim'), dom(3:4)) line 0: warning: iconv failed to convert degree sign |--------------------------------------------------------------------| 1 +|+ + + + +-+| +| + + +-----------------++| #|################################################+***?***x) cos (x)+ | #|################################################################## | #|################################################################## | 0.5 *|**###############################################################+-+| #|##**############################################################## | #|####*****######################################################### | #|#########***###################################################### | #|############*****################################################# | 0 +|+################**##############################################+-+| #|###################*****########################################## | #|########################***####################################### | #|###########################**##################################### | #|#############################*****################################ | -0.5 +|+#################################*****##########################+-+| #|#######################################**######################### | #|#########################################*****#################### | #|##############################################********############ | +|--------------------------------------------------------------------| -1 +-+##############+#################+################+##########******* 1 1.5 2 2.5 3 ***** test % bounds as syms syms x f = cos (x); dom = [1 2 3 4]; fplot (f, sym (dom)); assert (get (gca, 'xlim'), dom(1:2)) assert (get (gca, 'ylim'), dom(3:4)) line 0: warning: iconv failed to convert degree sign |---------------------------------------------------------------------| 4 +|+ + *+ + + +-+| +| + * + + +-----------------++| #|#######################*#########################+***?***x) exp (x)+ | #|######################*############################################ | 3.8 +|+#####################*###########################################+-+| #|#####################*############################################# | #|####################*############################################## | #|###################*############################################### | 3.6 +|+#################*###############################################+-+| #|#################*################################################# | #|################*################################################## | #|###############*################################################### | 3.4 +|+############**###################################################+-+| #|############*###################################################### | #|###########*####################################################### | #|##########*######################################################## | 3.2 +|+########*########################################################+-+| #|########*########################################################## | #|######**########################################################### | +|---------------------------------------------------------------------| 3 +-+###*#######+#############+#############+#############+###########+-+ 1 1.2 1.4 1.6 1.8 2 ***** test % bounds as syms, regular handle for function % fails on 6.1.0, maybe earlier too? if (compare_versions (OCTAVE_VERSION (), '6.1.0', '!=')) dom = [1 2]; fplot (@cos, sym (dom)); assert (get (gca, 'xlim'), dom(1:2)) end line 0: warning: iconv failed to convert degree sign |---------------------------------------------------------------------| 4 +|+ + + + + +-+| +| + + + +-----------------++| #|#################################################+***?***x) cos (x)+ | #|################################################################### | 3.8 +|+#################################################################+-+| #|################################################################### | #|################################################################### | #|################################################################### | 3.6 +|+#################################################################+-+| #|################################################################### | #|################################################################### | #|################################################################### | 3.4 +|+#################################################################+-+| #|################################################################### | #|################################################################### | #|################################################################### | 3.2 +|+#################################################################+-+| #|################################################################### | #|################################################################### | +|---------------------------------------------------------------------| 3 +-+###########+#############+#############+#############+###########+-+ 1 1.2 1.4 1.6 1.8 2 ***** error syms x y fplot (x*y) line 0: warning: iconv failed to convert degree sign |--------------------------------------------------------------------| 0.8 +|+ + + + + +-+| +| + + + + +----------++| 0.6 +|+######################################################+***?***cos++| *|*################################################################# | #|#*****############################################################ | 0.4 +|+#####*****######################################################+-+| #|###########**********############################################# | 0.2 +|+####################*****#######################################+-+| #|##########################*****################################### | #|###############################****############################### | 0 +|+##################################*****#########################+-+| #|########################################*****##################### | -0.2 +|+############################################*****###############+-+| #|##################################################*****########### | #|#######################################################**********# | -0.4 +|+################################################################***| #|################################################################## | -0.6 +|+################################################################+-+| #|################################################################## | +|--------------------------------------------------------------------| -0.8 +-+###########+#############+############+#############+###########+-+ 1 1.2 1.4 1.6 1.8 2 ***** test % N parameter does something syms x [xx, yy] = fplot (sin (x), [0 2], 5); N = length (xx); assert (N >= 5) [xx, yy] = fplot (sin (x), [0 2], 1000); N = length (xx); assert (N == 1000) ***** test % tolerance parameter does something syms x [xx, yy] = fplot (sin (exp (x/2)), [0 3], 0.1); N1 = length (xx); [xx, yy] = fplot (sin (exp (x/2)), [0 3], 0.01); N2 = length (xx); assert (N2 > N1) ***** test % fmt parameter does something syms x fplot (sin (x), [0 6], 'rx--', 'linewidth', 5); l = get (gca (), 'children'); assert (get (l, 'color'), [1 0 0]) assert (get (l, 'linewidth'), 5) f = exp (x); dom = [1 2 3 4]; fplot (f, dom); assert (get (gca, 'xlim'), dom(1:2)) assert (get (gca, 'ylim'), dom(3:4)) line 0: warning: iconv failed to convert degree sign |--------------------------------------------------------------------| 1 +|+ + BBBB*BB + + + + +-+| +| B*B BB + + +-----------------++| #|########BB############*BB#######################+***B***x) sin (x)+ | #|######*B#################B######################################## | #|#####B####################B####################################### | 0.5 +|+###B######################*B####################################+-+| #|###B#########################B#################################### | #|#*B###########################B################################### | #|B##############################B################################## | #|################################*B################################ | 0 B|+#################################B##############################+-+| #|###################################B############################## | #|####################################B############################# | #|#####################################B############################ B| #|######################################*B##########################B | -0.5 +|+#######################################B#######################*B-+| #|#########################################B#####################B## | #|##########################################B*B################BB### | #|#############################################B#############*B##### | +|--------------------------------------------------------------------| -1 +-+#########+##########+###########+##########+#####BBBB*B+########+-+ 0 1 2 3 4 5 6 ***** test close all 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/rref.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rref.m ***** test A = sym([1 2; 3 4]); [r, k] = rref(A); assert (isequal (r, eye(2))) assert (isequal (k, [1 2])) ***** assert (isequal (rref(sym([2 1])), [1 sym(1)/2])) ***** assert (isequal (rref(sym([1 2; 2 4])), [1 2; 0 0])) ***** assert (isequal (rref(sym([0 0; 2 4])), [1 2; 0 0])) ***** test A = sym([1 2 3; 2 3 4]); [r, k] = rref(A); assert (isequal (r, [1 0 -1; 0 1 2])) assert (isequal (k, [1 2])); 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/norm.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/norm.m ***** assert (isequal (norm(sym(-6)), 6)) ***** test % 2-norm default A = [1 2; 3 4]; n1 = norm (sym (A)); assert (isequal (n1, sqrt (sqrt (sym(221)) + 15))) assert (norm (A), double (n1), -eps) ***** test syms x y real assert (isequal (norm([x 1; 3 y], 'fro'), sqrt(x^2 + y^2 + 10))) ***** test syms x real assert (isequal (norm([x 1], 2), sqrt(x^2 + 1))) ***** test % test sym vs double ord syms x assert (isequal (norm([x 2 1], 1), abs(x) + 3)) assert (isequal (norm([x 2 1], sym(1)), abs(x) + 3)) assert (isequal (norm([sym(-3) 2 1], inf), sym(3))) assert (isequal (norm([sym(-3) 2 1], sym(inf)), sym(3))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/expand.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expand.m ***** test syms x assert (logical (x^2 + 6*x + 5 == expand ((x+5)*(x+1)))) assert (isequal (x^2 + 6*x + 5, expand ((x+5)*(x+1)))) ***** test % array syms x assert (isequal (expand ([x (x+1)*x]), [x x^2+x])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/lhs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lhs.m ***** test syms x y f = x + 1 == 2*y; assert (isequal (lhs(f), x + 1)) assert (isequal (rhs(f), 2*y)) ***** test syms x y f = x + 1 < 2*y; assert (isequal (lhs(f), x + 1)) assert (isequal (rhs(f), 2*y)) ***** test syms x y f = x + 1 >= 2*y; assert (isequal (lhs(f), x + 1)) assert (isequal (rhs(f), 2*y)) ***** test syms x y A = [x == y 2*x < 2*y; 3*x > 3*y 4*x <= 4*y; 5*x >= 5*y x < 0]; L = [x 2*x; 3*x 4*x; 5*x x]; R = [y 2*y; 3*y 4*y; 5*y 0]; assert (isequal( lhs(A), L)) assert (isequal( rhs(A), R)) ***** error syms x lhs(x) ***** error lhs(sym(true)) ***** error syms x A = [1 + x == 2*x sym(6)]; lhs(A) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/igamma.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/igamma.m ***** test % mostly tested in @sym/gammainc syms x assert (isequal (igamma (2, x), gammainc(x, 2, 'upper'))) ***** test % unregularized B = double (igamma (sym(3), 1)); A = gammainc (1, 3, 'upper')*gamma (3); assert (A, B, -2*eps) ***** test % something like a round trip: no igamma() syms x a f = igamma (a, x); h = function_handle (f, 'vars', [a x]); A = h (1.1, 2.2); B = double (igamma (sym(11)/10, sym(22)/10)); C = gammainc (2.2, 1.1, 'upper')*gamma(1.1); assert (A, B, -10*eps) assert (A, C, -10*eps) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/setdiff.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/setdiff.m ***** test A = sym([1 2 3]); B = sym([1 2 4]); C = setdiff(A, B); D = sym([3]); assert (isequal (C, D)) ***** test % one nonsym A = sym([1 2 3]); B = [1 2 4]; C = setdiff(A, B); D = sym([3]); assert (isequal (C, D)) ***** test % empty A = sym([1 2 3]); C = setdiff(A, A); assert (isempty (C)) ***** test % empty input A = sym([1 2]); C = setdiff(A, []); assert (isequal (C, A) || isequal (C, sym([2 1]))) ***** test % scalar syms x assert (isequal (setdiff([x 1], x), sym(1))) assert (isempty (setdiff(x, x))) ***** test A = interval(sym(1), 3); B = interval(sym(2), 5); C = setdiff(A, B); assert( isequal( C, interval(sym(1), 2, false, true))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/ei.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ei.m ***** test syms x f = ei(sym(0)); assert (double(f) == -inf) ***** test D = [1.895117816355937 4.954234356001890]; A = ei(sym([1 2])); assert (all (abs(double(A) - D) < 1e-15)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/sind.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sind.m ***** error sind (sym(1), 2) ***** assert (isequaln (sind (sym(nan)), sym(nan))) ***** test f1 = sind (sym(1)); f2 = sind (1); assert (double (f1), f2, -eps) ***** test D = [10 30; 110 -45]; A = sym(D); f1 = sind (A); f2 = sind (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/acsc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acsc.m ***** error acsc (sym(1), 2) ***** assert (isequaln (acsc (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acsc(x); f2 = acsc(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acsc(A); f2 = acsc(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acsc (d); f = acsc (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isequaln.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isequaln.m ***** test a = sym([1 2]); b = a; assert (isequaln (a, b)) b(1) = 42; assert (~isequaln (a, b)) ***** test a = sym([1 2; 3 4]); b = a; assert (isequaln (a, b)) b(1) = 42; assert (~isequaln (a, b)) ***** test a = sym([nan; 2]); b = a; assert (isequaln (a, b)) ***** test a = sym([nan 2; 3 4]); b = a; assert (isequaln (a, b)) ***** test % more than two arrays a = sym([nan 2 3]); b = a; c = a; assert (isequaln (a, b, c)) c(1) = 42; assert (~isequaln (a, b, c)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/erfc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfc.m ***** error erfc (sym(1), 2) ***** assert (isequaln (erfc (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = erfc(x); f2 = erfc(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erfc(A); f2 = erfc(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erfc (d); f = erfc (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ceil.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ceil.m ***** error ceil (sym(1), 2) ***** assert (isequaln (ceil (sym(nan)), sym(nan))) ***** shared x, d d = 3/2; x = sym('3/2'); ***** test f1 = ceil(x); f2 = ceil(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = ceil(A); f2 = ceil(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = ceil (d); f = ceil (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/logspace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logspace.m ***** test % default argument for N A = logspace(0, 2); assert (length (A) == 50); ***** test % special case: pi as end pt A = logspace(-sym(3), sym(pi), 3); assert (isequal (A(end), sym(pi))) ***** test A = logspace(-sym(4), 0, 3); B = [sym(1)/10000 sym(1)/100 sym(1)]; assert (isequal (A, B)) ***** test % vpa support, might need recent sympy for sympy issue #10063 n = 32; A = logspace(-vpa(1,n), 0, 3); B = [10^(-vpa(1,n)) 10^(-vpa(sym(1)/2,n)) vpa(1,n)]; assert (all (A == B)) assert (max(abs(double(A) - logspace(-1, 0, 3))) < 1e-15) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/solve.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/solve.m ***** test % Simple, single variable, single solution syms x d = solve(10*x == 50); assert (isequal (d, 5)) ***** test % Single variable, multiple solutions syms x d = solve(x^2 == 4); assert (length(d) == 2); assert (isequal (d, [2; -2]) || isequal (d, [-2; 2])) ***** shared x,y,eq syms x y eq = 10*x == 20*y; ***** test d = solve(eq, x); assert (isequal (d, 2*y)) ***** test d = solve(eq, y); assert (isequal (d, x/2)) ***** test d = solve(eq); assert (isequal (d, 2*y)) ***** shared x,y syms x y ***** test d = solve(2*x - 3*y == 0, x + y == 1); assert (isequal (d.x, sym(3)/5) && isequal(d.y, sym(2)/5)) ***** test d = solve(2*x - 3*y == 0, x + y == 1, x, y); assert (isequal (d.x, sym(3)/5) && isequal(d.y, sym(2)/5)) ***** test % Multiple solutions, multiple variables d = solve(x^2 == 4, x + y == 1); assert (length(d) == 2); % FIXME: SMT has d.x gives vector and d.y giving vector, what is % more intuitive? for i = 1:2 assert (isequal (d{i}.x + d{i}.y, 1)) assert (isequal ((d{i}.x)^2, 4)) end ***** test % No solutions syms x y z d = solve(x == y, z); assert (isempty (d)); ***** test % Multiple outputs with single solution [X, Y] = solve(2*x + y == 5, x + y == 3); assert (isequal (X, 2)) assert (isequal (Y, 1)) ***** test % system: vector of equations, vector of vars [X, Y] = solve([2*x + y == 5, x + y == 3], [x y]); assert (isequal (X, 2)) assert (isequal (Y, 1)) ***** test % system: vector of equations, individual vars [X, Y] = solve([2*x + y == 5, x + y == 3], x, y); assert (isequal (X, 2)) assert (isequal (Y, 1)) ***** test % system: individual equations, vector of vars [X, Y] = solve(2*x + y == 5, x + y == 3, [x y]); assert (isequal (X, 2)) assert (isequal (Y, 1)) ***** test % Multiple outputs with multiple solns [X, Y] = solve(x*x == 4, x == 2*y); assert ((isequal (X, [2; -2]) && isequal (Y, [1; -1])) || ... (isequal (X, [-2; 2]) && isequal (Y, [-1; 1]))) ***** test % Multiple outputs with multiple solns, specify vars [X, Y] = solve(x*x == 4, x == 2*y, x, y); assert ((isequal (X, [2; -2]) && isequal (Y, [1; -1])) || ... (isequal (X, [-2; 2]) && isequal (Y, [-1; 1]))) ***** error % mult outputs not allowed for scalar equation, even with mult soln (?) [s1, s2] = solve(x^2 == 4, x); ***** test % overdetermined X = solve(2*x - 10 == 0, 3*x - 15 == 0, x); assert (isequal (X, sym(5))) ***** test a = solve(2*x >= 10, 10*x <= 50); assert (isequal( a, x==sym(5))) ***** test A = solve([2*x == 4*y, 2 == 3], x); assert (isempty (A)) ***** test % Issue #850 A = solve (sym(pi)^2*x + y == 0); assert (isequal (A, -y/sym(pi)^2)) ***** test % https://github.com/sympy/sympy/issues/14632 A = solve([2*x == 4*y, sym(2) == 2], x); assert (isequal (A, 2*y)) ***** test % https://github.com/sympy/sympy/issues/14632 A = solve([2*x^2 == 32*y^2, sym(2) == 2], x); B = solve([2*x^2 == 32*y^2], x); assert (isequal (A, B) || isequal (A, flip (B))) ***** test A = solve ([x+1 0], x); assert (isequal (A, sym (-1))) ***** test A = solve (x + 1, x); assert (isequal (A, sym (-1))) A = solve (x, x); assert (isequal (A, sym (0))) 24 tests, 24 passed, 0 known failure, 0 skipped [inst/@sym/svd.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/svd.m ***** test % basic A = [1 2; 3 4]; B = sym(A); sd = svd(A); s = svd(B); s2 = double(s); assert (norm(s2 - sd) <= 10*eps) ***** test % scalars syms x syms y positive a = sym(-10); assert (isequal (svd(a), sym(10))) assert (isequal (svd(x), sqrt(x*conj(x)))) assert (isequal (svd(y), y)) ***** test % matrix with symbols syms x positive A = [x+1 0; sym(0) 2*x+1]; s = svd(A); s2 = subs(s, x, 2); assert (isequal (s2, [sym(5); 3])) ***** test % matrix with symbols syms x positive A = [x+1 0; sym(0) 2*x+1]; s = svd(A); s2 = subs(s, x, 2); assert (isequal (s2, [sym(5); 3])) ***** test % matrix with symbols, nonneg sing values syms x real A = [x 0; 0 sym(-5)]; s = svd(A); assert (isequal (s, [abs(x); 5])) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/interval.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/interval.m ***** test a = interval(sym(1), 2); assert (isa (a, 'sym')) ***** test % some set subtraction a = interval(sym(0), 4); b = interval(sym(0), 1); c = interval(sym(1), 4, true); q = a - b; assert (isequal( q, c)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/cumprod.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cumprod.m ***** shared x, y x = sym ('x'); y = sym ('y'); ***** error cumprod (x, 1, 2) ***** assert (isequal (cumprod ([-x; -2*x; -3*x]), [-x; 2*x^2; -6*x^3])) ***** assert (isequal (expand (cumprod ([x + i, x - i])), [x + i, x^2 + 1])) ***** assert (isequal (cumprod ([1, x; y, 2], 1), [1, x; y, 2*x] )) ***** assert (isequal (cumprod ([1, x; y, 2], 2), [1, x; y, 2*y] )) ***** test cumprod ([x, x], [2, 1]); # ensure behaves like builtin cumprod ***** test cumprod ([x, x], [1, -2]); # ensure behaves like builtin cumprod ***** error cumprod (x, []) ***** error cumprod (x, {1}) ***** error cumprod (x, struct('a', 1)) ***** error cumprod (x, x) ***** error cumprod (x, 0) ***** error cumprod (x, -1) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/eval.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eval.m ***** error eval (sym(1), 2) ***** assert (isnumeric (eval (sym(3)))) ***** assert (isnumeric (eval (sin (sym(3))))) ***** test syms x y f = 2*x*y; x = 3; y = 4; g = eval (f); assert (isequal (g, 24)) ***** test syms x y f = 2*x*y; clear y x = 3; g = eval (f); assert (isequal (g, 6*sym('y'))) ***** test % do not convert inputs to sym, for SMT compat nearpi = pi + 1e-14; % sym could make this pi x = sym('x'); f = 2*x; x = nearpi; d = eval (f); assert (abs (d - 2*pi) > 1e-15) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/laguerreL.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laguerreL.m ***** shared x syms x ***** assert (isequal (laguerreL(0, x), sym(1))) ***** assert (isequal (laguerreL(1, x), 1-x)) ***** assert (isequal (laguerreL(2, x), x^2/2 - 2*x + 1)) ***** error laguerreL(x) ***** error laguerreL(1, 2, x, 3) ***** shared ***** test syms x assert (isequal (laguerreL (-3, x), exp(x)*(x^2/2 + 2*x + 1))) ***** test syms x n L = laguerreL([2 n], x); expected = [laguerreL(2, x) laguerreL(n, x)]; assert (isequal (L, expected)) ***** test syms x y L = laguerreL([1; 2], [x; y]); expected = [laguerreL(1, x); laguerreL(2, y)]; assert (isequal (L, expected)) ***** test syms x n assert (isequal (laguerreL(n, 0, x), laguerreL(n, x))) ***** shared x, y, n syms x y n ***** assert (isequal (laguerreL([1 n], 0, x), laguerreL([1 n], x))) ***** test L = laguerreL([1; n], [pi; 0], [x; y]); expected = [laguerreL(1, pi, x); laguerreL(n, 0, y)]; assert (isequal (L, expected)) ***** test L = laguerreL([1 n], [pi 0], x); expected = [laguerreL(1, pi, x) laguerreL(n, 0, x)]; assert (isequal (L, expected)) ***** test L = laguerreL([1 n], pi, [x y]); expected = [laguerreL(1, pi, x) laguerreL(n, pi, y)]; assert (isequal (L, expected)) ***** test L = laguerreL(1, [pi 0], [x y]); expected = [laguerreL(1, pi, x) laguerreL(1, 0, y)]; assert (isequal (L, expected)) ***** test L = laguerreL([1 n], pi, x); expected = [laguerreL(1, pi, x) laguerreL(n, pi, x)]; assert (isequal (L, expected)) ***** test L = laguerreL(1, [pi 0], x); expected = [laguerreL(1, pi, x) laguerreL(1, 0, x)]; assert (isequal (L, expected)) ***** test L = laguerreL(1, pi, [x y]); expected = [laguerreL(1, pi, x) laguerreL(1, pi, y)]; assert (isequal (L, expected)) ***** test % round trip f = laguerreL (n, x); h = function_handle (f); A = h (1, 3.2); B = laguerreL (1, 3.2); assert (A, B) A = h ([1 2], [3.3 4.4]); B = laguerreL ([1 2], [3.3 4.4]); assert (A, B) ***** error % round trip f = laguerreL (n, y, x); h = function_handle (f); 19 tests, 19 passed, 0 known failure, 0 skipped [inst/@sym/coshint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coshint.m ***** error coshint (sym(1), 2) ***** xtest assert (isequaln (coshint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (coshint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = coshint(x); f2 = 0.8378669409802082408947; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = coshint(A); f2 = 0.8378669409802082408947; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = coshint (d); f = coshint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/transpose.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/transpose.m ***** test x = sym(1); assert (isequal (x.', x)) ***** assert (isempty (sym([]).')) ***** test syms x; assert (isequal (x.', x)) ***** test A = [1 2; 3 4]; assert(isequal( sym(A).' , sym(A.') )) ***** test A = [1 2] + 1i; assert(isequal( sym(A).' , sym(A.') )) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/subs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subs.m ***** error subs (sym(1), 2, 3, 4) ***** shared x,y,t,f syms x y t f = x*y; ***** test assert( isequal( subs(f, x, y), y^2 )) assert( isequal( subs(f, y, sin(x)), x*sin(x) )) assert( isequal( subs(f, x, 16), 16*y )) ***** test % multiple subs w/ cells assert( isequal( subs(f, {x}, {t}), y*t )) assert( isequal( subs(f, {x y}, {t t}), t*t )) assert( isequal( subs(f, {x y}, {t 16}), 16*t )) assert( isequal( subs(f, {x y}, {16 t}), 16*t )) assert( isequal( subs(f, {x y}, {2 16}), 32 )) ***** test % multiple subs w/ vectors assert( isequal( subs(f, [x y], [t t]), t*t )) assert( isequal( subs(f, [x y], [t 16]), 16*t )) assert( isequal( subs(f, [x y], [2 16]), 32 )) ***** test % anything you can think of assert( isequal( subs(f, [x y], {t t}), t*t )) assert( isequal( subs(f, {x y}, [t t]), t*t )) assert( isequal( subs(f, {x; y}, [t; t]), t*t )) ***** test % sub in doubles gives sym (matches SMT 2013b) % FIXME: but see % http://www.mathworks.co.uk/help/symbolic/gradient.html assert( isequal( subs(f, {x y}, {2 pi}), 2*sym(pi) )) assert( ~isa(subs(f, {x y}, {2 pi}), 'double')) assert( isa(subs(f, {x y}, {2 pi}), 'sym')) assert( isa(subs(f, {x y}, {2 sym(pi)}), 'sym')) assert( isa(subs(f, {x y}, {sym(2) sym(pi)}), 'sym')) ***** shared x,y,t,f,F syms x y t f = sin(x)*y; F = [f; 2*f]; ***** test % need the simultaneous=True flag in SymPy (matches SMT 2013b) assert( isequal( subs(f, [x t], [t 6]), y*sin(t) )) assert( isequal( subs(F, [x t], [t 6]), [y*sin(t); 2*y*sin(t)] )) ***** test % swap x and y (also needs simultaneous=True assert( isequal( subs(f, [x y], [y x]), x*sin(y) )) ***** test % but of course both x and y to t still works assert( isequal( subs(f, [x y], [t t]), t*sin(t) )) ***** shared ***** test % Issue #10, subbing matrices in for scalars syms y a = sym([1 2; 3 4]); f = sin(y); g = subs(f, y, a); assert (isequal (g, sin(a))) ***** test % Issue #10, subbing matrices in for scalars syms y a = sym([1 2]); g = subs(sin(y), {y}, {a}); assert (isequal (g, sin(a))) ***** test % Issue #10, subbing matrices in for scalars syms y a = sym([1; 2]); g = subs(sin(y), {y}, a); assert (isequal (g, sin(a))) ***** test % Issue #10, subbing matrices in for scalars syms y a = [10 20 30]; f = 2*y; g = subs(f, y, a); assert (isequal (g, 2*a)) assert (isa (g, 'sym')) ***** test % Issue #10, sub matrices in for two scalars syms x y a = [10 20 30]; f = x^2*y; g = subs(f, {x y}, {a a+1}); h = a.^2.*(a+1); assert (isequal (g, h)) ***** test % Issue #10, sub matrices in for two scalars syms x y z a = [10 20 30]; f = x^2*y; g = subs(f, {x y}, {a z}); h = a.^2*z; assert (isequal (g, h)) g = subs(f, {x y}, {a 6}); h = a.^2*6; assert (isequal (g, h)) ***** error syms x y a = [10 20 30]; f = x^2*y; g = subs(f, {x y}, {[10 20 30] [10 20]}); ***** test % two inputs syms x y assert (isequal (subs (2*x, 6), sym(12))) assert (isequal (subs (2*x*y^2, 6), 12*y^2)) assert (isequal (subs (2*y, 6), sym(12))) assert (isequal (subs (sym(2), 6), sym(2))) ***** test % only two inputs, vector syms x assert (isequal (subs (2*x, [3 5]), sym([6 10]))) ***** test % SMT compat, subbing in vec/mat for nonexist x syms x y z % you might think this would be y: assert (~ isequal (subs (y, x, [1 2]), y)) % but it gives two y's: assert (isequal (subs (y, x, [1 2]), [y y])) assert (isequal (subs (sym(42), [3 5]), sym([42 42]))) assert (isequal (subs (sym(42), x, []), sym([]))) assert (isequal (subs (y, {x y}, {[1 2; 3 4], 6}), sym([6 6; 6 6]))) assert (isequal (subs (y, {x z}, {[1 2; 3 4], 6}), [y y; y y])) ***** test syms x y assert (isequal (subs (sym(42), x, y), sym(42))) assert (isequal (subs (sym(42), y), sym(42))) assert (isequal (subs (sym(42)), sym(42))) ***** test % empty lists assert (isequal (subs (sym(42), {}, {}), sym(42))) assert (isequal (subs (42, sym([]), sym([])), sym(42))) ***** test syms x y f = x*y; x = 6; y = 7; g = subs (f); assert (isequal (g, sym (42))) assert (isa (g, 'sym')) ***** test syms x y f = x*y; x = 6; g = subs (f); assert (isequal (g, 6*y)) ***** test syms x y f = x*y; xsave = x; x = 6; g = subs (f); assert (isequal (g, 6*y)) assert (isequal (f, xsave*y)) ***** test syms a x y f = a*x*y; a = 6; clear x g = subs (f); syms x assert (isequal (g, 6*x*y)) 25 tests, 25 passed, 0 known failure, 0 skipped [inst/@sym/subsindex.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsindex.m ***** test i = sym(1); a = 7; assert(a(i)==a); i = sym(2); a = 2:2:10; assert(a(i)==4); ***** test i = sym([1 3 5]); a = 1:10; assert( isequal (a(i), [1 3 5])) ***** test i = sym([1 3 5]); a = sym(1:10); assert( isequal (a(i), sym([1 3 5]))); ***** test % should be an error if it doesn't convert to double syms x a = 1:10; try a(x) waserr = false; catch waserr = true; end assert(waserr) ***** test syms x assert (isequal (x(sym (true)), x)) assert (isequal (x(sym (false)), sym ([]))) ***** test x = 6; assert (isequal (x(sym (true)), 6)) assert (isequal (x(sym (false)), [])) ***** test a = sym([10 12 14]); assert (isequal (a(sym ([true false true])), a([1 3]))) assert (isequal (a(sym ([false false false])), sym (ones(1,0)))) ***** test a = [10 11; 12 13]; p = [true false; true true]; assert (isequal (a(sym (p)), a(p))) p = [false false false]; assert (isequal (a(sym (p)), a(p))) ***** error a = [10 12]; I = [sym(true) 2]; b = a(I); 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/log2.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log2.m ***** assert (isequal (log2 (sym (1024)), sym (10))) ***** assert (isequal (log2 (sym ([2 16; 32 1])), sym ([1 4; 5 0]))) ***** test % round-trip syms x f = log2 (x); h = function_handle (f); A = h (1.1); B = log2 (1.1); assert (A, B, -5*eps) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/ismatrix.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ismatrix.m ***** assert(ismatrix(sym('x'))) ***** assert(ismatrix(sym([1 2 3]))) ***** assert(ismatrix(sym([1; 2]))) ***** assert(ismatrix(sym([1 2; 3 4]))) ***** assert(ismatrix(sym([]))) ***** assert(ismatrix(sym(ones(1,0)))) ***** assert(ismatrix(sym(ones(0,3)))) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/invhilb.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/invhilb.m ***** test A = invhilb(sym(3)); B = sym([9 -36 30;-36 192 -180;30 -180 180]); assert( isequal( A, B)) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/sinint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinint.m ***** error sinint (sym(1), 2) ***** xtest assert (isequaln (sinint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (sinint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sinint(x); f2 = 0.9460830703671830149414; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sinint(A); f2 = 0.9460830703671830149414; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sinint (d); f = sinint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) ***** test % rewrite syms x y1 = sinint (x); y2 = rewrite (y1, 'Integral'); d1 = diff (y1, x); d2 = diff (y2, x); v1 = double (subs (d1, x, 2)); v2 = double (subs (d2, x, 2)); assert (v1, v2, -eps) 6 tests, 5 passed, 1 known failure, 0 skipped [inst/@sym/eig.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eig.m ***** test % basic A = [1 2; 3 4]; B = sym(A); sd = eig(A); s = eig(B); s2 = double(s); assert (norm(sort(s2) - sort(sd)) <= 10*eps) ***** test % scalars syms x a = sym(-10); assert (isequal (eig(a), a)) assert (isequal (eig(x), x)) ***** test % diag, multiplicity A = diag([6 6 7]); B = sym(A); e = eig(B); assert (isequal (size (e), [3 1])) assert (sum(logical(e == 6)) == 2) assert (sum(logical(e == 7)) == 1) ***** test % matrix with symbols syms x y positive A = [x+9 y; sym(0) 6]; s = eig(A); s = simplify(s); assert (isequal (s, [x+9; 6]) || isequal (s, [6; x+9])) ***** test % eigenvects e = sym([5 5 5 6 7]); A = diag(e); [V, D] = eig(A); assert (isequal (diag(D), e.')) assert (isequal (V, diag(sym([1 1 1 1 1])))) ***** test % alg/geom mult, eigenvects e = sym([5 5 5 6]); A = diag(e); A(1,2) = 1; [V, D] = eig(A); assert (isequal (diag(D), e.')) assert (sum(logical(V(1,:) ~= 0)) == 2) assert (sum(logical(V(2,:) ~= 0)) == 0) assert (sum(logical(V(3,:) ~= 0)) == 1) assert (sum(logical(V(4,:) ~= 0)) == 1) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/fourier.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fourier.m ***** test % matlab SMT compatibility for arguments syms r x u w v Pi=sym('pi'); assert(logical( fourier(exp(-x^2)) == sqrt(Pi)/exp(w^2/4) )) assert(logical( fourier(exp(-w^2)) == sqrt(Pi)/exp(v^2/4) )) assert(logical( fourier(exp(-r^2),u) == sqrt(Pi)/exp(u^2/4) )) assert(logical( fourier(exp(-r^2),r,u) == sqrt(Pi)/exp(u^2/4) )) ***** test % basic tests syms x w assert(logical( fourier(exp(-abs(x))) == 2/(w^2 + 1) )) assert(logical( fourier(x*exp(-abs(x))) == -(w*4*1i)/(w^4 + 2*w^2 + 1) )) ***** test % Dirac delta tests syms x w Pi=sym('pi'); assert(logical( fourier(dirac(x-2)) == exp(-2*1i*w) )) assert (logical( fourier(sym(2), x, w) == 4*Pi*dirac(w) )) ***** test % advanced test syms x w c d Pi=sym('pi'); F=Pi*(dirac(w-c)+dirac(w+c))+2*Pi*1i*(dirac(w+3*d)-dirac(w-3*d))+2/(w^2+1); assert(logical( fourier(cos(c*x)+2*sin(3*d*x)+exp(-abs(x))) == expand(F) )) ***** xtest % Differential operator to algebraic % SymPy cannot evaluate? (Issue #170) syms x w f(x) assert(logical( fourier(diff(f(x),x),x,w) == -1i*w*fourier(f(x),x,w) )) !!!!! known failure assert (logical (fourier (diff (f (x), x), x, w) == -1i * w * fourier (f (x), x, w))) failed 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/reshape.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/reshape.m ***** test d = [2 4 6; 8 10 12]; a = sym(d); assert (isequal (reshape(a, [1 6]), reshape(d, [1 6]))) assert (isequal (reshape(a, 1, 6), reshape(d, 1, 6))) assert (isequal (reshape(a, 2, 3), reshape(d, 2, 3))) assert (isequal (reshape(a, 3, 2), reshape(d, 3, 2))) assert (isequal (reshape(a, 6, 1), reshape(d, 6, 1))) ***** shared x, a, d syms x a = [1 x^2 x^4; x x^3 x^5]; d = [0 2 4; 1 3 5]; ***** test b = reshape(a, [1 6]); assert (isequal (size(b), [1 6])) assert (isequal (b, x.^reshape(d,1,6))) ***** test b = reshape(a, [6 1]); assert (isequal (size(b), [6 1])) assert (isequal (b, x.^reshape(d,6,1))) b = reshape(b, size(a)); assert (isequal (size(b), [2 3])) assert (isequal (b, a)) ***** test b = a(:); assert( isequal (size(b), [6 1])) assert( isequal (b, x.^(d(:)))) ***** test % reshape scalar assert (logical( reshape(x, 1, 1) == x )) assert (logical( reshape(x, [1 1]) == x )) ***** shared a syms a ***** error reshape(a, 2, 1) ***** error reshape(a, 1, 2) ***** error reshape(a, 1, 1, 1) ***** error reshape(a, [1, 1, 1]) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/dilog.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dilog.m ***** assert (isequal (dilog (sym(1)), sym(0))) ***** assert (isequal (dilog (sym(0)), sym(pi)^2/6)) ***** assert (isequal (dilog (sym(2)), -sym(pi)^2/12)) ***** assert (double(dilog(sym(-1))), pi^2/4 - pi*1i*log(2), eps) ***** test % round-trip syms x f = dilog (x); h = function_handle (f); A = h (1.1); B = dilog (1.1); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/pinv.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pinv.m ***** test % scalar syms x assert (isequal (pinv(x), 1/x)) ***** test % 2x3 A = [1 2 3; 4 5 6]; assert (max (max (abs (double (pinv (sym (A))) - pinv(A)))) <= 10*eps) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/tril.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tril.m ***** test syms x assert (isequal (tril(x), x)) ***** test % with symbols syms x A = [x 2*x; 3*x 4*x]; assert (isequal (tril(A), [x 0; 3*x 4*x])) ***** test % diagonal shifts B = round(10*rand(3,4)); A = sym(B); assert (isequal (tril(A), tril(B))) assert (isequal (tril(A,0), tril(B,0))) assert (isequal (tril(A,1), tril(B,1))) assert (isequal (tril(A,-1), tril(B,-1))) ***** test % double array pass through B = round(10*rand(3,4)); assert (isequal (tril(B,sym(1)), tril(B,1))) assert (isa (tril(B,sym(1)), 'double')) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/triu.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/triu.m ***** test % scalar syms x assert (isequal (triu(x), x)) assert (isequal (triu(x,0), x)) assert (isequal (triu(x,1), 0)) assert (isequal (triu(x,-1), 0)) ***** test % with symbols syms x A = [x 2*x; 3*x 4*x]; assert (isequal (triu(A), [x 2*x; 0 4*x])) ***** test % diagonal shifts B = round(10*rand(3,4)); A = sym(B); assert (isequal (triu(A), triu(B))) assert (isequal (triu(A,0), triu(B,0))) assert (isequal (triu(A,1), triu(B,1))) assert (isequal (triu(A,-1), triu(B,-1))) ***** test % double array pass through B = round(10*rand(3,4)); assert (isequal (triu(B,sym(1)), triu(B,1))) assert (isa (triu(B,sym(1)), 'double')) ***** test % immutable test A = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); assert (isequal (triu (A), sym ([1 2; 0 4]))) assert (isequal (tril (A), sym ([1 0; 3 4]))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/atan2.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atan2.m ***** error atan2 (1) ***** error atan2 (1, 2, 3) ***** test % some angles e = sym(1); a = atan2(0, e); assert (isequal (a, sym(0))) a = atan2(e, 0); assert (isequal (a, sym(pi)/2)) ***** test % symbols can give numerical answer syms x positive a = atan2(0, x); assert (isequal (a, sym(0))) a = atan2(x, 0); assert (isequal (a, sym(pi)/2)) a = atan2(-x, 0); assert (isequal (a, -sym(pi)/2)) ***** test % matrices x = sym([1 -2; 0 0]); y = sym([0 0; 8 -3]); a = atan2(y, x); sp = sym(pi); aex = [0 sp; sp/2 -sp/2]; assert (isequal (a, aex)) ***** test % round trip syms x y xd = -2; yd = -3; f = atan2 (x, y); A = atan2 (xd, yd); h = function_handle (f); B = h (xd, yd); assert (A, B, -eps) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/toeplitz.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/toeplitz.m ***** test % rect R = [10 20 40]; C = [10 30]; A = sym(toeplitz(R,C)); B = toeplitz(sym(R),sym(C)); assert (isequal (A, B)) R = [10 20]; C = [10 30 50]; A = sym(toeplitz(R,C)); B = toeplitz(sym(R),sym(C)); assert (isequal (A, B)) ***** test % symbols syms x y R = [10 20 40]; C = [10 30]; Rs = [10 x 40]; Cs = [10 y]; A = toeplitz(R,C); B = toeplitz(Rs,Cs); assert (isequal (A, subs(B,[x,y],[20 30]))) ***** test % hermitian syms a b c A = [a b c; conj(b) a b; conj(c) conj(b) a]; B = toeplitz([a,b,c]); assert (isequal( A, B)) ***** warning % mismatch syms x B = toeplitz([10 x], [1 3 x]); ***** warning % scalar B = toeplitz(sym(2), 3); assert (isequal (B, sym(2))) ***** test % mismatch syms x y fprintf('\n one warning expected\n') % how to quiet this one? A = toeplitz([10 2], [1 3 5]); s = warning ('off', 'OctSymPy:toeplitz:diagconflict'); B = toeplitz([10 x], [1 3 y]); warning(s) assert (isequal (A, subs(B, [x,y], [2 5]))) one warning expected warning: toeplitz: column wins diagonal conflict warning: called from toeplitz at line 84 column 7 __test__ at line 6 column 4 test at line 682 column 11 /tmp/tmp.EEULPfFdek at line 894 column 31 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/hypergeom.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hypergeom.m ***** assert (isequal (double (hypergeom ([1, 2], [2, 3], sym(0))), 1)) ***** test % matrix input syms z a = sym([1 2]); b = sym([3 4]); A = hypergeom (a, b, [0 sym(1); 2 z]); B = [hypergeom(a,b,0) hypergeom(a,b,1); hypergeom(a,b,2) hypergeom(a,b,z)]; assert (isequal (A, B)) ***** test % scalars for a and/or b syms z assert (isequal (hypergeom(1, 2, z), hypergeom({sym(1)}, {sym(2)}, z))) assert (isequal (hypergeom([1 2], 3, z), hypergeom([1 2], {sym(3)}, z))) assert (isequal (hypergeom(1, [2 3], z), hypergeom({sym(1)}, [2 3], z))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/asin.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asin.m ***** error asin (sym(1), 2) ***** assert (isequaln (asin (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = asin(x); f2 = asin(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = asin(A); f2 = asin(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = asin (d); f = asin (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/cbrt.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cbrt.m ***** error cbrt (sym(1), 2) ***** assert (isequaln (cbrt (sym(nan)), sym(nan))) ***** shared x, d d = 2; x = sym('2'); ***** test f1 = cbrt(x); f2 = 1.2599210498948731647; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cbrt(A); f2 = 1.2599210498948731647; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); if (exist ('OCTAVE_VERSION', 'builtin')) A = cbrt (d); else % Issue #742 A = d^(1/3); end f = cbrt (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isvector.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isvector.m ***** assert(isvector(sym('x'))) ***** assert(isvector(sym([1 2 3]))) ***** assert(isvector(sym([1; 2]))) ***** assert(~isvector(sym([1 2; 3 4]))) ***** assert(~isvector(sym([]))) ***** assert(isvector(sym(ones(1,0)))) ***** assert(~isvector(sym(ones(0,3)))) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/qr.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/qr.m ***** error qr (sym(1), 2, 3) ***** error [Q, R, P] = qr (sym(1)) ***** error qr (sym(1), 1) ***** test % scalar [q, r] = qr(sym(6)); assert (isequal (q, sym(1))) assert (isequal (r, sym(6))) ***** test syms x positive [q, r] = qr(x); assert (isequal (q*r, x)) assert (isequal (q, sym(1))) assert (isequal (r, x)) ***** test % trickier if x could be zero, fails on 1.8 <= SymPy <= 1.10.1 syms x [q, r] = qr(x); if (pycall_sympy__ ('return Version(spver) > Version("1.10.1")')) assert (isequal (q*r, x)) end ***** test A = [1 2; 3 4]; B = sym(A); [Q, R] = qr(B); assert (isequal (Q*R, B)) assert (isequal (R(2,1), sym(0))) assert (isequal (Q(:,1)'*Q(:,2), sym(0))) %[QA, RA] = qr(A) %assert ( max(max(double(Q)-QA)) <= 10*eps) %assert ( max(max(double(Q)-QA)) <= 10*eps) ***** test % non square: tall skinny A = sym([1 2; 3 4; 5 6]); [Q, R] = qr (A, 0); assert (size (Q), [3 2]) assert (size (R), [2 2]) assert (isequal (Q*R, A)) ***** test % non square: short fat A = sym([1 2 3; 4 5 6]); [Q, R] = qr (A); assert (isequal (Q*R, A)) ***** test % non square: short fat, rank deficient A = sym([1 2 3; 2 4 6]); [Q, R] = qr (A); assert (isequal (Q*R, A)) A = sym([1 2 3; 2 4 6; 0 0 0]); [Q, R] = qr (A); assert (isequal (Q*R, A)) ***** test % rank deficient A = sym([1 2 3; 2 4 6; 0 0 0]); [Q, R] = qr (A); assert (isequal (Q*R, A)) A = sym([1 2 3; 2 5 6; 0 0 0]); [Q, R] = qr (A); assert (isequal (Q*R, A)) ***** test % single return value R not Q assert (isequal (qr (sym(4)), sym(4))) 12 tests, 12 passed, 0 known failure, 0 skipped [inst/@sym/subsref.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsref.m ***** shared a,b b = [1:4]; a = sym(b); ***** assert(isequal( a(1), b(1) )) ***** assert(isequal( a(2), b(2) )) ***** assert(isequal( a(4), b(4) )) ***** assert(isempty( a([]) )) ***** shared a,b b = [1:4]; b = [b; 3*b; 5*b]; a = sym(b); ***** assert(isequal( a(1), b(1) )) ***** assert(isequal( a(2), b(2) )) ***** assert(isequal( a(4), b(4) )) ***** assert(isequal( a(:,:), a )) ***** assert(isequal( a(1:2,1:3), a(1:2,1:3) )) ***** assert(isequal( a(1:2:3,[1 2 4]), b(1:2:3,[1 2 4]) )) ***** assert(isequal( a(1:2:3,[4 2 3 1]), b(1:2:3,[4 2 3 1]) )) ***** assert(isequal( a(1:2:3,[4 1 1 1]), b(1:2:3,[4 1 1 1]) )) ***** assert(isequal( a([],:), b([],:) )) ***** assert(isequal( size(a([],:)), [0 4] )) ***** assert(isequal( a(1:2,[]), b(1:2,[]) )) ***** assert(isequal( size(a(1:2,[])), [2 0] )) ***** assert(isempty( a(1:2,[]) )) ***** assert(isempty( a([],[]) )) ***** assert(isequal( a([],[]), sym([]) )) ***** assert(~isequal( a(1:2,[]), sym([]) )) ***** shared e e = sym([1 3 5; 2 4 6]); ***** assert(isequal( e(:), sym((1:6)') )) ***** assert(isequal( e([1 2 3]), sym([1 2 3]) )) ***** assert(isequal( e([1; 3; 4]), sym([1; 3; 4]) )) ***** assert(isempty( e([]) )) ***** assert(isempty( e('') )) ***** assert(isequal( e([]), sym([]) )) ***** shared a,b b = 1:5; a = sym(b); ***** assert(isequal( a([1 2 5]), b([1 2 5]) )) ***** assert(isequal( a([1; 2; 5]), b([1; 2; 5]) )) ***** shared x syms x ***** test % logical with empty result assert(isempty( x(false) )) a = [x x]; assert(isempty( a([false false]) )) ***** test % issue 18, scalar access assert(isequal( x(1), x )) assert(isequal( x(true), x )) ***** shared ***** test % older access tests syms x f = [x 2; 3 4*x]; % element access assert (logical( f(1,1) == x )) assert (logical( f(1,2) == 2 )) % linear access of 2d array assert (logical( f(1) == x )) assert (logical( f(2) == 3 )) % column based assert (logical( f(3) == 2 )) ***** shared a,b % effectively a random matrix a = reshape( round(50*(sin(1:20)+1)), 5,4); b = sym(a); ***** test % older array refs test assert (logical(b(1,1) == a(1,1))) assert (logical(b(3,1) == a(3,1))) assert (logical(b(1,3) == a(1,3))) assert (logical(b(4,4) == a(4,4))) ***** test % older array refs test: linear indices assert (logical(b(1) == a(1))) assert (logical(b(3) == a(3))) assert (logical(b(13) == a(13))) ***** test % older array refs test: end assert (all(all(logical( b(end,1) == a(end,1) )))) assert (all(all(logical( b(2,end) == a(2,end) )))) assert (all(all(logical( b(end,end) == a(end,end) )))) assert (all(all(logical( b(end-1,1) == a(end-1,1) )))) assert (all(all(logical( b(2,end-1) == a(2,end-1) )))) assert (all(all(logical( b(end-1,end-1) == a(end-1,end-1) )))) ***** shared ***** test % older slicing tests syms x a = [1 2 3 4 5 6]; a = [a; 3*a; 5*a; 2*a; 4*a]; b = sym(a); assert (isequal( b(:,1), a(:,1) )) assert (isequal( b(:,2), a(:,2) )) assert (isequal( b(1,:), a(1,:) )) assert (isequal( b(2,:), a(2,:) )) assert (isequal( b(:,:), a(:,:) )) assert (isequal( b(1:3,2), a(1:3,2) )) assert (isequal( b(1:4,:), a(1:4,:) )) assert (isequal( b(1:2:5,:), a(1:2:5,:) )) assert (isequal( b(1:2:4,:), a(1:2:4,:) )) assert (isequal( b(2:2:4,3), a(2:2:4,3) )) assert (isequal( b(2:2:4,3), a(2:2:4,3) )) ***** test % 2D arrays b = [1:4]; b = [b; 3*b; 5*b]; a = sym(b); I = rand(size(b)) > 0.5; assert (isequal (a(I), b(I))) I = I(:); assert (isequal (a(I), b(I))) I = I'; assert (isequal (a(I), b(I))) I = logical(zeros(size(b))); assert (isequal (a(I), b(I))) ***** test % 1D arrays, does right with despite warning r = [1:6]; ar = sym(r); c = r'; ac = sym(c); Ir = rand(size(r)) > 0.5; Ic = rand(size(c)) > 0.5; assert (isequal (ar(Ir), r(Ir))) assert (isequal (ac(Ic), c(Ic))) assert (isequal (ar(Ic), r(Ic))) assert (isequal (ac(Ir), c(Ir))) ***** test % rccross tests B = [1 2 3 4; 5 6 7 9; 10 11 12 13]; A = sym(B); assert (isequal (A([1 3],[2 3]), B([1 3], [2 3]) )) assert (isequal (A(1,[2 3]), B(1,[2 3]) )) assert (isequal (A([1 2],4), B([1 2],4) )) assert (isequal (A([2 1],[4 2]), B([2 1],[4 2]) )) assert (isequal (A([],[]), B([],[]) )) ***** error % issue #445 A = sym([10 11]); A(1.1) ***** error % issue #445 A = sym([10 11]); A(sym(4)/3) ***** error % issue #445 A = sym([1 2; 3 4]); A(1.1, 1) ***** error % issue #445 A = sym([1 2; 3 4]); A(1, sym(4)/3) ***** error A = sym([1 2; 3 4]); A(5) ***** shared a, b a = [1 2 3 5; 4 5 6 9; 7 5 3 2]; b = sym (a); ***** test c = true; assert (isequal (a(c), b(c))) c = false; assert (isequal (a(c), b(c))) ***** test c = [false true]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** test c = [false true false true; true false true false; false true false true]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** test c = [false true false true false]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** test c = [false; true; false; true; false]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** test c = [false true; false true; true false]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** shared ***** test % Orientation of empty results of logical indexing on row or column vectors r = [1:6]; c = r'; ar = sym(r); ac = sym(c); assert (isequal (ar(false), r(false))) assert (isequal (ac(false), c(false))) assert (isequal (ar(false (1, 6)), r(false (1, 6)))) assert (isequal (ac(false (1, 6)), c(false (1, 6)))) assert (isequal (ar(false (6, 1)), r(false (6, 1)))) assert (isequal (ac(false (6, 1)), c(false (6, 1)))) 50 tests, 50 passed, 0 known failure, 0 skipped [inst/@sym/laplacian.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laplacian.m ***** shared x,y,z syms x y z ***** test % 1D f = x^2; g = diff(f,x,x); assert (isequal (laplacian(f), g)) assert (isequal (laplacian(f,{x}), g)) assert (isequal (laplacian(f,[x]), g)) assert (isequal (laplacian(f,x), g)) ***** test % const f = sym(1); g = sym(0); assert (isequal (laplacian(f), g)) assert (isequal (laplacian(f,x), g)) f = sym('c'); assert (isequal (laplacian(f,x), g)) ***** test % double const f = 1; g = sym(0); assert (isequal (laplacian(f,x), g)) ***** test % 1D fcn in 2d/3d f = sin(2*y); g = -4*f; assert (isequal (laplacian(f), g)) assert (isequal (laplacian(f, {x,y}), g)) assert (isequal (laplacian(f, {x,y,z}), g)) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y); g = diff(f,x,x) + diff(f,y,y); assert (isequal (laplacian(f), g)) assert (isequal (laplacian(f, {x,y}), g)) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y+sinh(z)); gr2 = gradient(f, {x,y}); divgr2 = divergence(gr2, {x,y}); l2 = laplacian(f,{x,y}); gr3 = gradient(f, {x,y,z}); divgr3 = divergence(gr3, {x,y,z}); l3 = laplacian(f,{x,y,z}); assert (isAlways (l2 == divgr2)) assert (isAlways (l3 == divgr3)) ***** error laplacian(sym('x'), sym('x'), 42) ***** error laplacian([sym('x'), sym('x')]) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/ellipticPi.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticPi.m ***** error ellipticPi (sym (1)) ***** error ellipticPi (sym (1), 2, 3, 4) ***** assert (double (ellipticPi (sym (-23)/10, sym (pi)/4, 0)), 0.5876852228, 10e-11) ***** assert (double (ellipticPi (sym (1)/3, sym (pi)/3, sym (1)/2)), 1.285032276, 10e-11) ***** assert (double (ellipticPi (sym (2), sym (pi)/6, sym (2))), 0.7507322117, 10e-11) ***** xtest % FIXME: search/report upstream assert (double (ellipticPi (sym (-1), 0, sym (1))), 0) !!!!! known failure ASSERT errors for: assert (double (ellipticPi (sym (-1), 0, sym (1))),0) Location | Observed | Expected | Reason () NaN 0 'NaN' mismatch ***** xtest % FIXME: this is a regression somewhere: loss of precision: Issue #1064 % compare to Maple, complete us = vpa (ellipticPi (sym(1)/6, sym(4)/3), 40); % > evalf(EllipticPi(sin(1/6), sqrt(4/3)), 40); maple = vpa ('2.019271696236161760696477679310987869058', 40) - ... vpa ('1.708165765120289929280805062355360570830j', 40); assert (abs (double (maple - us)), 0, 2e-39) !!!!! known failure ASSERT errors for: assert (abs (double (maple - us)),0,2e-39) Location | Observed | Expected | Reason () 5.7666e-32 0 Abs err 5.7666e-32 exceeds tol 2e-39 by 6e-32 ***** test % compare to Maple, complete us = vpa (ellipticPi (sym(1)/6, sym(4)/3), 40); % > evalf(EllipticPi(sin(1/6), sqrt(4/3)), 40); maple = vpa ('2.019271696236161760696477679310987869058', 40) - ... vpa ('1.708165765120289929280805062355360570830j', 40); assert (abs (double (maple - us)), 0, 2e-30) ***** test % compare to Maple, incomplete us = vpa (ellipticPi (sym(8)/7, sym(4)/3, sym(2)/7), 40); % > evalf(EllipticPi(sin(4/3), 8/7, sqrt(2/7)), 40); maple = vpa ('2.089415796799294830305265090302275542033', 40) - ... vpa ('4.798862045930802761256228043192491271947j', 40); assert (abs (double (maple - us)), 0, 6e-39) 9 tests, 7 passed, 2 known failures, 0 skipped [inst/@sym/numel.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/numel.m ***** test a = sym([1 2 3]); assert(numel(a) == 3); ***** test % 2D array a = sym([1 2 3; 4 5 6]); assert(numel(a) == 6); ***** test % empty a = sym([]); assert(numel(a) == 0); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/cart2pol.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cart2pol.m ***** test % multiple non-scalar inputs x = sym ('x', [2 2]); assume (x, 'real'); y = sym ('y', [2 2]); assume (y, 'real'); [theta, r] = cart2pol (x, y); assert (isequal (r, sqrt (x.^2 + y.^2))); assert (isequal (tan (theta), y ./ x)); % mixing scalar inputs with non-scalar inputs syms z real [theta_2, r_2, z_2] = cart2pol (x, y, z); assert (isequal (r_2, sqrt (x.^2 + y.^2))); assert (isequal (tan (theta_2), y ./ x)); assert (isequal (z_2, z * ones (2, 2))); ***** test % column vector with 2 entries syms x y real [theta, r] = cart2pol ([x; y]); assert (isequal (r, sqrt (x.^2 + y.^2))); assert (isequal (tan (theta), y ./ x)); % column vector with 3 entries syms z real [theta_2, r_2, z_2] = cart2pol ([x; y; z]); assert (isequal (r_2, sqrt (x.^2 + y.^2))); assert (isequal (tan (theta_2), y ./ x)); assert (isequal (z_2, z)); ***** test % matrix with 2 columns syms x y u v real C = [x y; u v]; [theta, r] = cart2pol (C); assert (isequal (r, [sqrt(x.^2+y.^2); sqrt(u.^2+v.^2)])); assert (isequal (tan (theta), [y/x; v/u])); % matrix with 3 columns syms z w real C_2 = [x y z; u v w]; [theta_2, r_2, z_2] = cart2pol (C_2); assert (isequal (r, [sqrt(x.^2+y.^2); sqrt(u.^2+v.^2)])); assert (isequal (tan (theta), [y/x; v/u])); assert (isequal (z_2, [z; w])); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/frac.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/frac.m ***** test f1 = frac(sym(11)/10); f2 = sym(1)/10; assert (isequal (f1, f2)) ***** test d = sym(-11)/10; c = sym(9)/10; assert (isequal (frac (d), c)) ***** test d = sym(-19)/10; c = sym(1)/10; assert (isequal (frac (d), c)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/nextprime.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nextprime.m ***** assert (isequal (nextprime(sym(2)), 3)); ***** assert (isequal (nextprime(sym(18)), 19)); ***** assert (isequal (nextprime(sym([1 2 3])), [2 3 5])); ***** assert (isequal (nextprime(sym([-1 0])), [2 2])); ***** test % result is a sym p = nextprime(sym(2)); assert (isa (p, 'sym')) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/jacobian.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/jacobian.m ***** error jacobian (sym(1), 2, 3) ***** error jacobian ([sym(1) 2; sym(3) 4]) ***** shared x,y,z syms x y z ***** test % 1D f = x^2; assert (isequal (jacobian(f), diff(f,x))) assert (isequal (jacobian(f,{x}), diff(f,x))) assert (isequal (jacobian(f,x), diff(f,x))) ***** test % const f = sym(1); g = sym(0); assert (isequal (jacobian(f), g)) assert (isequal (jacobian(f,x), g)) ***** test % double const f = 1; g = sym(0); assert (isequal (jacobian(f,x), g)) ***** test % diag f = [x y^2]; g = [sym(1) 0; 0 2*y]; assert (isequal (jacobian(f), g)) assert (isequal (jacobian(f, [x y]), g)) assert (isequal (jacobian(f, {x y}), g)) ***** test % anti-diag f = [y^2 x]; g = [0 2*y; sym(1) 0]; assert (isequal (jacobian(f), g)) assert (isequal (jacobian(f, {x y}), g)) ***** test % shape f = [x y^2]; assert (isequal (size(jacobian(f, {x y z})), [2 3])) assert (isequal (size(jacobian(f, [x y z])), [2 3])) assert (isequal (size(jacobian(f, [x; y; z])), [2 3])) assert (isequal (size(jacobian(f.', {x y z})), [2 3])) ***** test % scalar f f = x*y; assert (isequal (size(jacobian(f, {x y})), [1 2])) g = gradient(f, {x y}); assert (isequal (jacobian(f, {x y}), g.')) ***** test % vect f wrt 1 var f = [x x^2]; assert (isequal (size(jacobian(f, x)), [2 1])) f = f.'; % same shape output assert (isequal (size(jacobian(f, x)), [2 1])) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/any.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/any.m ***** test % matrix a = [0 0; 1 0]; s = sym(a); assert (isequal (any (s), any (a))) assert (isequal (any (s,1), any (a,1))) assert (isequal (any (s,2), any (a,2))) ***** test % vector a = [0 1 0]; s = sym(a); assert (isequal (any (s), any (a))) assert (isequal (any (s,1), any (a,1))) assert (isequal (any (s,2), any (a,2))) ***** test % should fail on symbols syms x s = [0 1 x]; try any (s) waserr = false; catch waserr = true; end assert (waserr) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/ilaplace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ilaplace.m ***** error ilaplace (sym(1), 2, 3, 4) ***** test % basic SMT compact: no heaviside syms s syms t positive assert (isequal (ilaplace(1/s^2), t)) assert (isequal (ilaplace(s/(s^2+9)), cos(3*t))) assert (isequal (ilaplace(6/s^4), t^3)) ***** test % more SMT compact syms r syms u positive assert (isequal (ilaplace(1/r^2, u), u)) assert (isequal (ilaplace(1/r^2, r, u), u)) ***** test % if t specified and not positive, we expect heaviside clear s t syms s t assert (isequal (ilaplace(1/s^2, s, t), t*heaviside(t))) assert (isequal (ilaplace(s/(s^2+9), t), cos(3*t)*heaviside(t))) assert (isequal (ilaplace(6/s^4, t), t^3*heaviside(t))) ***** test % Heaviside test syms s t=sym('t', 'positive'); assert(logical( ilaplace(exp(-5*s)/s^2,t) == (t-5)*heaviside(t-5) )) ***** test % Delta dirac test syms s t = sym('t'); assert (isequal (ilaplace (sym('2'), t), 2*dirac(t))) ***** test % Delta dirac test 2 syms s t calc = ilaplace (5*exp (-3*s) - 2*exp (-2*s)/s, s, t); want = 5*dirac (t-3) - 2*heaviside (t-2); assert (isequal (calc, want)) ***** test % Delta dirac test 3, coefficient syms s t syms c positive calc = ilaplace (2*exp (-c*s), s, t); want = 2*dirac (t - c); assert (isAlways (calc == want)) ***** error ilaplace (sym('s', 'positive')*sym('s')) ***** test % SMT compact, prefers s over symvar syms s x syms t positive assert (isequal (ilaplace(x/s^4), x*t^3/6)) t = sym('t'); assert (isequal (ilaplace(x/s^4, t), x*t^3/6*heaviside(t))) ***** test % pick s even it has assumptions syms s real syms x t assert (isequal (ilaplace (x/s^2, t), x*t*heaviside(t))) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/rank.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rank.m ***** test A = sym([1 2; 3 4]); assert (rank(A) == 2); ***** test A = sym([1 2 3; 3 4 5]); assert (rank(A) == 2); ***** test A = sym([1 2; 1 2]); assert (rank(A) == 1); ***** test A = sym([1 2; 3 4]); assert (rank(A) == 2); ***** assert (rank(sym(1)) == 1); ***** assert (rank(sym(0)) == 0); ***** assert (rank(sym('x', 'positive')) == 1); 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/acsch.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acsch.m ***** error acsch (sym(1), 2) ***** assert (isequaln (acsch (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acsch(x); f2 = acsch(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acsch(A); f2 = acsch(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acsch (d); f = acsch (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/sort.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sort.m ***** error sort (sym(1), 2) ***** test f = [sym(1), sym(0)]; expected = sym([0, 1]); assert (isequal (sort(f), expected)) ***** test f = [sym(1)]; expected = sym(1); assert (isequal (sort(f), expected)) ***** test f = [sym(3), sym(2), sym(6)]; s = sort(f); expected_s = sym([2, 3, 6]); assert (isequal (s, expected_s)) ***** test f = [sym(pi), sin(sym(2)), sqrt(sym(6))]; s = sort(f); expected_s = sym([sin(sym(2)), sqrt(sym(6)), sym(pi)]); assert (isequal (s, expected_s)) ***** test f = [sym(1), sym(2); sym(2), sym(pi); sym(pi), sym(1)]; s = sort(f); expected_s = ([sym(1), sym(1); sym(2), sym(2); sym(pi), sym(pi)]); assert (isequal (s, expected_s)) ***** assert (isequal (sort(sym([])), sym([]))) ***** error sort([sym('x') 1]) ***** test % but with assumptions, symbols can be sorted p = sym('p', 'positive'); n = sym('n', 'negative'); expected_s = [n p]; s = sort ([p n]); assert (isequal (s, expected_s)) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/kroneckerDelta.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/kroneckerDelta.m ***** error kroneckerDelta (sym(1), 2, 3) ***** test syms x assert (isequal (kroneckerDelta (x, x), sym(1))) ***** assert (isequal (kroneckerDelta ([sym(1) 2 3], [1 2 0]), sym([1 1 0]))) ***** test % round trip syms x y f = kroneckerDelta (x, y); h = function_handle (f); assert (h (1, 2), 0) assert (h (2, 2), 1) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/pretty.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pretty.m ***** test % simple syms x s1 = pretty(sin(x)); s2 = sprintf(' sin(x)\n'); assert (strcmp (s1, s2)) ***** test % force ascii syms x s1 = pretty(sin(x/2), 'ascii'); s2 = sprintf(' /x\\\n sin|-|\n \\2/\n'); swin = strrep(s1, sprintf('\r\n'), sprintf('\n')); assert (strcmp (s1, s2) || strcmp (swin, s2)) ***** test % force unicode syms x s1 = pretty(sin(x/2), 'unicode'); s2 = sprintf(' ⎛x⎞\n sin⎜─⎟\n ⎝2⎠\n'); swin = strrep(s1, sprintf('\r\n'), sprintf('\n')); assert (strcmp (s1, s2) || strcmp (swin, s2)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/charpoly.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/charpoly.m ***** error charpoly (sym (1), 1, 2) ***** error charpoly (sym ([1 2])) ***** test syms x A = sym([1 2; 3 4]); assert (isequal (charpoly(A, x), x^2 - 5*x -2)) ***** test syms x A = sym([1 2; 3 4]); B = sym([1 -5 -2]); assert (isequal (charpoly(A), B)) ***** test syms x A = sym([x x; x x]); B = sym([1 -2*x 0]); assert (isequal (charpoly(A), B)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/min.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/min.m ***** test % scalars with dim a = min(sym(pi), [], 1); b = sym(pi); assert (isequal (a, b)); a = min(sym(pi), [], 2); assert (isequal (a, b)); a = max(sym(pi), [], 1); assert (isequal (a, b)); a = max(sym(pi), [], 2); assert (isequal (a, b)); ***** shared A, D D = [0 1 2 3]; A = sym(D); ***** test % row vectors assert (isequal (min(A), sym(min(D)))) assert (isequal (min(A), sym(0))) assert (isequal (max(A), sym(max(D)))) assert (isequal (max(A), sym(3))) ***** test % row vectors with dim assert (isequal (min(A, [], 1), sym(min(D, [], 1)))) assert (isequal (min(A, [], 2), sym(min(D, [], 2)))) assert (isequal (max(A, [], 1), sym(max(D, [], 1)))) assert (isequal (max(A, [], 2), sym(max(D, [], 2)))) ***** test % column vectors A = A.'; D = D.'; assert (isequal (min(A), sym(min(D)))) assert (isequal (min(A), sym(0))) assert (isequal (max(A), sym(max(D)))) assert (isequal (max(A), sym(3))) ***** test % row vectors with dim assert (isequal (min(A, [], 1), sym(min(D, [], 1)))) assert (isequal (min(A, [], 2), sym(min(D, [], 2)))) assert (isequal (max(A, [], 1), sym(max(D, [], 1)))) assert (isequal (max(A, [], 2), sym(max(D, [], 2)))) ***** shared ***** test % empty a = min(sym([])); assert(isempty(a)) a = max(sym([])); assert(isempty(a)) ***** test % matrix A = [1 4 6; 2 2 5]; A = sym(A); assert (isequal (min(A), sym([1 2 5]))) assert (isequal (min(A, [], 1), sym([1 2 5]))) assert (isequal (min(A, [], 2), sym([1; 2]))) assert (isequal (max(A), sym([2 4 6]))) assert (isequal (max(A, [], 1), sym([2 4 6]))) assert (isequal (max(A, [], 2), sym([6; 5]))) ***** test % index output is double not sym [m, I] = min(sym(2), [], 1); assert (strcmp(class(I), 'double')) [m, I] = max(sym(2), [], 1); assert (strcmp(class(I), 'double')) ***** test % empty rows/columns, I is double A = sym(zeros(0, 4)); [m, I] = min(A, [], 1); assert (strcmp(class(I), 'double')) [m, I] = max(A, [], 1); assert (strcmp(class(I), 'double')) A = sym(zeros(3, 0)); [m, I] = min(A, [], 2); assert (strcmp(class(I), 'double')) [m, I] = max(A, [], 2); assert (strcmp(class(I), 'double')) ***** test % index output A = [0 1 9; 10 7 4]; B = sym(A); [m1, I1] = min(A); [m2, I2] = min(B); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) [m1, I1] = max(A); [m2, I2] = max(B); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) ***** test % index output, with dim A = [0 1 9; 10 7 4]; B = sym(A); [m1, I1] = min(A, [], 1); [m2, I2] = min(B, [], 1); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) [m1, I1] = min(A, [], 2); [m2, I2] = min(B, [], 2); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) [m1, I1] = max(A, [], 1); [m2, I2] = max(B, [], 1); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) [m1, I1] = max(A, [], 2); [m2, I2] = max(B, [], 2); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) ***** test % empty columns A = sym(zeros(0, 4)); [m, I] = min(A, [], 1); assert (isequal (size(m), [0 4])) assert (isequal (size(I), [0 4])) [m, I] = max(A, [], 1); assert (isequal (size(m), [0 4])) assert (isequal (size(I), [0 4])) ***** test % empty rows A = sym(zeros(3, 0)); [m, I] = min(A, [], 2); assert (isequal (size(m), [3 0])) assert (isequal (size(I), [3 0])) [m, I] = max(A, [], 2); assert (isequal (size(m), [3 0])) assert (isequal (size(I), [3 0])) ***** test % another empty case % we differ slightly from double which gives 1x0/0x1 A = sym(zeros(3, 0)); [m, I] = min(A, [], 1); assert (isempty (m)) assert (isempty (I)) A = sym(zeros(0, 3)); [m, I] = min(A, [], 2); assert (isempty (m)) assert (isempty (I)) ***** test % empty without index output A = sym(zeros(3, 0)); assert (isempty (min (A, [], 1))) assert (isempty (max (A, [], 1))) assert (isempty (min (A, [], 2))) assert (isempty (max (A, [], 2))) A = sym(zeros(0, 3)); assert (isempty (min (A, [], 1))) assert (isempty (max (A, [], 1))) assert (isempty (min (A, [], 2))) assert (isempty (max (A, [], 2))) ***** test % binary op form, one a scalar A = sym([3 1 9]); m = min(A, sym(2)); M = max(A, sym(2)); assert (isequal (m, sym([2 1 2]))) assert (isequal (M, sym([3 2 9]))) m = min(sym(2), A); M = max(sym(2), A); assert (isequal (m, sym([2 1 2]))) assert (isequal (M, sym([3 2 9]))) ***** test % binary op form, both scalar m = min(sym(1), sym(2)); M = max(sym(2), sym(2)); assert (isequal (m, sym(1))) assert (isequal (M, sym(2))) ***** test syms x y assert (isequal (children (min (x, y)), [x y])) ***** test syms x y z A = [x 1; y z]; assert (isequal (min (A, [], 1), [min(x, y) min(1, z)])) assert (isequal (max (A, [], 1), [max(x, y) max(1, z)])) assert (isequal (min (A, [], 2), [min(x, 1); min(y, z)])) assert (isequal (max (A, [], 2), [max(x, 1); max(y, z)])) ***** test syms x y positive a = min([x 2 y -6]); assert (isequal (a, -6)) a = max([x y -6]); assert (isequal (a, max(x, y))) ***** test syms x negative a = min([x 6 10]); assert (isequal (a, x)) a = max([x -2 6]); assert (isequal (a, 6)) 21 tests, 21 passed, 0 known failure, 0 skipped [inst/@sym/ellipticCK.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCK.m ***** error ellipticCK (sym (1), 2) ***** assert (double (ellipticCK (sym (1)/2)), 1.8541, 10e-5) ***** assert (double (ellipticCK (sym (101)/10)), 0.812691836806976, -3*eps) ***** assert (isequal (ellipticCK (sym (1)), sym(pi)/2)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/factor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/factor.m ***** test % n = 152862; % [p,m] = factor(n); % only works on Octave, no Matlab as of 2014a n = 330; % so we use an output without repeated factors p = factor(n); m = ones(size(p)); [ps,ms] = factor(sym(n)); assert (isequal (p, ps)) assert (isequal (m, ms)) ***** test n = sym(2)^4*13; [p,m] = factor(n); assert (isequal (p, [2 13])) assert (isequal (m, [4 1])) ***** test syms x assert( logical (factor(x^2 + 6*x + 5) == (x+5)*(x+1))) ***** test syms x f = [ x^4/2 + 5*x^3/12 - x^2/3 x^2 - 1 10]; g = [ x^2*(2*x - 1)*(3*x + 4)/12 (x+1)*(x-1) 10]; assert (isequal (factor(f), g)) ***** test % "fragile form" works A = factor(sym(124)); B = strtrim(disp(A, 'flat')); assert (strcmp (B, '2**2*31**1')) ***** error [p, m] = factor(sym('x')); ***** error [p, m] = factor(sym(42), sym('x')); ***** test % if polynomial happens to be a constant, don't attempt integer % factorization if a variable is specified f = sym(42); q = factor(f, sym('x')); assert (isequal (f, q)); 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/union.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/union.m ***** test A = sym([1 2 3]); B = sym([1 2 4]); C = union(A, B); D = sym([1 2 3 4]); assert (isequal (C, D)) ***** test % one nonsym A = sym([1 2 3]); B = [1 2 4]; C = union(A, B); D = sym([1 2 3 4]); assert (isequal (C, D)) ***** test % empty A = sym([1 2 3]); C = union(A, A); assert (isequal(C, A)) ***** test % empty input A = sym([1 2]); C = union(A, []); assert (isequal (C, sym([1 2]))) ***** test % scalar syms x assert (isequal (union([x 1], x), [1 x])) assert (isequal (union(x, x), x)) ***** test A = interval(sym(1), 3); B = interval(sym(2), 5); C = union(A, B); assert( isequal( C, interval(sym(1), 5))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/lt.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lt.m ***** test % simple x = sym(1); y = sym(1); e = x < y; assert (~logical (e)) x = sym(1); y = sym(2); e = x < y; assert (logical (e)) ***** test % mix sym and double x = sym(1); y = 1; e = x < y; assert (~logical (e)) x = sym(1); y = 2; e = x < y; assert (logical (e)) x = 1; y = sym(1); e = x < y; assert (~logical (e)) x = 1; y = sym(2); e = x < y; assert (logical (e)) ***** test % Type of the output is sym or logical? % FIXME: in current version, they are sym x = sym(1); y = sym(1); e1 = x < y; x = sym(1); y = sym(2); e2 = x < y; %assert (islogical (e1)) %assert (islogical (e2)) assert (isa (e1, 'sym')) assert (isa (e2, 'sym')) ***** test % ineq w/ symbols syms x y e = x < y; assert (~islogical (e)) assert (isa (e, 'sym')) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a < b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 < x)) assert (~logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x < 10)) ***** test % array -- scalar syms x oo a = sym([1 x oo]); b = sym(3); e = a < b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), x < 3)) assert (~logical (e(3))) ***** test % scalar -- array syms x oo a = sym(1); b = sym([2 x -oo]); e = a < b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 1 < x)) assert (~logical (e(3))) ***** test % ineq w/ nan syms x snan = sym(nan); e = x < snan; assert (~logical (e)) e = snan < x; assert (~logical (e)) b = [sym(0) x]; e = b < snan; assert (isequal (e, [false false])) ***** test % oo syms oo x e = oo < x; assert (isa (e, 'sym')) assert (strcmp (strtrim (disp (e, 'flat')), 'oo < x')) ***** test % sympy true matrix a = sym([1 3 3]); b = sym([2 4 1]); e = a < b; %assert (~isa (e, 'sym')) %assert (islogical (e)) assert (isequal (e, [true true false])) ***** test % oo, finite real variables syms oo syms z real assumeAlso(z, 'finite') e = -oo < z; assert (isequal (e, sym(true))) e = z < oo; assert (isequal (e, sym(true))) ***** test % -oo, positive var (known failure w/ sympy 0.7.6.x) syms oo syms z positive e = -oo < z; assert (logical (e)) assert (isequal (e, sym(true))) ***** test % positive syms z positive e = -1 < z; assert (isequal (e, sym(true))) ***** test syms oo z = sym('z', 'negative'); e = z < oo; assert (isequal (e, sym(true))) 14 tests, 14 passed, 0 known failure, 0 skipped [inst/@sym/numden.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/numden.m ***** error numden (sym(1), 2) ***** test syms x [n, d] = numden (1/x); assert (isequal (n, sym(1)) && isequal (d, x)) ***** test syms x y n1 = [sym(1); x]; d1 = [x; y]; [n, d] = numden (n1 ./ d1); assert (isequal (n, n1) && isequal (d, d1)) ***** test [n, d] = numden (sym(2)); assert (isequal (n, 2)); assert (isequal (d, 1)); ***** test syms x y [n, d] = numden ((x + pi)/(y + 6)); assert (isequal (n, x + pi)); assert (isequal (d, y + 6)); ***** test syms x y [n, d] = numden ((x^2 + y^2)/(x*y)); assert (isequal (n, x^2 + y^2)); assert (isequal (d, x*y)); 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/fix.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fix.m ***** test d = 3/2; x = sym('3/2'); f1 = fix(x); f2 = fix(d); assert (isequal (f1, f2)) ***** test D = [1.1 4.6; -3.4 -8.9]; A = [sym(11)/10 sym(46)/10; sym(-34)/10 sym(-89)/10]; f1 = fix(A); f2 = fix(D); assert( isequal (f1, f2)) ***** test d = sym(-11)/10; c = -1; assert (isequal (fix (d), c)) ***** test d = sym(-19)/10; c = -1; assert (isequal (fix (d), c)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/ezsurf.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezsurf.m ***** error syms u v t ezsurf(u*v, 2*u*v, 3*v*t) ***** error syms u v t ezsurf(u*v, 2*u*v, u*v*t) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/prevprime.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/prevprime.m ***** assert (isequal (prevprime(sym(3)), 2)); ***** assert (isequal (prevprime(sym(20)), 19)); ***** assert (isequal (prevprime(sym([3 5 10])), [2 3 7])); ***** error prevprime(sym(2)) ***** error prevprime(sym(-2)) ***** test % result is a sym p = prevprime(sym(3)); assert (isa (p, 'sym')) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/sin.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sin.m ***** error sin (sym(1), 2) ***** assert (isequaln (sin (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sin(x); f2 = sin(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sin(A); f2 = sin(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sin (d); f = sin (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/assume.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/assume.m ***** test syms x x = assume(x, 'positive'); a = assumptions(x); assert(strcmp(a, 'x: positive')) x = assume(x, 'even'); a = assumptions(x); assert(strcmp(a, 'x: even')) x = assume(x, 'odd'); a = assumptions(x); assert(strcmp(a, 'x: odd')) ***** error syms x x = assume (x, x); ***** error syms x x = assume (x/pi, 'integer') ***** test % multiple assumptions syms x x = assume(x, 'positive', 'integer'); [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) ***** test % multiple assumptions syms x x = assume(x, 'even', 'positive'); [tilde, a] = assumptions(x, 'dict'); assert(a{1}.even) assert(a{1}.positive) ***** test % has output so avoids workspace syms x positive x2 = x; f = sin(x); x = assume(x, 'negative'); a = assumptions(x); assert(strcmp(a, 'x: negative')) a = assumptions(x2); assert(strcmp(a, 'x: positive')) a = assumptions(f); assert(strcmp(a, 'x: positive')) ***** test % clear: has output so avoids workspace syms x positive f = 2*x; x2 = assume(x, 'clear'); assert (~ isempty (assumptions (f))); ***** test % has no output so does workspace syms x positive x2 = x; f = sin(x); assume(x, 'negative'); a = assumptions(x); assert(strcmp(a, 'x: negative')) a = assumptions(x2); assert(strcmp(a, 'x: negative')) a = assumptions(f); assert(strcmp(a, 'x: negative')) ***** test % clear: has not output so does workspace syms x positive f = 2*x; assume(x, 'clear'); assert (isempty (assumptions (f))); assert (isempty (assumptions ())); ***** test syms x positive assume (x, 'clear') assert (isempty (assumptions ())) ***** error syms x x2 = assume (x, 'clear', 'real'); ***** error syms a assume (a > 0) ***** test syms x y assume ([x y], 'real') assert (strcmp (assumptions (x), 'x: real')) assert (strcmp (assumptions (y), 'y: real')) ***** test syms x y assume ([x y], 'positive', 'even') assert (strcmp (assumptions (x), 'x: positive, even') || strcmp (assumptions (x), 'x: even, positive')) assert (strcmp (assumptions (y), 'y: positive, even') || strcmp (assumptions (y), 'y: even, positive')) ***** test % with output, original x and y are unchanged syms x y [p, q] = assume ([x y], 'real'); assert (isempty (assumptions (x))) assert (isempty (assumptions (y))) assert (strcmp (assumptions (p), 'x: real')) assert (strcmp (assumptions (q), 'y: real')) ***** test % matrix input syms a b c d assume ([a b; c d], 'real') assert (strcmp (assumptions (a), 'a: real')) assert (strcmp (assumptions (b), 'b: real')) assert (strcmp (assumptions (c), 'c: real')) assert (strcmp (assumptions (d), 'd: real')) 16 tests, 16 passed, 0 known failure, 0 skipped [inst/@sym/psi.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/psi.m ***** assert (isequal (psi (sym (1)), -eulergamma)) ***** assert (isequal (psi (1, sym (1)), sym (pi)^2/6)) ***** assert (isinf (psi (sym ('inf')))) ***** test % compare to Maple: evalf(Psi(-101/100)); maple = vpa ('100.3963127058453949545769053445198842332424', 40); us = vpa (psi (sym (-101)/100), 40); assert (abs(double(maple-us)) < 1e-39) ***** test % compare to Maple: evalf(Psi(1, 3*I-2)); maple = vpa ('-0.1651414829219882371561038184133243839778799', 40) - ... vpa ('0.1960040752985823275302034466611711263617296j', 40); us = vpa (psi (1, sym (-2) + sym(3i)), 40); assert (abs(double(maple-us)) < 1e-39) ***** test % should match @double/psi if (exist ('psi','builtin')) assert (psi (pi), double (psi (sym (pi))), -3*eps) assert (psi (100), double (psi (sym (100))), -3*eps) assert (psi (1e-3), double (psi (1/sym (1e3))), -3*eps) if (exist ('OCTAVE_VERSION', 'builtin')) % 2014a doesn't support negative or complex arguments assert (psi (-1.5), double (psi (sym (-3)/2)), -3*eps) assert (psi (-8.3), double (psi (sym (-83)/10)),-4*eps) assert (psi (2i), double (psi (sym (2i))), -3*eps) assert (psi (10i+3), double (psi (sym (10i)+3)), -3*eps) end end ***** test % @double/psi loses accuracy near the poles: note higher rel tol if (exist ('psi','builtin')) if (exist ('OCTAVE_VERSION', 'builtin')) assert (psi (-1.1), double (psi (sym (-11)/10)), -6*eps) assert (psi (-1.01), double (psi (sym (-101)/100)), -50*eps) end end ***** test if (exist ('psi','builtin')) assert (psi (1, pi), double (psi (1, sym (pi))), -3*eps) assert (psi (1, 100), double (psi (1, sym (100))), -3*eps) assert (psi (1, 1e-4), double (psi (1, 1/sym (1e4))), -3*eps) end ***** test if (exist ('psi','builtin')) assert (psi (2, pi), double (psi (2, sym (pi))), -3*eps) assert (psi (2, 1000), double (psi (2, sym (1000))), -3*eps) assert (psi (2, 1e-4), double (psi (2, 1/sym (1e4))), -3*eps) end ***** test % round trip if (exist ('psi','builtin')) syms x f = psi (x); h = function_handle (f); A = h (1.1); B = psi (1.1); assert (A, B) end 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/int.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/int.m ***** shared x,y,a syms x y a ***** assert(logical(int(cos(x)) - sin(x) == 0)) ***** assert(logical(int(cos(x),x) - sin(x) == 0)) ***** assert(logical(int(cos(x),x,0,1) - sin(sym(1)) == 0)) ***** test %% limits might be syms assert( isequal (int(cos(x),x,sym(0),sym(1)), sin(sym(1)))) assert( isequal (int(cos(x),x,0,a), sin(a))) ***** test %% other variables present assert( isequal (int(y*cos(x),x), y*sin(x))) ***** test %% limits as array assert( isequal (int(cos(x),x,[0 1]), sin(sym(1)))) assert( isequal (int(cos(x),x,sym([0 1])), sin(sym(1)))) assert( isequal (int(cos(x),x,[0 a]), sin(a))) ***** test %% no x given assert( isequal (int(cos(x),[0 1]), sin(sym(1)))) assert( isequal (int(cos(x),sym([0 1])), sin(sym(1)))) assert( isequal (int(cos(x),[0 a]), sin(a))) assert( isequal (int(cos(x),0,a), sin(a))) ***** test %% integration of const assert( isequal (int(sym(2),y), 2*y)) assert( isequal (int(sym(2)), 2*x)) assert( isequal (int(sym(2),[0 a]), 2*a)) assert( isequal (int(sym(2),0,a), 2*a)) ***** test % componentwise int of array A = [x x*x]; assert (isequal (int(A, x), [x^2/2 x^3/3])) ***** test % NonElementaryIntegral bug % https://savannah.gnu.org/bugs/index.php?46831 f = int(exp(exp(x))); f = f + 2; g = diff(f); assert (isequal (g, exp(exp(x)))) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/symprod.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symprod.m ***** error symprod (sym(1), 2, 3, 4, 5) ***** test % simple syms n assert (isequal (symprod(n, n, 1, 10), factorial(sym(10)))) assert (isequal (symprod(n, n, sym(1), sym(10)), factorial(10))) ***** test % one input syms n f = symprod (n); g = factorial (n); assert (isequal (f, g)) f = symprod (2*n); g = 2^n * factorial (n); assert (isequal (f, g)) ***** test % constant input f = symprod (sym(2)); syms x g = 2^x; assert (isequal (f, g)) ***** test % two inputs syms n f = symprod (2*n, n); g = 2^n * factorial (n); assert (isequal (f, g)) ***** test % two inputs, second is range syms n f = symprod (n, [1 6]); g = 720; assert (isequal (f, g)) f = symprod (n, [sym(1) 6]); g = 720; assert (isequal (f, g)) f = symprod (2*n, [1 6]); g = sym(2)^6*720; assert (isequal (f, g)) ***** test % three inputs, last is range syms n f = symprod (2*n, n, [1 4]); g = sym(384); assert (isequal (f, g)) f = symprod (2*n, n, [sym(1) 4]); g = sym(384); assert (isequal (f, g)) f = symprod (2, n, [sym(1) 4]); g = sym(16); assert (isequal (f, g)) ***** test % three inputs, no range syms n f = symprod (2*n, 1, 4); g = sym(384); assert (isequal (f, g)) f = symprod (5, sym(1), 3); g = sym(125); assert (isequal (f, g)) ***** test % infinite product syms a n oo zoo = sym('zoo'); assert (isequal (symprod(a, n, 1, oo), a^oo)) assert (isequal (symprod(a, n, 1, inf), a^oo)) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/setxor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/setxor.m ***** test A = sym([1 2 3]); B = sym([1 2 4]); C = setxor(A, B); D1 = sym([3 4]); D2 = sym([4 3]); assert (isequal (C, D1) || isequal (C, D2)) ***** test % one nonsym A = sym([1 2 3]); B = [1 2 4]; C = setxor(A, B); D1 = sym([3 4]); D2 = sym([4 3]); assert (isequal (C, D1) || isequal (C, D2)) ***** test % empty A = sym([1 2 3]); C = setxor(A, A); assert (isempty (C)) ***** test % empty input A = sym([1 2]); C = setxor(A, []); assert (isequal (C, A) || isequal (C, sym([2 1]))) ***** test % scalar syms x assert (isequal (setxor([x 1], x), sym(1))) assert (isempty (setxor(x, x))) ***** test A = interval(sym(1), 3); B = interval(sym(2), 5); C = setxor(A, B); D = union (interval (sym(1), 2, false, true), interval (sym(3), 5, true, false)); assert( isequal( C, D)) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/cot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cot.m ***** error cot (sym(1), 2) ***** assert (isequaln (cot (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = cot(x); f2 = cot(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cot(A); f2 = cot(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = cot (d); f = cot (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/permute.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/permute.m ***** error permute (sym(1)) ***** error permute (sym(1), 2, 3) ***** test D = round(10*rand(5,3)); A = sym(D); B = permute(A, [1 2]); assert (isequal(B, A)) B = permute(A, [2 1]); assert (isequal(B, A.')) ***** test syms x A = [1 x]; B = permute(A, [2 1]); assert (isequal(B, [1; x])) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/limit.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/limit.m ***** error limit (sym(1), 2, 3, 4, 5) ***** shared x, oo syms x oo = sym(inf); ***** assert (isa (limit(x, x, pi), 'sym')) ***** assert (isequal (limit(x, x, pi), sym(pi))) ***** assert (isequal (limit(sin(x)/x, x, 0), 1)) ***** test % left/right-hand limit assert (isequal (limit(1/x, x, 0, 'right'), oo)) assert (isequal (limit(1/x, x, 0), oo)) assert (isequal (limit(1/x, x, 0, 'left'), -oo)) assert (isequal (limit(1/x, x, oo), 0)) assert (isequal (limit(sign(x), x, 0, 'left'), -1)) assert (isequal (limit(sign(x), x, 0, 'right'), 1)) assert (isequal (limit(sign(x), x, 0, '-'), -1)) assert (isequal (limit(sign(x), x, 0, '+'), 1)) ***** test % matrix syms y A = [x 1/x x*y]; B = sym([3 sym(1)/3 3*y]); assert (isequal (limit(A, x, 3), B)) ***** test % omitting arguments syms a assert (isequal (limit(a), 0)) assert (isequal (limit(a*x+a+2), a+2)) assert (isequal (limit(a*x+a+2, 6), 7*a+2)) ***** test % constants assert (isequal (limit(sym(6)), 6)) assert (isequal (limit(sym(6), 7), 6)) assert (isequal (limit([sym(6) sym(2)], 7), [6 2])) ***** test % double constant, with sym limit a = limit (6, sym(0)); assert (isa (a, 'sym')) assert (isequal (a, sym(6))) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/erfcinv.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfcinv.m ***** error erfcinv (sym(1), 2) ***** assert (isequaln (erfcinv (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = erfcinv(x); f2 = erfcinv(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erfcinv(A); f2 = erfcinv(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erfcinv (d); f = erfcinv (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/xor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/xor.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple assert (isequal (xor(t, f), t)) assert (isequal (xor(t, t), f)) ***** test % array w = [t t f f]; z = [t f t f]; assert (isequal (xor(w, z), [f t t f])) ***** xtest % output is sym even for scalar t/f % ₣IXME: should match other bool fcns assert (isa (xor(t, f), 'sym')) ***** test % eqns syms x e = xor(x == 4, x == 5); assert (isequal (subs(e, x, [3 4 5 6]), [f t t f])) ***** test % eqns, exclusive syms x e = xor(x == 3, x^2 == 9); assert (isequal (subs(e, x, [-3 0 3]), [t f f])) ***** error xor (sym('x'), 1, 2) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/ellipticCE.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCE.m ***** error ellipticCE (sym (1), 2) ***** assert (isequal (ellipticCE (sym (0)), sym (1))) ***** assert (isequal (ellipticCE (sym (1)), sym (pi)/2)) ***** assert (double (ellipticCE (sym (pi)/4)), 1.482786927, 10e-10) ***** assert (double (ellipticCE (sym (pi)/2)), 1.775344699, 10e-10) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/nchoosek.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nchoosek.m ***** assert (isequal (nchoosek(sym(5), sym(2)), sym(10))) ***** assert (isequal (nchoosek(sym(5), 2), sym(10))) ***** assert (isequal (nchoosek(5, sym(2)), sym(10))) ***** assert (isequal (nchoosek(sym(10), 0), 1)) ***** assert (isequal (nchoosek(sym(10), -1), 0)) ***** test n = sym('n', 'nonnegative', 'integer'); assert (isequal (nchoosek (n, n), sym(1))) ***** test n = sym('n', 'integer'); q = nchoosek(n, 2); w = subs(q, n, 5); assert (isequal (w, 10)) ***** test n = sym('n', 'integer'); k = sym('k', 'integer'); q = nchoosek(n, k); w = subs(q, {n k}, {5 2}); assert (isequal (w, 10)) ***** test % negative input assert (isequal (nchoosek (sym(-2), sym(5)), sym(-6))) ***** test % complex input n = sym(1 + 3i); k = sym(5); A = nchoosek (n, k); B = gamma (n + 1) / (gamma (k + 1) * gamma (n - k + 1)); assert (double (A), double (B), -2*eps) ***** test % complex input n = sym(-2 + 3i); k = sym(1 + i); A = nchoosek (n, k); B = gamma (n + 1) / (gamma (k + 1) * gamma (n - k + 1)); assert (double (A), double (B), -2*eps) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/cosd.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosd.m ***** error cosd (sym(1), 2) ***** assert (isequaln (cosd (sym(nan)), sym(nan))) ***** test f1 = cosd (sym(1)); f2 = cosd (1); assert (double (f1), f2, -eps) ***** test D = [10 30; 110 -45]; A = sym(D); f1 = cosd (A); f2 = cosd (D); assert (double (f1), f2, -4*eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/log.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log.m ***** error log (sym(1), 2) ***** assert (isequaln (log (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = log(x); f2 = log(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = log(A); f2 = log(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = log (d); f = log (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/equationsToMatrix.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/equationsToMatrix.m ***** test syms x y z [A, B] = equationsToMatrix ([x + y - z == 1, 3*x - 2*y + z == 3, 4*x - 2*y + z + 9 == 0], [x, y, z]); a = sym ([1 1 -1; 3 -2 1; 4 -2 1]); b = sym ([1; 3; -9]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test syms x y z A = equationsToMatrix ([3*x + -3*y - 5*z == 9, 4*x - 7*y + -3*z == -1, 4*x - 9*y - 3*z + 2 == 0], [x, y, z]); a = sym ([3 -3 -5; 4 -7 -3; 4 -9 -3]); assert (isequal (A, a)) ***** test syms x y [A, B] = equationsToMatrix ([3*x + 9*y - 5 == 0, -8*x - 3*y == -2]); a = sym ([3 9; -8 -3]); b = sym ([5; -2]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test % override symvar order syms x y [A, B] = equationsToMatrix ([3*x + 9*y - 5 == 0, -8*x - 3*y == -2], [y x]); a = sym ([9 3; -3 -8]); b = sym ([5; -2]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test syms x y z [A, B] = equationsToMatrix ([x - 9*y + z == -5, -9*y*z == -5], [y, x]); a = sym ([[-9 1]; -9*z 0]); b = sym ([-5 - z; -5]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test syms x y [A, B] = equationsToMatrix (-6*x + 4*y == 5, 4*x - 4*y - 5, x, y); a = sym ([-6 4; 4 -4]); b = sym ([5; 5]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test % vertical list of equations syms x y [A, B] = equationsToMatrix ([-6*x + 4*y == 5; 4*x - 4*y - 5], [x y]); a = sym ([-6 4; 4 -4]); b = sym ([5; 5]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test syms x y [A, B] = equationsToMatrix (5*x == 1, y, x - 6*y - 7, y); a = sym ([0; 1; -6]); b = sym ([1 - 5*x; 0; -x + 7]); assert (isequal (A, a)) assert (isequal (B, b)) ***** error syms x y [A, B] = equationsToMatrix (x^2 + y^2 == 1, x - y + 1, x, y); ***** test % single equation syms x [A, B] = equationsToMatrix (3*x == 2, x); a = sym (3); b = sym (2); assert (isequal (A, a)) assert (isequal (B, b)) ***** test % single equation w/ symvar syms x [A, B] = equationsToMatrix (3*x == 2); a = sym (3); b = sym (2); assert (isequal (A, a)) assert (isequal (B, b)) ***** error syms x equationsToMatrix (3*x == 2, [x x]) 12 tests, 12 passed, 0 known failure, 0 skipped [inst/@sym/det.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/det.m ***** assert (isequal (det(sym([])), 1)) ***** test syms x y real assert (isequal (det([x 5; 7 y]), x*y-35)) ***** test syms x assert (isequal (det(x), x)) assert (isequal (det(sym(-6)), sym(-6))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/horzcat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/horzcat.m ***** test % basic syms x A = [x x]; B = horzcat(x, x); C = horzcat(x, x, x); assert (isa (A, 'sym')) assert (isa (B, 'sym')) assert (isa (C, 'sym')) assert (isequal (size(A), [1 2])) assert (isequal (size(B), [1 2])) assert (isequal (size(C), [1 3])) ***** test % basic, part 2 syms x A = [x 1]; B = [1 x]; C = [1 2 x]; assert (isa (A, 'sym')) assert (isa (B, 'sym')) assert (isa (C, 'sym')) assert (isequal (size(A), [1 2])) assert (isequal (size(B), [1 2])) assert (isequal (size(C), [1 3])) ***** test % row vectors a = [sym(1) 2]; b = [sym(3) 4]; assert (isequal ( [a b] , [1 2 3 4] )) assert (isequal ( [a 3 4] , [1 2 3 4] )) assert (isequal ( [3 4 a] , [3 4 1 2] )) assert (isequal ( [a [3 4]] , [1 2 3 4] )) assert (isequal ( [a sym(3) 4] , [1 2 3 4] )) assert (isequal ( [a [sym(3) 4]] , [1 2 3 4] )) ***** test % col vectors a = [sym(1); 2]; b = [sym(3); 4]; assert (isequal ( [a b] , [1 3; 2 4] )) assert (isequal ( [a b a] , [1 3 1; 2 4 2] )) ***** test % empty vectors v = sym(1); a = [v []]; assert (isequal (a, v)) a = [[] v []]; assert (isequal (a, v)) a = [v [] []]; assert (isequal (a, v)) ***** test % more empty vectors v = [sym(1) sym(2)]; q = sym(ones(1, 0)); assert (isequal ([v q], v)) ***** error v = [sym(1) sym(2)]; q = sym(ones(3, 0)); w = horzcat(v, q); ***** test % issue #700 A = sym ([1 2]); B = simplify (A); assert (isequal ([B A], [A B])) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/piecewise.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/piecewise.m ***** test % basic syms x real f = piecewise (abs (x) < 1, 1); assert (isnan (subs (f, -1))); assert (isequal (subs (f, 0), 1)); assert (isnan (subs (f, 1))); ***** test % heaviside syms x real f = rewrite (heaviside (x, 1 / sym (2)), 'Piecewise'); g = piecewise (x < 0, 0, x == 0, 1 / sym (2), x > 0, 1); assert (logical (simplify (f == g))); 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/besselk.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselk.m ***** test X = [1 2 3; 4 5 6]; ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; n = double(ns); A = double(besselk(ns, X)); B = besselk(n, X); assert (all (all (abs (A - B) < 2*eps*abs(A)))) ***** test % roundtrip syms x A = besselk(2, 10); q = besselk(2, x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps*abs(A)) ***** error besselk(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/find.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/find.m ***** error find (sym (1), 2, 3, 4) ***** error [x, y, z, w] = find (sym (1)) ***** test syms x y positive assert (isequal (find ([0 x 0 y]), [2 4])) assert (isequal (find ([0 x 0 y], 1), 2)) assert (isequal (find ([0 x 0 y], 1, 'first'), 2)) assert (isequal (find ([0 x 0 y], 1, 'last'), 4)) assert (isequal (find ([0 x 0 y], 2, 'last'), [2 4])) ***** test % its enough that it could be non-zero, does not have to be syms x y assert (isequal (find ([0 x+y]), 2)) ***** test % false should not be found syms x y assert (isequal (find ([x==x x==y]), 1)) assert (isequal (find ([x==y]), [])) ***** test % and/or should be treated as boolean syms x y assert (isequal (find ([or(x==y, x==2*y) x==y x==x]), 3)) ***** test % None none = pycall_sympy__ ('return None'); assert (isequal (find ([sym(0) none sym(1)]), 3)) syms x y assert (isequal (find ([x==y none x==x]), 3)) ***** test % two output syms x y A = [x 0 0; x+y 5 0]; [i, j] = find (A); assert (isequal (i, [1; 2; 2])) assert (isequal (j, [1; 1; 2])) ***** test % three output syms x y A = [x 0 0; x+y 5 0]; [i, j, v] = find (A); assert (isequal (i, [1; 2; 2])) assert (isequal (j, [1; 1; 2])) assert (isequal (v, [x; x+y; sym(5)])) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/sign.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sign.m ***** error sign (sym(1), 2) ***** assert (isequaln (sign (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sign(x); f2 = sign(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sign(A); f2 = sign(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sign (d); f = sign (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/sinhint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinhint.m ***** error sinhint (sym(1), 2) ***** xtest assert (isequaln (sinhint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (sinhint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sinhint(x); f2 = 1.057250875375728514572; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sinhint(A); f2 = 1.057250875375728514572; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sinhint (d); f = sinhint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/asind.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asind.m ***** error asind (sym(1), 2) ***** assert (isequaln (asind (sym(nan)), sym(nan))) ***** test f1 = asind (sym(1)/2); f2 = asind (1/2); assert (double (f1), f2, -eps) ***** test D = [1 2; 3 4]/4; A = sym([1 2; 3 4])/4; f1 = asind (A); f2 = asind (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/sinc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinc.m ***** error sinc (sym(1), 2) ***** assert (isequaln (sinc (sym(nan)), sym(nan))) ***** assert (isequal (sinc (sym(0)), sym(1))) ***** assert (isequal (sinc (sym(1)), sym(0))) ***** assert (isequal (sinc (-sym(1)), sym(0))) ***** assert (double (sinc (sym(pi))), sinc (pi), -10*eps) ***** test A = [-sym(1)/2 sym(1)/2 pi; -sym(7)/2 sym(71)/2 sym(101)/3]; D = double (A); assert (sinc (D), double (sinc (A)), -200*eps) ***** test A = [sym(51)/2 sym(1001)/3 sym(10001)/3 sym(100001)/3]; D = double (A); assert (sinc (D), double (sinc (A)), 1e-10) ***** test % round trip syms x A = sinc (1); f = sinc (x); h = function_handle (f); B = h (1); assert (A, B, -eps) ***** test % round trip syms x f = sinc (x); h = function_handle (f); A = sinc (1.5); B = h (1.5); assert (A, B, -eps) ***** test syms x h = function_handle (sinc (x)); A = double (sinc (sym (12)/10)); B = h (1.2); C = sinc (1.2); assert (A, B, -eps) assert (A, C, -eps) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/curl.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/curl.m ***** error curl([sym(1) 2 3], 42, 42) ***** shared x,y,z syms x y z ***** test % double const f = [1 2 3]; g = [sym(0); 0; 0]; assert (isequal (curl(f, [x y z]), g)) % should fail, calls @double: curl(f, {x y z}), g)) ***** test % div curl always 0 v = [exp(x); x*y; sin(z)]; g = curl(v); a = divergence(g, [x y z]); assert (isAlways (a == sym(0))) assert (isa (a, 'sym')) g = curl(v, [x y z]); a = divergence(g, [x y z]); assert (isAlways (a == sym(0))) assert (isa (a, 'sym')) ***** test % div curl always 0 v = [exp(x); erfc(x*y); sin(exp(x)*y+sinh(z))]; g = curl(v, [x y z]); a = divergence(g, [x y z]); assert (isAlways (a == sym(0))) assert (isa (a, 'sym')) ***** test % curl grad is vec zero f = sin(exp(x)*y+sinh(z)); g = curl(gradient(f, [x,y,z])); assert (isequal (g, sym([0;0;0]))) ***** test % 2d fcn in 2d/3d u = sin(exp(x)*y); v = x^2*y^3; vorticity2d = diff(v,x) - diff(u,y); omega = curl([u; v; 0], [x y z]); assert (isequal (omega, [0; 0; vorticity2d])) ***** error <3D vector> curl([sym(1) 2 3 4]) ***** error curl([sym(1) 2 3], {sym('x') sym('y') sym('z') sym('t')}) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/chol.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chol.m ***** error chol (sym ([1 2; 3 4])); ***** error chol (sym ([1 2; 3 4; 5 6])); ***** test A = chol(hilb(sym(2))); B = [[1 0]; sym(1)/2 sqrt(sym(3))/6]; assert( isequal( A, B )) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/nnz.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nnz.m ***** assert (nnz (sym ([1])) == 1) ***** assert (nnz (sym ([0])) == 0) ***** assert (nnz (sym ([])) == 0) ***** assert (nnz (sym ([1 0; 0 3])) == 2) ***** test syms x assert (nnz ([x 0]) == 1) ***** assert (nnz (sym (true)) == 1) ***** assert (nnz (sym (false)) == 0) ***** assert (nnz (sym (inf)) == 1) ***** assert (nnz (sym (nan)) == 1) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/besselyn.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselyn.m ***** test % roundtrip syms x A = double(besselyn(sym(2), sym(10))); q = besselyn(sym(2), x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps) ***** error yn(sym('x')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/private_disp_name.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/private_disp_name.m ***** test syms x s = private_disp_name(x, 'x'); assert (strcmp (s, 'x')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/prod.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/prod.m ***** error prod (sym(1), 2, 3) ***** error prod (sym(1), 42) ***** shared x,y,z syms x y z ***** assert (isequal (prod (x), x)) ***** assert (isequal (prod ([x y z]), x*y*z)) ***** assert (isequal (prod ([x; y; z]), x*y*z)) ***** assert (isequal (prod ([x y z], 1), [x y z])) ***** assert (isequal (prod ([x y z], 2), x*y*z)) ***** shared a,b b = [1 2; 3 4]; a = sym(b); ***** assert (isequal (prod(a), prod(b))) ***** assert (isequal (prod(a,1), prod(b,1))) ***** assert (isequal (prod(a,2), prod(b,2))) ***** test % weird inputs a = prod('xx', sym(1)); assert (isequal (a, sym('xx'))) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/columns.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/columns.m ***** test a = sym([1 2 3]); assert (columns(a) == 3) ***** test a = sym([1; 2]); assert (columns(a) == 1) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/unique.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/unique.m ***** test A = sym([1 2 3 3 5 3 2 6 5]); B = sym([1 2 3 5 6]); assert (isequal (unique(A), B)) ***** test syms x y A = [1 2 3 3 4 5 5 6 7 7 x x y y]; B = [1 2 3 4 5 6 7 x y]; assert (isequal (unique(A), B)) ***** test syms x assert (isequal (unique(x), x)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/hilb.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hilb.m ***** test A = hilb (sym(3)); B = [sym(1) sym(1)/2 sym(1)/3; sym(1)/2 sym(1)/3 sym(1)/4; sym(1)/3 sym(1)/4 sym(1)/5]; assert (isequal (A, B)) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/cond.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cond.m ***** test A = [1 2; 3 4]; B = sym(A); k1 = cond(A); k2 = cond(B); k3 = double(k2); assert (k1 - k3 <= 100*eps) ***** test % matrix with symbols syms x positive A = [x 0; sym(0) 2*x]; k1 = cond(A); assert (isequal (k1, sym(2))) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/hessian.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hessian.m ***** error hessian (sym(1), 2, 3) ***** error hessian ([sym(1) sym(2)]) ***** shared x,y,z syms x y z ***** test % 1D f = x^2; assert (isequal (hessian(f), diff(f,x,x))) assert (isequal (hessian(f,{x}), diff(f,x,x))) assert (isequal (hessian(f,x), diff(f,x,x))) ***** test % const f = sym(1); g = sym(0); assert (isequal (hessian(f), g)) assert (isequal (hessian(f,x), g)) ***** test % double const f = 1; g = sym(0); assert (isequal (hessian(f,x), g)) ***** test % linear f = 42*x; g = sym(0); assert (isequal (hessian(f), g)) assert (isequal (hessian(f,x), g)) ***** test % linear f = 42*x - sym('a')*y; g = [0 0; 0 0]; assert (isequal (hessian(f, {x y}), g)) ***** test % 2d f = x*cos(y); g = [0 -sin(y); -sin(y) -f]; assert (isequal (hessian(f), g)) assert (isequal (hessian(f, {x y}), g)) ***** test % 3d f = x*cos(z); Hexp = [0 0 -sin(z); sym(0) 0 0; -sin(z) 0 -f]; H = hessian(f, {x y z}); assert (isequal (H, Hexp)) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/chebyshevU.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chebyshevU.m ***** error chebyshevU (sym(1)) ***** error chebyshevU (sym(1), 2, 3) ***** assert (isequaln (chebyshevU (2, sym(nan)), sym(nan))) ***** shared x syms x ***** assert(isequal(chebyshevU(0, x), sym(1))) ***** assert(isequal(chebyshevU(1, x), 2*x)) ***** assert(isequal(chebyshevU(2, x), 4*x*x - 1)) ***** assert(isequal(chebyshevU([0 1 2], x), [sym(1) 2*x (4*x*x-1)])) ***** test % round trip syms n z f = chebyshevU (n, z); h = function_handle (f, 'vars', [n z]); A = h (1.1, 2.2); B = chebyshevU (1.1, 2.2); assert (A, B) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/taylor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/taylor.m ***** test syms x f = exp(x); expected = 1 + x + x^2/2 + x^3/6 + x^4/24 + x^5/120; assert (isequal (taylor(f), expected)) assert (isequal (taylor(f,x), expected)) assert (isequal (taylor(f,x,0), expected)) ***** test syms x f = exp(x); expected = 1 + x + x^2/2 + x^3/6 + x^4/24; assert (isequal (taylor(f,'order',5), expected)) assert (isequal (taylor(f,x,'order',5), expected)) assert (isequal (taylor(f,x,0,'order',5), expected)) ***** test % key/value ordering doesn't matter syms x f = exp(x); g1 = taylor(f, 'expansionPoint', 1, 'order', 3); g2 = taylor(f, 'order', 3, 'expansionPoint', 1); assert (isequal (g1, g2)) ***** test syms x f = x^2; assert (isequal (taylor(f,x,0,'order',0), 0)) assert (isequal (taylor(f,x,0,'order',1), 0)) assert (isequal (taylor(f,x,0,'order',2), 0)) assert (isequal (taylor(f,x,0,'order',3), x^2)) assert (isequal (taylor(f,x,0,'order',4), x^2)) ***** test syms x y f = exp(x)+exp(y); expected = 2 + x + x^2/2 + x^3/6 + x^4/24 + y + y^2/2 + y^3/6 + y^4/24; assert (isAlways(taylor(f,[x,y],'order',5)== expected)) assert (isAlways(taylor(f,[x,y],[0,0],'order',5) == expected)) ***** test % key/value ordering doesn't matter syms x f = exp(x); g1 = taylor(f, 'expansionPoint', 1, 'order', 3); g2 = taylor(f, 'order', 3, 'expansionPoint', 1); assert (isequal (g1, g2)) ***** test syms x f = x^2; assert (isequal (taylor(f,x,0,'order',0), 0)) assert (isequal (taylor(f,x,0,'order',1), 0)) assert (isequal (taylor(f,x,0,'order',2), 0)) assert (isequal (taylor(f,x,0,'order',3), x^2)) assert (isequal (taylor(f,x,0,'order',4), x^2)) ***** test % syms for a and order syms x f = x^2; assert (isequal (taylor(f,x,sym(0),'order',sym(2)), 0)) assert (isequal (taylor(f,x,sym(0),'order',sym(4)), x^2)) ***** test syms x y f = exp (x^2 + y^2); expected = 1+ x^2 +y^2 + x^4/2 + x^2*y^2 + y^4/2; assert (isAlways(taylor(f,[x,y],'order',5)== expected)) assert (isAlways(taylor(f,[x,y],'expansionPoint', [0,0],'order',5) == expected)) ***** test syms x y f = sqrt(1+x^2+y^2); expected = 1+ x^2/2 +y^2/2 - x^4/8 - x^2*y^2/4 - y^4/8; assert (isAlways(taylor(f,[x,y],'order',6)== expected)) assert (isAlways(taylor(f,[x,y],'expansionPoint', [0,0],'order',5) == expected)) ***** test syms x y f = sin (x^2 + y^2); expected = sin(sym(1))+2*cos(sym(1))*(x-1)+(cos(sym(1))-2*sin(sym(1)))*(x-1)^2 + cos(sym(1))*y^2; assert (isAlways(taylor(f,[x,y],'expansionPoint', [1,0],'order',3) == expected)) ***** test % key/value ordering doesn't matter syms x y f = exp(x+y); g1 = taylor(f, 'expansionPoint',1, 'order', 3); g2 = taylor(f, 'order', 3, 'expansionPoint',1); assert (isAlways(g1== g2)) ***** test syms x y f = x^2 + y^2; assert (isAlways(taylor(f,[x,y],[0,0],'order',0)== sym(0) )) assert (isAlways(taylor(f,[x,y],[0,0],'order',1)== sym(0) )) assert (isAlways(taylor(f,[x,y],[0,0],'order',2)== sym(0) )) assert (isAlways(taylor(f,[x,y],[0,0],'order',3)== sym(x^2 + y^2))) assert (isAlways(taylor(f,[x,y],[0,0],'order',4)== sym(x^2 + y^2))) ***** test % expansion point syms x a f = x^2; g = taylor(f,x,2); assert (isequal (simplify(g), f)) assert (isequal (g, 4*x+(x-2)^2-4)) g = taylor(f,x,a); assert (isequal (simplify(g), f)) ***** test % wrong order-1 series with nonzero expansion pt: % upstream bug https://github.com/sympy/sympy/issues/9351 syms x g = x^2 + 2*x + 3; h = taylor (g, x, 4, 'order', 1); assert (isequal (h, 27)) ***** test syms x y z g = x^2 + 2*y + 3*z; h = taylor (g, [x,y,z], 'order', 4); assert (isAlways(h == g)) ; ***** test syms x y z g = sin(x*y*z); h = taylor (g, [x,y,z], 'order', 4); assert (isAlways(h == x*y*z)) ; ***** error syms x y taylor(0, [x, y], [1, 2, 3]); 18 tests, 18 passed, 0 known failure, 0 skipped [inst/@sym/ismember.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ismember.m ***** assert (ismember (2, interval(sym(0),2))) ***** assert (~ismember (3, interval(sym(0),2))) ***** test % something in a matrix syms x A = [1 x; sym(pi) 4]; assert (ismember (sym(pi), A)) assert (ismember (x, A)) assert (~ismember (2, A)) ***** test % set syms x S = finiteset(2, sym(pi), x); assert (ismember (x, S)) ***** test % set with positive symbol syms p positive S = finiteset(2, sym(pi), p); assert (~ismember (-1, S)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/matlabFunction.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/matlabFunction.m ***** test % autodetect inputs syms x y s = warning('off', 'OctSymPy:function_handle:nocodegen'); h = matlabFunction(2*x*y, x+y); warning(s) [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/length.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/length.m ***** test a = sym([1 2 3]); assert(length(a) == 3); ***** test % 2D array a = sym([1 2 3; 4 5 6]); assert(length(a) == 3); ***** test % empty a = sym([]); assert(length(a) == 0); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/lu.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lu.m ***** test % scalar [l, u, p] = lu(sym(6)); assert (isequal (l, sym(1))) assert (isequal (u, sym(6))) assert (isequal (p, sym(1))) syms x [l, u, p] = lu(x); assert (isequal (l*u, p*x)) [l, u] = lu(x); assert (isequal (l*u, x)) ***** test % perm A = sym(fliplr(2*eye(3))); [L, U, P] = lu(A); assert (isequal (L*U, P*A)) [L, U, P] = lu(A, 'matrix'); assert (isequal (L*U, P*A)) [L, U, p] = lu(A, 'vector'); assert (isequal (L*U, A(p,:))) [L, U] = lu(A); assert (isequal (L*U, A)) ***** test % p is col vectpr A = sym([0 2; 3 4]); [L, U, p] = lu(A, 'vector'); assert(iscolumn(p)) ***** test % simple matrix A = [1 2; 3 4]; B = sym(A); [L, U, P] = lu(B); assert (isequal (L*U, P*B)) assert (isequal (U(2,1), sym(0))) % needs pivot A = [0 2; 3 4]; B = sym(A); [L, U, P] = lu(B); [Ld, Ud, Pd] = lu(A); assert (isequal (L*U, P*A)) assert (isequal (U(2,1), sym(0))) % matches regular LU assert ( max(max(double(L)-Ld)) <= 10*eps) assert ( max(max(double(U)-Ud)) <= 10*eps) assert ( isequal (P, Pd)) ***** test % rectangular A = sym([1 2; 3 4; 5 6]); [L, U] = lu (A); assert (isequal (L*U, A)) ***** test % rectangular A = sym([1 2 3; 4 5 6]); [L, U] = lu (A); assert (isequal (L*U, A)) ***** test % rectangular, repeated row A = sym([1 2 3; 2 4 6]); [L, U] = lu (A); assert (isequal (L*U, A)) ***** test % rectangular, needs permutation A = sym([0 0 0; 1 2 3]); [L, U] = lu (A); assert (isequal (L*U, A)) assert (~isequal (tril (L), L)) [L, U, P] = lu (A); assert (isequal (L*U, P*A)) assert (isequal (tril (L), L)) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/cross.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cross.m ***** error cross (sym(1), 2, 3) ***** test a = sym([1; 0; 0]); b = sym([0; 1; 0]); c = cross(a, b); assert (isequal (c, sym([0; 0; 1]))) ***** test syms x a = sym([x; 0; 0]); b = sym([0; 1; 0]); c = cross(a, b); assert (isequal (c, sym([0; 0; x]))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/sech.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sech.m ***** error sech (sym(1), 2) ***** assert (isequaln (sech (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sech(x); f2 = sech(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sech(A); f2 = sech(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sech (d); f = sech (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/colon.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/colon.m ***** test a = sym(1):5; b = sym(1:5); assert(isequal(a,b)); a = 1:sym(5); b = sym(1:5); assert(isequal(a,b)); ***** test a = 2:sym(2):8; b = sym(2:2:8); assert(isequal(a,b)); ***** test a = sym(10):-2:-4; b = sym(10:-2:-4); assert(isequal(a,b)); ***** test % symbolic intervals p = sym(pi); L = 0:p/4:p; assert(isa(L,'sym')); assert(isequal(L, [0 p/4 p/2 3*p/4 p])); ***** test % mixed symbolic and double intervals p = sym(pi); s = warning ('off', 'OctSymPy:sym:rationalapprox'); L = 0.1:(sym(pi)/3):2.3; warning(s) assert(isa(L,'sym')); t = sym(1)/10; assert(isequal(L, [t p/3+t 2*p/3+t])); ***** error syms x; a = 0:x; ***** error syms x; a = 1:x; 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/factorial.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/factorial.m ***** error factorial (sym(1), 2) ***** xtest assert (isequaln (factorial (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (factorial (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = factorial(x); f2 = factorial(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = factorial(A); f2 = factorial(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = factorial (d); f = factorial (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/atand.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atand.m ***** error atand (sym(1), 2) ***** assert (isequaln (atand (sym(nan)), sym(nan))) ***** test f1 = atand (sym(1)/2); f2 = atand (1/2); assert (double (f1), f2, -eps) ***** test D = [1 2; 3 4]/4; A = sym([1 2; 3 4])/4; f1 = atand (A); f2 = atand (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/collect.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/collect.m ***** test syms x y z f = [x*y + x - 3 + 2*x^2 - z*x^3 + x^3]; assert (logical (collect (f,x) == ((x^3)*(1 - z) + 2*(x^2) + x*(y + 1) - 3))) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/max.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/max.m ***** test % simple assert (isequal (max([sym(10) sym(11)]), sym(11))) ***** test syms x y assert (isequal (children (max (x, y)), [x y])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/ifourier.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ifourier.m ***** error ifourier (sym(1), 2, 3, 4) ***** test % matlab SMT compat syms t r u x w Pi=sym('pi'); assert(logical( ifourier(exp(-abs(w))) == 1/(Pi*(x^2 + 1)) )) assert(logical( ifourier(exp(-abs(x))) == 1/(Pi*(t^2 + 1)) )) assert(logical( ifourier(exp(-abs(r)),u) == 1/(Pi*(u^2 + 1)) )) assert(logical( ifourier(exp(-abs(r)),r,u) == 1/(Pi*(u^2 + 1)) )) ***** test % basic syms x w Pi=sym('pi'); assert(logical( ifourier(exp(-w^2/4)) == 1/(sqrt(Pi)*exp(x^2)) )) assert(logical( ifourier(sqrt(Pi)/exp(w^2/4)) == exp(-x^2) )) ***** test % Dirac delta tests syms x w Pi=sym('pi'); assert(logical( ifourier(dirac(w-2)) == exp(2*1i*x)/(2*Pi) )) assert (logical( ifourier(sym(2), w, x) == 2*dirac(x) )) ***** test % advanced test syms x w c d Pi=sym('pi'); f=(Pi*(dirac(x-c)+dirac(x+c))+2*Pi*1i*(-dirac(x+3*d)+dirac(x-3*d))+2/(x^2+1))/(2*Pi); assert(logical( simplify(ifourier(cos(c*w)+2*sin(3*d*w)+exp(-abs(w)))-f) == 0 )) ***** xtest % Inverse Fourier transform cannot recover non-smooth functions % SymPy cannot evaluate correctly?? syms x w assert(logical( ifourier(2/(w^2 + 1)) == exp(-abs(x)) )) assert(logical( ifourier(2/(w^2 + 1)) == heaviside(x)/exp(x) + heaviside(-x)*exp(x) )) assert(logical( ifourier(-(w*4)/(w^4 + 2*w^2 + 1) )== -x*exp(-abs(x))*1i )) assert(logical( ifourier(-(w*4)/(w^4 + 2*w^2 + 1) )== -x*(heaviside(x)/exp(x) + heaviside(-x)*exp(x))*1i )) !!!!! known failure assert (logical (ifourier (2 / (w ^ 2 + 1)) == exp (-abs (x)))) failed ***** error ifourier (sym('k', 'positive')*sym('k')) ***** test % SMT compact, prefers k over symvar syms k x y assert (isequal (ifourier(y*exp(-k^2/4)), y/sqrt(sym(pi))*exp(-x^2))) 8 tests, 7 passed, 1 known failure, 0 skipped [inst/@sym/orth.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/orth.m ***** test A = [1 2; 3 6]; K = orth(A); L = orth(sym(A)); assert (isequal (size(L), [2 1])) dif1 = abs (double(L) - K); dif2 = abs (double(L) + K); assert (all (dif1 < 1e-15) || all (dif2 < 1e-15)) ***** test A = [1; 3]; K = orth(A); L = orth(sym(A)); assert (isequal (size(L), [2 1])) dif1 = abs (double(L) - K); dif2 = abs (double(L) + K); assert (all (dif1 < 1e-16) || all (dif2 < 1e-16)) ***** test A = sym([1 2; 3 4]); L = orth(sym(A)); assert (isequal (size(L), [2 2])) v = L(:, 1); w = L(:, 2); assert (isAlways (v' * v == 1)) assert (isAlways (w' * w == 1)) assert (isAlways (v' * w == 0)) ***** test A = sym([1 1; 1 0; 1 0]); L = orth(sym(A)); assert (isequal (size(L), [3 2])) v = L(:, 1); w = L(:, 2); assert (isAlways (v' * v == 1)) assert (isAlways (w' * w == 1)) assert (isAlways (v' * w == 0)) % y and z components must be equal assert (isAlways (v(2) == v(3))) assert (isAlways (w(2) == w(3))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/mpower.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mpower.m ***** test syms x assert(isequal(x^(sym(4)/5), x.^(sym(4)/5))) ***** test % integer powers of scalars syms x assert (isequal (x^2, x*x)) assert (isequal (x^sym(3), x*x*x)) ***** test % array ^ integer syms x y A = [x 2; y 4]; assert (isequal (A^2, A*A)) assert (isequal (simplify(A^3 - A*A*A), [0 0; 0 0])) ***** test % array ^ rational Ad = [1 2; 0 3]; A = sym(Ad); B = A^(sym(1)/3); Bd = Ad^(1/3); assert (max(max(abs(double(B) - Bd))) < 1e-14) ***** test % non-integer power A = sym([1 2; 0 3]); B = A^pi; C = [1 -1+3^sym(pi); 0 sym(3)^pi]; assert (isequal (B, C)) ***** test % matpow syms n A = sym([1 2; 3 4]); B = A^n; C = 10 + B + B^2; D = subs(C, n, 1); E = 10 + A + A^2; assert (isequal (simplify(D), simplify(E))) ***** test % matpow, sub in zero gives identity A = sym([1 2; 0 3]); syms n; B = A^n; C = subs(B, n, 1); assert (isequal (C, A)) C = subs(B, n, 0); assert (isequal (C, sym(eye(2)))) ***** xtest % scalar^array (e.g., defined by matrix exponential) not implemented in SymPy? % on 1.0 < SymPy <= 1.5.1, you can form the expression but still cannot eval syms x A = [1 2; 3 4]; B = x^A; assert (strcmp (regexprep (disp (B, 'flat'), '\s+', ''), 'x**Matrix([[1,2],[3,4]])')) % sub in and compare to double Bs = subs(B, x, sym(3)/2); D1 = double(Bs); D2 = (3/2)^[1 2; 3 4]; assert (max(max(abs(D1 - D2))) < 1e-14) !!!!! known failure Python exception: TypeError: unsupported operand type(s) for ** or pow(): 'Symbol' and 'MutableDenseMatrix' occurred at line 2 of the Python code block: return x**y ***** error A = sym([1 2; 3 4]); B = A^A; 9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/has.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/has.m ***** shared A, x, y syms x y A = [sym(pi) 2*sym(pi); x*y x+y]; ***** assert (isequal (has(A, x), [false false; true true])); ***** assert (isequal (has(A, x+y), [false false; false true])); ***** assert (isequal (has(A, 2), [false true; false false])); ***** assert (isequal (has(A, sym(pi)), [true true; false false])); 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/formula.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/formula.m ***** test syms x assert (isequal (formula(x), x)) assert (isequal (formula(2*x), 2*x)) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/repmat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/repmat.m ***** test % simple syms x A = [x x x; x x x]; assert (isequal (repmat(x, 2, 3), A)) ***** test % block cf double A = [1 2 3; 4 5 6]; B = sym(A); C = repmat(A, 2, 3); D = repmat(B, 2, 3); assert (isequal (C, D)) ***** test % empty A = repmat(sym([]), 2, 3); assert (isempty(A)); assert (isequal (size(A), [0 0])) ***** test % more empties A = repmat(sym(pi), [0 0]); assert (isequal (size(A), [0 0])) A = repmat(sym(pi), [0 3]); assert (isequal (size(A), [0 3])) A = repmat(sym(pi), [2 0]); assert (isequal (size(A), [2 0])) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/mldivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mldivide.m ***** test % scalar syms x assert (isa( x\x, 'sym')) assert (isequal( x\x, sym(1))) assert (isa( 2\x, 'sym')) assert (isa( x\2, 'sym')) ***** test % scalar \ matrix: easy, no system D = 2*[0 1; 2 3]; A = sym(D); assert (isequal ( 2 \ A , D/2 )) assert (isequal ( sym(2) \ A , D/2 )) ***** test % singular matrix A = sym([1 2; 2 4]); b = sym([5; 10]); x = A \ b; syms c1 y = [-2*c1 + 5; c1]; assert (isequal (x, y)) ***** test % singular matrix, mult RHS A = sym([1 2; 2 4]); B = sym([[5; 10] [0; 2] [0; 0]]); x = A \ B; syms c1 c5 y = [-2*c1 + 5 nan -2*c5; c1 nan c5]; assert (isequaln (x, y)) ***** warning % vpa, nearly singular matrix A = sym([1 2; 2 4]); A(1,1) = vpa('1.001'); b = sym([1; 2]); x = A \ b; y = [sym(0); vpa('0.5')]; assert (isequal (x, y)) ***** warning % vpa, singular rhs A = sym([1 2; 2 4]); b = [vpa('1.01'); vpa('2')]; x = A \ b; assert (all(isnan(x))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/erf.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erf.m ***** error erf (sym(1), 2) ***** assert (isequaln (erf (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = erf(x); f2 = erf(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erf(A); f2 = erf(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erf (d); f = erf (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isprime.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isprime.m ***** assert (isprime (sym(5))) ***** assert (~isprime (sym(4))) ***** assert (~isprime (sym(0))) ***** assert (~isprime (sym(1))) ***** test a = [5 7 6; 1 2 337]; assert (isequal (isprime (a), [true true false; false true true])) ***** assert (~isprime(sym(-4))) ***** assert (~isprime(sym(4i))) ***** assert (~isprime(sym(3)/5)) ***** error isprime(sym('x')); 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/jordan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/jordan.m ***** test % basic A = sym ([2 1 0 0; 0 2 1 0; 0 0 3 0; 0 1 -1 3]); [V, J] = jordan (A); assert (isequal (inv (V) * A * V, J)); assert (isequal (J, sym ([2 1 0 0; 0 2 0 0; 0 0 3 0; 0 0 0 3]))) % the first 2 generalized eigenvectors form a cycle assert (isequal ((A - J(1, 1) * eye (4)) * V(:, 1), zeros (4, 1))); assert (isequal ((A - J(2, 2) * eye (4)) * V(:, 2), V(:, 1))); % the last 2 generalized eigenvectors are eigenvectors assert (isequal ((A - J(3, 3) * eye (4)) * V(:, 3), zeros (4, 1))); assert (isequal ((A - J(4, 4) * eye (4)) * V(:, 4), zeros (4, 1))); ***** test % scalars assert (isequal (jordan (sym (-10)), sym (-10))); assert (isequal (jordan (sym ('x')), sym ('x'))); ***** test % diagonal matrices A = diag (sym ([6 6 7])); [V1, D] = eig (A); [V2, J] = jordan (A); assert (isequal (V1, V2)); assert (isequal (D, J)); ***** test % matrices of unknown entries A = [sym('a') sym('b'); sym('c') sym('d')]; [V, D] = eig (A); J = jordan (A); assert (isequal (simplify (D), simplify (J))); ***** test % matrices of mixed entries A = [sym('x')+9 sym('y'); sym(0) 6]; [V, D] = eig (A); J = jordan (A); assert (isequal (simplify (D), simplify (J))); 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/besselj.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselj.m ***** test X = [1 2 3; 4 5 6]; ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; n = double(ns); A = double(besselj(ns, X)); B = besselj(n, X); assert (all (all (abs (A - B) < 50*eps*abs(A)))) ***** test % roundtrip syms x A = besselj(2, 10); q = besselj(2, x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps*abs(A)) ***** error besselj(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/heaviside.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/heaviside.m ***** error heaviside (sym(1), 2, 3) ***** assert (isequal (heaviside (sym(1)), sym(1))) ***** assert (isequal (heaviside (-sym(1)), sym(0))) ***** assert (double (heaviside (1)), heaviside (1)) ***** test D = [1 -1; -10 20]; A = sym(D); assert (double (heaviside (A)), heaviside (D)) ***** test H0 = sym([1 -2 0; 3 0 pi]); A = heaviside (sym(0), H0); assert (isequal (A, H0)) ***** test A = heaviside ([-1 0 1], sym(1)/2); assert (isequal (A, [0 sym(1)/2 1])) ***** test A = heaviside ([-1 0 1], sym(1)/2); assert (isequal (A, [0 sym(1)/2 1])) ***** assert (isequaln (heaviside (sym(nan)), sym(nan))) ***** test assert (isequaln (heaviside (sym(nan), sym(nan)), sym(nan))) assert (isequaln (heaviside (0, sym(nan)), sym(nan))) assert (isequaln (heaviside (2, sym(nan)), sym(1))) assert (isequaln (heaviside (-2, sym(nan)), sym(0))) ***** test % round trip syms x A = heaviside (1); f = heaviside (x); h = function_handle (f); B = h (1); assert (A, B, -eps) ***** test % round trip syms x h0 f = heaviside (x, h0); h = function_handle (f, 'vars', {x h0}); A = heaviside (1, 1/2); B = h (1, 1/2); assert (A, B, -eps) A = heaviside (0, 1/2); B = h (0, 1/2); assert (A, B, -eps) 12 tests, 12 passed, 0 known failure, 0 skipped [inst/@sym/fliplr.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fliplr.m ***** test % simple syms x A = [x 2; sym(pi) x]; B = [2 x; x sym(pi)]; assert (isequal (fliplr(A), B)) ***** test % simple, odd # cols syms x A = [x 2 sym(pi); x 1 2]; B = [sym(pi) 2 x; 2 1 x]; assert (isequal (fliplr(A), B)) ***** test % scalar syms x assert (isequal (fliplr(x), x)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/resize.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/resize.m ***** test B = sym([1 0 0; 0 0 0]); assert (isequal (resize (sym(1), 2, 3), B)) assert (isequal (resize (sym(1), [2 3]), B)) ***** test B = sym([1 0; 0 0]); assert (isequal (resize (sym(1), 2), B)) ***** test A = sym([pi 2; 3 4]); assert (isequal (resize (A, 1), sym(pi))) ***** assert (isequal (size (resize (sym(1), 0, 0)), [0 0])) ***** assert (isequal (size (resize (sym(1), 6, 0)), [6 0])) ***** assert (isequal (size (resize (sym(1), 0, 3)), [0 3])) ***** error resize (sym(1)) ***** error resize (sym(1), 2, 3, 4) ***** error resize (sym(1), [2 3 4]) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/horner.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/horner.m ***** error horner (sym(1), 2, 3) ***** assert (isAlways (horner(sym(1)) == 1)) ***** test syms x assert (isAlways (horner(x) == x)) ***** test syms x a p = a^2 + a*x + 2*a + 2*x; assert (isequal (horner (p, a), a*(a+x+2) + 2*x)) q = a^2 + 2*a + x*(a + 2); assert (isequal (horner (p, x), q)) assert (isequal (horner (p), q)) ***** test syms x p = poly2sym ([2 4 6 8], x); q = horner (p); assert (isAlways (p == q)) assert (isAlways (horner(2*x^3 + 4*x^2 + 6*x + 8) == q)) ***** test % non-sym input syms x assert (isequal (horner(6, x), sym(6))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/degree.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/degree.m ***** error degree (sym(1), 2, 3) ***** test syms x assert (isequal (degree(x^3), 3)) assert (isequal (degree(x^3 + 6), 3)) ***** test % specify variable syms x y p = x^2 + y*x + 1; assert (isequal (degree(p), 2)) assert (isequal (degree(p, x), 2)) assert (isequal (degree(p, y), 1)) ***** test syms x a oo assert (isequal (degree(x^3, a), 0)) assert (isequal (degree(sym(1), a), 0)) assert (isequal (degree(sym(0), a), -oo)) ***** xtest % constant inputs syms oo assert (isequal (degree(sym(1)), 0)) assert (isequal (degree(sym(0)), -oo)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/erfinv.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfinv.m ***** error erfinv (sym(1), 2) ***** assert (isequaln (erfinv (sym(nan)), sym(nan))) ***** shared x, d d = 1/2; x = sym('1/2'); ***** test f1 = erfinv(x); f2 = erfinv(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erfinv(A); f2 = erfinv(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erfinv (d); f = erfinv (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/arg.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/arg.m ***** test syms x assert (isequal (angle (x), arg (x))); 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/conj.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/conj.m ***** test a = sym(6); b = sym(5i); assert (isequal (conj(a), a)) assert (isequal (conj(b), -b)) assert (isequal (conj(a+b), a-b)) ***** test syms x assert (isequal (conj(conj(x)), x)) ***** test syms x real assert (isequal (conj(x), x)) ***** test % array syms x A = [x 6+1i; sym(1) x+2i]; B = [conj(x) 6-1i; sym(1) conj(x)-2i]; assert (isequal (conj(A), B)) ***** test % true/false t = sym(true); f = sym(false); assert (isequal ( conj(t), t)) assert (isequal ( conj(f), f)) ***** test % round trip syms x d = 3 - 5i; f = conj (x); A = conj (d); h = function_handle (f); B = h (d); assert (A, B) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/sinh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinh.m ***** error sinh (sym(1), 2) ***** assert (isequaln (sinh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sinh(x); f2 = sinh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sinh(A); f2 = sinh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sinh (d); f = sinh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/minus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/minus.m ***** test % scalar syms x assert (isa (x-1, 'sym')) assert (isa (x-x, 'sym')) assert (isequal (x-x, sym(0))) ***** test % matrices D = [0 1; 2 3]; A = sym(D); DZ = D - D; assert (isequal ( A - D , DZ )) assert (isequal ( A - A , DZ )) assert (isequal ( D - A , DZ )) assert (isequal ( A - 2 , D - 2 )) assert (isequal ( 4 - A , 4 - D )) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/rows.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rows.m ***** test a = sym([1 2 3]); assert (rows(a) == 1) ***** test a = sym([1 2 3; 4 5 6]); assert (rows(a) == 2) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/rdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rdivide.m ***** test % scalar syms x assert (isa (x ./ 1, 'sym')) assert (isa (x ./ x, 'sym')) assert (isequal (x ./ 1, x)) assert (isequal (x ./ x, sym(1))) ***** test % matrix-scalar D = 2*[0 1; 2 3]; A = sym(D); assert (isequal ( A./2 , D/2 )) assert (isequal ( A./sym(2) , D/2 )) assert (isequal ( D./sym(2) , D/2 )) ***** test % matrix ./ matrix D = [1 2; 3 4]; A = sym(D); assert (isequal ( A./A , D./D )) assert (isequal ( A./D , D./D )) assert (isequal ( D./A , D./D )) ***** test % matrix ./ matrix with symbols syms x y A = [x y; x^2 2*y]; B = [y x; x y]; assert (isequal ( A./A , sym(ones(2,2)) )) assert (isequal ( A./B , [x/y y/x; x 2] )) ***** test % scalar ./ matrix D = [1 2; 3 4]; A = sym(D); assert (isequal ( 12./A , 12./D )) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/asech.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asech.m ***** error asech (sym(1), 2) ***** assert (isequaln (asech (sym(nan)), sym(nan))) ***** shared x, d d = 1/2; x = sym('1/2'); ***** test f1 = asech(x); f2 = asech(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = asech(A); f2 = asech(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = asech (d); f = asech (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/signIm.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/signIm.m ***** assert (isequal (signIm (sym(1)), sym(0))) ***** assert (isequal (signIm (sym(1) + 2i), sym(1))) ***** assert (isequal (signIm (sym(1) - 2i), sym(-1))) ***** test % intermediate A looks bit weird, but it works syms z A = signIm (z); assert (isequal (subs(A, z, 3+sym(4i)), sym(1))) assert (isequal (subs(A, z, 3-sym(4i)), sym(-1))) ***** test % really a @sym/sign test, but that one is autogen z = 3 + sym(4i); A = sign (z); B = z / abs(z); assert (double (A), double (B), eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/bernoulli.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/bernoulli.m ***** error bernoulli (sym(1), 2, 3) ***** assert (isequal (bernoulli (sym(8)), -sym(1)/30)) ***** assert (isequal (bernoulli (sym(9)), sym(0))) ***** test syms x assert (isequal (bernoulli(3,x), x^3 - 3*x^2/2 + x/2)) ***** test % two different definitions in literature assert (isequal (abs (bernoulli (sym(1))), sym(1)/2)) ***** test % we use B_1 = 1/2 if (pycall_sympy__ ('return Version(spver) >= Version("1.12.dev")')) assert (isequal (bernoulli (sym(1)), sym(1)/2)) end ***** test m = sym([0 2; 8 888889]); A = bernoulli (m); B = [1 sym(1)/6; -sym(1)/30 0]; assert (isequal (A, B)) ***** test syms x A = bernoulli ([0; 1], x); B = [sym(1); x - sym(1)/2]; assert (isequal (A, B)) ***** test % round trip syms n x f = bernoulli (n, x); h = function_handle (f, 'vars', [n x]); A = h (2, 2.2); B = bernoulli (2, 2.2); assert (A, B) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/symreplace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symreplace.m ***** test % start with assumptions on x then remove them syms x positive f = x*10; symreplace(x, sym('x')) assert(isempty(assumptions(x))) ***** test % replace x with y syms x f = x*10; symreplace(x, sym('y')) assert( isequal (f, 10*sym('y'))) ***** test % gets inside cells syms x f = {x 1 2 {3 4*x}}; symreplace(x, sym('y')) syms y assert( isequal (f{1}, y)) assert( isequal (f{4}{2}, 4*y)) ***** test % gets inside structs/cells syms x my.foo = {x 1 2 {3 4*x}}; my.bar = x; g = {'ride' my 'motor' 'sicle'}; symreplace(x, sym('y')) syms y f = g{2}; assert( isequal (f.foo{1}, y)) assert( isequal (f.foo{4}{2}, 4*y)) assert( isequal (f.bar, y)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/isequal.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isequal.m ***** test a = sym([1 2]); b = a; assert (isequal (a, b)) b(1) = 42; assert (~isequal (a, b)) ***** test a = sym([1 2; 3 4]); b = a; assert (isequal (a, b)) b(1) = 42; assert (~isequal (a, b)) ***** test a = sym([nan; 2]); b = a; assert (~isequal (a, b)) ***** test % proper nan treatment a = sym([nan 2; 3 4]); b = a; assert (~isequal (a, b)) ***** test % more than two arrays a = sym([1 2 3]); b = a; c = a; assert (isequal (a, b, c)) c(1) = 42; assert (~isequal (a, b, c)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/cat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cat.m ***** test % mostly tested in horzcat, vertcat: one for good measure syms x assert (isequal (cat(1, x, x), [x x])) assert (isequal (cat(2, x, x), [x; x])) ***** error cat(3, sym(2), sym(3)) ***** error cat(0, sym(2), sym(3)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/divisors.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/divisors.m ***** test assert( isequal( divisors(sym(150)), divisors(sym(-150)) )) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/ldivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ldivide.m ***** test % scalar syms x assert (isa (x .\ 1, 'sym')) assert (isa (x .\ x, 'sym')) assert (isequal (x .\ 1, 1/x)) assert (isequal (x .\ x, sym(1))) ***** test % matrix-scalar D = [1 1; 2 3]; A = sym(D); assert (isequal ( A .\ 6 , D .\ 6 )) assert (isequal ( A .\ sym(6) , D .\ 6 )) assert (isequal ( D .\ sym(6) , D .\ 6 )) ***** test % matrix-matrix D = [1 2; 3 4]; A = sym(D); assert (isequal ( A .\ A , D .\ D )) assert (isequal ( A .\ D , D .\ D )) assert (isequal ( D .\ A , D .\ D )) ***** test % matrix .\ matrix with symbols syms x y A = [x y; x^2 2*y]; B = [y x; x y]; assert (isequal ( A .\ A , sym(ones(2, 2)) )) assert (isequal ( B .\ A , [x/y y/x; x 2] )) ***** test % scalar .\ matrix D = 3*[1 2; 3 4]; A = sym(D); assert (isequal ( 3 .\ A , 3 .\ D )) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/vertcat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/vertcat.m ***** test % basic syms x A = [x; x]; B = vertcat(x, x); C = vertcat(x, x, x); assert (isa (A, 'sym')) assert (isa (B, 'sym')) assert (isa (C, 'sym')) assert (isequal (size(A), [2 1])) assert (isequal (size(B), [2 1])) assert (isequal (size(C), [3 1])) ***** test % basic, part 2 syms x A = [x; 1]; B = [1; x]; C = [1; 2; x]; assert (isa (A, 'sym')) assert (isa (B, 'sym')) assert (isa (C, 'sym')) assert (isequal (size(A), [2 1])) assert (isequal (size(B), [2 1])) assert (isequal (size(C), [3 1])) ***** test % column vectors a = [sym(1); 2]; b = [sym(3); 4]; assert (isequal ( [a;b] , [1; 2; 3; 4] )) assert (isequal ( [a;b;a] , [1; 2; 3; 4; 1; 2] )) ***** test % row vectors a = [sym(1) 2]; b = [sym(3) 4]; assert (isequal ( [a;b] , [1 2; 3 4] )) assert (isequal ( [a;b;a] , [1 2; 3 4; 1 2] )) ***** test % row vector, other row a = [sym(1) 2]; assert (isequal ( [a; [sym(3) 4]] , [1 2; 3 4] )) ***** test % empty vectors v = [sym(1) sym(2)]; a = [v; []]; assert (isequal (a, v)) a = [[]; v; []]; assert (isequal (a, v)) a = [v; []; []]; assert (isequal (a, v)) ***** xtest % FIXME: is this Octave bug? worth worrying about syms x a = [x; [] []]; assert (isequal (a, x)) !!!!! known failure octave_base_value::map_value(): wrong type argument 'null_matrix' ***** test % more empty vectors v = [sym(1) sym(2)]; q = sym(ones(0, 2)); assert (isequal ([v; q], v)) ***** error v = [sym(1) sym(2)]; q = sym(ones(0, 3)); w = vertcat(v, q); ***** test % Octave 3.6 bug: should pass on 3.8.1 and matlab a = [sym(1) 2]; assert (isequal ( [a; [3 4]] , [1 2; 3 4] )) assert (isequal ( [a; sym(3) 4] , [1 2; 3 4] )) % more examples syms x [x [x x]; x x x]; [[x x] x; x x x]; [[x x] x; [x x] x]; [x x x; [x x] x]; ***** test % issue #700 A = sym ([1 2]); B = simplify (A); assert (isequal ([B; A], [A; B])) 11 tests, 10 passed, 1 known failure, 0 skipped [inst/@sym/diff.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/diff.m ***** shared x,y,z syms x y z ***** test % basic assert(logical( diff(sin(x)) - cos(x) == 0 )) assert(logical( diff(sin(x),x) - cos(x) == 0 )) assert(logical( diff(sin(x),x,x) + sin(x) == 0 )) ***** test % these fail when doubles are not converted to sym assert(logical( diff(sin(x),x,2) + sin(x) == 0 )) assert(logical( diff(sym(1),x) == 0 )) assert(logical( diff(1,x) == 0 )) assert(logical( diff(pi,x) == 0 )) ***** test % symbolic diff of const (w/o variable) fails in sympy, but we work around assert (isequal (diff(sym(1)), sym(0))) ***** test % nth symbolic diff of const assert (isequal (diff(sym(1), 2), sym(0))) assert (isequal (diff(sym(1), sym(1)), sym(0))) ***** test % octave's vector difference still works assert(isempty(diff(1))) assert((diff([2 6]) == 4)) ***** test % other forms f = sin(x); g = diff(f,x,2); assert (isequal (diff(f,2), g)) assert (isequal (diff(f,sym(2)), g)) g = diff(f,x); assert (isequal (diff(f), g)) assert (isequal (diff(f,1), g)) ***** test % old SMT supported (still does?) the 'n' before the 'x' % we might remove this someday, no longer seems documented in SMT f = sin(x); g = diff(f,x,2); assert (isequal (diff(f,2,x), g)) assert (isequal (diff(f,sym(2),x), g)) g = diff(f,x); assert (isequal (diff(f,1,x), g)) ***** test % matrix A = [x sin(x); x*y 10]; B = [1 cos(x); y 0]; assert(isequal(diff(A,x),B)) ***** test % bug: use symvar a = x*y; b = diff(a); assert (isequal (b, y)) ***** test % bug: symvar should be used on the matrix, not comp-by-comp a = [x y x*x]; b = diff(a); assert (~isequal (b(2), 1)) assert (isequal (b, [1 0 2*x])) b = diff(a,1); assert (~isequal (b(2), 1)) assert (isequal (b, [1 0 2*x])) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/le.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/le.m ***** test % simple x = sym(1); y = sym(1); e = x <= y; assert (logical (e)) x = sym(1); y = sym(2); e = x <= y; assert (logical (e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a <= b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 <= x)) assert (logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x <= 10)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/mrdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mrdivide.m ***** test % scalar syms x assert (isa( x/x, 'sym')) assert (isequal( x/x, sym(1))) assert (isa( 2/x, 'sym')) assert (isa( x/2, 'sym')) ***** test % matrix / scalar D = 2*[0 1; 2 3]; A = sym(D); assert (isequal ( A/2 , D/2 )) assert (isequal ( A/sym(2) , D/2 )) ***** test % I/A: either invert A or leave unevaluated: not bothered which A = sym([1 2; 3 4]); B = sym(eye(2)) / A; assert (isequal (B, inv(A)) || strncmpi (sympy (B), 'MatPow', 6)) ***** xtest % immutable test, upstream: TODO A = sym([1 2; 3 4]); B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); assert (isequal (A/A, B/B)) ***** test % A = C/B is C = A*B A = sym([1 2; 3 4]); B = sym([1 3; 4 8]); C = A*B; A2 = C / B; assert (isequal (A, A2)) ***** test A = [1 2; 3 4]; B = A / A; % assert (isequal (B, sym(eye(2)) assert (isequal (B(1,1), 1)) assert (isequal (B(2,2), 1)) assert (isequal (B(2,1), 0)) assert (isequal (B(1,2), 0)) ***** test A = sym([5 6]); B = sym([1 2; 3 4]); C = A*B; A2 = C / B; assert (isequal (A, A2)) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/ztrans.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ztrans.m ***** test % basic Z-transform table checks % X1, ..., X4 must have inner radius of convergence 1 syms n z % trick to extract the closed form formula using the fact that inner roc = 1 closed_form = @(X) subs (X, abs (1 / z), 1 / sym (2)); % check if ztrans(f) == X check_ztrans = @(f, X) logical (simplify (closed_form (ztrans (f)) == X)); f1 = sym (1); X1 = 1 / (1 - 1 / z); assert (check_ztrans (f1, X1)); f2 = n; X2 = (1 / z) / (1 - 1 / z)^2; assert (check_ztrans (f2, X2)); f3 = n^2; X3 = (1 / z) * (1 + 1 / z) / (1 - 1 / z)^3; assert (check_ztrans (f3, X3)); f4 = n^3; X4 = (1 / z) * (1 + 4 / z + 1 / z^2) / (1 - 1 / z)^4; assert (check_ztrans (f4, X4)); % basic matrix checks A1 = ztrans ([f1 f2; f3 f4]); B1 = [ztrans(f1) ztrans(f2); ztrans(f3) ztrans(f4)]; assert (isequal (A1, B1)); A2 = ztrans ([f1 f2; f3 f4], z); B2 = [ztrans(f1, z) ztrans(f2, z); ztrans(f3, z) ztrans(f4, z)]; assert (isequal (A2, B2)); A3 = ztrans ([f1 f2; f3 f4], n, z); B3 = [ztrans(f1, n, z) ztrans(f2, n, z); ztrans(f3, n, z) ztrans(f4, n, z)]; assert (isequal (A3, B3)); ***** test % additional Z-transform table checks % X1, ..., X4 must have inner radius of convergence a syms n nonnegative integer syms m positive integer syms a syms z % trick to extract the closed form formula using the fact that inner roc = a closed_form = @(X) subs (X, abs (a / z), 1 / sym (2)); % check if ztrans(f) == X check_ztrans = @(f, X) logical (simplify (closed_form (ztrans (f)) == X)); f1 = a^n; X1 = 1 / (1 - a / z); assert (check_ztrans (f1, X1)); f2 = n * a^n; X2 = (a / z) / (1 - a / z)^2; assert (check_ztrans (f2, X2)); f3 = n^2 * a^n; X3 = (a / z) * (1 + a / z) / (1 - a / z)^3; assert (check_ztrans (f3, X3)); f4 = nchoosek(n + m - 1, m - 1) * a^n; X4 = 1 / (1 - a / z)^m; assert (check_ztrans (f4, X4)); % additional matrix checks A1 = ztrans (f1, [n m; m n], [z a; a z]); B1 = [ztrans(f1, n, z) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, n, z)]; assert (isequal (A1, B1)); A2 = ztrans (f1, m, [z a; a z]); B2 = [ztrans(f1, m, z) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, m, z)]; assert (isequal (A2, B2)); A3 = ztrans (f1, [n m; m n], a); B3 = [ztrans(f1, n, a) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, n, a)]; assert (isequal (A3, B3)); ***** test % Kronecker delta checks syms n n0 nonnegative integer syms z assert (isequal (ztrans (kroneckerDelta (n)), 1)); assert (isequal (ztrans (kroneckerDelta (n - n0)), 1 / z^n0)); ***** test % basic var selection checks syms n m z w assert (isequal (ztrans (1 / factorial (n)), exp (1 / z))); assert (isequal (ztrans (1 / factorial (z)), exp (1 / w))); assert (isequal (ztrans (1 / factorial (m), w), exp (1 / w))); assert (isequal (ztrans (1 / factorial (m), m, w), exp (1 / w))); ***** test % additional var selection checks syms n m z f = kroneckerDelta(m) / factorial (n); assert (isequal (ztrans (f, z), exp (1 / z) * kroneckerDelta (m))); assert (isequal (ztrans (f, n, z), exp (1 / z) * kroneckerDelta (m))); assert (isequal (ztrans (f, m, z), 1 / factorial (n))); ***** test % if no t, use symvar: take x before a syms a x z assert (isequal (ztrans (a / factorial (x)), a * exp (1 / z))); ***** error ztrans (sym ('n')^sym ('n', 'nonnegative', 'integer')) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/besselh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselh.m ***** test % default to k=1 syms z a A = besselh(a, z); B = besselh(a, 1, z); assert (isequal (A, B)) ***** error besselh(sym('z')) ***** error besselh(2, 0, sym('z')) ***** error besselh(2, 3, sym('z')) ***** test % doubles, relative error X = [1 2 pi; 4i 5 6+6i]; Xs = sym(X); Alpha = [pi 3 1; 3 2 0]; Alphas = sym(Alpha); for k = 1:2 A = double(besselh(Alphas, k, Xs)); B = besselh(Alpha, k, X); assert (all (all (abs(A - B) < 10*eps*abs(A)))) end ***** test % round-trip syms x for k = 1:2 A = besselh(4, k, 10); q = besselh(4, k, x); h = function_handle(q); B = h(10); assert (abs(A - B) <= eps*abs(A)) end 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/ellipticF.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticF.m ***** error ellipticF (sym(1)) ***** error ellipticF (sym(1), 2, 3) ***** assert (double (ellipticF (sym (pi)/3, sym (-105)/10)), 0.6184459461, 10e-11) ***** assert (double (ellipticF (sym (pi)/4, sym (-pi))), 0.6485970495, 10e-11) ***** assert (double (ellipticF (sym (1), sym (-1))), 0.8963937895, 10e-11) ***** assert (double (ellipticF (sym (pi)/6, sym (0))), 0.5235987756, 10e-11) ***** test % compare to Maple us = vpa (ellipticF (sym(11)/10, sym(9)/4), 40); % > evalf(EllipticF(sin(11/10), sqrt(9/4)), 40); maple = vpa ('1.206444996991058996424988192917728014427', 40) - ... vpa ('0.8157358125823472313001683083685348517476j', 40); assert (abs (double (maple - us)), 0, 1e-39) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/uplus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/uplus.m ***** test syms x assert (isa (+x, 'sym')) assert (isequal (+x, x)) ***** test A = sym([0 -1 inf]); assert( isequal ( +A, A)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/bessely.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/bessely.m ***** test X = [1 2 3; 4 5 6]; ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; n = double(ns); A = double(bessely(ns, X)); B = bessely(n, X); assert (all (all (abs (A - B) < 50*eps*abs(A)))) ***** test % roundtrip syms x A = bessely(2, 10); q = bessely(2, x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps*abs(A)) ***** error bessely(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/fresnelc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fresnelc.m ***** error fresnelc (sym(1), 2) ***** test a = fresnelc(sym(0)); assert (isequal (a, sym(0))) ***** test b = fresnelc(sym('oo')); assert (isequal (b, sym(1)/2)) ***** test % values in a matrix syms x a = fresnelc([sym(0) sym('oo') x 1]); b = [sym(0) sym(1)/2 fresnelc(x) fresnelc(sym(1))]; assert (isequal (a, b)) ***** test % round trip syms x f = fresnelc (x); h = function_handle (f); A = h (1.1); B = fresnelc (1.1); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/rhs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rhs.m ***** test syms x f = x + 1 == 2*x; assert (isequal (rhs(f), 2*x)) ***** error syms x rhs(x) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/size.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/size.m ***** test a = sym([1 2 3]); [n,m] = size(a); assert (n == 1 && m == 3) ***** test a = sym([1 2 3]); n = size(a); assert (isequal (n, [1 3])) ***** test %% size, numel, length a = sym([1 2 3; 4 5 6]); assert (isa (size(a), 'double')) assert (isa (numel(a), 'double')) assert (isa (length(a), 'double')) assert (isequal (size(a), [2 3])) assert (length(a) == 3) assert (numel(a) == 6) a = sym([1; 2; 3]); assert (isequal (size(a), [3 1])) assert (length(a) == 3) assert (numel(a) == 3) ***** test %% size by dim a = sym([1 2 3; 4 5 6]); n = size(a, 1); assert (n == 2) m = size(a, 2); assert (m == 3) a = sym([1 2 3]'); n = size(a, 1); assert (n == 3) m = size(a, 2); assert (m == 1) ***** xtest % symbolic-size matrices syms n m integer A = sym('A', [n m]); d = size(A); assert (~isa(d, 'sym')) assert (isnumeric(d)) assert (isequaln (d, [NaN NaN])) !!!!! known failure assert (isequaln (d, [NaN, NaN])) failed ***** xtest % half-symbolic-size matrices % FIXME: will fail until size stop lying by saying 1x1 syms n integer A = sym('A', [n 3]); assert (isequaln (size(A), [NaN 3])) A = sym('A', [4 n]); assert (isequaln (size(A), [4 NaN])) !!!!! known failure assert (isequaln (size (A), [NaN, 3])) failed ***** xtest % half-symbolic-size empty matrices % FIXME: will fail until size stop lying by saying 1x1 syms n integer A = sym('A', [n 0]); assert (isequaln (size(A), [NaN 0])) !!!!! known failure assert (isequaln (size (A), [NaN, 0])) failed 7 tests, 4 passed, 3 known failures, 0 skipped [inst/@sym/hypot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hypot.m ***** assert (isequal (hypot (sym(3), 4), sym(5))) ***** test % compare to @double (note Matlab hypot only takes 2 inputs) A = hypot (hypot ([1 2 3], [4 5 6]), [7 8 9]); B = double (hypot (sym([1 2 3]), [4 5 6], [7 8 9])); assert (A, B, -eps) ***** test % compare to @double, with complex A = hypot ([1+2i 3+4i], [1 3+1i]); B = double (hypot (sym([1+2i 3+4i]), [1 3+1i])); assert (A, B, -eps) ***** test % matrices x = sym([1 -2; 0 3]); y = sym([0 0; 8 4]); A = hypot (x, y); B = sym([1 2; 8 5]); assert (isequal (A, B)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/sqrt.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sqrt.m ***** error sqrt (sym(1), 2) ***** assert (isequaln (sqrt (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sqrt(x); f2 = sqrt(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sqrt(A); f2 = sqrt(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sqrt (d); f = sqrt (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/zeros.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/zeros.m ***** test y = zeros(sym(2)); x = [0 0; 0 0]; assert( isequal( y, sym(x))) ***** test y = zeros(sym(2), 1); x = [0; 0]; assert( isequal( y, sym(x))) ***** test y = zeros(sym(1), 2); x = [0 0]; assert( isequal( y, sym(x))) ***** test y = zeros (sym([2 3])); x = sym (zeros ([2 3])); assert (isequal (y, x)) ***** assert( isa( zeros(sym(2), 'double'), 'double')) ***** assert( isa( zeros(3, sym(3), 'single') , 'single')) ***** assert( isa( zeros(3, sym(3)), 'sym')) ***** assert( isa( zeros(3, sym(3), 'sym'), 'sym')) ***** xtest % Issue #13 assert( isa( zeros(3, 3, 'sym'), 'sym')) !!!!! known failure invalid data type specified 9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/fresnels.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fresnels.m ***** error fresnels (sym(1), 2) ***** test a = fresnels(sym(0)); assert (isequal (a, sym(0))) ***** test b = fresnels(sym('oo')); assert (isequal (b, sym(1)/2)) ***** test % values in a matrix syms x a = fresnels([sym(0) sym('oo') x 1]); b = [sym(0) sym(1)/2 fresnels(x) fresnels(sym(1))]; assert (isequal (a, b)) ***** test % round trip syms x f = fresnels (x); h = function_handle (f); A = h (1.1); B = fresnels (1.1); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/plus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/plus.m ***** test % basic addition syms x assert (isa (x+5, 'sym')) assert (isa (5+x, 'sym')) assert (isa (5+sym(4), 'sym')) assert (isequal (5+sym(4), sym(9))) ***** test % array addition syms x D = [0 1; 2 3]; A = [sym(0) 1; sym(2) 3]; DZ = D - D; assert( isequal ( A + D , 2*D )) assert( isequal ( D + A , 2*D )) assert( isequal ( A + A , 2*D )) assert( isequal ( A + 2 , D + 2 )) assert( isequal ( 4 + A , 4 + D )) ***** test % ensure MatrixExpr can be manipulated somewhat syms n m integer A = sym('A', [n m]); B = subs(A, [n m], [5 6]); B = B + 1; assert (isa (B, 'sym')) C = B(1, 1); % currently makes a MatrixElement C = C + 1; assert (isa (C, 'sym')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/logical.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logical.m ***** test % basics, many others in isAlways.m assert (logical(true)) assert (~(logical(false))) ***** test % numbers to logic? assert (logical(sym(1))) assert (logical(sym(-1))) assert (~logical(sym(0))) ***** test % eqns, "structurally equivalent" syms x e = logical(x == x); assert ( islogical (e)) assert (e) e = logical(x == 1); assert ( islogical (e)) assert (~e) ***** test % eqn could have solutions but are false in general syms x e = logical(x^2 == x); assert ( islogical (e)) assert (~e) e = logical(2*x == x); assert ( islogical (e)) assert (~e) ***** test % FIXME: (not sure yet) T/F matrices should stay sym until logical() a = sym(1); e = a == a; assert (isa (e, 'sym')) assert (islogical (logical (e))) e = [a == a a == 0 a == a]; assert (isa (e, 'sym')) assert (islogical (logical (e))) ***** test % sym vectors of T/F to logical a = sym(1); e = [a == a a == 0 a == a]; w = logical(e); assert (islogical (w)) assert (isequal (w, [true false true])) e = e'; w = logical(e); assert (islogical (w)) assert (isequal (w, [true; false; true])) ***** test % sym matrix of T/F to logical a = sym([1 2 3; 4 5 6]); b = sym([1 2 0; 4 0 6]); e = a == b; w = logical(e); assert (islogical (w)) assert (isequal (w, [true true false; true false true])) ***** error syms x logical(x); ***** error logical(sym(nan)) ***** test % but oo and zoo are non-zero so we call those true % (SMT errors on these) FIXME syms oo zoo assert (logical (oo)) % assert (logical (zoo)) ***** test % older Octave (< 4.2) didn't automatically do "if (logical(obj))" e = sym(true); if (e) assert(true); else assert(false); end ***** test % more of above e2 = sym(1) == sym(1); if (e2) assert(true); else assert(false); end e3 = sym([1 2]) == sym([1 1]); if (e3(1)) assert(true); else assert(false); end 12 tests, 12 passed, 0 known failure, 0 skipped [inst/@sym/partfrac.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/partfrac.m ***** test % basic syms x y z assert(logical( partfrac(y/(x + 2)/(x + 1),x) == -y/(x + 2) + y/(x + 1) )) assert(logical( factor(partfrac(x^2/(x^2 - y^2),y)) == factor(x/(2*(x + y)) + x/(2*(x - y)) ))) assert(logical( factor(partfrac(x^2/(x^2 - y^2),x)) == factor(-y/(2*(x + y)) + y/(2*(x - y)) + 1 ))) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/expint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expint.m ***** error expint (sym(1), 2, 3) ***** test f1 = expint(sym(1)); f2 = expint(1); assert( abs(double(f1) - f2) < 1e-15 ) ***** test f1 = expint(sym(1i)); f2 = expint(1i); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [1 2; 3 4]; A = sym(D); f1 = expint(A); f2 = expint(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test syms x A = expint(x); B = expint(1, x); assert (isequal (A, B)) ***** test syms x A = exp(-x)/x; B = expint(0, x); assert (isequal (A, B)) ***** test % round trip syms x A = expint (3); f = expint (x); h = function_handle (f); B = h (3); assert (A, B, -eps) ***** error % round trip syms n x f = expint (n, x); h = function_handle (f); 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/isAlways.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isAlways.m ***** test % basics assert(isAlways(true)) assert(isAlways(1==1)) assert(isAlways(sym(1)==sym(1))) assert(isAlways(sym(1)==1)) ***** test % numbers to logic? assert (isAlways(sym(1))) assert (isAlways(sym(-1))) assert (~isAlways(sym(0))) ***** shared x syms x ***** test % in this case it is boolean expr = x - x == 0; assert (logical(expr)) assert (isAlways(expr)) % and both are logical type assert (islogical(logical(expr))) assert (islogical(isAlways(expr))) ***** test % structurally same and mathematically true % (here expr should be sym, non-boolean) expr = x == x; assert (logical(expr)) assert (isAlways(expr)) %assert (~islogical(expr)) % FIXME: Issue #56 %assert (isa(expr, 'sym)) ***** test % structurally same and mathematically true % (here expr should be sym, non-boolean) expr = 1 + x == x + 1; assert (logical(expr)) assert (isAlways(expr)) ***** test % non-zero numbers are true assert (isAlways(sym(1))) assert (isAlways(sym(-10))) assert (~isAlways(sym(0))) ***** shared x, y syms x y ***** test % structurally same and mathematically true % (here expr should be sym, non-boolean) expr = x*(1+y) == x*(y+1); assert (logical(expr)) assert (isAlways(expr)) assert (islogical(isAlways(expr))) ***** test % Now for some differences % simplest example from SymPy FAQ expr = x*(1+y) == x+x*y; assert (~logical(expr)) assert (isAlways(expr)) ***** test % more differences 1, these don't simplify in sympy (as of 2016-01) expr = (x+1)^2 == x*x + 2*x + 1; assert (~logical(expr)) assert (isAlways(expr)) ***** test % more differences 2 expr = sin(2*x) == 2*sin(x)*cos(x); assert (~logical(expr)) assert (isAlways(expr)) ***** test % more differences 3, false expr = x*(x+y) == x^2 + x*y + 1; assert (~logical(expr)) assert (~isAlways(expr)) assert (~isAlways(expr, 'unknown', 'error')) ***** test % logically not equal, math equal exprn = x*(x+y) ~= x^2 + x*y; assert (logical(exprn)) assert (~isAlways(exprn)) ***** test % logically not equal, math not equal exprn = x*(x+y) ~= x^2 + x*y + 1; assert (logical(exprn)) assert (isAlways(exprn)) ***** test % equal and not equal e1 = sin(x)^2 + cos(x)^2 == 1; e2 = sin(x)^2 + cos(x)^2 == 2; assert (~logical(e1)) assert (isAlways(e1)) assert (~logical(e2)) assert (~isAlways(e2)) assert (~isAlways(e2, 'unknown', 'error')) ***** error isAlways(x, 'unknown', 'kevin') ***** error isAlways(x, 'unknown') ***** error isAlways(x, 'kevin', 'true') ***** error a = [x*(x+y)==x^2+x*y x==y]; b = isAlways(a, 'unknown', 'error'); ***** error a = x==y; b = isAlways(a, 'unknown', 'error'); ***** test % array, unknown keyword a = [x==x x==x+1 x==y x*(x+y)==x^2+x*y cos(x)^2+sin(x)^2==2]; b = isAlways(a, 'unknown', false); c = isAlways(a, 'unknown', 'false'); expect = [true false false true false]; assert (islogical(b)) assert (isequal (b, expect)) assert (isequal (c, expect)) b = isAlways(a, 'unknown', true); c = isAlways(a, 'unknown', 'true'); expect = [true false true true false]; assert (islogical(b)) assert (isequal (b, expect)) assert (isequal (c, expect)) ***** test % ineq e = x*(x+y) <= x^2 + x*y + 1; assert (~logical(e)) assert (isAlways(e)) e = x*(x+y) <= x^2 + x*y; assert (~logical(e)) assert (isAlways(e)) 21 tests, 21 passed, 0 known failure, 0 skipped [inst/@sym/ones.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ones.m ***** test y = ones(sym(2)); x = [1 1; 1 1]; assert( isequal( y, sym(x))) ***** test y = ones(sym(2), 1); x = [1; 1]; assert( isequal( y, sym(x))) ***** test y = ones(sym(1), 2); x = [1 1]; assert( isequal( y, sym(x))) ***** test y = ones (sym([2 3])); x = sym (ones ([2 3])); assert (isequal (y, x)) ***** assert( isa( ones(sym(2), 'double'), 'double')) ***** assert( isa( ones(3, sym(3), 'single') , 'single')) ***** assert( isa( ones(3, sym(3)), 'sym')) ***** assert( isa( ones(3, sym(3), 'sym'), 'sym')) ***** xtest % Issue #13 assert( isa( ones(3, 3, 'sym'), 'sym')) !!!!! known failure invalid data type specified 9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/ge.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ge.m ***** test % simple x = sym(1); y = sym(1); e = x >= y; assert (logical (e)) x = sym(1); y = sym(2); e = x >= y; assert (~logical(e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a >= b; assert (isa (e, 'sym')) assert (~logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 >= x)) assert (logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x >= 10)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/csc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/csc.m ***** error csc (sym(1), 2) ***** assert (isequaln (csc (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = csc(x); f2 = csc(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = csc(A); f2 = csc(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = csc (d); f = csc (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/coth.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coth.m ***** error coth (sym(1), 2) ***** assert (isequaln (coth (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = coth(x); f2 = coth(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = coth(A); f2 = coth(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = coth (d); f = coth (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/linspace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/linspace.m ***** test a = linspace(sym(3), 5, 5); b = [sym(6) 7 8 9 10]/2; assert (isequal (a, b)) ***** test % non-integers A = linspace(0, sym(pi), 10); assert (length (A) == 10); assert (isequal (A(6), 5*sym(pi)/9)); ***** test % default argument for N A = linspace(1, 100); assert (length (A) == 100); ***** test % special case for just N = 1 A = linspace(sym(2), 3, 1); assert (isequal (A, 3)) A = linspace(sym(2), 3, 0); assert (isequal (A, 3)) A = linspace(sym(2), 3, sym(3)/2); assert (isequal (A, 3)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/isna.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isna.m ***** test % no sym should be NA syms x oo assert (~isna(sym(1))) assert (~isna(x)) assert (~isna(oo)) assert (~isna(sym(nan))) assert (isequal (isna (sym ([1 nan])), [false false])) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/expm.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expm.m ***** test % scalar syms x assert (isequal (expm(x), exp(x))) ***** test % diagonal A = [sym(1) 0; 0 sym(3)]; B = [exp(sym(1)) 0; 0 exp(sym(3))]; assert (isequal (expm(A), B)) ***** test % diagonal w/ x syms x positive A = [sym(1) 0; 0 x+2]; B = [exp(sym(1)) 0; 0 exp(x+2)]; assert (isequal (expm(A), B)) ***** test % non-diagonal syms x positive A = [sym(1) 2; 0 x+2]; B = expm(A); C = double(subs(B, x, 4)); D = expm(double(subs(A, x, 4))); assert (max (max (abs (C - D))) <= 1e-11) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/findsym.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/findsym.m ***** assert (strcmp (findsym (sym(2)), '')); ***** shared x,y,f x=sym('x'); y=sym('y'); f=x^2+3*x*y-y^2; ***** assert (strcmp (findsym (f), 'x,y')); ***** assert (strcmp (findsym (f,1), 'x')); ***** test % test order of returned vars syms x y a b c xx % https://www.mathworks.com/matlabcentral/newsreader/view_thread/237730 alpha = sym('alpha'); assert (strcmp (findsym(b*xx*exp(alpha) + c*sin(a*y), 2), 'xx,y')) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/uminus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/uminus.m ***** test % scalar syms x assert (isa (-x, 'sym')) assert (isequal (-(-x), x)) ***** test % matrix D = [0 1; 2 3]; A = sym(D); assert( isequal( -A, -D )) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/kron.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/kron.m ***** error kron (sym (2)) ***** test syms x y A = [sin(x), sin(y); x, y]; B = ones(2); expected = sym([sin(x), sin(x), sin(y), sin(y); sin(x), sin(x), sin(y), sin(y); x, x, y, y; x, x, y, y]); assert (isequal (kron(A, B), expected)) ***** test syms x y A = [sin(x), sin(y); x, y]; B = 2; assert (isequal (kron(A, B), 2*A)) ***** test syms x y A = [sin(x), sin(y)]; B = 2; assert (isequal( kron(B, A), 2*A)) ***** test syms x y; X = [tan(x), tan(x)]; Y = [cot(x); cot(x)]; expected = sym(ones(2)); assert (isequal (simplify(kron(X, Y)), expected)) ***** test syms x y z X = [x, y, z]; Y = [y, y; x, x]; expected = [x*y, x*y, y^2, y^2, y*z, y*z; x^2, x^2, x*y, x*y, x*z, x*z]; assert (isequal (kron(X, Y), expected)) ***** test syms x y X = [x, x^2; y, y^2]; Y = [1, 0; 0, 1]; expected = [x, x^2, 0, 0; y, y^2, 0, 0; 0, 0, x, x^2; 0, 0, y, y^2]; assert (isequal (kron(Y, X), expected)) ***** test syms x y z assert (isequal (kron (x, y, z), x*y*z)) assert (isequal (kron (x, y, z, 4), 4*x*y*z)) assert (isequal (kron ([2 3], y, z), [2 3]*y*z)) assert (isequal (kron ([2 3], [4; 5], y), [8 12; 10 15]*y)) ***** test syms x y A = kron ([x y], [1, -1; -1, 1], [2 3; 4 5]); D = kron ([7 9], [1, -1; -1, 1], [2 3; 4 5]); A = double (subs (A, [x y], [7 9])); assert (isequal (A, D)) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/end.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/end.m ***** test % scalar syms x y = x(1:end); assert (isequal (x, y)) ***** test % vector syms x A = [1 2 x 4]; y = A(end-1:end); assert (isequal (y, [x 4])) ***** test % subset of matrix syms x A = [1 2 x; x 3 9; 4 x*x 6]; y = A(end,1:end-1); assert (isequal (y, [4 x*x])) ***** test % linear index of matrix syms x A = [1 2 x; x 3 9]; y = A(end); assert (isequal (y, sym(9))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/symvar.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symvar.m ***** error symvar (sym(1), 2, 3) ***** test %% some empty cases assert (isempty (symvar (sym(1)))); assert (isempty (symvar (sym(1),1))); assert (isempty (symvar (sym(1),0))); assert (isempty (symvar (sym('x'),0))); ***** shared x,y,f x=sym('x'); y=sym('y'); f=x^2+3*x*y-y^2; ***** assert (isequal (symvar (f), [x y])); ***** assert (isequal (symvar (f, 1), x)); ***** test %% closest to x syms x y a b c xx alpha = sym('alpha'); % https://www.mathworks.com/matlabcentral/newsreader/view_thread/237730 assert( isequal (symvar (b*xx*exp(alpha) + c*sin(a*y), 2), [xx y])) %% tests to match Matlab R2013b ***** shared x,y,z,a,b,c,X,Y,Z syms x y z a b c X Y Z ***** test %% X,Y,Z first if no 2nd argument s = prod([x y z a b c X Y Z]); assert (isequal( symvar (s), [X Y Z a b c x y z] )) ***** test %% uppercase have *low* priority with argument? s = prod([x y z a b c X Y Z]); assert (isequal (symvar (s,4), [x, y, z, c] )) ***** test %% closest to x s = prod([y z a b c Y Z]); assert (isequal( symvar (s,6), [ y, z, c, b, a, Y] )) s = prod([a b c Y Z]); assert (isequal( symvar (s,4), [ c, b, a, Y] )) ***** test %% upper case letters in correct order s = X*Y*Z; assert (isequal( symvar (s,3), [X Y Z] )) ***** test % diff. assumptions make diff. symbols x1 = sym('x'); x2 = sym('x', 'positive'); f = x1*x2; assert (length (symvar (f)) == 2) z = symvar (f, 1); assert (xor (isequal (z, x1), isequal (z, x2))) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/dawson.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dawson.m ***** test if (exist ('OCTAVE_VERSION', 'builtin')) % dawson missing on Matlab, Issue #742 A = dawson([1 2]); B = double(dawson(sym([1 2]))); assert(A, B, -eps) end 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/not.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/not.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple assert (isequal( ~t, f)) assert (isequal( ~t, f)) ***** test % array w = [t t f t]; z = [f f t f]; assert (isequal( ~w, z)) ***** test % number assert (isequal( ~sym(5), f)) assert (isequal( ~sym(0), t)) ***** test % output is sym syms x e = ~(x == 4); assert (isa (e, 'sym')) assert (strncmp (sympy(e), 'Unequality', 10)) ***** test % output is sym even for scalar t/f (should match other bool fcns) assert (isa (~t, 'sym')) ***** test % symbol ineq syms x a = [t f x == 1 x ~= 2 x < 3 x <= 4 x > 5 x >= 6]; b = [f t x ~= 1 x == 2 x >= 3 x > 4 x <= 5 x < 6]; assert (isequal( ~a, b)) ***** test syms x y = ~x; s = disp(y, 'flat'); assert (strcmp (strtrim (s), '~x') || strcmpi (strtrim (s), 'Not(x)')) ***** error not (sym(1), 2) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/ellipticE.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticE.m ***** error ellipticE (sym(1), 2, 3) ***** assert (double (ellipticE (sym (-105)/10)), 3.70961391, 10e-9) ***** assert (double (ellipticE (sym (-pi)/4)), 1.844349247, 10e-10) ***** assert (double (ellipticE (sym (0))), 1.570796327, 10e-10) ***** assert (double (ellipticE (sym (1))), 1, 10e-1) ***** test % compare to Maple us = vpa (ellipticE (sym(7)/6, sym(13)/7), 40); % > evalf(EllipticE(sin(7/6), sqrt(13/7)), 40); maple = vpa ('0.6263078268598504591831743625971763209496', 40) + ... vpa ('0.1775496232203171126975790989055865596501j', 40); assert (abs (double (maple - us)), 0, 2e-39) ***** test % compare to Maple us = vpa (ellipticE (sym(8)/7), 40); % > evalf(EllipticE(sqrt(8/7)), 40); maple = vpa ('0.8717182992576322508542205614105802333270', 40) + ... vpa ('0.1066754320328976949531350910798010526685j', 40); assert (abs (double (maple - us)), 0, 2e-39) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/children.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/children.m ***** test % basics, sum syms x y f = 2*x + x*x + sin(y); assert (isempty (setxor (children(f), [2*x x*x sin(y)]))) ***** test % basics, product syms x y f = 2*x*sin(y); assert (isempty (setxor (children(f), [2 x sin(y)]))) ***** test % basics, product and powers syms x y f = 2*x^2*y^3; assert (isempty (setxor (children(f), [2 x^2 y^3]))) ***** test % eqn, ineq syms x y lhs = 2*x^2; rhs = y^3 + 7; assert (isequal (children(lhs == rhs), [lhs rhs])) assert (isequal (children(lhs < rhs), [lhs rhs])) assert (isequal (children(lhs >= rhs), [lhs rhs])) ***** test % matrix syms x y f = [4 + y 1 + x; 2 + x 3 + x]; c = children(f); ec = {[4 y], [1 x]; [2 x], [3 x]}; assert (isequal (size(c), size(ec))) for i=1:length(c) assert (isempty (setxor (c{i}, ec{i}))) end ***** test % matrix, sum/prod syms x y f = [x + y; x*sin(y); sin(x)]; ec = {[x y]; [x sin(y)]; [x]}; c = children(f); assert (isequal (size(c), size(ec))) for i=1:length(c) assert (isempty (setxor (c{i}, ec{i}))) end ***** test % scalar symbol syms x assert (isequal (children(x), x)) ***** test % scalar number x = sym(6); assert (isequal (children(x), x)) ***** test % symbolic size matrix syms n m integer A = sym('a', [n m]); C = children (A); assert (isequal (C(2), n)) assert (isequal (C(3), m)) ***** xtest % symbolic size matrix, fails on newer SymPy Issue #1089 syms n m integer A = sym('a', [n m]); assert (isequal (children (A), [sym('a') n m])) !!!!! known failure assert (isequal (children (A), [sym('a'), n, m])) failed 10 tests, 9 passed, 1 known failure, 0 skipped [inst/@sym/harmonic.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/harmonic.m ***** error harmonic (sym(1), 2) ***** xtest assert (isequaln (harmonic (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (harmonic (sym (nan)), sym (nan))) failed ***** assert (isequal (harmonic (sym(0)), sym(0))) ***** assert (isinf (harmonic (sym(inf)))) ***** assert (isequal (harmonic (sym([9 10])), [sym(7129)/2520 sym(7381)/2520])) ***** test % round trip y = sym('y'); A = harmonic (7); f = harmonic (y); h = function_handle (f); B = h (7); assert (A, B, -eps) 6 tests, 5 passed, 1 known failure, 0 skipped [inst/@sym/char.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/char.m ***** test % issue #91: expose as string a = sym(pi); assert (strcmp (char (a), 'pi')) ***** shared x x = sym('x'); ***** assert (strcmp (char (x), 'x')) ***** assert (strcmp (char (2*x), '2*x')) ***** assert (strcmp (char ([2*x x]), 'Matrix([[2*x, x]])')) ***** assert (strcmp (char ([2*x 2; 1 x]), 'Matrix([[2*x, 2], [1, x]])')) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/lambertw.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lambertw.m ***** test % W(x)*exp(W(x)) == x syms x T = lambertw(x)*exp(lambertw(x)); T = double (subs (T, x, 10)); assert (isequal (T, 10)); ***** test % k, x not x, k to match SMT syms x T = lambertw(2, x)*exp(lambertw(2, x)); T = double (subs (T, x, 10)); assert (abs(T - 10) < 1e-15) ***** assert (isequal (lambertw(sym(0)), sym(0))) ***** assert ( isequal (lambertw (-1/exp(sym(1))), -sym(1))) ***** assert ( isequal (lambertw (0, -1/exp(sym(1))), -sym(1))) ***** assert ( isequal (lambertw (-1, -1/exp(sym(1))), -sym(1))) ***** xtest % W(x)*exp(W(x)) == x; FIXME: a failure in SymPy? syms x T = simplify(lambertw(x)*exp(lambertw(x))); assert (isequal (T, x)) !!!!! known failure assert (isequal (T, x)) failed ***** assert (abs (lambertw(pi) - double(lambertw(sym(pi)))) < 5*eps) ***** assert (abs (lambertw(-1, 5) - double(lambertw(-1, sym(5)))) < 5*eps) ***** assert (abs (lambertw(2, 2) - double(lambertw(2, sym(2)))) < 5*eps) ***** test % round trip syms x k A = lambertw (5); f = lambertw (x); h = function_handle (f); B = h (5); assert (A, B) A = lambertw (3, 5); f = lambertw (k, x); h = function_handle (f); B = h (3, 5); assert (A, B) 11 tests, 10 passed, 1 known failure, 0 skipped [inst/@sym/ccode.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ccode.m ***** shared x,y,z syms x y z ***** test % basic test f = x*sin(y) + abs(z); source = ccode(f); expected = 'x*sin(y) + fabs(z)'; assert(strcmp(source, expected)) ***** test % output test f = x*sin(y) + abs(z); [C, H] = ccode(f, 'file', '', 'show_header', false); expected_c_code = sprintf('#include \"file.h\"\n#include \n\ndouble myfun(double x, double y, double z) {\n\n double myfun_result;\n myfun_result = x*sin(y) + fabs(z);\n return myfun_result;\n\n}\n'); expected_h_code = sprintf('\n#ifndef PROJECT__FILE__H\n#define PROJECT__FILE__H\n\ndouble myfun(double x, double y, double z);\n\n#endif\n\n'); assert(strcmp(C.name, 'file.c')) assert(strcmp(H.name, 'file.h')) hwin = strrep(expected_h_code, sprintf('\n'), sprintf('\r\n')); assert (strcmp (H.code, expected_h_code) || strcmp (H.code, hwin)) s1 = expected_c_code; s2 = strrep(expected_c_code, sprintf('\n'), sprintf('\r\n')); assert (strcmp (C.code, s1) || strcmp (C.code, s2)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/sym.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sym.m ***** test % integers x = sym ('2'); y = sym (2); assert (isa (x, 'sym')) assert (isa (y, 'sym')) assert (isequal (x, y)) ***** test % infinity for x = {'inf', '-inf', inf, -inf, 'Inf'} y = sym (x{1}); assert (isa (y, 'sym')) assert (isinf (double (y))) assert (isinf (y)) end ***** test % pi x = sym ('pi'); assert (isa (x, 'sym')) assert (isequal (sin (x), sym (0))) assert (abs (double (x) - pi) < 2*eps ) x = sym (pi); assert (isa (x, 'sym')) assert (isequal (sin (x), sym (0))) assert (abs (double (x) - pi) < 2*eps ) ***** test % rationals x = sym(1) / 3; assert (isa (x, 'sym')) assert (isequal (3*x - 1, sym (0))) x = 1 / sym (3); assert (isa (x, 'sym')) assert (isequal (3*x - 1, sym (0))) x = sym ('1/3'); assert (isa (x, 'sym')) assert (isequal (3*x - 1, sym (0))) ***** test % passing small rationals x = sym ('1/2'); assert (double (x) == 1/2 ) assert (isequal (2*x, sym (1))) ***** warning x = sym (1/2); ***** test % passing small rationals w/o quotes: despite the warning, % it should work s = warning ('off', 'OctSymPy:sym:rationalapprox'); x = sym (1/2); warning (s) assert (double (x) == 1/2 ) assert (isequal (2*x, sym (1))) ***** test assert (isa (sym (pi), 'sym')) assert (isa (sym ('beta'), 'sym')) ***** test % sym from array D = [0 1; 2 3]; A = [sym(0) 1; sym(2) 3]; assert (isa (sym (D), 'sym')) assert (isequal (size (sym (D)), size (D))) assert (isequal (sym (D), A)) ***** test % more sym from array syms x A = [x x]; assert (isequal (sym (A), A)) A = [1 x]; assert (isequal (sym (A), A)) ***** test %% assumptions and clearing them clear variables % for matlab test script x = sym('x', 'real'); f = {x {2*x}}; asm = assumptions(); assert ( ~isempty(asm)) s = warning ('off', 'OctSymPy:deprecated'); x = sym('x', 'clear'); warning (s) asm = assumptions(); assert ( isempty(asm)) ***** test %% matlab compat, syms x clear should add x to workspace x = sym('x', 'real'); f = 2*x; clear x assert (~logical(exist('x', 'var'))) s = warning ('off', 'OctSymPy:deprecated'); x = sym('x', 'clear'); warning (s) assert (logical(exist('x', 'var'))) ***** test %% assumptions should work if x is already a sym x = sym('x'); x = sym(x, 'real'); assert (~isempty(assumptions(x))) ***** test %% likewise for clear x = sym('x', 'real'); f = 2*x; s = warning ('off', 'OctSymPy:deprecated'); x = sym(x, 'clear'); warning (s) assert (isempty(assumptions(x))) assert (isempty(assumptions(f))) ***** test % bool t = sym (false); t = sym (true); assert (logical (t)) ***** test % bool vec/mat a = sym (1); t = sym ([true false]); assert (isequal (t, [a == 1 a == 0])) t = sym ([true false; false true]); assert (isequal (t, [a == 1 a == 0; a == 0 a == 1])) ***** test % symbolic matrix A = sym ('A', [2 3]); assert (isa (A, 'sym')) assert (isequal (size (A), [2 3])) A(1, 1) = 7; assert (isa (A, 'sym')) A = A + 1; assert (isa (A, 'sym')) ***** test % symbolic matrix, symbolic but Integer size A = sym ('A', sym([2 3])); assert (isa (A, 'sym')) assert (isequal (size (A), [2 3])) ***** test % symbolic matrix, subs in for size syms n m integer A = sym ('A', [n m]); B = subs (A, [n m], [5 6]); assert (isa (B, 'sym')) assert (isequal (size (B), [5 6])) ***** error sym('2*a', [2 3]) ***** error sym(2*sym('a'), [2 3]) ***** error sym('1', [2 3]) ***** error sym(1, [2 3]) ***** error % TODO: symbolic tensor, maybe supported someday sym('a', [2 3 4]) ***** test % 50 shapes of empty a = sym (ones (0, 3)); assert (isa (a, 'sym')) assert (isequal (size (a), [0 3])) a = sym (ones (2, 0)); assert (isequal (size (a), [2 0])) a = sym ([]); assert (isequal (size (a), [0 0])) ***** test % moar empty a = sym ('a', [0 3]); assert (isa (a, 'sym')) assert (isequal (size (a), [0 3])) a = sym ('a', [2 0]); assert (isa (a, 'sym')) assert (isequal (size (a), [2 0])) ***** test % embedded sympy commands, various quotes, issue #143 a = sym ('a'); a1 = sym ('Symbol("a")'); a2 = sym ('Symbol(''a'')'); assert (isequal (a, a1)) assert (isequal (a, a2)) % Octave only, and eval to hide from Matlab parser if exist ('OCTAVE_VERSION', 'builtin') eval( 'a3 = sym("Symbol(''a'')");' ); eval( 'a4 = sym("Symbol(\"a\")");' ); assert (isequal (a, a3)) assert (isequal (a, a4)) end ***** test % complex x = sym(1 + 2i); assert (isequal (x, sym(1)+sym(2)*1i)) ***** test % doubles bigger than int32 INTMAX should not fail d = 4294967295; a = sym (d); assert (isequal (double (a), d)) d = d + 123456; a = sym (d); assert (isequal (double (a), d)) ***** test % int32 integer types a = sym (100); b = sym (int32 (100)); assert (isequal (a, b)) ***** test % int32 MAXINT integers a = sym ('2147483647'); b = sym (int32 (2147483647)); assert (isequal (a, b)) a = sym ('-2147483647'); b = sym (int32 (-2147483647)); assert (isequal (a, b)) a = sym ('4294967295'); b = sym (uint32 (4294967295)); assert (isequal (a, b)) ***** test % int64 integer types a = sym ('123456789012345'); b = sym (int64(123456789012345)); c = sym (uint64(123456789012345)); assert (isequal (a, b)) assert (isequal (a, c)) ***** test % integer arrays a = int64 ([1 2 100]); s = sym (a); assert (isequal (double (a), [1 2 100])) ***** test % bigger int64 integer types q = int64 (123456789012345); w = 10000*q + 123; a = sym ('1234567890123450123'); b = sym (w); assert (isequal (a, b)) ***** test % sym(double) heuristic s = warning ('off', 'OctSymPy:sym:rationalapprox'); x = sym(2*pi/3); assert (isequal (x/sym(pi), sym(2)/3)) x = sym(22*pi); assert (isequal (x/sym(pi), sym(22))) x = sym(pi/123); assert (isequal (x/sym(pi), sym(1)/123)) warning (s) ***** test % sym(double) with 'r': no warning a = 0.1; x = sym(a, 'r'); assert (isequal (x, sym(1)/10)) ***** test % sym(double) array with 'r': no warning a = [0.1 0.2]; x = sym(a, 'r'); assert (isequal (x, [sym(a(1), 'r') sym(a(2), 'r')])) ***** test % sym(double) array with 'f': no warning a = [0.1 0.2]; x = sym(a, 'f'); assert (isequal (x, [sym(a(1), 'f') sym(a(2), 'f')])) ***** test % sym(double, 'f') a = 0.1; x = sym(a, 'f'); assert (~isequal (x, sym(1)/10)) assert (isequal (x, sym('3602879701896397')/sym('36028797018963968'))) ***** test x = sym(pi, 'f'); assert (~isequal (x, sym('pi'))) assert (isequal (x, sym('884279719003555')/sym('281474976710656'))) ***** test q = sym('3602879701896397')/sym('36028797018963968'); x = sym(1 + 0.1i, 'f'); assert (isequal (x, 1 + 1i*q)) x = sym(0.1 + 0.1i, 'f'); assert (isequal (x, q + 1i*q)) ***** test assert (isequal (sym(inf, 'f'), sym(inf))) assert (isequal (sym(-inf, 'f'), sym(-inf))) assert (isequaln (sym(nan, 'f'), sym(nan))) assert (isequal (sym(complex(inf, -inf), 'f'), sym(complex(inf, -inf)))) assert (isequaln (sym(complex(nan, inf), 'f'), sym(complex(nan, inf)))) assert (isequaln (sym(complex(-inf, nan), 'f'), sym(complex(-inf, nan)))) ***** test assert (isequal (sym (sqrt(2), 'r'), sqrt (sym (2)))) assert (isequal (sym (sqrt(12345), 'r'), sqrt (sym (12345)))) ***** test % symbols with special sympy names syms Ei Eq assert (~isempty (regexp (sympy (Eq), '^Symbol'))) assert (~isempty (regexp (sympy (Ei), '^Symbol'))) ***** test % more symbols with special sympy names x = sym('FF'); assert (~isempty (regexp (x.pickle, '^Symbol'))) x = sym('ff'); assert (~isempty (regexp (x.pickle, '^Symbol'))) ***** test % E can be a sym not just exp(sym(1)) syms E assert (~logical (E == exp(sym(1)))) ***** test % e can be a symbol, not exp(sym(1)) syms e assert (~ logical (e == exp(sym(1)))) ***** test % double e x = sym (exp (1)); y = exp (sym (1)); assert (isequal (x, y)) if (exist ('OCTAVE_VERSION', 'builtin')) x = sym (e); assert (isequal (x, y)) end ***** test x = sym (-exp (1)); y = -exp (sym (1)); assert (isequal (x, y)) ***** assert (~ isequal (sym (exp(1)), sym (exp(1), 'f'))) ***** warning sym (1e16); ***** warning sym (-1e16); ***** warning sym (10.33); ***** warning sym (-5.23); ***** warning sym (sqrt (1.4142135623731)); ***** warning sym ([1.2 1.3]); ***** error x = sym ('x', 'positive2'); ***** error x = sym ('x', 'integer', 'positive2'); ***** error x = sym ('x', 'integer2', 'positive'); ***** error x = sym ('-pi', 'positive') ***** error x = sym ('pi', 'integer') ***** test % multiple assumptions n = sym ('n', 'negative', 'even'); a = assumptions (n); assert (strcmp (a, 'n: negative, even') || strcmp (a, 'n: even, negative')) ***** error % multiple assumptions as a list % TODO: should this be allowed? n = sym ('n', {'negative', 'even'}); a = assumptions (n); assert (strcmp (a, 'n: negative, even') || strcmp (a, 'n: even, negative')) ***** error n = sym ('n', {{'negative', 'even'}}); ***** test % save/load sym objects syms x y = 2*x; a = 42; myfile = tempname (); save (myfile, 'x', 'y', 'a') clear x y a load (myfile) assert (isequal (y, 2*x)) assert (a == 42) if (exist ('OCTAVE_VERSION', 'builtin')) assert (unlink (myfile) == 0) else delete ([myfile '.mat']) end ***** test a = sym ('2.1'); b = sym (21) / 10; %% https://github.com/sympy/sympy/issues/11703 assert (pycall_sympy__ ('return _ins[0] == _ins[1] and hash(_ins[0]) == hash(_ins[1])', a, b)) ***** test % issue #706 a = sym('Float("1.23")'); assert (~ isempty (strfind (char (a), '.'))) ***** assert (isequal (sym({1 2 'a'}), [sym(1) sym(2) sym('a')])); ***** error sym({1 2 'a'}, 'positive'); ***** error sym({'a' 'b'}, 'positive'); ***** test a = sym ('--1'); b = sym ('---1'); assert (isequal (a, sym (1))) assert (isequal (b, sym (-1))) ***** test % num2cell works on sym arrays syms x C1 = num2cell ([x 2 3; 4 5 6*x]); assert (iscell (C1)) assert (isequal (size (C1), [2 3])) assert (isequal (C1{1,1}, x)) assert (isequal (C1{2,3}, 6*x)) assert (isequal (C1{1,3}, sym(3))) assert (isa (C1{1,3}, 'sym')) ***** test % function_handle f = @(x, y) y*sin(x); syms x y assert (isequal (sym (f), y*sin(x))); f = @(x) 42; assert (isequal (sym (f), sym (42))); f = @() 42; assert (isequal (sym (f), sym (42))); ***** error % function_handle f = @(x) A*sin(x); sym (f) ***** test % Issue #885 clear f x % if test not isolated (e.g., on matlab) syms x f(x) = sym('S(x)'); f(x) = sym('I(x)'); f(x) = sym('O(x)'); ***** test % sym(sympy(x) == x identity, Issue #890 syms x f = exp (1i*x); s = sympy (f); g = sym (s); assert (isequal (f, g)) ***** test % sym(sympy(x) == x identity % Don't mistake "pi" (which is "srepr(S.Pi)") for a symfun variable f = sym ('ff(pi, pi)'); s1 = sympy (f); s2 = 'FallingFactorial(pi, pi)'; assert (strcmp (s1, s2)) ***** test % sym(sympy(x) == x identity % Don't mistake "I" (which is "srepr(S.ImaginaryUnit)") for a symfun variable f = sym ('sin(I)'); g = 1i*sinh (sym (1)); assert (isequal (f, g)) s = sympy (f); assert (isempty (strfind (s, 'Function'))) ***** error % sym(sympy(x) == x identity % Don't mistake "true/false" (which is "srepr(S.true)") for a symfun variable % (Used to print as `S.true` but just `true` in sympy 1.2) sym ('E(true,false)') ***** test % some variable names that are special to sympy but should not be for us f = sym ('f(S, Q, C, O, N)'); s1 = sympy (f); s2 = 'Function(''f'')(Symbol(''S''), Symbol(''Q''), Symbol(''C''), Symbol(''O''), Symbol(''N''))'; assert (strcmp (s1, s2)) ***** test % For SMT 2014 compatibility, I and E would become ImaginaryUnit and Exp(1) % but I'm not sure this is by design. This test would need to change if % we want stricter SMT compatibility. f = sym ('f(x, I, E)'); s1 = sympy (f); s2 = 'Function(''f'')(Symbol(''x''), Symbol(''I''), Symbol(''E''))'; assert (strcmp (s1, s2)) ***** test % not the identity, force symfun f = sym ('FF(w)'); s1 = sympy (f); s2 = 'Function(''FF'')(Symbol(''w''))'; assert (strcmp (s1, s2)) ***** test % not the identity, force symfun f = sym ('FF(w, pi)'); s1 = sympy (f); s2 = 'Function(''FF'')(Symbol(''w''), pi)'; assert (strcmp (s1, s2)) ***** test % not the identity, force symfun f = sym ('ff(x, y)'); s1 = sympy (f); s2 = 'Function(''ff'')(Symbol(''x''), Symbol(''y''))'; assert (strcmp (s1, s2)) ***** test % But this one should satisfy "sym(sympy(x) == x" identity % (OOTB, SymPy has ff -> FallingFactorial) f = sym ('FallingFactorial(x, y)'); s1 = sympy (f); s2 = 'FallingFactorial(Symbol(''x''), Symbol(''y''))'; assert (strcmp (s1, s2)) ***** error % certain words cannot be used as variables if (pycall_sympy__ ('return Version(spver) >= Version("1.10.1")')) f = sym ('f(x, y, print)') else error ('use another variable') end 86 tests, 86 passed, 0 known failure, 0 skipped [inst/@sym/abs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/abs.m ***** error abs (sym(1), 2) ***** assert (isequaln (abs (sym(nan)), sym(nan))) ***** shared x, d d = -1; x = sym('-1'); ***** test f1 = abs(x); f2 = abs(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = abs(A); f2 = abs(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = abs (d); f = abs (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/log10.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log10.m ***** assert (isequal (log10 (sym (1000)), sym (3))) ***** assert (isequal (log10 (sym ([10 100])), sym ([1 2]))) ***** test % round-trip syms x f = log10 (x); h = function_handle (f); A = h (1.1); B = log10 (1.1); assert (A, B, -eps) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/dirac.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dirac.m ***** error dirac (sym(1), 2) ***** assert (isequaln (dirac (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = dirac(x); f2 = dirac(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = dirac(A); f2 = dirac(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = dirac (d); f = dirac (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/argnames.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/argnames.m ***** test % basic tests syms x f = 2*x; assert (isempty (argnames(x))) assert (isempty (argnames(f))) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/atanh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atanh.m ***** error atanh (sym(1), 2) ***** assert (isequaln (atanh (sym(nan)), sym(nan))) ***** shared x, d d = 1/2; x = sym('1/2'); ***** test f1 = atanh(x); f2 = atanh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = atanh(A); f2 = atanh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = atanh (d); f = atanh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/all.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/all.m ***** test % matrix a = [0 3; 1 2]; s = sym (a); assert (isequal (all (s), all (a))) assert (isequal (all (s,1), all (a,1))) assert (isequal (all (s,2), all (a,2))) ***** test % vector a = [1 2 3]; s = sym (a); assert (isequal (all (s), all (a))) assert (isequal (all (s,1), all (a,1))) assert (isequal (all (s,2), all (a,2))) ***** test % should fail on symbols syms x s = [1 2 x]; try all (s) waserr = false; catch waserr = true; end assert (waserr) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/exp.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/exp.m ***** error exp (sym(1), 2) ***** assert (isequaln (exp (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = exp(x); f2 = exp(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = exp(A); f2 = exp(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = exp (d); f = exp (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/chebyshevT.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chebyshevT.m ***** error chebyshevT (sym(1)) ***** error chebyshevT (sym(1), 2, 3) ***** assert (isequaln (chebyshevT (2, sym(nan)), sym(nan))) ***** shared x syms x ***** assert(isequal(chebyshevT(0, x), sym(1))) ***** assert(isequal(chebyshevT(1, x), x)) ***** assert(isequal(chebyshevT(2, x), 2*x*x - 1)) ***** assert(isequal(chebyshevT([0 1 2], x), [sym(1) x (2*x*x-1)])) ***** test % round trip syms n z f = chebyshevT (n, z); h = function_handle (f, 'vars', [n z]); A = h (1.1, 2.2); B = chebyshevT (1.1, 2.2); assert (A, B) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/function_handle.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/function_handle.m ***** shared x,y,z syms x y z ***** test % basic test h = function_handle(2*x); assert(isa(h, 'function_handle')) assert(h(3)==6) ***** test % autodetect inputs h = function_handle(2*x*y, x+y); [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) ***** test % specified inputs h = function_handle(2*x*y, 'vars', [x y]); assert(h(3,5)==30) h = function_handle(2*x*y, x+y, 'vars', [x y]); [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) ***** test % cell arrays for vars list h = function_handle(2*x*y, x+y, 'vars', {x y}); [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) h = function_handle(2*x*y, x+y, 'vars', {'x' 'y'}); [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) ***** test % cell arrays specify order, overriding symvar order h = function_handle(x*y, 12/y, 'vars', {y x}); [t1, t2] = h(3, 6); assert(t1 == 18 && t2 == 4) h = function_handle(x*y, 12/y, 'vars', [y x]); [t1, t2] = h(3, 6); assert(t1 == 18 && t2 == 4) ***** test % cell arrays specify order, overriding symvar order h = function_handle(x*y, 12/y, 'vars', {y x}); [t1, t2] = h(3, 6); assert(t1 == 18 && t2 == 4) h = function_handle(x*y, 12/y, 'vars', [y x]); [t1, t2] = h(3, 6); assert(t1 == 18 && t2 == 4) ***** test % Functions with different names in Sympy. f = abs(x); % becomes Abs(x) h = function_handle(f); assert(h(-10) == 10) f = ceil(x); h = function_handle(f); assert(h(10.1) == 11) ***** test % 'file' with empty filename returns handle h = function_handle(2*x*y, 'file', ''); assert(isa(h, 'function_handle')) assert(h(3,5)==30) h = function_handle(2*x*y, 'vars', {x y}, 'file', ''); assert(isa(h, 'function_handle')) assert(h(3,5)==30) ***** test % output to disk fprintf('\n') if (exist ('OCTAVE_VERSION', 'builtin')) temp_file = tempname('', 'oct_'); else temp_file = tempname(); end % allow loading function from temp_file [temp_path, ans, ans] = fileparts(temp_file); addpath(temp_path); f = function_handle(2*x*y, 2^x, 'vars', {x y z}, 'file', temp_file); assert( isa(f, 'function_handle')) addpath(temp_path); % Matlab 2014a needs this? [a,b] = f(10,20,30); assert (isnumeric (a) && isnumeric (b)) assert (a == 400) assert (b == 1024) if (exist ('OCTAVE_VERSION', 'builtin')) assert (unlink([temp_file '.m']) == 0) else delete ([temp_file '.m']) end % remove temp_path from load path rmpath(temp_path); Wrote file /tmp/oct_ie4jp0.m. ***** test % output to disk: also works with .m specified if (exist ('OCTAVE_VERSION', 'builtin')) temp_file = [tempname('', 'oct_') '.m']; else temp_file = [tempname() '.m']; end % allow loading function from temp_file [temp_path, ans, ans] = fileparts(temp_file); addpath(temp_path); f = function_handle(2*x*y, 2^x, 'vars', {x y z}, 'file', temp_file); assert( isa(f, 'function_handle')) addpath(temp_path); % Matlab 2014a needs this? [a,b] = f(10,20,30); assert (isnumeric (a) && isnumeric (b)) assert (a == 400) assert (b == 1024) if (exist ('OCTAVE_VERSION', 'builtin')) assert (unlink(temp_file) == 0) else delete (temp_file) end % remove temp_path from load path rmpath(temp_path); Wrote file /tmp/oct_ITT7py.m. ***** test % non-scalar outputs H = [x y z]; M = [x y; z 16]; V = [x;y;z]; h = function_handle(H, M, V); [t1,t2,t3] = h(1,2,3); assert(isequal(t1, [1 2 3])) assert(isequal(t2, [1 2; 3 16])) assert(isequal(t3, [1;2;3])) ***** test % non-scalar outputs in .m files H = [x y z]; M = [x y; z 16]; V = [x;y;z]; if (exist ('OCTAVE_VERSION', 'builtin')) temp_file = tempname('', 'oct_'); else temp_file = tempname(); end % allow loading function from temp_file [temp_path, ans, ans] = fileparts(temp_file); addpath(temp_path); h = function_handle(H, M, V, 'vars', {x y z}, 'file', temp_file); assert( isa(h, 'function_handle')) addpath(temp_path); % Matlab 2014a needs this? [t1,t2,t3] = h(1,2,3); assert(isequal(t1, [1 2 3])) assert(isequal(t2, [1 2; 3 16])) assert(isequal(t3, [1;2;3])) if (exist ('OCTAVE_VERSION', 'builtin')) assert (unlink([temp_file '.m']) == 0) else delete ([temp_file '.m']) end % remove temp_path from load path rmpath(temp_path); Wrote file /tmp/oct_nWhJCN.m. ***** test % order of outputs is lexiographic syms a A x y f = y + 10*a + 100*x + 1000*A; h = function_handle(f); assert (h(1, 2, 3, 4) == 1000 + 20 + 300 + 4) ***** test % https://github.com/gnu-octave/symbolic/issues/854 f = function_handle (x + 1i*sqrt (sym(3))); assert (f (1), complex (1, sqrt (3)), -eps) 14 tests, 14 passed, 0 known failure, 0 skipped [inst/@sym/disp.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/disp.m ***** test syms x s = disp(sin(x)); assert(strcmp(s, sprintf(' sin(x)\n'))) ***** test syms x s = disp(sin(x/2), 'flat'); assert(strcmp(s, sprintf(' sin(x/2)\n'))) ***** test % Examples of 2x0 and 0x2 empty matrices: a = sym([1 2; 3 4]); b2x0 = a([true true], [false false]); b0x2 = a([false false], [true true]); assert (isequal (size (b2x0), [2 0])) assert (isequal (size (b0x2), [0 2])) s = disp(b2x0); assert(strcmp(s, sprintf(' []\n'))) s = disp(b0x2); assert(strcmp(s, sprintf(' []\n'))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/fortran.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fortran.m ***** shared x,y,z syms x y z ***** test % basic test f = x*sin(y) + abs(z); source = fortran(f); expected = ' x*sin(y) + abs(z)'; s1 = strrep (expected, 'abs', 'Abs'); assert (strcmp (source, expected) || strcmp (source, s1)) ***** test % output test f = x*sin(y) + abs(z); [F,H] = fortran(f, 'file', '', 'show_header', false); expected_h_code = sprintf('\ninterface\nREAL*8 function myfun(x, y, z)\nimplicit none\nREAL*8, intent(in) :: x\nREAL*8, intent(in) :: y\nREAL*8, intent(in) :: z\nend function\nend interface\n\n'); expected_f_code = sprintf('\nREAL*8 function myfun(x, y, z)\nimplicit none\nREAL*8, intent(in) :: x\nREAL*8, intent(in) :: y\nREAL*8, intent(in) :: z\n\nmyfun = x*sin(y) + abs(z)\n\nend function\n'); assert(strcmp(F.name, 'file.f90')) assert(strcmp(H.name, 'file.h')) %disp(expected_f_code); disp(F.code) s1 = strrep (expected_f_code, 'abs', 'Abs'); s2 = strrep (expected_f_code, sprintf ('\n'), sprintf ('\r\n')); s3 = strrep (s2, 'abs', 'Abs'); s4 = strrep (expected_h_code, sprintf ('\n'), sprintf ('\r\n')); assert (strcmp (F.code, expected_f_code) || strcmp (F.code, s1) || strcmp (F.code, s2) || strcmp (F.code, s3)) assert (strcmp (H.code, expected_h_code) || strcmp (H.code, s4)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/isconstant.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isconstant.m ***** test syms x A = [x 2 3]; B = [false true true]; assert (isequal (isconstant (A), B)) ***** test syms x A = [x 2; 3 x]; B = [false true; true false]; assert (isequal (isconstant (A), B)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/cos.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cos.m ***** error cos (sym(1), 2) ***** assert (isequaln (cos (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = cos(x); f2 = cos(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cos(A); f2 = cos(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = cos (d); f = cos (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/times.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/times.m ***** test % scalar syms x assert (isa (x.*2, 'sym')) assert (isequal (x.*2, x*2)) assert (isequal (2.*sym(3), sym(6))) assert (isequal (sym(2).*3, sym(6))) ***** test % matrix-matrix and matrix-scalar D = [0 1; 2 3]; A = sym(D); assert (isequal ( 2.*A , 2*D )) assert (isequal ( A.*2 , 2*D )) assert (isequal ( A.*A , D.*D )) assert (isequal ( A.*D , D.*D )) assert (isequal ( D.*A , D.*D )) ***** test syms x A = [1 x]; B = [2 3]; assert (isequal (A.*B, [2 3*x])) ***** test % immutable test A = sym([1 2]); B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)]])'); assert (isequal (A.*A, B.*B)) ***** test % MatrixSymbol test A = sym([1 2; 3 4]); B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); C = sym('MatrixSymbol("C", 2, 2)'); assert (~ isempty (strfind (sympy (C.*C), 'Hadamard'))) assert (~ isempty (strfind (sympy (A.*C), 'Hadamard'))) assert (~ isempty (strfind (sympy (C.*A), 'Hadamard'))) assert (~ isempty (strfind (sympy (B.*C), 'Hadamard'))) assert (~ isempty (strfind (sympy (C.*B), 'Hadamard'))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isscalar.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isscalar.m ***** assert(isscalar(sym('x'))) ***** test a = sym([1 2 3]); assert(~isscalar(a)) ***** assert(~isscalar(sym([]))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/ssinint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ssinint.m ***** assert (isequal (ssinint(sym(0)), -sym(pi)/2)) ***** test A = ssinint (sym ([0 1])); B = [-pi/2 -0.62471325642771360426]; assert( all(all( abs(double(A)-B) < 1e-15 ))) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/latex.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/latex.m ***** test syms x y = sin(x); assert (strcmp (latex (y), '\sin{\left(x \right)}')) ***** assert (strcmp (latex (exp (sym('x'))), 'e^{x}')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/sum.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sum.m ***** error sum (sym(1), 2, 3) ***** error sum (sym(1), 42) ***** shared x,y,z syms x y z ***** assert (isequal (sum (x), x)) ***** assert (isequal (sum ([x y z]), x+y+z)) ***** assert (isequal (sum ([x; y; z]), x+y+z)) ***** assert (isequal (sum ([x y z], 1), [x y z])) ***** assert (isequal (sum ([x y z], 2), x+y+z)) ***** shared a,b b = [1 2; 3 4]; a = sym(b); ***** assert (isequal (sum(a), sum(b))) ***** assert (isequal (sum(a,1), sum(b,1))) ***** assert (isequal (sum(a,2), sum(b,2))) ***** test % weird inputs a = sum('xx', sym(1)); assert (isequal (a, sym('xx'))) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/asinh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asinh.m ***** error asinh (sym(1), 2) ***** assert (isequaln (asinh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = asinh(x); f2 = asinh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = asinh(A); f2 = asinh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = asinh (d); f = asinh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/trace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/trace.m ***** test % scalar syms x assert (isequal (trace(x), x)) ***** test syms x A = [x 3; 2*x 5]; assert (isequal (trace(A), x + 5)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/atan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atan.m ***** error atan (sym(1), 2) ***** assert (isequaln (atan (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = atan(x); f2 = atan(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = atan(A); f2 = atan(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = atan (d); f = atan (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/null.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/null.m ***** test A = sym([1 2; 3 4]); assert (isempty (null (A))) ***** assert (isempty (null (sym(4)))) ***** test A = sym([1 2 3; 3 4 5]); assert (isequal (null(A), sym([1;-2;1]))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/adjoint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/adjoint.m ***** test syms x A = [x x^2; x^3 x^4]; B = [x^4 -x^2; -x^3 x]; assert( isequal( adjoint(A), B )) ***** test syms x assert( isequal( adjoint(x), 1)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/inv.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/inv.m ***** test % scalar syms x assert (isequal (inv(x), 1/x)) ***** test % diagonal syms x A = [sym(1) 0; 0 x]; B = [sym(1) 0; 0 1/x]; assert (isequal (inv(A), B)) ***** test % 2x2 inverse A = [1 2; 3 4]; assert (max (max (abs (double (inv (sym (A))) - inv(A)))) <= 3*eps) ***** error syms a; A = [a a; a a]; inv(A) ***** error syms a; A = [a a]; inv(A) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/beta.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/beta.m ***** error beta (sym(1), 2, 3) ***** assert (isequal (double (beta (sym(1), 2)), 1/2)) ***** assert (isinf (double (beta (sym(1), 0)))) ***** test % round trip syms x y f = beta (x, y); h = function_handle (f); A = h (1.1, 2.2); B = beta (1.1, 2.2); assert (A, B) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/mod.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mod.m ***** error mod (sym(1), 2, 3 ,4) ***** assert (isequal (mod (sym(5), 4), sym(1))) ***** assert (isequal (mod ([sym(5) 8], 4), [1 0] )) ***** assert (isequal (mod (sym(5), [2 3]), [1 2] )) ***** assert (isequal (mod ([sym(5) sym(6)], [2 3]), [1 0] )) ***** test syms x assert (isequal ( mod (5*x, 3), 2*x )) ***** test syms x a = [7*x^2 + 3*x + 3 3*x; 13*x^4 6*x]; assert (isequal ( mod (a,3), [x^2 0; x^4 0] )) ***** test % vector of polys with mix of vars: symvar on each syms x y a = [6*x 7*y]; b = mod(a, 4); c = [2*x 3*y]; assert (isequal (b, c)) ***** test % coeff has variable syms x n = sym('n', 'integer'); p = (3*n + 2)*x; q = mod(p, 3); assert (isequal (q, 2*x)) ***** test % coeff has variable syms x a p = a*x; q = mod(p, 3); q = children(q); q = q(2); % order might be fragile! w = subs(q, a, 5); assert (isequal (w, 2)) ***** test % different modulo syms x y q = mod([5*x + 10 5*y + 10], [2 3]); assert (isequal (q, [x 2*y + 1])) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/acos.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acos.m ***** error acos (sym(1), 2) ***** assert (isequaln (acos (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acos(x); f2 = acos(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acos(A); f2 = acos(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acos (d); f = acos (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/dsolve.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dsolve.m ***** error dsolve (1, sym('x')) ***** test syms y(x) de = diff(y, 2) - 4*y == 0; f = dsolve(de); syms C1 C2 g1 = C1*exp(-2*x) + C2*exp(2*x); g2 = C2*exp(-2*x) + C1*exp(2*x); assert (isequal (f, g1) || isequal (f, g2)) ***** test % Not enough initial conditions syms y(x) C1 de = diff(y, 2) + 4*y == 0; g = 3*cos(2*x) + C1*sin(2*x); try f = dsolve(de, y(0) == 3); waserr = false; catch waserr = true; expectederr = regexp (lasterr (), 'Perhaps.*under-specified'); f = 42; end assert ((waserr && expectederr) || isequal (f, g)) ***** test % Solution in implicit form syms y(x) C1 de = (2*x*y(x) - exp(-2*y(x)))*diff(y(x), x) + y(x) == 0; sol = dsolve (de); eqn = x*exp(2*y(x)) - log(y(x)) == C1; % could differ by signs sol = lhs (sol) - rhs (sol); eqn = lhs (eqn) - rhs (eqn); sol2 = subs (sol, C1, -C1); assert (isequal (sol, eqn) || isequal (sol2, eqn)) ***** test % Compute solution and classification syms y(x) C1 de = (2*x*y(x) - exp(-2*y(x)))*diff(y(x), x) + y(x) == 0; [sol, classy] = dsolve (de); assert (any (strcmp (classy, '1st_exact'))) ***** test % initial conditions (first order ode) syms y(x) de = diff(y, x) + 4*y == 0; f = dsolve(de, y(0) == 3); g = 3*exp(-4*x); assert (isequal (f, g)) ***** test % initial conditions (second order ode) syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, y(0) == 3, subs(diff(y,x),x,0)==0); g = 3*cos(2*x); assert (isequal (f, g)) ***** test % Dirichlet boundary conditions (second order ode) syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, y(0) == 2, y(1) == 0); g = -2*sin(2*x)/tan(sym('2'))+2*cos(2*x); assert (isequal (simplify (f - g), 0)) ***** test % Neumann boundary conditions (second order ode) syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, subs(diff(y,x),x,0)==1, subs(diff(y,x),x,1)==0); g = sin(2*x)/2+cos(2*x)/(2*tan(sym('2'))); assert (isequal (simplify (f - g), 0)) ***** test % Dirichlet-Neumann boundary conditions (second order ode) syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, y(0) == 3, subs(diff(y,x),x,1)==0); g = 3*sin(2*x)*tan(sym('2'))+3*cos(2*x); assert (isequal (simplify (f - g), 0)) ***** test % System of ODEs gives struct, Issue #1003. syms x(t) y(t) ode1 = diff(x(t),t) == 2*y(t); ode2 = diff(y(t),t) == 2*x(t); soln = dsolve([ode1, ode2]); assert (isstruct (soln)) assert (numfields (soln) == 2) assert (isequal (sort (fieldnames (soln)), {'x'; 'y'})) ***** test % System of ODEs syms x(t) y(t) C1 C2 ode1 = diff(x(t),t) == 2*y(t); ode2 = diff(y(t),t) == 2*x(t); soln = dsolve([ode1, ode2]); soln = [soln.x, soln.y]; g1 = [C1*exp(-2*t) + C2*exp(2*t), -C1*exp(-2*t) + C2*exp(2*t)]; g2 = [C1*exp(2*t) + C2*exp(-2*t), C1*exp(2*t) - C2*exp(-2*t)]; g3 = [-C1*exp(-2*t) + C2*exp(2*t), C1*exp(-2*t) + C2*exp(2*t)]; g4 = [C1*exp(2*t) - C2*exp(-2*t), C1*exp(2*t) + C2*exp(-2*t)]; % old SymPy <= 1.5.1 had some extra twos g5 = [2*C1*exp(-2*t) + 2*C2*exp(2*t), -2*C1*exp(-2*t) + 2*C2*exp(2*t)]; g6 = [2*C1*exp(2*t) + 2*C2*exp(-2*t), 2*C1*exp(2*t) - 2*C2*exp(-2*t)]; assert (isequal (soln, g1) || isequal (soln, g2) || ... isequal (soln, g3) || isequal (soln, g4) || ... isequal (soln, g5) || isequal (soln, g6)) ***** test % System of ODEs (initial-value problem) syms x(t) y(t) ode_1=diff(x(t),t) == 2*y(t); ode_2=diff(y(t),t) == 2*x(t); sol_ivp=dsolve([ode_1,ode_2],x(0)==1,y(0)==0); g_ivp=[exp(-2*t)/2+exp(2*t)/2,-exp(-2*t)/2+exp(2*t)/2]; assert (isequal ([sol_ivp.x, sol_ivp.y], g_ivp)) ***** test syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, y(0) == 0, y(sym(pi)/4) == 1); g = sin(2*x); assert (isequal (f, g)) ***** test % Nonlinear example syms y(x) C1 e = diff(y, x) == y^2; g = -1 / (C1 + x); soln = dsolve(e); assert (isequal (soln, g)) ***** test % Nonlinear example with initial condition syms y(x) e = diff(y, x) == y^2; g = -1 / (x - 1); soln = dsolve(e, y(0) == 1); assert (isequal (soln, g)) ***** test % forcing, Issue #183, broken in older sympy if (pycall_sympy__ ('return Version(spver) >= Version("1.7.1")')) syms x(t) y(t) ode1 = diff(x) == x + sin(t) + 2; ode2 = diff(y) == y - t - 3; soln = dsolve([ode1 ode2], x(0) == 1, y(0) == 2); X = soln.x; Y = soln.y; assert (isequal (diff(X) - (X + sin(t) + 2), 0)) assert (isequal (diff(Y) - (Y - t - 3), 0)) end ***** test syms f(x) a b de = diff(f, x) == 4*f; s = dsolve(de, f(a) == b); assert (isequal (subs(s, x, a), b)) ***** test % array of ICs syms x(t) y(t) ode_1 = diff (x(t), t) == 2*y(t); ode_2 = diff (y(t), t) == 2*x(t); sol = dsolve([ode_1, ode_2], [x(0)==1 y(0)==0]); g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; assert (isequal ([sol.x, sol.y], g)) ***** test % cell-array of ICs or ODEs, but not both % Note: to support both we'd need a wrapper outside of @sym syms x(t) y(t) ode_1 = diff (x(t), t) == 2*y(t); ode_2 = diff (y(t), t) == 2*x(t); sol = dsolve([ode_1, ode_2], {x(0)==1 y(0)==0}); g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; assert (isequal ([sol.x, sol.y], g)) sol = dsolve({ode_1, ode_2}, [x(0)==1 y(0)==0]); g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; assert (isequal ([sol.x, sol.y], g)) ***** test % array of ICs, Issue #1040. if (pycall_sympy__ ('return Version(spver) >= Version("1.7.1")')) syms x(t) y(t) z(t) syms x_0 y_0 z_0 diffEqns = [diff(x, t) == -x + 1, diff(y, t) == -y, diff(z, t) == -z]; initCond = [x(0) == x_0, y(0) == y_0, z(0) == z_0]; soln = dsolve (diffEqns, initCond); soln = [soln.x, soln.y, soln.z]; exact_soln = [(x_0 - 1)*exp(-t) + 1 y_0*exp(-t) z_0*exp(-t)]; assert (isequal (soln, exact_soln)) end 21 tests, 21 passed, 0 known failure, 0 skipped [inst/@sym/acoth.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acoth.m ***** error acoth (sym(1), 2) ***** assert (isequaln (acoth (sym(nan)), sym(nan))) ***** shared x, d d = 2; x = sym('2'); ***** test f1 = acoth(x); f2 = acoth(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acoth(A); f2 = acoth(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acoth (d); f = acoth (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ezcontour.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezcontour.m ***** error syms x y z ezcontour (x*y*z) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/ellipticCPi.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCPi.m ***** error ellipticCPi (sym (1)) ***** error ellipticCPi (sym (1), 2, 3) ***** assert (double (ellipticCPi (0, sym (1)/2)), 1.854074677, 10e-10) ***** assert (double (ellipticCPi (sym (6)/10, sym(71)/10)), 1.29469534336658, -20*eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/isnan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isnan.m ***** shared x,zoo,oo,snan oo = sym(inf); zoo = sym('zoo'); x = sym('x'); snan = sym(nan); ***** test % various ops that give nan assert (isnan(0*oo)) assert (isnan(0*zoo)) assert (isnan(snan)) assert (isnan(snan-snan)) assert (isnan(oo+snan)) assert (isnan(oo-oo)) assert (isnan(oo-zoo)) assert (isnan(oo+zoo)) assert (~isnan(oo)) assert (~isnan(zoo)) assert (~isnan(oo+oo)) ***** test % more ops give nan assert(isnan(x+snan)) assert(isnan(x*snan)) assert(isnan(0*snan)) assert(isnan(x+nan)) assert(isnan(x*nan)) assert(isnan(sym(0)*nan)) ***** test % array assert (isequal( isnan([oo zoo]), [0 0] )) assert (isequal( isnan([10 snan]), [0 1] )) assert (isequal( isnan([snan snan]), [1 1] )) assert (isequal( isnan([snan x]), [1 0] )) ***** test % sub in to algebraic expression gives nan y = x - oo; y = subs(y, x, oo); assert(isnan(y)) ***** test % Must not contain string 'symbol'; these all should make an % actual nan. Actually a ctor test, not isnan. y = sym(nan); assert (isempty (strfind (sympy (y), 'Symbol'))) y = sym('nan'); assert (isempty (strfind (sympy (y), 'Symbol'))) y = sym('NaN'); assert (isempty( strfind (sympy (y), 'Symbol'))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/imag.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/imag.m ***** assert (isequal (imag (sym (4) + 3i),3)) ***** test syms x y real z = x + 1i*y; assert (isequal (imag (z),y)) ***** test syms x y real Z = [4 x + 1i*y; 1i*y 4 + 3i]; assert (isequal (imag (Z),[0 y; y 3])) ***** test syms x real d = exp (x*i); assert (isequal (imag (d), sin (x))) ***** test % round trip syms x d = 3 - 5i; f = imag (x); A = imag (d); h = function_handle (f); B = h (d); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ipermute.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ipermute.m ***** error permute (sym(1)) ***** error permute (sym(1), 2, 3) ***** test syms x A = [1 x]; perm = [2 1]; B = permute(A, perm); C = ipermute(B, perm); assert (isequal(C, A)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/sec.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sec.m ***** error sec (sym(1), 2) ***** assert (isequaln (sec (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sec(x); f2 = sec(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sec(A); f2 = sec(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sec (d); f = sec (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/angle.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/angle.m ***** test Z = [sqrt(sym(3)) + 3*sym(i), 3 + sqrt(sym(3))*sym(i); 1 + sym(i), sym(i)]; Q = [sym(pi)/3 sym(pi)/6; sym(pi)/4 sym(pi)/2]; assert( isequal( angle(Z), Q)); ***** test % roundtrip syms x A = angle (2+2i); f = angle (x); h = function_handle (f); B = h (2+2i); assert (A, B, -eps) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/iscolumn.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/iscolumn.m ***** assert (iscolumn (sym ([1]))) ***** assert (iscolumn (sym ([1 2 3]'))) ***** assert (~iscolumn (sym ([]))) ***** assert (~iscolumn (sym ([1 2 3]))) ***** assert (~iscolumn (sym ([1 2; 3 4]))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/cosh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosh.m ***** error cosh (sym(1), 2) ***** assert (isequaln (cosh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = cosh(x); f2 = cosh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cosh(A); f2 = cosh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = cosh (d); f = cosh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/real.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/real.m ***** assert (isequal (real (sym (4) + 3i),4)) ***** test syms x y real z = x + 1i*y; assert (isequal (real (z),x)) ***** test syms x y real Z = [4 x + 1i*y; x 4 + 3i]; assert (isequal (real (Z),[4 x; x 4])) ***** test syms x real d = exp (x*i); assert (isequal (real (d), cos (x))) ***** test % round trip syms x d = 3 - 5i; f = real (x); A = real (d); h = function_handle (f); B = h (d); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/polylog.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/polylog.m ***** assert (isequal (polylog (sym('s'), 0), sym(0))) ***** assert (isequal (double (polylog (1, sym(-1))), -log(2))) ***** assert (isequal (double (polylog (0, sym(2))), -2)) ***** assert (isequal (double (polylog (-1, sym(2))), 2)) ***** assert (isequal (double (polylog (-2, sym(3))), -1.5)) ***** assert (isequal (double (polylog (-3, sym(2))), 26)) ***** assert (isequal (double (polylog (-4, sym(3))), -15)) ***** assert (isequal (double (polylog (1, sym(1)/2)), log(2))) ***** test % round trip syms s z f = polylog (s, z); h = function_handle (f, 'vars', [s z]); A = h (1.1, 2.2); B = polylog (1.1, 2.2); assert (A, B) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/acosh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acosh.m ***** error acosh (sym(1), 2) ***** assert (isequaln (acosh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acosh(x); f2 = acosh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acosh(A); f2 = acosh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acosh (d); f = acosh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/flipud.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/flipud.m ***** test % simple syms x A = [x 2; sym(pi) x]; B = [sym(pi) x; x 2]; assert (isequal (flipud(A), B)) ***** test % simple, odd # rows syms x A = [x 2; sym(pi) x; [1 2]]; B = [[1 2]; sym(pi) x; x 2]; assert (isequal (flipud(A), B)) ***** test % scalar syms x assert (isequal (flipud(x), x)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/ne.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ne.m ***** test % simple x = sym(1); y = sym(1); e = x ~= y; assert (~logical (e)) x = sym(1); y = sym(2); e = x ~= y; assert (logical(e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a ~= b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 ~= x)) assert (~logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x ~= 10)) ***** test % oo syms oo x e = oo ~= x; assert (isa (e, 'sym')) s = strtrim (disp (e, 'flat')); % SymPy <= 0.7.6.x will be '!=', newer gives 'Ne', test both assert (strcmp (s, 'oo != x') || strcmp (s, 'Ne(oo, x)')) ***** test % nan syms oo x snan = sym(nan); e = snan ~= sym(0); assert (logical (e)) e = snan ~= snan; assert (logical (e)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/or.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/or.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple assert (isequal (t | f, t)) assert (isequal (t | t, t)) assert (isequal (f | f, f)) ***** test % array w = [t t f f]; z = [t f t f]; assert (isequal (w | z, [t t t f])) ***** test % output is sym even for scalar t/f assert (isa (t | f, 'sym')) ***** test % eqns syms x e = or(x == 4, x == 5); assert (isequal (subs(e, x, [3 4 5 6]), [f t t f])) ***** error or (sym(1), 2, 3) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ezmesh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezmesh.m ***** error syms u v t ezmesh(u*v, 2*u*v, 3*v*t) ***** error syms u v t ezmesh(u*v, 2*u*v, u*v*t) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/gammaln.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gammaln.m ***** assert (isequal (gammaln (sym (3)), log (sym (2)))) ***** assert (isequal (gammaln (sym (10)), log (gamma (sym (10))))) ***** test % compare to Maple: evalf(lnGAMMA(Pi)); maple = vpa ('0.827694592323437101529578558452359951153502', 40); us = vpa (gammaln (sym(pi)), 40); assert (abs(double(maple-us)) < 1e-39) ***** test % compare to Maple: evalf(lnGAMMA(3+2*I)); maple = vpa ('-0.0316390593739611898037677296008797172022603', 40) + ... vpa ('2.02219319750132712401643376238334982100512j', 40); us = vpa (gammaln (sym(3) + 2i), 40); assert (abs(double(maple-us)) < 1e-39) ***** test % compare to Maple: evalf(lnGAMMA(-1.5)); % notably, @double/gammaln has zero imag part maple = vpa ('0.8600470153764810145109326816703567873271571', 40) - ... vpa ('6.2831853071795864769252867665590057683943388j', 40); us = vpa (gammaln (-sym(3)/2), 40); assert (abs(double(maple-us)) < 1e-39) ***** assert (gammaln (pi), double (gammaln (sym (pi))), -3*eps) ***** assert (gammaln (100), double (gammaln (sym (100))), -3*eps) ***** assert (gammaln (1e-3), double (gammaln (1/sym (1e3))), -100*eps) ***** test % round trip syms x f = gammaln (x); h = function_handle (f); A = h (1.1); B = gammaln (1.1); assert (A, B) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/sympy.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sympy.m ***** assert (strcmp (sympy (sym(pi)), 'pi')) ***** assert (strcmp (sympy (sym(1)), 'Integer(1)')) ***** assert (strcmp (sympy (sym(2)/3), 'Rational(2, 3)')) ***** assert (strcmp (sympy (sym('x')), 'Symbol(''x'')')) ***** test x = sym('x'); assert (isequal (sym(sympy(x)), x)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/gammainc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gammainc.m ***** assert (isequal (gammainc (sym(0), 1), sym(0))) ***** assert (isequal (gammainc (sym(0), 2), sym(0))) ***** assert (isequal (gammainc (sym('oo'), 1), sym(1))) ***** assert (isequal (gammainc (sym(0), 1, 'upper'), sym(1))) ***** assert (isequal (gammainc (sym(0), 2, 'upper'), sym(1))) ***** assert (isequal (gammainc (sym('oo'), 1, 'upper'), sym(0))) ***** test % default is lower syms x a assert (isequal (gammainc (x, a), gammainc(x, a, 'lower'))) ***** test % compare to double x = 5; a = 1; A = gammainc (x, a); B = double (gammainc (sym(x), a)); assert(A, B, -eps) ***** test % compare to double where gamma(a) != 1 x = 5; a = 3; A = gammainc (x, a); B = double (gammainc (sym(x), a)); assert(A, B, -eps) ***** test % compare to double x = 100; a = 1; A = gammainc (x, a); B = double (gammainc (sym(x), a)); assert(A, B, -eps) ***** test % compare to double xs = sym(1)/1000; x = 1/1000; a = 1; A = gammainc (x, a); B = double (gammainc (xs, a)); assert(A, B, -eps) ***** test % compare to double x = 5; a = 1; A = gammainc (x, a, 'upper'); B = double (gammainc (sym(x), a, 'upper')); assert(A, B, -10*eps) ***** test % compare to double x = 10; a = 1; A = gammainc (x, a, 'upper'); B = double (gammainc (sym(x), a, 'upper')); assert(A, B, -10*eps) ***** test % compare to double x = 40; a = 1; A = gammainc (x, a, 'upper'); B = double (gammainc (sym(x), a, 'upper')); assert(A, B, -10*eps) ***** test % compare to double xs = sym(1)/1000; x = 1/1000; a = 1; A = gammainc (x, a, 'upper'); B = double (gammainc (xs, a, 'upper')); assert(A, B, -eps) ***** test % vectorized P = gammainc([sym(pi) 2], [1 3]); expected = [gammainc(pi, sym(1)) gammainc(2, sym(3))]; assert (isequal (P, expected)) ***** test % vectorized P = gammainc(sym(pi), [1 3]); expected = [gammainc(sym(pi), 1) gammainc(sym(pi), 3)]; assert (isequal (P, expected)) ***** test % vectorized P = gammainc([sym(pi) 2], 1); expected = [gammainc(pi, sym(1)) gammainc(2, sym(1))]; assert (isequal (P, expected)) ***** test % round trip syms x a f = gammainc (x, a, 'upper'); h = function_handle (f, 'vars', [x a]); A = h (1.1, 2); B = gammainc (1.1, 2, 'upper'); assert (A, B) ***** test % round trip syms x a f = gammainc (x, a, 'lower'); h = function_handle (f, 'vars', [x a]); A = h (1.1, 2); B = gammainc (1.1, 2, 'lower'); assert (A, B) ***** test % round trip syms x a f = gammainc (x, a, 'upper'); h = function_handle (f, 'vars', [x a]); A = h (1.1, 2.2); B = gammainc (1.1, 2.2, 'upper'); assert (A, B) ***** test % round trip syms x a f = gammainc (x, a, 'lower'); h = function_handle (f, 'vars', [x a]); A = h (1.1, 2.2); B = gammainc (1.1, 2.2, 'lower'); assert (A, B) 22 tests, 22 passed, 0 known failure, 0 skipped [inst/@sym/isrow.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isrow.m ***** assert (isrow (sym ([1]))) ***** assert (isrow (sym ([1 2 3]))) ***** assert (~isrow (sym ([]))) ***** assert (~isrow (sym ([1 2 3]'))) ***** assert (~isrow (sym ([1 2; 3 4]))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/coeffs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coeffs.m ***** error coeffs (sym(1), 2, 3, 4) ***** error coeffs (sym(1), 2, 'al') ***** error coeffs (sym(1), 'al') ***** test % simple syms x [c, t] = coeffs(6*x*x + 27); assert (isequal (c, [6 27])) assert (isequal (t, [x*x 1])) ***** test % specify a variable syms x [c, t] = coeffs(6*x*x + 27, x); assert (isequal (c, [6 27])) assert (isequal (t, [x*x 1])) ***** test % specify another variable syms x y [c, t] = coeffs(6*x + 27, y); assert (isequal (c, 6*x + 27)) assert (isequal (t, 1)) ***** test % weird SMT order syms x a1 = [27 6]; a2 = [6 27]; c = coeffs(6*x*x + 27); assert (isequal (c, a1)) coeffs(6*x*x + 27); assert (isequal (ans, a1)) [c, t] = coeffs(6*x*x + 27); assert (isequal (c, a2)) ***** test % no weird order with "all" syms x c = coeffs(6*x*x + 27, 'all'); assert (isequal (c, [6 0 27])) ***** test % "all" syms x [c, t] = coeffs(6*x*x + 27, 'all'); assert (isequal (c, [6 0 27])) assert (isequal (t, [x^2 x 1])) ***** test % "All" syms x [c, t] = coeffs(6*x, 'All'); assert (isequal (c, [6 0])) assert (isequal (t, [x 1])) ***** test % multivariable array syms x y [c, t] = coeffs(6*x*x + 27*y*x + 36, [x y]); a = [6 27 36]; s = [x^2 x*y 1]; assert (isequal (c, a)) assert (isequal (t, s)) % with list [c, t] = coeffs(6*x*x + 27*y*x + 36, {x y}); assert (isequal (c, a)) assert (isequal (t, s)) ***** test % other symbols treated as part of coeffs syms x y [c, t] = coeffs(6*x*x + 27*y*x + 36, x); a = [6 27*y 36]; s = [x^2 x 1]; assert (isequal (c, a)) assert (isequal (t, s)) ***** error % TODO: multivariate all not working (https://github.com/gnu-octave/symbolic/issues/720) syms x y [c, t] = coeffs(6*x^2 + 7*y + 19, [x y], 'all'); ***** test % empty same as not specifying; maybe not SMT compatible: % https://github.com/gnu-octave/symbolic/pull/708#discussion_r94292831 syms x y [c, t] = coeffs(6*x*x + 27*y*x + 36, {}); a = [6 27 36]; assert (isequal (c, a)) [c, t] = coeffs(6*x*x + 27*y*x + 36); assert (isequal (c, a)) ***** test % no input defaults to all symbols (not symvar to get x) syms x y [c, t] = coeffs(6*x*x + 27*y*x + 36); assert (isequal (c, [6 27 36])) ***** test % non sym input syms x assert (isequal (coeffs(6, x), sym(6))) ***** test % constant input without x assert (isequal (coeffs(sym(6)), sym(6))) ***** test % constant input without x assert (isequal (coeffs (sym(6), {}), sym(6))) % irrational coefficients syms x f = x^2 + sqrt(sym(2))*x; [c1, t1] = coeffs (f); [c2, t2] = coeffs (f, x); assert (isequal (c1, c2)) assert (isequal (t1, t2)) 18 tests, 18 passed, 0 known failure, 0 skipped [inst/@sym/isallconstant.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isallconstant.m ***** assert (isallconstant([sym(1) 2 3])) ***** test syms x assert (~isallconstant([sym(1) x 3])) ***** test syms x assert (~isallconstant([sym(1) x; sym(2) 3])) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/display.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/display.m ***** test assert(true) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/dot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dot.m ***** error dot (sym(1), 2, 3) ***** test a = sym([1; 1; 0]); b = sym([1; 2; 4]); c = dot(a, b); assert (isequal (c, sym(3))) ***** test syms x a = sym([x; 0; 0]); b = sym([0; 1; 0]); c = dot(a, b); assert (isequal (c, sym(0))) ***** test assert (isequal (dot (sym([1 i]), sym([i 2])), sym(-i))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/cumsum.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cumsum.m ***** shared x, y x = sym ('x'); y = sym ('y'); ***** error cumsum (x, 1, 2) ***** assert (isequal (cumsum ([-x; -2*x; -3*x]), [-x; -3*x; -6*x])) ***** assert (isequal (cumsum ([x + 2i*y, 2*x + i*y]), [x + 2i*y, 3*x + 3i*y])) ***** assert (isequal (cumsum ([x, 2*x; 3*x, 4*x], 1), [1*x, 2*x; 4*x, 6*x] )) ***** assert (isequal (cumsum ([x, 2*x; 3*x, 4*x], 2), [1*x, 3*x; 3*x, 7*x] )) ***** test cumsum ([x, x], [2, 1]); # ensure behaves like builtin cumsum ***** test cumsum ([x, x], [1, -2]); # ensure behaves like builtin cumsum ***** error cumsum (x, []) ***** error cumsum (x, {1}) ***** error cumsum (x, struct('a', 1)) ***** error cumsum (x, x) ***** error cumsum (x, 0) ***** error cumsum (x, -1) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/cosint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosint.m ***** error cosint (sym(1), 2) ***** xtest assert (isequaln (cosint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (cosint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = cosint(x); f2 = 0.3374039229009681346626; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cosint(A); f2 = 0.3374039229009681346626; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = cosint (d); f = cosint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) ***** test % rewrite syms x y1 = cosint (x); y2 = rewrite (y1, 'Integral'); d1 = diff (y1, x); d2 = diff (y2, x); assert (isequal (d1, simplify(d2))) v1 = double (subs (d1, x, 2)); v2 = double (subs (d2, x, 2)); assert (v1, v2, -eps) 6 tests, 5 passed, 1 known failure, 0 skipped [inst/@sym/airy.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/airy.m ***** test syms z a = airy(0, z); ap = airy(1, z); assert (isequal (diff (a), ap)) assert (isequal (diff (ap), z*a)) ***** test syms z b = airy(2, z); bp = airy(3, z); assert (isequal (diff (b), bp)) assert (isequal (diff (bp), z*b)) ***** test % default to k=0 syms z a = airy(0, z); a2 = airy(z); assert (isequal (a, a2)) ***** error airy(0, sym('x'), 2) ***** error airy(4, sym('z')) ***** error airy(-1, sym('z')) ***** test % symbolic k syms z b1 = airy(2, z); b2 = airy(sym(2), z); assert (isequal (b1, b2)) ***** test % doubles, relative error X = [1 2 pi; 4i 5 6+6i]; Xs = sym(X); for k = 0:3 A = double(airy(k, Xs)); B = airy(k, X); assert (all (all (abs(A - B) < 500*eps*abs(A)))) end ***** test % round-trip syms x for k = 0:3 A = airy(k, 10); q = airy(k, x); h = function_handle(q); B = h(10); assert (abs(A-B) < 500*eps*abs(A)) end 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/diag.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/diag.m ***** test % scalar syms x assert (isequal (diag(x), x)) ***** test % row,col vec input syms x r = [1 x 2]; c = [sym(1); x]; assert (isequal (diag(diag(c)), c)) assert (isequal (diag(c), [sym(1) 0; 0 x])) assert (isequal (diag(diag(r)), r.')) assert (isequal (diag(r), [sym(1) 0 0; 0 x 0; sym(0) 0 2])) ***** test % create matrix, kth diag syms x r = [1 x]; z = sym(0); assert (isequal (diag (x, 0), x)) assert (isequal (diag (x, 1), [z x; z z])) assert (isequal (diag (x, -1), [z z; x z])) assert (isequal (diag (x, 2), [z z x; z z z; z z z])) assert (isequal (diag (r, 1), [z 1 z; z z x; z z z])) ***** test % extract kth diag A = sym([1 2 3; 4 5 6]); assert (isequal (diag(A), sym([1; 5]))) assert (isequal (diag(A, 0), sym([1; 5]))) assert (isequal (diag(A, 1), sym([2; 6]))) assert (isequal (diag(A, 2), sym(3))) assert (isequal (diag(A, -1), sym(4))) assert (isempty (diag(A, -2))) assert (isempty (diag(A, 3))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/besseli.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besseli.m ***** test X = [1 2 3; 4 5 6]; ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; n = double(ns); A = double(besseli(ns, X)); B = besseli(n, X); assert (all (all (abs (A - B) < 100*eps*abs(A)))) ***** test % roundtrip syms x A = besseli(2, 10); q = besseli(2, x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps*abs(A)) ***** error besseli(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/ellipke.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipke.m ***** error ellipke (sym(1), 2) ***** test for i = 2:10 [K E] = ellipke (sym (1)/i); [k e] = ellipke (1/i); assert (double ([K E]), [k e], 2*eps) end 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/zeta.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/zeta.m ***** error zeta (sym(1), 2, 3) ***** assert (isequaln (zeta (sym(nan)), sym(nan))) ***** test f1 = zeta (sym(2)); f2 = pi^2/6; assert (double (f1), f2, -1e-15) ***** test A = sym([0 2; 4 6]); f1 = zeta (A); f2 = [-1/2 pi^2/6; pi^4/90 pi^6/945]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); f = zeta (y); h = function_handle (f); A = zeta (2); B = h (2); assert (A, B, -eps) ***** test syms x assert (isequal (zeta (0, x), zeta(x))) ***** test % ensure its the nth deriv wrt x, not the n deriv syms x n F = zeta (n, x); F = subs(F, n, 3); assert (isequal (F, diff (zeta (x), x, x, x))) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/mtimes.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mtimes.m ***** test % scalar syms x assert (isa (x*2, 'sym')) assert (isequal (2*sym(3), sym(6))) assert (isequal (sym(2)*3, sym(6))) ***** test % matrix-scalar D = [0 1; 2 3]; A = sym(D); assert (isa (2*A, 'sym')) assert (isequal ( 2*A , 2*D )) assert (isequal ( A*2 , 2*D )) ***** test % matrix-matrix D = [0 1; 2 3]; A = sym(D); assert (isa (A*A, 'sym')) assert (isequal ( A*A , D*D )) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/tan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tan.m ***** error tan (sym(1), 2) ***** assert (isequaln (tan (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = tan(x); f2 = tan(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = tan(A); f2 = tan(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = tan (d); f = tan (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/lgamma.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lgamma.m ***** test % tested by gammaln assert (isequal (lgamma (sym ('x')), gammaln (sym ('x')))) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/assumeAlso.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/assumeAlso.m ***** test syms x x = assumeAlso(x, 'positive'); a = assumptions(x); assert(strcmp(a, 'x: positive')) ***** error syms x x = assumeAlso (x, x); ***** test syms x positive x = assumeAlso(x, 'integer'); [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) ***** test % multiple assumptions syms x positive x = assumeAlso(x, 'integer', 'even'); [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) assert(a{1}.even) ***** test % multiple assumptions syms x integer x = assumeAlso (x, 'even', 'positive'); [tilde, a] = assumptions (x, 'dict'); assert (a{1}.integer) assert (a{1}.even) assert (a{1}.positive) ***** test % has output so avoids workspace syms x positive x2 = x; f = sin(x); assumeAlso(x, 'integer'); a = assumptions(x); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) a = assumptions(x2); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) a = assumptions(f); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) ***** test % has no output so does workspace syms x positive x2 = x; f = sin(x); assumeAlso(x, 'integer'); a = assumptions(x); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) a = assumptions(x2); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) a = assumptions(f); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) ***** error syms a assumeAlso (a > 0) ***** test syms x y assumeAlso ([x y], 'even') assert (strcmp (assumptions (x), 'x: even')) assert (strcmp (assumptions (y), 'y: even')) ***** test syms x y positive f = sin (2*x); assumeAlso ([x y], 'even') assert (strcmp (assumptions (x), 'x: even, positive') || strcmp (assumptions (x), 'x: positive, even')) assert (strcmp (assumptions (y), 'y: even, positive') || strcmp (assumptions (y), 'y: positive, even')) assert (strcmp (assumptions (f), 'x: even, positive') || strcmp (assumptions (f), 'x: positive, even')) ***** test % with output, original x and y are unchanged syms x y positive f = sin (2*x); [p, q] = assumeAlso ([x y], 'even'); assert (strcmp (assumptions (x), 'x: positive')) assert (strcmp (assumptions (y), 'y: positive')) assert (strcmp (assumptions (f), 'x: positive')) assert (strcmp (assumptions (p), 'x: even, positive') || strcmp (assumptions (p), 'x: positive, even')) assert (strcmp (assumptions (q), 'y: even, positive') || strcmp (assumptions (q), 'y: positive, even')) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/gamma.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gamma.m ***** error gamma (sym(1), 2) ***** assert (isequaln (gamma (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = gamma(x); f2 = gamma(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = gamma(A); f2 = gamma(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = gamma (d); f = gamma (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ellipticK.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticK.m ***** error ellipticK (sym(1), 2) ***** assert (isequal (ellipticK (sym (0)), sym (pi)/2)) ***** assert (isequal (ellipticK (sym (-inf)), sym (0))) ***** assert (double (ellipticK (sym (1)/2)), 1.854074677, 10e-10) ***** assert (double (ellipticK (sym (pi)/4)), 2.225253684, 10e-10) ***** assert (double (ellipticK (sym (-55)/10)), 0.9324665884, 10e-11) ***** test % compare to double ellipke m = 1/5; ms = sym(1)/5; [K, E] = ellipke (m); assert (double (ellipticK (ms)), K, -1e-15) assert (double (ellipticE (ms)), E, -1e-15) ***** test % compare to double ellipke if (exist ('OCTAVE_VERSION', 'builtin')) m = -10.3; ms = -sym(103)/10; [K, E] = ellipke (m); assert (double (ellipticK (ms)), K, -1e-15) assert (double (ellipticE (ms)), E, -1e-15) end ***** test % compare to Maple us = vpa (ellipticK (sym (7)), 40); % > evalf(EllipticK(sqrt(7)), 40); maple = vpa ('0.6168027921799632674669917683443602673441', 40) - ... vpa ('0.9114898734184488922164103102629560336918j', 40); assert (abs (double (maple - us)), 0, 1e-39) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/asec.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asec.m ***** error asec (sym(1), 2) ***** assert (isequaln (asec (sym(nan)), sym(nan))) ***** shared x, d d = 2; x = sym('2'); ***** test f1 = asec(x); f2 = asec(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = asec(A); f2 = asec(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = asec (d); f = asec (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isinf.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isinf.m ***** shared x,zoo,oo,snan oo = sym(inf); zoo = sym('zoo'); x = sym('x'); snan = sym(nan); ***** test % various ops that give inf and nan assert (isinf(oo)) assert (isinf(zoo)) assert (isinf(oo+oo)) assert (~isinf(oo+zoo)) assert (~isinf(0*oo)) assert (~isinf(0*zoo)) assert (~isinf(snan)) assert (~isinf(oo-oo)) assert (~isinf(oo-zoo)) ***** test % arrays assert (isequal( isinf([oo zoo]), [1 1] )) assert (isequal( isinf([oo 1]), [1 0] )) assert (isequal( isinf([10 zoo]), [0 1] )) assert (isequal( isinf([x oo x]), [0 1 0] )) ***** test % Must not contain string 'symbol'; these all should make an % actual infinity. Actually a ctor test, not isinf. % IIRC, SMT in Matlab 2013b fails. oo = sym(inf); assert (isempty (strfind (sympy (oo), 'Symbol'))) oo = sym(-inf); assert (isempty (strfind (sympy (oo), 'Symbol'))) oo = sym('inf'); assert (isempty (strfind (sympy (oo), 'Symbol'))) oo = sym('-inf'); assert (isempty (strfind (sympy (oo), 'Symbol'))) oo = sym('Inf'); assert (isempty (strfind (sympy (oo), 'Symbol'))) ***** test % ops with infinity shouldn't collapse syms x oo zoo y = x + oo; assert (~isempty (strfind (lower (sympy (y)), 'add') )) y = x - oo; assert (~isempty (strfind (lower (sympy (y)), 'add') )) y = x - zoo; assert (~isempty (strfind (lower (sympy (y)), 'add') )) y = x*oo; assert (~isempty (strfind (lower (sympy (y)), 'mul') )) ***** test % ops with infinity are not necessarily infinite syms x oo zoo y = x + oo; assert(~isinf(y)) % SMT 2014a says "true", I disagree y = x - zoo; assert(~isinf(y)) y = x*oo; assert(~isinf(y)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isNone.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isNone.m ***** test None = pycall_sympy__ ('return None'); ***** shared None None = pycall_sympy__ ('return None'); ***** assert (isNone(None)) ***** assert (~isNone(sym('x'))) ***** assert (islogical(isNone(None))) ***** test a = [1 None]; a = [None None]; a = [None; 1]; a = [None; None]; a = [None 2; 3 None]; ***** test a = sym([1 2]); a(1,2) = None; assert (isequal (a, [sym(1) None])); ***** assert (isequal (None(1), None)); ***** error None(None); ***** error x=sym('x'); x(None); ***** error x=1; x(None); ***** error None(None); ***** error 1 + None; ***** error None - 1; ***** error 6*None; ***** error 2^None; ***** error [1 2].*None; ***** error isconstant(None); ***** error nnz(None); ***** error logical(None); ***** error isAlways(None); ***** error logical([sym(true) None]); ***** error isAlways([sym(true) None]); ***** assert (isequal (children(None), None)) ***** assert (isequal (repmat(None, 1, 2), [None None])) ***** assert (isequal (fliplr(None), None)) ***** assert (isequal (flipud(None), None)) 26 tests, 26 passed, 0 known failure, 0 skipped [inst/@sym/subsasgn.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsasgn.m ***** shared a,b b = [1:4]; a = sym(b); ***** test a(1) = 10; b(1) = 10; assert(isequal( a, b )) ***** test I = logical([1 0 1 0]); a(I) = 2; b(I) = 2; assert(isequal( a, b )) ***** test I = logical([1 0 1 0]); a(I) = [2 4]; b(I) = [2 4]; assert(isequal( a, b )) ***** test I = logical([1 0 1 0]); a(I) = [2; 4]; b(I) = [2; 4]; assert(isequal( a, b )) ***** shared ***** test b = 1:4; b = [b; 2*b; 3*b]; a = sym(b); rhs = [10 11; 12 13]; a([1:2],[1:2]) = rhs; b([1:2],[1:2]) = rhs; assert(isequal( a, b )) a(1:2,1:2) = rhs; assert(isequal( a, b )) ***** test % slice : b = 1:4; b = [b; 2*b]; a = sym(b); rhs = [10 11; 12 13]; a(:,2:3) = rhs; b(:,2:3) = rhs; assert(isequal( a, b )) ***** test % grow 2D b = 1:4; b = [b; 2*b]; a = sym(b); rhs = [10 11; 12 13]; a([1 end+1],end:end+1) = rhs; b([1 end+1],end:end+1) = rhs; assert(isequal( a, b )) ***** test % grow from nothing clear a a(3) = sym (1); b = sym ([0 0 1]); assert (isequal (a, b)) ***** test % grow from nothing, 2D clear a a(2, 3) = sym (1); b = sym ([0 0 0; 0 0 1;]); assert (isequal (a, b)) ***** test % linear indices of 2D b = 1:4; b = [b; 2*b; 3*b]; a = sym(b); b(1:4) = [10 11 12 13]; a(1:4) = [10 11 12 13]; assert(isequal( a, b )) b(1:4) = [10 11; 12 13]; a(1:4) = [10 11; 12 13]; assert(isequal( a, b )) ***** error % Wrong shape matrix RHS: Matlab/Octave don't allow this on doubles. % Matlab SMT 2013b gets it wrong. We throw an error. rhs = [10 11; 12 13]; a = sym (magic (3)); a(1:2,1:2) = rhs(:); ***** test % Issue #963: vector RHS with diff orientation from 2D indexing b = 1:4; b = [b; 2*b; 3*b]; a = sym(b); b(1:2:3, 1) = 11:2:13; a(1:2:3, 1) = sym(11:2:13); assert (isequal (a, b)) b(1:2:3, 1) = 1:2:3; a(1:2:3, 1) = 1:2:3; assert (isequal (a, b)) ***** test % Issue #963: vector RHS with diff orientation from 2D indexing a = sym (magic (3)); b = a; a(1:2:3, 2) = [14 15]; b(1:2:3, 2) = [14; 15]; assert (isequal (a, b)) a(2, 1:2:3) = [24 25]; b(2, 1:2:3) = [24; 25]; assert (isequal (a, b)) ***** test % 1D growth and 'end' g = sym([1 2 3]); g(3:4) = [67 68]; g(end:end+1) = [12 14]; assert(isequal( g, [1 2 67 12 14] )) ***** test % expanding empty and scalar syms x c = sym([]); c(1) = x; assert(isequal( c, x )) c(2) = 2*x; assert(isequal( c, [x 2*x] )) ***** shared a,b,I,J b = 1:4; b = [b; 3*b; 5*b]; a = sym(b); I = logical([1 0 1]); J = logical([1 0 1 0]); ***** assert(isequal( a(I,J), b(I,J) )) ***** test rhs = [90 91; 92 93]; b(I, J) = rhs; a(I, J) = rhs; assert(isequal( a, b )) ***** test b(I, J) = 100; a(I, J) = 100; assert(isequal( a, b )) ***** shared ***** test % logical with all false syms x y = x; y(false) = 6; assert(isequal( y, x )); a = [x x]; a([false false]) = [6 6]; assert(isequal( a, [x x] )); ***** test % issue #18, scalar access syms x x(1) = sym(6); assert(isequal( x, sym(6) )); x(1) = 6; assert(isequal( x, sym(6) )); x(true) = 88; assert(isequal( x, sym(88) )); ***** test % bug: assignment to column vector used to fail A = sym(zeros(3,1)); A(1) = 5; ***** test % symfun creation (generic function) syms x g(x) = x*x; assert(isa(g,'symfun')) ***** test % symfun creation (generic function) syms x g(x) assert(isa(g,'symfun')) ***** test % symfun creation when g already exists and is a sym/symfun syms x g = x; syms g(x) assert(isa(g,'symfun')) clear g g(x) = x; g(x) = x*x; assert(isa(g,'symfun')) ***** test % Issue #443: assignment with sym indices A = sym([10 11]); A(sym(1)) = 12; assert (isequal (A, sym([12 11]))) ***** test % Issue #443: assignment with sym indices A = sym([10 11]); A(sym(1), 1) = 12; assert (isequal (A, sym([12 11]))) A(sym(1), sym(1)) = 13; assert (isequal (A, sym([13 11]))) ***** test % Issue #443: assignment with sym indices, increase size A = sym([10 11]); A(sym(2), 1) = 12; assert (isequal (A, sym([10 11; 12 0]))) ***** error % Issue #443 A = sym([10 11]); A(2, sym('x')) = sym(12); ***** error % Issue #443 A = sym([10 11]); A(sym(2), sym('x')) = sym(12); ***** error % issue #445 A = sym([10 11]); A(1.1) = 13 ***** error % issue #445 A = sym([10 11]); A(sym(pi)) = 13 ***** error % issue #445 A = sym([1 2; 3 4]); A(1.3, 1.2) = 13 ***** test % older expansion tests syms x f = [2*x 3*x]; f(2) = 4*x; assert (isequal (f, [2*x 4*x])) f(2) = 2; assert (isequal(f, [2*x 2])) g = f; g(1,3) = x*x; assert (isequal(g, [2*x 2 x^2])) g = f; g(3) = x*x; assert (isequal(g, [2*x 2 x^2])) g = f; g(3) = 4; assert (isequal(g, [2*x 2 4])) ***** test % older slicing tests syms x f = [1 x^2 x^4]; f(1:2) = [x x]; assert (isequal( f, [x x x^4] )) f(1:2) = [1 2]; assert (isequal( f, [1 2 x^4] )) f(end-1:end) = [3 4]; assert (isequal( f, [1 3 4] )) f(3:4) = [10 11]; assert (isequal( f, [1 3 10 11] )) f(end:end+1) = [12 14]; assert (isequal( f, [1 3 10 12 14] )) ***** test % struct.str = sym, sometimes calls subsasgn d = struct(); syms x d.a = x; assert (isa (d, 'struct')) assert (isequal (d.a, x)) d.('a') = x; assert (isa (d, 'struct')) assert (isequal (d.a, x)) d = setfield(d, 'a', x); assert (isa (d, 'struct')) assert (isequal (d.a, x)) % at least on Oct 3.8, this calls sym's subsasgn d = struct(); d = setfield(d, 'a', x); assert (isa (d, 'struct')) assert (isequal (d.a, x)) ***** test % bool scalar assignments of true/false into sym syms x a = sym([1 2 x 3]); b = [1 2 10 4]; e = a == b; assert (logical (e(2))) e(2) = false; assert (~logical (e(2))) ***** test % bool vector assignments of true/false into sym syms x a = sym([1 2 x 3]); b = [1 2 10 4]; e = a == b; e(1:2) = [true true]; assert (isequal (e, [sym(1)==1 sym(2)==2 x==10 sym(3)==4])) ***** test % bool scalar promoted to vector assignments into sym syms x a = sym([1 2 x 3]); b = [1 2 10 4]; e = a == b; e(1:2) = true; assert (isequal (e, [sym(1)==1 sym(2)==2 x==10 sym(3)==4])) ***** test % grow scalar equality expression into a matrix of equalities syms a b c d e = a == b; e(2) = c == d; assert (isequal (e, [a==b c==d])) ***** shared a, b, I b = [1:4]; b = [b; 3*b; 5*b]; a = sym(b); I = mod (b, 5) > 1; ***** test A = a; A(I) = 2*b(I); B = b; B(I) = 2*b(I); assert (isequal (A, B)) ***** test % scalar RHS A = a; A(I) = 17; B = b; B(I) = 17; assert (isequal (A, B)) ***** test % nonetheless, above strange case should give right answer I = logical([1 0 1 0; 0 1 0 1; 1 0 1 0]); rhs = 2*b(I); rhs2 = reshape(rhs, 2, 3); A0 = a; A1 = a; A0(I) = rhs; A1(I) = rhs2; assert (isequal (A0, A1)) ***** shared AA, BB BB = [1 2 3; 4 5 6]; AA = sym(BB); ***** test A = AA; B = BB; B([1 6]) = [8 9]; A([1 6]) = [8 9]; assert (isequal (A, B)) ***** test % rhs scalar A = AA; B = BB; B([1 6]) = 88; A([1 6]) = 88; assert (isequal (A, B)) ***** test % If rhs is not a vector, make sure col-based access works rhs = [18 20; 19 21]; A = AA; B = BB; B([1 6]) = 88; A([1 6]) = 88; B([1 2 3 4]) = rhs; A([1 2 3 4]) = rhs; assert (isequal (A, B)) ***** test % Growth A = AA; B = BB; A(1,5) = 10; B(1,5) = 10; assert (isequal (A, B)) ***** shared ***** test % Check row deletion 1D a = sym([1; 3; 5]); b = sym([3; 5]); a(1) = []; assert( isequal( a, b)) ***** test % Check column deletion 1D a = sym([1, 4, 8]); b = sym([4, 8]); a(1) = []; assert( isequal( a, b)) ***** test % Check row deletion 2D a = sym([1, 2; 3, 4]); b = sym([3, 4]); a(1, :) = []; assert( isequal( a, b)) ***** test % Check column deletion 2D a = sym([1, 2; 3, 4]); b = sym([2; 4]); a(:, 1) = []; assert( isequal( a, b)) ***** test % General assign a = sym([1, 2; 3, 4]); b = sym([5, 5; 5, 5]); a(:) = 5; assert( isequal( a, b)) ***** test % Empty matrix a = sym([1, 2; 3, 4]); a(:) = []; assert( isequal( a, sym([]))) ***** test % Disassemble matrix a = sym([1 2; 3 4; 5 6]); b = sym([3 5 2 4 6]); a(1) = []; assert (isequal (a, b)); ***** error a = sym([1, 2; 3, 4]); a(1, 2) = []; ***** test % Issue #964 a = sym(10); a(1) = []; assert (isempty (a)) assert (isequal (a, zeros(1, 0))) ***** test % Issue #963: scalar asgn to empty part of matrix A = sym (magic (3)); B = A; A(1, []) = 42; assert (isequal (A, B)) A([], 2) = 42; assert (isequal (A, B)) A([]) = 42; assert (isequal (A, B)) A([], []) = 42; assert (isequal (A, B)) A(2:3, []) = 42; assert (isequal (A, B)) A([], 2:3) = 42; assert (isequal (A, B)) A(:, []) = 42; assert (isequal (A, B)) A([], :) = 42; assert (isequal (A, B)) ***** test % Issue #1026 a = sym(1:5); a(1:3) = []; assert (isequal (a, sym([4 5]))) ***** test % Issue #1026 B = eye(4); A = sym(B); A(1:2, :) = []; B(1:2, :) = []; assert (isequal (A, B)) ***** error % TODO: do we care what error? A = sym (magic (3)); A(2:3, []) = [66; 66]; ***** error A = sym (magic (3)); A([]) = [66; 66]; ***** error A = sym (magic (3)); A([], 1) = [66; 66]; ***** test % Issue #966: empty indexing, empty RHS, A unchanged B = magic(3); A = sym(B); A(1, []) = []; assert (isequal (A, B)) A([], 2) = []; assert (isequal (A, B)) A([], []) = []; assert (isequal (A, B)) A(2:3, []) = []; assert (isequal (A, B)) A([], 2:3) = []; assert (isequal (A, B)) A(:, []) = []; assert (isequal (A, B)) A([], :) = []; assert (isequal (A, B)) ***** test % Issue 967 B = [1 2; 3 4]; A = sym(B); A([]) = []; assert (isequal (A, B)) ***** test % Issue #965 a = sym(7); a([]) = []; assert (isequal (a, sym(7))) ***** test % Issue #965 a = sym(7); a([]) = 42; assert (isequal (a, sym(7))) ***** error % Issue #965 a = sym(7); a([]) = [42 42] ***** test b = eye (3); a = sym (b); I = [2 3; 4 5]; a(I) = -2*I; b(I) = -2*I; assert (isequal (a, sym (b))); assert (size (a), [3 3]); ***** error syms x A = [1 x; x 2]; A(5) = x; ***** test % 2D indexing with length in one dimension more than 2 a = sym ([1 2; 3 4; 5 6]); indices = [1 4; 2 5; 3 6]; b = [10 11; 12 13; 14 15]; a(indices) = b; assert (isequal (a, sym (b))); ***** test A = sym ([0 0 0]); indices = [false true false]; A(indices) = 1; assert (isequal (A, sym ([0 1 0]))); A(indices) = []; assert (isequal (A, sym ([0 0]))); indices = [false false]; A(indices) = []; assert (isequal (A, sym ([0 0]))); ***** shared a, b a = [1 2 3 5; 4 5 6 9; 7 5 3 2]; b = sym (a); ***** test A = a; B = b; A(true) = 0; B(true) = 0; assert (isequal (A, B)) ***** test A = a; B = b; A(false) = 0; B(false) = 0; assert (isequal (A, B)) ***** test c = [false true]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) ***** test c = [false true false true; true false true false; false true false true]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) ***** test c = [false true false true false]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) ***** test c = [false; true; false; true; false]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) ***** test c = [false true; false true; true false]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) 77 tests, 77 passed, 0 known failure, 0 skipped [inst/@sym/floor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/floor.m ***** error floor (sym(1), 2) ***** assert (isequaln (floor (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = floor(x); f2 = floor(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = floor(A); f2 = floor(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = floor (d); f = floor (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/euler.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/euler.m ***** error euler (sym(1), 2, 3) ***** assert (isequal (euler (sym(0)), sym(1))) ***** test m = sym([0 1 2; 8 10 888889]); A = euler (m); B = sym([1 0 -1; 1385 -50521 0]); assert (isequal (A, B)) ***** test syms x assert (isequal (euler(6, x), x^6 - 3*x^5 + 5*x^3 - 3*x)) ***** assert (isnan (euler (3, sym(nan)))) ***** test syms m x em = euler (m, x); A = subs(em, [m x], [2 sym(pi)]); assert (isequal (A, sym(pi)^2 - sym(pi))) ***** test % vectorized syms x y A = euler([1; 2], [x; y]); B = [x - sym(1)/2; y^2 - y]; assert (isequal (A, B)) ***** test % round trip syms m z f = euler (m, z); h = function_handle (f, 'vars', [m z]); A = h (2, 2.2); B = euler (2, 2.2); assert (A, B) ***** test % compare vpa to maple: Digits:=34; evalf(euler(13, exp(1)+Pi*I/13)); A = vpa('1623.14184180556920918624604530515') + ... vpa('4270.98066989140286451493108809574')*1i; z = vpa (exp(1), 32) + vpa(pi, 32)/13*1i; B = euler (13, z); relerr = abs(double(abs((B - A)/A))); assert (relerr < 20*eps); ***** xtest % as above, high-prec result broken in 1.12: https://github.com/sympy/sympy/issues/24156 A = vpa('1623.14184180556920918624604530515') + ... vpa('4270.98066989140286451493108809574')*1i; z = vpa (exp(1), 32) + vpa(pi, 32)/13*1i; B = euler (13, z); relerr = abs(double(abs((B - A)/A))); assert (relerr < 2e-31); !!!!! known failure assert (relerr < 2e-31) failed 10 tests, 9 passed, 1 known failure, 0 skipped [inst/@sym/tand.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tand.m ***** error tand (sym(1), 2) ***** assert (isequaln (tand (sym(nan)), sym(nan))) ***** test f1 = tand (sym(1)); f2 = tand (1); assert (double (f1), f2, -eps) ***** test D = [10 30; 110 -45]; A = sym(D); f1 = tand (A); f2 = tand (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/double.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/double.m ***** test % numeric scalar a = double(sym(10)); assert (a == 10) assert (isa (a, 'double')) ***** test % numeric vectors a = double(sym([10 12])); assert (isequal (a, [10 12])) assert (isa (a, 'double')) ***** test % complex a = 3 + 4i; b = sym(a); assert (isequal (double (b), a)) ***** xtest % unexpected, precisely same floating point a = 3 + 4i; b = sym(a); assert (isequal (double (b/pi), a/pi)) ***** test % floating point x = sqrt(sym(2)); assert( abs(double(x) - sqrt(2)) < 2*eps) x = sym(pi); assert( abs(double(x) - pi) < 2*eps) ***** test oo = sym(inf); assert( double(oo) == inf ) assert( double(-oo) == -inf ) assert( isnan(double(0*oo)) ) ***** test zoo = sym('zoo'); assert (double(zoo) == complex(inf, inf)) ***** test zoo = sym('zoo'); assert (double(-zoo) == double(zoo) ) assert( isnan(double(0*zoo)) ) ***** test % nan snan = sym(nan); assert( isnan(double(snan))) ***** test % don't want NaN+NaNi snan = sym(nan); assert (isreal (double (snan))) ***** test % arrays a = [1 2; 3 4]; assert( isequal( double(sym(a)), a )) assert( isequal( double(sym(a)), a )) % should fail with error for non-double ***** error syms x; double(x) ***** error syms x; double([1 2 x]) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/power.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/power.m ***** test % scalar .^ scalar syms x assert (isa (x.^2, 'sym')) assert (isa (2.^x, 'sym')) assert (isa (x.^x, 'sym')) assert (isequal (x.^2, x^2)) assert (isequal (2.^x, 2^x)) assert (isequal (x.^x, x^x)) ***** test % scalar .^ matrix D = [0 1; 2 3]; A = sym(D); assert (isequal ( sym(2).^D , 2.^D )) assert (isequal ( sym(2).^A , 2.^A )) assert (isequal ( 2.^D , 2.^A )) assert (isequal ( 2.^A , 2.^A )) ***** test % matrix .^ matrix syms x A = [x 2*x; 3*x 4*x]; D = [0 1; 2 3]; B = sym(D); assert (isequal ( A.^D, [1 2*x; 9*x^2 64*x^3] )) assert (isequal ( A.^B, [1 2*x; 9*x^2 64*x^3] )) ***** test % matrix .^ scalar syms x A = [x 2*x]; assert (isequal ( A.^2, [x^2 4*x^2] )) assert (isequal ( A.^sym(2), [x^2 4*x^2] )) ***** test % 1^oo % (sympy >= 0.7.5 gives NaN, SMT R2013b: gives 1) oo = sym(inf); assert (isnan (1^oo)) ***** test % 1^zoo % (1 on sympy 0.7.4--0.7.6, but nan in git (2014-12-12, a210908d4)) zoo = sym('zoo'); assert (isnan (1^zoo)) ***** test % immutable test A = sym([1 2]); B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)]])'); assert (isequal (A.^A, B.^B)) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/divergence.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/divergence.m ***** shared x,y,z syms x y z ***** test % 1D f = x^2; assert (isequal (divergence(f), diff(f,x))) assert (isequal (divergence(f,{x}), diff(f,x))) assert (isequal (divergence(f,[x]), diff(f,x))) assert (isequal (divergence(f,x), diff(f,x))) ***** test % const f = [sym(1); 2; exp(sym(3))]; assert (isequal (divergence(f,{x,y,z}), 0)) f = [sym(1); 2; exp(sym('c'))]; assert (isequal (divergence(f,{x,y,z}), 0)) ***** test % double const f = [1 2]; g = sym(0); assert (isequal (divergence(f, [x y]), g)) % should fail, calls @double: divergence(f, {x y}), g)) ***** test % 1D fcn in 2d/3d f = [x y z]; assert (isequal (divergence(f), 3)) assert (isequal (divergence(f, {x,y,z}), 3)) assert (isequal (divergence(f, [x,y,z]), 3)) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y+sinh(z)); g2 = [diff(f,x); diff(f,y)]; l2 = diff(g2(1),x) + diff(g2(2),y); g3 = [diff(f,x); diff(f,y); diff(f,z)]; l3 = diff(g3(1),x) + diff(g3(2),y) + diff(g3(3),z); assert (isequal (divergence(g2, {x,y}), l2)) assert (isequal (divergence(g3, {x,y,z}), l3)) ***** error divergence ([1 2], [sym('x')]) ***** error divergence ([1 2], sym('x'), 42) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/eye.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eye.m ***** test y = eye(sym(2)); x = [1 0; 0 1]; assert( isequal( y, sym(x))) ***** test y = eye(sym(2), 1); x = [1; 0]; assert( isequal( y, sym(x))) ***** test y = eye(sym(1), 2); x = [1 0]; assert( isequal( y, sym(x))) ***** test y = eye (sym([2 3])); x = sym (eye ([2 3])); assert (isequal (y, x)) ***** assert( isa( eye(sym(2), 'double'), 'double')) ***** assert( isa( eye(3, sym(3), 'single') , 'single')) ***** assert( isa( eye(3, sym(3)), 'sym')) ***** assert( isa( eye(3, sym(3), 'sym'), 'sym')) ***** xtest % Issue #13 assert( isa( eye(3, 3, 'sym'), 'sym')) !!!!! known failure invalid data type specified 9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/acosd.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acosd.m ***** error acosd (sym(1), 2) ***** assert (isequaln (acosd (sym(nan)), sym(nan))) ***** test f1 = acosd (sym(1)/2); f2 = acosd (1/2); assert (double (f1), f2, -eps) ***** test D = [1 2; 3 4]/4; A = sym([1 2; 3 4])/4; f1 = acosd (A); f2 = acosd (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/isempty.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isempty.m ***** shared se, a se = sym ([]); a = sym ([1 2]); ***** assert (~isempty (sym (1))) ***** assert (isempty (sym (se))) ***** assert (isempty (se == [])) ***** test ***** test se(1) = 10; ***** test assert ( isa (se, 'sym')) ***** test assert ( isequal (se, 10)) ***** shared ***** test % empty matrices A = sym('A', [3 0]); assert (isempty (A)) A = sym(ones(3,0)); assert (isempty (A)) ***** test % non-empty symbolic-size matrices syms n integer A = sym('A', [3 n]); assert (~isempty (A)) ***** xtest % empty symbolic-size matrices % FIXME: will fail until size stop lying by saying 1x1 syms n integer A = sym('A', [0 n]); assert (isempty (A)) A = sym('A', [n 0]); assert (isempty (A)) !!!!! known failure assert (isempty (A)) failed 10 tests, 9 passed, 1 known failure, 0 skipped [inst/findsymbols.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/findsymbols.m ***** test syms x b y n a arlo z = a*x + b*pi*sin (n) + exp (y) + exp (sym (1)) + arlo; s = findsymbols (z); assert (isequal ([s{:}], [a,arlo,b,n,x,y])) ***** test syms x s = findsymbols (x); assert (isequal (s{1}, x)) ***** test syms z x y a s = findsymbols ([x y; 1 a]); assert (isequal ([s{:}], [a x y])) ***** assert (isempty (findsymbols (sym (1)))) ***** assert (isempty (findsymbols (sym ([1 2])))) ***** assert (isempty (findsymbols (sym (nan)))) ***** assert (isempty (findsymbols (sym (inf)))) ***** assert (isempty (findsymbols (exp (sym (2))))) ***** test % empty sym for findsymbols, findsym, and symvar assert (isempty (findsymbols (sym([])))) assert (isempty (findsym (sym([])))) assert (isempty (symvar (sym([])))) ***** test % diff. assumptions make diff. symbols x1 = sym('x'); x2 = sym('x', 'positive'); f = x1*x2; assert (length (findsymbols (f)) == 2) ***** test % symfun or sym syms x f(y) a = f*x; b = f(y)*x; assert (isequal (findsymbols(a), {x y})) assert (isequal (findsymbols(b), {x y})) ***** test % findsymbols on symfun does not find the argnames (unless they % are on the RHS of course, this matches SMT 2014a). syms a x y f(x, y) = a; % const symfun assert (isequal (findsymbols(f), {a})) syms a x y f(x, y) = a*y; assert (isequal (findsymbols(f), {a y})) ***** test % sorts lexicographically, same as symvar *with single input* % (note symvar does something different with 2 inputs). syms A B a b x y X Y f = A*a*B*b*y*X*Y*x; assert (isequal (findsymbols(f), {A B X Y a b x y})) assert (isequal (symvar(f), [A B X Y a b x y])) ***** test % symbols in matpow syms x y syms n A = [sin(x) 2; y 1]; B = A^n; L = findsymbols(B); assert (isequal (L, {n x y})) ***** test % array of eq syms x y assert (isequal (findsymbols (2 == [2 x y]), {x y})) ***** test % array of ineq syms x y A = [x < 1 2*x < y x >= 2 3 <= x x != y]; assert (isequal (findsymbols (A), {x y})) 16 tests, 16 passed, 0 known failure, 0 skipped [inst/lambertw.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/lambertw.m ***** assert (isequal (lambertw (0), 0)) ***** assert (isequal (lambertw (0, 0), 0)) ***** assert (lambertw (-1/exp(1)), -1, 2*eps) ***** assert (lambertw (0, -1/exp(1)), -1, 2*eps) ***** assert (lambertw (-1, -1/exp(1)), -1, 2*eps) ***** test x = [1 2 3 pi 10 100 1000 12345]; W = lambertw (x); assert (W.*exp (W), x, -3*eps) ***** test x = [1 2 3 pi 10 100 1000 12345]; k = [-3 -2 -1 0 1 2 3 4]; W = lambertw (k, x); assert (W.*exp (W), x, -10*eps) ***** test % input shape preserved x = [0 1; 2 3]; b = x; W = lambertw (b, x); assert (W.*exp (W), x, -10*eps) ***** test % input shape preserved x = [0 1; 2 3]; b = 0; W = lambertw (b, x); assert (W.*exp (W), x, -10*eps) ***** test % input shape preserved x = 10; b = [0 1; 2 3]; W = lambertw (b, x); assert (W.*exp (W), x*ones (size (b)), -10*eps) ***** assert (isnan (lambertw (nan))) ***** test % limiting behaviour as z large k = 3; A = lambertw (k, 1e100); assert (abs (imag (A) - 2*pi*k) < 0.1) ***** test % limiting behaviour as z large, up imag axis k = 1; A = lambertw (k, 1e100*1i); assert (abs (imag (A) - (2*k+0.5)*pi) < 0.1) ***** test % limiting behaviour as z large, down imag axis k = -2; A = lambertw (k, -1e100*1i); assert (abs (imag (A) - (2*k-0.5)*pi) < 0.1) ***** test % limiting behaviour as z large, near branch k = 3; A = lambertw (k, -1e100); B = lambertw (k, -1e100 + 1i); C = lambertw (k, -1e100 - 1i); assert (abs (imag (A) - (2*k+1)*pi) < 0.1) assert (abs (imag (B) - (2*k+1)*pi) < 0.1) assert (abs (imag (C) - (2*k-1)*pi) < 0.1) ***** test % infinities and nan A = lambertw ([inf exp(1) -inf nan]); B = [inf 1 inf + pi*1i nan]; assert (isequaln (A, B)) ***** test % infinities and nan A = lambertw (3, [inf 1 -inf nan]); B = [inf + 2*3*pi*1i lambertw(3,1) inf + (2*3+1)*pi*1i nan]; assert (isequaln (A, B)) ***** test % infinities and nan A = lambertw ([0 1 2 0], [inf -inf nan exp(1)]); B = [inf inf+3*pi*1i nan 1]; assert (isequaln (A, B)) ***** test % scalar infinity z, vector b A = lambertw ([1 2 -3], inf); B = [lambertw(1, inf) lambertw(2, inf) lambertw(-3, inf)]; assert (isequal (A, B)) ***** test % scalar -infinity z, vector b A = lambertw ([1 2 -3], -inf); B = [lambertw(1, -inf) lambertw(2, -inf) lambertw(-3, -inf)]; assert (isequal (A, B)) ***** test % scalar z nan, vector b A = lambertw ([1 2 -3], nan); B = [nan nan nan]; assert (isequaln (A, B)) 21 tests, 21 passed, 0 known failure, 0 skipped [inst/dirac.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/dirac.m ***** assert (isinf (dirac (0))) ***** assert (dirac (1) == 0) ***** assert (isnan (dirac (nan))) ***** assert (isequaln (dirac ([-1 1 0 eps inf -inf nan]), [0 0 inf 0 0 0 nan])) ***** error dirac (1i) ***** assert (isa (dirac (single (0)), 'single')) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/eulergamma.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/eulergamma.m ***** error catalan (sym(1)) ***** assert (double (eulergamma ()) > 0.577215664901) ***** assert (double (eulergamma ()) < 0.577215664902) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/digits.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/digits.m ***** test orig = digits(32); % to reset later m = digits(64); p = vpa(sym(pi)); assert (abs (double (sin(p))) < 1e-64) n = digits(m); assert (n == 64) p = vpa(sym(pi)); assert (abs (double (sin(p))) < 1e-32) assert (abs (double (sin(p))) > 1e-40) digits(orig) 1 test, 1 passed, 0 known failure, 0 skipped [inst/cell2sym.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/cell2sym.m ***** test A = {1 2 3; 4 5 6}; B = [1 2 3; 4 5 6]; assert (isequal (cell2sym(A), sym(B))) ***** test A = {'a' 'b'; 'c' 10}; B = [sym('a') sym('b'); sym('c') sym(10)]; assert (isequal (cell2sym(A), B)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/fibonacci.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/fibonacci.m ***** assert (isequal ( fibonacci (sym(0)), 0)) ***** assert (isequal ( fibonacci (sym(14)), sym(377))) ***** assert (isequal ( fibonacci (14), 377)) ***** test syms x assert (isequal (fibonacci (5,x), x^4 + 3*x^2 + 1)) 4 tests, 4 passed, 0 known failure, 0 skipped Checking C++ files ... Done running the unit tests. Summary: 2426 tests, 2395 passed, 31 known failures, 0 skipped dh_installdocs -O--buildsystem=octave dh_installchangelogs -O--buildsystem=octave dh_octave_changelogs -O--buildsystem=octave dh_octave_examples -O--buildsystem=octave dh_installsystemduser -O--buildsystem=octave dh_perl -O--buildsystem=octave dh_link -O--buildsystem=octave dh_strip_nondeterminism -O--buildsystem=octave dh_compress -O--buildsystem=octave dh_fixperms -O--buildsystem=octave dh_missing -O--buildsystem=octave dh_octave_substvar -O--buildsystem=octave dh_installdeb -O--buildsystem=octave dh_gencontrol -O--buildsystem=octave dh_md5sums -O--buildsystem=octave dh_builddeb -O--buildsystem=octave dpkg-deb: building package 'octave-symbolic' in '../octave-symbolic_3.2.1-3_all.deb'. dpkg-genbuildinfo --build=binary -O../octave-symbolic_3.2.1-3_amd64.buildinfo dpkg-genchanges --build=binary -O../octave-symbolic_3.2.1-3_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/1183969 and its subdirectories I: Current time: Fri Feb 21 02:39:11 -12 2025 I: pbuilder-time-stamp: 1740148751 Fri Feb 21 14:39:11 UTC 2025 I: Signing ./b1/octave-symbolic_3.2.1-3_amd64.buildinfo as octave-symbolic_3.2.1-3_amd64.buildinfo.asc Fri Feb 21 14:39:11 UTC 2025 I: Signed ./b1/octave-symbolic_3.2.1-3_amd64.buildinfo as ./b1/octave-symbolic_3.2.1-3_amd64.buildinfo.asc Fri Feb 21 14:39:11 UTC 2025 - build #1 for octave-symbolic/unstable/amd64 on ionos1-amd64 done. Starting cleanup. All cleanup done. Fri Feb 21 14:39:11 UTC 2025 - reproducible_build.sh stopped running as /tmp/jenkins-script-lz4cPOZE, removing. /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS: total 16 drwxr-xr-x 2 jenkins jenkins 4096 Feb 21 14:39 b1 drwxr-xr-x 2 jenkins jenkins 4096 Feb 21 14:17 b2 -rw-r--r-- 1 jenkins jenkins 2308 Nov 10 21:52 octave-symbolic_3.2.1-3.dsc -rw------- 1 jenkins jenkins 3464 Feb 21 14:17 rbuildlog.GzdzZ3z /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b1: total 836 -rw-r--r-- 1 jenkins jenkins 578108 Feb 21 14:39 build.log -rw-r--r-- 1 jenkins jenkins 6832 Feb 21 14:39 octave-symbolic_3.2.1-3.debian.tar.xz -rw-r--r-- 1 jenkins jenkins 2308 Feb 21 14:39 octave-symbolic_3.2.1-3.dsc -rw-r--r-- 1 jenkins jenkins 204628 Feb 21 14:39 octave-symbolic_3.2.1-3_all.deb -rw-r--r-- 1 jenkins jenkins 21534 Feb 21 14:39 octave-symbolic_3.2.1-3_amd64.buildinfo -rw-r--r-- 1 jenkins jenkins 22416 Feb 21 14:39 octave-symbolic_3.2.1-3_amd64.buildinfo.asc -rw-r--r-- 1 jenkins jenkins 1174 Feb 21 14:39 octave-symbolic_3.2.1-3_amd64.changes -rw-r--r-- 1 jenkins jenkins 1360 Feb 21 14:39 octave-symbolic_3.2.1-3_source.changes /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b2: total 0 Fri Feb 21 14:39:11 UTC 2025 I: Deleting $TMPDIR on ionos1-amd64.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Fri Feb 21 02:17:38 -12 2025 I: pbuilder-time-stamp: 1740147458 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [octave-symbolic_3.2.1-3.dsc] I: copying [./octave-symbolic_3.2.1.orig.tar.gz] I: copying [./octave-symbolic_3.2.1-3.debian.tar.xz] I: Extracting source dpkg-source: warning: cannot verify inline signature for ./octave-symbolic_3.2.1-3.dsc: unsupported subcommand dpkg-source: info: extracting octave-symbolic in octave-symbolic-3.2.1 dpkg-source: info: unpacking octave-symbolic_3.2.1.orig.tar.gz dpkg-source: info: unpacking octave-symbolic_3.2.1-3.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying vpa-xtest.patch dpkg-source: info: applying fix-intersect-unit-test.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/1183969/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='amd64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='amd64' IFS=' ' INVOCATION_ID='1ab59e4cb5b44f5ba199297ff251076a' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='1183969' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/pbuilderrc_ZhGU --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b1 --logfile b1/build.log octave-symbolic_3.2.1-3.dsc' SUDO_GID='110' SUDO_UID='105' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://46.16.76.132:3128' I: uname -a Linux ionos1-amd64 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin I: user script /srv/workspace/pbuilder/1183969/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), debhelper (>= 12.8~), dh-sequence-octave, python3-packaging, python3-sympy dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19798 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on debhelper (>= 12.8~); however: Package debhelper is not installed. pbuilder-satisfydepends-dummy depends on dh-sequence-octave; however: Package dh-sequence-octave is not installed. pbuilder-satisfydepends-dummy depends on python3-packaging; however: Package python3-packaging is not installed. pbuilder-satisfydepends-dummy depends on python3-sympy; however: Package python3-sympy is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: aglfn{a} appstream{a} autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} ca-certificates{a} cme{a} comerr-dev{a} debhelper{a} dh-autoreconf{a} dh-octave{a} dh-octave-autopkgtest{a} dh-strip-nondeterminism{a} diffstat{a} dwz{a} file{a} fontconfig{a} fontconfig-config{a} fonts-dejavu-core{a} fonts-dejavu-mono{a} fonts-freefont-otf{a} gettext{a} gettext-base{a} gfortran{a} gfortran-14{a} gfortran-14-x86-64-linux-gnu{a} gfortran-x86-64-linux-gnu{a} gnuplot-data{a} gnuplot-nox{a} gpg{a} gpgconf{a} groff-base{a} hdf5-helpers{a} intltool-debian{a} iso-codes{a} krb5-multidev{a} libabsl20230802{a} libaec-dev{a} libaec0{a} libalgorithm-c3-perl{a} libaliased-perl{a} libamd3{a} libaom3{a} libapp-cmd-perl{a} libappstream5{a} libapt-pkg-perl{a} libarchive-zip-perl{a} libarpack2t64{a} libarray-intspan-perl{a} libasound2-data{a} libasound2t64{a} libassuan9{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libavif16{a} libb-hooks-endofscope-perl{a} libb-hooks-op-check-perl{a} libb2-1{a} libberkeleydb-perl{a} libblas-dev{a} libblas3{a} libboolean-perl{a} libbrotli-dev{a} libbrotli1{a} libcairo2{a} libcamd3{a} libcapture-tiny-perl{a} libcarp-assert-more-perl{a} libccolamd3{a} libcgi-pm-perl{a} libcholmod5{a} libclass-c3-perl{a} libclass-data-inheritable-perl{a} libclass-inspector-perl{a} libclass-load-perl{a} libclass-method-modifiers-perl{a} libclass-xsaccessor-perl{a} libclone-choose-perl{a} libclone-perl{a} libcolamd3{a} libcom-err2{a} libconfig-model-backend-yaml-perl{a} libconfig-model-dpkg-perl{a} libconfig-model-perl{a} libconfig-tiny-perl{a} libconst-fast-perl{a} libconvert-binhex-perl{a} libcpanel-json-xs-perl{a} libcups2t64{a} libcurl3t64-gnutls{a} libcurl4-openssl-dev{a} libcurl4t64{a} libcxsparse4{a} libdata-dpath-perl{a} libdata-messagepack-perl{a} libdata-optlist-perl{a} libdata-section-perl{a} libdata-validate-domain-perl{a} libdata-validate-ip-perl{a} libdata-validate-uri-perl{a} libdatrie1{a} libdav1d7{a} libdbus-1-3{a} libde265-0{a} libdebhelper-perl{a} libdeflate0{a} libdevel-callchecker-perl{a} libdevel-size-perl{a} libdevel-stacktrace-perl{a} libdouble-conversion3{a} libdrm-amdgpu1{a} libdrm-common{a} libdrm-intel1{a} libdrm-radeon1{a} libdrm2{a} libduktape207{a} libdynaloader-functions-perl{a} libedit2{a} libegl-mesa0{a} libegl1{a} libelf1t64{a} libemail-address-xs-perl{a} libencode-locale-perl{a} liberror-perl{a} libevdev2{a} libevent-2.1-7t64{a} libexception-class-perl{a} libexpat1{a} libexporter-lite-perl{a} libexporter-tiny-perl{a} libfeature-compat-class-perl{a} libfeature-compat-try-perl{a} libffi8{a} libfftw3-bin{a} libfftw3-dev{a} libfftw3-double3{a} libfftw3-long3{a} libfftw3-quad3{a} libfftw3-single3{a} libfile-basedir-perl{a} libfile-find-rule-perl{a} libfile-homedir-perl{a} libfile-listing-perl{a} libfile-sharedir-perl{a} libfile-stripnondeterminism-perl{a} libfile-which-perl{a} libflac12t64{a} libfltk-gl1.3t64{a} libfltk1.3t64{a} libfont-ttf-perl{a} libfontconfig1{a} libfreetype6{a} libfribidi0{a} libgav1-1{a} libgbm1{a} libgcrypt20{a} libgd3{a} libgetopt-long-descriptive-perl{a} libgfortran-14-dev{a} libgfortran5{a} libgif7{a} libgl-dev{a} libgl1{a} libgl1-mesa-dri{a} libgl2ps1.4{a} libglapi-mesa{a} libglib2.0-0t64{a} libglpk40{a} libglu1-mesa{a} libglvnd0{a} libglx-dev{a} libglx-mesa0{a} libglx0{a} libgmp-dev{a} libgmpxx4ldbl{a} libgnutls-dane0t64{a} libgnutls-openssl27t64{a} libgnutls28-dev{a} libgnutls30t64{a} libgpg-error0{a} libgraphicsmagick++-q16-12t64{a} libgraphicsmagick-q16-3t64{a} libgraphite2-3{a} libgssapi-krb5-2{a} libgssrpc4t64{a} libgudev-1.0-0{a} libharfbuzz0b{a} libhash-merge-perl{a} libhdf5-310{a} libhdf5-cpp-310{a} libhdf5-dev{a} libhdf5-fortran-310{a} libhdf5-hl-310{a} libhdf5-hl-cpp-310{a} libhdf5-hl-fortran-310{a} libheif-plugin-dav1d{a} libheif-plugin-libde265{a} libheif1{a} libhtml-form-perl{a} libhtml-html5-entities-perl{a} libhtml-parser-perl{a} libhtml-tagset-perl{a} libhtml-tokeparser-simple-perl{a} libhtml-tree-perl{a} libhttp-cookies-perl{a} libhttp-date-perl{a} libhttp-message-perl{a} libhttp-negotiate-perl{a} libhwy1t64{a} libice6{a} libicu72{a} libidn2-0{a} libidn2-dev{a} libimagequant0{a} libimath-3-1-29t64{a} libimport-into-perl{a} libindirect-perl{a} libinput-bin{a} libinput10{a} libio-html-perl{a} libio-interactive-perl{a} libio-socket-ssl-perl{a} libio-string-perl{a} libio-stringy-perl{a} libio-tiecombine-perl{a} libipc-run3-perl{a} libipc-system-simple-perl{a} libiterator-perl{a} libiterator-util-perl{a} libjack-jackd2-0{a} libjbig0{a} libjpeg-dev{a} libjpeg62-turbo{a} libjpeg62-turbo-dev{a} libjson-maybexs-perl{a} libjson-perl{a} libjxl0.10{a} libk5crypto3{a} libkadm5clnt-mit12{a} libkadm5srv-mit12{a} libkdb5-10t64{a} libkeyutils1{a} libkrb5-3{a} libkrb5-dev{a} libkrb5support0{a} liblapack-dev{a} liblapack3{a} liblcms2-2{a} libldap-dev{a} libldap2{a} liblerc4{a} liblist-compare-perl{a} liblist-moreutils-perl{a} liblist-moreutils-xs-perl{a} liblist-someutils-perl{a} liblist-utilsby-perl{a} libllvm19{a} liblog-any-adapter-screen-perl{a} liblog-any-perl{a} liblog-log4perl-perl{a} libltdl7{a} liblua5.4-0{a} liblwp-mediatypes-perl{a} liblwp-protocol-https-perl{a} liblz1{a} liblzo2-2{a} libmagic-mgc{a} libmagic1t64{a} libmailtools-perl{a} libmarkdown2{a} libmd4c0{a} libmime-tools-perl{a} libmldbm-perl{a} libmodule-implementation-perl{a} libmodule-pluggable-perl{a} libmodule-runtime-perl{a} libmoo-perl{a} libmoox-aliases-perl{a} libmouse-perl{a} libmousex-nativetraits-perl{a} libmousex-strictconstructor-perl{a} libmp3lame0{a} libmpg123-0t64{a} libmro-compat-perl{a} libmtdev1t64{a} libnamespace-clean-perl{a} libncurses-dev{a} libncurses6{a} libnet-domain-tld-perl{a} libnet-http-perl{a} libnet-ipv6addr-perl{a} libnet-netmask-perl{a} libnet-smtp-ssl-perl{a} libnet-ssleay-perl{a} libnetaddr-ip-perl{a} libnghttp2-14{a} libnghttp2-dev{a} libnghttp3-9{a} libnghttp3-dev{a} libngtcp2-16{a} libngtcp2-crypto-gnutls8{a} libnumber-compare-perl{a} libobject-pad-perl{a} libogg0{a} libopenexr-3-1-30{a} libopengl0{a} libopus0{a} libp11-kit-dev{a} libp11-kit0{a} libpackage-stash-perl{a} libpango-1.0-0{a} libpangocairo-1.0-0{a} libpangoft2-1.0-0{a} libparams-classify-perl{a} libparams-util-perl{a} libparams-validate-perl{a} libparse-debcontrol-perl{a} libparse-recdescent-perl{a} libpath-iterator-rule-perl{a} libpath-tiny-perl{a} libpciaccess0{a} libpcre2-16-0{a} libperlio-gzip-perl{a} libperlio-utf8-strict-perl{a} libpipeline1{a} libpixman-1-0{a} libpkgconf3{a} libpng16-16t64{a} libpod-constants-perl{a} libpod-parser-perl{a} libpod-pom-perl{a} libportaudio2{a} libproc-processtable-perl{a} libproc2-0{a} libproxy1v5{a} libpsl-dev{a} libpsl5t64{a} libpython3-stdlib{a} libpython3.13-minimal{a} libpython3.13-stdlib{a} libqhull-r8.0{a} libqrupdate1{a} libqscintilla2-qt6-15{a} libqscintilla2-qt6-l10n{a} libqt6core5compat6{a} libqt6core6t64{a} libqt6dbus6{a} libqt6gui6{a} libqt6help6{a} libqt6network6{a} libqt6opengl6{a} libqt6openglwidgets6{a} libqt6printsupport6{a} libqt6sql6{a} libqt6widgets6{a} libqt6xml6{a} libraqm0{a} librav1e0.7{a} libreadline-dev{a} libreadline8t64{a} libregexp-common-perl{a} libregexp-pattern-license-perl{a} libregexp-pattern-perl{a} libregexp-wildcards-perl{a} librole-tiny-perl{a} librtmp-dev{a} librtmp1{a} libsamplerate0{a} libsasl2-2{a} libsasl2-modules-db{a} libsensors-config{a} libsensors5{a} libsereal-decoder-perl{a} libsereal-encoder-perl{a} libset-intspan-perl{a} libsharpyuv0{a} libsm6{a} libsndfile1{a} libsoftware-copyright-perl{a} libsoftware-license-perl{a} libsoftware-licensemoreutils-perl{a} libsort-versions-perl{a} libspqr4{a} libssh2-1-dev{a} libssh2-1t64{a} libssl-dev{a} libstemmer0d{a} libstrictures-perl{a} libstring-copyright-perl{a} libstring-escape-perl{a} libstring-license-perl{a} libstring-rewriteprefix-perl{a} libsub-exporter-perl{a} libsub-exporter-progressive-perl{a} libsub-identify-perl{a} libsub-install-perl{a} libsub-name-perl{a} libsub-quote-perl{a} libsub-uplevel-perl{a} libsuitesparseconfig7{a} libsvtav1enc2{a} libsyntax-keyword-try-perl{a} libsz2{a} libtasn1-6{a} libtasn1-6-dev{a} libterm-readkey-perl{a} libtest-exception-perl{a} libtext-autoformat-perl{a} libtext-charwidth-perl{a} libtext-glob-perl{a} libtext-levenshtein-damerau-perl{a} libtext-levenshteinxs-perl{a} libtext-markdown-discount-perl{a} libtext-reform-perl{a} libtext-template-perl{a} libtext-unidecode-perl{a} libtext-wrapi18n-perl{a} libtext-xslate-perl{a} libthai-data{a} libthai0{a} libtiff6{a} libtime-duration-perl{a} libtime-moment-perl{a} libtimedate-perl{a} libtoml-tiny-perl{a} libtool{a} libtry-tiny-perl{a} libts0t64{a} libuchardet0{a} libumfpack6{a} libunbound8{a} libunicode-utf8-perl{a} libunistring5{a} liburi-perl{a} libvariable-magic-perl{a} libvorbis0a{a} libvorbisenc2{a} libvulkan1{a} libwacom-common{a} libwacom9{a} libwayland-client0{a} libwayland-server0{a} libwebp7{a} libwebpmux3{a} libwmflite-0.2-7{a} libwww-mechanize-perl{a} libwww-perl{a} libwww-robotrules-perl{a} libx11-6{a} libx11-data{a} libx11-dev{a} libx11-xcb1{a} libxau-dev{a} libxau6{a} libxcb-cursor0{a} libxcb-dri3-0{a} libxcb-glx0{a} libxcb-icccm4{a} libxcb-image0{a} libxcb-keysyms1{a} libxcb-present0{a} libxcb-randr0{a} libxcb-render-util0{a} libxcb-render0{a} libxcb-shape0{a} libxcb-shm0{a} libxcb-sync1{a} libxcb-util1{a} libxcb-xfixes0{a} libxcb-xinput0{a} libxcb-xkb1{a} libxcb1{a} libxcb1-dev{a} libxcursor1{a} libxdmcp-dev{a} libxdmcp6{a} libxext6{a} libxfixes3{a} libxft2{a} libxinerama1{a} libxkbcommon-x11-0{a} libxkbcommon0{a} libxml-libxml-perl{a} libxml-namespacesupport-perl{a} libxml-sax-base-perl{a} libxml-sax-perl{a} libxml2{a} libxmlb2{a} libxpm4{a} libxrender1{a} libxs-parse-keyword-perl{a} libxs-parse-sublike-perl{a} libxshmfence1{a} libxxf86vm1{a} libyaml-0-2{a} libyaml-libyaml-perl{a} libyaml-pp-perl{a} libyaml-tiny-perl{a} libyuv0{a} libz3-4{a} libzstd-dev{a} licensecheck{a} lintian{a} lzop{a} m4{a} man-db{a} media-types{a} mesa-libgallium{a} netbase{a} nettle-dev{a} octave{a} octave-common{a} octave-dev{a} openssl{a} patchutils{a} perl-openssl-defaults{a} pkgconf{a} pkgconf-bin{a} plzip{a} po-debconf{a} procps{a} python3{a} python3-minimal{a} python3-mpmath{a} python3-packaging{a} python3-sympy{a} python3.13{a} python3.13-minimal{a} readline-common{a} sensible-utils{a} shared-mime-info{a} t1utils{a} tex-common{a} texinfo{a} texinfo-lib{a} tzdata{a} ucf{a} unzip{a} x11-common{a} x11proto-dev{a} xkb-data{a} xorg-sgml-doctools{a} xtrans-dev{a} zlib1g-dev{a} The following packages are RECOMMENDED but will NOT be installed: alsa-topology-conf alsa-ucm-conf bash-completion curl dbus default-jre-headless epstool fonts-liberation fonts-urw-base35 ghostscript gnupg groff isympy-common krb5-locales libarchive-cpio-perl libauthen-sasl-perl libblis4 libcgi-fast-perl libclass-c3-xs-perl libconfig-model-approx-perl libconfig-model-lcdproc-perl libconfig-model-openssh-perl libconfig-model-systemd-perl libconfig-model-tkui-perl libdata-dump-perl libfreezethaw-perl libfuse-perl libglib2.0-data libgpg-error-l10n libgpm2 libheif-plugin-aomenc libheif-plugin-x265 libhtml-format-perl libhttp-daemon-perl libio-compress-brotli-perl libipc-shareable-perl libjson-xs-perl libldap-common liblist-someutils-xs-perl liblog-dispatch-perl libltdl-dev libmail-sendmail-perl libmath-base85-perl libopenblas0 libpackage-stash-xs-perl libqt6sql6-ibase libqt6sql6-mysql libqt6sql6-odbc libqt6sql6-psql libqt6sql6-sqlite libre-engine-re2-perl libsasl2-modules libsocket6-perl libtasn1-doc libtie-ixhash-perl libtypes-serialiser-perl libxml-sax-expat-perl libxstring-perl linux-sysctl-defaults lynx mesa-vulkan-drivers octave-doc psmisc pstoedit publicsuffix python3-numpy python3-pil qt6-gtk-platformtheme qt6-qpa-plugins qt6-svg-plugins qt6-translations-l10n qt6-wayland wget xdg-user-dirs 0 packages upgraded, 547 newly installed, 0 to remove and 0 not upgraded. Need to get 219 MB of archives. After unpacking 850 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main amd64 libpython3.13-minimal amd64 3.13.2-1 [859 kB] Get: 2 http://deb.debian.org/debian unstable/main amd64 libexpat1 amd64 2.6.4-1 [106 kB] Get: 3 http://deb.debian.org/debian unstable/main amd64 python3.13-minimal amd64 3.13.2-1 [2205 kB] Get: 4 http://deb.debian.org/debian unstable/main amd64 python3-minimal amd64 3.13.1-2 [27.0 kB] Get: 5 http://deb.debian.org/debian unstable/main amd64 media-types all 11.0.0 [27.6 kB] Get: 6 http://deb.debian.org/debian unstable/main amd64 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main amd64 tzdata all 2025a-2 [259 kB] Get: 8 http://deb.debian.org/debian unstable/main amd64 libffi8 amd64 3.4.7-1 [23.9 kB] Get: 9 http://deb.debian.org/debian unstable/main amd64 readline-common all 8.2-6 [69.4 kB] Get: 10 http://deb.debian.org/debian unstable/main amd64 libreadline8t64 amd64 8.2-6 [169 kB] Get: 11 http://deb.debian.org/debian unstable/main amd64 libpython3.13-stdlib amd64 3.13.2-1 [1979 kB] Get: 12 http://deb.debian.org/debian unstable/main amd64 python3.13 amd64 3.13.2-1 [745 kB] Get: 13 http://deb.debian.org/debian unstable/main amd64 libpython3-stdlib amd64 3.13.1-2 [9952 B] Get: 14 http://deb.debian.org/debian unstable/main amd64 python3 amd64 3.13.1-2 [28.0 kB] Get: 15 http://deb.debian.org/debian unstable/main amd64 libproc2-0 amd64 2:4.0.4-7 [64.9 kB] Get: 16 http://deb.debian.org/debian unstable/main amd64 procps amd64 2:4.0.4-7 [878 kB] Get: 17 http://deb.debian.org/debian unstable/main amd64 sensible-utils all 0.0.24 [24.8 kB] Get: 18 http://deb.debian.org/debian unstable/main amd64 openssl amd64 3.4.1-1 [1427 kB] Get: 19 http://deb.debian.org/debian unstable/main amd64 ca-certificates all 20241223 [164 kB] Get: 20 http://deb.debian.org/debian unstable/main amd64 libmagic-mgc amd64 1:5.45-3+b1 [314 kB] Get: 21 http://deb.debian.org/debian unstable/main amd64 libmagic1t64 amd64 1:5.45-3+b1 [108 kB] Get: 22 http://deb.debian.org/debian unstable/main amd64 file amd64 1:5.45-3+b1 [43.3 kB] Get: 23 http://deb.debian.org/debian unstable/main amd64 gettext-base amd64 0.23.1-1 [243 kB] Get: 24 http://deb.debian.org/debian unstable/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 25 http://deb.debian.org/debian unstable/main amd64 groff-base amd64 1.23.0-7 [1185 kB] Get: 26 http://deb.debian.org/debian unstable/main amd64 bsdextrautils amd64 2.40.4-4 [92.4 kB] Get: 27 http://deb.debian.org/debian unstable/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 28 http://deb.debian.org/debian unstable/main amd64 man-db amd64 2.13.0-1 [1420 kB] Get: 29 http://deb.debian.org/debian unstable/main amd64 libtext-charwidth-perl amd64 0.04-11+b4 [9476 B] Get: 30 http://deb.debian.org/debian unstable/main amd64 libtext-wrapi18n-perl all 0.06-10 [8808 B] Get: 31 http://deb.debian.org/debian unstable/main amd64 ucf all 3.0050 [42.7 kB] Get: 32 http://deb.debian.org/debian unstable/main amd64 aglfn all 1.7+git20191031.4036a9c-2 [30.5 kB] Get: 33 http://deb.debian.org/debian unstable/main amd64 libglib2.0-0t64 amd64 2.83.3-2 [1511 kB] Get: 34 http://deb.debian.org/debian unstable/main amd64 libicu72 amd64 72.1-6 [9421 kB] Get: 35 http://deb.debian.org/debian unstable/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-0.2+b1 [699 kB] Get: 36 http://deb.debian.org/debian unstable/main amd64 shared-mime-info amd64 2.4-5+b2 [760 kB] Get: 37 http://deb.debian.org/debian unstable/main amd64 libbrotli1 amd64 1.1.0-2+b6 [302 kB] Get: 38 http://deb.debian.org/debian unstable/main amd64 libunistring5 amd64 1.3-1 [476 kB] Get: 39 http://deb.debian.org/debian unstable/main amd64 libidn2-0 amd64 2.3.7-2+b1 [129 kB] Get: 40 http://deb.debian.org/debian unstable/main amd64 libp11-kit0 amd64 0.25.5-3 [425 kB] Get: 41 http://deb.debian.org/debian unstable/main amd64 libtasn1-6 amd64 4.20.0-2 [49.9 kB] Get: 42 http://deb.debian.org/debian unstable/main amd64 libgnutls30t64 amd64 3.8.9-2 [1464 kB] Get: 43 http://deb.debian.org/debian unstable/main amd64 libkrb5support0 amd64 1.21.3-4 [32.8 kB] Get: 44 http://deb.debian.org/debian unstable/main amd64 libcom-err2 amd64 1.47.2-1 [24.0 kB] Get: 45 http://deb.debian.org/debian unstable/main amd64 libk5crypto3 amd64 1.21.3-4 [80.9 kB] Get: 46 http://deb.debian.org/debian unstable/main amd64 libkeyutils1 amd64 1.6.3-4 [9092 B] Get: 47 http://deb.debian.org/debian unstable/main amd64 libkrb5-3 amd64 1.21.3-4 [326 kB] Get: 48 http://deb.debian.org/debian unstable/main amd64 libgssapi-krb5-2 amd64 1.21.3-4 [138 kB] Get: 49 http://deb.debian.org/debian unstable/main amd64 libsasl2-modules-db amd64 2.1.28+dfsg1-8+b1 [19.9 kB] Get: 50 http://deb.debian.org/debian unstable/main amd64 libsasl2-2 amd64 2.1.28+dfsg1-8+b1 [57.6 kB] Get: 51 http://deb.debian.org/debian unstable/main amd64 libldap2 amd64 2.6.9+dfsg-1 [192 kB] Get: 52 http://deb.debian.org/debian unstable/main amd64 libnghttp2-14 amd64 1.64.0-1 [75.5 kB] Get: 53 http://deb.debian.org/debian unstable/main amd64 libnghttp3-9 amd64 1.6.0-2 [64.8 kB] Get: 54 http://deb.debian.org/debian unstable/main amd64 libngtcp2-16 amd64 1.9.1-1 [119 kB] Get: 55 http://deb.debian.org/debian unstable/main amd64 libngtcp2-crypto-gnutls8 amd64 1.9.1-1 [18.5 kB] Get: 56 http://deb.debian.org/debian unstable/main amd64 libpsl5t64 amd64 0.21.2-1.1+b1 [57.2 kB] Get: 57 http://deb.debian.org/debian unstable/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d.1-2+b5 [58.8 kB] Get: 58 http://deb.debian.org/debian unstable/main amd64 libssh2-1t64 amd64 1.11.1-1 [245 kB] Get: 59 http://deb.debian.org/debian unstable/main amd64 libcurl3t64-gnutls amd64 8.12.1-2 [365 kB] Get: 60 http://deb.debian.org/debian unstable/main amd64 libstemmer0d amd64 2.2.0-4+b2 [119 kB] Get: 61 http://deb.debian.org/debian unstable/main amd64 libxmlb2 amd64 0.3.21-1 [63.0 kB] Get: 62 http://deb.debian.org/debian unstable/main amd64 libyaml-0-2 amd64 0.2.5-2 [52.5 kB] Get: 63 http://deb.debian.org/debian unstable/main amd64 libappstream5 amd64 1.0.4-1 [225 kB] Get: 64 http://deb.debian.org/debian unstable/main amd64 appstream amd64 1.0.4-1 [523 kB] Get: 65 http://deb.debian.org/debian unstable/main amd64 m4 amd64 1.4.19-5 [294 kB] Get: 66 http://deb.debian.org/debian unstable/main amd64 autoconf all 2.72-3 [493 kB] Get: 67 http://deb.debian.org/debian unstable/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 68 http://deb.debian.org/debian unstable/main amd64 automake all 1:1.17-3 [862 kB] Get: 69 http://deb.debian.org/debian unstable/main amd64 autopoint all 0.23.1-1 [770 kB] Get: 70 http://deb.debian.org/debian unstable/main amd64 libcapture-tiny-perl all 0.50-1 [24.6 kB] Get: 71 http://deb.debian.org/debian unstable/main amd64 libparams-util-perl amd64 1.102-3+b1 [24.4 kB] Get: 72 http://deb.debian.org/debian unstable/main amd64 libsub-install-perl all 0.929-1 [10.5 kB] Get: 73 http://deb.debian.org/debian unstable/main amd64 libdata-optlist-perl all 0.114-1 [10.6 kB] Get: 74 http://deb.debian.org/debian unstable/main amd64 libb-hooks-op-check-perl amd64 0.22-3+b2 [10.6 kB] Get: 75 http://deb.debian.org/debian unstable/main amd64 libdynaloader-functions-perl all 0.004-1 [12.1 kB] Get: 76 http://deb.debian.org/debian unstable/main amd64 libdevel-callchecker-perl amd64 0.009-1+b1 [16.2 kB] Get: 77 http://deb.debian.org/debian unstable/main amd64 libparams-classify-perl amd64 0.015-2+b4 [22.5 kB] Get: 78 http://deb.debian.org/debian unstable/main amd64 libmodule-runtime-perl all 0.016-2 [19.6 kB] Get: 79 http://deb.debian.org/debian unstable/main amd64 libtry-tiny-perl all 0.32-1 [22.9 kB] Get: 80 http://deb.debian.org/debian unstable/main amd64 libmodule-implementation-perl all 0.09-2 [12.6 kB] Get: 81 http://deb.debian.org/debian unstable/main amd64 libpackage-stash-perl all 0.40-1 [22.0 kB] Get: 82 http://deb.debian.org/debian unstable/main amd64 libclass-load-perl all 0.25-2 [15.3 kB] Get: 83 http://deb.debian.org/debian unstable/main amd64 libio-stringy-perl all 2.113-2 [48.3 kB] Get: 84 http://deb.debian.org/debian unstable/main amd64 libparams-validate-perl amd64 1.31-2+b3 [63.4 kB] Get: 85 http://deb.debian.org/debian unstable/main amd64 libsub-exporter-perl all 0.990-1 [50.6 kB] Get: 86 http://deb.debian.org/debian unstable/main amd64 libgetopt-long-descriptive-perl all 0.116-2 [27.7 kB] Get: 87 http://deb.debian.org/debian unstable/main amd64 libio-tiecombine-perl all 1.005-3 [10.8 kB] Get: 88 http://deb.debian.org/debian unstable/main amd64 libmodule-pluggable-perl all 5.2-5 [23.0 kB] Get: 89 http://deb.debian.org/debian unstable/main amd64 libstring-rewriteprefix-perl all 0.009-1 [7140 B] Get: 90 http://deb.debian.org/debian unstable/main amd64 libapp-cmd-perl all 0.337-2 [61.4 kB] Get: 91 http://deb.debian.org/debian unstable/main amd64 libboolean-perl all 0.46-3 [9924 B] Get: 92 http://deb.debian.org/debian unstable/main amd64 libsub-uplevel-perl all 0.2800-3 [14.0 kB] Get: 93 http://deb.debian.org/debian unstable/main amd64 libtest-exception-perl all 0.43-3 [16.9 kB] Get: 94 http://deb.debian.org/debian unstable/main amd64 libcarp-assert-more-perl all 2.8.0-1 [21.7 kB] Get: 95 http://deb.debian.org/debian unstable/main amd64 libfile-which-perl all 1.27-2 [15.1 kB] Get: 96 http://deb.debian.org/debian unstable/main amd64 libfile-homedir-perl all 1.006-2 [42.4 kB] Get: 97 http://deb.debian.org/debian unstable/main amd64 libclone-choose-perl all 0.010-2 [8676 B] Get: 98 http://deb.debian.org/debian unstable/main amd64 libhash-merge-perl all 0.302-1 [14.7 kB] Get: 99 http://deb.debian.org/debian unstable/main amd64 libjson-perl all 4.10000-1 [87.5 kB] Get: 100 http://deb.debian.org/debian unstable/main amd64 libexporter-tiny-perl all 1.006002-1 [38.7 kB] Get: 101 http://deb.debian.org/debian unstable/main amd64 liblist-moreutils-xs-perl amd64 0.430-4+b2 [42.1 kB] Get: 102 http://deb.debian.org/debian unstable/main amd64 liblist-moreutils-perl all 0.430-2 [46.9 kB] Get: 103 http://deb.debian.org/debian unstable/main amd64 liblog-log4perl-perl all 1.57-1 [367 kB] Get: 104 http://deb.debian.org/debian unstable/main amd64 libmouse-perl amd64 2.5.11-1+b1 [144 kB] Get: 105 http://deb.debian.org/debian unstable/main amd64 libmousex-nativetraits-perl all 1.09-3 [53.5 kB] Get: 106 http://deb.debian.org/debian unstable/main amd64 libmousex-strictconstructor-perl all 0.02-3 [5304 B] Get: 107 http://deb.debian.org/debian unstable/main amd64 libparse-recdescent-perl all 1.967015+dfsg-4 [147 kB] Get: 108 http://deb.debian.org/debian unstable/main amd64 libpath-tiny-perl all 0.146-1 [56.2 kB] Get: 109 http://deb.debian.org/debian unstable/main amd64 libpod-pom-perl all 2.01-4 [65.0 kB] Get: 110 http://deb.debian.org/debian unstable/main amd64 libregexp-common-perl all 2024080801-1 [167 kB] Get: 111 http://deb.debian.org/debian unstable/main amd64 libyaml-tiny-perl all 1.76-1 [29.8 kB] Get: 112 http://deb.debian.org/debian unstable/main amd64 libconfig-model-perl all 2.155-1 [398 kB] Get: 113 http://deb.debian.org/debian unstable/main amd64 libyaml-pp-perl all 0.39.0-1 [111 kB] Get: 114 http://deb.debian.org/debian unstable/main amd64 cme all 1.041-1 [69.6 kB] Get: 115 http://deb.debian.org/debian unstable/main amd64 comerr-dev amd64 2.1-1.47.2-1 [55.7 kB] Get: 116 http://deb.debian.org/debian unstable/main amd64 libdebhelper-perl all 13.24.1 [90.9 kB] Get: 117 http://deb.debian.org/debian unstable/main amd64 libtool all 2.5.4-3 [539 kB] Get: 118 http://deb.debian.org/debian unstable/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 119 http://deb.debian.org/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 120 http://deb.debian.org/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.14.1-2 [19.7 kB] Get: 121 http://deb.debian.org/debian unstable/main amd64 dh-strip-nondeterminism all 1.14.1-2 [8620 B] Get: 122 http://deb.debian.org/debian unstable/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 123 http://deb.debian.org/debian unstable/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 124 http://deb.debian.org/debian unstable/main amd64 gettext amd64 0.23.1-1 [1680 kB] Get: 125 http://deb.debian.org/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 126 http://deb.debian.org/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 127 http://deb.debian.org/debian unstable/main amd64 debhelper all 13.24.1 [920 kB] Get: 128 http://deb.debian.org/debian unstable/main amd64 gnuplot-data all 6.0.2+dfsg1-1 [72.4 kB] Get: 129 http://deb.debian.org/debian unstable/main amd64 libpng16-16t64 amd64 1.6.46-4 [284 kB] Get: 130 http://deb.debian.org/debian unstable/main amd64 libfreetype6 amd64 2.13.3+dfsg-1 [452 kB] Get: 131 http://deb.debian.org/debian unstable/main amd64 fonts-dejavu-mono all 2.37-8 [489 kB] Get: 132 http://deb.debian.org/debian unstable/main amd64 fonts-dejavu-core all 2.37-8 [840 kB] Get: 133 http://deb.debian.org/debian unstable/main amd64 fonts-freefont-otf all 20211204+svn4273-2 [4328 kB] Get: 134 http://deb.debian.org/debian unstable/main amd64 fontconfig-config amd64 2.15.0-2 [317 kB] Get: 135 http://deb.debian.org/debian unstable/main amd64 libfontconfig1 amd64 2.15.0-2 [391 kB] Get: 136 http://deb.debian.org/debian unstable/main amd64 libpixman-1-0 amd64 0.44.0-3 [248 kB] Get: 137 http://deb.debian.org/debian unstable/main amd64 libxau6 amd64 1:1.0.11-1 [20.4 kB] Get: 138 http://deb.debian.org/debian unstable/main amd64 libxdmcp6 amd64 1:1.1.5-1 [27.8 kB] Get: 139 http://deb.debian.org/debian unstable/main amd64 libxcb1 amd64 1.17.0-2+b1 [144 kB] Get: 140 http://deb.debian.org/debian unstable/main amd64 libx11-data all 2:1.8.10-2 [337 kB] Get: 141 http://deb.debian.org/debian unstable/main amd64 libx11-6 amd64 2:1.8.10-2 [813 kB] Get: 142 http://deb.debian.org/debian unstable/main amd64 libxcb-render0 amd64 1.17.0-2+b1 [115 kB] Get: 143 http://deb.debian.org/debian unstable/main amd64 libxcb-shm0 amd64 1.17.0-2+b1 [105 kB] Get: 144 http://deb.debian.org/debian unstable/main amd64 libxext6 amd64 2:1.3.4-1+b3 [50.4 kB] Get: 145 http://deb.debian.org/debian unstable/main amd64 libxrender1 amd64 1:0.9.10-1.1+b4 [27.8 kB] Get: 146 http://deb.debian.org/debian unstable/main amd64 libcairo2 amd64 1.18.2-2 [535 kB] Get: 147 http://deb.debian.org/debian unstable/main amd64 libedit2 amd64 3.1-20250104-1 [93.8 kB] Get: 148 http://deb.debian.org/debian unstable/main amd64 libaom3 amd64 3.12.0-1 [1870 kB] Get: 149 http://deb.debian.org/debian unstable/main amd64 libdav1d7 amd64 1.5.1-1 [559 kB] Get: 150 http://deb.debian.org/debian unstable/main amd64 libabsl20230802 amd64 20230802.1-4 [464 kB] Get: 151 http://deb.debian.org/debian unstable/main amd64 libgav1-1 amd64 0.19.0-3 [350 kB] Get: 152 http://deb.debian.org/debian unstable/main amd64 librav1e0.7 amd64 0.7.1-9+b1 [946 kB] Get: 153 http://deb.debian.org/debian unstable/main amd64 libsvtav1enc2 amd64 2.3.0+dfsg-1 [2489 kB] Get: 154 http://deb.debian.org/debian unstable/main amd64 libjpeg62-turbo amd64 1:2.1.5-3+b1 [168 kB] Get: 155 http://deb.debian.org/debian unstable/main amd64 libyuv0 amd64 0.0.1904.20250204-1 [174 kB] Get: 156 http://deb.debian.org/debian unstable/main amd64 libavif16 amd64 1.1.1-1 [117 kB] Get: 157 http://deb.debian.org/debian unstable/main amd64 libsharpyuv0 amd64 1.5.0-0.1 [116 kB] Get: 158 http://deb.debian.org/debian unstable/main amd64 libheif-plugin-dav1d amd64 1.19.5-1+b1 [11.5 kB] Get: 159 http://deb.debian.org/debian unstable/main amd64 libde265-0 amd64 1.0.15-1+b2 [189 kB] Get: 160 http://deb.debian.org/debian unstable/main amd64 libheif-plugin-libde265 amd64 1.19.5-1+b1 [15.5 kB] Get: 161 http://deb.debian.org/debian unstable/main amd64 libheif1 amd64 1.19.5-1+b1 [514 kB] Get: 162 http://deb.debian.org/debian unstable/main amd64 libimagequant0 amd64 2.18.0-1+b2 [35.2 kB] Get: 163 http://deb.debian.org/debian unstable/main amd64 libfribidi0 amd64 1.0.16-1 [26.5 kB] Get: 164 http://deb.debian.org/debian unstable/main amd64 libgraphite2-3 amd64 1.3.14-2+b1 [75.4 kB] Get: 165 http://deb.debian.org/debian unstable/main amd64 libharfbuzz0b amd64 10.2.0-1 [479 kB] Get: 166 http://deb.debian.org/debian unstable/main amd64 libraqm0 amd64 0.10.2-1 [13.9 kB] Get: 167 http://deb.debian.org/debian unstable/main amd64 libdeflate0 amd64 1.23-1+b1 [47.5 kB] Get: 168 http://deb.debian.org/debian unstable/main amd64 libjbig0 amd64 2.1-6.1+b2 [32.1 kB] Get: 169 http://deb.debian.org/debian unstable/main amd64 liblerc4 amd64 4.0.0+ds-5 [183 kB] Get: 170 http://deb.debian.org/debian unstable/main amd64 libwebp7 amd64 1.5.0-0.1 [318 kB] Get: 171 http://deb.debian.org/debian unstable/main amd64 libtiff6 amd64 4.5.1+git230720-5 [324 kB] Get: 172 http://deb.debian.org/debian unstable/main amd64 libxpm4 amd64 1:3.5.17-1+b3 [56.2 kB] Get: 173 http://deb.debian.org/debian unstable/main amd64 libgd3 amd64 2.3.3-12+b1 [126 kB] Get: 174 http://deb.debian.org/debian unstable/main amd64 liblua5.4-0 amd64 5.4.7-1+b2 [147 kB] Get: 175 http://deb.debian.org/debian unstable/main amd64 fontconfig amd64 2.15.0-2 [463 kB] Get: 176 http://deb.debian.org/debian unstable/main amd64 libthai-data all 0.1.29-2 [168 kB] Get: 177 http://deb.debian.org/debian unstable/main amd64 libdatrie1 amd64 0.2.13-3+b1 [38.1 kB] Get: 178 http://deb.debian.org/debian unstable/main amd64 libthai0 amd64 0.1.29-2+b1 [49.4 kB] Get: 179 http://deb.debian.org/debian unstable/main amd64 libpango-1.0-0 amd64 1.56.1-1 [226 kB] Get: 180 http://deb.debian.org/debian unstable/main amd64 libpangoft2-1.0-0 amd64 1.56.1-1 [55.3 kB] Get: 181 http://deb.debian.org/debian unstable/main amd64 libpangocairo-1.0-0 amd64 1.56.1-1 [35.8 kB] Get: 182 http://deb.debian.org/debian unstable/main amd64 libwebpmux3 amd64 1.5.0-0.1 [126 kB] Get: 183 http://deb.debian.org/debian unstable/main amd64 gnuplot-nox amd64 6.0.2+dfsg1-1 [922 kB] Get: 184 http://deb.debian.org/debian unstable/main amd64 dh-octave-autopkgtest all 1.8.0 [10.0 kB] Get: 185 http://deb.debian.org/debian unstable/main amd64 libapt-pkg-perl amd64 0.1.41 [68.3 kB] Get: 186 http://deb.debian.org/debian unstable/main amd64 libarray-intspan-perl all 2.004-2 [25.7 kB] Get: 187 http://deb.debian.org/debian unstable/main amd64 libyaml-libyaml-perl amd64 0.903.0+ds-1 [35.4 kB] Get: 188 http://deb.debian.org/debian unstable/main amd64 libconfig-model-backend-yaml-perl all 2.134-2 [10.8 kB] Get: 189 http://deb.debian.org/debian unstable/main amd64 libexporter-lite-perl all 0.09-2 [10.7 kB] Get: 190 http://deb.debian.org/debian unstable/main amd64 libencode-locale-perl all 1.05-3 [12.9 kB] Get: 191 http://deb.debian.org/debian unstable/main amd64 libtimedate-perl all 2.3300-2 [39.3 kB] Get: 192 http://deb.debian.org/debian unstable/main amd64 libhttp-date-perl all 6.06-1 [10.7 kB] Get: 193 http://deb.debian.org/debian unstable/main amd64 libfile-listing-perl all 6.16-1 [12.4 kB] Get: 194 http://deb.debian.org/debian unstable/main amd64 libhtml-tagset-perl all 3.24-1 [14.7 kB] Get: 195 http://deb.debian.org/debian unstable/main amd64 liburi-perl all 5.30-1 [105 kB] Get: 196 http://deb.debian.org/debian unstable/main amd64 libhtml-parser-perl amd64 3.83-1+b2 [99.7 kB] Get: 197 http://deb.debian.org/debian unstable/main amd64 libhtml-tree-perl all 5.07-3 [211 kB] Get: 198 http://deb.debian.org/debian unstable/main amd64 libclone-perl amd64 0.47-1+b1 [13.9 kB] Get: 199 http://deb.debian.org/debian unstable/main amd64 libio-html-perl all 1.004-3 [16.2 kB] Get: 200 http://deb.debian.org/debian unstable/main amd64 liblwp-mediatypes-perl all 6.04-2 [20.2 kB] Get: 201 http://deb.debian.org/debian unstable/main amd64 libhttp-message-perl all 7.00-2 [79.8 kB] Get: 202 http://deb.debian.org/debian unstable/main amd64 libhttp-cookies-perl all 6.11-1 [19.1 kB] Get: 203 http://deb.debian.org/debian unstable/main amd64 libhttp-negotiate-perl all 6.01-2 [13.1 kB] Get: 204 http://deb.debian.org/debian unstable/main amd64 perl-openssl-defaults amd64 7+b2 [6724 B] Get: 205 http://deb.debian.org/debian unstable/main amd64 libnet-ssleay-perl amd64 1.94-3 [339 kB] Get: 206 http://deb.debian.org/debian unstable/main amd64 libio-socket-ssl-perl all 2.089-1 [223 kB] Get: 207 http://deb.debian.org/debian unstable/main amd64 libnet-http-perl all 6.23-1 [23.9 kB] Get: 208 http://deb.debian.org/debian unstable/main amd64 liblwp-protocol-https-perl all 6.14-1 [10.8 kB] Get: 209 http://deb.debian.org/debian unstable/main amd64 libwww-robotrules-perl all 6.02-1 [12.9 kB] Get: 210 http://deb.debian.org/debian unstable/main amd64 libwww-perl all 6.77-1 [183 kB] Get: 211 http://deb.debian.org/debian unstable/main amd64 liberror-perl all 0.17029-2 [29.0 kB] Get: 212 http://deb.debian.org/debian unstable/main amd64 libparse-debcontrol-perl all 2.005-6 [21.6 kB] Get: 213 http://deb.debian.org/debian unstable/main amd64 libsoftware-copyright-perl all 0.012-2 [18.0 kB] Get: 214 http://deb.debian.org/debian unstable/main amd64 libalgorithm-c3-perl all 0.11-2 [10.8 kB] Get: 215 http://deb.debian.org/debian unstable/main amd64 libclass-c3-perl all 0.35-2 [21.0 kB] Get: 216 http://deb.debian.org/debian unstable/main amd64 libmro-compat-perl all 0.15-2 [11.8 kB] Get: 217 http://deb.debian.org/debian unstable/main amd64 libdata-section-perl all 0.200008-1 [13.1 kB] Get: 218 http://deb.debian.org/debian unstable/main amd64 libtext-template-perl all 1.61-1 [54.4 kB] Get: 219 http://deb.debian.org/debian unstable/main amd64 libsoftware-license-perl all 0.104006-1 [116 kB] Get: 220 http://deb.debian.org/debian unstable/main amd64 libsoftware-licensemoreutils-perl all 1.009-1 [22.0 kB] Get: 221 http://deb.debian.org/debian unstable/main amd64 libsort-versions-perl all 1.62-3 [8928 B] Get: 222 http://deb.debian.org/debian unstable/main amd64 libtext-reform-perl all 1.20-5 [36.0 kB] Get: 223 http://deb.debian.org/debian unstable/main amd64 libtext-autoformat-perl all 1.750000-2 [35.2 kB] Get: 224 http://deb.debian.org/debian unstable/main amd64 libtext-levenshtein-damerau-perl all 0.41-3 [12.3 kB] Get: 225 http://deb.debian.org/debian unstable/main amd64 libtoml-tiny-perl all 0.19-1 [23.1 kB] Get: 226 http://deb.debian.org/debian unstable/main amd64 libclass-inspector-perl all 1.36-3 [17.5 kB] Get: 227 http://deb.debian.org/debian unstable/main amd64 libfile-sharedir-perl all 1.118-3 [16.0 kB] Get: 228 http://deb.debian.org/debian unstable/main amd64 libindirect-perl amd64 0.39-2+b4 [27.1 kB] Get: 229 http://deb.debian.org/debian unstable/main amd64 libxs-parse-keyword-perl amd64 0.48-2 [65.7 kB] Get: 230 http://deb.debian.org/debian unstable/main amd64 libxs-parse-sublike-perl amd64 0.37-1 [47.1 kB] Get: 231 http://deb.debian.org/debian unstable/main amd64 libobject-pad-perl amd64 0.819-1 [140 kB] Get: 232 http://deb.debian.org/debian unstable/main amd64 libfeature-compat-class-perl all 0.07-1 [11.5 kB] Get: 233 http://deb.debian.org/debian unstable/main amd64 libsyntax-keyword-try-perl amd64 0.30-1+b1 [27.4 kB] Get: 234 http://deb.debian.org/debian unstable/main amd64 libfeature-compat-try-perl all 0.05-1 [10.4 kB] Get: 235 http://deb.debian.org/debian unstable/main amd64 libio-interactive-perl all 1.026-1 [11.7 kB] Get: 236 http://deb.debian.org/debian unstable/main amd64 liblog-any-perl all 1.717-1 [78.9 kB] Get: 237 http://deb.debian.org/debian unstable/main amd64 liblog-any-adapter-screen-perl all 0.141-1 [14.0 kB] Get: 238 http://deb.debian.org/debian unstable/main amd64 libsub-exporter-progressive-perl all 0.001013-3 [7496 B] Get: 239 http://deb.debian.org/debian unstable/main amd64 libvariable-magic-perl amd64 0.64-1+b1 [44.9 kB] Get: 240 http://deb.debian.org/debian unstable/main amd64 libb-hooks-endofscope-perl all 0.28-1 [17.5 kB] Get: 241 http://deb.debian.org/debian unstable/main amd64 libsub-identify-perl amd64 0.14-3+b3 [11.3 kB] Get: 242 http://deb.debian.org/debian unstable/main amd64 libsub-name-perl amd64 0.28-1 [12.2 kB] Get: 243 http://deb.debian.org/debian unstable/main amd64 libnamespace-clean-perl all 0.27-2 [17.8 kB] Get: 244 http://deb.debian.org/debian unstable/main amd64 libnumber-compare-perl all 0.03-3 [6332 B] Get: 245 http://deb.debian.org/debian unstable/main amd64 libtext-glob-perl all 0.11-3 [7676 B] Get: 246 http://deb.debian.org/debian unstable/main amd64 libpath-iterator-rule-perl all 1.015-2 [41.7 kB] Get: 247 http://deb.debian.org/debian unstable/main amd64 libpod-parser-perl all 1.67-1 [94.1 kB] Get: 248 http://deb.debian.org/debian unstable/main amd64 libpod-constants-perl all 0.19-2 [17.3 kB] Get: 249 http://deb.debian.org/debian unstable/main amd64 libset-intspan-perl all 1.19-3 [25.3 kB] Get: 250 http://deb.debian.org/debian unstable/main amd64 libstring-copyright-perl all 0.003014-1 [23.4 kB] Get: 251 http://deb.debian.org/debian unstable/main amd64 libstring-escape-perl all 2010.002-3 [18.7 kB] Get: 252 http://deb.debian.org/debian unstable/main amd64 libregexp-pattern-license-perl all 3.11.2-1 [94.6 kB] Get: 253 http://deb.debian.org/debian unstable/main amd64 libregexp-pattern-perl all 0.2.14-2 [18.7 kB] Get: 254 http://deb.debian.org/debian unstable/main amd64 libstring-license-perl all 0.0.11-1 [34.7 kB] Get: 255 http://deb.debian.org/debian unstable/main amd64 licensecheck all 3.3.9-1 [50.1 kB] Get: 256 http://deb.debian.org/debian unstable/main amd64 diffstat amd64 1.67-1 [35.5 kB] Get: 257 http://deb.debian.org/debian unstable/main amd64 libgpg-error0 amd64 1.51-3 [82.2 kB] Get: 258 http://deb.debian.org/debian unstable/main amd64 libassuan9 amd64 3.0.1-2 [60.6 kB] Get: 259 http://deb.debian.org/debian unstable/main amd64 libgcrypt20 amd64 1.11.0-7 [843 kB] Get: 260 http://deb.debian.org/debian unstable/main amd64 gpgconf amd64 2.2.46-1+b1 [121 kB] Get: 261 http://deb.debian.org/debian unstable/main amd64 gpg amd64 2.2.46-1+b1 [532 kB] Get: 262 http://deb.debian.org/debian unstable/main amd64 iso-codes all 4.17.0-1 [3055 kB] Get: 263 http://deb.debian.org/debian unstable/main amd64 libberkeleydb-perl amd64 0.66-1 [121 kB] Get: 264 http://deb.debian.org/debian unstable/main amd64 libclass-xsaccessor-perl amd64 1.19-4+b5 [36.1 kB] Get: 265 http://deb.debian.org/debian unstable/main amd64 libconfig-tiny-perl all 2.30-1 [18.9 kB] Get: 266 http://deb.debian.org/debian unstable/main amd64 libconst-fast-perl all 0.014-2 [8792 B] Get: 267 http://deb.debian.org/debian unstable/main amd64 libcpanel-json-xs-perl amd64 4.39-1 [130 kB] Get: 268 http://deb.debian.org/debian unstable/main amd64 libaliased-perl all 0.34-3 [13.5 kB] Get: 269 http://deb.debian.org/debian unstable/main amd64 libclass-data-inheritable-perl all 0.10-1 [8632 B] Get: 270 http://deb.debian.org/debian unstable/main amd64 libdevel-stacktrace-perl all 2.0500-1 [26.4 kB] Get: 271 http://deb.debian.org/debian unstable/main amd64 libexception-class-perl all 1.45-1 [34.6 kB] Get: 272 http://deb.debian.org/debian unstable/main amd64 libiterator-perl all 0.03+ds1-2 [18.8 kB] Get: 273 http://deb.debian.org/debian unstable/main amd64 libiterator-util-perl all 0.02+ds1-2 [14.0 kB] Get: 274 http://deb.debian.org/debian unstable/main amd64 libdata-dpath-perl all 0.60-1 [41.8 kB] Get: 275 http://deb.debian.org/debian unstable/main amd64 libnet-domain-tld-perl all 1.75-4 [31.5 kB] Get: 276 http://deb.debian.org/debian unstable/main amd64 libdata-validate-domain-perl all 0.15-1 [11.9 kB] Get: 277 http://deb.debian.org/debian unstable/main amd64 libnet-ipv6addr-perl all 1.02-1 [21.7 kB] Get: 278 http://deb.debian.org/debian unstable/main amd64 libnet-netmask-perl all 2.0002-2 [28.6 kB] Get: 279 http://deb.debian.org/debian unstable/main amd64 libnetaddr-ip-perl amd64 4.079+dfsg-2+b5 [98.1 kB] Get: 280 http://deb.debian.org/debian unstable/main amd64 libdata-validate-ip-perl all 0.31-1 [20.6 kB] Get: 281 http://deb.debian.org/debian unstable/main amd64 libdata-validate-uri-perl all 0.07-3 [11.0 kB] Get: 282 http://deb.debian.org/debian unstable/main amd64 libdevel-size-perl amd64 0.84-1+b1 [24.2 kB] Get: 283 http://deb.debian.org/debian unstable/main amd64 libemail-address-xs-perl amd64 1.05-1+b4 [29.4 kB] Get: 284 http://deb.debian.org/debian unstable/main amd64 libipc-system-simple-perl all 1.30-2 [26.8 kB] Get: 285 http://deb.debian.org/debian unstable/main amd64 libfile-basedir-perl all 0.09-2 [15.1 kB] Get: 286 http://deb.debian.org/debian unstable/main amd64 libfile-find-rule-perl all 0.34-3 [26.6 kB] Get: 287 http://deb.debian.org/debian unstable/main amd64 libio-string-perl all 1.08-4 [12.1 kB] Get: 288 http://deb.debian.org/debian unstable/main amd64 libfont-ttf-perl all 1.06-2 [318 kB] Get: 289 http://deb.debian.org/debian unstable/main amd64 libhtml-html5-entities-perl all 0.004-3 [21.0 kB] Get: 290 http://deb.debian.org/debian unstable/main amd64 libhtml-tokeparser-simple-perl all 3.16-4 [39.1 kB] Get: 291 http://deb.debian.org/debian unstable/main amd64 libipc-run3-perl all 0.049-1 [31.5 kB] Get: 292 http://deb.debian.org/debian unstable/main amd64 libjson-maybexs-perl all 1.004008-1 [12.9 kB] Get: 293 http://deb.debian.org/debian unstable/main amd64 liblist-compare-perl all 0.55-2 [65.7 kB] Get: 294 http://deb.debian.org/debian unstable/main amd64 liblist-someutils-perl all 0.59-1 [37.1 kB] Get: 295 http://deb.debian.org/debian unstable/main amd64 liblist-utilsby-perl all 0.12-2 [15.5 kB] Get: 296 http://deb.debian.org/debian unstable/main amd64 libmldbm-perl all 2.05-4 [16.8 kB] Get: 297 http://deb.debian.org/debian unstable/main amd64 libclass-method-modifiers-perl all 2.15-1 [18.0 kB] Get: 298 http://deb.debian.org/debian unstable/main amd64 libimport-into-perl all 1.002005-2 [11.3 kB] Get: 299 http://deb.debian.org/debian unstable/main amd64 librole-tiny-perl all 2.002004-1 [21.4 kB] Get: 300 http://deb.debian.org/debian unstable/main amd64 libsub-quote-perl all 2.006008-1 [21.8 kB] Get: 301 http://deb.debian.org/debian unstable/main amd64 libmoo-perl all 2.005005-1 [58.0 kB] Get: 302 http://deb.debian.org/debian unstable/main amd64 libstrictures-perl all 2.000006-1 [18.6 kB] Get: 303 http://deb.debian.org/debian unstable/main amd64 libmoox-aliases-perl all 0.001006-2 [7156 B] Get: 304 http://deb.debian.org/debian unstable/main amd64 libperlio-gzip-perl amd64 0.20-1+b4 [17.5 kB] Get: 305 http://deb.debian.org/debian unstable/main amd64 libperlio-utf8-strict-perl amd64 0.010-1+b3 [11.4 kB] Get: 306 http://deb.debian.org/debian unstable/main amd64 libproc-processtable-perl amd64 0.636-1+b3 [42.3 kB] Get: 307 http://deb.debian.org/debian unstable/main amd64 libregexp-wildcards-perl all 1.05-3 [14.1 kB] Get: 308 http://deb.debian.org/debian unstable/main amd64 libsereal-decoder-perl amd64 5.004+ds-1+b3 [100 kB] Get: 309 http://deb.debian.org/debian unstable/main amd64 libsereal-encoder-perl amd64 5.004+ds-1+b3 [104 kB] Get: 310 http://deb.debian.org/debian unstable/main amd64 libterm-readkey-perl amd64 2.38-2+b4 [24.6 kB] Get: 311 http://deb.debian.org/debian unstable/main amd64 libtext-levenshteinxs-perl amd64 0.03-5+b4 [8720 B] Get: 312 http://deb.debian.org/debian unstable/main amd64 libmarkdown2 amd64 2.2.7-2.1 [36.0 kB] Get: 313 http://deb.debian.org/debian unstable/main amd64 libtext-markdown-discount-perl amd64 0.18-1 [13.1 kB] Get: 314 http://deb.debian.org/debian unstable/main amd64 libdata-messagepack-perl amd64 1.02-1+b4 [32.8 kB] Get: 315 http://deb.debian.org/debian unstable/main amd64 libtext-xslate-perl amd64 3.5.9-2+b1 [174 kB] Get: 316 http://deb.debian.org/debian unstable/main amd64 libtime-duration-perl all 1.21-2 [13.1 kB] Get: 317 http://deb.debian.org/debian unstable/main amd64 libtime-moment-perl amd64 0.44-2+b4 [73.2 kB] Get: 318 http://deb.debian.org/debian unstable/main amd64 libunicode-utf8-perl amd64 0.62-2+b3 [20.4 kB] Get: 319 http://deb.debian.org/debian unstable/main amd64 libcgi-pm-perl all 4.67-1 [217 kB] Get: 320 http://deb.debian.org/debian unstable/main amd64 libhtml-form-perl all 6.12-1 [32.3 kB] Get: 321 http://deb.debian.org/debian unstable/main amd64 libwww-mechanize-perl all 2.19-1 [114 kB] Get: 322 http://deb.debian.org/debian unstable/main amd64 libxml-namespacesupport-perl all 1.12-2 [15.1 kB] Get: 323 http://deb.debian.org/debian unstable/main amd64 libxml-sax-base-perl all 1.09-3 [20.6 kB] Get: 324 http://deb.debian.org/debian unstable/main amd64 libxml-sax-perl all 1.02+dfsg-4 [53.4 kB] Get: 325 http://deb.debian.org/debian unstable/main amd64 libxml-libxml-perl amd64 2.0207+dfsg+really+2.0134-5+b2 [314 kB] Get: 326 http://deb.debian.org/debian unstable/main amd64 liblz1 amd64 1.15-2 [38.9 kB] Get: 327 http://deb.debian.org/debian unstable/main amd64 plzip amd64 1.12-1 [65.0 kB] Get: 328 http://deb.debian.org/debian unstable/main amd64 liblzo2-2 amd64 2.10-3+b1 [55.1 kB] Get: 329 http://deb.debian.org/debian unstable/main amd64 lzop amd64 1.04-2 [84.2 kB] Get: 330 http://deb.debian.org/debian unstable/main amd64 patchutils amd64 0.4.2-1 [77.5 kB] Get: 331 http://deb.debian.org/debian unstable/main amd64 t1utils amd64 1.41-4 [62.1 kB] Get: 332 http://deb.debian.org/debian unstable/main amd64 unzip amd64 6.0-28 [166 kB] Get: 333 http://deb.debian.org/debian unstable/main amd64 lintian all 2.121.1 [1058 kB] Get: 334 http://deb.debian.org/debian unstable/main amd64 libconfig-model-dpkg-perl all 3.010 [174 kB] Get: 335 http://deb.debian.org/debian unstable/main amd64 libconvert-binhex-perl all 1.125-3 [27.4 kB] Get: 336 http://deb.debian.org/debian unstable/main amd64 libnet-smtp-ssl-perl all 1.04-2 [6548 B] Get: 337 http://deb.debian.org/debian unstable/main amd64 libmailtools-perl all 2.22-1 [88.8 kB] Get: 338 http://deb.debian.org/debian unstable/main amd64 libmime-tools-perl all 5.515-1 [203 kB] Get: 339 http://deb.debian.org/debian unstable/main amd64 libsuitesparseconfig7 amd64 1:7.8.3+dfsg-3 [23.9 kB] Get: 340 http://deb.debian.org/debian unstable/main amd64 libamd3 amd64 1:7.8.3+dfsg-3 [40.8 kB] Get: 341 http://deb.debian.org/debian unstable/main amd64 libblas3 amd64 3.12.1-2 [160 kB] Get: 342 http://deb.debian.org/debian unstable/main amd64 libgfortran5 amd64 14.2.0-17 [836 kB] Get: 343 http://deb.debian.org/debian unstable/main amd64 liblapack3 amd64 3.12.1-2 [2452 kB] Get: 344 http://deb.debian.org/debian unstable/main amd64 libarpack2t64 amd64 3.9.1-4 [104 kB] Get: 345 http://deb.debian.org/debian unstable/main amd64 libccolamd3 amd64 1:7.8.3+dfsg-3 [39.3 kB] Get: 346 http://deb.debian.org/debian unstable/main amd64 libcamd3 amd64 1:7.8.3+dfsg-3 [37.6 kB] Get: 347 http://deb.debian.org/debian unstable/main amd64 libcolamd3 amd64 1:7.8.3+dfsg-3 [32.6 kB] Get: 348 http://deb.debian.org/debian unstable/main amd64 libcholmod5 amd64 1:7.8.3+dfsg-3 [639 kB] Get: 349 http://deb.debian.org/debian unstable/main amd64 libcxsparse4 amd64 1:7.8.3+dfsg-3 [84.1 kB] Get: 350 http://deb.debian.org/debian unstable/main amd64 libfftw3-double3 amd64 3.3.10-2+b1 [781 kB] Get: 351 http://deb.debian.org/debian unstable/main amd64 libfftw3-single3 amd64 3.3.10-2+b1 [809 kB] Get: 352 http://deb.debian.org/debian unstable/main amd64 libxfixes3 amd64 1:6.0.0-2+b4 [20.2 kB] Get: 353 http://deb.debian.org/debian unstable/main amd64 libxcursor1 amd64 1:1.2.3-1 [39.7 kB] Get: 354 http://deb.debian.org/debian unstable/main amd64 libxft2 amd64 2.3.6-1+b4 [54.5 kB] Get: 355 http://deb.debian.org/debian unstable/main amd64 libxinerama1 amd64 2:1.1.4-3+b3 [16.0 kB] Get: 356 http://deb.debian.org/debian unstable/main amd64 libfltk1.3t64 amd64 1.3.8-6.1+b1 [556 kB] Get: 357 http://deb.debian.org/debian unstable/main amd64 libglvnd0 amd64 1.7.0-1+b2 [52.0 kB] Get: 358 http://deb.debian.org/debian unstable/main amd64 libdrm-common all 2.4.123-1 [8084 B] Get: 359 http://deb.debian.org/debian unstable/main amd64 libdrm2 amd64 2.4.123-1 [38.7 kB] Get: 360 http://deb.debian.org/debian unstable/main amd64 libglapi-mesa amd64 24.3.4-3 [38.5 kB] Get: 361 http://deb.debian.org/debian unstable/main amd64 libx11-xcb1 amd64 2:1.8.10-2 [241 kB] Get: 362 http://deb.debian.org/debian unstable/main amd64 libxcb-dri3-0 amd64 1.17.0-2+b1 [107 kB] Get: 363 http://deb.debian.org/debian unstable/main amd64 libxcb-glx0 amd64 1.17.0-2+b1 [122 kB] Get: 364 http://deb.debian.org/debian unstable/main amd64 libxcb-present0 amd64 1.17.0-2+b1 [106 kB] Get: 365 http://deb.debian.org/debian unstable/main amd64 libxcb-xfixes0 amd64 1.17.0-2+b1 [109 kB] Get: 366 http://deb.debian.org/debian unstable/main amd64 libxxf86vm1 amd64 1:1.1.4-1+b4 [19.3 kB] Get: 367 http://deb.debian.org/debian unstable/main amd64 libdrm-amdgpu1 amd64 2.4.123-1 [22.3 kB] Get: 368 http://deb.debian.org/debian unstable/main amd64 libpciaccess0 amd64 0.17-3+b3 [51.9 kB] Get: 369 http://deb.debian.org/debian unstable/main amd64 libdrm-intel1 amd64 2.4.123-1 [63.7 kB] Get: 370 http://deb.debian.org/debian unstable/main amd64 libdrm-radeon1 amd64 2.4.123-1 [22.3 kB] Get: 371 http://deb.debian.org/debian unstable/main amd64 libz3-4 amd64 4.13.3-1 [8560 kB] Get: 372 http://deb.debian.org/debian unstable/main amd64 libllvm19 amd64 1:19.1.7-1+b1 [26.0 MB] Get: 373 http://deb.debian.org/debian unstable/main amd64 libsensors-config all 1:3.6.0-10 [14.6 kB] Get: 374 http://deb.debian.org/debian unstable/main amd64 libsensors5 amd64 1:3.6.0-10+b1 [35.1 kB] Get: 375 http://deb.debian.org/debian unstable/main amd64 libxcb-randr0 amd64 1.17.0-2+b1 [117 kB] Get: 376 http://deb.debian.org/debian unstable/main amd64 libxcb-sync1 amd64 1.17.0-2+b1 [109 kB] Get: 377 http://deb.debian.org/debian unstable/main amd64 libxshmfence1 amd64 1.3-1+b3 [8852 B] Get: 378 http://deb.debian.org/debian unstable/main amd64 mesa-libgallium amd64 24.3.4-3 [9492 kB] Get: 379 http://deb.debian.org/debian unstable/main amd64 libwayland-server0 amd64 1.23.1-3 [34.4 kB] Get: 380 http://deb.debian.org/debian unstable/main amd64 libgbm1 amd64 24.3.4-3 [43.7 kB] Get: 381 http://deb.debian.org/debian unstable/main amd64 libvulkan1 amd64 1.4.304.0-1 [129 kB] Get: 382 http://deb.debian.org/debian unstable/main amd64 libgl1-mesa-dri amd64 24.3.4-3 [45.2 kB] Get: 383 http://deb.debian.org/debian unstable/main amd64 libglx-mesa0 amd64 24.3.4-3 [143 kB] Get: 384 http://deb.debian.org/debian unstable/main amd64 libglx0 amd64 1.7.0-1+b2 [34.9 kB] Get: 385 http://deb.debian.org/debian unstable/main amd64 libgl1 amd64 1.7.0-1+b2 [89.5 kB] Get: 386 http://deb.debian.org/debian unstable/main amd64 libfltk-gl1.3t64 amd64 1.3.8-6.1+b1 [63.0 kB] Get: 387 http://deb.debian.org/debian unstable/main amd64 libgl2ps1.4 amd64 1.4.2+dfsg1-2 [41.3 kB] Get: 388 http://deb.debian.org/debian unstable/main amd64 libltdl7 amd64 2.5.4-3 [415 kB] Get: 389 http://deb.debian.org/debian unstable/main amd64 libglpk40 amd64 5.0-1+b2 [401 kB] Get: 390 http://deb.debian.org/debian unstable/main amd64 libopengl0 amd64 1.7.0-1+b2 [30.9 kB] Get: 391 http://deb.debian.org/debian unstable/main amd64 libglu1-mesa amd64 9.0.2-1.1+b3 [184 kB] Get: 392 http://deb.debian.org/debian unstable/main amd64 libgif7 amd64 5.2.2-1+b1 [44.2 kB] Get: 393 http://deb.debian.org/debian unstable/main amd64 libhwy1t64 amd64 1.2.0-2+b2 [676 kB] Get: 394 http://deb.debian.org/debian unstable/main amd64 liblcms2-2 amd64 2.16-2 [160 kB] Get: 395 http://deb.debian.org/debian unstable/main amd64 libimath-3-1-29t64 amd64 3.1.12-1+b3 [45.5 kB] Get: 396 http://deb.debian.org/debian unstable/main amd64 libopenexr-3-1-30 amd64 3.1.5-5.1+b4 [935 kB] Get: 397 http://deb.debian.org/debian unstable/main amd64 libjxl0.10 amd64 0.10.4-2 [1096 kB] Get: 398 http://deb.debian.org/debian unstable/main amd64 libwmflite-0.2-7 amd64 0.2.13-1.1+b3 [75.6 kB] Get: 399 http://deb.debian.org/debian unstable/main amd64 libgraphicsmagick-q16-3t64 amd64 1.4+really1.3.45-1+b2 [1228 kB] Get: 400 http://deb.debian.org/debian unstable/main amd64 libgraphicsmagick++-q16-12t64 amd64 1.4+really1.3.45-1+b2 [126 kB] Get: 401 http://deb.debian.org/debian unstable/main amd64 libcurl4t64 amd64 8.12.1-2 [369 kB] Get: 402 http://deb.debian.org/debian unstable/main amd64 libaec0 amd64 1.1.3-1+b1 [23.8 kB] Get: 403 http://deb.debian.org/debian unstable/main amd64 libsz2 amd64 1.1.3-1+b1 [8080 B] Get: 404 http://deb.debian.org/debian unstable/main amd64 libhdf5-310 amd64 1.14.5+repack-3 [1344 kB] Get: 405 http://deb.debian.org/debian unstable/main amd64 libasound2-data all 1.2.13-1 [21.1 kB] Get: 406 http://deb.debian.org/debian unstable/main amd64 libasound2t64 amd64 1.2.13-1+b1 [373 kB] Get: 407 http://deb.debian.org/debian unstable/main amd64 libopus0 amd64 1.5.2-2 [2852 kB] Get: 408 http://deb.debian.org/debian unstable/main amd64 libsamplerate0 amd64 0.2.2-4+b2 [950 kB] Get: 409 http://deb.debian.org/debian unstable/main amd64 libjack-jackd2-0 amd64 1.9.22~dfsg-4 [287 kB] Get: 410 http://deb.debian.org/debian unstable/main amd64 libportaudio2 amd64 19.6.0-1.2+b3 [64.8 kB] Get: 411 http://deb.debian.org/debian unstable/main amd64 libqhull-r8.0 amd64 2020.2-6+b2 [248 kB] Get: 412 http://deb.debian.org/debian unstable/main amd64 libqrupdate1 amd64 1.1.5-1 [39.9 kB] Get: 413 http://deb.debian.org/debian unstable/main amd64 libqscintilla2-qt6-l10n all 2.14.1+dfsg-1 [105 kB] Get: 414 http://deb.debian.org/debian unstable/main amd64 libb2-1 amd64 0.98.1-1.1+b2 [41.7 kB] Get: 415 http://deb.debian.org/debian unstable/main amd64 libdouble-conversion3 amd64 3.3.1-1 [41.8 kB] Get: 416 http://deb.debian.org/debian unstable/main amd64 libpcre2-16-0 amd64 10.45-1 [281 kB] Get: 417 http://deb.debian.org/debian unstable/main amd64 libqt6core6t64 amd64 6.7.2+dfsg-6 [1799 kB] Get: 418 http://deb.debian.org/debian unstable/main amd64 libwayland-client0 amd64 1.23.1-3 [26.8 kB] Get: 419 http://deb.debian.org/debian unstable/main amd64 libegl-mesa0 amd64 24.3.4-3 [127 kB] Get: 420 http://deb.debian.org/debian unstable/main amd64 libegl1 amd64 1.7.0-1+b2 [34.6 kB] Get: 421 http://deb.debian.org/debian unstable/main amd64 x11-common all 1:7.7+24 [217 kB] Get: 422 http://deb.debian.org/debian unstable/main amd64 libice6 amd64 2:1.1.1-1 [65.4 kB] Get: 423 http://deb.debian.org/debian unstable/main amd64 libevdev2 amd64 1.13.3+dfsg-1 [32.2 kB] Get: 424 http://deb.debian.org/debian unstable/main amd64 libmtdev1t64 amd64 1.1.7-1 [22.6 kB] Get: 425 http://deb.debian.org/debian unstable/main amd64 libgudev-1.0-0 amd64 238-6 [14.5 kB] Get: 426 http://deb.debian.org/debian unstable/main amd64 libwacom-common all 2.14.0-1 [103 kB] Get: 427 http://deb.debian.org/debian unstable/main amd64 libwacom9 amd64 2.14.0-1 [25.3 kB] Get: 428 http://deb.debian.org/debian unstable/main amd64 libinput-bin amd64 1.27.1-1 [26.0 kB] Get: 429 http://deb.debian.org/debian unstable/main amd64 libinput10 amd64 1.27.1-1 [135 kB] Get: 430 http://deb.debian.org/debian unstable/main amd64 libmd4c0 amd64 0.5.2-2+b1 [49.0 kB] Get: 431 http://deb.debian.org/debian unstable/main amd64 libdbus-1-3 amd64 1.16.0-1 [177 kB] Get: 432 http://deb.debian.org/debian unstable/main amd64 libqt6dbus6 amd64 6.7.2+dfsg-6 [260 kB] Get: 433 http://deb.debian.org/debian unstable/main amd64 libsm6 amd64 2:1.2.4-1 [35.2 kB] Get: 434 http://deb.debian.org/debian unstable/main amd64 libts0t64 amd64 1.22-1.1+b1 [61.7 kB] Get: 435 http://deb.debian.org/debian unstable/main amd64 libxcb-util1 amd64 0.4.1-1 [23.5 kB] Get: 436 http://deb.debian.org/debian unstable/main amd64 libxcb-image0 amd64 0.4.0-2+b2 [22.2 kB] Get: 437 http://deb.debian.org/debian unstable/main amd64 libxcb-render-util0 amd64 0.3.10-1 [18.4 kB] Get: 438 http://deb.debian.org/debian unstable/main amd64 libxcb-cursor0 amd64 0.1.5-1 [17.1 kB] Get: 439 http://deb.debian.org/debian unstable/main amd64 libxcb-icccm4 amd64 0.4.2-1 [27.5 kB] Get: 440 http://deb.debian.org/debian unstable/main amd64 libxcb-keysyms1 amd64 0.4.1-1 [16.7 kB] Get: 441 http://deb.debian.org/debian unstable/main amd64 libxcb-shape0 amd64 1.17.0-2+b1 [106 kB] Get: 442 http://deb.debian.org/debian unstable/main amd64 libxcb-xinput0 amd64 1.17.0-2+b1 [130 kB] Get: 443 http://deb.debian.org/debian unstable/main amd64 libxcb-xkb1 amd64 1.17.0-2+b1 [130 kB] Get: 444 http://deb.debian.org/debian unstable/main amd64 xkb-data all 2.42-1 [790 kB] Get: 445 http://deb.debian.org/debian unstable/main amd64 libxkbcommon0 amd64 1.7.0-2 [113 kB] Get: 446 http://deb.debian.org/debian unstable/main amd64 libxkbcommon-x11-0 amd64 1.7.0-2 [16.2 kB] Get: 447 http://deb.debian.org/debian unstable/main amd64 libqt6gui6 amd64 6.7.2+dfsg-6 [3019 kB] Get: 448 http://deb.debian.org/debian unstable/main amd64 libavahi-common-data amd64 0.8-16 [112 kB] Get: 449 http://deb.debian.org/debian unstable/main amd64 libavahi-common3 amd64 0.8-16 [44.2 kB] Get: 450 http://deb.debian.org/debian unstable/main amd64 libavahi-client3 amd64 0.8-16 [48.4 kB] Get: 451 http://deb.debian.org/debian unstable/main amd64 libcups2t64 amd64 2.4.10-2+b1 [251 kB] Get: 452 http://deb.debian.org/debian unstable/main amd64 libqt6widgets6 amd64 6.7.2+dfsg-6 [2586 kB] Get: 453 http://deb.debian.org/debian unstable/main amd64 libqt6printsupport6 amd64 6.7.2+dfsg-6 [214 kB] Get: 454 http://deb.debian.org/debian unstable/main amd64 libqscintilla2-qt6-15 amd64 2.14.1+dfsg-1+b4 [1174 kB] Get: 455 http://deb.debian.org/debian unstable/main amd64 libqt6core5compat6 amd64 6.7.2-3 [135 kB] Get: 456 http://deb.debian.org/debian unstable/main amd64 libqt6sql6 amd64 6.7.2+dfsg-6 [138 kB] Get: 457 http://deb.debian.org/debian unstable/main amd64 libqt6help6 amd64 6.7.2-6 [180 kB] Get: 458 http://deb.debian.org/debian unstable/main amd64 libduktape207 amd64 2.7.0-2+b2 [135 kB] Get: 459 http://deb.debian.org/debian unstable/main amd64 libproxy1v5 amd64 0.5.9-1 [26.4 kB] Get: 460 http://deb.debian.org/debian unstable/main amd64 libqt6network6 amd64 6.7.2+dfsg-6 [766 kB] Get: 461 http://deb.debian.org/debian unstable/main amd64 libqt6opengl6 amd64 6.7.2+dfsg-6 [405 kB] Get: 462 http://deb.debian.org/debian unstable/main amd64 libqt6openglwidgets6 amd64 6.7.2+dfsg-6 [49.3 kB] Get: 463 http://deb.debian.org/debian unstable/main amd64 libqt6xml6 amd64 6.7.2+dfsg-6 [83.7 kB] Get: 464 http://deb.debian.org/debian unstable/main amd64 libogg0 amd64 1.3.5-3+b2 [23.8 kB] Get: 465 http://deb.debian.org/debian unstable/main amd64 libflac12t64 amd64 1.4.3+ds-4 [201 kB] Get: 466 http://deb.debian.org/debian unstable/main amd64 libmp3lame0 amd64 3.100-6+b3 [363 kB] Get: 467 http://deb.debian.org/debian unstable/main amd64 libmpg123-0t64 amd64 1.32.10-1 [149 kB] Get: 468 http://deb.debian.org/debian unstable/main amd64 libvorbis0a amd64 1.3.7-2+b1 [91.1 kB] Get: 469 http://deb.debian.org/debian unstable/main amd64 libvorbisenc2 amd64 1.3.7-2+b1 [76.1 kB] Get: 470 http://deb.debian.org/debian unstable/main amd64 libsndfile1 amd64 1.2.2-2 [199 kB] Get: 471 http://deb.debian.org/debian unstable/main amd64 libspqr4 amd64 1:7.8.3+dfsg-3 [146 kB] Get: 472 http://deb.debian.org/debian unstable/main amd64 libumfpack6 amd64 1:7.8.3+dfsg-3 [280 kB] Get: 473 http://deb.debian.org/debian unstable/main amd64 libtext-unidecode-perl all 1.30-3 [101 kB] Get: 474 http://deb.debian.org/debian unstable/main amd64 texinfo-lib amd64 7.1.1-1+b1 [232 kB] Get: 475 http://deb.debian.org/debian unstable/main amd64 tex-common all 6.18 [32.5 kB] Get: 476 http://deb.debian.org/debian unstable/main amd64 texinfo all 7.1.1-1 [1753 kB] Get: 477 http://deb.debian.org/debian unstable/main amd64 octave-common all 9.4.0-1 [6593 kB] Get: 478 http://deb.debian.org/debian unstable/main amd64 octave amd64 9.4.0-1 [9740 kB] Get: 479 http://deb.debian.org/debian unstable/main amd64 libncurses6 amd64 6.5+20250216-1 [105 kB] Get: 480 http://deb.debian.org/debian unstable/main amd64 libncurses-dev amd64 6.5+20250216-1 [353 kB] Get: 481 http://deb.debian.org/debian unstable/main amd64 libreadline-dev amd64 8.2-6 [153 kB] Get: 482 http://deb.debian.org/debian unstable/main amd64 libhdf5-fortran-310 amd64 1.14.5+repack-3 [111 kB] Get: 483 http://deb.debian.org/debian unstable/main amd64 libhdf5-hl-310 amd64 1.14.5+repack-3 [69.3 kB] Get: 484 http://deb.debian.org/debian unstable/main amd64 libhdf5-hl-fortran-310 amd64 1.14.5+repack-3 [43.9 kB] Get: 485 http://deb.debian.org/debian unstable/main amd64 libhdf5-cpp-310 amd64 1.14.5+repack-3 [133 kB] Get: 486 http://deb.debian.org/debian unstable/main amd64 libhdf5-hl-cpp-310 amd64 1.14.5+repack-3 [24.4 kB] Get: 487 http://deb.debian.org/debian unstable/main amd64 zlib1g-dev amd64 1:1.3.dfsg+really1.3.1-1+b1 [920 kB] Get: 488 http://deb.debian.org/debian unstable/main amd64 libjpeg62-turbo-dev amd64 1:2.1.5-3+b1 [292 kB] Get: 489 http://deb.debian.org/debian unstable/main amd64 libjpeg-dev amd64 1:2.1.5-3+b1 [72.2 kB] Get: 490 http://deb.debian.org/debian unstable/main amd64 libaec-dev amd64 1.1.3-1+b1 [21.5 kB] Get: 491 http://deb.debian.org/debian unstable/main amd64 libbrotli-dev amd64 1.1.0-2+b6 [316 kB] Get: 492 http://deb.debian.org/debian unstable/main amd64 libidn2-dev amd64 2.3.7-2+b1 [123 kB] Get: 493 http://deb.debian.org/debian unstable/main amd64 libgssrpc4t64 amd64 1.21.3-4 [60.0 kB] Get: 494 http://deb.debian.org/debian unstable/main amd64 libkadm5clnt-mit12 amd64 1.21.3-4 [42.2 kB] Get: 495 http://deb.debian.org/debian unstable/main amd64 libkdb5-10t64 amd64 1.21.3-4 [42.4 kB] Get: 496 http://deb.debian.org/debian unstable/main amd64 libkadm5srv-mit12 amd64 1.21.3-4 [54.2 kB] Get: 497 http://deb.debian.org/debian unstable/main amd64 krb5-multidev amd64 1.21.3-4 [126 kB] Get: 498 http://deb.debian.org/debian unstable/main amd64 libkrb5-dev amd64 1.21.3-4 [15.9 kB] Get: 499 http://deb.debian.org/debian unstable/main amd64 libldap-dev amd64 2.6.9+dfsg-1 [307 kB] Get: 500 http://deb.debian.org/debian unstable/main amd64 libpkgconf3 amd64 1.8.1-4 [36.4 kB] Get: 501 http://deb.debian.org/debian unstable/main amd64 pkgconf-bin amd64 1.8.1-4 [30.2 kB] Get: 502 http://deb.debian.org/debian unstable/main amd64 pkgconf amd64 1.8.1-4 [26.2 kB] Get: 503 http://deb.debian.org/debian unstable/main amd64 libnghttp2-dev amd64 1.64.0-1 [115 kB] Get: 504 http://deb.debian.org/debian unstable/main amd64 libnghttp3-dev amd64 1.6.0-2 [88.5 kB] Get: 505 http://deb.debian.org/debian unstable/main amd64 libpsl-dev amd64 0.21.2-1.1+b1 [77.6 kB] Get: 506 http://deb.debian.org/debian unstable/main amd64 libgmpxx4ldbl amd64 2:6.3.0+dfsg-3 [329 kB] Get: 507 http://deb.debian.org/debian unstable/main amd64 libgmp-dev amd64 2:6.3.0+dfsg-3 [642 kB] Get: 508 http://deb.debian.org/debian unstable/main amd64 libevent-2.1-7t64 amd64 2.1.12-stable-10+b1 [182 kB] Get: 509 http://deb.debian.org/debian unstable/main amd64 libunbound8 amd64 1.22.0-1+b1 [598 kB] Get: 510 http://deb.debian.org/debian unstable/main amd64 libgnutls-dane0t64 amd64 3.8.9-2 [455 kB] Get: 511 http://deb.debian.org/debian unstable/main amd64 libgnutls-openssl27t64 amd64 3.8.9-2 [455 kB] Get: 512 http://deb.debian.org/debian unstable/main amd64 libp11-kit-dev amd64 0.25.5-3 [208 kB] Get: 513 http://deb.debian.org/debian unstable/main amd64 libtasn1-6-dev amd64 4.20.0-2 [99.2 kB] Get: 514 http://deb.debian.org/debian unstable/main amd64 nettle-dev amd64 3.10.1-1 [1318 kB] Get: 515 http://deb.debian.org/debian unstable/main amd64 libgnutls28-dev amd64 3.8.9-2 [1401 kB] Get: 516 http://deb.debian.org/debian unstable/main amd64 librtmp-dev amd64 2.4+20151223.gitfa8646d.1-2+b5 [68.0 kB] Get: 517 http://deb.debian.org/debian unstable/main amd64 libssl-dev amd64 3.4.1-1 [2787 kB] Get: 518 http://deb.debian.org/debian unstable/main amd64 libssh2-1-dev amd64 1.11.1-1 [393 kB] Get: 519 http://deb.debian.org/debian unstable/main amd64 libzstd-dev amd64 1.5.6+dfsg-2 [365 kB] Get: 520 http://deb.debian.org/debian unstable/main amd64 libcurl4-openssl-dev amd64 8.12.1-2 [483 kB] Get: 521 http://deb.debian.org/debian unstable/main amd64 hdf5-helpers amd64 1.14.5+repack-3 [26.6 kB] Get: 522 http://deb.debian.org/debian unstable/main amd64 libhdf5-dev amd64 1.14.5+repack-3 [3165 kB] Get: 523 http://deb.debian.org/debian unstable/main amd64 xorg-sgml-doctools all 1:1.11-1.1 [22.1 kB] Get: 524 http://deb.debian.org/debian unstable/main amd64 x11proto-dev all 2024.1-1 [603 kB] Get: 525 http://deb.debian.org/debian unstable/main amd64 libxau-dev amd64 1:1.0.11-1 [23.6 kB] Get: 526 http://deb.debian.org/debian unstable/main amd64 libxdmcp-dev amd64 1:1.1.5-1 [44.3 kB] Get: 527 http://deb.debian.org/debian unstable/main amd64 xtrans-dev all 1.4.0-1 [98.7 kB] Get: 528 http://deb.debian.org/debian unstable/main amd64 libxcb1-dev amd64 1.17.0-2+b1 [181 kB] Get: 529 http://deb.debian.org/debian unstable/main amd64 libx11-dev amd64 2:1.8.10-2 [891 kB] Get: 530 http://deb.debian.org/debian unstable/main amd64 libglx-dev amd64 1.7.0-1+b2 [15.8 kB] Get: 531 http://deb.debian.org/debian unstable/main amd64 libgl-dev amd64 1.7.0-1+b2 [101 kB] Get: 532 http://deb.debian.org/debian unstable/main amd64 libblas-dev amd64 3.12.1-2 [170 kB] Get: 533 http://deb.debian.org/debian unstable/main amd64 liblapack-dev amd64 3.12.1-2 [4998 kB] Get: 534 http://deb.debian.org/debian unstable/main amd64 libfftw3-long3 amd64 3.3.10-2+b1 [347 kB] Get: 535 http://deb.debian.org/debian unstable/main amd64 libfftw3-quad3 amd64 3.3.10-2+b1 [618 kB] Get: 536 http://deb.debian.org/debian unstable/main amd64 libfftw3-bin amd64 3.3.10-2+b1 [51.3 kB] Get: 537 http://deb.debian.org/debian unstable/main amd64 libfftw3-dev amd64 3.3.10-2+b1 [2118 kB] Get: 538 http://deb.debian.org/debian unstable/main amd64 libgfortran-14-dev amd64 14.2.0-17 [879 kB] Get: 539 http://deb.debian.org/debian unstable/main amd64 gfortran-14-x86-64-linux-gnu amd64 14.2.0-17 [11.7 MB] Get: 540 http://deb.debian.org/debian unstable/main amd64 gfortran-14 amd64 14.2.0-17 [14.0 kB] Get: 541 http://deb.debian.org/debian unstable/main amd64 gfortran-x86-64-linux-gnu amd64 4:14.2.0-1 [1284 B] Get: 542 http://deb.debian.org/debian unstable/main amd64 gfortran amd64 4:14.2.0-1 [1436 B] Get: 543 http://deb.debian.org/debian unstable/main amd64 octave-dev amd64 9.4.0-1 [1007 kB] Get: 544 http://deb.debian.org/debian unstable/main amd64 dh-octave all 1.8.0 [22.7 kB] Get: 545 http://deb.debian.org/debian unstable/main amd64 python3-mpmath all 1.3.0-1 [419 kB] Get: 546 http://deb.debian.org/debian unstable/main amd64 python3-packaging all 24.2-1 [55.3 kB] Get: 547 http://deb.debian.org/debian unstable/main amd64 python3-sympy all 1.13.3-3 [4148 kB] Fetched 219 MB in 54s (4073 kB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal: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 ... 19798 files and directories currently installed.) Preparing to unpack .../libpython3.13-minimal_3.13.2-1_amd64.deb ... Unpacking libpython3.13-minimal:amd64 (3.13.2-1) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.6.4-1_amd64.deb ... Unpacking libexpat1:amd64 (2.6.4-1) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.2-1_amd64.deb ... Unpacking python3.13-minimal (3.13.2-1) ... Setting up libpython3.13-minimal:amd64 (3.13.2-1) ... Setting up libexpat1:amd64 (2.6.4-1) ... Setting up python3.13-minimal (3.13.2-1) ... Selecting previously unselected package python3-minimal. (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 ... 20132 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.1-2_amd64.deb ... Unpacking python3-minimal (3.13.1-2) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_11.0.0_all.deb ... Unpacking media-types (11.0.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2025a-2_all.deb ... Unpacking tzdata (2025a-2) ... Selecting previously unselected package libffi8:amd64. Preparing to unpack .../4-libffi8_3.4.7-1_amd64.deb ... Unpacking libffi8:amd64 (3.4.7-1) ... Selecting previously unselected package readline-common. Preparing to unpack .../5-readline-common_8.2-6_all.deb ... Unpacking readline-common (8.2-6) ... Selecting previously unselected package libreadline8t64:amd64. Preparing to unpack .../6-libreadline8t64_8.2-6_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:amd64 (8.2-6) ... Selecting previously unselected package libpython3.13-stdlib:amd64. Preparing to unpack .../7-libpython3.13-stdlib_3.13.2-1_amd64.deb ... Unpacking libpython3.13-stdlib:amd64 (3.13.2-1) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.2-1_amd64.deb ... Unpacking python3.13 (3.13.2-1) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../9-libpython3-stdlib_3.13.1-2_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.13.1-2) ... Setting up python3-minimal (3.13.1-2) ... Selecting previously unselected package python3. (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 ... 21142 files and directories currently installed.) Preparing to unpack .../000-python3_3.13.1-2_amd64.deb ... Unpacking python3 (3.13.1-2) ... Selecting previously unselected package libproc2-0:amd64. Preparing to unpack .../001-libproc2-0_2%3a4.0.4-7_amd64.deb ... Unpacking libproc2-0:amd64 (2:4.0.4-7) ... Selecting previously unselected package procps. Preparing to unpack .../002-procps_2%3a4.0.4-7_amd64.deb ... Unpacking procps (2:4.0.4-7) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../003-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package openssl. Preparing to unpack .../004-openssl_3.4.1-1_amd64.deb ... Unpacking openssl (3.4.1-1) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../005-ca-certificates_20241223_all.deb ... Unpacking ca-certificates (20241223) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../006-libmagic-mgc_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../007-libmagic1t64_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../008-file_1%3a5.45-3+b1_amd64.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../009-gettext-base_0.23.1-1_amd64.deb ... Unpacking gettext-base (0.23.1-1) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../010-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../011-groff-base_1.23.0-7_amd64.deb ... Unpacking groff-base (1.23.0-7) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../012-bsdextrautils_2.40.4-4_amd64.deb ... Unpacking bsdextrautils (2.40.4-4) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../013-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../014-man-db_2.13.0-1_amd64.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package libtext-charwidth-perl:amd64. Preparing to unpack .../015-libtext-charwidth-perl_0.04-11+b4_amd64.deb ... Unpacking libtext-charwidth-perl:amd64 (0.04-11+b4) ... Selecting previously unselected package libtext-wrapi18n-perl. Preparing to unpack .../016-libtext-wrapi18n-perl_0.06-10_all.deb ... Unpacking libtext-wrapi18n-perl (0.06-10) ... Selecting previously unselected package ucf. Preparing to unpack .../017-ucf_3.0050_all.deb ... Moving old data out of the way Unpacking ucf (3.0050) ... Selecting previously unselected package aglfn. Preparing to unpack .../018-aglfn_1.7+git20191031.4036a9c-2_all.deb ... Unpacking aglfn (1.7+git20191031.4036a9c-2) ... Selecting previously unselected package libglib2.0-0t64:amd64. Preparing to unpack .../019-libglib2.0-0t64_2.83.3-2_amd64.deb ... Unpacking libglib2.0-0t64:amd64 (2.83.3-2) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../020-libicu72_72.1-6_amd64.deb ... Unpacking libicu72:amd64 (72.1-6) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../021-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package shared-mime-info. Preparing to unpack .../022-shared-mime-info_2.4-5+b2_amd64.deb ... Unpacking shared-mime-info (2.4-5+b2) ... Selecting previously unselected package libbrotli1:amd64. Preparing to unpack .../023-libbrotli1_1.1.0-2+b6_amd64.deb ... Unpacking libbrotli1:amd64 (1.1.0-2+b6) ... Selecting previously unselected package libunistring5:amd64. Preparing to unpack .../024-libunistring5_1.3-1_amd64.deb ... Unpacking libunistring5:amd64 (1.3-1) ... Selecting previously unselected package libidn2-0:amd64. Preparing to unpack .../025-libidn2-0_2.3.7-2+b1_amd64.deb ... Unpacking libidn2-0:amd64 (2.3.7-2+b1) ... Selecting previously unselected package libp11-kit0:amd64. Preparing to unpack .../026-libp11-kit0_0.25.5-3_amd64.deb ... Unpacking libp11-kit0:amd64 (0.25.5-3) ... Selecting previously unselected package libtasn1-6:amd64. Preparing to unpack .../027-libtasn1-6_4.20.0-2_amd64.deb ... Unpacking libtasn1-6:amd64 (4.20.0-2) ... Selecting previously unselected package libgnutls30t64:amd64. Preparing to unpack .../028-libgnutls30t64_3.8.9-2_amd64.deb ... Unpacking libgnutls30t64:amd64 (3.8.9-2) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../029-libkrb5support0_1.21.3-4_amd64.deb ... Unpacking libkrb5support0:amd64 (1.21.3-4) ... Selecting previously unselected package libcom-err2:amd64. Preparing to unpack .../030-libcom-err2_1.47.2-1_amd64.deb ... Unpacking libcom-err2:amd64 (1.47.2-1) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../031-libk5crypto3_1.21.3-4_amd64.deb ... Unpacking libk5crypto3:amd64 (1.21.3-4) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../032-libkeyutils1_1.6.3-4_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6.3-4) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../033-libkrb5-3_1.21.3-4_amd64.deb ... Unpacking libkrb5-3:amd64 (1.21.3-4) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../034-libgssapi-krb5-2_1.21.3-4_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.21.3-4) ... Selecting previously unselected package libsasl2-modules-db:amd64. Preparing to unpack .../035-libsasl2-modules-db_2.1.28+dfsg1-8+b1_amd64.deb ... Unpacking libsasl2-modules-db:amd64 (2.1.28+dfsg1-8+b1) ... Selecting previously unselected package libsasl2-2:amd64. Preparing to unpack .../036-libsasl2-2_2.1.28+dfsg1-8+b1_amd64.deb ... Unpacking libsasl2-2:amd64 (2.1.28+dfsg1-8+b1) ... Selecting previously unselected package libldap2:amd64. Preparing to unpack .../037-libldap2_2.6.9+dfsg-1_amd64.deb ... Unpacking libldap2:amd64 (2.6.9+dfsg-1) ... Selecting previously unselected package libnghttp2-14:amd64. Preparing to unpack .../038-libnghttp2-14_1.64.0-1_amd64.deb ... Unpacking libnghttp2-14:amd64 (1.64.0-1) ... Selecting previously unselected package libnghttp3-9:amd64. Preparing to unpack .../039-libnghttp3-9_1.6.0-2_amd64.deb ... Unpacking libnghttp3-9:amd64 (1.6.0-2) ... Selecting previously unselected package libngtcp2-16:amd64. Preparing to unpack .../040-libngtcp2-16_1.9.1-1_amd64.deb ... Unpacking libngtcp2-16:amd64 (1.9.1-1) ... Selecting previously unselected package libngtcp2-crypto-gnutls8:amd64. Preparing to unpack .../041-libngtcp2-crypto-gnutls8_1.9.1-1_amd64.deb ... Unpacking libngtcp2-crypto-gnutls8:amd64 (1.9.1-1) ... Selecting previously unselected package libpsl5t64:amd64. Preparing to unpack .../042-libpsl5t64_0.21.2-1.1+b1_amd64.deb ... Unpacking libpsl5t64:amd64 (0.21.2-1.1+b1) ... Selecting previously unselected package librtmp1:amd64. Preparing to unpack .../043-librtmp1_2.4+20151223.gitfa8646d.1-2+b5_amd64.deb ... Unpacking librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Selecting previously unselected package libssh2-1t64:amd64. Preparing to unpack .../044-libssh2-1t64_1.11.1-1_amd64.deb ... Unpacking libssh2-1t64:amd64 (1.11.1-1) ... Selecting previously unselected package libcurl3t64-gnutls:amd64. Preparing to unpack .../045-libcurl3t64-gnutls_8.12.1-2_amd64.deb ... Unpacking libcurl3t64-gnutls:amd64 (8.12.1-2) ... Selecting previously unselected package libstemmer0d:amd64. Preparing to unpack .../046-libstemmer0d_2.2.0-4+b2_amd64.deb ... Unpacking libstemmer0d:amd64 (2.2.0-4+b2) ... Selecting previously unselected package libxmlb2:amd64. Preparing to unpack .../047-libxmlb2_0.3.21-1_amd64.deb ... Unpacking libxmlb2:amd64 (0.3.21-1) ... Selecting previously unselected package libyaml-0-2:amd64. Preparing to unpack .../048-libyaml-0-2_0.2.5-2_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.2.5-2) ... Selecting previously unselected package libappstream5:amd64. Preparing to unpack .../049-libappstream5_1.0.4-1_amd64.deb ... Unpacking libappstream5:amd64 (1.0.4-1) ... Selecting previously unselected package appstream. Preparing to unpack .../050-appstream_1.0.4-1_amd64.deb ... Unpacking appstream (1.0.4-1) ... Selecting previously unselected package m4. Preparing to unpack .../051-m4_1.4.19-5_amd64.deb ... Unpacking m4 (1.4.19-5) ... Selecting previously unselected package autoconf. Preparing to unpack .../052-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../053-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../054-automake_1%3a1.17-3_all.deb ... Unpacking automake (1:1.17-3) ... Selecting previously unselected package autopoint. Preparing to unpack .../055-autopoint_0.23.1-1_all.deb ... Unpacking autopoint (0.23.1-1) ... Selecting previously unselected package libcapture-tiny-perl. Preparing to unpack .../056-libcapture-tiny-perl_0.50-1_all.deb ... Unpacking libcapture-tiny-perl (0.50-1) ... Selecting previously unselected package libparams-util-perl. Preparing to unpack .../057-libparams-util-perl_1.102-3+b1_amd64.deb ... Unpacking libparams-util-perl (1.102-3+b1) ... Selecting previously unselected package libsub-install-perl. Preparing to unpack .../058-libsub-install-perl_0.929-1_all.deb ... Unpacking libsub-install-perl (0.929-1) ... Selecting previously unselected package libdata-optlist-perl. Preparing to unpack .../059-libdata-optlist-perl_0.114-1_all.deb ... Unpacking libdata-optlist-perl (0.114-1) ... Selecting previously unselected package libb-hooks-op-check-perl:amd64. Preparing to unpack .../060-libb-hooks-op-check-perl_0.22-3+b2_amd64.deb ... Unpacking libb-hooks-op-check-perl:amd64 (0.22-3+b2) ... Selecting previously unselected package libdynaloader-functions-perl. Preparing to unpack .../061-libdynaloader-functions-perl_0.004-1_all.deb ... Unpacking libdynaloader-functions-perl (0.004-1) ... Selecting previously unselected package libdevel-callchecker-perl:amd64. Preparing to unpack .../062-libdevel-callchecker-perl_0.009-1+b1_amd64.deb ... Unpacking libdevel-callchecker-perl:amd64 (0.009-1+b1) ... Selecting previously unselected package libparams-classify-perl:amd64. Preparing to unpack .../063-libparams-classify-perl_0.015-2+b4_amd64.deb ... Unpacking libparams-classify-perl:amd64 (0.015-2+b4) ... Selecting previously unselected package libmodule-runtime-perl. Preparing to unpack .../064-libmodule-runtime-perl_0.016-2_all.deb ... Unpacking libmodule-runtime-perl (0.016-2) ... Selecting previously unselected package libtry-tiny-perl. Preparing to unpack .../065-libtry-tiny-perl_0.32-1_all.deb ... Unpacking libtry-tiny-perl (0.32-1) ... Selecting previously unselected package libmodule-implementation-perl. Preparing to unpack .../066-libmodule-implementation-perl_0.09-2_all.deb ... Unpacking libmodule-implementation-perl (0.09-2) ... Selecting previously unselected package libpackage-stash-perl. Preparing to unpack .../067-libpackage-stash-perl_0.40-1_all.deb ... Unpacking libpackage-stash-perl (0.40-1) ... Selecting previously unselected package libclass-load-perl. Preparing to unpack .../068-libclass-load-perl_0.25-2_all.deb ... Unpacking libclass-load-perl (0.25-2) ... Selecting previously unselected package libio-stringy-perl. Preparing to unpack .../069-libio-stringy-perl_2.113-2_all.deb ... Unpacking libio-stringy-perl (2.113-2) ... Selecting previously unselected package libparams-validate-perl:amd64. Preparing to unpack .../070-libparams-validate-perl_1.31-2+b3_amd64.deb ... Unpacking libparams-validate-perl:amd64 (1.31-2+b3) ... Selecting previously unselected package libsub-exporter-perl. Preparing to unpack .../071-libsub-exporter-perl_0.990-1_all.deb ... Unpacking libsub-exporter-perl (0.990-1) ... Selecting previously unselected package libgetopt-long-descriptive-perl. Preparing to unpack .../072-libgetopt-long-descriptive-perl_0.116-2_all.deb ... Unpacking libgetopt-long-descriptive-perl (0.116-2) ... Selecting previously unselected package libio-tiecombine-perl. Preparing to unpack .../073-libio-tiecombine-perl_1.005-3_all.deb ... Unpacking libio-tiecombine-perl (1.005-3) ... Selecting previously unselected package libmodule-pluggable-perl. Preparing to unpack .../074-libmodule-pluggable-perl_5.2-5_all.deb ... Unpacking libmodule-pluggable-perl (5.2-5) ... Selecting previously unselected package libstring-rewriteprefix-perl. Preparing to unpack .../075-libstring-rewriteprefix-perl_0.009-1_all.deb ... Unpacking libstring-rewriteprefix-perl (0.009-1) ... Selecting previously unselected package libapp-cmd-perl. Preparing to unpack .../076-libapp-cmd-perl_0.337-2_all.deb ... Unpacking libapp-cmd-perl (0.337-2) ... Selecting previously unselected package libboolean-perl. Preparing to unpack .../077-libboolean-perl_0.46-3_all.deb ... Unpacking libboolean-perl (0.46-3) ... Selecting previously unselected package libsub-uplevel-perl. Preparing to unpack .../078-libsub-uplevel-perl_0.2800-3_all.deb ... Unpacking libsub-uplevel-perl (0.2800-3) ... Selecting previously unselected package libtest-exception-perl. Preparing to unpack .../079-libtest-exception-perl_0.43-3_all.deb ... Unpacking libtest-exception-perl (0.43-3) ... Selecting previously unselected package libcarp-assert-more-perl. Preparing to unpack .../080-libcarp-assert-more-perl_2.8.0-1_all.deb ... Unpacking libcarp-assert-more-perl (2.8.0-1) ... Selecting previously unselected package libfile-which-perl. Preparing to unpack .../081-libfile-which-perl_1.27-2_all.deb ... Unpacking libfile-which-perl (1.27-2) ... Selecting previously unselected package libfile-homedir-perl. Preparing to unpack .../082-libfile-homedir-perl_1.006-2_all.deb ... Unpacking libfile-homedir-perl (1.006-2) ... Selecting previously unselected package libclone-choose-perl. Preparing to unpack .../083-libclone-choose-perl_0.010-2_all.deb ... Unpacking libclone-choose-perl (0.010-2) ... Selecting previously unselected package libhash-merge-perl. Preparing to unpack .../084-libhash-merge-perl_0.302-1_all.deb ... Unpacking libhash-merge-perl (0.302-1) ... Selecting previously unselected package libjson-perl. Preparing to unpack .../085-libjson-perl_4.10000-1_all.deb ... Unpacking libjson-perl (4.10000-1) ... Selecting previously unselected package libexporter-tiny-perl. Preparing to unpack .../086-libexporter-tiny-perl_1.006002-1_all.deb ... Unpacking libexporter-tiny-perl (1.006002-1) ... Selecting previously unselected package liblist-moreutils-xs-perl. Preparing to unpack .../087-liblist-moreutils-xs-perl_0.430-4+b2_amd64.deb ... Unpacking liblist-moreutils-xs-perl (0.430-4+b2) ... Selecting previously unselected package liblist-moreutils-perl. Preparing to unpack .../088-liblist-moreutils-perl_0.430-2_all.deb ... Unpacking liblist-moreutils-perl (0.430-2) ... Selecting previously unselected package liblog-log4perl-perl. Preparing to unpack .../089-liblog-log4perl-perl_1.57-1_all.deb ... Unpacking liblog-log4perl-perl (1.57-1) ... Selecting previously unselected package libmouse-perl:amd64. Preparing to unpack .../090-libmouse-perl_2.5.11-1+b1_amd64.deb ... Unpacking libmouse-perl:amd64 (2.5.11-1+b1) ... Selecting previously unselected package libmousex-nativetraits-perl. Preparing to unpack .../091-libmousex-nativetraits-perl_1.09-3_all.deb ... Unpacking libmousex-nativetraits-perl (1.09-3) ... Selecting previously unselected package libmousex-strictconstructor-perl. Preparing to unpack .../092-libmousex-strictconstructor-perl_0.02-3_all.deb ... Unpacking libmousex-strictconstructor-perl (0.02-3) ... Selecting previously unselected package libparse-recdescent-perl. Preparing to unpack .../093-libparse-recdescent-perl_1.967015+dfsg-4_all.deb ... Unpacking libparse-recdescent-perl (1.967015+dfsg-4) ... Selecting previously unselected package libpath-tiny-perl. Preparing to unpack .../094-libpath-tiny-perl_0.146-1_all.deb ... Unpacking libpath-tiny-perl (0.146-1) ... Selecting previously unselected package libpod-pom-perl. Preparing to unpack .../095-libpod-pom-perl_2.01-4_all.deb ... Unpacking libpod-pom-perl (2.01-4) ... Selecting previously unselected package libregexp-common-perl. Preparing to unpack .../096-libregexp-common-perl_2024080801-1_all.deb ... Unpacking libregexp-common-perl (2024080801-1) ... Selecting previously unselected package libyaml-tiny-perl. Preparing to unpack .../097-libyaml-tiny-perl_1.76-1_all.deb ... Unpacking libyaml-tiny-perl (1.76-1) ... Selecting previously unselected package libconfig-model-perl. Preparing to unpack .../098-libconfig-model-perl_2.155-1_all.deb ... Unpacking libconfig-model-perl (2.155-1) ... Selecting previously unselected package libyaml-pp-perl. Preparing to unpack .../099-libyaml-pp-perl_0.39.0-1_all.deb ... Unpacking libyaml-pp-perl (0.39.0-1) ... Selecting previously unselected package cme. Preparing to unpack .../100-cme_1.041-1_all.deb ... Unpacking cme (1.041-1) ... Selecting previously unselected package comerr-dev:amd64. Preparing to unpack .../101-comerr-dev_2.1-1.47.2-1_amd64.deb ... Unpacking comerr-dev:amd64 (2.1-1.47.2-1) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../102-libdebhelper-perl_13.24.1_all.deb ... Unpacking libdebhelper-perl (13.24.1) ... Selecting previously unselected package libtool. Preparing to unpack .../103-libtool_2.5.4-3_all.deb ... Unpacking libtool (2.5.4-3) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../104-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../105-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../106-libfile-stripnondeterminism-perl_1.14.1-2_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.1-2) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../107-dh-strip-nondeterminism_1.14.1-2_all.deb ... Unpacking dh-strip-nondeterminism (1.14.1-2) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../108-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../109-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../110-gettext_0.23.1-1_amd64.deb ... Unpacking gettext (0.23.1-1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../111-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../112-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../113-debhelper_13.24.1_all.deb ... Unpacking debhelper (13.24.1) ... Selecting previously unselected package gnuplot-data. Preparing to unpack .../114-gnuplot-data_6.0.2+dfsg1-1_all.deb ... Unpacking gnuplot-data (6.0.2+dfsg1-1) ... Selecting previously unselected package libpng16-16t64:amd64. Preparing to unpack .../115-libpng16-16t64_1.6.46-4_amd64.deb ... Unpacking libpng16-16t64:amd64 (1.6.46-4) ... Selecting previously unselected package libfreetype6:amd64. Preparing to unpack .../116-libfreetype6_2.13.3+dfsg-1_amd64.deb ... Unpacking libfreetype6:amd64 (2.13.3+dfsg-1) ... Selecting previously unselected package fonts-dejavu-mono. Preparing to unpack .../117-fonts-dejavu-mono_2.37-8_all.deb ... Unpacking fonts-dejavu-mono (2.37-8) ... Selecting previously unselected package fonts-dejavu-core. Preparing to unpack .../118-fonts-dejavu-core_2.37-8_all.deb ... Unpacking fonts-dejavu-core (2.37-8) ... Selecting previously unselected package fonts-freefont-otf. Preparing to unpack .../119-fonts-freefont-otf_20211204+svn4273-2_all.deb ... Unpacking fonts-freefont-otf (20211204+svn4273-2) ... Selecting previously unselected package fontconfig-config. Preparing to unpack .../120-fontconfig-config_2.15.0-2_amd64.deb ... Unpacking fontconfig-config (2.15.0-2) ... Selecting previously unselected package libfontconfig1:amd64. Preparing to unpack .../121-libfontconfig1_2.15.0-2_amd64.deb ... Unpacking libfontconfig1:amd64 (2.15.0-2) ... Selecting previously unselected package libpixman-1-0:amd64. Preparing to unpack .../122-libpixman-1-0_0.44.0-3_amd64.deb ... Unpacking libpixman-1-0:amd64 (0.44.0-3) ... Selecting previously unselected package libxau6:amd64. Preparing to unpack .../123-libxau6_1%3a1.0.11-1_amd64.deb ... Unpacking libxau6:amd64 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp6:amd64. Preparing to unpack .../124-libxdmcp6_1%3a1.1.5-1_amd64.deb ... Unpacking libxdmcp6:amd64 (1:1.1.5-1) ... Selecting previously unselected package libxcb1:amd64. Preparing to unpack .../125-libxcb1_1.17.0-2+b1_amd64.deb ... Unpacking libxcb1:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libx11-data. Preparing to unpack .../126-libx11-data_2%3a1.8.10-2_all.deb ... Unpacking libx11-data (2:1.8.10-2) ... Selecting previously unselected package libx11-6:amd64. Preparing to unpack .../127-libx11-6_2%3a1.8.10-2_amd64.deb ... Unpacking libx11-6:amd64 (2:1.8.10-2) ... Selecting previously unselected package libxcb-render0:amd64. Preparing to unpack .../128-libxcb-render0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-render0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-shm0:amd64. Preparing to unpack .../129-libxcb-shm0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-shm0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxext6:amd64. Preparing to unpack .../130-libxext6_2%3a1.3.4-1+b3_amd64.deb ... Unpacking libxext6:amd64 (2:1.3.4-1+b3) ... Selecting previously unselected package libxrender1:amd64. Preparing to unpack .../131-libxrender1_1%3a0.9.10-1.1+b4_amd64.deb ... Unpacking libxrender1:amd64 (1:0.9.10-1.1+b4) ... Selecting previously unselected package libcairo2:amd64. Preparing to unpack .../132-libcairo2_1.18.2-2_amd64.deb ... Unpacking libcairo2:amd64 (1.18.2-2) ... Selecting previously unselected package libedit2:amd64. Preparing to unpack .../133-libedit2_3.1-20250104-1_amd64.deb ... Unpacking libedit2:amd64 (3.1-20250104-1) ... Selecting previously unselected package libaom3:amd64. Preparing to unpack .../134-libaom3_3.12.0-1_amd64.deb ... Unpacking libaom3:amd64 (3.12.0-1) ... Selecting previously unselected package libdav1d7:amd64. Preparing to unpack .../135-libdav1d7_1.5.1-1_amd64.deb ... Unpacking libdav1d7:amd64 (1.5.1-1) ... Selecting previously unselected package libabsl20230802:amd64. Preparing to unpack .../136-libabsl20230802_20230802.1-4_amd64.deb ... Unpacking libabsl20230802:amd64 (20230802.1-4) ... Selecting previously unselected package libgav1-1:amd64. Preparing to unpack .../137-libgav1-1_0.19.0-3_amd64.deb ... Unpacking libgav1-1:amd64 (0.19.0-3) ... Selecting previously unselected package librav1e0.7:amd64. Preparing to unpack .../138-librav1e0.7_0.7.1-9+b1_amd64.deb ... Unpacking librav1e0.7:amd64 (0.7.1-9+b1) ... Selecting previously unselected package libsvtav1enc2:amd64. Preparing to unpack .../139-libsvtav1enc2_2.3.0+dfsg-1_amd64.deb ... Unpacking libsvtav1enc2:amd64 (2.3.0+dfsg-1) ... Selecting previously unselected package libjpeg62-turbo:amd64. Preparing to unpack .../140-libjpeg62-turbo_1%3a2.1.5-3+b1_amd64.deb ... Unpacking libjpeg62-turbo:amd64 (1:2.1.5-3+b1) ... Selecting previously unselected package libyuv0:amd64. Preparing to unpack .../141-libyuv0_0.0.1904.20250204-1_amd64.deb ... Unpacking libyuv0:amd64 (0.0.1904.20250204-1) ... Selecting previously unselected package libavif16:amd64. Preparing to unpack .../142-libavif16_1.1.1-1_amd64.deb ... Unpacking libavif16:amd64 (1.1.1-1) ... Selecting previously unselected package libsharpyuv0:amd64. Preparing to unpack .../143-libsharpyuv0_1.5.0-0.1_amd64.deb ... Unpacking libsharpyuv0:amd64 (1.5.0-0.1) ... Selecting previously unselected package libheif-plugin-dav1d:amd64. Preparing to unpack .../144-libheif-plugin-dav1d_1.19.5-1+b1_amd64.deb ... Unpacking libheif-plugin-dav1d:amd64 (1.19.5-1+b1) ... Selecting previously unselected package libde265-0:amd64. Preparing to unpack .../145-libde265-0_1.0.15-1+b2_amd64.deb ... Unpacking libde265-0:amd64 (1.0.15-1+b2) ... Selecting previously unselected package libheif-plugin-libde265:amd64. Preparing to unpack .../146-libheif-plugin-libde265_1.19.5-1+b1_amd64.deb ... Unpacking libheif-plugin-libde265:amd64 (1.19.5-1+b1) ... Selecting previously unselected package libheif1:amd64. Preparing to unpack .../147-libheif1_1.19.5-1+b1_amd64.deb ... Unpacking libheif1:amd64 (1.19.5-1+b1) ... Selecting previously unselected package libimagequant0:amd64. Preparing to unpack .../148-libimagequant0_2.18.0-1+b2_amd64.deb ... Unpacking libimagequant0:amd64 (2.18.0-1+b2) ... Selecting previously unselected package libfribidi0:amd64. Preparing to unpack .../149-libfribidi0_1.0.16-1_amd64.deb ... Unpacking libfribidi0:amd64 (1.0.16-1) ... Selecting previously unselected package libgraphite2-3:amd64. Preparing to unpack .../150-libgraphite2-3_1.3.14-2+b1_amd64.deb ... Unpacking libgraphite2-3:amd64 (1.3.14-2+b1) ... Selecting previously unselected package libharfbuzz0b:amd64. Preparing to unpack .../151-libharfbuzz0b_10.2.0-1_amd64.deb ... Unpacking libharfbuzz0b:amd64 (10.2.0-1) ... Selecting previously unselected package libraqm0:amd64. Preparing to unpack .../152-libraqm0_0.10.2-1_amd64.deb ... Unpacking libraqm0:amd64 (0.10.2-1) ... Selecting previously unselected package libdeflate0:amd64. Preparing to unpack .../153-libdeflate0_1.23-1+b1_amd64.deb ... Unpacking libdeflate0:amd64 (1.23-1+b1) ... Selecting previously unselected package libjbig0:amd64. Preparing to unpack .../154-libjbig0_2.1-6.1+b2_amd64.deb ... Unpacking libjbig0:amd64 (2.1-6.1+b2) ... Selecting previously unselected package liblerc4:amd64. Preparing to unpack .../155-liblerc4_4.0.0+ds-5_amd64.deb ... Unpacking liblerc4:amd64 (4.0.0+ds-5) ... Selecting previously unselected package libwebp7:amd64. Preparing to unpack .../156-libwebp7_1.5.0-0.1_amd64.deb ... Unpacking libwebp7:amd64 (1.5.0-0.1) ... Selecting previously unselected package libtiff6:amd64. Preparing to unpack .../157-libtiff6_4.5.1+git230720-5_amd64.deb ... Unpacking libtiff6:amd64 (4.5.1+git230720-5) ... Selecting previously unselected package libxpm4:amd64. Preparing to unpack .../158-libxpm4_1%3a3.5.17-1+b3_amd64.deb ... Unpacking libxpm4:amd64 (1:3.5.17-1+b3) ... Selecting previously unselected package libgd3:amd64. Preparing to unpack .../159-libgd3_2.3.3-12+b1_amd64.deb ... Unpacking libgd3:amd64 (2.3.3-12+b1) ... Selecting previously unselected package liblua5.4-0:amd64. Preparing to unpack .../160-liblua5.4-0_5.4.7-1+b2_amd64.deb ... Unpacking liblua5.4-0:amd64 (5.4.7-1+b2) ... Selecting previously unselected package fontconfig. Preparing to unpack .../161-fontconfig_2.15.0-2_amd64.deb ... Unpacking fontconfig (2.15.0-2) ... Selecting previously unselected package libthai-data. Preparing to unpack .../162-libthai-data_0.1.29-2_all.deb ... Unpacking libthai-data (0.1.29-2) ... Selecting previously unselected package libdatrie1:amd64. Preparing to unpack .../163-libdatrie1_0.2.13-3+b1_amd64.deb ... Unpacking libdatrie1:amd64 (0.2.13-3+b1) ... Selecting previously unselected package libthai0:amd64. Preparing to unpack .../164-libthai0_0.1.29-2+b1_amd64.deb ... Unpacking libthai0:amd64 (0.1.29-2+b1) ... Selecting previously unselected package libpango-1.0-0:amd64. Preparing to unpack .../165-libpango-1.0-0_1.56.1-1_amd64.deb ... Unpacking libpango-1.0-0:amd64 (1.56.1-1) ... Selecting previously unselected package libpangoft2-1.0-0:amd64. Preparing to unpack .../166-libpangoft2-1.0-0_1.56.1-1_amd64.deb ... Unpacking libpangoft2-1.0-0:amd64 (1.56.1-1) ... Selecting previously unselected package libpangocairo-1.0-0:amd64. Preparing to unpack .../167-libpangocairo-1.0-0_1.56.1-1_amd64.deb ... Unpacking libpangocairo-1.0-0:amd64 (1.56.1-1) ... Selecting previously unselected package libwebpmux3:amd64. Preparing to unpack .../168-libwebpmux3_1.5.0-0.1_amd64.deb ... Unpacking libwebpmux3:amd64 (1.5.0-0.1) ... Selecting previously unselected package gnuplot-nox. Preparing to unpack .../169-gnuplot-nox_6.0.2+dfsg1-1_amd64.deb ... Unpacking gnuplot-nox (6.0.2+dfsg1-1) ... Selecting previously unselected package dh-octave-autopkgtest. Preparing to unpack .../170-dh-octave-autopkgtest_1.8.0_all.deb ... Unpacking dh-octave-autopkgtest (1.8.0) ... Selecting previously unselected package libapt-pkg-perl. Preparing to unpack .../171-libapt-pkg-perl_0.1.41_amd64.deb ... Unpacking libapt-pkg-perl (0.1.41) ... Selecting previously unselected package libarray-intspan-perl. Preparing to unpack .../172-libarray-intspan-perl_2.004-2_all.deb ... Unpacking libarray-intspan-perl (2.004-2) ... Selecting previously unselected package libyaml-libyaml-perl. Preparing to unpack .../173-libyaml-libyaml-perl_0.903.0+ds-1_amd64.deb ... Unpacking libyaml-libyaml-perl (0.903.0+ds-1) ... Selecting previously unselected package libconfig-model-backend-yaml-perl. Preparing to unpack .../174-libconfig-model-backend-yaml-perl_2.134-2_all.deb ... Unpacking libconfig-model-backend-yaml-perl (2.134-2) ... Selecting previously unselected package libexporter-lite-perl. Preparing to unpack .../175-libexporter-lite-perl_0.09-2_all.deb ... Unpacking libexporter-lite-perl (0.09-2) ... Selecting previously unselected package libencode-locale-perl. Preparing to unpack .../176-libencode-locale-perl_1.05-3_all.deb ... Unpacking libencode-locale-perl (1.05-3) ... Selecting previously unselected package libtimedate-perl. Preparing to unpack .../177-libtimedate-perl_2.3300-2_all.deb ... Unpacking libtimedate-perl (2.3300-2) ... Selecting previously unselected package libhttp-date-perl. Preparing to unpack .../178-libhttp-date-perl_6.06-1_all.deb ... Unpacking libhttp-date-perl (6.06-1) ... Selecting previously unselected package libfile-listing-perl. Preparing to unpack .../179-libfile-listing-perl_6.16-1_all.deb ... Unpacking libfile-listing-perl (6.16-1) ... Selecting previously unselected package libhtml-tagset-perl. Preparing to unpack .../180-libhtml-tagset-perl_3.24-1_all.deb ... Unpacking libhtml-tagset-perl (3.24-1) ... Selecting previously unselected package liburi-perl. Preparing to unpack .../181-liburi-perl_5.30-1_all.deb ... Unpacking liburi-perl (5.30-1) ... Selecting previously unselected package libhtml-parser-perl:amd64. Preparing to unpack .../182-libhtml-parser-perl_3.83-1+b2_amd64.deb ... Unpacking libhtml-parser-perl:amd64 (3.83-1+b2) ... Selecting previously unselected package libhtml-tree-perl. Preparing to unpack .../183-libhtml-tree-perl_5.07-3_all.deb ... Unpacking libhtml-tree-perl (5.07-3) ... Selecting previously unselected package libclone-perl:amd64. Preparing to unpack .../184-libclone-perl_0.47-1+b1_amd64.deb ... Unpacking libclone-perl:amd64 (0.47-1+b1) ... Selecting previously unselected package libio-html-perl. Preparing to unpack .../185-libio-html-perl_1.004-3_all.deb ... Unpacking libio-html-perl (1.004-3) ... Selecting previously unselected package liblwp-mediatypes-perl. Preparing to unpack .../186-liblwp-mediatypes-perl_6.04-2_all.deb ... Unpacking liblwp-mediatypes-perl (6.04-2) ... Selecting previously unselected package libhttp-message-perl. Preparing to unpack .../187-libhttp-message-perl_7.00-2_all.deb ... Unpacking libhttp-message-perl (7.00-2) ... Selecting previously unselected package libhttp-cookies-perl. Preparing to unpack .../188-libhttp-cookies-perl_6.11-1_all.deb ... Unpacking libhttp-cookies-perl (6.11-1) ... Selecting previously unselected package libhttp-negotiate-perl. Preparing to unpack .../189-libhttp-negotiate-perl_6.01-2_all.deb ... Unpacking libhttp-negotiate-perl (6.01-2) ... Selecting previously unselected package perl-openssl-defaults:amd64. Preparing to unpack .../190-perl-openssl-defaults_7+b2_amd64.deb ... Unpacking perl-openssl-defaults:amd64 (7+b2) ... Selecting previously unselected package libnet-ssleay-perl:amd64. Preparing to unpack .../191-libnet-ssleay-perl_1.94-3_amd64.deb ... Unpacking libnet-ssleay-perl:amd64 (1.94-3) ... Selecting previously unselected package libio-socket-ssl-perl. Preparing to unpack .../192-libio-socket-ssl-perl_2.089-1_all.deb ... Unpacking libio-socket-ssl-perl (2.089-1) ... Selecting previously unselected package libnet-http-perl. Preparing to unpack .../193-libnet-http-perl_6.23-1_all.deb ... Unpacking libnet-http-perl (6.23-1) ... Selecting previously unselected package liblwp-protocol-https-perl. Preparing to unpack .../194-liblwp-protocol-https-perl_6.14-1_all.deb ... Unpacking liblwp-protocol-https-perl (6.14-1) ... Selecting previously unselected package libwww-robotrules-perl. Preparing to unpack .../195-libwww-robotrules-perl_6.02-1_all.deb ... Unpacking libwww-robotrules-perl (6.02-1) ... Selecting previously unselected package libwww-perl. Preparing to unpack .../196-libwww-perl_6.77-1_all.deb ... Unpacking libwww-perl (6.77-1) ... Selecting previously unselected package liberror-perl. Preparing to unpack .../197-liberror-perl_0.17029-2_all.deb ... Unpacking liberror-perl (0.17029-2) ... Selecting previously unselected package libparse-debcontrol-perl. Preparing to unpack .../198-libparse-debcontrol-perl_2.005-6_all.deb ... Unpacking libparse-debcontrol-perl (2.005-6) ... Selecting previously unselected package libsoftware-copyright-perl. Preparing to unpack .../199-libsoftware-copyright-perl_0.012-2_all.deb ... Unpacking libsoftware-copyright-perl (0.012-2) ... Selecting previously unselected package libalgorithm-c3-perl. Preparing to unpack .../200-libalgorithm-c3-perl_0.11-2_all.deb ... Unpacking libalgorithm-c3-perl (0.11-2) ... Selecting previously unselected package libclass-c3-perl. Preparing to unpack .../201-libclass-c3-perl_0.35-2_all.deb ... Unpacking libclass-c3-perl (0.35-2) ... Selecting previously unselected package libmro-compat-perl. Preparing to unpack .../202-libmro-compat-perl_0.15-2_all.deb ... Unpacking libmro-compat-perl (0.15-2) ... Selecting previously unselected package libdata-section-perl. Preparing to unpack .../203-libdata-section-perl_0.200008-1_all.deb ... Unpacking libdata-section-perl (0.200008-1) ... Selecting previously unselected package libtext-template-perl. Preparing to unpack .../204-libtext-template-perl_1.61-1_all.deb ... Unpacking libtext-template-perl (1.61-1) ... Selecting previously unselected package libsoftware-license-perl. Preparing to unpack .../205-libsoftware-license-perl_0.104006-1_all.deb ... Unpacking libsoftware-license-perl (0.104006-1) ... Selecting previously unselected package libsoftware-licensemoreutils-perl. Preparing to unpack .../206-libsoftware-licensemoreutils-perl_1.009-1_all.deb ... Unpacking libsoftware-licensemoreutils-perl (1.009-1) ... Selecting previously unselected package libsort-versions-perl. Preparing to unpack .../207-libsort-versions-perl_1.62-3_all.deb ... Unpacking libsort-versions-perl (1.62-3) ... Selecting previously unselected package libtext-reform-perl. Preparing to unpack .../208-libtext-reform-perl_1.20-5_all.deb ... Unpacking libtext-reform-perl (1.20-5) ... Selecting previously unselected package libtext-autoformat-perl. Preparing to unpack .../209-libtext-autoformat-perl_1.750000-2_all.deb ... Unpacking libtext-autoformat-perl (1.750000-2) ... Selecting previously unselected package libtext-levenshtein-damerau-perl. Preparing to unpack .../210-libtext-levenshtein-damerau-perl_0.41-3_all.deb ... Unpacking libtext-levenshtein-damerau-perl (0.41-3) ... Selecting previously unselected package libtoml-tiny-perl. Preparing to unpack .../211-libtoml-tiny-perl_0.19-1_all.deb ... Unpacking libtoml-tiny-perl (0.19-1) ... Selecting previously unselected package libclass-inspector-perl. Preparing to unpack .../212-libclass-inspector-perl_1.36-3_all.deb ... Unpacking libclass-inspector-perl (1.36-3) ... Selecting previously unselected package libfile-sharedir-perl. Preparing to unpack .../213-libfile-sharedir-perl_1.118-3_all.deb ... Unpacking libfile-sharedir-perl (1.118-3) ... Selecting previously unselected package libindirect-perl. Preparing to unpack .../214-libindirect-perl_0.39-2+b4_amd64.deb ... Unpacking libindirect-perl (0.39-2+b4) ... Selecting previously unselected package libxs-parse-keyword-perl. Preparing to unpack .../215-libxs-parse-keyword-perl_0.48-2_amd64.deb ... Unpacking libxs-parse-keyword-perl (0.48-2) ... Selecting previously unselected package libxs-parse-sublike-perl:amd64. Preparing to unpack .../216-libxs-parse-sublike-perl_0.37-1_amd64.deb ... Unpacking libxs-parse-sublike-perl:amd64 (0.37-1) ... Selecting previously unselected package libobject-pad-perl. Preparing to unpack .../217-libobject-pad-perl_0.819-1_amd64.deb ... Unpacking libobject-pad-perl (0.819-1) ... Selecting previously unselected package libfeature-compat-class-perl. Preparing to unpack .../218-libfeature-compat-class-perl_0.07-1_all.deb ... Unpacking libfeature-compat-class-perl (0.07-1) ... Selecting previously unselected package libsyntax-keyword-try-perl. Preparing to unpack .../219-libsyntax-keyword-try-perl_0.30-1+b1_amd64.deb ... Unpacking libsyntax-keyword-try-perl (0.30-1+b1) ... Selecting previously unselected package libfeature-compat-try-perl. Preparing to unpack .../220-libfeature-compat-try-perl_0.05-1_all.deb ... Unpacking libfeature-compat-try-perl (0.05-1) ... Selecting previously unselected package libio-interactive-perl. Preparing to unpack .../221-libio-interactive-perl_1.026-1_all.deb ... Unpacking libio-interactive-perl (1.026-1) ... Selecting previously unselected package liblog-any-perl. Preparing to unpack .../222-liblog-any-perl_1.717-1_all.deb ... Unpacking liblog-any-perl (1.717-1) ... Selecting previously unselected package liblog-any-adapter-screen-perl. Preparing to unpack .../223-liblog-any-adapter-screen-perl_0.141-1_all.deb ... Unpacking liblog-any-adapter-screen-perl (0.141-1) ... Selecting previously unselected package libsub-exporter-progressive-perl. Preparing to unpack .../224-libsub-exporter-progressive-perl_0.001013-3_all.deb ... Unpacking libsub-exporter-progressive-perl (0.001013-3) ... Selecting previously unselected package libvariable-magic-perl. Preparing to unpack .../225-libvariable-magic-perl_0.64-1+b1_amd64.deb ... Unpacking libvariable-magic-perl (0.64-1+b1) ... Selecting previously unselected package libb-hooks-endofscope-perl. Preparing to unpack .../226-libb-hooks-endofscope-perl_0.28-1_all.deb ... Unpacking libb-hooks-endofscope-perl (0.28-1) ... Selecting previously unselected package libsub-identify-perl. Preparing to unpack .../227-libsub-identify-perl_0.14-3+b3_amd64.deb ... Unpacking libsub-identify-perl (0.14-3+b3) ... Selecting previously unselected package libsub-name-perl:amd64. Preparing to unpack .../228-libsub-name-perl_0.28-1_amd64.deb ... Unpacking libsub-name-perl:amd64 (0.28-1) ... Selecting previously unselected package libnamespace-clean-perl. Preparing to unpack .../229-libnamespace-clean-perl_0.27-2_all.deb ... Unpacking libnamespace-clean-perl (0.27-2) ... Selecting previously unselected package libnumber-compare-perl. Preparing to unpack .../230-libnumber-compare-perl_0.03-3_all.deb ... Unpacking libnumber-compare-perl (0.03-3) ... Selecting previously unselected package libtext-glob-perl. Preparing to unpack .../231-libtext-glob-perl_0.11-3_all.deb ... Unpacking libtext-glob-perl (0.11-3) ... Selecting previously unselected package libpath-iterator-rule-perl. Preparing to unpack .../232-libpath-iterator-rule-perl_1.015-2_all.deb ... Unpacking libpath-iterator-rule-perl (1.015-2) ... Selecting previously unselected package libpod-parser-perl. Preparing to unpack .../233-libpod-parser-perl_1.67-1_all.deb ... Adding 'diversion of /usr/bin/podselect to /usr/bin/podselect.bundled by libpod-parser-perl' Adding 'diversion of /usr/share/man/man1/podselect.1.gz to /usr/share/man/man1/podselect.bundled.1.gz by libpod-parser-perl' Unpacking libpod-parser-perl (1.67-1) ... Selecting previously unselected package libpod-constants-perl. Preparing to unpack .../234-libpod-constants-perl_0.19-2_all.deb ... Unpacking libpod-constants-perl (0.19-2) ... Selecting previously unselected package libset-intspan-perl. Preparing to unpack .../235-libset-intspan-perl_1.19-3_all.deb ... Unpacking libset-intspan-perl (1.19-3) ... Selecting previously unselected package libstring-copyright-perl. Preparing to unpack .../236-libstring-copyright-perl_0.003014-1_all.deb ... Unpacking libstring-copyright-perl (0.003014-1) ... Selecting previously unselected package libstring-escape-perl. Preparing to unpack .../237-libstring-escape-perl_2010.002-3_all.deb ... Unpacking libstring-escape-perl (2010.002-3) ... Selecting previously unselected package libregexp-pattern-license-perl. Preparing to unpack .../238-libregexp-pattern-license-perl_3.11.2-1_all.deb ... Unpacking libregexp-pattern-license-perl (3.11.2-1) ... Selecting previously unselected package libregexp-pattern-perl. Preparing to unpack .../239-libregexp-pattern-perl_0.2.14-2_all.deb ... Unpacking libregexp-pattern-perl (0.2.14-2) ... Selecting previously unselected package libstring-license-perl. Preparing to unpack .../240-libstring-license-perl_0.0.11-1_all.deb ... Unpacking libstring-license-perl (0.0.11-1) ... Selecting previously unselected package licensecheck. Preparing to unpack .../241-licensecheck_3.3.9-1_all.deb ... Unpacking licensecheck (3.3.9-1) ... Selecting previously unselected package diffstat. Preparing to unpack .../242-diffstat_1.67-1_amd64.deb ... Unpacking diffstat (1.67-1) ... Selecting previously unselected package libgpg-error0:amd64. Preparing to unpack .../243-libgpg-error0_1.51-3_amd64.deb ... Unpacking libgpg-error0:amd64 (1.51-3) ... Selecting previously unselected package libassuan9:amd64. Preparing to unpack .../244-libassuan9_3.0.1-2_amd64.deb ... Unpacking libassuan9:amd64 (3.0.1-2) ... Selecting previously unselected package libgcrypt20:amd64. Preparing to unpack .../245-libgcrypt20_1.11.0-7_amd64.deb ... Unpacking libgcrypt20:amd64 (1.11.0-7) ... Selecting previously unselected package gpgconf. Preparing to unpack .../246-gpgconf_2.2.46-1+b1_amd64.deb ... Unpacking gpgconf (2.2.46-1+b1) ... Selecting previously unselected package gpg. Preparing to unpack .../247-gpg_2.2.46-1+b1_amd64.deb ... Unpacking gpg (2.2.46-1+b1) ... Selecting previously unselected package iso-codes. Preparing to unpack .../248-iso-codes_4.17.0-1_all.deb ... Unpacking iso-codes (4.17.0-1) ... Selecting previously unselected package libberkeleydb-perl:amd64. Preparing to unpack .../249-libberkeleydb-perl_0.66-1_amd64.deb ... Unpacking libberkeleydb-perl:amd64 (0.66-1) ... Selecting previously unselected package libclass-xsaccessor-perl. Preparing to unpack .../250-libclass-xsaccessor-perl_1.19-4+b5_amd64.deb ... Unpacking libclass-xsaccessor-perl (1.19-4+b5) ... Selecting previously unselected package libconfig-tiny-perl. Preparing to unpack .../251-libconfig-tiny-perl_2.30-1_all.deb ... Unpacking libconfig-tiny-perl (2.30-1) ... Selecting previously unselected package libconst-fast-perl. Preparing to unpack .../252-libconst-fast-perl_0.014-2_all.deb ... Unpacking libconst-fast-perl (0.014-2) ... Selecting previously unselected package libcpanel-json-xs-perl:amd64. Preparing to unpack .../253-libcpanel-json-xs-perl_4.39-1_amd64.deb ... Unpacking libcpanel-json-xs-perl:amd64 (4.39-1) ... Selecting previously unselected package libaliased-perl. Preparing to unpack .../254-libaliased-perl_0.34-3_all.deb ... Unpacking libaliased-perl (0.34-3) ... Selecting previously unselected package libclass-data-inheritable-perl. Preparing to unpack .../255-libclass-data-inheritable-perl_0.10-1_all.deb ... Unpacking libclass-data-inheritable-perl (0.10-1) ... Selecting previously unselected package libdevel-stacktrace-perl. Preparing to unpack .../256-libdevel-stacktrace-perl_2.0500-1_all.deb ... Unpacking libdevel-stacktrace-perl (2.0500-1) ... Selecting previously unselected package libexception-class-perl. Preparing to unpack .../257-libexception-class-perl_1.45-1_all.deb ... Unpacking libexception-class-perl (1.45-1) ... Selecting previously unselected package libiterator-perl. Preparing to unpack .../258-libiterator-perl_0.03+ds1-2_all.deb ... Unpacking libiterator-perl (0.03+ds1-2) ... Selecting previously unselected package libiterator-util-perl. Preparing to unpack .../259-libiterator-util-perl_0.02+ds1-2_all.deb ... Unpacking libiterator-util-perl (0.02+ds1-2) ... Selecting previously unselected package libdata-dpath-perl. Preparing to unpack .../260-libdata-dpath-perl_0.60-1_all.deb ... Unpacking libdata-dpath-perl (0.60-1) ... Selecting previously unselected package libnet-domain-tld-perl. Preparing to unpack .../261-libnet-domain-tld-perl_1.75-4_all.deb ... Unpacking libnet-domain-tld-perl (1.75-4) ... Selecting previously unselected package libdata-validate-domain-perl. Preparing to unpack .../262-libdata-validate-domain-perl_0.15-1_all.deb ... Unpacking libdata-validate-domain-perl (0.15-1) ... Selecting previously unselected package libnet-ipv6addr-perl. Preparing to unpack .../263-libnet-ipv6addr-perl_1.02-1_all.deb ... Unpacking libnet-ipv6addr-perl (1.02-1) ... Selecting previously unselected package libnet-netmask-perl. Preparing to unpack .../264-libnet-netmask-perl_2.0002-2_all.deb ... Unpacking libnet-netmask-perl (2.0002-2) ... Selecting previously unselected package libnetaddr-ip-perl. Preparing to unpack .../265-libnetaddr-ip-perl_4.079+dfsg-2+b5_amd64.deb ... Unpacking libnetaddr-ip-perl (4.079+dfsg-2+b5) ... Selecting previously unselected package libdata-validate-ip-perl. Preparing to unpack .../266-libdata-validate-ip-perl_0.31-1_all.deb ... Unpacking libdata-validate-ip-perl (0.31-1) ... Selecting previously unselected package libdata-validate-uri-perl. Preparing to unpack .../267-libdata-validate-uri-perl_0.07-3_all.deb ... Unpacking libdata-validate-uri-perl (0.07-3) ... Selecting previously unselected package libdevel-size-perl. Preparing to unpack .../268-libdevel-size-perl_0.84-1+b1_amd64.deb ... Unpacking libdevel-size-perl (0.84-1+b1) ... Selecting previously unselected package libemail-address-xs-perl. Preparing to unpack .../269-libemail-address-xs-perl_1.05-1+b4_amd64.deb ... Unpacking libemail-address-xs-perl (1.05-1+b4) ... Selecting previously unselected package libipc-system-simple-perl. Preparing to unpack .../270-libipc-system-simple-perl_1.30-2_all.deb ... Unpacking libipc-system-simple-perl (1.30-2) ... Selecting previously unselected package libfile-basedir-perl. Preparing to unpack .../271-libfile-basedir-perl_0.09-2_all.deb ... Unpacking libfile-basedir-perl (0.09-2) ... Selecting previously unselected package libfile-find-rule-perl. Preparing to unpack .../272-libfile-find-rule-perl_0.34-3_all.deb ... Unpacking libfile-find-rule-perl (0.34-3) ... Selecting previously unselected package libio-string-perl. Preparing to unpack .../273-libio-string-perl_1.08-4_all.deb ... Unpacking libio-string-perl (1.08-4) ... Selecting previously unselected package libfont-ttf-perl. Preparing to unpack .../274-libfont-ttf-perl_1.06-2_all.deb ... Unpacking libfont-ttf-perl (1.06-2) ... Selecting previously unselected package libhtml-html5-entities-perl. Preparing to unpack .../275-libhtml-html5-entities-perl_0.004-3_all.deb ... Unpacking libhtml-html5-entities-perl (0.004-3) ... Selecting previously unselected package libhtml-tokeparser-simple-perl. Preparing to unpack .../276-libhtml-tokeparser-simple-perl_3.16-4_all.deb ... Unpacking libhtml-tokeparser-simple-perl (3.16-4) ... Selecting previously unselected package libipc-run3-perl. Preparing to unpack .../277-libipc-run3-perl_0.049-1_all.deb ... Unpacking libipc-run3-perl (0.049-1) ... Selecting previously unselected package libjson-maybexs-perl. Preparing to unpack .../278-libjson-maybexs-perl_1.004008-1_all.deb ... Unpacking libjson-maybexs-perl (1.004008-1) ... Selecting previously unselected package liblist-compare-perl. Preparing to unpack .../279-liblist-compare-perl_0.55-2_all.deb ... Unpacking liblist-compare-perl (0.55-2) ... Selecting previously unselected package liblist-someutils-perl. Preparing to unpack .../280-liblist-someutils-perl_0.59-1_all.deb ... Unpacking liblist-someutils-perl (0.59-1) ... Selecting previously unselected package liblist-utilsby-perl. Preparing to unpack .../281-liblist-utilsby-perl_0.12-2_all.deb ... Unpacking liblist-utilsby-perl (0.12-2) ... Selecting previously unselected package libmldbm-perl. Preparing to unpack .../282-libmldbm-perl_2.05-4_all.deb ... Unpacking libmldbm-perl (2.05-4) ... Selecting previously unselected package libclass-method-modifiers-perl. Preparing to unpack .../283-libclass-method-modifiers-perl_2.15-1_all.deb ... Unpacking libclass-method-modifiers-perl (2.15-1) ... Selecting previously unselected package libimport-into-perl. Preparing to unpack .../284-libimport-into-perl_1.002005-2_all.deb ... Unpacking libimport-into-perl (1.002005-2) ... Selecting previously unselected package librole-tiny-perl. Preparing to unpack .../285-librole-tiny-perl_2.002004-1_all.deb ... Unpacking librole-tiny-perl (2.002004-1) ... Selecting previously unselected package libsub-quote-perl. Preparing to unpack .../286-libsub-quote-perl_2.006008-1_all.deb ... Unpacking libsub-quote-perl (2.006008-1) ... Selecting previously unselected package libmoo-perl. Preparing to unpack .../287-libmoo-perl_2.005005-1_all.deb ... Unpacking libmoo-perl (2.005005-1) ... Selecting previously unselected package libstrictures-perl. Preparing to unpack .../288-libstrictures-perl_2.000006-1_all.deb ... Unpacking libstrictures-perl (2.000006-1) ... Selecting previously unselected package libmoox-aliases-perl. Preparing to unpack .../289-libmoox-aliases-perl_0.001006-2_all.deb ... Unpacking libmoox-aliases-perl (0.001006-2) ... Selecting previously unselected package libperlio-gzip-perl. Preparing to unpack .../290-libperlio-gzip-perl_0.20-1+b4_amd64.deb ... Unpacking libperlio-gzip-perl (0.20-1+b4) ... Selecting previously unselected package libperlio-utf8-strict-perl. Preparing to unpack .../291-libperlio-utf8-strict-perl_0.010-1+b3_amd64.deb ... Unpacking libperlio-utf8-strict-perl (0.010-1+b3) ... Selecting previously unselected package libproc-processtable-perl:amd64. Preparing to unpack .../292-libproc-processtable-perl_0.636-1+b3_amd64.deb ... Unpacking libproc-processtable-perl:amd64 (0.636-1+b3) ... Selecting previously unselected package libregexp-wildcards-perl. Preparing to unpack .../293-libregexp-wildcards-perl_1.05-3_all.deb ... Unpacking libregexp-wildcards-perl (1.05-3) ... Selecting previously unselected package libsereal-decoder-perl. Preparing to unpack .../294-libsereal-decoder-perl_5.004+ds-1+b3_amd64.deb ... Unpacking libsereal-decoder-perl (5.004+ds-1+b3) ... Selecting previously unselected package libsereal-encoder-perl. Preparing to unpack .../295-libsereal-encoder-perl_5.004+ds-1+b3_amd64.deb ... Unpacking libsereal-encoder-perl (5.004+ds-1+b3) ... Selecting previously unselected package libterm-readkey-perl. Preparing to unpack .../296-libterm-readkey-perl_2.38-2+b4_amd64.deb ... Unpacking libterm-readkey-perl (2.38-2+b4) ... Selecting previously unselected package libtext-levenshteinxs-perl. Preparing to unpack .../297-libtext-levenshteinxs-perl_0.03-5+b4_amd64.deb ... Unpacking libtext-levenshteinxs-perl (0.03-5+b4) ... Selecting previously unselected package libmarkdown2:amd64. Preparing to unpack .../298-libmarkdown2_2.2.7-2.1_amd64.deb ... Unpacking libmarkdown2:amd64 (2.2.7-2.1) ... Selecting previously unselected package libtext-markdown-discount-perl. Preparing to unpack .../299-libtext-markdown-discount-perl_0.18-1_amd64.deb ... Unpacking libtext-markdown-discount-perl (0.18-1) ... Selecting previously unselected package libdata-messagepack-perl. Preparing to unpack .../300-libdata-messagepack-perl_1.02-1+b4_amd64.deb ... Unpacking libdata-messagepack-perl (1.02-1+b4) ... Selecting previously unselected package libtext-xslate-perl:amd64. Preparing to unpack .../301-libtext-xslate-perl_3.5.9-2+b1_amd64.deb ... Unpacking libtext-xslate-perl:amd64 (3.5.9-2+b1) ... Selecting previously unselected package libtime-duration-perl. Preparing to unpack .../302-libtime-duration-perl_1.21-2_all.deb ... Unpacking libtime-duration-perl (1.21-2) ... Selecting previously unselected package libtime-moment-perl. Preparing to unpack .../303-libtime-moment-perl_0.44-2+b4_amd64.deb ... Unpacking libtime-moment-perl (0.44-2+b4) ... Selecting previously unselected package libunicode-utf8-perl. Preparing to unpack .../304-libunicode-utf8-perl_0.62-2+b3_amd64.deb ... Unpacking libunicode-utf8-perl (0.62-2+b3) ... Selecting previously unselected package libcgi-pm-perl. Preparing to unpack .../305-libcgi-pm-perl_4.67-1_all.deb ... Unpacking libcgi-pm-perl (4.67-1) ... Selecting previously unselected package libhtml-form-perl. Preparing to unpack .../306-libhtml-form-perl_6.12-1_all.deb ... Unpacking libhtml-form-perl (6.12-1) ... Selecting previously unselected package libwww-mechanize-perl. Preparing to unpack .../307-libwww-mechanize-perl_2.19-1_all.deb ... Unpacking libwww-mechanize-perl (2.19-1) ... Selecting previously unselected package libxml-namespacesupport-perl. Preparing to unpack .../308-libxml-namespacesupport-perl_1.12-2_all.deb ... Unpacking libxml-namespacesupport-perl (1.12-2) ... Selecting previously unselected package libxml-sax-base-perl. Preparing to unpack .../309-libxml-sax-base-perl_1.09-3_all.deb ... Unpacking libxml-sax-base-perl (1.09-3) ... Selecting previously unselected package libxml-sax-perl. Preparing to unpack .../310-libxml-sax-perl_1.02+dfsg-4_all.deb ... Unpacking libxml-sax-perl (1.02+dfsg-4) ... Selecting previously unselected package libxml-libxml-perl. Preparing to unpack .../311-libxml-libxml-perl_2.0207+dfsg+really+2.0134-5+b2_amd64.deb ... Unpacking libxml-libxml-perl (2.0207+dfsg+really+2.0134-5+b2) ... Selecting previously unselected package liblz1:amd64. Preparing to unpack .../312-liblz1_1.15-2_amd64.deb ... Unpacking liblz1:amd64 (1.15-2) ... Selecting previously unselected package plzip. Preparing to unpack .../313-plzip_1.12-1_amd64.deb ... Unpacking plzip (1.12-1) ... Selecting previously unselected package liblzo2-2:amd64. Preparing to unpack .../314-liblzo2-2_2.10-3+b1_amd64.deb ... Unpacking liblzo2-2:amd64 (2.10-3+b1) ... Selecting previously unselected package lzop. Preparing to unpack .../315-lzop_1.04-2_amd64.deb ... Unpacking lzop (1.04-2) ... Selecting previously unselected package patchutils. Preparing to unpack .../316-patchutils_0.4.2-1_amd64.deb ... Unpacking patchutils (0.4.2-1) ... Selecting previously unselected package t1utils. Preparing to unpack .../317-t1utils_1.41-4_amd64.deb ... Unpacking t1utils (1.41-4) ... Selecting previously unselected package unzip. Preparing to unpack .../318-unzip_6.0-28_amd64.deb ... Unpacking unzip (6.0-28) ... Selecting previously unselected package lintian. Preparing to unpack .../319-lintian_2.121.1_all.deb ... Unpacking lintian (2.121.1) ... Selecting previously unselected package libconfig-model-dpkg-perl. Preparing to unpack .../320-libconfig-model-dpkg-perl_3.010_all.deb ... Unpacking libconfig-model-dpkg-perl (3.010) ... Selecting previously unselected package libconvert-binhex-perl. Preparing to unpack .../321-libconvert-binhex-perl_1.125-3_all.deb ... Unpacking libconvert-binhex-perl (1.125-3) ... Selecting previously unselected package libnet-smtp-ssl-perl. Preparing to unpack .../322-libnet-smtp-ssl-perl_1.04-2_all.deb ... Unpacking libnet-smtp-ssl-perl (1.04-2) ... Selecting previously unselected package libmailtools-perl. Preparing to unpack .../323-libmailtools-perl_2.22-1_all.deb ... Unpacking libmailtools-perl (2.22-1) ... Selecting previously unselected package libmime-tools-perl. Preparing to unpack .../324-libmime-tools-perl_5.515-1_all.deb ... Unpacking libmime-tools-perl (5.515-1) ... Selecting previously unselected package libsuitesparseconfig7:amd64. Preparing to unpack .../325-libsuitesparseconfig7_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libsuitesparseconfig7:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libamd3:amd64. Preparing to unpack .../326-libamd3_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libamd3:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libblas3:amd64. Preparing to unpack .../327-libblas3_3.12.1-2_amd64.deb ... Unpacking libblas3:amd64 (3.12.1-2) ... Selecting previously unselected package libgfortran5:amd64. Preparing to unpack .../328-libgfortran5_14.2.0-17_amd64.deb ... Unpacking libgfortran5:amd64 (14.2.0-17) ... Selecting previously unselected package liblapack3:amd64. Preparing to unpack .../329-liblapack3_3.12.1-2_amd64.deb ... Unpacking liblapack3:amd64 (3.12.1-2) ... Selecting previously unselected package libarpack2t64:amd64. Preparing to unpack .../330-libarpack2t64_3.9.1-4_amd64.deb ... Unpacking libarpack2t64:amd64 (3.9.1-4) ... Selecting previously unselected package libccolamd3:amd64. Preparing to unpack .../331-libccolamd3_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libccolamd3:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libcamd3:amd64. Preparing to unpack .../332-libcamd3_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libcamd3:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libcolamd3:amd64. Preparing to unpack .../333-libcolamd3_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libcolamd3:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libcholmod5:amd64. Preparing to unpack .../334-libcholmod5_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libcholmod5:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libcxsparse4:amd64. Preparing to unpack .../335-libcxsparse4_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libcxsparse4:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libfftw3-double3:amd64. Preparing to unpack .../336-libfftw3-double3_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-double3:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-single3:amd64. Preparing to unpack .../337-libfftw3-single3_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-single3:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libxfixes3:amd64. Preparing to unpack .../338-libxfixes3_1%3a6.0.0-2+b4_amd64.deb ... Unpacking libxfixes3:amd64 (1:6.0.0-2+b4) ... Selecting previously unselected package libxcursor1:amd64. Preparing to unpack .../339-libxcursor1_1%3a1.2.3-1_amd64.deb ... Unpacking libxcursor1:amd64 (1:1.2.3-1) ... Selecting previously unselected package libxft2:amd64. Preparing to unpack .../340-libxft2_2.3.6-1+b4_amd64.deb ... Unpacking libxft2:amd64 (2.3.6-1+b4) ... Selecting previously unselected package libxinerama1:amd64. Preparing to unpack .../341-libxinerama1_2%3a1.1.4-3+b3_amd64.deb ... Unpacking libxinerama1:amd64 (2:1.1.4-3+b3) ... Selecting previously unselected package libfltk1.3t64:amd64. Preparing to unpack .../342-libfltk1.3t64_1.3.8-6.1+b1_amd64.deb ... Unpacking libfltk1.3t64:amd64 (1.3.8-6.1+b1) ... Selecting previously unselected package libglvnd0:amd64. Preparing to unpack .../343-libglvnd0_1.7.0-1+b2_amd64.deb ... Unpacking libglvnd0:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libdrm-common. Preparing to unpack .../344-libdrm-common_2.4.123-1_all.deb ... Unpacking libdrm-common (2.4.123-1) ... Selecting previously unselected package libdrm2:amd64. Preparing to unpack .../345-libdrm2_2.4.123-1_amd64.deb ... Unpacking libdrm2:amd64 (2.4.123-1) ... Selecting previously unselected package libglapi-mesa:amd64. Preparing to unpack .../346-libglapi-mesa_24.3.4-3_amd64.deb ... Unpacking libglapi-mesa:amd64 (24.3.4-3) ... Selecting previously unselected package libx11-xcb1:amd64. Preparing to unpack .../347-libx11-xcb1_2%3a1.8.10-2_amd64.deb ... Unpacking libx11-xcb1:amd64 (2:1.8.10-2) ... Selecting previously unselected package libxcb-dri3-0:amd64. Preparing to unpack .../348-libxcb-dri3-0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-dri3-0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-glx0:amd64. Preparing to unpack .../349-libxcb-glx0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-glx0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-present0:amd64. Preparing to unpack .../350-libxcb-present0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-present0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-xfixes0:amd64. Preparing to unpack .../351-libxcb-xfixes0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-xfixes0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxxf86vm1:amd64. Preparing to unpack .../352-libxxf86vm1_1%3a1.1.4-1+b4_amd64.deb ... Unpacking libxxf86vm1:amd64 (1:1.1.4-1+b4) ... Selecting previously unselected package libdrm-amdgpu1:amd64. Preparing to unpack .../353-libdrm-amdgpu1_2.4.123-1_amd64.deb ... Unpacking libdrm-amdgpu1:amd64 (2.4.123-1) ... Selecting previously unselected package libpciaccess0:amd64. Preparing to unpack .../354-libpciaccess0_0.17-3+b3_amd64.deb ... Unpacking libpciaccess0:amd64 (0.17-3+b3) ... Selecting previously unselected package libdrm-intel1:amd64. Preparing to unpack .../355-libdrm-intel1_2.4.123-1_amd64.deb ... Unpacking libdrm-intel1:amd64 (2.4.123-1) ... Selecting previously unselected package libdrm-radeon1:amd64. Preparing to unpack .../356-libdrm-radeon1_2.4.123-1_amd64.deb ... Unpacking libdrm-radeon1:amd64 (2.4.123-1) ... Selecting previously unselected package libz3-4:amd64. Preparing to unpack .../357-libz3-4_4.13.3-1_amd64.deb ... Unpacking libz3-4:amd64 (4.13.3-1) ... Selecting previously unselected package libllvm19:amd64. Preparing to unpack .../358-libllvm19_1%3a19.1.7-1+b1_amd64.deb ... Unpacking libllvm19:amd64 (1:19.1.7-1+b1) ... Selecting previously unselected package libsensors-config. Preparing to unpack .../359-libsensors-config_1%3a3.6.0-10_all.deb ... Unpacking libsensors-config (1:3.6.0-10) ... Selecting previously unselected package libsensors5:amd64. Preparing to unpack .../360-libsensors5_1%3a3.6.0-10+b1_amd64.deb ... Unpacking libsensors5:amd64 (1:3.6.0-10+b1) ... Selecting previously unselected package libxcb-randr0:amd64. Preparing to unpack .../361-libxcb-randr0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-randr0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-sync1:amd64. Preparing to unpack .../362-libxcb-sync1_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-sync1:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxshmfence1:amd64. Preparing to unpack .../363-libxshmfence1_1.3-1+b3_amd64.deb ... Unpacking libxshmfence1:amd64 (1.3-1+b3) ... Selecting previously unselected package mesa-libgallium:amd64. Preparing to unpack .../364-mesa-libgallium_24.3.4-3_amd64.deb ... Unpacking mesa-libgallium:amd64 (24.3.4-3) ... Selecting previously unselected package libwayland-server0:amd64. Preparing to unpack .../365-libwayland-server0_1.23.1-3_amd64.deb ... Unpacking libwayland-server0:amd64 (1.23.1-3) ... Selecting previously unselected package libgbm1:amd64. Preparing to unpack .../366-libgbm1_24.3.4-3_amd64.deb ... Unpacking libgbm1:amd64 (24.3.4-3) ... Selecting previously unselected package libvulkan1:amd64. Preparing to unpack .../367-libvulkan1_1.4.304.0-1_amd64.deb ... Unpacking libvulkan1:amd64 (1.4.304.0-1) ... Selecting previously unselected package libgl1-mesa-dri:amd64. Preparing to unpack .../368-libgl1-mesa-dri_24.3.4-3_amd64.deb ... Unpacking libgl1-mesa-dri:amd64 (24.3.4-3) ... Selecting previously unselected package libglx-mesa0:amd64. Preparing to unpack .../369-libglx-mesa0_24.3.4-3_amd64.deb ... Unpacking libglx-mesa0:amd64 (24.3.4-3) ... Selecting previously unselected package libglx0:amd64. Preparing to unpack .../370-libglx0_1.7.0-1+b2_amd64.deb ... Unpacking libglx0:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libgl1:amd64. Preparing to unpack .../371-libgl1_1.7.0-1+b2_amd64.deb ... Unpacking libgl1:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libfltk-gl1.3t64:amd64. Preparing to unpack .../372-libfltk-gl1.3t64_1.3.8-6.1+b1_amd64.deb ... Unpacking libfltk-gl1.3t64:amd64 (1.3.8-6.1+b1) ... Selecting previously unselected package libgl2ps1.4. Preparing to unpack .../373-libgl2ps1.4_1.4.2+dfsg1-2_amd64.deb ... Unpacking libgl2ps1.4 (1.4.2+dfsg1-2) ... Selecting previously unselected package libltdl7:amd64. Preparing to unpack .../374-libltdl7_2.5.4-3_amd64.deb ... Unpacking libltdl7:amd64 (2.5.4-3) ... Selecting previously unselected package libglpk40:amd64. Preparing to unpack .../375-libglpk40_5.0-1+b2_amd64.deb ... Unpacking libglpk40:amd64 (5.0-1+b2) ... Selecting previously unselected package libopengl0:amd64. Preparing to unpack .../376-libopengl0_1.7.0-1+b2_amd64.deb ... Unpacking libopengl0:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libglu1-mesa:amd64. Preparing to unpack .../377-libglu1-mesa_9.0.2-1.1+b3_amd64.deb ... Unpacking libglu1-mesa:amd64 (9.0.2-1.1+b3) ... Selecting previously unselected package libgif7:amd64. Preparing to unpack .../378-libgif7_5.2.2-1+b1_amd64.deb ... Unpacking libgif7:amd64 (5.2.2-1+b1) ... Selecting previously unselected package libhwy1t64:amd64. Preparing to unpack .../379-libhwy1t64_1.2.0-2+b2_amd64.deb ... Unpacking libhwy1t64:amd64 (1.2.0-2+b2) ... Selecting previously unselected package liblcms2-2:amd64. Preparing to unpack .../380-liblcms2-2_2.16-2_amd64.deb ... Unpacking liblcms2-2:amd64 (2.16-2) ... Selecting previously unselected package libimath-3-1-29t64:amd64. Preparing to unpack .../381-libimath-3-1-29t64_3.1.12-1+b3_amd64.deb ... Unpacking libimath-3-1-29t64:amd64 (3.1.12-1+b3) ... Selecting previously unselected package libopenexr-3-1-30:amd64. Preparing to unpack .../382-libopenexr-3-1-30_3.1.5-5.1+b4_amd64.deb ... Unpacking libopenexr-3-1-30:amd64 (3.1.5-5.1+b4) ... Selecting previously unselected package libjxl0.10:amd64. Preparing to unpack .../383-libjxl0.10_0.10.4-2_amd64.deb ... Unpacking libjxl0.10:amd64 (0.10.4-2) ... Selecting previously unselected package libwmflite-0.2-7:amd64. Preparing to unpack .../384-libwmflite-0.2-7_0.2.13-1.1+b3_amd64.deb ... Unpacking libwmflite-0.2-7:amd64 (0.2.13-1.1+b3) ... Selecting previously unselected package libgraphicsmagick-q16-3t64. Preparing to unpack .../385-libgraphicsmagick-q16-3t64_1.4+really1.3.45-1+b2_amd64.deb ... Unpacking libgraphicsmagick-q16-3t64 (1.4+really1.3.45-1+b2) ... Selecting previously unselected package libgraphicsmagick++-q16-12t64. Preparing to unpack .../386-libgraphicsmagick++-q16-12t64_1.4+really1.3.45-1+b2_amd64.deb ... Unpacking libgraphicsmagick++-q16-12t64 (1.4+really1.3.45-1+b2) ... Selecting previously unselected package libcurl4t64:amd64. Preparing to unpack .../387-libcurl4t64_8.12.1-2_amd64.deb ... Unpacking libcurl4t64:amd64 (8.12.1-2) ... Selecting previously unselected package libaec0:amd64. Preparing to unpack .../388-libaec0_1.1.3-1+b1_amd64.deb ... Unpacking libaec0:amd64 (1.1.3-1+b1) ... Selecting previously unselected package libsz2:amd64. Preparing to unpack .../389-libsz2_1.1.3-1+b1_amd64.deb ... Unpacking libsz2:amd64 (1.1.3-1+b1) ... Selecting previously unselected package libhdf5-310:amd64. Preparing to unpack .../390-libhdf5-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libasound2-data. Preparing to unpack .../391-libasound2-data_1.2.13-1_all.deb ... Unpacking libasound2-data (1.2.13-1) ... Selecting previously unselected package libasound2t64:amd64. Preparing to unpack .../392-libasound2t64_1.2.13-1+b1_amd64.deb ... Unpacking libasound2t64:amd64 (1.2.13-1+b1) ... Selecting previously unselected package libopus0:amd64. Preparing to unpack .../393-libopus0_1.5.2-2_amd64.deb ... Unpacking libopus0:amd64 (1.5.2-2) ... Selecting previously unselected package libsamplerate0:amd64. Preparing to unpack .../394-libsamplerate0_0.2.2-4+b2_amd64.deb ... Unpacking libsamplerate0:amd64 (0.2.2-4+b2) ... Selecting previously unselected package libjack-jackd2-0:amd64. Preparing to unpack .../395-libjack-jackd2-0_1.9.22~dfsg-4_amd64.deb ... Unpacking libjack-jackd2-0:amd64 (1.9.22~dfsg-4) ... Selecting previously unselected package libportaudio2:amd64. Preparing to unpack .../396-libportaudio2_19.6.0-1.2+b3_amd64.deb ... Unpacking libportaudio2:amd64 (19.6.0-1.2+b3) ... Selecting previously unselected package libqhull-r8.0:amd64. Preparing to unpack .../397-libqhull-r8.0_2020.2-6+b2_amd64.deb ... Unpacking libqhull-r8.0:amd64 (2020.2-6+b2) ... Selecting previously unselected package libqrupdate1:amd64. Preparing to unpack .../398-libqrupdate1_1.1.5-1_amd64.deb ... Unpacking libqrupdate1:amd64 (1.1.5-1) ... Selecting previously unselected package libqscintilla2-qt6-l10n. Preparing to unpack .../399-libqscintilla2-qt6-l10n_2.14.1+dfsg-1_all.deb ... Unpacking libqscintilla2-qt6-l10n (2.14.1+dfsg-1) ... Selecting previously unselected package libb2-1:amd64. Preparing to unpack .../400-libb2-1_0.98.1-1.1+b2_amd64.deb ... Unpacking libb2-1:amd64 (0.98.1-1.1+b2) ... Selecting previously unselected package libdouble-conversion3:amd64. Preparing to unpack .../401-libdouble-conversion3_3.3.1-1_amd64.deb ... Unpacking libdouble-conversion3:amd64 (3.3.1-1) ... Selecting previously unselected package libpcre2-16-0:amd64. Preparing to unpack .../402-libpcre2-16-0_10.45-1_amd64.deb ... Unpacking libpcre2-16-0:amd64 (10.45-1) ... Selecting previously unselected package libqt6core6t64:amd64. Preparing to unpack .../403-libqt6core6t64_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6core6t64:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libwayland-client0:amd64. Preparing to unpack .../404-libwayland-client0_1.23.1-3_amd64.deb ... Unpacking libwayland-client0:amd64 (1.23.1-3) ... Selecting previously unselected package libegl-mesa0:amd64. Preparing to unpack .../405-libegl-mesa0_24.3.4-3_amd64.deb ... Unpacking libegl-mesa0:amd64 (24.3.4-3) ... Selecting previously unselected package libegl1:amd64. Preparing to unpack .../406-libegl1_1.7.0-1+b2_amd64.deb ... Unpacking libegl1:amd64 (1.7.0-1+b2) ... Selecting previously unselected package x11-common. Preparing to unpack .../407-x11-common_1%3a7.7+24_all.deb ... Unpacking x11-common (1:7.7+24) ... Selecting previously unselected package libice6:amd64. Preparing to unpack .../408-libice6_2%3a1.1.1-1_amd64.deb ... Unpacking libice6:amd64 (2:1.1.1-1) ... Selecting previously unselected package libevdev2:amd64. Preparing to unpack .../409-libevdev2_1.13.3+dfsg-1_amd64.deb ... Unpacking libevdev2:amd64 (1.13.3+dfsg-1) ... Selecting previously unselected package libmtdev1t64:amd64. Preparing to unpack .../410-libmtdev1t64_1.1.7-1_amd64.deb ... Unpacking libmtdev1t64:amd64 (1.1.7-1) ... Selecting previously unselected package libgudev-1.0-0:amd64. Preparing to unpack .../411-libgudev-1.0-0_238-6_amd64.deb ... Unpacking libgudev-1.0-0:amd64 (238-6) ... Selecting previously unselected package libwacom-common. Preparing to unpack .../412-libwacom-common_2.14.0-1_all.deb ... Unpacking libwacom-common (2.14.0-1) ... Selecting previously unselected package libwacom9:amd64. Preparing to unpack .../413-libwacom9_2.14.0-1_amd64.deb ... Unpacking libwacom9:amd64 (2.14.0-1) ... Selecting previously unselected package libinput-bin. Preparing to unpack .../414-libinput-bin_1.27.1-1_amd64.deb ... Unpacking libinput-bin (1.27.1-1) ... Selecting previously unselected package libinput10:amd64. Preparing to unpack .../415-libinput10_1.27.1-1_amd64.deb ... Unpacking libinput10:amd64 (1.27.1-1) ... Selecting previously unselected package libmd4c0:amd64. Preparing to unpack .../416-libmd4c0_0.5.2-2+b1_amd64.deb ... Unpacking libmd4c0:amd64 (0.5.2-2+b1) ... Selecting previously unselected package libdbus-1-3:amd64. Preparing to unpack .../417-libdbus-1-3_1.16.0-1_amd64.deb ... Unpacking libdbus-1-3:amd64 (1.16.0-1) ... Selecting previously unselected package libqt6dbus6:amd64. Preparing to unpack .../418-libqt6dbus6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6dbus6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libsm6:amd64. Preparing to unpack .../419-libsm6_2%3a1.2.4-1_amd64.deb ... Unpacking libsm6:amd64 (2:1.2.4-1) ... Selecting previously unselected package libts0t64:amd64. Preparing to unpack .../420-libts0t64_1.22-1.1+b1_amd64.deb ... Unpacking libts0t64:amd64 (1.22-1.1+b1) ... Selecting previously unselected package libxcb-util1:amd64. Preparing to unpack .../421-libxcb-util1_0.4.1-1_amd64.deb ... Unpacking libxcb-util1:amd64 (0.4.1-1) ... Selecting previously unselected package libxcb-image0:amd64. Preparing to unpack .../422-libxcb-image0_0.4.0-2+b2_amd64.deb ... Unpacking libxcb-image0:amd64 (0.4.0-2+b2) ... Selecting previously unselected package libxcb-render-util0:amd64. Preparing to unpack .../423-libxcb-render-util0_0.3.10-1_amd64.deb ... Unpacking libxcb-render-util0:amd64 (0.3.10-1) ... Selecting previously unselected package libxcb-cursor0:amd64. Preparing to unpack .../424-libxcb-cursor0_0.1.5-1_amd64.deb ... Unpacking libxcb-cursor0:amd64 (0.1.5-1) ... Selecting previously unselected package libxcb-icccm4:amd64. Preparing to unpack .../425-libxcb-icccm4_0.4.2-1_amd64.deb ... Unpacking libxcb-icccm4:amd64 (0.4.2-1) ... Selecting previously unselected package libxcb-keysyms1:amd64. Preparing to unpack .../426-libxcb-keysyms1_0.4.1-1_amd64.deb ... Unpacking libxcb-keysyms1:amd64 (0.4.1-1) ... Selecting previously unselected package libxcb-shape0:amd64. Preparing to unpack .../427-libxcb-shape0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-shape0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-xinput0:amd64. Preparing to unpack .../428-libxcb-xinput0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-xinput0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-xkb1:amd64. Preparing to unpack .../429-libxcb-xkb1_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-xkb1:amd64 (1.17.0-2+b1) ... Selecting previously unselected package xkb-data. Preparing to unpack .../430-xkb-data_2.42-1_all.deb ... Unpacking xkb-data (2.42-1) ... Selecting previously unselected package libxkbcommon0:amd64. Preparing to unpack .../431-libxkbcommon0_1.7.0-2_amd64.deb ... Unpacking libxkbcommon0:amd64 (1.7.0-2) ... Selecting previously unselected package libxkbcommon-x11-0:amd64. Preparing to unpack .../432-libxkbcommon-x11-0_1.7.0-2_amd64.deb ... Unpacking libxkbcommon-x11-0:amd64 (1.7.0-2) ... Selecting previously unselected package libqt6gui6:amd64. Preparing to unpack .../433-libqt6gui6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6gui6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libavahi-common-data:amd64. Preparing to unpack .../434-libavahi-common-data_0.8-16_amd64.deb ... Unpacking libavahi-common-data:amd64 (0.8-16) ... Selecting previously unselected package libavahi-common3:amd64. Preparing to unpack .../435-libavahi-common3_0.8-16_amd64.deb ... Unpacking libavahi-common3:amd64 (0.8-16) ... Selecting previously unselected package libavahi-client3:amd64. Preparing to unpack .../436-libavahi-client3_0.8-16_amd64.deb ... Unpacking libavahi-client3:amd64 (0.8-16) ... Selecting previously unselected package libcups2t64:amd64. Preparing to unpack .../437-libcups2t64_2.4.10-2+b1_amd64.deb ... Unpacking libcups2t64:amd64 (2.4.10-2+b1) ... Selecting previously unselected package libqt6widgets6:amd64. Preparing to unpack .../438-libqt6widgets6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6widgets6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6printsupport6:amd64. Preparing to unpack .../439-libqt6printsupport6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6printsupport6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqscintilla2-qt6-15:amd64. Preparing to unpack .../440-libqscintilla2-qt6-15_2.14.1+dfsg-1+b4_amd64.deb ... Unpacking libqscintilla2-qt6-15:amd64 (2.14.1+dfsg-1+b4) ... Selecting previously unselected package libqt6core5compat6:amd64. Preparing to unpack .../441-libqt6core5compat6_6.7.2-3_amd64.deb ... Unpacking libqt6core5compat6:amd64 (6.7.2-3) ... Selecting previously unselected package libqt6sql6:amd64. Preparing to unpack .../442-libqt6sql6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6sql6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6help6:amd64. Preparing to unpack .../443-libqt6help6_6.7.2-6_amd64.deb ... Unpacking libqt6help6:amd64 (6.7.2-6) ... Selecting previously unselected package libduktape207:amd64. Preparing to unpack .../444-libduktape207_2.7.0-2+b2_amd64.deb ... Unpacking libduktape207:amd64 (2.7.0-2+b2) ... Selecting previously unselected package libproxy1v5:amd64. Preparing to unpack .../445-libproxy1v5_0.5.9-1_amd64.deb ... Unpacking libproxy1v5:amd64 (0.5.9-1) ... Selecting previously unselected package libqt6network6:amd64. Preparing to unpack .../446-libqt6network6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6network6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6opengl6:amd64. Preparing to unpack .../447-libqt6opengl6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6opengl6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6openglwidgets6:amd64. Preparing to unpack .../448-libqt6openglwidgets6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6openglwidgets6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6xml6:amd64. Preparing to unpack .../449-libqt6xml6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6xml6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libogg0:amd64. Preparing to unpack .../450-libogg0_1.3.5-3+b2_amd64.deb ... Unpacking libogg0:amd64 (1.3.5-3+b2) ... Selecting previously unselected package libflac12t64:amd64. Preparing to unpack .../451-libflac12t64_1.4.3+ds-4_amd64.deb ... Unpacking libflac12t64:amd64 (1.4.3+ds-4) ... Selecting previously unselected package libmp3lame0:amd64. Preparing to unpack .../452-libmp3lame0_3.100-6+b3_amd64.deb ... Unpacking libmp3lame0:amd64 (3.100-6+b3) ... Selecting previously unselected package libmpg123-0t64:amd64. Preparing to unpack .../453-libmpg123-0t64_1.32.10-1_amd64.deb ... Unpacking libmpg123-0t64:amd64 (1.32.10-1) ... Selecting previously unselected package libvorbis0a:amd64. Preparing to unpack .../454-libvorbis0a_1.3.7-2+b1_amd64.deb ... Unpacking libvorbis0a:amd64 (1.3.7-2+b1) ... Selecting previously unselected package libvorbisenc2:amd64. Preparing to unpack .../455-libvorbisenc2_1.3.7-2+b1_amd64.deb ... Unpacking libvorbisenc2:amd64 (1.3.7-2+b1) ... Selecting previously unselected package libsndfile1:amd64. Preparing to unpack .../456-libsndfile1_1.2.2-2_amd64.deb ... Unpacking libsndfile1:amd64 (1.2.2-2) ... Selecting previously unselected package libspqr4:amd64. Preparing to unpack .../457-libspqr4_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libspqr4:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libumfpack6:amd64. Preparing to unpack .../458-libumfpack6_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libumfpack6:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libtext-unidecode-perl. Preparing to unpack .../459-libtext-unidecode-perl_1.30-3_all.deb ... Unpacking libtext-unidecode-perl (1.30-3) ... Selecting previously unselected package texinfo-lib. Preparing to unpack .../460-texinfo-lib_7.1.1-1+b1_amd64.deb ... Unpacking texinfo-lib (7.1.1-1+b1) ... Selecting previously unselected package tex-common. Preparing to unpack .../461-tex-common_6.18_all.deb ... Unpacking tex-common (6.18) ... Selecting previously unselected package texinfo. Preparing to unpack .../462-texinfo_7.1.1-1_all.deb ... Unpacking texinfo (7.1.1-1) ... Selecting previously unselected package octave-common. Preparing to unpack .../463-octave-common_9.4.0-1_all.deb ... Unpacking octave-common (9.4.0-1) ... Selecting previously unselected package octave. Preparing to unpack .../464-octave_9.4.0-1_amd64.deb ... Unpacking octave (9.4.0-1) ... Selecting previously unselected package libncurses6:amd64. Preparing to unpack .../465-libncurses6_6.5+20250216-1_amd64.deb ... Unpacking libncurses6:amd64 (6.5+20250216-1) ... Selecting previously unselected package libncurses-dev:amd64. Preparing to unpack .../466-libncurses-dev_6.5+20250216-1_amd64.deb ... Unpacking libncurses-dev:amd64 (6.5+20250216-1) ... Selecting previously unselected package libreadline-dev:amd64. Preparing to unpack .../467-libreadline-dev_8.2-6_amd64.deb ... Unpacking libreadline-dev:amd64 (8.2-6) ... Selecting previously unselected package libhdf5-fortran-310:amd64. Preparing to unpack .../468-libhdf5-fortran-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-fortran-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-hl-310:amd64. Preparing to unpack .../469-libhdf5-hl-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-hl-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-hl-fortran-310:amd64. Preparing to unpack .../470-libhdf5-hl-fortran-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-hl-fortran-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-cpp-310:amd64. Preparing to unpack .../471-libhdf5-cpp-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-cpp-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-hl-cpp-310:amd64. Preparing to unpack .../472-libhdf5-hl-cpp-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-hl-cpp-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package zlib1g-dev:amd64. Preparing to unpack .../473-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1+b1_amd64.deb ... Unpacking zlib1g-dev:amd64 (1:1.3.dfsg+really1.3.1-1+b1) ... Selecting previously unselected package libjpeg62-turbo-dev:amd64. Preparing to unpack .../474-libjpeg62-turbo-dev_1%3a2.1.5-3+b1_amd64.deb ... Unpacking libjpeg62-turbo-dev:amd64 (1:2.1.5-3+b1) ... Selecting previously unselected package libjpeg-dev:amd64. Preparing to unpack .../475-libjpeg-dev_1%3a2.1.5-3+b1_amd64.deb ... Unpacking libjpeg-dev:amd64 (1:2.1.5-3+b1) ... Selecting previously unselected package libaec-dev:amd64. Preparing to unpack .../476-libaec-dev_1.1.3-1+b1_amd64.deb ... Unpacking libaec-dev:amd64 (1.1.3-1+b1) ... Selecting previously unselected package libbrotli-dev:amd64. Preparing to unpack .../477-libbrotli-dev_1.1.0-2+b6_amd64.deb ... Unpacking libbrotli-dev:amd64 (1.1.0-2+b6) ... Selecting previously unselected package libidn2-dev:amd64. Preparing to unpack .../478-libidn2-dev_2.3.7-2+b1_amd64.deb ... Unpacking libidn2-dev:amd64 (2.3.7-2+b1) ... Selecting previously unselected package libgssrpc4t64:amd64. Preparing to unpack .../479-libgssrpc4t64_1.21.3-4_amd64.deb ... Unpacking libgssrpc4t64:amd64 (1.21.3-4) ... Selecting previously unselected package libkadm5clnt-mit12:amd64. Preparing to unpack .../480-libkadm5clnt-mit12_1.21.3-4_amd64.deb ... Unpacking libkadm5clnt-mit12:amd64 (1.21.3-4) ... Selecting previously unselected package libkdb5-10t64:amd64. Preparing to unpack .../481-libkdb5-10t64_1.21.3-4_amd64.deb ... Unpacking libkdb5-10t64:amd64 (1.21.3-4) ... Selecting previously unselected package libkadm5srv-mit12:amd64. Preparing to unpack .../482-libkadm5srv-mit12_1.21.3-4_amd64.deb ... Unpacking libkadm5srv-mit12:amd64 (1.21.3-4) ... Selecting previously unselected package krb5-multidev:amd64. Preparing to unpack .../483-krb5-multidev_1.21.3-4_amd64.deb ... Unpacking krb5-multidev:amd64 (1.21.3-4) ... Selecting previously unselected package libkrb5-dev:amd64. Preparing to unpack .../484-libkrb5-dev_1.21.3-4_amd64.deb ... Unpacking libkrb5-dev:amd64 (1.21.3-4) ... Selecting previously unselected package libldap-dev:amd64. Preparing to unpack .../485-libldap-dev_2.6.9+dfsg-1_amd64.deb ... Unpacking libldap-dev:amd64 (2.6.9+dfsg-1) ... Selecting previously unselected package libpkgconf3:amd64. Preparing to unpack .../486-libpkgconf3_1.8.1-4_amd64.deb ... Unpacking libpkgconf3:amd64 (1.8.1-4) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../487-pkgconf-bin_1.8.1-4_amd64.deb ... Unpacking pkgconf-bin (1.8.1-4) ... Selecting previously unselected package pkgconf:amd64. Preparing to unpack .../488-pkgconf_1.8.1-4_amd64.deb ... Unpacking pkgconf:amd64 (1.8.1-4) ... Selecting previously unselected package libnghttp2-dev:amd64. Preparing to unpack .../489-libnghttp2-dev_1.64.0-1_amd64.deb ... Unpacking libnghttp2-dev:amd64 (1.64.0-1) ... Selecting previously unselected package libnghttp3-dev:amd64. Preparing to unpack .../490-libnghttp3-dev_1.6.0-2_amd64.deb ... Unpacking libnghttp3-dev:amd64 (1.6.0-2) ... Selecting previously unselected package libpsl-dev:amd64. Preparing to unpack .../491-libpsl-dev_0.21.2-1.1+b1_amd64.deb ... Unpacking libpsl-dev:amd64 (0.21.2-1.1+b1) ... Selecting previously unselected package libgmpxx4ldbl:amd64. Preparing to unpack .../492-libgmpxx4ldbl_2%3a6.3.0+dfsg-3_amd64.deb ... Unpacking libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-3) ... Selecting previously unselected package libgmp-dev:amd64. Preparing to unpack .../493-libgmp-dev_2%3a6.3.0+dfsg-3_amd64.deb ... Unpacking libgmp-dev:amd64 (2:6.3.0+dfsg-3) ... Selecting previously unselected package libevent-2.1-7t64:amd64. Preparing to unpack .../494-libevent-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libunbound8:amd64. Preparing to unpack .../495-libunbound8_1.22.0-1+b1_amd64.deb ... Unpacking libunbound8:amd64 (1.22.0-1+b1) ... Selecting previously unselected package libgnutls-dane0t64:amd64. Preparing to unpack .../496-libgnutls-dane0t64_3.8.9-2_amd64.deb ... Unpacking libgnutls-dane0t64:amd64 (3.8.9-2) ... Selecting previously unselected package libgnutls-openssl27t64:amd64. Preparing to unpack .../497-libgnutls-openssl27t64_3.8.9-2_amd64.deb ... Unpacking libgnutls-openssl27t64:amd64 (3.8.9-2) ... Selecting previously unselected package libp11-kit-dev:amd64. Preparing to unpack .../498-libp11-kit-dev_0.25.5-3_amd64.deb ... Unpacking libp11-kit-dev:amd64 (0.25.5-3) ... Selecting previously unselected package libtasn1-6-dev:amd64. Preparing to unpack .../499-libtasn1-6-dev_4.20.0-2_amd64.deb ... Unpacking libtasn1-6-dev:amd64 (4.20.0-2) ... Selecting previously unselected package nettle-dev:amd64. Preparing to unpack .../500-nettle-dev_3.10.1-1_amd64.deb ... Unpacking nettle-dev:amd64 (3.10.1-1) ... Selecting previously unselected package libgnutls28-dev:amd64. Preparing to unpack .../501-libgnutls28-dev_3.8.9-2_amd64.deb ... Unpacking libgnutls28-dev:amd64 (3.8.9-2) ... Selecting previously unselected package librtmp-dev:amd64. Preparing to unpack .../502-librtmp-dev_2.4+20151223.gitfa8646d.1-2+b5_amd64.deb ... Unpacking librtmp-dev:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Selecting previously unselected package libssl-dev:amd64. Preparing to unpack .../503-libssl-dev_3.4.1-1_amd64.deb ... Unpacking libssl-dev:amd64 (3.4.1-1) ... Selecting previously unselected package libssh2-1-dev:amd64. Preparing to unpack .../504-libssh2-1-dev_1.11.1-1_amd64.deb ... Unpacking libssh2-1-dev:amd64 (1.11.1-1) ... Selecting previously unselected package libzstd-dev:amd64. Preparing to unpack .../505-libzstd-dev_1.5.6+dfsg-2_amd64.deb ... Unpacking libzstd-dev:amd64 (1.5.6+dfsg-2) ... Selecting previously unselected package libcurl4-openssl-dev:amd64. Preparing to unpack .../506-libcurl4-openssl-dev_8.12.1-2_amd64.deb ... Unpacking libcurl4-openssl-dev:amd64 (8.12.1-2) ... Selecting previously unselected package hdf5-helpers. Preparing to unpack .../507-hdf5-helpers_1.14.5+repack-3_amd64.deb ... Unpacking hdf5-helpers (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-dev. Preparing to unpack .../508-libhdf5-dev_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-dev (1.14.5+repack-3) ... Selecting previously unselected package xorg-sgml-doctools. Preparing to unpack .../509-xorg-sgml-doctools_1%3a1.11-1.1_all.deb ... Unpacking xorg-sgml-doctools (1:1.11-1.1) ... Selecting previously unselected package x11proto-dev. Preparing to unpack .../510-x11proto-dev_2024.1-1_all.deb ... Unpacking x11proto-dev (2024.1-1) ... Selecting previously unselected package libxau-dev:amd64. Preparing to unpack .../511-libxau-dev_1%3a1.0.11-1_amd64.deb ... Unpacking libxau-dev:amd64 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp-dev:amd64. Preparing to unpack .../512-libxdmcp-dev_1%3a1.1.5-1_amd64.deb ... Unpacking libxdmcp-dev:amd64 (1:1.1.5-1) ... Selecting previously unselected package xtrans-dev. Preparing to unpack .../513-xtrans-dev_1.4.0-1_all.deb ... Unpacking xtrans-dev (1.4.0-1) ... Selecting previously unselected package libxcb1-dev:amd64. Preparing to unpack .../514-libxcb1-dev_1.17.0-2+b1_amd64.deb ... Unpacking libxcb1-dev:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libx11-dev:amd64. Preparing to unpack .../515-libx11-dev_2%3a1.8.10-2_amd64.deb ... Unpacking libx11-dev:amd64 (2:1.8.10-2) ... Selecting previously unselected package libglx-dev:amd64. Preparing to unpack .../516-libglx-dev_1.7.0-1+b2_amd64.deb ... Unpacking libglx-dev:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libgl-dev:amd64. Preparing to unpack .../517-libgl-dev_1.7.0-1+b2_amd64.deb ... Unpacking libgl-dev:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libblas-dev:amd64. Preparing to unpack .../518-libblas-dev_3.12.1-2_amd64.deb ... Unpacking libblas-dev:amd64 (3.12.1-2) ... Selecting previously unselected package liblapack-dev:amd64. Preparing to unpack .../519-liblapack-dev_3.12.1-2_amd64.deb ... Unpacking liblapack-dev:amd64 (3.12.1-2) ... Selecting previously unselected package libfftw3-long3:amd64. Preparing to unpack .../520-libfftw3-long3_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-long3:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-quad3:amd64. Preparing to unpack .../521-libfftw3-quad3_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-quad3:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-bin. Preparing to unpack .../522-libfftw3-bin_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-bin (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-dev:amd64. Preparing to unpack .../523-libfftw3-dev_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-dev:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libgfortran-14-dev:amd64. Preparing to unpack .../524-libgfortran-14-dev_14.2.0-17_amd64.deb ... Unpacking libgfortran-14-dev:amd64 (14.2.0-17) ... Selecting previously unselected package gfortran-14-x86-64-linux-gnu. Preparing to unpack .../525-gfortran-14-x86-64-linux-gnu_14.2.0-17_amd64.deb ... Unpacking gfortran-14-x86-64-linux-gnu (14.2.0-17) ... Selecting previously unselected package gfortran-14. Preparing to unpack .../526-gfortran-14_14.2.0-17_amd64.deb ... Unpacking gfortran-14 (14.2.0-17) ... Selecting previously unselected package gfortran-x86-64-linux-gnu. Preparing to unpack .../527-gfortran-x86-64-linux-gnu_4%3a14.2.0-1_amd64.deb ... Unpacking gfortran-x86-64-linux-gnu (4:14.2.0-1) ... Selecting previously unselected package gfortran. Preparing to unpack .../528-gfortran_4%3a14.2.0-1_amd64.deb ... Unpacking gfortran (4:14.2.0-1) ... Selecting previously unselected package octave-dev. Preparing to unpack .../529-octave-dev_9.4.0-1_amd64.deb ... Unpacking octave-dev (9.4.0-1) ... Selecting previously unselected package dh-octave. Preparing to unpack .../530-dh-octave_1.8.0_all.deb ... Unpacking dh-octave (1.8.0) ... Selecting previously unselected package python3-mpmath. Preparing to unpack .../531-python3-mpmath_1.3.0-1_all.deb ... Unpacking python3-mpmath (1.3.0-1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../532-python3-packaging_24.2-1_all.deb ... Unpacking python3-packaging (24.2-1) ... Selecting previously unselected package python3-sympy. Preparing to unpack .../533-python3-sympy_1.13.3-3_all.deb ... Unpacking python3-sympy (1.13.3-3) ... Setting up libapt-pkg-perl (0.1.41) ... Setting up liblz1:amd64 (1.15-2) ... Setting up libhwy1t64:amd64 (1.2.0-2+b2) ... Setting up media-types (11.0.0) ... Setting up libmodule-pluggable-perl (5.2-5) ... Setting up libb2-1:amd64 (0.98.1-1.1+b2) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up libgraphite2-3:amd64 (1.3.14-2+b1) ... Setting up libstring-escape-perl (2010.002-3) ... Setting up liblcms2-2:amd64 (2.16-2) ... Setting up libberkeleydb-perl:amd64 (0.66-1) ... Setting up libpixman-1-0:amd64 (0.44.0-3) ... Setting up plzip (1.12-1) ... update-alternatives: using /usr/bin/lzip.plzip to provide /usr/bin/lzip (lzip) in auto mode update-alternatives: using /usr/bin/lzip.plzip to provide /usr/bin/lzip-compressor (lzip-compressor) in auto mode update-alternatives: using /usr/bin/lzip.plzip to provide /usr/bin/lzip-decompressor (lzip-decompressor) in auto mode Setting up libtext-charwidth-perl:amd64 (0.04-11+b4) ... Setting up libsharpyuv0:amd64 (1.5.0-0.1) ... Setting up libaom3:amd64 (3.12.0-1) ... Setting up libpciaccess0:amd64 (0.17-3+b3) ... Setting up libfile-which-perl (1.27-2) ... Setting up libxau6:amd64 (1:1.0.11-1) ... Setting up libxdmcp6:amd64 (1:1.1.5-1) ... Setting up libdouble-conversion3:amd64 (3.3.1-1) ... Setting up libkeyutils1:amd64 (1.6.3-4) ... Setting up libxcb1:amd64 (1.17.0-2+b1) ... Setting up libunicode-utf8-perl (0.62-2+b3) ... Setting up libfftw3-single3:amd64 (3.3.10-2+b1) ... Setting up libset-intspan-perl (1.19-3) ... Setting up libicu72:amd64 (72.1-6) ... Setting up libxcb-xfixes0:amd64 (1.17.0-2+b1) ... Setting up libogg0:amd64 (1.3.5-3+b2) ... Setting up libmouse-perl:amd64 (2.5.11-1+b1) ... Setting up libzstd-dev:amd64 (1.5.6+dfsg-2) ... Setting up liblerc4:amd64 (4.0.0+ds-5) ... Setting up libpod-pom-perl (2.01-4) ... Setting up bsdextrautils (2.40.4-4) ... Setting up hdf5-helpers (1.14.5+repack-3) ... Setting up libwmflite-0.2-7:amd64 (0.2.13-1.1+b3) ... Setting up libregexp-pattern-perl (0.2.14-2) ... Setting up libgpg-error0:amd64 (1.51-3) ... Setting up libdata-messagepack-perl (1.02-1+b4) ... Setting up libclass-inspector-perl (1.36-3) ... Setting up libxcb-xinput0:amd64 (1.17.0-2+b1) ... Setting up libdynaloader-functions-perl (0.004-1) ... Setting up libdatrie1:amd64 (0.2.13-3+b1) ... Setting up libtext-glob-perl (0.11-3) ... Setting up libclass-method-modifiers-perl (2.15-1) ... Setting up liblist-compare-perl (0.55-2) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libxcb-render0:amd64 (1.17.0-2+b1) ... Setting up libclone-perl:amd64 (0.47-1+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:amd64 (0.2.5-2) ... Setting up libsub-identify-perl (0.14-3+b3) ... Setting up libcpanel-json-xs-perl:amd64 (4.39-1) ... Setting up libglvnd0:amd64 (1.7.0-1+b2) ... Setting up libio-stringy-perl (2.113-2) ... Setting up libhtml-tagset-perl (3.24-1) ... Setting up libts0t64:amd64 (1.22-1.1+b1) ... Setting up liblog-any-perl (1.717-1) ... Setting up libyaml-pp-perl (0.39.0-1) ... Setting up libxcb-glx0:amd64 (1.17.0-2+b1) ... Setting up libdevel-size-perl (0.84-1+b1) ... Setting up unzip (6.0-28) ... Setting up libdebhelper-perl (13.24.1) ... Setting up libbrotli1:amd64 (1.1.0-2+b6) ... Setting up libedit2:amd64 (3.1-20250104-1) ... Setting up libregexp-pattern-license-perl (3.11.2-1) ... Setting up libconvert-binhex-perl (1.125-3) ... Setting up liblwp-mediatypes-perl (6.04-2) ... Setting up libmagic1t64:amd64 (1:5.45-3+b1) ... Setting up libyaml-libyaml-perl (0.903.0+ds-1) ... Setting up fonts-freefont-otf (20211204+svn4273-2) ... Setting up libio-interactive-perl (1.026-1) ... Setting up libxcb-keysyms1:amd64 (0.4.1-1) ... Setting up libxcb-shape0:amd64 (1.17.0-2+b1) ... Setting up x11-common (1:7.7+24) ... invoke-rc.d: could not determine current runlevel Setting up X socket directories... /tmp/.X11-unix /tmp/.ICE-unix. Setting up libtry-tiny-perl (0.32-1) ... Setting up libsensors-config (1:3.6.0-10) ... Setting up libnghttp2-14:amd64 (1.64.0-1) ... Setting up libdeflate0:amd64 (1.23-1+b1) ... Setting up perl-openssl-defaults:amd64 (7+b2) ... Setting up libmldbm-perl (2.05-4) ... Setting up libxml-namespacesupport-perl (1.12-2) ... Setting up libfftw3-long3:amd64 (3.3.10-2+b1) ... Setting up gettext-base (0.23.1-1) ... Setting up m4 (1.4.19-5) ... Setting up libevent-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libgcrypt20:amd64 (1.11.0-7) ... Setting up libclone-choose-perl (0.010-2) ... Setting up libqhull-r8.0:amd64 (2020.2-6+b2) ... Setting up libxcb-render-util0:amd64 (0.3.10-1) ... Setting up xkb-data (2.42-1) ... Setting up liblzo2-2:amd64 (2.10-3+b1) ... Setting up libtime-moment-perl (0.44-2+b4) ... Setting up libencode-locale-perl (1.05-3) ... Setting up libxcb-shm0:amd64 (1.17.0-2+b1) ... Setting up libxcb-icccm4:amd64 (0.4.2-1) ... Setting up libcom-err2:amd64 (1.47.2-1) ... Setting up file (1:5.45-3+b1) ... Setting up texinfo-lib (7.1.1-1+b1) ... Setting up libmpg123-0t64:amd64 (1.32.10-1) ... Setting up libconfig-tiny-perl (2.30-1) ... Setting up libsereal-encoder-perl (5.004+ds-1+b3) ... Setting up liblist-utilsby-perl (0.12-2) ... Setting up libyaml-tiny-perl (1.76-1) ... Setting up libtext-wrapi18n-perl (0.06-10) ... Setting up libjbig0:amd64 (2.1-6.1+b2) ... Setting up octave-common (9.4.0-1) ... Setting up libregexp-common-perl (2024080801-1) ... Setting up libpcre2-16-0:amd64 (10.45-1) ... Setting up libaec0:amd64 (1.1.3-1+b1) ... Setting up libnet-netmask-perl (2.0002-2) ... Setting up libopengl0:amd64 (1.7.0-1+b2) ... Setting up libsub-install-perl (0.929-1) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up libxcb-util1:amd64 (0.4.1-1) ... Setting up libindirect-perl (0.39-2+b4) ... Setting up libxcb-xkb1:amd64 (1.17.0-2+b1) ... Setting up libxcb-image0:amd64 (0.4.0-2+b2) ... Setting up libkrb5support0:amd64 (1.21.3-4) ... Setting up libnumber-compare-perl (0.03-3) ... Setting up libsasl2-modules-db:amd64 (2.1.28+dfsg1-8+b1) ... Setting up tzdata (2025a-2) ... Current default time zone: 'Etc/UTC' Local time is now: Fri Feb 21 14:21:58 UTC 2025. Universal Time is now: Fri Feb 21 14:21:58 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libxcb-present0:amd64 (1.17.0-2+b1) ... Setting up liberror-perl (0.17029-2) ... Setting up libasound2-data (1.2.13-1) ... Setting up libjson-maybexs-perl (1.004008-1) ... Setting up libxml-sax-base-perl (1.09-3) ... Setting up libio-string-perl (1.08-4) ... Setting up libboolean-perl (0.46-3) ... Setting up libnetaddr-ip-perl (4.079+dfsg-2+b5) ... Setting up xtrans-dev (1.4.0-1) ... Setting up autotools-dev (20220109.1) ... Setting up libz3-4:amd64 (4.13.3-1) ... Setting up libblas3:amd64 (3.12.1-2) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/x86_64-linux-gnu/libblas.so.3 (libblas.so.3-x86_64-linux-gnu) in auto mode Setting up libclass-data-inheritable-perl (0.10-1) ... Setting up libunbound8:amd64 (1.22.0-1+b1) ... Setting up libpkgconf3:amd64 (1.8.1-4) ... Setting up libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-3) ... Setting up libalgorithm-c3-perl (0.11-2) ... Setting up libasound2t64:amd64 (1.2.13-1+b1) ... Setting up liblog-log4perl-perl (1.57-1) ... Setting up libtext-reform-perl (1.20-5) ... Setting up libjpeg62-turbo:amd64 (1:2.1.5-3+b1) ... Setting up libx11-data (2:1.8.10-2) ... Setting up libsvtav1enc2:amd64 (2.3.0+dfsg-1) ... Setting up libjpeg62-turbo-dev:amd64 (1:2.1.5-3+b1) ... Setting up libfile-find-rule-perl (0.34-3) ... Setting up libxcb-sync1:amd64 (1.17.0-2+b1) ... Setting up libipc-system-simple-perl (1.30-2) ... Setting up libio-tiecombine-perl (1.005-3) ... Setting up libnet-domain-tld-perl (1.75-4) ... Setting up libperlio-utf8-strict-perl (0.010-1+b3) ... Setting up aglfn (1.7+git20191031.4036a9c-2) ... Setting up libxcb-cursor0:amd64 (0.1.5-1) ... Setting up libavahi-common-data:amd64 (0.8-16) ... Setting up libncurses6:amd64 (6.5+20250216-1) ... Setting up libdbus-1-3:amd64 (1.16.0-1) ... Setting up libfftw3-quad3:amd64 (3.3.10-2+b1) ... Setting up libfribidi0:amd64 (1.0.16-1) ... Setting up libopus0:amd64 (1.5.2-2) ... Setting up t1utils (1.41-4) ... Setting up diffstat (1.67-1) ... Setting up libimagequant0:amd64 (2.18.0-1+b2) ... Setting up libproc2-0:amd64 (2:4.0.4-7) ... Setting up comerr-dev:amd64 (2.1-1.47.2-1) ... Setting up libunistring5:amd64 (1.3-1) ... Setting up fonts-dejavu-mono (2.37-8) ... Setting up libssl-dev:amd64 (3.4.1-1) ... Setting up libpng16-16t64:amd64 (1.6.46-4) ... Setting up libimath-3-1-29t64:amd64 (3.1.12-1+b3) ... Setting up libvorbis0a:amd64 (1.3.7-2+b1) ... Setting up libvariable-magic-perl (0.64-1+b1) ... Setting up libio-html-perl (1.004-3) ... Setting up libtext-template-perl (1.61-1) ... Setting up libpod-parser-perl (1.67-1) ... Setting up autopoint (0.23.1-1) ... Setting up libb-hooks-op-check-perl:amd64 (0.22-3+b2) ... Setting up fonts-dejavu-core (2.37-8) ... Setting up liblist-moreutils-xs-perl (0.430-4+b2) ... Setting up pkgconf-bin (1.8.1-4) ... Setting up libsensors5:amd64 (1:3.6.0-10+b1) ... Setting up libk5crypto3:amd64 (1.21.3-4) ... Setting up libqscintilla2-qt6-l10n (2.14.1+dfsg-1) ... Setting up libltdl7:amd64 (2.5.4-3) ... Setting up libfftw3-double3:amd64 (3.3.10-2+b1) ... Setting up libglapi-mesa:amd64 (24.3.4-3) ... Setting up libparams-util-perl (1.102-3+b1) ... Setting up libsasl2-2:amd64 (2.1.28+dfsg1-8+b1) ... Setting up libgfortran5:amd64 (14.2.0-17) ... Setting up libvulkan1:amd64 (1.4.304.0-1) ... Setting up libtime-duration-perl (1.21-2) ... Setting up autoconf (2.72-3) ... Setting up libtext-xslate-perl:amd64 (3.5.9-2+b1) ... Setting up libnghttp3-9:amd64 (1.6.0-2) ... Setting up libsub-exporter-progressive-perl (0.001013-3) ... Setting up libwebp7:amd64 (1.5.0-0.1) ... Setting up libarray-intspan-perl (2.004-2) ... Setting up libcapture-tiny-perl (0.50-1) ... Setting up libnghttp3-dev:amd64 (1.6.0-2) ... Setting up libtimedate-perl (2.3300-2) ... Setting up libexporter-lite-perl (0.09-2) ... Setting up libsub-name-perl:amd64 (0.28-1) ... Setting up libgif7:amd64 (5.2.2-1+b1) ... Setting up zlib1g-dev:amd64 (1:1.3.dfsg+really1.3.1-1+b1) ... Setting up libffi8:amd64 (3.4.7-1) ... Setting up dwz (0.15-1+b1) ... Setting up libdata-validate-domain-perl (0.15-1) ... Setting up libproc-processtable-perl:amd64 (0.636-1+b3) ... Setting up libparse-recdescent-perl (1.967015+dfsg-4) ... Setting up libdav1d7:amd64 (1.5.1-1) ... Setting up libmtdev1t64:amd64 (1.1.7-1) ... Setting up sensible-utils (0.0.24) ... Setting up libduktape207:amd64 (2.7.0-2+b2) ... Setting up libxshmfence1:amd64 (1.3-1+b3) ... Setting up libtiff6:amd64 (4.5.1+git230720-5) ... Setting up libxcb-randr0:amd64 (1.17.0-2+b1) ... Setting up librav1e0.7:amd64 (0.7.1-9+b1) ... Setting up libpath-tiny-perl (0.146-1) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up lzop (1.04-2) ... Setting up libassuan9:amd64 (3.0.1-2) ... Setting up procps (2:4.0.4-7) ... Setting up libjson-perl (4.10000-1) ... Setting up liblog-any-adapter-screen-perl (0.141-1) ... Setting up librole-tiny-perl (2.002004-1) ... Setting up libtasn1-6:amd64 (4.20.0-2) ... Setting up libipc-run3-perl (0.049-1) ... Setting up libmd4c0:amd64 (0.5.2-2+b1) ... Setting up libregexp-wildcards-perl (1.05-3) ... Setting up libmousex-strictconstructor-perl (0.02-3) ... Setting up libfile-sharedir-perl (1.118-3) ... Setting up libsub-uplevel-perl (0.2800-3) ... Setting up libsuitesparseconfig7:amd64 (1:7.8.3+dfsg-3) ... Setting up liblua5.4-0:amd64 (5.4.7-1+b2) ... Setting up libx11-6:amd64 (2:1.8.10-2) ... Setting up libaliased-perl (0.34-3) ... Setting up libthai-data (0.1.29-2) ... Setting up xorg-sgml-doctools (1:1.11-1.1) ... Setting up netbase (6.4) ... Setting up libabsl20230802:amd64 (20230802.1-4) ... Setting up libngtcp2-16:amd64 (1.9.1-1) ... Setting up libstrictures-perl (2.000006-1) ... Setting up libsub-quote-perl (2.006008-1) ... Setting up libdevel-stacktrace-perl (2.0500-1) ... Setting up libclass-xsaccessor-perl (1.19-4+b5) ... Setting up libtext-autoformat-perl (1.750000-2) ... Setting up libkrb5-3:amd64 (1.21.3-4) ... Setting up libglu1-mesa:amd64 (9.0.2-1.1+b3) ... Setting up libflac12t64:amd64 (1.4.3+ds-4) ... Setting up libtoml-tiny-perl (0.19-1) ... Setting up libstemmer0d:amd64 (2.2.0-4+b2) ... Setting up libsort-versions-perl (1.62-3) ... Setting up libssh2-1t64:amd64 (1.11.1-1) ... Setting up libexporter-tiny-perl (1.006002-1) ... Setting up libterm-readkey-perl (2.38-2+b4) ... Setting up libtext-unidecode-perl (1.30-3) ... Setting up libde265-0:amd64 (1.0.15-1+b2) ... Setting up libfont-ttf-perl (1.06-2) ... Setting up libfile-homedir-perl (1.006-2) ... Setting up libsamplerate0:amd64 (0.2.2-4+b2) ... Setting up libtasn1-6-dev:amd64 (4.20.0-2) ... Setting up openssl (3.4.1-1) ... Setting up libwebpmux3:amd64 (1.5.0-0.1) ... Setting up libtext-levenshteinxs-perl (0.03-5+b4) ... Setting up libperlio-gzip-perl (0.20-1+b4) ... Setting up libdrm-common (2.4.123-1) ... Setting up libyuv0:amd64 (0.0.1904.20250204-1) ... Setting up libevdev2:amd64 (1.13.3+dfsg-1) ... Setting up readline-common (8.2-6) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up libhtml-html5-entities-perl (0.004-3) ... Setting up libtext-levenshtein-damerau-perl (0.41-3) ... Setting up libsereal-decoder-perl (5.004+ds-1+b3) ... Setting up libmarkdown2:amd64 (2.2.7-2.1) ... Setting up libldap2:amd64 (2.6.9+dfsg-1) ... Setting up liburi-perl (5.30-1) ... Setting up iso-codes (4.17.0-1) ... Setting up libnet-ipv6addr-perl (1.02-1) ... Setting up libbrotli-dev:amd64 (1.1.0-2+b6) ... Setting up libmp3lame0:amd64 (3.100-6+b3) ... Setting up libblas-dev:amd64 (3.12.1-2) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so to provide /usr/lib/x86_64-linux-gnu/libblas.so (libblas.so-x86_64-linux-gnu) in auto mode Setting up libsz2:amd64 (1.1.3-1+b1) ... Setting up libvorbisenc2:amd64 (1.3.7-2+b1) ... Setting up libdata-validate-ip-perl (0.31-1) ... Setting up libwacom-common (2.14.0-1) ... Setting up libmousex-nativetraits-perl (1.09-3) ... Setting up libemail-address-xs-perl (1.05-1+b4) ... Setting up libxkbcommon0:amd64 (1.7.0-2) ... Setting up libwayland-client0:amd64 (1.23.1-3) ... Setting up libnet-ssleay-perl:amd64 (1.94-3) ... Setting up automake (1:1.17-3) ... update-alternatives: using /usr/bin/automake-1.17 to provide /usr/bin/automake (automake) in auto mode Setting up libgfortran-14-dev:amd64 (14.2.0-17) ... Setting up x11proto-dev (2024.1-1) ... Setting up libfile-stripnondeterminism-perl (1.14.1-2) ... Setting up libxcb-dri3-0:amd64 (1.17.0-2+b1) ... Setting up gnuplot-data (6.0.2+dfsg1-1) ... Setting up libllvm19:amd64 (1:19.1.7-1+b1) ... Setting up libwayland-server0:amd64 (1.23.1-3) ... Setting up libx11-xcb1:amd64 (2:1.8.10-2) ... Setting up libice6:amd64 (2:1.1.1-1) ... Setting up libhttp-date-perl (6.06-1) ... Setting up liblapack3:amd64 (3.12.1-2) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/x86_64-linux-gnu/liblapack.so.3 (liblapack.so.3-x86_64-linux-gnu) in auto mode Setting up libncurses-dev:amd64 (6.5+20250216-1) ... Setting up libfile-basedir-perl (0.09-2) ... Setting up gettext (0.23.1-1) ... Setting up libarpack2t64:amd64 (3.9.1-4) ... Setting up libgmp-dev:amd64 (2:6.3.0+dfsg-3) ... Setting up libamd3:amd64 (1:7.8.3+dfsg-3) ... Setting up libfile-listing-perl (6.16-1) ... Setting up libxau-dev:amd64 (1:1.0.11-1) ... Setting up libxpm4:amd64 (1:3.5.17-1+b3) ... Setting up nettle-dev:amd64 (3.10.1-1) ... Setting up libxrender1:amd64 (1:0.9.10-1.1+b4) ... Setting up libtool (2.5.4-3) ... Setting up libcolamd3:amd64 (1:7.8.3+dfsg-3) ... Setting up libfftw3-bin (3.3.10-2+b1) ... Setting up fontconfig-config (2.15.0-2) ... Setting up liblist-moreutils-perl (0.430-2) ... Setting up libpod-constants-perl (0.19-2) ... Setting up libhash-merge-perl (0.302-1) ... Setting up libsoftware-copyright-perl (0.012-2) ... Setting up libaec-dev:amd64 (1.1.3-1+b1) ... Setting up libavahi-common3:amd64 (0.8-16) ... Setting up libcxsparse4:amd64 (1:7.8.3+dfsg-3) ... Setting up libjpeg-dev:amd64 (1:2.1.5-3+b1) ... Setting up libxext6:amd64 (2:1.3.4-1+b3) ... Setting up libnet-http-perl (6.23-1) ... Setting up libpath-iterator-rule-perl (1.015-2) ... Setting up libtext-markdown-discount-perl (0.18-1) ... Setting up libidn2-0:amd64 (2.3.7-2+b1) ... Setting up libexception-class-perl (1.45-1) ... Setting up libclass-c3-perl (0.35-2) ... Setting up libqrupdate1:amd64 (1.1.5-1) ... Setting up libdevel-callchecker-perl:amd64 (0.009-1+b1) ... Setting up libcamd3:amd64 (1:7.8.3+dfsg-3) ... Setting up gfortran-14-x86-64-linux-gnu (14.2.0-17) ... Setting up pkgconf:amd64 (1.8.1-4) ... Setting up libxxf86vm1:amd64 (1:1.1.4-1+b4) ... Setting up libxs-parse-sublike-perl:amd64 (0.37-1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up patchutils (0.4.2-1) ... Setting up libthai0:amd64 (0.1.29-2+b1) ... Setting up ca-certificates (20241223) ... Updating certificates in /etc/ssl/certs... 152 added, 0 removed; done. Setting up libxdmcp-dev:amd64 (1:1.1.5-1) ... Setting up libglib2.0-0t64:amd64 (2.83.3-2) ... No schema files found: doing nothing. Setting up libdata-validate-uri-perl (0.07-3) ... Setting up libxs-parse-keyword-perl (0.48-2) ... Setting up libtest-exception-perl (0.43-3) ... Setting up libfreetype6:amd64 (2.13.3+dfsg-1) ... Setting up libglpk40:amd64 (5.0-1+b2) ... Setting up libxfixes3:amd64 (1:6.0.0-2+b4) ... Setting up libstring-copyright-perl (0.003014-1) ... Setting up libldap-dev:amd64 (2.6.9+dfsg-1) ... Setting up libopenexr-3-1-30:amd64 (3.1.5-5.1+b4) ... Setting up shared-mime-info (2.4-5+b2) ... Setting up libp11-kit0:amd64 (0.25.5-3) ... Setting up libxinerama1:amd64 (2:1.1.4-3+b3) ... Setting up libxkbcommon-x11-0:amd64 (1.7.0-2) ... Setting up liblapack-dev:amd64 (3.12.1-2) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/lapack/liblapack.so to provide /usr/lib/x86_64-linux-gnu/liblapack.so (liblapack.so-x86_64-linux-gnu) in auto mode Setting up libgssapi-krb5-2:amd64 (1.21.3-4) ... Setting up libdata-optlist-perl (0.114-1) ... Setting up libgav1-1:amd64 (0.19.0-3) ... Setting up ucf (3.0050) ... Setting up libssh2-1-dev:amd64 (1.11.1-1) ... Setting up libidn2-dev:amd64 (2.3.7-2+b1) ... Setting up libccolamd3:amd64 (1:7.8.3+dfsg-3) ... Setting up libreadline8t64:amd64 (8.2-6) ... Setting up dh-strip-nondeterminism (1.14.1-2) ... Setting up libwww-robotrules-perl (6.02-1) ... Setting up libsyntax-keyword-try-perl (0.30-1+b1) ... Setting up libjack-jackd2-0:amd64 (1.9.22~dfsg-4) ... Setting up libdrm2:amd64 (2.4.123-1) ... Setting up groff-base (1.23.0-7) ... Setting up libhtml-parser-perl:amd64 (3.83-1+b2) ... Setting up gpgconf (2.2.46-1+b1) ... Setting up libharfbuzz0b:amd64 (10.2.0-1) ... Setting up libfontconfig1:amd64 (2.15.0-2) ... Setting up libsndfile1:amd64 (1.2.2-2) ... Setting up libmro-compat-perl (0.15-2) ... Setting up gfortran-14 (14.2.0-17) ... Setting up libsm6:amd64 (2:1.2.4-1) ... Setting up libpython3.13-stdlib:amd64 (3.13.2-1) ... Setting up libfftw3-dev:amd64 (3.3.10-2+b1) ... Setting up libavahi-client3:amd64 (0.8-16) ... Setting up libio-socket-ssl-perl (2.089-1) ... Setting up gpg (2.2.46-1+b1) ... Setting up libgudev-1.0-0:amd64 (238-6) ... Setting up libp11-kit-dev:amd64 (0.25.5-3) ... Setting up libsub-exporter-perl (0.990-1) ... Setting up libpython3-stdlib:amd64 (3.13.1-2) ... Setting up libhttp-message-perl (7.00-2) ... Setting up libdrm-amdgpu1:amd64 (2.4.123-1) ... Setting up libhtml-form-perl (6.12-1) ... Setting up libjxl0.10:amd64 (0.10.4-2) ... Setting up libgnutls30t64:amd64 (3.8.9-2) ... Setting up libiterator-perl (0.03+ds1-2) ... Setting up libgnutls-openssl27t64:amd64 (3.8.9-2) ... Setting up libnghttp2-dev:amd64 (1.64.0-1) ... Setting up libportaudio2:amd64 (19.6.0-1.2+b3) ... Setting up libqt6core6t64:amd64 (6.7.2+dfsg-6) ... Setting up libhttp-negotiate-perl (6.01-2) ... Setting up fontconfig (2.15.0-2) ... Regenerating fonts cache... done. Setting up libavif16:amd64 (1.1.1-1) ... Setting up libcarp-assert-more-perl (2.8.0-1) ... Setting up libcholmod5:amd64 (1:7.8.3+dfsg-3) ... Setting up libxft2:amd64 (2.3.6-1+b4) ... Setting up libfeature-compat-try-perl (0.05-1) ... Setting up libxcb1-dev:amd64 (1.17.0-2+b1) ... Setting up libiterator-util-perl (0.02+ds1-2) ... Setting up libhttp-cookies-perl (6.11-1) ... Setting up libspqr4:amd64 (1:7.8.3+dfsg-3) ... Setting up python3.13 (3.13.2-1) ... Setting up libwacom9:amd64 (2.14.0-1) ... Setting up libdrm-radeon1:amd64 (2.4.123-1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libhtml-tree-perl (5.07-3) ... Setting up libxmlb2:amd64 (0.3.21-1) ... Setting up libxcursor1:amd64 (1:1.2.3-1) ... Setting up libparams-classify-perl:amd64 (0.015-2+b4) ... Setting up libpango-1.0-0:amd64 (1.56.1-1) ... Setting up libdrm-intel1:amd64 (2.4.123-1) ... Setting up libcgi-pm-perl (4.67-1) ... Setting up libpsl5t64:amd64 (0.21.2-1.1+b1) ... Setting up libx11-dev:amd64 (2:1.8.10-2) ... Setting up python3 (3.13.1-2) ... Setting up libreadline-dev:amd64 (8.2-6) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up gfortran-x86-64-linux-gnu (4:14.2.0-1) ... Setting up libxml-sax-perl (1.02+dfsg-4) ... update-perl-sax-parsers: Registering Perl SAX parser XML::SAX::PurePerl with priority 10... update-perl-sax-parsers: Updating overall Perl SAX parser modules info file... Creating config file /etc/perl/XML/SAX/ParserDetails.ini with new version Setting up gfortran (4:14.2.0-1) ... update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f77 (f77) in auto mode Setting up libcairo2:amd64 (1.18.2-2) ... Setting up libpsl-dev:amd64 (0.21.2-1.1+b1) ... Setting up libinput-bin (1.27.1-1) ... Setting up libobject-pad-perl (0.819-1) ... Setting up tex-common (6.18) ... update-language: texlive-base not installed and configured, doing nothing! Setting up python3-packaging (24.2-1) ... Setting up libnet-smtp-ssl-perl (1.04-2) ... Setting up libgnutls-dane0t64:amd64 (3.8.9-2) ... Setting up libqt6xml6:amd64 (6.7.2+dfsg-6) ... Setting up libqt6sql6:amd64 (6.7.2+dfsg-6) ... Setting up libmodule-runtime-perl (0.016-2) ... Setting up libmailtools-perl (2.22-1) ... Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Setting up libgssrpc4t64:amd64 (1.21.3-4) ... Setting up libraqm0:amd64 (0.10.2-1) ... Setting up libconfig-model-perl (2.155-1) ... Setting up libxml-libxml-perl (2.0207+dfsg+really+2.0134-5+b2) ... update-perl-sax-parsers: Registering Perl SAX parser XML::LibXML::SAX::Parser with priority 50... update-perl-sax-parsers: Registering Perl SAX parser XML::LibXML::SAX with priority 50... update-perl-sax-parsers: Updating overall Perl SAX parser modules info file... Replacing config file /etc/perl/XML/SAX/ParserDetails.ini with new version Setting up libumfpack6:amd64 (1:7.8.3+dfsg-3) ... Setting up libconst-fast-perl (0.014-2) ... Setting up libdata-section-perl (0.200008-1) ... Setting up libqt6core5compat6:amd64 (6.7.2-3) ... Setting up libpangoft2-1.0-0:amd64 (1.56.1-1) ... Setting up python3-mpmath (1.3.0-1) ... Setting up libdata-dpath-perl (0.60-1) ... Setting up libfltk1.3t64:amd64 (1.3.8-6.1+b1) ... Setting up libcups2t64:amd64 (2.4.10-2+b1) ... Setting up libngtcp2-crypto-gnutls8:amd64 (1.9.1-1) ... Setting up libstring-rewriteprefix-perl (0.009-1) ... Setting up libpangocairo-1.0-0:amd64 (1.56.1-1) ... Setting up libqt6dbus6:amd64 (6.7.2+dfsg-6) ... Setting up libkadm5clnt-mit12:amd64 (1.21.3-4) ... Setting up libgnutls28-dev:amd64 (3.8.9-2) ... Setting up libconfig-model-backend-yaml-perl (2.134-2) ... Setting up libinput10:amd64 (1.27.1-1) ... Setting up python3-sympy (1.13.3-3) ... Setting up mesa-libgallium:amd64 (24.3.4-3) ... Setting up libcurl4t64:amd64 (8.12.1-2) ... Setting up libkdb5-10t64:amd64 (1.21.3-4) ... Setting up libgbm1:amd64 (24.3.4-3) ... Setting up libmodule-implementation-perl (0.09-2) ... Setting up libpackage-stash-perl (0.40-1) ... Setting up libimport-into-perl (1.002005-2) ... Setting up libmoo-perl (2.005005-1) ... Setting up libgl1-mesa-dri:amd64 (24.3.4-3) ... Setting up libcurl3t64-gnutls:amd64 (8.12.1-2) ... Setting up liblist-someutils-perl (0.59-1) ... Setting up debhelper (13.24.1) ... Setting up libappstream5:amd64 (1.0.4-1) ... Setting up libmime-tools-perl (5.515-1) ... Setting up libsoftware-license-perl (0.104006-1) ... Setting up libclass-load-perl (0.25-2) ... Setting up libfeature-compat-class-perl (0.07-1) ... Setting up libegl-mesa0:amd64 (24.3.4-3) ... Setting up appstream (1.0.4-1) ... ? Metadata cache was updated successfully. Setting up librtmp-dev:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Setting up texinfo (7.1.1-1) ... Setting up libhdf5-310:amd64 (1.14.5+repack-3) ... Setting up libkadm5srv-mit12:amd64 (1.21.3-4) ... Setting up libegl1:amd64 (1.7.0-1+b2) ... Setting up libmoox-aliases-perl (0.001006-2) ... Setting up libparams-validate-perl:amd64 (1.31-2+b3) ... Setting up libhdf5-fortran-310:amd64 (1.14.5+repack-3) ... Setting up libb-hooks-endofscope-perl (0.28-1) ... Setting up krb5-multidev:amd64 (1.21.3-4) ... Setting up libhdf5-cpp-310:amd64 (1.14.5+repack-3) ... Setting up libhdf5-hl-310:amd64 (1.14.5+repack-3) ... Setting up libproxy1v5:amd64 (0.5.9-1) ... Setting up libglx-mesa0:amd64 (24.3.4-3) ... Setting up libglx0:amd64 (1.7.0-1+b2) ... Setting up libsoftware-licensemoreutils-perl (1.009-1) ... Setting up libkrb5-dev:amd64 (1.21.3-4) ... Setting up libgl1:amd64 (1.7.0-1+b2) ... Setting up libqt6gui6:amd64 (6.7.2+dfsg-6) ... Setting up libcurl4-openssl-dev:amd64 (8.12.1-2) ... Setting up libnamespace-clean-perl (0.27-2) ... Setting up libstring-license-perl (0.0.11-1) ... Setting up libgetopt-long-descriptive-perl (0.116-2) ... Setting up libqt6network6:amd64 (6.7.2+dfsg-6) ... Setting up libglx-dev:amd64 (1.7.0-1+b2) ... Setting up libgl-dev:amd64 (1.7.0-1+b2) ... Setting up licensecheck (3.3.9-1) ... Setting up libhdf5-hl-cpp-310:amd64 (1.14.5+repack-3) ... Setting up libhdf5-hl-fortran-310:amd64 (1.14.5+repack-3) ... Setting up libapp-cmd-perl (0.337-2) ... Setting up libqt6opengl6:amd64 (6.7.2+dfsg-6) ... Setting up libgl2ps1.4 (1.4.2+dfsg1-2) ... Setting up libqt6widgets6:amd64 (6.7.2+dfsg-6) ... Setting up libfltk-gl1.3t64:amd64 (1.3.8-6.1+b1) ... Setting up libhdf5-dev (1.14.5+repack-3) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/pkgconfig/hdf5-serial.pc to provide /usr/lib/x86_64-linux-gnu/pkgconfig/hdf5.pc (hdf5.pc) in auto mode Setting up cme (1.041-1) ... Setting up libqt6openglwidgets6:amd64 (6.7.2+dfsg-6) ... Setting up libqt6printsupport6:amd64 (6.7.2+dfsg-6) ... Setting up libqt6help6:amd64 (6.7.2-6) ... Setting up libqscintilla2-qt6-15:amd64 (2.14.1+dfsg-1+b4) ... Setting up libheif-plugin-dav1d:amd64 (1.19.5-1+b1) ... Setting up liblwp-protocol-https-perl (6.14-1) ... Setting up libheif-plugin-libde265:amd64 (1.19.5-1+b1) ... Setting up libwww-perl (6.77-1) ... Setting up libheif1:amd64 (1.19.5-1+b1) ... Setting up libparse-debcontrol-perl (2.005-6) ... Setting up libhtml-tokeparser-simple-perl (3.16-4) ... Setting up libwww-mechanize-perl (2.19-1) ... Setting up libgd3:amd64 (2.3.3-12+b1) ... Setting up gnuplot-nox (6.0.2+dfsg1-1) ... update-alternatives: using /usr/bin/gnuplot-nox to provide /usr/bin/gnuplot (gnuplot) in auto mode Setting up libgraphicsmagick-q16-3t64 (1.4+really1.3.45-1+b2) ... Setting up lintian (2.121.1) ... Setting up libgraphicsmagick++-q16-12t64 (1.4+really1.3.45-1+b2) ... Setting up libconfig-model-dpkg-perl (3.010) ... Setting up dh-octave-autopkgtest (1.8.0) ... Setting up octave (9.4.0-1) ... Setting up octave-dev (9.4.0-1) ... Setting up dh-octave (1.8.0) ... Processing triggers for libc-bin (2.40-7) ... Processing triggers for ca-certificates (20241223) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/octave-symbolic-3.2.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../octave-symbolic_3.2.1-3_source.changes dpkg-buildpackage: info: source package octave-symbolic dpkg-buildpackage: info: source version 3.2.1-3 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 debian/rules clean dh clean --buildsystem=octave dh_auto_clean -O--buildsystem=octave dh_octave_clean make[1]: Entering directory '/build/reproducible-path/octave-symbolic-3.2.1' /bin/bash: line 1: git: command not found rm -rf "tmp" rm -f fntests.log make[1]: *** No rule to make target 'distclean'. make[1]: Leaving directory '/build/reproducible-path/octave-symbolic-3.2.1' make[1]: Entering directory '/build/reproducible-path/octave-symbolic-3.2.1' make[1]: *** src: No such file or directory. Stop. make[1]: Leaving directory '/build/reproducible-path/octave-symbolic-3.2.1' dh_autoreconf_clean -O--buildsystem=octave dh_clean -O--buildsystem=octave debian/rules binary dh binary --buildsystem=octave dh_update_autotools_config -O--buildsystem=octave dh_autoreconf -O--buildsystem=octave dh_octave_version -O--buildsystem=octave Checking the Octave version... ok dh_auto_configure -O--buildsystem=octave dh_auto_build -O--buildsystem=octave dh_auto_test -O--buildsystem=octave create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=octave dh_prep -O--buildsystem=octave dh_auto_install --destdir=debian/octave-symbolic/ -O--buildsystem=octave octave --no-gui --no-history --silent --no-init-file --no-window-system /usr/share/dh-octave/install-pkg.m /build/reproducible-path/octave-symbolic-3.2.1/debian/octave-symbolic/usr/share/octave/packages /build/reproducible-path/octave-symbolic-3.2.1/debian/octave-symbolic/usr/lib/x86_64-linux-gnu/octave/packages For information about changes from previous versions of the symbolic package, run 'news symbolic'. dh_octave_check -O--buildsystem=octave Checking package... Run the unit tests... Checking m files ... [inst/pycall_sympy__.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/pycall_sympy__.m ***** test % general test x = 10; y = 6; cmd = '(x,y) = _ins; return (x+y,x-y)'; [a,b] = pycall_sympy__ (cmd, x, y); assert (a == x + y && b == x - y) Symbolic pkg v3.2.1: Python communication link active, SymPy v1.13.3. ***** test % bool assert (pycall_sympy__ ('return True,')) assert (~pycall_sympy__ ('return False,')) ***** test % float assert (abs(pycall_sympy__ ('return 1.0/3,') - 1/3) < 1e-15) ***** test % int r = pycall_sympy__ ('return 123456'); assert (r == 123456) assert (isinteger (r)) ***** test % string x = 'octave'; cmd = 's = _ins[0]; return s.capitalize(),'; y = pycall_sympy__ (cmd, x); assert (strcmp(y, 'Octave')) ***** test % string with escaped newlines, comes back as escaped newlines x = 'a string\nbroke off\nmy guitar\n'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % string with actual newlines, comes back as actual newlines x = sprintf('a string\nbroke off\nmy guitar\n'); y = pycall_sympy__ ('return _ins', x); y2 = strrep(y, sprintf('\n'), sprintf('\r\n')); % windows assert (strcmp(x, y) || strcmp(x, y2)) ***** test % cmd string with newlines, works with cell y = pycall_sympy__ ('return "string\nbroke",'); y2 = sprintf('string\nbroke'); y3 = strrep(y2, sprintf('\n'), sprintf('\r\n')); % windows assert (strcmp(y, y2) || strcmp(y, y3)) ***** test % string with XML escapes x = '<> >< <<>>'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) x = '&'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % strings with double quotes x = 'a\"b\"c'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) x = '\"'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % cmd has double quotes, these must be escaped by user % (of course: she is writing python code) expy = 'a"b"c'; y = pycall_sympy__ ('return "a\"b\"c",'); assert (strcmp(y, expy)) ***** test % strings with quotes x = 'a''b'; % this is a single quote y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % strings with quotes x = '\"a''b\"c''\"d'; y = pycall_sympy__ ('return _ins[0]', x); assert (strcmp(y, x)) ***** test % strings with quotes expy = '"a''b"c''"d'; y = pycall_sympy__ ('s = "\"a''b\"c''\"d"; return s'); assert (strcmp(y, expy)) ***** test % strings with printf escapes x = '% %% %%% %%%% %s %g %%s'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % cmd with printf escapes x = '% %% %%% %%%% %s %g %%s'; y = pycall_sympy__ (['return "' x '",']); assert (strcmp(y, x)) ***** test % cmd w/ backslash and \n must be escaped by user expy = 'a\b\\c\nd\'; y = pycall_sympy__ ('return "a\\b\\\\c\\nd\\",'); assert (strcmp(y, expy)) ***** test % slashes x = '/\\ // \\\\ \\/\\/\\'; z = '/\ // \\ \/\/\'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % slashes z = '/\ // \\ \/\/\'; y = pycall_sympy__ ('return "/\\ // \\\\ \\/\\/\\"'); assert (strcmp(y, z)) ***** test % strings with special chars x = '!@#$^&* you!'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) x = '~-_=+[{]}|;:,.?'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** xtest % string with backtick trouble for system -c (sysoneline) x = '`'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % unicode s1 = '我爱你'; cmd = 'return u"\u6211\u7231\u4f60",'; s2 = pycall_sympy__ (cmd); assert (strcmp (s1, s2)) ***** test % unicode with \x s1 = '我'; cmd = 'return b"\xe6\x88\x91".decode("utf-8")'; s2 = pycall_sympy__ (cmd); assert (strcmp (s1, s2)) ***** test % unicode with \x and some escaped backslashes s1 = '\我\'; cmd = 'return b"\\\xe6\x88\x91\\".decode("utf-8")'; s2 = pycall_sympy__ (cmd); assert (strcmp (s1, s2)) ***** xtest % unicode passthru s = '我爱你'; s2 = pycall_sympy__ ('return _ins', s); assert (strcmp (s, s2)) s = '我爱你<>\&//\#%% %\我'; s2 = pycall_sympy__ ('return _ins', s); assert (strcmp (s, s2)) ***** xtest % unicode w/ slashes, escapes s = '我<>\&//\#%% %\我'; s2 = pycall_sympy__ ('return "我<>\\&//\\#%% %\\我"'); assert (strcmp (s, s2)) ***** test % list, tuple assert (isequal (pycall_sympy__ ('return [1,2,3],'), {1, 2, 3})) assert (isequal (pycall_sympy__ ('return (4,5),'), {4, 5})) assert (isequal (pycall_sympy__ ('return (6,),'), {6,})) assert (isequal (pycall_sympy__ ('return [],'), {})) ***** test % dict cmd = 'd = dict(); d["a"] = 6; d["b"] = 10; return d,'; d = pycall_sympy__ (cmd); assert (d.a == 6 && d.b == 10) ***** test r = pycall_sympy__ ('return 6'); assert (isequal (r, 6)) ***** test r = pycall_sympy__ ('return "Hi"'); assert (strcmp (r, 'Hi')) ***** test % blank lines, lines with spaces a = pycall_sympy__ ({ '', '', ' ', 'return 6', ' ', ''}); assert (isequal (a, 6)) ***** test % blank lines, strange comment lines cmd = {'a = 1', '', '#', '', '# ', ' #', 'a = a + 2', ' #', 'return a'}; a = pycall_sympy__ (cmd); assert (isequal (a, 3)) ***** test % return empty string (was https://bugs.python.org/issue25270) assert (isempty (pycall_sympy__ ('return ""'))) ***** test % return nothing (via an empty list) % note distinct from 'return [],' pycall_sympy__ ('return []') ***** test % return nothing (because no return command) pycall_sympy__ ('dummy = 1') ***** test % return nothing (because no command) pycall_sympy__ ('') ***** test % return nothing (because no command) pycall_sympy__ ({}) ***** error % python exception while passing variables to python % This tests the "INTERNAL_PYTHON_ERROR" path. % FIXME: this is a very specialized test, relies on internal octsympy % implementation details, and may need to be adjusted for changes. disp('') disp('**********************************************************************') disp('') disp(' Some deliberate AttributeError and ValueError may appear next') disp('') disp('v v v v v v v v v v v v v v v v v v v v v v v v') b = sym([], 'S.This_is_supposed_to_make_an_exception', [1 1], 'Test', 'Test', 'Test'); c = b + 1; ********************************************************************** Some deliberate AttributeError and ValueError may appear next v v v v v v v v v v v v v v v v v v v v v v v v Traceback (most recent call last): File "", line 4, in _ins.append(S.This_is_supposed_to_make_an_exception) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/singleton.py", line 118, in __getattr__ raise AttributeError( "Attribute '%s' was not installed on SymPy registry %s" % ( name, self)) AttributeError: Attribute 'This_is_supposed_to_make_an_exception' was not installed on SymPy registry S ***** test % ...and after the above test, the pipe should still work a = pycall_sympy__ ('return _ins[0]*2', 3); assert (isequal (a, 6)) ***** test % This command does not fail with native interface and '@pyobject' s = warning ('off', 'OctSymPy:pythonic_no_convert'); try q = pycall_sympy__ ({'return type(int)'}); catch msg = lasterror.message; assert (~ isempty (regexp (msg, '.*does not know how to.*'))) end warning (s) disp('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^') disp(' End of deliberate errors!') disp(' You should see "46/46" or "Passes 46 out of 46 tests" below') disp('**********************************************************************') % ...and after the above test, the pipe should still work a = pycall_sympy__ ('return _ins[0]*2', 3); assert (isequal (a, 6)) Traceback (most recent call last): File "", line 2, in octoutput_drv(_outs) ~~~~~~~~~~~~~^^^^^^^ File "", line 12, in octoutput_drv octoutput(x, xroot) ~~~~~~~~~^^^^^^^^^^ File "", line 96, in octoutput raise ValueError("octoutput does not know how to export type " + str(type(x))) ValueError: octoutput does not know how to export type ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ End of deliberate errors! You should see "46/46" or "Passes 46 out of 46 tests" below ********************************************************************** ***** test % complex input [A, B] = pycall_sympy__ ('z = 2*_ins[0]; return (z.real,z.imag)', 3+4i); assert (A, 6) assert (B, 8) ***** test % complex output z = pycall_sympy__ ('return 3+2j'); assert (z, 3+2i) ***** error s = char ('abc', 'defgh', '12345'); r = pycall_sympy__ ('return _ins[0]', s); ***** test r = pycall_sympy__ ('return len(_ins[0])', ''); assert (r == 0) ***** test % ensure the 0x0 matrix in octave gets mapped to the empty list in python % @sym/subsasgn currently replies on this behaviour assert (pycall_sympy__ ('return _ins[0] == []', [])); ***** test % ensure the empty string gets mapped to the empty string in python assert (pycall_sympy__ ('return _ins[0] == ""', '')); warning: test: file /build/reproducible-path/octave-symbolic-3.2.1/inst/pycall_sympy__.m leaked file descriptors 46 tests, 46 passed, 0 known failure, 0 skipped [inst/vpasolve.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/vpasolve.m ***** test syms x vpi = vpa(sym(pi), 64); e = tan(x/4) == 1; q = vpasolve(e, x, 3.0); w = q - vpi ; assert (double(w) < 1e-30) ***** test syms x vpi = vpa(sym(pi), 64); e = tan(x/4) == 1; q = vpasolve(e, x); w = q - vpi; assert (double(w) < 1e-30) q = vpasolve(e); w = q - vpi; assert (double(w) < 1e-30) ***** test % very accurate pi syms x e = tan(x/4) == 1; m = digits(256); q = vpasolve(e, x, 3); assert (double(abs(sin(q))) < 1e-256) digits(m); ***** test % very accurate sqrt 2 syms x e = x*x == 2; m = digits(256); q = vpasolve(e, x, 1.5); assert (double(abs(q*q - 2)) < 1e-256) digits(m); ***** test % very accurate sqrt pi % (used to fail https://github.com/sympy/sympy/issues/8564) syms x e = x*x == sym(pi); m = digits(256); q = vpasolve(e, x, 3); assert (double(abs(sin(q*q))) < 1e-256) digits(m); ***** test syms x r = vpasolve(x^2 + 2 == 0, x, 1i); assert (double (imag(r)^2 - 2), 0, 1e-32) assert (double (real(r)^2), 0, 1e-32) r = vpasolve(x^2 + 2 == 0, x, -3i + 5); assert (double (imag(r)^2 - 2), 0, 1e-32) assert (double (real(r)^2), 0, 1e-32) ***** test % system syms x y f = 3*x^2 - 2*y^2 - 1; g = x^2 - 2*x + y^2 + 2*y - 8; r = vpasolve([f; g], [x; y], sym([-1; 1])); assert (isa (r, 'sym')) assert (numel (r) == 2) ***** test % system, double guess syms x y f = 3*x^2 - 2*y^2 - 1; g = x^2 - 2*x + y^2 + 2*y - 8; r = vpasolve([f; g], [x; y], [-1.1 1.2]); ***** test % system, double guess syms x y f = 3*x^2 - 2*y^2 - 1; g = x^2 - 2*x + y^2 + 2*y - 8; r1 = vpasolve([f; g], [x; y], [-1.1]); r2 = vpasolve([f; g], [x; y], [-1.1 -1.1]); assert (isequal (r1, r2)) ***** test % system, more eqns than unknowns syms x y eqns = [x^3 - x - y == 0; y*exp(x) == 16; log(y) + x == 4*log(sym(2))]; r = vpasolve (eqns, [x; y], [1; 1]); A = subs (lhs (eqns), [x; y], r); err = A - [0; 16; 4*log(sym(2))]; assert (double (err), zeros (size (err)), 1e-31) -1514:7: SymPyDeprecationWarning: non-Expr objects in a Matrix is deprecated. Matrix represents a mathematical matrix. To represent a container of non-numeric entities, Use a list of lists, TableForm, NumPy array, or some other data structure instead. See https://docs.sympy.org/latest/explanation/active-deprecations.html#deprecated-non-expr-in-matrix for details. This has been deprecated since SymPy version 1.9. It will be removed in a future version of SymPy. _proc.append(sp.Matrix([[i]])) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/laguerreL.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/laguerreL.m ***** error laguerreL (1) ***** error laguerreL (1, 2, 3) ***** assert (isequal (laguerreL (0, rand), 1)) ***** test x = rand; assert (isequal (laguerreL (1, x), 1 - x)) ***** test x=rand; y1=laguerreL(2, x); p2=[.5 -2 1]; y2=polyval(p2,x); assert(y1 - y2, 0, 10*eps); ***** test x=rand; y1=laguerreL(3, x); p3=[-1/6 9/6 -18/6 1]; y2=polyval(p3,x); assert(y1 - y2, 0, 20*eps); ***** test x=rand; y1=laguerreL(4, x); p4=[1/24 -16/24 72/24 -96/24 1]; y2=polyval(p4,x); assert(y1 - y2, 0, 30*eps) ***** error laguerreL(1.5, 10) ***** error laguerreL([0 1], [1 2 3]) ***** error laguerreL([0 1], [1; 2]) ***** test % numerically stable implementation (in n) L = laguerreL (10, 10); Lex = 1763/63; assert (L, Lex, -eps) L = laguerreL (20, 10); Lex = -177616901779/14849255421; % e.g., laguerreL(sym(20),10) assert (L, Lex, -eps) ***** test % vectorized x L = laguerreL (2, [5 6 7]); Lex = [3.5 7 11.5]; assert (L, Lex, eps) ***** test L = laguerreL (0, [4 5]); assert (L, [1 1], eps) ***** test % vector n L = laguerreL ([0 1 2 3], [4 5 6 9]); assert (L, [1 -4 7 -26], eps) ***** test % vector n, scalar x L = laguerreL ([0 1 2 3], 6); assert (L, [1 -5 7 1], eps) ***** assert (isa (laguerreL (0, single (1)), 'single')) ***** assert (isa (laguerreL (1, single ([1 2])), 'single')) ***** assert (isa (laguerreL ([1 2], single ([1 2])), 'single')) 18 tests, 18 passed, 0 known failure, 0 skipped [inst/assumptions.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/assumptions.m ***** test syms x assert(isempty(assumptions(x))) ***** test x = sym('x', 'positive'); a = assumptions(x); assert(~isempty(strfind(a{1}, 'positive'))) ***** test syms x assert(isempty(assumptions(x))) ***** test clear variables % for matlab test script syms x positive assert(~isempty(assumptions())) clear x assert(isempty(assumptions())) ***** test % make sure we have at least these possible assumptions A = {'real' 'positive' 'negative' 'integer' 'even' 'odd' 'rational'}; B = assumptions('possible'); assert (isempty (setdiff(A, B))) ***** test A = assumptions('possible'); for i = 1:length(A) x = sym('x', A{i}); a = assumptions(x); assert(strcmp(a{1}, ['x: ' A{i}] )) s1 = sympy (x); s2 = ['Symbol(''x'', ' A{i} '=True)']; assert (strcmp (s1, s2)) end ***** test syms x positive syms y real syms z f = x*y*z; a = assumptions(f); assert(length(a) == 2) assert(~isempty(strfind(a{1}, 'positive'))) assert(~isempty(strfind(a{2}, 'real'))) ***** test % dict output syms x positive syms y real syms z f = x*y*z; [v, d] = assumptions(f, 'dict'); assert(length(v) == 2) assert(iscell(v)) assert(isa(v{1}, 'sym')) assert(isa(v{2}, 'sym')) assert(length(d) == 2) assert(iscell(d)) assert(isstruct(d{1})) assert(isstruct(d{2})) ***** test %% assumptions on just the vars in an expression clear variables % for matlab test script syms x y positive f = 2*x; assert(length(assumptions(f))==1) assert(length(assumptions())==2) ***** test %% assumptions in cell/struct clear variables % for matlab test script syms x y z w positive f = {2*x [1 2 y] {1, {z}}}; assert(length(assumptions())==4) assert(length(assumptions(f))==3) clear x y z w assert(length(assumptions())==3) assert(length(assumptions(f))==3) ***** test % multiple assumptions n = sym('n', 'negative', 'even'); assert (logical (n < 0)) assert (~(logical (n > 0))) assert (~(logical (n == -1))) ***** test % multiple assumptions: eqn neither true nor false n = sym('n', 'negative', 'even'); assert (~isequal (n, sym(true)) && ~isequal (n, sym(false))) ***** test %% TODO: rewrite later with https://github.com/gnu-octave/symbolic/issues/622 a = pycall_sympy__ ('return Symbol("a", real=False)'); assert (strcmp (assumptions (a), {'a: ~real'})) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@logical/isAlways.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@logical/isAlways.m ***** error isAlways (true, false) ***** assert(isAlways(true)) ***** assert(~isAlways(false)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/vpa.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/vpa.m ***** test a = vpa(0, 4); b = double(a); assert(b == 0) ***** test a = vpa(pi, 4); b = sin(a); assert(abs(double(b)) < 1e-4) ***** test % vpa from double is ok, doesn't warn (c.f., sym(2.3)) a = vpa(2.3); assert(true) ***** test % vpa from double not more than 16 digits a = vpa(sqrt(pi), 32); b = sin(a^2); assert(abs(double(b)) > 1e-20) assert(abs(double(b)) < 1e-15) ***** test a = vpa(sym(pi), 32); b = sin(a); assert(abs(double(b)) < 1e-30) ***** test a = vpa(sym(pi), 256); b = sin(a); assert(abs(double(b)) < 1e-256) ***** test % pi str a = vpa('pi', 32); b = sin(a); assert(abs(double(b)) < 1e-32) ***** test % pi str a = vpa('pi', 32); b = vpa(sym('pi'), 32); assert (double (a - b) == 0) ***** test spi = sym(pi); a = vpa(spi, 10); b = double(a); assert(~isAlways(spi == a)) ***** test % matrix of sym a = [sym(pi) 0; sym(1)/2 1]; b = [pi 0; 0.5 1]; c = vpa(a, 6); assert(max(max(abs(double(c)-b))) < 1e-6) ***** test % matrix of double b = [pi 0; 0.5 1]; c = vpa(b, 6); assert(max(max(abs(double(c)-b))) < 1e-6) ***** test % integer type a = vpa(int32(6), 64); b = vpa(6, 64); assert (isequal (a, b)) ***** test % matrix of int b = int32([pi 0; 6.25 1]); c = vpa(b, 6); assert (isequal (double(c), [3 0; 6 1])) ***** test % can pass pi directly to vpa a = vpa(sym(pi), 128); b = vpa(pi, 128); assert (isequal (a, b)) ***** test % if sym does sth special for e so should vpa a = vpa(sym(exp(1)), 64); b = vpa(exp(1), 64); assert (isequal (a, b)) ***** test % can pass pi directly to vpa, even in array a = vpa(sym([2 pi]), 128); b = vpa([2 pi], 128); assert (isequal (a, b)) ***** test % can pass i directly to vpa a = vpa(sym(i)); b = vpa(i); ***** test % 'i' and 'I' just make vars a = vpa(sym(1i)); b = vpa('i'); c = vpa('I'); assert (~isequal (a, b)) assert (~isequal (a, c)) ***** test % '1i' and '1j' strings a = vpa(sym(1i)); b = vpa('1i'); c = vpa('1j'); assert (isequal (a, b)) assert (isequal (a, c)) ***** test % Issue #868, precision loss on '0.33j' a = vpa('0.33j', 40); b = vpa('0.33i', 40); assert (double (abs (imag (a)*100/33) - 1) < 1e-39) assert (isequal (a, b)) ***** test % inf/-inf do not become symbol('inf') S = {'oo', '-oo', 'inf', 'Inf', '-inf', '+inf'}; for j = 1:length(S) a = vpa(S{j}); b = vpa(sym(S{j})); assert (isequal (a, b)) end ***** test a = vpa('2.3', 20); s = strtrim(disp(a, 'flat')); assert (strcmp (s, '2.3000000000000000000')) ***** test % these should *not* be the same a = vpa(2.3, 40); b = vpa('2.3', 40); sa = sympy (a); sb = sympy (b); assert (~isequal (a, b)) assert (abs(double(a - b)) > 1e-20) assert (abs(double(a - b)) < 1e-15) assert (~strcmp(sa, sb)) ***** test % these should *not* be the same x = vpa('1/3', 32); y = vpa(sym(1)/3, 32); z = vpa(1/3, 32); assert (isequal (x, y)) assert (~isequal (x, z)) ***** test % big integers a = int64(12345678); a = a*a; b = vpa(a); c = vpa('152415765279684'); assert (isequal (b, c)) ***** test % big integers (workaround poor num2str, works in 4.0?) a = int64(1234567891); a = a*a; b = vpa(a); c = vpa('1524157877488187881'); assert (isequal (b, c)) ***** test % isequal and other comparisons a = vpa ("2/3", 32); b = vpa ("2/3", 64); assert (~ logical (a == b)) assert (~ isequal (a, b)) a = vpa ("1/3", 32); b = vpa ("1/3", 64); assert (~ logical (a == b)) assert (~ isequal (a, b)) a = vpa ("0.1", 32); b = vpa ("0.1", 64); assert (~ logical (a == b)) assert (~ isequal (a, b)) ***** test % isequal with array: Issue #1285 a = vpa ("2/3", 32); b = vpa ("2/3", 64); assert (~ isequal ([a 2*a], [b 2*b])) ***** xtest % non-equality of vpa that "might be" be integers: Issue #1285 a = vpa ("123", 32); b = vpa ("123", 64); assert (~ logical (a == b)) !!!!! known failure assert (!logical (a == b)) failed ***** xtest % non-equality of vpa that "might be" be integers: Issue #1285 if (pycall_sympy__ ('return Version(spver) >= Version("1.12.1")')) a = vpa ("123", 32); b = vpa ("123", 64); assert (~ isequal (a, b)) end ***** warning vpa ('sqrt(2.0)'); ***** warning a = vpa('2**0.5'); b = vpa(sqrt(sym(2))); assert (isequal (a, b)) ***** test a = vpa('2.3e1'); b = vpa(' 2.3e+1 '); assert (isequal (a, b)) a = vpa('21e-1'); b = vpa('2.1'); assert (isequal (a, b)) ***** test % Issue #859, operations on immutable matrices x = vpa (sym ([1 2])); % If vpa no longer makes an ImmutableDenseMatrix, % may need to adjust or remove this test. assert (~ isempty (strfind (sympy (x), 'Immutable'))) y = sin(x); y2 = [sin(vpa(sym(1))) sin(vpa(sym(2)))]; assert (isequal (y, y2)) 34 tests, 33 passed, 1 known failure, 0 skipped [inst/assume.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/assume.m ***** error a = assume('a', 'real') ***** error assume positive integer ***** error assume x y ***** error assume x clear real ***** error assume a>0 ***** error assume 'x/pi' integer ***** test syms x assume x positive a = assumptions(x); assert(strcmp(a, 'x: positive')) assume x even a = assumptions(x); assert(strcmp(a, 'x: even')) ***** test % multiple assumptions syms x assume x positive integer [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) ***** test % does workspace syms x positive x2 = x; f = sin(x); assume x negative a = assumptions(x); assert(strcmp(a, 'x: negative')) a = assumptions(x2); assert(strcmp(a, 'x: negative')) a = assumptions(f); assert(strcmp(a, 'x: negative')) ***** error % does not create new variable x clear x assume x real ***** error % no explicit variable named x clear x f = 2*sym('x'); assume x real ***** test % clear does workspace syms x positive f = 2*x; assume x clear assert (isempty (assumptions (f))); assert (isempty (assumptions ())); ***** test syms x y f = sin (2*x); assume x y real assert (strcmp (assumptions (x), 'x: real')) assert (strcmp (assumptions (y), 'y: real')) assert (strcmp (assumptions (f), 'x: real')) ***** test syms x y f = sin (2*x); assume x y positive even assert (strcmp (assumptions (x), 'x: positive, even') || strcmp (assumptions (x), 'x: even, positive')) assert (strcmp (assumptions (y), 'y: positive, even') || strcmp (assumptions (y), 'y: even, positive')) assert (strcmp (assumptions (f), 'x: positive, even') || strcmp (assumptions (f), 'x: even, positive')) ***** test % works from variable names not symbols syms x y a = [x y]; assume a real assert (strcmp (assumptions (x), 'x: real')) assert (strcmp (assumptions (y), 'y: real')) ***** test % works from variable names not symbols y = sym('x'); f = 2*y; assume y real assert (strcmp (assumptions (f), 'x: real')) ***** test % matrix of symbols syms a b c d A = [a b; c d]; assume A real assert (strcmp (assumptions (a), 'a: real')) assert (strcmp (assumptions (b), 'b: real')) assert (strcmp (assumptions (c), 'c: real')) assert (strcmp (assumptions (d), 'd: real')) ***** test % assume after symfun clear x syms f(x) assume x real assert (~ isempty (assumptions (formula (f)))) assert (~ isempty (assumptions (argnames (f)))) 18 tests, 18 passed, 0 known failure, 0 skipped [inst/syms.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/syms.m ***** test %% assumptions syms x real x2 = sym('x', 'real'); assert (isequal (x, x2)) ***** test % assumptions and clearing them on a symbol syms x real assert (~isempty (assumptions (x))) syms x assert (isempty (assumptions (x))) ***** test % Note SMT would clear syms in existing expressions syms x real f = {x {2*x} cos(x/2)}; assert (~isempty (assumptions (f))) syms x % but we do not: this would have to toggle for pure SMT compat assert (~isempty (assumptions (f))) % assert (isempty (assumptions (f))) ***** error syms x clear ***** error syms x positive y ***** error % this sometimes catches typos or errors in assumption names % (if you need careful checking, use sym not syms) syms x positive evne ***** error syms positive integer ***** test % does not create a variable called positive syms x positive integer assert (logical(exist('x', 'var'))) assert (~logical(exist('positive', 'var'))) ***** test % Issue #885 syms S(x) I(x) O(x) ***** test % Issue #290 syms FF(x) syms ff(x) syms Eq(x) ***** test % Issue #290 syms beta(x) ***** test syms x real syms f(x) assert (~ isempty (assumptions (x))) ***** test syms x real f(x) = symfun(sym('f(x)'), x); assert (~ isempty (assumptions (x))) assert (~ isempty (assumptions (argnames (f)))) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/catalan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/catalan.m ***** error catalan (sym(1)) ***** assert (double (catalan ()) > 0.915965594177) ***** assert (double (catalan ()) < 0.915965594178) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/heaviside.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/heaviside.m ***** assert (heaviside (0) == 0.5) ***** assert (isnan (heaviside (nan))) ***** assert (isequal (heaviside ([-inf -eps 0 eps inf]), [0 0 0.5 1 1])) ***** assert (isequaln (heaviside ([-1 1 nan]), [0 1 nan])) ***** assert (heaviside (0, 1) == 1) ***** error heaviside (1i) ***** assert (isa (heaviside (single (0)), 'single')) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@symfun/symfun.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/symfun.m ***** error symfun (1, sym('x'), 3) ***** error symfun ('f', sym('x')) ***** test syms x y syms f(x) assert(isa(f,'symfun')) clear f f(x,y) = sym('f(x,y)'); assert(isa(f,'symfun')) ***** test % symfuns are syms as well syms x f(x) = 2*x; assert (isa (f, 'symfun')) assert (isa (f, 'sym')) assert (isequal (f(3), 6)) assert (isequal (f(sin(x)), 2*sin(x))) ***** test syms x y f = symfun(sym('f(x)'), {x}); assert(isa(f, 'symfun')) f = symfun(sym('f(x,y)'), [x y]); assert(isa(f, 'symfun')) f = symfun(sym('f(x,y)'), {x y}); assert(isa(f, 'symfun')) ***** test % rhs is not sym syms x f = symfun(8, x); assert (isa (f,'symfun')) assert (isequal (f(10), sym(8))) ***** test % vector symfun syms x y F(x,y) = [1; 2*x; y; y*sin(x)]; assert (isa (F, 'symfun')) assert (isa (F, 'sym')) assert (isequal (F(sym(pi)/2,4) , [sym(1); sym(pi); 4; 4] )) ***** test x = sym('x'); y = sym('y'); f(x) = sym('f(x)'); g(x,y) = sym('g(x,y)'); % make sure these don't fail f(1); g(1,2); g(x,y); diff(g, x); diff(g, y); ***** test % defining 1D symfun in terms of a 2D symfun syms x y t syms 'g(x,y)' f(t) = g(t,t); f(5); assert (length (argnames (f)) == 1) assert (isequal (argnames (f), t)) assert (isequal( formula(diff(f,x)), sym(0))) ***** test % replace g with shorter and specific fcn syms x g(x) g; g(x) = 2*x; assert( isequal (g(5), 10)) ***** test % octave <= 3.8 needs quotes on 2D symfuns, so make sure it works syms x y syms 'f(x)' syms 'g(x,y)' assert (isa (f, 'symfun')) assert (isa (g, 'symfun')) ***** test % Bug #41: Octave <= 3.8 parser fails without quotes around 2D fcn syms x y eval('syms g(x,y)') assert (isa (g, 'symfun')) ***** test % and these days it works without eval trick syms g(x,y) assert (isa (g, 'symfun')) ***** test % syms f(x) without defining x clear x syms f(x) assert(isa(f, 'symfun')) assert(isa(x, 'sym')) ***** test % SMT compat: symfun indep var overwrites existing var t = 6; syms f(t) assert (logical (t ~= 6)) ***** test % SMT compat: symfun indep var overwrites existing var, even if sym syms x t = x; syms f(t) assert (~ logical (t == x)) ***** test syms x y f(x) = x^2; g(x,y) = sym('g(x,y)'); f2 = 2*f; assert( isequal (f2(4), 32)) assert( isa(f2, 'symfun')) assert( isa(2*g, 'symfun')) assert( isa(0*g, 'symfun')) % in SMT, this is the zero symfun ***** test % syms has its own parsing code, check it works syms f(x,y) g = f; syms f(x, y) assert (isequal (f, g)) syms 'f( x, y )' assert (isequal (f, g)) ***** test % syms own parsing code should not reorder the vars syms f(y, x) v = argnames (f); assert (isequal (v(1), y) && isequal (v(2), x)) ***** test % assignment of symfun to symfun, issue #189 syms t x(t) = 2*t; y(t) = x; assert (isa (y, 'symfun')) y = symfun(x, t); assert (isa (y, 'symfun')) % others y = x; assert (isa (y, 'symfun')) y(t) = x(t); assert (isa (y, 'symfun')) ***** test % assignment of generic symfun to symfun syms t x(t) y(t) = x; assert (isa (y, 'symfun')) y = symfun(x, t); assert (isa (y, 'symfun')) ***** error % Issue #444: invalid args syms x f(x, x) = 2*x; ***** error % Issue #444: invalid args syms x y f(x, y, x) = x + y; ***** error % Issue #444: invalid args syms x y f(x, y, x) = x + y; ***** error % Issue #444: expression as arg syms x f(2*x) = 4*x; 25 tests, 25 passed, 0 known failure, 0 skipped [inst/@symfun/isequaln.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/isequaln.m ***** error isequaln (symfun('x + 1', x)) ***** test syms x y f(x) = 2*x; g(x) = 2*x; assert (isequaln (f, g)) ***** test syms x f(x) = 2*x + 1; g(x) = 2*x + 1; h(x) = 2*x + 1; assert (isequaln (f, g, h)) ***** test syms x f(x) = 2*x + 1; g(x) = 2*x + 1; h(x) = 2*x; assert (~ isequaln (f, g, h)) ***** test syms x y f(x) = 2*x; g(x, y) = 2*x; assert (~ isequaln (f, g)) ***** test syms x y f(x) = symfun(nan, x); g(x) = symfun(nan, x); assert (isequaln (f, g)) ***** test syms x y f(x) = symfun(nan, x); g(x, y) = symfun(nan, x); assert (~ isequaln (f, g)) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@symfun/subsref.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/subsref.m ***** test syms x f(x) = x^2; v = f.vars; assert(iscell(v)) assert(length(v)==1) assert(isequal(v{1},x)) ***** test %% pass through to sym properties syms x f(x) = x^2; y = x^2; % not a symfun assert(strcmp(f.flat, y.flat)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/numel.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/numel.m ***** test syms x f(x) = x^2; assert(numel(f)==1) ***** test syms x f(x) = [1 x]; assert(numel(f)==1) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/int.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/int.m ***** test % indefinite integral of symfun gives symfun syms x f(x) = x^2; g = int(f); assert (isa(g, 'symfun')) g = int(f, x); assert (isa(g, 'symfun')) ***** test % indefinite integral of abstract symfun gives symfun syms f(x) g = int(f); assert (isa(g, 'symfun')) g = int(f, x); assert (isa(g, 'symfun')) ***** test % definite integral does not give symfun syms x f(x) = x^2; g = int(f, x, 0, 2); assert (isa(g, 'sym')) assert (~isa(g, 'symfun')) ***** test % ... even if it has a variable in it syms x t f(x) = x; g = int(f, x, 0, t); assert (isa(g, 'sym')) assert (~isa(g, 'symfun')) ***** test % ... even if the input is abstract function syms f(x) g = int(f, x, 0, 2); assert (isa(g, 'sym')) assert (~isa(g, 'symfun')) ***** test % symfun in x, integrated in y gives symfun still in x % (SMT does this too). syms f(x) y g = int(f, y); assert (isa (g, 'symfun')) assert (isequal (argnames (g), x)) ***** test % same as above, but concrete symfun syms x y f(x) = x^2; g = int(f, y); assert (isa (g, 'symfun')) assert (isequal (argnames (g), x)) assert (isequal (formula(g), x^2*y)) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@symfun/private_disp_name.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/private_disp_name.m ***** test syms f(x) s = private_disp_name(f, 'f'); assert (strcmp (s, 'f(x)')) ***** test syms x y g(y, x) = x + y; s = private_disp_name(g, 'g'); assert (strcmp (s, 'g(y, x)')) ***** test syms f(x) assert (isempty (private_disp_name(f, ''))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@symfun/mpower.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mpower.m ***** test syms x f(x) = 2*x; h = f^f; assert( isa(h, 'symfun')) assert (isequal (formula (h), (2*x)^(2*x))) h = f^sym(2); assert( isa(h, 'symfun')) assert (isequal (formula (h), 4*x^2)) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/formula.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/formula.m ***** test % simple syms x f(x) = sin(x); g = formula(f); assert (isequal (g, sin(x))); ***** test % concrete: return is a sym, not a symfun syms x f(x) = sin(x); g = formula(f); assert (~isa(g, 'symfun')); ***** test % abstract: return is a sym, not a symfun syms f(x) g = formula(f); assert (~isa(g, 'symfun')); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@symfun/mldivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mldivide.m ***** test syms x f(x) = x^2; assert( isa(f\f, 'symfun')) assert( isa(f\x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/minus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/minus.m ***** test syms x f(x) = x^2; assert( isa(f - f, 'symfun')) assert( isa(f - x, 'symfun')) ***** test % Octave bug #42735 fixed in 4.4.2 syms x f(x) = x^2; g = x^2; h = x - f; assert (isa (h, 'symfun') && isequal (formula (h), x - g)) h = x + f; assert (isa (h, 'symfun') && isequal (formula (h), x + g)) h = x * f; assert (isa (h, 'symfun') && isequal (formula (h), x * g)) h = x / f; assert (isa (h, 'symfun') && isequal (formula (h), x / g)) h = x ^ f; assert (isa (h, 'symfun') && isequal (formula (h), x ^ g)) h = x .* f; assert (isa (h, 'symfun') && isequal (formula (h), x .* g)) h = x ./ f; assert (isa (h, 'symfun') && isequal (formula (h), x ./ g)) h = x .^ f; assert (isa (h, 'symfun') && isequal (formula (h), x .^ g)) ***** test % different variables syms x y f(x) = 2*x; g(y) = sin(y); h = f - g(x); assert( isa(h, 'symfun')) assert( isequal (argnames (h), argnames (f))) assert (isequal (formula (h), 2*x - sin(x))) % and even if rh-sym has a dummy variable: h = f - g(y); assert( isa(h, 'symfun')) assert( isequal (argnames (h), argnames(f))) assert (isequal (formula (h), 2*x - sin(y))) ***** test % different variables, f has more syms x y f(x,y) = 2*x*y; g(y) = sin(y); h = f - g(y) + g(x); assert( isa(h, 'symfun')) assert( isequal (argnames (h), argnames (f))) assert (isequal (formula (h), 2*x*y - sin(y) + sin(x))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@symfun/rdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/rdivide.m ***** test syms x f(x) = x^2; assert( isa(f./f, 'symfun')) assert( isa(f./[x x^2], 'symfun')) ***** test syms x f(x) = [x 2*x]; h = f./[x 2]; assert( isa(h, 'symfun')) assert (isequal (formula (h), [1 x])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/isequal.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/isequal.m ***** error isequal (symfun('x + 1', x)) ***** test syms x y f(x) = 2*x; g(x) = 2*x; assert (isequal (f, g)) ***** test syms x f(x) = 2*x + 1; g(x) = 2*x + 1; h(x) = 2*x + 1; assert (isequal (f, g, h)) ***** test syms x f(x) = 2*x + 1; g(x) = 2*x + 1; h(x) = 2*x; assert (~ isequal (f, g, h)) ***** test syms x y f(x) = 2*x; g(x, y) = 2*x; assert (~ isequal (f, g)) ***** test syms x y f(x) = symfun(nan, x); g(x) = symfun(nan, x); assert (~ isequal (f, g)) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@symfun/ldivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/ldivide.m ***** test syms x f(x) = x^2; assert( isa(f .\ f, 'symfun')) assert( isa(f .\ x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/diff.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/diff.m ***** test % concrete fcn syms x f(x) = x*x; g(x) = 2*x; assert (logical (diff(f) == g)) assert (isa (diff(f), 'symfun')) ***** test % abstract fcn syms y(x) assert (logical (diff(y) == diff(y(x)))) assert (isa (diff(y), 'symfun')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/mrdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mrdivide.m ***** test syms x f(x) = x^2; assert( isa(f/f, 'symfun')) assert( isa(f/x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/size.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/size.m ***** test syms x f(x) = x; d = size(f); assert (isequal (d, [1 1])) [n, m] = size(f); assert (isequal ([n m], [1 1])) assert (size(f, 1) == 1) assert (size(f, 2) == 1) ***** test syms x f(x) = [1 x]; d = size(f); assert (isequal (d, [1 1])) [n, m] = size(f); assert (isequal ([n m], [1 1])) assert (size(f, 1) == 1) assert (size(f, 2) == 1) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/plus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/plus.m ***** test syms x f(x) = x^2; assert( isa(f + f, 'symfun')) assert( isa(f + x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/uminus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/uminus.m ***** test % Issue #447 syms x f(x) = x^2; assert (isa (-f, 'symfun')) ***** test syms f(x) h = -f; assert (isa (h, 'symfun')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/symvar.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/symvar.m ***** test % basic syms f(t, s) assert (isempty (symvar (f, 0))) assert (isequal (symvar (f, 1), t)) assert (isequal (symvar (f, 2), [t s])) assert (isequal (symvar (f, 3), [t s])) ***** test % note preference for vars of symfun, if n requested syms x f(y) assert (isequal (symvar(f*x, 1), y)) assert (isequal (symvar(f(y)*x, 1), x)) ***** test % symfun, checked smt syms x f(y) a = f*x; b = f(y)*x; assert (isequal (symvar(a), [x y])) assert (isequal (symvar(b), [x y])) ***** test % preference for the explicit variables syms a x f(t, s) h = f*a + x; assert (isequal (symvar (h, 1), t)) assert (isequal (symvar (h, 2), [t s])) assert (isequal (symvar (h, 3), [t s x])) assert (isequal (symvar (h, 4), [t s x a])) assert (isequal (symvar (h, 5), [t s x a])) assert (isequal (symvar (h), [a s t x])) ***** test % symfun dep on some vars only, matches smt w/ n syms x s t f(s) = x; g(s, t) = x*s; assert (isequal (symvar(f, 1), s)) assert (isequal (symvar(f, 2), [s x])) assert (isequal (symvar(g, 1), s)) assert (isequal (symvar(g, 2), [s t])) assert (isequal (symvar(g, 3), [s t x])) ***** test % A documented difference from SMT on symvar(symfun) w/o n syms x s t f(s) = x; g(s, t) = x*s; % SMT would have %assert (isequal (symvar(f), x)) % no s %assert (isequal (symvar(g), [s x])) % no t assert (isequal (symvar(f), [s x])) assert (isequal (symvar(g), [s t x])) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@symfun/argnames.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/argnames.m ***** test % basic test syms f(x) assert (isequal (argnames (f), x)) ***** test % Multiple variables, abstract symfun syms f(t, x, y) assert (isequal (argnames (f), [t x y])) ***** test % Concrete symfun syms x y z t f(t, x, y) = x + y + z; assert (isequal (argnames (f), [t x y])) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@symfun/times.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/times.m ***** test syms x f(x) = x^2; assert( isa(f .* f, 'symfun')) assert( isa(f .* x, 'symfun')) ***** test syms x f(x) = [x 2*x]; h = f.*[x 3]; assert( isa(h, 'symfun')) assert (isequal (formula (h), [x^2 6*x])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/mtimes.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mtimes.m ***** test syms x f(x) = x^2; assert( isa(f * f, 'symfun')) assert( isa(f * x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/power.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/power.m ***** test syms x f(x) = 2*x; h = f.^f; assert( isa(h, 'symfun')) assert (isequal (formula (h), (2*x)^(2*x))) ***** test syms x f(x) = [x 2*x]; h = f.^[x 3]; assert( isa(h, 'symfun')) assert (isequal (formula (h), [x^x 8*x^3])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@double/logint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/logint.m ***** error logint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = logint (x); B = double (logint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = logint (x); B = double (logint (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Li(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 1.3876787420229375511 + 2.5087546988592328752*1i 1.6987684473874802274 + 4.5936366057115204667*1i 30.126141584079629926 3.4936715673748995398 + 5.5260023797127391973*1i 0.90264689772681592152e-5 + 3.1415953634267361942*1i -2.3996350854560916779 - 7.6971739096353664559*1i ]; B = logint (x); assert (A, B, -eps) ***** assert (logint (inf), inf) ***** assert (isnan (logint (-inf))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/pochhammer.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/pochhammer.m ***** error pochhammer (1) ***** error pochhammer (1, 2, 3) ***** error pochhammer ([1 2], [1 2 3]) ***** error pochhammer ([1 2], [1; 2]) ***** test y = sym(11)/10; t = sym(3); x = 1.1; s = 3; A = pochhammer (x, s); B = double (pochhammer (y, t)); assert (A, B, -2*eps); ***** test % maple A = 256.798558090310131720; B = pochhammer (18.1, 1.9); assert (A, B, -20*eps) ***** test % maple, complex inputs> A = 2.67921619474318221972 + 1.96716724764630702653*1i; B = pochhammer (12.1+3.1*i, 0.5+0.2i); assert (A, B, -4*eps); ***** test % maple, matrix inputs A = [5.61467232547723663908 20.6144884613920190965]; B = pochhammer ([0.9 0.8], [3.1 4.2]); assert (A, B, -3*eps); ***** test % x matrix, s scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; t = sym(2); x = double (y); s = 2; A = pochhammer (s, x); B = double (pochhammer (t, y)); assert (A, B, -3*eps); ***** test % s matrix, x scalar t = [1 2 sym(pi); exp(sym(1)) 5 6]; y = sym(2); s = double (t); x = 2; A = pochhammer (s, x); B = double (pochhammer (t, y)); assert (A, B, -5*eps); 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@double/coshint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/coshint.m ***** error coshint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = coshint (x); B = double (coshint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = coshint (x); B = double (coshint (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Chi(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 0.58447599687824767874 + 1.8682915044330306402*1i -0.63131069034703116988 + 1.8986171211850702957*1i 0.13577763724269399110e42 -0.045456433004455372635 + 1.5707963267948966192*1i -8.6330747070747332203 + 3.1315929868531280002*1i 0.74701205140887966531e7 + 0.10381444259644068585e8*1i ]; B = coshint (x); assert (A, B, -eps) ***** assert (coshint (inf), inf) ***** assert (isinf (coshint (-inf))) ***** assert (imag (coshint (-inf)), pi) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@double/sinint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/sinint.m ***** error sinint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = sinint (x); B = double (sinint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = sinint (x); B = double (sinint (y)); assert (A, B, -4*eps); ***** assert (sinint (0), 0) ***** assert (sinint (inf), pi/2) ***** assert (sinint (-inf), -pi/2) ***** assert (sinint (1), 0.9460830703671830149414, -2*eps) ***** assert (sinint (-1), -0.9460830703671830149414, -2*eps) ***** assert (sinint (pi), 1.851937051982466170361, -2*eps) ***** assert (sinint (-pi), -1.851937051982466170361, -2*eps) ***** assert (sinint (300), 1.5708810882137495193, -2*eps) ***** assert (sinint (1e4), 1.5708915453859619157, -2*eps) ***** assert (sinint (20i), 1.2807826332028294459e7*1i, -2*eps) ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Si(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 1.6782404878293681180 + 2.0396845546022061045*1i -18.154174221650281533 + 1.6146414539230479060*1i 1.5622254668890562934 1246.1144901994233444*1i -0.000099999999944461111128 + 0.99999999833338888972e-6*1i -1.5386156269726011209 - 0.053969388020443786229*1i ]; B = sinint (x); assert (A, B, -eps) 14 tests, 14 passed, 0 known failure, 0 skipped [inst/@double/dilog.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/dilog.m ***** test x = 1.1; y = sym(11)/10; A = dilog (x); B = double (dilog (y)); assert (A, B, -4*eps); ***** test y = [2 2 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = dilog (x); B = double (dilog (y)); assert (A, B, -eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(dilog(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ -0.59248494924959145800 - 1.5760154034463234224*1i -1.0549087538833908441 - 3.8759788000863368495*1i -12.192421669033171348 -2.9195729380904939394 - 3.9540920181102973073*1i 1.6459519160623984119 - 0.00032335296277550987686*1i -1.5445800511775466879 + 9.4256034277816069684*1i ]; B = dilog (x); assert (A, B, -eps) ***** xtest % https://github.com/fredrik-johansson/mpmath/issues/473 assert (isinf (dilog (inf))) !!!!! known failure assert (isinf (dilog (inf))) failed ***** assert (isnan (dilog (-inf))) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@double/sinhint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/sinhint.m ***** error sinhint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = sinhint (x); B = double (sinhint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = sinhint (x); B = double (sinhint (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Shi(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 0.45769171128668800567 + 1.8332099215048436239*1i 0.60888490416819746440 + 1.2482232175376056201*1i 0.13577763724269399110e42 1.6583475942188740493*1i -0.00010000000005553888891 + 0.10000000016666111119e-5*1i -0.74701205140887967022e7 - 0.10381447401236722090e8*1i ]; B = sinhint (x); assert (A, B, -eps) ***** assert (sinhint (inf), inf) ***** assert (sinhint (-inf), -inf) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/chebyshevU.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/chebyshevU.m ***** error chebyshevU (1) ***** error chebyshevU (1, 2, 3) ***** error chebyshevU ([1 2], [1 2 3]) ***** error chebyshevU ([1 2], [1; 2]) ***** test y = sym(11)/10; t = sym(2); x = 1.1; s = 2; A = chebyshevU (s, x); B = double (chebyshevU (t, y)); assert (A, B, -2*eps); ***** test % maple A = 1.661891066691338157; B = chebyshevU (18.1, 0.9); assert (A, B, -3*eps) ***** test % maple, complex inputs> % ChebyshevU(12.1+3.1*I, 0.5+0.2*I); A = 1.046959313670290818 - 0.03386773634958834846*1i; B = chebyshevU (12.1+3.1*i, 0.5+0.2i); assert (A, B, -3*eps); ***** test % maple, matrix inputs A = [2.2543638828875776000 -1.3872651600553574400]; B = chebyshevU ([16 17], [0.9 0.8]); assert (A, B, -10*eps); ***** test % x matrix, s scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; t = sym(2); x = double (y); s = 2; A = chebyshevU (s, x); B = double (chebyshevU (t, y)); assert (A, B, -eps); ***** test % s matrix, x scalar t = [1 2 sym(pi); exp(sym(1)) 5 6]; y = sym(2); s = double (t); x = 2; A = chebyshevU (s, x); B = double (chebyshevU (t, y)); assert (A, B, -2*eps); ***** xtest % https://github.com/fredrik-johansson/mpmath/issues/469 assert (chebyshevU (4, inf), inf) assert (chebyshevU (4, -inf), inf) assert (chebyshevU (3, inf), inf) assert (chebyshevU (3, -inf), -inf) !!!!! known failure ASSERT errors for: assert (chebyshevU (4, inf),inf) Location | Observed | Expected | Reason () 5 Inf 'Inf' mismatch 11 tests, 10 passed, 1 known failure, 0 skipped [inst/@double/bernoulli.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/bernoulli.m ***** error bernoulli (1, 2, 3) ***** error bernoulli ([1 2], [1 2 3]) ***** error bernoulli ([1 2], [1; 2]) ***** assert (bernoulli (0), 1) ***** assert (bernoulli (3), 0) ***** test % two different definitions in literature assert (abs (bernoulli (1)), 0.5, -eps) ***** xtest % we want to use B_1 = 1/2, possible with a version-specific filter assert (bernoulli (1), 0.5, -eps) !!!!! known failure ASSERT errors for: assert (bernoulli (1),0.5,-eps) Location | Observed | Expected | Reason () -0.5 0.5 Rel err 2 exceeds tol 2.2204e-16 by 2 ***** test n = sym(88); m = 88; A = bernoulli (m); B = double (bernoulli (n)); assert (A, B, -eps); ***** test m = [0 2; 3 4]; n = sym(m); A = bernoulli (m); B = double (bernoulli (n)); assert (isequal (A, B)); ***** test y = sym(19)/10; n = sym(2); x = 1.9; m = 2; A = bernoulli (m, x); B = double (bernoulli (n, y)); assert (A, B, -eps); ***** test assert (isequal (bernoulli (4, inf), inf)) assert (isequal (bernoulli (4, -inf), inf)) ***** xtest % still broken? assert (isequal (bernoulli (3, inf), inf)) assert (isequal (bernoulli (3, -inf), -inf)) ***** test assert (isnan (bernoulli(3, nan))) assert (isnumeric (bernoulli(3, nan))) ***** test % maple, complex input A = 34.21957245745810513 - 130.0046256649829101i; B = bernoulli(7, 2.123 + 1.234i); assert (A, B, -5*eps); ***** test % x matrix, m scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; n = sym(2); x = double (y); m = 2; A = bernoulli (m, x); B = double (bernoulli (n, y)); assert (A, B, -eps); ***** test % m matrix, x scalar m = [1 2 3; 4 5 6]; n = sym(m); y = sym(21)/10; x = 2.1; A = bernoulli (m, x); B = double (bernoulli (n, y)); assert (A, B, -3*eps); 16 tests, 15 passed, 1 known failure, 0 skipped [inst/@double/fresnelc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/fresnelc.m ***** error fresnelc (1, 2) ***** test x = 1.1; y = sym(11)/10; A = fresnelc (x); B = double (fresnelc (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = fresnelc (x); B = double (fresnelc (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(FresnelC(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 16.087871374125480424 - 36.225687992881650217*1i 0.47688568479874574722e12 + 0.12213736710985573216e13*1i 0.49999989867881789756 0.49989869420551572361*1i -0.000099999999999999997535 + 0.99999999999999987665e-6*1i 0.15391592966931193100e26 - 0.75738824160998910388e24*1i ]; B = fresnelc (x); assert (A, B, -eps) ***** assert (fresnelc (inf), 0.5) ***** assert (fresnelc (-inf), -0.5) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/fresnels.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/fresnels.m ***** error fresnels (1, 2) ***** test x = 1.1; y = sym(11)/10; A = fresnels (x); B = double (fresnels (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = fresnels (x); B = double (fresnels (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(FresnelS(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 36.725464883991438430 + 15.587751104404587334*1i 0.12213736710980573217e13 - 0.47688568479924574726e12*1i 0.49681690114783755327 -0.46816997858488224040*1i -0.52344169596561937423e-12 + 0.15707439669173367248e-13*1i 0.75738824160998910399e24 + 0.15391592966931193100e26*1i ]; B = fresnels (x); assert (A, B, -eps) ***** assert (fresnels (inf), 0.5) ***** assert (fresnels (-inf), -0.5) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/harmonic.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/harmonic.m ***** error harmonic (1, 2) ***** test x = 1.1; y = sym(11)/10; A = harmonic (x); B = double (harmonic (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = harmonic (x); B = double (harmonic (y)); assert (A, B, -4*eps); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@double/chebyshevT.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/chebyshevT.m ***** error chebyshevT (1) ***** error chebyshevT (1, 2, 3) ***** error chebyshevT ([1 2], [1 2 3]) ***** error chebyshevT ([1 2], [1; 2]) ***** test y = sym(11)/10; t = sym(2); x = 1.1; s = 2; A = chebyshevT (s, x); B = double (chebyshevT (t, y)); assert (A, B, -2*eps); ***** test % maple A = -0.304681164165948269030369; B = chebyshevT (18.1, 0.9); assert (A, B, -10*eps) ***** test % maple, complex inputs % ChebyshevT(12.1+3.1*I, 0.5+0.2*I); A = 0.637229289490379273451 - 0.475324703778957991318*1i; B = chebyshevT (12.1+3.1*i, 0.5+0.2i); assert (A, B, -5*eps); ***** test % maple, matrix inputs A = [0.59523064198266880000 0.57727442996887552000]; B = chebyshevT ([16 17], [0.9 0.7]); assert (A, B, -10*eps); ***** test % x matrix, s scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; t = sym(2); x = double (y); s = 2; A = chebyshevT (s, x); B = double (chebyshevT (t, y)); assert (A, B, -eps); ***** test % s matrix, x scalar t = [1 2 sym(pi); exp(sym(1)) 5 6]; y = sym(2); s = double (t); x = 2; A = chebyshevT (s, x); B = double (chebyshevT (t, y)); assert (A, B, -eps); ***** xtest % https://github.com/fredrik-johansson/mpmath/issues/469 assert (chebyshevT (4, inf), inf) assert (chebyshevT (4, -inf), inf) assert (chebyshevT (3, inf), inf) assert (chebyshevT (3, -inf), -inf) !!!!! known failure ASSERT errors for: assert (chebyshevT (4, inf),inf) Location | Observed | Expected | Reason () 1 Inf 'Inf' mismatch 11 tests, 10 passed, 1 known failure, 0 skipped [inst/@double/adjoint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/adjoint.m ***** test M = [1 2; 3 4]; A = [4 -2; -3 1]; assert (isequal (adjoint (M), A)); ***** test assert (isequal (adjoint (42), 1)); 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@double/polylog.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/polylog.m ***** error polylog (1) ***** error polylog (1, 2, 3) ***** error polylog ([1 2], [1 2 3]) ***** error polylog ([1 2], [1; 2]) ***** test y = sym(11)/10; t = sym(2); x = 1.1; s = 2; A = polylog (s, x); B = double (polylog (t, y)); assert (A, B, -eps); ***** test % maple A = 2.3201804233130983964 - 3.4513922952232026614*1i; B = polylog (2, 3); assert (A, B, -eps) ***** test % maple, complex inputs A = -11.381456201167411758 + 6.2696695219721651947*1i; B = polylog (1+2i, 3+4i); assert (A, B, -eps); ***** test % maple, matrix inputs A1 = 0.47961557317612748431 - 0.52788287823025778869*1i; A2 = -0.0049750526563452645369 - 0.024579343612396884851*1i; B = polylog ([-1-2i -3], [30+40i 40i]); assert ([A1 A2], B, -eps); ***** test % x matrix, s scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; t = sym(2); x = double (y); s = 2; A = polylog (s, x); B = double (polylog (t, y)); assert (A, B, -eps); ***** test % s matrix, x scalar t = [1 2 sym(pi); exp(sym(1)) 5 6]; y = sym(2); s = double (t); x = 2; A = polylog (s, x); B = double (polylog (t, y)); assert (A, B, -eps); 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@double/cosint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/cosint.m ***** error cosint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = cosint (x); B = double (cosint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = cosint (x); B = double (cosint (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Ci(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 2.0302963932917216378 - 0.15190715517585688438*1i 1.6153896382910774851 + 19.725754055338264980*1i -0.0051488251426104921444 1246.1144860424544147 + 1.5707963267948966192*1i -8.6330747120742332203 + 3.1315929869531280002*1i 0.069822228467306149311 - 3.1184744625477294643*1i ]; B = cosint (x); assert (A, B, -eps) ***** xtest % is it nan or -inf? SymPy says zoo. assert (isnan (cosint (0))) !!!!! known failure assert (isnan (cosint (0))) failed ***** assert (cosint (inf), 0) ***** assert (cosint (-inf), pi*1i, -eps) ***** assert (cosint (1), 0.33740392290096813466, -eps) ***** assert (cosint (-1), 0.33740392290096813466 + pi*1i, -eps) ***** assert (cosint (pi), 0.073667912046425485978, -5*eps) ***** assert (cosint (-pi), 0.07366791204642548597821 + pi*1i, -5*eps) ***** assert (cosint (300), -3.3321999185921117800e-3, -2*eps) ***** assert (cosint (1e4), -3.0551916724485212665e-5, -2*eps) ***** assert (cosint (1 + 1i), 0.8821721805559363250506+0.2872491335199559395273*1i, eps) ***** assert (cosint (1i), 0.8378669409802082408947 + pi/2*1i, -2*eps) ***** test % compare both sinint and cosint to expint x = pi; C1 = cosint (x); S1 = sinint (x); R = expint (1i*x); C2 = -real (R); S2 = imag (R) + pi/2; assert (C1, C2, -100*eps); assert (S1, S2, -100*eps); 16 tests, 15 passed, 1 known failure, 0 skipped [inst/@double/zeta.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/zeta.m ***** error zeta (1, 2, 3) ***** assert (isnan (zeta (nan))) ***** test x = 1.1; y = sym(11)/10; A = zeta (x); B = double (zeta (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = zeta (x); B = double (zeta (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Zeta(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 0.59816556976238173670 - 0.35185474521784529050*1i 0.21425967567391921717 + 0.52503846985036050707*1i 1.0 1.7564685929749629608 - 0.10151198543617116894*1i -0.49990811617645824900 - 0.91873792757763831501e-6*1i 175.09070083717643866 - 71.512541417467273425*1i ]; B = zeta (x); assert (A, B, -eps) ***** assert (zeta (inf), 1.0) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/euler.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/euler.m ***** error euler (1, 2, 3) ***** error euler ([1 2], [1 2 3]) ***** error euler ([1 2], [1; 2]) ***** assert (isequal (euler (0), 1)) ***** assert (isequal (euler (1), 0)) ***** assert (isequal (euler (10), -50521)) ***** test n = sym(88); m = 88; A = euler (m); B = double (euler (n)); assert (A, B, -eps); ***** test m = [0 1; 2 4]; n = sym(m); A = euler (m); B = double (euler (n)); assert (isequal (A, B)); ***** test y = sym(19)/10; n = sym(2); x = 1.9; m = 2; A = euler (m, x); B = double (euler (n, y)); assert (A, B, -eps); ***** test % correct behaviour at floating point infinity assert (isequal (euler (4, inf), inf)) assert (isequal (euler (4, -inf), inf)) assert (isequal (euler (3, inf), inf)) assert (isequal (euler (3, -inf), -inf)) ***** test assert (isnan (euler(3, nan))) assert (isnumeric (euler(3, nan))) ***** test % maple, complex input A = 113.33970046079423204 - 46.991080726974811540i; B = euler(7, 2.12345 + 1.23i); assert (A, B, -eps); ***** test % maple, complex input, large m, small x A = 0.18034673393294025238e276 + 0.27756266681280689172e276*i; B = euler (200, 0.123+0.234i); assert (A, B, -eps); ***** test % x matrix, m scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; n = sym(2); x = double (y); m = 2; A = euler (m, x); B = double (euler (n, y)); assert (A, B, -eps); ***** test % m matrix, x scalar m = [1 2 3; 4 5 6]; n = sym(m); y = sym(21)/10; x = 2.1; A = euler (m, x); B = double (euler (n, y)); assert (A, B, -3*eps); 15 tests, 15 passed, 0 known failure, 0 skipped [inst/octsympy_tests.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/octsympy_tests.m ***** assert(true) 1 test, 1 passed, 0 known failure, 0 skipped [inst/poly2sym.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/poly2sym.m ***** shared x,y,a,b,c,p syms x y a b c p = x^3 + 2*x^2 + 3*x + 4; ***** assert(isAlways( poly2sym([1 2 3 4]) == p )) ***** assert(isAlways( poly2sym([1 2 3 4],x) == p )) ***** assert(isAlways( poly2sym([1 2 3 4],y) == subs(p,x,y) )) ***** assert(isAlways( poly2sym([1 2 3 4],5) == subs(p,x,5) )) ***** assert(isequal( poly2sym ([1]), 1 )) ***** assert(isequal( poly2sym ([]), 0 )) ***** assert(isAlways( poly2sym(sym([1 2 3 4]),x) == p )) ***** assert(isAlways( poly2sym([a b c],x) == a*x^2 + b*x + c )) ***** assert(isAlways( poly2sym([a b c]) == a*x^2 + b*x + c )) ***** assert(isequal( poly2sym(sym([])), 0 )) ***** assert(isAlways( poly2sym({sym(1) sym(2)}, x) == x + 2 )) ***** assert(isequal( poly2sym ({1}), 1 )) ***** assert(isequal( poly2sym ({}), 0 )) ***** assert(isequal( poly2sym ({1}, x), 1 )) ***** assert(isequal( poly2sym ({}, x), 0 )) ***** assert(isAlways( poly2sym([x x], x) == x^2 + x )) ***** test % mixed cell array with doubles and syms assert (isequal (poly2sym ({2.0 sym(3) int64(4)}), 2*x^2 + 3*x + 4)) ***** test % string for x p = poly2sym ([1 2], 's'); syms s assert (isequal (p, s + 2)) 18 tests, 18 passed, 0 known failure, 0 skipped [inst/finiteset.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/finiteset.m ***** test s1 = finiteset(sym(1), 2, 2); s2 = finiteset(sym(1), 2, 2, 2); assert (isequal (s1, s2)) ***** test s1 = finiteset(sym(0), 1); s2 = finiteset(sym(0), 2, 3); s = finiteset(sym(0), 1, 2, 3); assert (isequal (s1 + s2, s)) ***** test e = finiteset(); s = finiteset(sym(1)); s2 = e + s; assert (isequal (s, s2)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/logint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logint.m ***** error logint (sym(1), 2) ***** xtest assert (isequaln (logint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (logint (sym (nan)), sym (nan))) failed ***** shared x, d d = 2; x = sym('2'); ***** test f1 = logint(x); f2 = 1.045163780117492784845; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = logint(A); f2 = 1.045163780117492784845; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = logint (d); f = logint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/csch.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/csch.m ***** error csch (sym(1), 2) ***** assert (isequaln (csch (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = csch(x); f2 = csch(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = csch(A); f2 = csch(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = csch (d); f = csch (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/besseljn.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besseljn.m ***** test % roundtrip syms x A = double(besseljn(sym(2), sym(9))); q = besseljn(sym(2), x); h = function_handle(q); B = h(9); assert (abs (A - B) <= eps) ***** error jn(sym('x')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/isfinite.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isfinite.m ***** assert (isfinite(sym(1))) ***** assert (isfinite(sym(-10))) ***** assert (~isfinite(sym('oo'))) ***** assert (~isfinite(sym('-oo'))) ***** assert (~isfinite(sym(1)/0)) ***** assert (~isfinite(sym(nan))) ***** assert (isequal (isfinite (sym ([1 inf])), [true false])) ***** test % finite-by-assumption syms x finite assert (isfinite (x)) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/sym2poly.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sym2poly.m ***** shared x,y,a,b,c syms x y a b c ***** assert (isequal (sym2poly (x^2 + 3*x - 4), [1 3 -4])) ***** assert (isequal (sym2poly (x^6 - x^3), [1 0 0 -1 0 0 0])) ***** assert (isequal (sym2poly (x^2 + 3*x - 4, x), [1 3 -4])) ***** assert (norm (sym2poly (pi*x^2 + exp(sym(1))) - [pi 0 exp(1)]) < 10*eps) ***** assert (isa (sym2poly (x^2 + 3*x - 4), 'double')) ***** assert (isa (sym2poly (x^2 + 3*x - 4, x), 'sym')) ***** assert (isequal (sym2poly (x^2+y*x, x), [sym(1) y sym(0)])) ***** assert (isequal (sym2poly (x^2+y*x, y), [x x^2])) ***** assert (isequal (sym2poly (poly2sym ([a b c], x), x), [a b c])) ***** assert (isequal (poly2sym (sym2poly(a*x^2 + c, x), x), a*x^2 + c)) ***** assert (isequal (sym2poly (poly2sym ([1 2 3])), [1 2 3])) ***** error % too many symbols for single-input p = a*x^2 + 2; c = sym2poly (p); ***** assert (isequal (sym2poly (sym(5)), sym(5))) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/potential.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/potential.m ***** error potential (sym(1), 2, 3, 4) ***** shared x,y,z syms x y z ***** test % 1D f = 3*x^2; F = x^3; assert (isequal (potential(f), F)) assert (isequal (potential(f, x), F)) assert (isequal (potential(f, x, 0), F)) assert (isequal (potential(f, x, 2), F - 8)) ***** test F = x*exp(y) + (z-1)^2; f = gradient(F); G = potential(f, [x;y;z], [0;1;1]); assert (isAlways (G == F)) ***** test F = x*exp(y); f = gradient(F); G = potential(f); assert (isAlways (G == F)) ***** test % no potential exists syms x y a = [x; x*y^2]; assert (isnan (potential (a))) ***** shared ***** xtest % fails b/c of sympy #8458 (piecewise expr that should simplify) syms x f = cos(x); assert (isequal (potential(f, x), sin(x))) !!!!! known failure assert (isequal (potential (f, x), sin (x))) failed 6 tests, 5 passed, 1 known failure, 0 skipped [inst/@sym/eq.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eq.m ***** test % simple tests with scalar numbers assert (logical (sym(1) == sym(1))) assert (logical (sym(1) == 1)) assert (~logical (sym(1) == 0)) assert (isequal (sym(1) == sym(1), sym(true))) assert (isequal (sym(1) == 1, sym(true))) assert (isequal (sym(1) == 0, sym(false))) ***** test % Type of the output is sym or logical? % FIXME: in current version, they are sym e = sym(1) == sym(1); %assert (islogical (e)) assert (isa (e, 'sym')) ***** test % things involving a variable are usually not bool but sym. % (SMT behaviour says always, FIXME: currently we differ.) syms x e = x == 0; assert (~islogical (e)) assert (isa (e, 'sym')) ***** test % ... except of course via cancellation syms x e = x - x == 0; assert (logical (e)) assert (isequal (e, sym(true))) ***** test % array == array a = sym([1 2; 3 4]); y = a == a; assert (isequal( size(y), [2 2])) assert (isequal (y, sym([true true; true true]))) assert (all(all(y))) y = a == 1; assert (isequal( size(y), [2 2])) assert (isequal (y, sym([true false; false false]))) assert (any(any(y))) y = a == 42; assert (isequal( size(y), [2 2])) assert (isequal (y, sym([false false; false false]))) ***** test % more array == array D = [0 1; 2 3]; A = [sym(0) 1; sym(2) 3]; DZ = D - D; assert (isequal (logical(A == A), [true true; true true])) assert (isequal (logical(A == D), [true true; true true])) assert (isequal (logical(A - D == DZ), [true true; true true])) assert (all (all ( A == A ))) assert (all (all ( A == D ))) assert (all (all ( A - D == DZ ))) ***** test % logical output, right shape, etc t = true; f = false; a = sym([0 1 2; 3 4 5]); b = sym([0 1 1; 3 5 5]); e = a == b; eexp = sym(logical([1 1 0; 1 0 1])); assert (isequal (e, eexp)) a = sym([0 1 2]); b = sym([0 1 1]); e = a == b; eexp = sym(logical([1 1 0])); assert (isequal (e, eexp)) e = a' == b'; eexp = eexp.'; % is/was bug here with ' assert (isequal (e, eexp)) ***** test % empty matrices compare to correct empty size a = zeros (sym(3), 0); assert (size (a == a), [3, 0]) a = zeros (sym(0), 2); assert (size (a == a), [0, 2]) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/round.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/round.m ***** test d = 3/2; x = sym('3/2'); f1 = round(x); f2 = round(d); assert (isequal (f1, f2)) ***** xtest % ideally rounding direction would match Octave d = 5/2; x = sym('5/2'); f1 = round(x); f2 = round(d); assert (isequal (f1, f2)) !!!!! known failure assert (isequal (f1, f2)) failed ***** test D = [1.1 4.6; -3.4 -8.9]; A = [sym(11)/10 sym(46)/10; sym(-34)/10 sym(-89)/10]; f1 = round(A); f2 = round(D); assert( isequal (f1, f2)) ***** test d = sym(-11)/10; c = -1; assert (isequal (round (d), c)) ***** test d = sym(-19)/10; c = -2; assert (isequal (round (d), c)) ***** test d = 7j/2; x = sym(7j)/2; f1 = round (x); f2 = round (d); assert (isequal (f1, f2)) ***** test d = 5/3 - 4j/7; x = sym(5)/3 - sym(4j)/7; f1 = round (x); f2 = round (d); assert (isequal (f1, f2)) 7 tests, 6 passed, 1 known failure, 0 skipped [inst/@sym/laplace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laplace.m ***** test % basic syms t s u w assert(logical( laplace(cos(3*t)) == s/(s^2+9) )) assert(logical( laplace(t^3) == 6/s^4 )) ***** test % matlab SMT compat syms t s u w z assert(logical( laplace(exp(2*t)) == 1/(s-2) )) assert(logical( laplace(exp(2*s)) == 1/(z-2) )) assert(logical( laplace(exp(2*u),w) == 1/(w-2) )) assert(logical( laplace(exp(2*u),u,w) == 1/(w-2) )) ***** test syms x s t z % matlab SMT prefers t over x assert (isequal (laplace (x*exp (t), z), x/(z - 1))) % as usual, you can just specify: assert (isequal (laplace(x*exp(t), t, z), x/(z - 1))) % SMT result assert (isequal (laplace(x*exp(t), x, z), exp(t)/z^2)) ***** test syms x a s % if no t, use symvar: take x before a assert (isequal (laplace (a*exp (x)), a/(s - 1))) ***** error laplace (sym('t')*sym('t', 'real')) ***** test % constant, issue #250 syms s f = laplace(2, s); assert (isequal (f, 2/s)) ***** test % Dirac delta and Heaviside tests syms t s assert (isequal (laplace(dirac(t-3)), exp(-3*s))) assert (isequal (laplace((t-3)*heaviside(t-3)), exp(-3*s)/s^2)) ***** xtest % Differential operator to algebraic % SymPy cannot evaluate? (Issue #170) syms s f(t) assert(logical( laplace(diff(f(t),t),t,s) == s*laplace(f(t),t,s)-f(0) )) ***** test % https://github.com/gnu-octave/symbolic/issues/1295 % fails on SymPy 1.10.* and 1.11.* if (pycall_sympy__ ('return Version(spver) >= Version("1.12")')) syms t s L = simplify (laplace (3*t*sin (4*t))); assert (isAlways (L == 24*s / (s^2 + 16)^2)) end 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/tanh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tanh.m ***** error tanh (sym(1), 2) ***** assert (isequaln (tanh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = tanh(x); f2 = tanh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = tanh(A); f2 = tanh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = tanh (d); f = tanh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/intersect.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/intersect.m ***** test A = sym([1 2 3]); B = sym([1 2 4]); C = intersect(A, B); D = sym([1 2]); assert (isequal (C, D)) ***** test % one nonsym A = sym([1 2 3]); B = [1 2 4]; C = intersect(A, B); D = sym([1 2]); assert (isequal (C, D)) ***** test % empty A = sym([1 2 3]); C = intersect(A, A); assert (isequal (C, A)) ***** test % empty input A = sym([1 2]); C = intersect(A, []); assert (isempty (C)) ***** test % scalar syms x assert (isequal (intersect([x 1], x), x)) assert (isequal (intersect(x, x), x)) ***** test A = interval(sym(1), 3); B = interval(sym(2), 5); C = intersect(A, B); assert( isequal( C, interval(sym(2), 3))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/ctranspose.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ctranspose.m ***** test x = sym(1); assert (isequal (x', x)) ***** assert (isempty (sym([])')) ***** test % conjugate does nothing to real x syms x real assert (isequal (x', x)) ***** test % complex syms x assert (isequal (x', conj(x))) ***** test % complex array syms x A = [x 2*x]; B = [conj(x); 2*conj(x)]; assert(isequal(A', B)) ***** test A = [1 2; 3 4]; assert(isequal( sym(A)' , sym(A') )) ***** test A = [1 2] + 1i; assert(isequal( sym(A)' , sym(A') )) ***** test % true/false t = sym(true); f = sym(false); assert (isequal ( t', t)) assert (isequal ( f', f)) ***** test % more true/false syms x A = [x true 1i]; B = [conj(x); true; -sym(1i)]; assert (isequal ( A', B)) /usr/lib/python3/dist-packages/sympy/matrices/matrixbase.py:2051: SymPyDeprecationWarning: non-Expr objects in a Matrix is deprecated. Matrix represents a mathematical matrix. To represent a container of non-numeric entities, Use a list of lists, TableForm, NumPy array, or some other data structure instead. See https://docs.sympy.org/latest/explanation/active-deprecations.html#deprecated-non-expr-in-matrix for details. This has been deprecated since SymPy version 1.9. It will be removed in a future version of SymPy. out = self.from_dok(self.rows, self.cols, fdok) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/simplify.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/simplify.m ***** shared x,p,q syms x p = x^2 + x + 1; q = horner (p); ***** assert(~isequal( p - q, 0)) ***** assert(isequal( simplify(p - q), 0)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/acot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acot.m ***** error acot (sym(1), 2) ***** assert (isequaln (acot (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acot(x); f2 = acot(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acot(A); f2 = acot(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acot (d); f = acot (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/symsum.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symsum.m ***** error symsum (sym(1), 2, 3, 4, 5) ***** test % finite sums syms n assert (isequal (symsum(n,n,1,10), 55)) assert(isa(symsum(n,n,1,10), 'sym')) assert (isequal (symsum(n,n,sym(1),sym(10)), 55)) assert (isequal (symsum(n,n,sym(1),sym(10)), 55)) assert (isequal (symsum(1/n,n,1,10), sym(7381)/2520)) ***** test % negative limits syms n assert (isequal (symsum(n,n,-3,3), sym(0))) assert (isequal (symsum(n,n,-3,0), sym(-6))) assert (isequal (symsum(n,n,-3,-1), sym(-6))) ***** test % one input syms n f = symsum (n); g = n^2/2 - n/2; assert (isequal (f, g)) f = symsum (2*n); g = n^2 - n; assert (isequal (f, g)) ***** test % constant input f = symsum (sym(2)); syms x g = 2*x; assert (isequal (f, g)) ***** test % two inputs syms n f = symsum (2*n, n); g = n^2 - n; assert (isequal (f, g)) ***** test % two inputs, second is range syms n f = symsum (n, [1 6]); g = 21; assert (isequal (f, g)) f = symsum (n, [sym(1) 6]); g = 21; assert (isequal (f, g)) f = symsum (2*n, [1 6]); g = 2*21; assert (isequal (f, g)) ***** test % three inputs, last is range syms n f = symsum (2*n, n, [1 4]); g = sym(20); assert (isequal (f, g)) f = symsum (2*n, n, [sym(1) 4]); g = sym(20); assert (isequal (f, g)) f = symsum (2, n, [sym(1) 4]); g = sym(8); assert (isequal (f, g)) ***** test % three inputs, no range syms n f = symsum (2*n, 1, 4); g = sym(20); assert (isequal (f, g)) f = symsum (5, sym(1), 3); g = sym(15); assert (isequal (f, g)) ***** test % ok to use double's for arguments in infinite series syms n oo assert(isequal(symsum(1/n^2,n,1,oo), sym(pi)^2/6)) assert(isequal(symsum(1/n^2,n,1,inf), sym(pi)^2/6)) ***** test % should be oo because 1 is real but seems to be % zoo/oo depending on sympy version syms n oo zoo = sym('zoo'); assert (isequal (symsum(1/n,n,1,oo), oo) || ... isequal (symsum(1/n,n,1,oo), zoo)) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/rewrite.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rewrite.m ***** test syms x assert (isequal (rewrite(x, 'exp'), x)) ***** test % empty e = sym([]); assert (isequal (rewrite(e, 'sin'), e)) ***** test syms x A = [exp(x) exp(2*x)]; B = [sinh(x) + cosh(x) sinh(2*x) + cosh(2*x)]; assert (isequal (rewrite(A, 'sin'), B)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/gt.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gt.m ***** test % simple x = sym(1); y = sym(1); e = x > y; assert (~logical (e)) x = sym(1); y = sym(2); e = x > y; assert (~logical (e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a > b; assert (isa (e, 'sym')) assert (~logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 > x)) assert (~logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x > 10)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/and.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/and.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple assert (isequal (t & f, f)) assert (isequal (t & t, t)) ***** test % mix with nonsym assert (isequal (t & false, f)) assert (isequal (t & true, t)) assert (isequal (t & 0, f)) assert (isequal (t & 1, t)) assert (isa (t & false, 'sym')) assert (isa (t & 1, 'sym')) ***** test % array w = [t t f f]; z = [t f t f]; assert (isequal (w & z, [t f f f])) ***** test % number assert (isequal( sym(1) & t, t)) assert (isequal( sym(0) & t, f)) ***** test % output is sym even for scalar t/f assert (isa (t & f, 'sym')) ***** test % eqns, exclusive syms x e = (x == 3) & (x^2 == 9); assert (isequal (subs(e, x, [-3 0 3]), [f f t])) ***** error and (sym('x'), 2, 3) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/erfi.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfi.m ***** error erfi (sym(1), 2) ***** assert (isequaln (erfi (sym(nan)), sym(nan))) ***** shared x, d d = 0; x = sym('0'); ***** test f1 = erfi(x); f2 = 0; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erfi(A); f2 = 0; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erfi (d); f = erfi (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/gradient.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gradient.m ***** shared x,y,z syms x y z ***** test % 1D f = x^2; assert (isequal (gradient(f), diff(f,x))) assert (isequal (gradient(f,{x}), diff(f,x))) assert (isequal (gradient(f,[x]), diff(f,x))) assert (isequal (gradient(f,x), diff(f,x))) ***** test % const f = sym(1); g = sym(0); assert (isequal (gradient(f), g)) assert (isequal (gradient(f,x), g)) ***** test % double const f = 1; g = sym(0); assert (isequal (gradient(f,x), g)) ***** test % 1D fcn in 2d/3d f = sin(y); assert (isequal (gradient(f), diff(f,y))) assert (isequal (gradient(f, {x,y}), [sym(0); diff(f,y)])) assert (isequal (gradient(f, [x y]), [sym(0); diff(f,y)])) assert (isequal (size (gradient(f, {x,y})), [2 1])) assert (isequal (gradient(f, {x,y,z}), [0; diff(f,y); 0])) assert (isequal (gradient(f, [x y z]), [0; diff(f,y); 0])) assert (isequal (size (gradient(f, {x,y,z})), [3 1])) ***** test % grad is column vector f = sin(y); assert (isequal (size (gradient(f, {x,y})), [2 1])) assert (isequal (size (gradient(f, {x,y,z})), [3 1])) assert (isequal (size (gradient(f, [x y])), [2 1])) assert (isequal (size (gradient(f, [x;y])), [2 1])) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y); g2 = [diff(f,x); diff(f,y)]; g3 = [diff(f,x); diff(f,y); diff(f,z)]; assert (isequal (gradient(f), g2)) assert (isequal (gradient(f, {x,y}), g2)) assert (isequal (gradient(f, {x,y,z}), g3)) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y+sinh(z)); g2 = [diff(f,x); diff(f,y)]; g3 = [diff(f,x); diff(f,y); diff(f,z)]; assert (isequal (gradient(f), g3)) assert (isequal (gradient(f, {x,y}), g2)) assert (isequal (gradient(f, {x,y,z}), g3)) ***** error gradient(sym('x'), 42, 42) ***** error gradient([sym('x') sym('x')]) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/pochhammer.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pochhammer.m ***** error pochhammer (sym(1)) ***** error pochhammer (sym(1), 2, 3) ***** assert (isequal (pochhammer (sym(3), 4), sym(360))) ***** assert (isequal (pochhammer (sym([2 3]), 3), sym([24 60]))) ***** test % round trip syms n z f = pochhammer (z, n); h = function_handle (f, 'vars', [z n]); A = h (1.1, 2.2); B = pochhammer (1.1, 2.2); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/fplot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fplot.m ***** test % simple syms x f = cos (x); fplot (f); No entry for terminal type "unknown"; using dumb terminal settings. warning: using the gnuplot graphics toolkit is discouraged The gnuplot graphics toolkit is not actively maintained and has a number of limitations that are unlikely to be fixed. Communication with gnuplot uses a one-directional pipe and limited information is passed back to the Octave interpreter so most changes made interactively in the plot window will not be reflected in the graphics properties managed by Octave. For example, if the plot window is closed with a mouse click, Octave will not be notified and will not update its internal list of open figure windows. The qt toolkit is recommended instead. ***** test % constant function fplot (sym (10)); No entry for terminal type "unknown"; using dumb terminal settings. line 0: warning: iconv failed to convert degree sign |--------------------------------------------------------------------| 1 +|+ + + **** + + +-+| | + + ** + ** + +-----------------+ | #|############################*########*##########+***?***x) cos (x)+ | #|###########################*##########*########################### | #|##########################*############*########################## | 0.5 +|+########################*##############*########################+-+| #|########################*################*######################## | *|########################*################*######################## *| #|#######################*##################*#######################* | #|######################**##################**######################* | 0 +|*####################*######################*####################*-+| #|*####################*######################*####################* | #|#**#################*########################*#################**# | #|##*#################*########################*#################*## | #|###*###############*##########################*###############*### | -0.5 +|+###*#############*############################*#############*###+-+| #|####**###########*##############################*###########**#### | #|#####*##########*################################*##########*##### | #|######**#######*##################################*#######**###### | #|--------------------------------------------------------------------| -1 +-+####+###*****#####+#############+############+#####*****###+####+-+ -4 -2 0 2 4 warning: fplot: FCN is not a vectorized function which reduces performance warning: called from fplot at line 172 column 7 fplot at line 107 column 5 __test__ at line 4 column 2 test at line 682 column 11 /tmp/tmp.EEULPfFdek at line 606 column 31 ***** test syms x f = cos (x); [xx, yy] = fplot (f); assert (xx(1), -5) assert (xx(end), 5) assert (min (yy), -1, 0.1) assert (max (yy), 1, 0.1) line 0: warning: iconv failed to convert degree sign |--------------------------------------------------------------------| 11 +|+ + + + + + +-+| | + + + + +------------+ | #|#####################################################+***?***x) 10+ | #|################################################################## | #|################################################################## | 10.5 +|+################################################################+-+| #|################################################################## | #|################################################################## | #|################################################################## | #|################################################################## | 10 *|********************************************************************| #|################################################################## | #|################################################################## | #|################################################################## | #|################################################################## | 9.5 +|+################################################################+-+| #|################################################################## | #|################################################################## | #|################################################################## | #|--------------------------------------------------------------------| 9 +-+####+#############+#############+############+#############+####+-+ -4 -2 0 2 4 ***** test syms x f = cos (x); dom = [1 3]; [xx, yy] = fplot (f, dom); assert (xx(1), dom(1)) assert (xx(end), dom(2)) ***** test syms x f = cos (x); dom = [1 3]; fplot (f, dom); assert (get (gca, 'xlim'), dom) ***** test syms x f = exp (x); dom = [1 2 3 4]; fplot (f, dom); assert (get (gca, 'xlim'), dom(1:2)) assert (get (gca, 'ylim'), dom(3:4)) line 0: warning: iconv failed to convert degree sign |--------------------------------------------------------------------| 1 +|+ + + + +-+| +| + + +-----------------++| #|################################################+***?***x) cos (x)+ | #|################################################################## | #|################################################################## | 0.5 *|**###############################################################+-+| #|##**############################################################## | #|####*****######################################################### | #|#########***###################################################### | #|############*****################################################# | 0 +|+################**##############################################+-+| #|###################*****########################################## | #|########################***####################################### | #|###########################**##################################### | #|#############################*****################################ | -0.5 +|+#################################*****##########################+-+| #|#######################################**######################### | #|#########################################*****#################### | #|##############################################********############ | +|--------------------------------------------------------------------| -1 +-+##############+#################+################+##########******* 1 1.5 2 2.5 3 ***** test % bounds as syms syms x f = cos (x); dom = [1 2 3 4]; fplot (f, sym (dom)); assert (get (gca, 'xlim'), dom(1:2)) assert (get (gca, 'ylim'), dom(3:4)) line 0: warning: iconv failed to convert degree sign |---------------------------------------------------------------------| 4 +|+ + *+ + + +-+| +| + * + + +-----------------++| #|#######################*#########################+***?***x) exp (x)+ | #|######################*############################################ | 3.8 +|+#####################*###########################################+-+| #|#####################*############################################# | #|####################*############################################## | #|###################*############################################### | 3.6 +|+#################*###############################################+-+| #|#################*################################################# | #|################*################################################## | #|###############*################################################### | 3.4 +|+############**###################################################+-+| #|############*###################################################### | #|###########*####################################################### | #|##########*######################################################## | 3.2 +|+########*########################################################+-+| #|########*########################################################## | #|######**########################################################### | +|---------------------------------------------------------------------| 3 +-+###*#######+#############+#############+#############+###########+-+ 1 1.2 1.4 1.6 1.8 2 ***** test % bounds as syms, regular handle for function % fails on 6.1.0, maybe earlier too? if (compare_versions (OCTAVE_VERSION (), '6.1.0', '!=')) dom = [1 2]; fplot (@cos, sym (dom)); assert (get (gca, 'xlim'), dom(1:2)) end line 0: warning: iconv failed to convert degree sign |---------------------------------------------------------------------| 4 +|+ + + + + +-+| +| + + + +-----------------++| #|#################################################+***?***x) cos (x)+ | #|################################################################### | 3.8 +|+#################################################################+-+| #|################################################################### | #|################################################################### | #|################################################################### | 3.6 +|+#################################################################+-+| #|################################################################### | #|################################################################### | #|################################################################### | 3.4 +|+#################################################################+-+| #|################################################################### | #|################################################################### | #|################################################################### | 3.2 +|+#################################################################+-+| #|################################################################### | #|################################################################### | +|---------------------------------------------------------------------| 3 +-+###########+#############+#############+#############+###########+-+ 1 1.2 1.4 1.6 1.8 2 ***** error syms x y fplot (x*y) line 0: warning: iconv failed to convert degree sign |--------------------------------------------------------------------| 0.8 +|+ + + + + +-+| +| + + + + +----------++| 0.6 +|+######################################################+***?***cos++| *|*################################################################# | #|#*****############################################################ | 0.4 +|+#####*****######################################################+-+| #|###########**********############################################# | 0.2 +|+####################*****#######################################+-+| #|##########################*****################################### | #|###############################****############################### | 0 +|+##################################*****#########################+-+| #|########################################*****##################### | -0.2 +|+############################################*****###############+-+| #|##################################################*****########### | #|#######################################################**********# | -0.4 +|+################################################################***| #|################################################################## | -0.6 +|+################################################################+-+| #|################################################################## | +|--------------------------------------------------------------------| -0.8 +-+###########+#############+############+#############+###########+-+ 1 1.2 1.4 1.6 1.8 2 ***** test % N parameter does something syms x [xx, yy] = fplot (sin (x), [0 2], 5); N = length (xx); assert (N >= 5) [xx, yy] = fplot (sin (x), [0 2], 1000); N = length (xx); assert (N == 1000) ***** test % tolerance parameter does something syms x [xx, yy] = fplot (sin (exp (x/2)), [0 3], 0.1); N1 = length (xx); [xx, yy] = fplot (sin (exp (x/2)), [0 3], 0.01); N2 = length (xx); assert (N2 > N1) ***** test % fmt parameter does something syms x fplot (sin (x), [0 6], 'rx--', 'linewidth', 5); l = get (gca (), 'children'); assert (get (l, 'color'), [1 0 0]) assert (get (l, 'linewidth'), 5) f = exp (x); dom = [1 2 3 4]; fplot (f, dom); assert (get (gca, 'xlim'), dom(1:2)) assert (get (gca, 'ylim'), dom(3:4)) line 0: warning: iconv failed to convert degree sign |--------------------------------------------------------------------| 1 +|+ + BBBB*BB + + + + +-+| +| B*B BB + + +-----------------++| #|########BB############*BB#######################+***B***x) sin (x)+ | #|######*B#################B######################################## | #|#####B####################B####################################### | 0.5 +|+###B######################*B####################################+-+| #|###B#########################B#################################### | #|#*B###########################B################################### | #|B##############################B################################## | #|################################*B################################ | 0 B|+#################################B##############################+-+| #|###################################B############################## | #|####################################B############################# | #|#####################################B############################ B| #|######################################*B##########################B | -0.5 +|+#######################################B#######################*B-+| #|#########################################B#####################B## | #|##########################################B*B################BB### | #|#############################################B#############*B##### | +|--------------------------------------------------------------------| -1 +-+#########+##########+###########+##########+#####BBBB*B+########+-+ 0 1 2 3 4 5 6 ***** test close all 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/rref.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rref.m ***** test A = sym([1 2; 3 4]); [r, k] = rref(A); assert (isequal (r, eye(2))) assert (isequal (k, [1 2])) ***** assert (isequal (rref(sym([2 1])), [1 sym(1)/2])) ***** assert (isequal (rref(sym([1 2; 2 4])), [1 2; 0 0])) ***** assert (isequal (rref(sym([0 0; 2 4])), [1 2; 0 0])) ***** test A = sym([1 2 3; 2 3 4]); [r, k] = rref(A); assert (isequal (r, [1 0 -1; 0 1 2])) assert (isequal (k, [1 2])); 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/norm.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/norm.m ***** assert (isequal (norm(sym(-6)), 6)) ***** test % 2-norm default A = [1 2; 3 4]; n1 = norm (sym (A)); assert (isequal (n1, sqrt (sqrt (sym(221)) + 15))) assert (norm (A), double (n1), -eps) ***** test syms x y real assert (isequal (norm([x 1; 3 y], 'fro'), sqrt(x^2 + y^2 + 10))) ***** test syms x real assert (isequal (norm([x 1], 2), sqrt(x^2 + 1))) ***** test % test sym vs double ord syms x assert (isequal (norm([x 2 1], 1), abs(x) + 3)) assert (isequal (norm([x 2 1], sym(1)), abs(x) + 3)) assert (isequal (norm([sym(-3) 2 1], inf), sym(3))) assert (isequal (norm([sym(-3) 2 1], sym(inf)), sym(3))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/expand.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expand.m ***** test syms x assert (logical (x^2 + 6*x + 5 == expand ((x+5)*(x+1)))) assert (isequal (x^2 + 6*x + 5, expand ((x+5)*(x+1)))) ***** test % array syms x assert (isequal (expand ([x (x+1)*x]), [x x^2+x])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/lhs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lhs.m ***** test syms x y f = x + 1 == 2*y; assert (isequal (lhs(f), x + 1)) assert (isequal (rhs(f), 2*y)) ***** test syms x y f = x + 1 < 2*y; assert (isequal (lhs(f), x + 1)) assert (isequal (rhs(f), 2*y)) ***** test syms x y f = x + 1 >= 2*y; assert (isequal (lhs(f), x + 1)) assert (isequal (rhs(f), 2*y)) ***** test syms x y A = [x == y 2*x < 2*y; 3*x > 3*y 4*x <= 4*y; 5*x >= 5*y x < 0]; L = [x 2*x; 3*x 4*x; 5*x x]; R = [y 2*y; 3*y 4*y; 5*y 0]; assert (isequal( lhs(A), L)) assert (isequal( rhs(A), R)) ***** error syms x lhs(x) ***** error lhs(sym(true)) ***** error syms x A = [1 + x == 2*x sym(6)]; lhs(A) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/igamma.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/igamma.m ***** test % mostly tested in @sym/gammainc syms x assert (isequal (igamma (2, x), gammainc(x, 2, 'upper'))) ***** test % unregularized B = double (igamma (sym(3), 1)); A = gammainc (1, 3, 'upper')*gamma (3); assert (A, B, -2*eps) ***** test % something like a round trip: no igamma() syms x a f = igamma (a, x); h = function_handle (f, 'vars', [a x]); A = h (1.1, 2.2); B = double (igamma (sym(11)/10, sym(22)/10)); C = gammainc (2.2, 1.1, 'upper')*gamma(1.1); assert (A, B, -10*eps) assert (A, C, -10*eps) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/setdiff.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/setdiff.m ***** test A = sym([1 2 3]); B = sym([1 2 4]); C = setdiff(A, B); D = sym([3]); assert (isequal (C, D)) ***** test % one nonsym A = sym([1 2 3]); B = [1 2 4]; C = setdiff(A, B); D = sym([3]); assert (isequal (C, D)) ***** test % empty A = sym([1 2 3]); C = setdiff(A, A); assert (isempty (C)) ***** test % empty input A = sym([1 2]); C = setdiff(A, []); assert (isequal (C, A) || isequal (C, sym([2 1]))) ***** test % scalar syms x assert (isequal (setdiff([x 1], x), sym(1))) assert (isempty (setdiff(x, x))) ***** test A = interval(sym(1), 3); B = interval(sym(2), 5); C = setdiff(A, B); assert( isequal( C, interval(sym(1), 2, false, true))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/ei.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ei.m ***** test syms x f = ei(sym(0)); assert (double(f) == -inf) ***** test D = [1.895117816355937 4.954234356001890]; A = ei(sym([1 2])); assert (all (abs(double(A) - D) < 1e-15)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/sind.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sind.m ***** error sind (sym(1), 2) ***** assert (isequaln (sind (sym(nan)), sym(nan))) ***** test f1 = sind (sym(1)); f2 = sind (1); assert (double (f1), f2, -eps) ***** test D = [10 30; 110 -45]; A = sym(D); f1 = sind (A); f2 = sind (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/acsc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acsc.m ***** error acsc (sym(1), 2) ***** assert (isequaln (acsc (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acsc(x); f2 = acsc(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acsc(A); f2 = acsc(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acsc (d); f = acsc (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isequaln.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isequaln.m ***** test a = sym([1 2]); b = a; assert (isequaln (a, b)) b(1) = 42; assert (~isequaln (a, b)) ***** test a = sym([1 2; 3 4]); b = a; assert (isequaln (a, b)) b(1) = 42; assert (~isequaln (a, b)) ***** test a = sym([nan; 2]); b = a; assert (isequaln (a, b)) ***** test a = sym([nan 2; 3 4]); b = a; assert (isequaln (a, b)) ***** test % more than two arrays a = sym([nan 2 3]); b = a; c = a; assert (isequaln (a, b, c)) c(1) = 42; assert (~isequaln (a, b, c)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/erfc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfc.m ***** error erfc (sym(1), 2) ***** assert (isequaln (erfc (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = erfc(x); f2 = erfc(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erfc(A); f2 = erfc(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erfc (d); f = erfc (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ceil.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ceil.m ***** error ceil (sym(1), 2) ***** assert (isequaln (ceil (sym(nan)), sym(nan))) ***** shared x, d d = 3/2; x = sym('3/2'); ***** test f1 = ceil(x); f2 = ceil(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = ceil(A); f2 = ceil(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = ceil (d); f = ceil (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/logspace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logspace.m ***** test % default argument for N A = logspace(0, 2); assert (length (A) == 50); ***** test % special case: pi as end pt A = logspace(-sym(3), sym(pi), 3); assert (isequal (A(end), sym(pi))) ***** test A = logspace(-sym(4), 0, 3); B = [sym(1)/10000 sym(1)/100 sym(1)]; assert (isequal (A, B)) ***** test % vpa support, might need recent sympy for sympy issue #10063 n = 32; A = logspace(-vpa(1,n), 0, 3); B = [10^(-vpa(1,n)) 10^(-vpa(sym(1)/2,n)) vpa(1,n)]; assert (all (A == B)) assert (max(abs(double(A) - logspace(-1, 0, 3))) < 1e-15) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/solve.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/solve.m ***** test % Simple, single variable, single solution syms x d = solve(10*x == 50); assert (isequal (d, 5)) ***** test % Single variable, multiple solutions syms x d = solve(x^2 == 4); assert (length(d) == 2); assert (isequal (d, [2; -2]) || isequal (d, [-2; 2])) ***** shared x,y,eq syms x y eq = 10*x == 20*y; ***** test d = solve(eq, x); assert (isequal (d, 2*y)) ***** test d = solve(eq, y); assert (isequal (d, x/2)) ***** test d = solve(eq); assert (isequal (d, 2*y)) ***** shared x,y syms x y ***** test d = solve(2*x - 3*y == 0, x + y == 1); assert (isequal (d.x, sym(3)/5) && isequal(d.y, sym(2)/5)) ***** test d = solve(2*x - 3*y == 0, x + y == 1, x, y); assert (isequal (d.x, sym(3)/5) && isequal(d.y, sym(2)/5)) ***** test % Multiple solutions, multiple variables d = solve(x^2 == 4, x + y == 1); assert (length(d) == 2); % FIXME: SMT has d.x gives vector and d.y giving vector, what is % more intuitive? for i = 1:2 assert (isequal (d{i}.x + d{i}.y, 1)) assert (isequal ((d{i}.x)^2, 4)) end ***** test % No solutions syms x y z d = solve(x == y, z); assert (isempty (d)); ***** test % Multiple outputs with single solution [X, Y] = solve(2*x + y == 5, x + y == 3); assert (isequal (X, 2)) assert (isequal (Y, 1)) ***** test % system: vector of equations, vector of vars [X, Y] = solve([2*x + y == 5, x + y == 3], [x y]); assert (isequal (X, 2)) assert (isequal (Y, 1)) ***** test % system: vector of equations, individual vars [X, Y] = solve([2*x + y == 5, x + y == 3], x, y); assert (isequal (X, 2)) assert (isequal (Y, 1)) ***** test % system: individual equations, vector of vars [X, Y] = solve(2*x + y == 5, x + y == 3, [x y]); assert (isequal (X, 2)) assert (isequal (Y, 1)) ***** test % Multiple outputs with multiple solns [X, Y] = solve(x*x == 4, x == 2*y); assert ((isequal (X, [2; -2]) && isequal (Y, [1; -1])) || ... (isequal (X, [-2; 2]) && isequal (Y, [-1; 1]))) ***** test % Multiple outputs with multiple solns, specify vars [X, Y] = solve(x*x == 4, x == 2*y, x, y); assert ((isequal (X, [2; -2]) && isequal (Y, [1; -1])) || ... (isequal (X, [-2; 2]) && isequal (Y, [-1; 1]))) ***** error % mult outputs not allowed for scalar equation, even with mult soln (?) [s1, s2] = solve(x^2 == 4, x); ***** test % overdetermined X = solve(2*x - 10 == 0, 3*x - 15 == 0, x); assert (isequal (X, sym(5))) ***** test a = solve(2*x >= 10, 10*x <= 50); assert (isequal( a, x==sym(5))) ***** test A = solve([2*x == 4*y, 2 == 3], x); assert (isempty (A)) ***** test % Issue #850 A = solve (sym(pi)^2*x + y == 0); assert (isequal (A, -y/sym(pi)^2)) ***** test % https://github.com/sympy/sympy/issues/14632 A = solve([2*x == 4*y, sym(2) == 2], x); assert (isequal (A, 2*y)) ***** test % https://github.com/sympy/sympy/issues/14632 A = solve([2*x^2 == 32*y^2, sym(2) == 2], x); B = solve([2*x^2 == 32*y^2], x); assert (isequal (A, B) || isequal (A, flip (B))) ***** test A = solve ([x+1 0], x); assert (isequal (A, sym (-1))) ***** test A = solve (x + 1, x); assert (isequal (A, sym (-1))) A = solve (x, x); assert (isequal (A, sym (0))) 24 tests, 24 passed, 0 known failure, 0 skipped [inst/@sym/svd.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/svd.m ***** test % basic A = [1 2; 3 4]; B = sym(A); sd = svd(A); s = svd(B); s2 = double(s); assert (norm(s2 - sd) <= 10*eps) ***** test % scalars syms x syms y positive a = sym(-10); assert (isequal (svd(a), sym(10))) assert (isequal (svd(x), sqrt(x*conj(x)))) assert (isequal (svd(y), y)) ***** test % matrix with symbols syms x positive A = [x+1 0; sym(0) 2*x+1]; s = svd(A); s2 = subs(s, x, 2); assert (isequal (s2, [sym(5); 3])) ***** test % matrix with symbols syms x positive A = [x+1 0; sym(0) 2*x+1]; s = svd(A); s2 = subs(s, x, 2); assert (isequal (s2, [sym(5); 3])) ***** test % matrix with symbols, nonneg sing values syms x real A = [x 0; 0 sym(-5)]; s = svd(A); assert (isequal (s, [abs(x); 5])) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/interval.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/interval.m ***** test a = interval(sym(1), 2); assert (isa (a, 'sym')) ***** test % some set subtraction a = interval(sym(0), 4); b = interval(sym(0), 1); c = interval(sym(1), 4, true); q = a - b; assert (isequal( q, c)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/cumprod.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cumprod.m ***** shared x, y x = sym ('x'); y = sym ('y'); ***** error cumprod (x, 1, 2) ***** assert (isequal (cumprod ([-x; -2*x; -3*x]), [-x; 2*x^2; -6*x^3])) ***** assert (isequal (expand (cumprod ([x + i, x - i])), [x + i, x^2 + 1])) ***** assert (isequal (cumprod ([1, x; y, 2], 1), [1, x; y, 2*x] )) ***** assert (isequal (cumprod ([1, x; y, 2], 2), [1, x; y, 2*y] )) ***** test cumprod ([x, x], [2, 1]); # ensure behaves like builtin cumprod ***** test cumprod ([x, x], [1, -2]); # ensure behaves like builtin cumprod ***** error cumprod (x, []) ***** error cumprod (x, {1}) ***** error cumprod (x, struct('a', 1)) ***** error cumprod (x, x) ***** error cumprod (x, 0) ***** error cumprod (x, -1) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/eval.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eval.m ***** error eval (sym(1), 2) ***** assert (isnumeric (eval (sym(3)))) ***** assert (isnumeric (eval (sin (sym(3))))) ***** test syms x y f = 2*x*y; x = 3; y = 4; g = eval (f); assert (isequal (g, 24)) ***** test syms x y f = 2*x*y; clear y x = 3; g = eval (f); assert (isequal (g, 6*sym('y'))) ***** test % do not convert inputs to sym, for SMT compat nearpi = pi + 1e-14; % sym could make this pi x = sym('x'); f = 2*x; x = nearpi; d = eval (f); assert (abs (d - 2*pi) > 1e-15) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/laguerreL.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laguerreL.m ***** shared x syms x ***** assert (isequal (laguerreL(0, x), sym(1))) ***** assert (isequal (laguerreL(1, x), 1-x)) ***** assert (isequal (laguerreL(2, x), x^2/2 - 2*x + 1)) ***** error laguerreL(x) ***** error laguerreL(1, 2, x, 3) ***** shared ***** test syms x assert (isequal (laguerreL (-3, x), exp(x)*(x^2/2 + 2*x + 1))) ***** test syms x n L = laguerreL([2 n], x); expected = [laguerreL(2, x) laguerreL(n, x)]; assert (isequal (L, expected)) ***** test syms x y L = laguerreL([1; 2], [x; y]); expected = [laguerreL(1, x); laguerreL(2, y)]; assert (isequal (L, expected)) ***** test syms x n assert (isequal (laguerreL(n, 0, x), laguerreL(n, x))) ***** shared x, y, n syms x y n ***** assert (isequal (laguerreL([1 n], 0, x), laguerreL([1 n], x))) ***** test L = laguerreL([1; n], [pi; 0], [x; y]); expected = [laguerreL(1, pi, x); laguerreL(n, 0, y)]; assert (isequal (L, expected)) ***** test L = laguerreL([1 n], [pi 0], x); expected = [laguerreL(1, pi, x) laguerreL(n, 0, x)]; assert (isequal (L, expected)) ***** test L = laguerreL([1 n], pi, [x y]); expected = [laguerreL(1, pi, x) laguerreL(n, pi, y)]; assert (isequal (L, expected)) ***** test L = laguerreL(1, [pi 0], [x y]); expected = [laguerreL(1, pi, x) laguerreL(1, 0, y)]; assert (isequal (L, expected)) ***** test L = laguerreL([1 n], pi, x); expected = [laguerreL(1, pi, x) laguerreL(n, pi, x)]; assert (isequal (L, expected)) ***** test L = laguerreL(1, [pi 0], x); expected = [laguerreL(1, pi, x) laguerreL(1, 0, x)]; assert (isequal (L, expected)) ***** test L = laguerreL(1, pi, [x y]); expected = [laguerreL(1, pi, x) laguerreL(1, pi, y)]; assert (isequal (L, expected)) ***** test % round trip f = laguerreL (n, x); h = function_handle (f); A = h (1, 3.2); B = laguerreL (1, 3.2); assert (A, B) A = h ([1 2], [3.3 4.4]); B = laguerreL ([1 2], [3.3 4.4]); assert (A, B) ***** error % round trip f = laguerreL (n, y, x); h = function_handle (f); 19 tests, 19 passed, 0 known failure, 0 skipped [inst/@sym/coshint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coshint.m ***** error coshint (sym(1), 2) ***** xtest assert (isequaln (coshint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (coshint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = coshint(x); f2 = 0.8378669409802082408947; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = coshint(A); f2 = 0.8378669409802082408947; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = coshint (d); f = coshint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/transpose.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/transpose.m ***** test x = sym(1); assert (isequal (x.', x)) ***** assert (isempty (sym([]).')) ***** test syms x; assert (isequal (x.', x)) ***** test A = [1 2; 3 4]; assert(isequal( sym(A).' , sym(A.') )) ***** test A = [1 2] + 1i; assert(isequal( sym(A).' , sym(A.') )) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/subs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subs.m ***** error subs (sym(1), 2, 3, 4) ***** shared x,y,t,f syms x y t f = x*y; ***** test assert( isequal( subs(f, x, y), y^2 )) assert( isequal( subs(f, y, sin(x)), x*sin(x) )) assert( isequal( subs(f, x, 16), 16*y )) ***** test % multiple subs w/ cells assert( isequal( subs(f, {x}, {t}), y*t )) assert( isequal( subs(f, {x y}, {t t}), t*t )) assert( isequal( subs(f, {x y}, {t 16}), 16*t )) assert( isequal( subs(f, {x y}, {16 t}), 16*t )) assert( isequal( subs(f, {x y}, {2 16}), 32 )) ***** test % multiple subs w/ vectors assert( isequal( subs(f, [x y], [t t]), t*t )) assert( isequal( subs(f, [x y], [t 16]), 16*t )) assert( isequal( subs(f, [x y], [2 16]), 32 )) ***** test % anything you can think of assert( isequal( subs(f, [x y], {t t}), t*t )) assert( isequal( subs(f, {x y}, [t t]), t*t )) assert( isequal( subs(f, {x; y}, [t; t]), t*t )) ***** test % sub in doubles gives sym (matches SMT 2013b) % FIXME: but see % http://www.mathworks.co.uk/help/symbolic/gradient.html assert( isequal( subs(f, {x y}, {2 pi}), 2*sym(pi) )) assert( ~isa(subs(f, {x y}, {2 pi}), 'double')) assert( isa(subs(f, {x y}, {2 pi}), 'sym')) assert( isa(subs(f, {x y}, {2 sym(pi)}), 'sym')) assert( isa(subs(f, {x y}, {sym(2) sym(pi)}), 'sym')) ***** shared x,y,t,f,F syms x y t f = sin(x)*y; F = [f; 2*f]; ***** test % need the simultaneous=True flag in SymPy (matches SMT 2013b) assert( isequal( subs(f, [x t], [t 6]), y*sin(t) )) assert( isequal( subs(F, [x t], [t 6]), [y*sin(t); 2*y*sin(t)] )) ***** test % swap x and y (also needs simultaneous=True assert( isequal( subs(f, [x y], [y x]), x*sin(y) )) ***** test % but of course both x and y to t still works assert( isequal( subs(f, [x y], [t t]), t*sin(t) )) ***** shared ***** test % Issue #10, subbing matrices in for scalars syms y a = sym([1 2; 3 4]); f = sin(y); g = subs(f, y, a); assert (isequal (g, sin(a))) ***** test % Issue #10, subbing matrices in for scalars syms y a = sym([1 2]); g = subs(sin(y), {y}, {a}); assert (isequal (g, sin(a))) ***** test % Issue #10, subbing matrices in for scalars syms y a = sym([1; 2]); g = subs(sin(y), {y}, a); assert (isequal (g, sin(a))) ***** test % Issue #10, subbing matrices in for scalars syms y a = [10 20 30]; f = 2*y; g = subs(f, y, a); assert (isequal (g, 2*a)) assert (isa (g, 'sym')) ***** test % Issue #10, sub matrices in for two scalars syms x y a = [10 20 30]; f = x^2*y; g = subs(f, {x y}, {a a+1}); h = a.^2.*(a+1); assert (isequal (g, h)) ***** test % Issue #10, sub matrices in for two scalars syms x y z a = [10 20 30]; f = x^2*y; g = subs(f, {x y}, {a z}); h = a.^2*z; assert (isequal (g, h)) g = subs(f, {x y}, {a 6}); h = a.^2*6; assert (isequal (g, h)) ***** error syms x y a = [10 20 30]; f = x^2*y; g = subs(f, {x y}, {[10 20 30] [10 20]}); ***** test % two inputs syms x y assert (isequal (subs (2*x, 6), sym(12))) assert (isequal (subs (2*x*y^2, 6), 12*y^2)) assert (isequal (subs (2*y, 6), sym(12))) assert (isequal (subs (sym(2), 6), sym(2))) ***** test % only two inputs, vector syms x assert (isequal (subs (2*x, [3 5]), sym([6 10]))) ***** test % SMT compat, subbing in vec/mat for nonexist x syms x y z % you might think this would be y: assert (~ isequal (subs (y, x, [1 2]), y)) % but it gives two y's: assert (isequal (subs (y, x, [1 2]), [y y])) assert (isequal (subs (sym(42), [3 5]), sym([42 42]))) assert (isequal (subs (sym(42), x, []), sym([]))) assert (isequal (subs (y, {x y}, {[1 2; 3 4], 6}), sym([6 6; 6 6]))) assert (isequal (subs (y, {x z}, {[1 2; 3 4], 6}), [y y; y y])) ***** test syms x y assert (isequal (subs (sym(42), x, y), sym(42))) assert (isequal (subs (sym(42), y), sym(42))) assert (isequal (subs (sym(42)), sym(42))) ***** test % empty lists assert (isequal (subs (sym(42), {}, {}), sym(42))) assert (isequal (subs (42, sym([]), sym([])), sym(42))) ***** test syms x y f = x*y; x = 6; y = 7; g = subs (f); assert (isequal (g, sym (42))) assert (isa (g, 'sym')) ***** test syms x y f = x*y; x = 6; g = subs (f); assert (isequal (g, 6*y)) ***** test syms x y f = x*y; xsave = x; x = 6; g = subs (f); assert (isequal (g, 6*y)) assert (isequal (f, xsave*y)) ***** test syms a x y f = a*x*y; a = 6; clear x g = subs (f); syms x assert (isequal (g, 6*x*y)) 25 tests, 25 passed, 0 known failure, 0 skipped [inst/@sym/subsindex.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsindex.m ***** test i = sym(1); a = 7; assert(a(i)==a); i = sym(2); a = 2:2:10; assert(a(i)==4); ***** test i = sym([1 3 5]); a = 1:10; assert( isequal (a(i), [1 3 5])) ***** test i = sym([1 3 5]); a = sym(1:10); assert( isequal (a(i), sym([1 3 5]))); ***** test % should be an error if it doesn't convert to double syms x a = 1:10; try a(x) waserr = false; catch waserr = true; end assert(waserr) ***** test syms x assert (isequal (x(sym (true)), x)) assert (isequal (x(sym (false)), sym ([]))) ***** test x = 6; assert (isequal (x(sym (true)), 6)) assert (isequal (x(sym (false)), [])) ***** test a = sym([10 12 14]); assert (isequal (a(sym ([true false true])), a([1 3]))) assert (isequal (a(sym ([false false false])), sym (ones(1,0)))) ***** test a = [10 11; 12 13]; p = [true false; true true]; assert (isequal (a(sym (p)), a(p))) p = [false false false]; assert (isequal (a(sym (p)), a(p))) ***** error a = [10 12]; I = [sym(true) 2]; b = a(I); 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/log2.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log2.m ***** assert (isequal (log2 (sym (1024)), sym (10))) ***** assert (isequal (log2 (sym ([2 16; 32 1])), sym ([1 4; 5 0]))) ***** test % round-trip syms x f = log2 (x); h = function_handle (f); A = h (1.1); B = log2 (1.1); assert (A, B, -5*eps) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/ismatrix.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ismatrix.m ***** assert(ismatrix(sym('x'))) ***** assert(ismatrix(sym([1 2 3]))) ***** assert(ismatrix(sym([1; 2]))) ***** assert(ismatrix(sym([1 2; 3 4]))) ***** assert(ismatrix(sym([]))) ***** assert(ismatrix(sym(ones(1,0)))) ***** assert(ismatrix(sym(ones(0,3)))) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/invhilb.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/invhilb.m ***** test A = invhilb(sym(3)); B = sym([9 -36 30;-36 192 -180;30 -180 180]); assert( isequal( A, B)) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/sinint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinint.m ***** error sinint (sym(1), 2) ***** xtest assert (isequaln (sinint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (sinint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sinint(x); f2 = 0.9460830703671830149414; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sinint(A); f2 = 0.9460830703671830149414; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sinint (d); f = sinint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) ***** test % rewrite syms x y1 = sinint (x); y2 = rewrite (y1, 'Integral'); d1 = diff (y1, x); d2 = diff (y2, x); v1 = double (subs (d1, x, 2)); v2 = double (subs (d2, x, 2)); assert (v1, v2, -eps) 6 tests, 5 passed, 1 known failure, 0 skipped [inst/@sym/eig.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eig.m ***** test % basic A = [1 2; 3 4]; B = sym(A); sd = eig(A); s = eig(B); s2 = double(s); assert (norm(sort(s2) - sort(sd)) <= 10*eps) ***** test % scalars syms x a = sym(-10); assert (isequal (eig(a), a)) assert (isequal (eig(x), x)) ***** test % diag, multiplicity A = diag([6 6 7]); B = sym(A); e = eig(B); assert (isequal (size (e), [3 1])) assert (sum(logical(e == 6)) == 2) assert (sum(logical(e == 7)) == 1) ***** test % matrix with symbols syms x y positive A = [x+9 y; sym(0) 6]; s = eig(A); s = simplify(s); assert (isequal (s, [x+9; 6]) || isequal (s, [6; x+9])) ***** test % eigenvects e = sym([5 5 5 6 7]); A = diag(e); [V, D] = eig(A); assert (isequal (diag(D), e.')) assert (isequal (V, diag(sym([1 1 1 1 1])))) ***** test % alg/geom mult, eigenvects e = sym([5 5 5 6]); A = diag(e); A(1,2) = 1; [V, D] = eig(A); assert (isequal (diag(D), e.')) assert (sum(logical(V(1,:) ~= 0)) == 2) assert (sum(logical(V(2,:) ~= 0)) == 0) assert (sum(logical(V(3,:) ~= 0)) == 1) assert (sum(logical(V(4,:) ~= 0)) == 1) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/fourier.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fourier.m ***** test % matlab SMT compatibility for arguments syms r x u w v Pi=sym('pi'); assert(logical( fourier(exp(-x^2)) == sqrt(Pi)/exp(w^2/4) )) assert(logical( fourier(exp(-w^2)) == sqrt(Pi)/exp(v^2/4) )) assert(logical( fourier(exp(-r^2),u) == sqrt(Pi)/exp(u^2/4) )) assert(logical( fourier(exp(-r^2),r,u) == sqrt(Pi)/exp(u^2/4) )) ***** test % basic tests syms x w assert(logical( fourier(exp(-abs(x))) == 2/(w^2 + 1) )) assert(logical( fourier(x*exp(-abs(x))) == -(w*4*1i)/(w^4 + 2*w^2 + 1) )) ***** test % Dirac delta tests syms x w Pi=sym('pi'); assert(logical( fourier(dirac(x-2)) == exp(-2*1i*w) )) assert (logical( fourier(sym(2), x, w) == 4*Pi*dirac(w) )) ***** test % advanced test syms x w c d Pi=sym('pi'); F=Pi*(dirac(w-c)+dirac(w+c))+2*Pi*1i*(dirac(w+3*d)-dirac(w-3*d))+2/(w^2+1); assert(logical( fourier(cos(c*x)+2*sin(3*d*x)+exp(-abs(x))) == expand(F) )) ***** xtest % Differential operator to algebraic % SymPy cannot evaluate? (Issue #170) syms x w f(x) assert(logical( fourier(diff(f(x),x),x,w) == -1i*w*fourier(f(x),x,w) )) !!!!! known failure assert (logical (fourier (diff (f (x), x), x, w) == -1i * w * fourier (f (x), x, w))) failed 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/reshape.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/reshape.m ***** test d = [2 4 6; 8 10 12]; a = sym(d); assert (isequal (reshape(a, [1 6]), reshape(d, [1 6]))) assert (isequal (reshape(a, 1, 6), reshape(d, 1, 6))) assert (isequal (reshape(a, 2, 3), reshape(d, 2, 3))) assert (isequal (reshape(a, 3, 2), reshape(d, 3, 2))) assert (isequal (reshape(a, 6, 1), reshape(d, 6, 1))) ***** shared x, a, d syms x a = [1 x^2 x^4; x x^3 x^5]; d = [0 2 4; 1 3 5]; ***** test b = reshape(a, [1 6]); assert (isequal (size(b), [1 6])) assert (isequal (b, x.^reshape(d,1,6))) ***** test b = reshape(a, [6 1]); assert (isequal (size(b), [6 1])) assert (isequal (b, x.^reshape(d,6,1))) b = reshape(b, size(a)); assert (isequal (size(b), [2 3])) assert (isequal (b, a)) ***** test b = a(:); assert( isequal (size(b), [6 1])) assert( isequal (b, x.^(d(:)))) ***** test % reshape scalar assert (logical( reshape(x, 1, 1) == x )) assert (logical( reshape(x, [1 1]) == x )) ***** shared a syms a ***** error reshape(a, 2, 1) ***** error reshape(a, 1, 2) ***** error reshape(a, 1, 1, 1) ***** error reshape(a, [1, 1, 1]) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/dilog.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dilog.m ***** assert (isequal (dilog (sym(1)), sym(0))) ***** assert (isequal (dilog (sym(0)), sym(pi)^2/6)) ***** assert (isequal (dilog (sym(2)), -sym(pi)^2/12)) ***** assert (double(dilog(sym(-1))), pi^2/4 - pi*1i*log(2), eps) ***** test % round-trip syms x f = dilog (x); h = function_handle (f); A = h (1.1); B = dilog (1.1); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/pinv.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pinv.m ***** test % scalar syms x assert (isequal (pinv(x), 1/x)) ***** test % 2x3 A = [1 2 3; 4 5 6]; assert (max (max (abs (double (pinv (sym (A))) - pinv(A)))) <= 10*eps) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/tril.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tril.m ***** test syms x assert (isequal (tril(x), x)) ***** test % with symbols syms x A = [x 2*x; 3*x 4*x]; assert (isequal (tril(A), [x 0; 3*x 4*x])) ***** test % diagonal shifts B = round(10*rand(3,4)); A = sym(B); assert (isequal (tril(A), tril(B))) assert (isequal (tril(A,0), tril(B,0))) assert (isequal (tril(A,1), tril(B,1))) assert (isequal (tril(A,-1), tril(B,-1))) ***** test % double array pass through B = round(10*rand(3,4)); assert (isequal (tril(B,sym(1)), tril(B,1))) assert (isa (tril(B,sym(1)), 'double')) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/triu.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/triu.m ***** test % scalar syms x assert (isequal (triu(x), x)) assert (isequal (triu(x,0), x)) assert (isequal (triu(x,1), 0)) assert (isequal (triu(x,-1), 0)) ***** test % with symbols syms x A = [x 2*x; 3*x 4*x]; assert (isequal (triu(A), [x 2*x; 0 4*x])) ***** test % diagonal shifts B = round(10*rand(3,4)); A = sym(B); assert (isequal (triu(A), triu(B))) assert (isequal (triu(A,0), triu(B,0))) assert (isequal (triu(A,1), triu(B,1))) assert (isequal (triu(A,-1), triu(B,-1))) ***** test % double array pass through B = round(10*rand(3,4)); assert (isequal (triu(B,sym(1)), triu(B,1))) assert (isa (triu(B,sym(1)), 'double')) ***** test % immutable test A = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); assert (isequal (triu (A), sym ([1 2; 0 4]))) assert (isequal (tril (A), sym ([1 0; 3 4]))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/atan2.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atan2.m ***** error atan2 (1) ***** error atan2 (1, 2, 3) ***** test % some angles e = sym(1); a = atan2(0, e); assert (isequal (a, sym(0))) a = atan2(e, 0); assert (isequal (a, sym(pi)/2)) ***** test % symbols can give numerical answer syms x positive a = atan2(0, x); assert (isequal (a, sym(0))) a = atan2(x, 0); assert (isequal (a, sym(pi)/2)) a = atan2(-x, 0); assert (isequal (a, -sym(pi)/2)) ***** test % matrices x = sym([1 -2; 0 0]); y = sym([0 0; 8 -3]); a = atan2(y, x); sp = sym(pi); aex = [0 sp; sp/2 -sp/2]; assert (isequal (a, aex)) ***** test % round trip syms x y xd = -2; yd = -3; f = atan2 (x, y); A = atan2 (xd, yd); h = function_handle (f); B = h (xd, yd); assert (A, B, -eps) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/toeplitz.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/toeplitz.m ***** test % rect R = [10 20 40]; C = [10 30]; A = sym(toeplitz(R,C)); B = toeplitz(sym(R),sym(C)); assert (isequal (A, B)) R = [10 20]; C = [10 30 50]; A = sym(toeplitz(R,C)); B = toeplitz(sym(R),sym(C)); assert (isequal (A, B)) ***** test % symbols syms x y R = [10 20 40]; C = [10 30]; Rs = [10 x 40]; Cs = [10 y]; A = toeplitz(R,C); B = toeplitz(Rs,Cs); assert (isequal (A, subs(B,[x,y],[20 30]))) ***** test % hermitian syms a b c A = [a b c; conj(b) a b; conj(c) conj(b) a]; B = toeplitz([a,b,c]); assert (isequal( A, B)) ***** warning % mismatch syms x B = toeplitz([10 x], [1 3 x]); ***** warning % scalar B = toeplitz(sym(2), 3); assert (isequal (B, sym(2))) ***** test % mismatch syms x y fprintf('\n one warning expected\n') % how to quiet this one? A = toeplitz([10 2], [1 3 5]); s = warning ('off', 'OctSymPy:toeplitz:diagconflict'); B = toeplitz([10 x], [1 3 y]); warning(s) assert (isequal (A, subs(B, [x,y], [2 5]))) one warning expected warning: toeplitz: column wins diagonal conflict warning: called from toeplitz at line 84 column 7 __test__ at line 6 column 4 test at line 682 column 11 /tmp/tmp.EEULPfFdek at line 894 column 31 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/hypergeom.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hypergeom.m ***** assert (isequal (double (hypergeom ([1, 2], [2, 3], sym(0))), 1)) ***** test % matrix input syms z a = sym([1 2]); b = sym([3 4]); A = hypergeom (a, b, [0 sym(1); 2 z]); B = [hypergeom(a,b,0) hypergeom(a,b,1); hypergeom(a,b,2) hypergeom(a,b,z)]; assert (isequal (A, B)) ***** test % scalars for a and/or b syms z assert (isequal (hypergeom(1, 2, z), hypergeom({sym(1)}, {sym(2)}, z))) assert (isequal (hypergeom([1 2], 3, z), hypergeom([1 2], {sym(3)}, z))) assert (isequal (hypergeom(1, [2 3], z), hypergeom({sym(1)}, [2 3], z))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/asin.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asin.m ***** error asin (sym(1), 2) ***** assert (isequaln (asin (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = asin(x); f2 = asin(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = asin(A); f2 = asin(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = asin (d); f = asin (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/cbrt.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cbrt.m ***** error cbrt (sym(1), 2) ***** assert (isequaln (cbrt (sym(nan)), sym(nan))) ***** shared x, d d = 2; x = sym('2'); ***** test f1 = cbrt(x); f2 = 1.2599210498948731647; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cbrt(A); f2 = 1.2599210498948731647; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); if (exist ('OCTAVE_VERSION', 'builtin')) A = cbrt (d); else % Issue #742 A = d^(1/3); end f = cbrt (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isvector.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isvector.m ***** assert(isvector(sym('x'))) ***** assert(isvector(sym([1 2 3]))) ***** assert(isvector(sym([1; 2]))) ***** assert(~isvector(sym([1 2; 3 4]))) ***** assert(~isvector(sym([]))) ***** assert(isvector(sym(ones(1,0)))) ***** assert(~isvector(sym(ones(0,3)))) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/qr.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/qr.m ***** error qr (sym(1), 2, 3) ***** error [Q, R, P] = qr (sym(1)) ***** error qr (sym(1), 1) ***** test % scalar [q, r] = qr(sym(6)); assert (isequal (q, sym(1))) assert (isequal (r, sym(6))) ***** test syms x positive [q, r] = qr(x); assert (isequal (q*r, x)) assert (isequal (q, sym(1))) assert (isequal (r, x)) ***** test % trickier if x could be zero, fails on 1.8 <= SymPy <= 1.10.1 syms x [q, r] = qr(x); if (pycall_sympy__ ('return Version(spver) > Version("1.10.1")')) assert (isequal (q*r, x)) end ***** test A = [1 2; 3 4]; B = sym(A); [Q, R] = qr(B); assert (isequal (Q*R, B)) assert (isequal (R(2,1), sym(0))) assert (isequal (Q(:,1)'*Q(:,2), sym(0))) %[QA, RA] = qr(A) %assert ( max(max(double(Q)-QA)) <= 10*eps) %assert ( max(max(double(Q)-QA)) <= 10*eps) ***** test % non square: tall skinny A = sym([1 2; 3 4; 5 6]); [Q, R] = qr (A, 0); assert (size (Q), [3 2]) assert (size (R), [2 2]) assert (isequal (Q*R, A)) ***** test % non square: short fat A = sym([1 2 3; 4 5 6]); [Q, R] = qr (A); assert (isequal (Q*R, A)) ***** test % non square: short fat, rank deficient A = sym([1 2 3; 2 4 6]); [Q, R] = qr (A); assert (isequal (Q*R, A)) A = sym([1 2 3; 2 4 6; 0 0 0]); [Q, R] = qr (A); assert (isequal (Q*R, A)) ***** test % rank deficient A = sym([1 2 3; 2 4 6; 0 0 0]); [Q, R] = qr (A); assert (isequal (Q*R, A)) A = sym([1 2 3; 2 5 6; 0 0 0]); [Q, R] = qr (A); assert (isequal (Q*R, A)) ***** test % single return value R not Q assert (isequal (qr (sym(4)), sym(4))) 12 tests, 12 passed, 0 known failure, 0 skipped [inst/@sym/subsref.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsref.m ***** shared a,b b = [1:4]; a = sym(b); ***** assert(isequal( a(1), b(1) )) ***** assert(isequal( a(2), b(2) )) ***** assert(isequal( a(4), b(4) )) ***** assert(isempty( a([]) )) ***** shared a,b b = [1:4]; b = [b; 3*b; 5*b]; a = sym(b); ***** assert(isequal( a(1), b(1) )) ***** assert(isequal( a(2), b(2) )) ***** assert(isequal( a(4), b(4) )) ***** assert(isequal( a(:,:), a )) ***** assert(isequal( a(1:2,1:3), a(1:2,1:3) )) ***** assert(isequal( a(1:2:3,[1 2 4]), b(1:2:3,[1 2 4]) )) ***** assert(isequal( a(1:2:3,[4 2 3 1]), b(1:2:3,[4 2 3 1]) )) ***** assert(isequal( a(1:2:3,[4 1 1 1]), b(1:2:3,[4 1 1 1]) )) ***** assert(isequal( a([],:), b([],:) )) ***** assert(isequal( size(a([],:)), [0 4] )) ***** assert(isequal( a(1:2,[]), b(1:2,[]) )) ***** assert(isequal( size(a(1:2,[])), [2 0] )) ***** assert(isempty( a(1:2,[]) )) ***** assert(isempty( a([],[]) )) ***** assert(isequal( a([],[]), sym([]) )) ***** assert(~isequal( a(1:2,[]), sym([]) )) ***** shared e e = sym([1 3 5; 2 4 6]); ***** assert(isequal( e(:), sym((1:6)') )) ***** assert(isequal( e([1 2 3]), sym([1 2 3]) )) ***** assert(isequal( e([1; 3; 4]), sym([1; 3; 4]) )) ***** assert(isempty( e([]) )) ***** assert(isempty( e('') )) ***** assert(isequal( e([]), sym([]) )) ***** shared a,b b = 1:5; a = sym(b); ***** assert(isequal( a([1 2 5]), b([1 2 5]) )) ***** assert(isequal( a([1; 2; 5]), b([1; 2; 5]) )) ***** shared x syms x ***** test % logical with empty result assert(isempty( x(false) )) a = [x x]; assert(isempty( a([false false]) )) ***** test % issue 18, scalar access assert(isequal( x(1), x )) assert(isequal( x(true), x )) ***** shared ***** test % older access tests syms x f = [x 2; 3 4*x]; % element access assert (logical( f(1,1) == x )) assert (logical( f(1,2) == 2 )) % linear access of 2d array assert (logical( f(1) == x )) assert (logical( f(2) == 3 )) % column based assert (logical( f(3) == 2 )) ***** shared a,b % effectively a random matrix a = reshape( round(50*(sin(1:20)+1)), 5,4); b = sym(a); ***** test % older array refs test assert (logical(b(1,1) == a(1,1))) assert (logical(b(3,1) == a(3,1))) assert (logical(b(1,3) == a(1,3))) assert (logical(b(4,4) == a(4,4))) ***** test % older array refs test: linear indices assert (logical(b(1) == a(1))) assert (logical(b(3) == a(3))) assert (logical(b(13) == a(13))) ***** test % older array refs test: end assert (all(all(logical( b(end,1) == a(end,1) )))) assert (all(all(logical( b(2,end) == a(2,end) )))) assert (all(all(logical( b(end,end) == a(end,end) )))) assert (all(all(logical( b(end-1,1) == a(end-1,1) )))) assert (all(all(logical( b(2,end-1) == a(2,end-1) )))) assert (all(all(logical( b(end-1,end-1) == a(end-1,end-1) )))) ***** shared ***** test % older slicing tests syms x a = [1 2 3 4 5 6]; a = [a; 3*a; 5*a; 2*a; 4*a]; b = sym(a); assert (isequal( b(:,1), a(:,1) )) assert (isequal( b(:,2), a(:,2) )) assert (isequal( b(1,:), a(1,:) )) assert (isequal( b(2,:), a(2,:) )) assert (isequal( b(:,:), a(:,:) )) assert (isequal( b(1:3,2), a(1:3,2) )) assert (isequal( b(1:4,:), a(1:4,:) )) assert (isequal( b(1:2:5,:), a(1:2:5,:) )) assert (isequal( b(1:2:4,:), a(1:2:4,:) )) assert (isequal( b(2:2:4,3), a(2:2:4,3) )) assert (isequal( b(2:2:4,3), a(2:2:4,3) )) ***** test % 2D arrays b = [1:4]; b = [b; 3*b; 5*b]; a = sym(b); I = rand(size(b)) > 0.5; assert (isequal (a(I), b(I))) I = I(:); assert (isequal (a(I), b(I))) I = I'; assert (isequal (a(I), b(I))) I = logical(zeros(size(b))); assert (isequal (a(I), b(I))) ***** test % 1D arrays, does right with despite warning r = [1:6]; ar = sym(r); c = r'; ac = sym(c); Ir = rand(size(r)) > 0.5; Ic = rand(size(c)) > 0.5; assert (isequal (ar(Ir), r(Ir))) assert (isequal (ac(Ic), c(Ic))) assert (isequal (ar(Ic), r(Ic))) assert (isequal (ac(Ir), c(Ir))) ***** test % rccross tests B = [1 2 3 4; 5 6 7 9; 10 11 12 13]; A = sym(B); assert (isequal (A([1 3],[2 3]), B([1 3], [2 3]) )) assert (isequal (A(1,[2 3]), B(1,[2 3]) )) assert (isequal (A([1 2],4), B([1 2],4) )) assert (isequal (A([2 1],[4 2]), B([2 1],[4 2]) )) assert (isequal (A([],[]), B([],[]) )) ***** error % issue #445 A = sym([10 11]); A(1.1) ***** error % issue #445 A = sym([10 11]); A(sym(4)/3) ***** error % issue #445 A = sym([1 2; 3 4]); A(1.1, 1) ***** error % issue #445 A = sym([1 2; 3 4]); A(1, sym(4)/3) ***** error A = sym([1 2; 3 4]); A(5) ***** shared a, b a = [1 2 3 5; 4 5 6 9; 7 5 3 2]; b = sym (a); ***** test c = true; assert (isequal (a(c), b(c))) c = false; assert (isequal (a(c), b(c))) ***** test c = [false true]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** test c = [false true false true; true false true false; false true false true]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** test c = [false true false true false]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** test c = [false; true; false; true; false]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** test c = [false true; false true; true false]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** shared ***** test % Orientation of empty results of logical indexing on row or column vectors r = [1:6]; c = r'; ar = sym(r); ac = sym(c); assert (isequal (ar(false), r(false))) assert (isequal (ac(false), c(false))) assert (isequal (ar(false (1, 6)), r(false (1, 6)))) assert (isequal (ac(false (1, 6)), c(false (1, 6)))) assert (isequal (ar(false (6, 1)), r(false (6, 1)))) assert (isequal (ac(false (6, 1)), c(false (6, 1)))) 50 tests, 50 passed, 0 known failure, 0 skipped [inst/@sym/laplacian.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laplacian.m ***** shared x,y,z syms x y z ***** test % 1D f = x^2; g = diff(f,x,x); assert (isequal (laplacian(f), g)) assert (isequal (laplacian(f,{x}), g)) assert (isequal (laplacian(f,[x]), g)) assert (isequal (laplacian(f,x), g)) ***** test % const f = sym(1); g = sym(0); assert (isequal (laplacian(f), g)) assert (isequal (laplacian(f,x), g)) f = sym('c'); assert (isequal (laplacian(f,x), g)) ***** test % double const f = 1; g = sym(0); assert (isequal (laplacian(f,x), g)) ***** test % 1D fcn in 2d/3d f = sin(2*y); g = -4*f; assert (isequal (laplacian(f), g)) assert (isequal (laplacian(f, {x,y}), g)) assert (isequal (laplacian(f, {x,y,z}), g)) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y); g = diff(f,x,x) + diff(f,y,y); assert (isequal (laplacian(f), g)) assert (isequal (laplacian(f, {x,y}), g)) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y+sinh(z)); gr2 = gradient(f, {x,y}); divgr2 = divergence(gr2, {x,y}); l2 = laplacian(f,{x,y}); gr3 = gradient(f, {x,y,z}); divgr3 = divergence(gr3, {x,y,z}); l3 = laplacian(f,{x,y,z}); assert (isAlways (l2 == divgr2)) assert (isAlways (l3 == divgr3)) ***** error laplacian(sym('x'), sym('x'), 42) ***** error laplacian([sym('x'), sym('x')]) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/ellipticPi.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticPi.m ***** error ellipticPi (sym (1)) ***** error ellipticPi (sym (1), 2, 3, 4) ***** assert (double (ellipticPi (sym (-23)/10, sym (pi)/4, 0)), 0.5876852228, 10e-11) ***** assert (double (ellipticPi (sym (1)/3, sym (pi)/3, sym (1)/2)), 1.285032276, 10e-11) ***** assert (double (ellipticPi (sym (2), sym (pi)/6, sym (2))), 0.7507322117, 10e-11) ***** xtest % FIXME: search/report upstream assert (double (ellipticPi (sym (-1), 0, sym (1))), 0) !!!!! known failure ASSERT errors for: assert (double (ellipticPi (sym (-1), 0, sym (1))),0) Location | Observed | Expected | Reason () NaN 0 'NaN' mismatch ***** xtest % FIXME: this is a regression somewhere: loss of precision: Issue #1064 % compare to Maple, complete us = vpa (ellipticPi (sym(1)/6, sym(4)/3), 40); % > evalf(EllipticPi(sin(1/6), sqrt(4/3)), 40); maple = vpa ('2.019271696236161760696477679310987869058', 40) - ... vpa ('1.708165765120289929280805062355360570830j', 40); assert (abs (double (maple - us)), 0, 2e-39) !!!!! known failure ASSERT errors for: assert (abs (double (maple - us)),0,2e-39) Location | Observed | Expected | Reason () 5.7666e-32 0 Abs err 5.7666e-32 exceeds tol 2e-39 by 6e-32 ***** test % compare to Maple, complete us = vpa (ellipticPi (sym(1)/6, sym(4)/3), 40); % > evalf(EllipticPi(sin(1/6), sqrt(4/3)), 40); maple = vpa ('2.019271696236161760696477679310987869058', 40) - ... vpa ('1.708165765120289929280805062355360570830j', 40); assert (abs (double (maple - us)), 0, 2e-30) ***** test % compare to Maple, incomplete us = vpa (ellipticPi (sym(8)/7, sym(4)/3, sym(2)/7), 40); % > evalf(EllipticPi(sin(4/3), 8/7, sqrt(2/7)), 40); maple = vpa ('2.089415796799294830305265090302275542033', 40) - ... vpa ('4.798862045930802761256228043192491271947j', 40); assert (abs (double (maple - us)), 0, 6e-39) 9 tests, 7 passed, 2 known failures, 0 skipped [inst/@sym/numel.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/numel.m ***** test a = sym([1 2 3]); assert(numel(a) == 3); ***** test % 2D array a = sym([1 2 3; 4 5 6]); assert(numel(a) == 6); ***** test % empty a = sym([]); assert(numel(a) == 0); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/cart2pol.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cart2pol.m ***** test % multiple non-scalar inputs x = sym ('x', [2 2]); assume (x, 'real'); y = sym ('y', [2 2]); assume (y, 'real'); [theta, r] = cart2pol (x, y); assert (isequal (r, sqrt (x.^2 + y.^2))); assert (isequal (tan (theta), y ./ x)); % mixing scalar inputs with non-scalar inputs syms z real [theta_2, r_2, z_2] = cart2pol (x, y, z); assert (isequal (r_2, sqrt (x.^2 + y.^2))); assert (isequal (tan (theta_2), y ./ x)); assert (isequal (z_2, z * ones (2, 2))); ***** test % column vector with 2 entries syms x y real [theta, r] = cart2pol ([x; y]); assert (isequal (r, sqrt (x.^2 + y.^2))); assert (isequal (tan (theta), y ./ x)); % column vector with 3 entries syms z real [theta_2, r_2, z_2] = cart2pol ([x; y; z]); assert (isequal (r_2, sqrt (x.^2 + y.^2))); assert (isequal (tan (theta_2), y ./ x)); assert (isequal (z_2, z)); ***** test % matrix with 2 columns syms x y u v real C = [x y; u v]; [theta, r] = cart2pol (C); assert (isequal (r, [sqrt(x.^2+y.^2); sqrt(u.^2+v.^2)])); assert (isequal (tan (theta), [y/x; v/u])); % matrix with 3 columns syms z w real C_2 = [x y z; u v w]; [theta_2, r_2, z_2] = cart2pol (C_2); assert (isequal (r, [sqrt(x.^2+y.^2); sqrt(u.^2+v.^2)])); assert (isequal (tan (theta), [y/x; v/u])); assert (isequal (z_2, [z; w])); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/frac.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/frac.m ***** test f1 = frac(sym(11)/10); f2 = sym(1)/10; assert (isequal (f1, f2)) ***** test d = sym(-11)/10; c = sym(9)/10; assert (isequal (frac (d), c)) ***** test d = sym(-19)/10; c = sym(1)/10; assert (isequal (frac (d), c)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/nextprime.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nextprime.m ***** assert (isequal (nextprime(sym(2)), 3)); ***** assert (isequal (nextprime(sym(18)), 19)); ***** assert (isequal (nextprime(sym([1 2 3])), [2 3 5])); ***** assert (isequal (nextprime(sym([-1 0])), [2 2])); ***** test % result is a sym p = nextprime(sym(2)); assert (isa (p, 'sym')) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/jacobian.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/jacobian.m ***** error jacobian (sym(1), 2, 3) ***** error jacobian ([sym(1) 2; sym(3) 4]) ***** shared x,y,z syms x y z ***** test % 1D f = x^2; assert (isequal (jacobian(f), diff(f,x))) assert (isequal (jacobian(f,{x}), diff(f,x))) assert (isequal (jacobian(f,x), diff(f,x))) ***** test % const f = sym(1); g = sym(0); assert (isequal (jacobian(f), g)) assert (isequal (jacobian(f,x), g)) ***** test % double const f = 1; g = sym(0); assert (isequal (jacobian(f,x), g)) ***** test % diag f = [x y^2]; g = [sym(1) 0; 0 2*y]; assert (isequal (jacobian(f), g)) assert (isequal (jacobian(f, [x y]), g)) assert (isequal (jacobian(f, {x y}), g)) ***** test % anti-diag f = [y^2 x]; g = [0 2*y; sym(1) 0]; assert (isequal (jacobian(f), g)) assert (isequal (jacobian(f, {x y}), g)) ***** test % shape f = [x y^2]; assert (isequal (size(jacobian(f, {x y z})), [2 3])) assert (isequal (size(jacobian(f, [x y z])), [2 3])) assert (isequal (size(jacobian(f, [x; y; z])), [2 3])) assert (isequal (size(jacobian(f.', {x y z})), [2 3])) ***** test % scalar f f = x*y; assert (isequal (size(jacobian(f, {x y})), [1 2])) g = gradient(f, {x y}); assert (isequal (jacobian(f, {x y}), g.')) ***** test % vect f wrt 1 var f = [x x^2]; assert (isequal (size(jacobian(f, x)), [2 1])) f = f.'; % same shape output assert (isequal (size(jacobian(f, x)), [2 1])) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/any.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/any.m ***** test % matrix a = [0 0; 1 0]; s = sym(a); assert (isequal (any (s), any (a))) assert (isequal (any (s,1), any (a,1))) assert (isequal (any (s,2), any (a,2))) ***** test % vector a = [0 1 0]; s = sym(a); assert (isequal (any (s), any (a))) assert (isequal (any (s,1), any (a,1))) assert (isequal (any (s,2), any (a,2))) ***** test % should fail on symbols syms x s = [0 1 x]; try any (s) waserr = false; catch waserr = true; end assert (waserr) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/ilaplace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ilaplace.m ***** error ilaplace (sym(1), 2, 3, 4) ***** test % basic SMT compact: no heaviside syms s syms t positive assert (isequal (ilaplace(1/s^2), t)) assert (isequal (ilaplace(s/(s^2+9)), cos(3*t))) assert (isequal (ilaplace(6/s^4), t^3)) ***** test % more SMT compact syms r syms u positive assert (isequal (ilaplace(1/r^2, u), u)) assert (isequal (ilaplace(1/r^2, r, u), u)) ***** test % if t specified and not positive, we expect heaviside clear s t syms s t assert (isequal (ilaplace(1/s^2, s, t), t*heaviside(t))) assert (isequal (ilaplace(s/(s^2+9), t), cos(3*t)*heaviside(t))) assert (isequal (ilaplace(6/s^4, t), t^3*heaviside(t))) ***** test % Heaviside test syms s t=sym('t', 'positive'); assert(logical( ilaplace(exp(-5*s)/s^2,t) == (t-5)*heaviside(t-5) )) ***** test % Delta dirac test syms s t = sym('t'); assert (isequal (ilaplace (sym('2'), t), 2*dirac(t))) ***** test % Delta dirac test 2 syms s t calc = ilaplace (5*exp (-3*s) - 2*exp (-2*s)/s, s, t); want = 5*dirac (t-3) - 2*heaviside (t-2); assert (isequal (calc, want)) ***** test % Delta dirac test 3, coefficient syms s t syms c positive calc = ilaplace (2*exp (-c*s), s, t); want = 2*dirac (t - c); assert (isAlways (calc == want)) ***** error ilaplace (sym('s', 'positive')*sym('s')) ***** test % SMT compact, prefers s over symvar syms s x syms t positive assert (isequal (ilaplace(x/s^4), x*t^3/6)) t = sym('t'); assert (isequal (ilaplace(x/s^4, t), x*t^3/6*heaviside(t))) ***** test % pick s even it has assumptions syms s real syms x t assert (isequal (ilaplace (x/s^2, t), x*t*heaviside(t))) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/rank.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rank.m ***** test A = sym([1 2; 3 4]); assert (rank(A) == 2); ***** test A = sym([1 2 3; 3 4 5]); assert (rank(A) == 2); ***** test A = sym([1 2; 1 2]); assert (rank(A) == 1); ***** test A = sym([1 2; 3 4]); assert (rank(A) == 2); ***** assert (rank(sym(1)) == 1); ***** assert (rank(sym(0)) == 0); ***** assert (rank(sym('x', 'positive')) == 1); 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/acsch.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acsch.m ***** error acsch (sym(1), 2) ***** assert (isequaln (acsch (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acsch(x); f2 = acsch(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acsch(A); f2 = acsch(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acsch (d); f = acsch (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/sort.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sort.m ***** error sort (sym(1), 2) ***** test f = [sym(1), sym(0)]; expected = sym([0, 1]); assert (isequal (sort(f), expected)) ***** test f = [sym(1)]; expected = sym(1); assert (isequal (sort(f), expected)) ***** test f = [sym(3), sym(2), sym(6)]; s = sort(f); expected_s = sym([2, 3, 6]); assert (isequal (s, expected_s)) ***** test f = [sym(pi), sin(sym(2)), sqrt(sym(6))]; s = sort(f); expected_s = sym([sin(sym(2)), sqrt(sym(6)), sym(pi)]); assert (isequal (s, expected_s)) ***** test f = [sym(1), sym(2); sym(2), sym(pi); sym(pi), sym(1)]; s = sort(f); expected_s = ([sym(1), sym(1); sym(2), sym(2); sym(pi), sym(pi)]); assert (isequal (s, expected_s)) ***** assert (isequal (sort(sym([])), sym([]))) ***** error sort([sym('x') 1]) ***** test % but with assumptions, symbols can be sorted p = sym('p', 'positive'); n = sym('n', 'negative'); expected_s = [n p]; s = sort ([p n]); assert (isequal (s, expected_s)) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/kroneckerDelta.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/kroneckerDelta.m ***** error kroneckerDelta (sym(1), 2, 3) ***** test syms x assert (isequal (kroneckerDelta (x, x), sym(1))) ***** assert (isequal (kroneckerDelta ([sym(1) 2 3], [1 2 0]), sym([1 1 0]))) ***** test % round trip syms x y f = kroneckerDelta (x, y); h = function_handle (f); assert (h (1, 2), 0) assert (h (2, 2), 1) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/pretty.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pretty.m ***** test % simple syms x s1 = pretty(sin(x)); s2 = sprintf(' sin(x)\n'); assert (strcmp (s1, s2)) ***** test % force ascii syms x s1 = pretty(sin(x/2), 'ascii'); s2 = sprintf(' /x\\\n sin|-|\n \\2/\n'); swin = strrep(s1, sprintf('\r\n'), sprintf('\n')); assert (strcmp (s1, s2) || strcmp (swin, s2)) ***** test % force unicode syms x s1 = pretty(sin(x/2), 'unicode'); s2 = sprintf(' ⎛x⎞\n sin⎜─⎟\n ⎝2⎠\n'); swin = strrep(s1, sprintf('\r\n'), sprintf('\n')); assert (strcmp (s1, s2) || strcmp (swin, s2)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/charpoly.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/charpoly.m ***** error charpoly (sym (1), 1, 2) ***** error charpoly (sym ([1 2])) ***** test syms x A = sym([1 2; 3 4]); assert (isequal (charpoly(A, x), x^2 - 5*x -2)) ***** test syms x A = sym([1 2; 3 4]); B = sym([1 -5 -2]); assert (isequal (charpoly(A), B)) ***** test syms x A = sym([x x; x x]); B = sym([1 -2*x 0]); assert (isequal (charpoly(A), B)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/min.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/min.m ***** test % scalars with dim a = min(sym(pi), [], 1); b = sym(pi); assert (isequal (a, b)); a = min(sym(pi), [], 2); assert (isequal (a, b)); a = max(sym(pi), [], 1); assert (isequal (a, b)); a = max(sym(pi), [], 2); assert (isequal (a, b)); ***** shared A, D D = [0 1 2 3]; A = sym(D); ***** test % row vectors assert (isequal (min(A), sym(min(D)))) assert (isequal (min(A), sym(0))) assert (isequal (max(A), sym(max(D)))) assert (isequal (max(A), sym(3))) ***** test % row vectors with dim assert (isequal (min(A, [], 1), sym(min(D, [], 1)))) assert (isequal (min(A, [], 2), sym(min(D, [], 2)))) assert (isequal (max(A, [], 1), sym(max(D, [], 1)))) assert (isequal (max(A, [], 2), sym(max(D, [], 2)))) ***** test % column vectors A = A.'; D = D.'; assert (isequal (min(A), sym(min(D)))) assert (isequal (min(A), sym(0))) assert (isequal (max(A), sym(max(D)))) assert (isequal (max(A), sym(3))) ***** test % row vectors with dim assert (isequal (min(A, [], 1), sym(min(D, [], 1)))) assert (isequal (min(A, [], 2), sym(min(D, [], 2)))) assert (isequal (max(A, [], 1), sym(max(D, [], 1)))) assert (isequal (max(A, [], 2), sym(max(D, [], 2)))) ***** shared ***** test % empty a = min(sym([])); assert(isempty(a)) a = max(sym([])); assert(isempty(a)) ***** test % matrix A = [1 4 6; 2 2 5]; A = sym(A); assert (isequal (min(A), sym([1 2 5]))) assert (isequal (min(A, [], 1), sym([1 2 5]))) assert (isequal (min(A, [], 2), sym([1; 2]))) assert (isequal (max(A), sym([2 4 6]))) assert (isequal (max(A, [], 1), sym([2 4 6]))) assert (isequal (max(A, [], 2), sym([6; 5]))) ***** test % index output is double not sym [m, I] = min(sym(2), [], 1); assert (strcmp(class(I), 'double')) [m, I] = max(sym(2), [], 1); assert (strcmp(class(I), 'double')) ***** test % empty rows/columns, I is double A = sym(zeros(0, 4)); [m, I] = min(A, [], 1); assert (strcmp(class(I), 'double')) [m, I] = max(A, [], 1); assert (strcmp(class(I), 'double')) A = sym(zeros(3, 0)); [m, I] = min(A, [], 2); assert (strcmp(class(I), 'double')) [m, I] = max(A, [], 2); assert (strcmp(class(I), 'double')) ***** test % index output A = [0 1 9; 10 7 4]; B = sym(A); [m1, I1] = min(A); [m2, I2] = min(B); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) [m1, I1] = max(A); [m2, I2] = max(B); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) ***** test % index output, with dim A = [0 1 9; 10 7 4]; B = sym(A); [m1, I1] = min(A, [], 1); [m2, I2] = min(B, [], 1); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) [m1, I1] = min(A, [], 2); [m2, I2] = min(B, [], 2); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) [m1, I1] = max(A, [], 1); [m2, I2] = max(B, [], 1); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) [m1, I1] = max(A, [], 2); [m2, I2] = max(B, [], 2); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) ***** test % empty columns A = sym(zeros(0, 4)); [m, I] = min(A, [], 1); assert (isequal (size(m), [0 4])) assert (isequal (size(I), [0 4])) [m, I] = max(A, [], 1); assert (isequal (size(m), [0 4])) assert (isequal (size(I), [0 4])) ***** test % empty rows A = sym(zeros(3, 0)); [m, I] = min(A, [], 2); assert (isequal (size(m), [3 0])) assert (isequal (size(I), [3 0])) [m, I] = max(A, [], 2); assert (isequal (size(m), [3 0])) assert (isequal (size(I), [3 0])) ***** test % another empty case % we differ slightly from double which gives 1x0/0x1 A = sym(zeros(3, 0)); [m, I] = min(A, [], 1); assert (isempty (m)) assert (isempty (I)) A = sym(zeros(0, 3)); [m, I] = min(A, [], 2); assert (isempty (m)) assert (isempty (I)) ***** test % empty without index output A = sym(zeros(3, 0)); assert (isempty (min (A, [], 1))) assert (isempty (max (A, [], 1))) assert (isempty (min (A, [], 2))) assert (isempty (max (A, [], 2))) A = sym(zeros(0, 3)); assert (isempty (min (A, [], 1))) assert (isempty (max (A, [], 1))) assert (isempty (min (A, [], 2))) assert (isempty (max (A, [], 2))) ***** test % binary op form, one a scalar A = sym([3 1 9]); m = min(A, sym(2)); M = max(A, sym(2)); assert (isequal (m, sym([2 1 2]))) assert (isequal (M, sym([3 2 9]))) m = min(sym(2), A); M = max(sym(2), A); assert (isequal (m, sym([2 1 2]))) assert (isequal (M, sym([3 2 9]))) ***** test % binary op form, both scalar m = min(sym(1), sym(2)); M = max(sym(2), sym(2)); assert (isequal (m, sym(1))) assert (isequal (M, sym(2))) ***** test syms x y assert (isequal (children (min (x, y)), [x y])) ***** test syms x y z A = [x 1; y z]; assert (isequal (min (A, [], 1), [min(x, y) min(1, z)])) assert (isequal (max (A, [], 1), [max(x, y) max(1, z)])) assert (isequal (min (A, [], 2), [min(x, 1); min(y, z)])) assert (isequal (max (A, [], 2), [max(x, 1); max(y, z)])) ***** test syms x y positive a = min([x 2 y -6]); assert (isequal (a, -6)) a = max([x y -6]); assert (isequal (a, max(x, y))) ***** test syms x negative a = min([x 6 10]); assert (isequal (a, x)) a = max([x -2 6]); assert (isequal (a, 6)) 21 tests, 21 passed, 0 known failure, 0 skipped [inst/@sym/ellipticCK.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCK.m ***** error ellipticCK (sym (1), 2) ***** assert (double (ellipticCK (sym (1)/2)), 1.8541, 10e-5) ***** assert (double (ellipticCK (sym (101)/10)), 0.812691836806976, -3*eps) ***** assert (isequal (ellipticCK (sym (1)), sym(pi)/2)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/factor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/factor.m ***** test % n = 152862; % [p,m] = factor(n); % only works on Octave, no Matlab as of 2014a n = 330; % so we use an output without repeated factors p = factor(n); m = ones(size(p)); [ps,ms] = factor(sym(n)); assert (isequal (p, ps)) assert (isequal (m, ms)) ***** test n = sym(2)^4*13; [p,m] = factor(n); assert (isequal (p, [2 13])) assert (isequal (m, [4 1])) ***** test syms x assert( logical (factor(x^2 + 6*x + 5) == (x+5)*(x+1))) ***** test syms x f = [ x^4/2 + 5*x^3/12 - x^2/3 x^2 - 1 10]; g = [ x^2*(2*x - 1)*(3*x + 4)/12 (x+1)*(x-1) 10]; assert (isequal (factor(f), g)) ***** test % "fragile form" works A = factor(sym(124)); B = strtrim(disp(A, 'flat')); assert (strcmp (B, '2**2*31**1')) ***** error [p, m] = factor(sym('x')); ***** error [p, m] = factor(sym(42), sym('x')); ***** test % if polynomial happens to be a constant, don't attempt integer % factorization if a variable is specified f = sym(42); q = factor(f, sym('x')); assert (isequal (f, q)); 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/union.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/union.m ***** test A = sym([1 2 3]); B = sym([1 2 4]); C = union(A, B); D = sym([1 2 3 4]); assert (isequal (C, D)) ***** test % one nonsym A = sym([1 2 3]); B = [1 2 4]; C = union(A, B); D = sym([1 2 3 4]); assert (isequal (C, D)) ***** test % empty A = sym([1 2 3]); C = union(A, A); assert (isequal(C, A)) ***** test % empty input A = sym([1 2]); C = union(A, []); assert (isequal (C, sym([1 2]))) ***** test % scalar syms x assert (isequal (union([x 1], x), [1 x])) assert (isequal (union(x, x), x)) ***** test A = interval(sym(1), 3); B = interval(sym(2), 5); C = union(A, B); assert( isequal( C, interval(sym(1), 5))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/lt.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lt.m ***** test % simple x = sym(1); y = sym(1); e = x < y; assert (~logical (e)) x = sym(1); y = sym(2); e = x < y; assert (logical (e)) ***** test % mix sym and double x = sym(1); y = 1; e = x < y; assert (~logical (e)) x = sym(1); y = 2; e = x < y; assert (logical (e)) x = 1; y = sym(1); e = x < y; assert (~logical (e)) x = 1; y = sym(2); e = x < y; assert (logical (e)) ***** test % Type of the output is sym or logical? % FIXME: in current version, they are sym x = sym(1); y = sym(1); e1 = x < y; x = sym(1); y = sym(2); e2 = x < y; %assert (islogical (e1)) %assert (islogical (e2)) assert (isa (e1, 'sym')) assert (isa (e2, 'sym')) ***** test % ineq w/ symbols syms x y e = x < y; assert (~islogical (e)) assert (isa (e, 'sym')) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a < b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 < x)) assert (~logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x < 10)) ***** test % array -- scalar syms x oo a = sym([1 x oo]); b = sym(3); e = a < b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), x < 3)) assert (~logical (e(3))) ***** test % scalar -- array syms x oo a = sym(1); b = sym([2 x -oo]); e = a < b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 1 < x)) assert (~logical (e(3))) ***** test % ineq w/ nan syms x snan = sym(nan); e = x < snan; assert (~logical (e)) e = snan < x; assert (~logical (e)) b = [sym(0) x]; e = b < snan; assert (isequal (e, [false false])) ***** test % oo syms oo x e = oo < x; assert (isa (e, 'sym')) assert (strcmp (strtrim (disp (e, 'flat')), 'oo < x')) ***** test % sympy true matrix a = sym([1 3 3]); b = sym([2 4 1]); e = a < b; %assert (~isa (e, 'sym')) %assert (islogical (e)) assert (isequal (e, [true true false])) ***** test % oo, finite real variables syms oo syms z real assumeAlso(z, 'finite') e = -oo < z; assert (isequal (e, sym(true))) e = z < oo; assert (isequal (e, sym(true))) ***** test % -oo, positive var (known failure w/ sympy 0.7.6.x) syms oo syms z positive e = -oo < z; assert (logical (e)) assert (isequal (e, sym(true))) ***** test % positive syms z positive e = -1 < z; assert (isequal (e, sym(true))) ***** test syms oo z = sym('z', 'negative'); e = z < oo; assert (isequal (e, sym(true))) 14 tests, 14 passed, 0 known failure, 0 skipped [inst/@sym/numden.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/numden.m ***** error numden (sym(1), 2) ***** test syms x [n, d] = numden (1/x); assert (isequal (n, sym(1)) && isequal (d, x)) ***** test syms x y n1 = [sym(1); x]; d1 = [x; y]; [n, d] = numden (n1 ./ d1); assert (isequal (n, n1) && isequal (d, d1)) ***** test [n, d] = numden (sym(2)); assert (isequal (n, 2)); assert (isequal (d, 1)); ***** test syms x y [n, d] = numden ((x + pi)/(y + 6)); assert (isequal (n, x + pi)); assert (isequal (d, y + 6)); ***** test syms x y [n, d] = numden ((x^2 + y^2)/(x*y)); assert (isequal (n, x^2 + y^2)); assert (isequal (d, x*y)); 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/fix.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fix.m ***** test d = 3/2; x = sym('3/2'); f1 = fix(x); f2 = fix(d); assert (isequal (f1, f2)) ***** test D = [1.1 4.6; -3.4 -8.9]; A = [sym(11)/10 sym(46)/10; sym(-34)/10 sym(-89)/10]; f1 = fix(A); f2 = fix(D); assert( isequal (f1, f2)) ***** test d = sym(-11)/10; c = -1; assert (isequal (fix (d), c)) ***** test d = sym(-19)/10; c = -1; assert (isequal (fix (d), c)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/ezsurf.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezsurf.m ***** error syms u v t ezsurf(u*v, 2*u*v, 3*v*t) ***** error syms u v t ezsurf(u*v, 2*u*v, u*v*t) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/prevprime.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/prevprime.m ***** assert (isequal (prevprime(sym(3)), 2)); ***** assert (isequal (prevprime(sym(20)), 19)); ***** assert (isequal (prevprime(sym([3 5 10])), [2 3 7])); ***** error prevprime(sym(2)) ***** error prevprime(sym(-2)) ***** test % result is a sym p = prevprime(sym(3)); assert (isa (p, 'sym')) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/sin.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sin.m ***** error sin (sym(1), 2) ***** assert (isequaln (sin (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sin(x); f2 = sin(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sin(A); f2 = sin(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sin (d); f = sin (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/assume.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/assume.m ***** test syms x x = assume(x, 'positive'); a = assumptions(x); assert(strcmp(a, 'x: positive')) x = assume(x, 'even'); a = assumptions(x); assert(strcmp(a, 'x: even')) x = assume(x, 'odd'); a = assumptions(x); assert(strcmp(a, 'x: odd')) ***** error syms x x = assume (x, x); ***** error syms x x = assume (x/pi, 'integer') ***** test % multiple assumptions syms x x = assume(x, 'positive', 'integer'); [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) ***** test % multiple assumptions syms x x = assume(x, 'even', 'positive'); [tilde, a] = assumptions(x, 'dict'); assert(a{1}.even) assert(a{1}.positive) ***** test % has output so avoids workspace syms x positive x2 = x; f = sin(x); x = assume(x, 'negative'); a = assumptions(x); assert(strcmp(a, 'x: negative')) a = assumptions(x2); assert(strcmp(a, 'x: positive')) a = assumptions(f); assert(strcmp(a, 'x: positive')) ***** test % clear: has output so avoids workspace syms x positive f = 2*x; x2 = assume(x, 'clear'); assert (~ isempty (assumptions (f))); ***** test % has no output so does workspace syms x positive x2 = x; f = sin(x); assume(x, 'negative'); a = assumptions(x); assert(strcmp(a, 'x: negative')) a = assumptions(x2); assert(strcmp(a, 'x: negative')) a = assumptions(f); assert(strcmp(a, 'x: negative')) ***** test % clear: has not output so does workspace syms x positive f = 2*x; assume(x, 'clear'); assert (isempty (assumptions (f))); assert (isempty (assumptions ())); ***** test syms x positive assume (x, 'clear') assert (isempty (assumptions ())) ***** error syms x x2 = assume (x, 'clear', 'real'); ***** error syms a assume (a > 0) ***** test syms x y assume ([x y], 'real') assert (strcmp (assumptions (x), 'x: real')) assert (strcmp (assumptions (y), 'y: real')) ***** test syms x y assume ([x y], 'positive', 'even') assert (strcmp (assumptions (x), 'x: positive, even') || strcmp (assumptions (x), 'x: even, positive')) assert (strcmp (assumptions (y), 'y: positive, even') || strcmp (assumptions (y), 'y: even, positive')) ***** test % with output, original x and y are unchanged syms x y [p, q] = assume ([x y], 'real'); assert (isempty (assumptions (x))) assert (isempty (assumptions (y))) assert (strcmp (assumptions (p), 'x: real')) assert (strcmp (assumptions (q), 'y: real')) ***** test % matrix input syms a b c d assume ([a b; c d], 'real') assert (strcmp (assumptions (a), 'a: real')) assert (strcmp (assumptions (b), 'b: real')) assert (strcmp (assumptions (c), 'c: real')) assert (strcmp (assumptions (d), 'd: real')) 16 tests, 16 passed, 0 known failure, 0 skipped [inst/@sym/psi.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/psi.m ***** assert (isequal (psi (sym (1)), -eulergamma)) ***** assert (isequal (psi (1, sym (1)), sym (pi)^2/6)) ***** assert (isinf (psi (sym ('inf')))) ***** test % compare to Maple: evalf(Psi(-101/100)); maple = vpa ('100.3963127058453949545769053445198842332424', 40); us = vpa (psi (sym (-101)/100), 40); assert (abs(double(maple-us)) < 1e-39) ***** test % compare to Maple: evalf(Psi(1, 3*I-2)); maple = vpa ('-0.1651414829219882371561038184133243839778799', 40) - ... vpa ('0.1960040752985823275302034466611711263617296j', 40); us = vpa (psi (1, sym (-2) + sym(3i)), 40); assert (abs(double(maple-us)) < 1e-39) ***** test % should match @double/psi if (exist ('psi','builtin')) assert (psi (pi), double (psi (sym (pi))), -3*eps) assert (psi (100), double (psi (sym (100))), -3*eps) assert (psi (1e-3), double (psi (1/sym (1e3))), -3*eps) if (exist ('OCTAVE_VERSION', 'builtin')) % 2014a doesn't support negative or complex arguments assert (psi (-1.5), double (psi (sym (-3)/2)), -3*eps) assert (psi (-8.3), double (psi (sym (-83)/10)),-4*eps) assert (psi (2i), double (psi (sym (2i))), -3*eps) assert (psi (10i+3), double (psi (sym (10i)+3)), -3*eps) end end ***** test % @double/psi loses accuracy near the poles: note higher rel tol if (exist ('psi','builtin')) if (exist ('OCTAVE_VERSION', 'builtin')) assert (psi (-1.1), double (psi (sym (-11)/10)), -6*eps) assert (psi (-1.01), double (psi (sym (-101)/100)), -50*eps) end end ***** test if (exist ('psi','builtin')) assert (psi (1, pi), double (psi (1, sym (pi))), -3*eps) assert (psi (1, 100), double (psi (1, sym (100))), -3*eps) assert (psi (1, 1e-4), double (psi (1, 1/sym (1e4))), -3*eps) end ***** test if (exist ('psi','builtin')) assert (psi (2, pi), double (psi (2, sym (pi))), -3*eps) assert (psi (2, 1000), double (psi (2, sym (1000))), -3*eps) assert (psi (2, 1e-4), double (psi (2, 1/sym (1e4))), -3*eps) end ***** test % round trip if (exist ('psi','builtin')) syms x f = psi (x); h = function_handle (f); A = h (1.1); B = psi (1.1); assert (A, B) end 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/int.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/int.m ***** shared x,y,a syms x y a ***** assert(logical(int(cos(x)) - sin(x) == 0)) ***** assert(logical(int(cos(x),x) - sin(x) == 0)) ***** assert(logical(int(cos(x),x,0,1) - sin(sym(1)) == 0)) ***** test %% limits might be syms assert( isequal (int(cos(x),x,sym(0),sym(1)), sin(sym(1)))) assert( isequal (int(cos(x),x,0,a), sin(a))) ***** test %% other variables present assert( isequal (int(y*cos(x),x), y*sin(x))) ***** test %% limits as array assert( isequal (int(cos(x),x,[0 1]), sin(sym(1)))) assert( isequal (int(cos(x),x,sym([0 1])), sin(sym(1)))) assert( isequal (int(cos(x),x,[0 a]), sin(a))) ***** test %% no x given assert( isequal (int(cos(x),[0 1]), sin(sym(1)))) assert( isequal (int(cos(x),sym([0 1])), sin(sym(1)))) assert( isequal (int(cos(x),[0 a]), sin(a))) assert( isequal (int(cos(x),0,a), sin(a))) ***** test %% integration of const assert( isequal (int(sym(2),y), 2*y)) assert( isequal (int(sym(2)), 2*x)) assert( isequal (int(sym(2),[0 a]), 2*a)) assert( isequal (int(sym(2),0,a), 2*a)) ***** test % componentwise int of array A = [x x*x]; assert (isequal (int(A, x), [x^2/2 x^3/3])) ***** test % NonElementaryIntegral bug % https://savannah.gnu.org/bugs/index.php?46831 f = int(exp(exp(x))); f = f + 2; g = diff(f); assert (isequal (g, exp(exp(x)))) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/symprod.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symprod.m ***** error symprod (sym(1), 2, 3, 4, 5) ***** test % simple syms n assert (isequal (symprod(n, n, 1, 10), factorial(sym(10)))) assert (isequal (symprod(n, n, sym(1), sym(10)), factorial(10))) ***** test % one input syms n f = symprod (n); g = factorial (n); assert (isequal (f, g)) f = symprod (2*n); g = 2^n * factorial (n); assert (isequal (f, g)) ***** test % constant input f = symprod (sym(2)); syms x g = 2^x; assert (isequal (f, g)) ***** test % two inputs syms n f = symprod (2*n, n); g = 2^n * factorial (n); assert (isequal (f, g)) ***** test % two inputs, second is range syms n f = symprod (n, [1 6]); g = 720; assert (isequal (f, g)) f = symprod (n, [sym(1) 6]); g = 720; assert (isequal (f, g)) f = symprod (2*n, [1 6]); g = sym(2)^6*720; assert (isequal (f, g)) ***** test % three inputs, last is range syms n f = symprod (2*n, n, [1 4]); g = sym(384); assert (isequal (f, g)) f = symprod (2*n, n, [sym(1) 4]); g = sym(384); assert (isequal (f, g)) f = symprod (2, n, [sym(1) 4]); g = sym(16); assert (isequal (f, g)) ***** test % three inputs, no range syms n f = symprod (2*n, 1, 4); g = sym(384); assert (isequal (f, g)) f = symprod (5, sym(1), 3); g = sym(125); assert (isequal (f, g)) ***** test % infinite product syms a n oo zoo = sym('zoo'); assert (isequal (symprod(a, n, 1, oo), a^oo)) assert (isequal (symprod(a, n, 1, inf), a^oo)) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/setxor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/setxor.m ***** test A = sym([1 2 3]); B = sym([1 2 4]); C = setxor(A, B); D1 = sym([3 4]); D2 = sym([4 3]); assert (isequal (C, D1) || isequal (C, D2)) ***** test % one nonsym A = sym([1 2 3]); B = [1 2 4]; C = setxor(A, B); D1 = sym([3 4]); D2 = sym([4 3]); assert (isequal (C, D1) || isequal (C, D2)) ***** test % empty A = sym([1 2 3]); C = setxor(A, A); assert (isempty (C)) ***** test % empty input A = sym([1 2]); C = setxor(A, []); assert (isequal (C, A) || isequal (C, sym([2 1]))) ***** test % scalar syms x assert (isequal (setxor([x 1], x), sym(1))) assert (isempty (setxor(x, x))) ***** test A = interval(sym(1), 3); B = interval(sym(2), 5); C = setxor(A, B); D = union (interval (sym(1), 2, false, true), interval (sym(3), 5, true, false)); assert( isequal( C, D)) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/cot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cot.m ***** error cot (sym(1), 2) ***** assert (isequaln (cot (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = cot(x); f2 = cot(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cot(A); f2 = cot(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = cot (d); f = cot (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/permute.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/permute.m ***** error permute (sym(1)) ***** error permute (sym(1), 2, 3) ***** test D = round(10*rand(5,3)); A = sym(D); B = permute(A, [1 2]); assert (isequal(B, A)) B = permute(A, [2 1]); assert (isequal(B, A.')) ***** test syms x A = [1 x]; B = permute(A, [2 1]); assert (isequal(B, [1; x])) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/limit.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/limit.m ***** error limit (sym(1), 2, 3, 4, 5) ***** shared x, oo syms x oo = sym(inf); ***** assert (isa (limit(x, x, pi), 'sym')) ***** assert (isequal (limit(x, x, pi), sym(pi))) ***** assert (isequal (limit(sin(x)/x, x, 0), 1)) ***** test % left/right-hand limit assert (isequal (limit(1/x, x, 0, 'right'), oo)) assert (isequal (limit(1/x, x, 0), oo)) assert (isequal (limit(1/x, x, 0, 'left'), -oo)) assert (isequal (limit(1/x, x, oo), 0)) assert (isequal (limit(sign(x), x, 0, 'left'), -1)) assert (isequal (limit(sign(x), x, 0, 'right'), 1)) assert (isequal (limit(sign(x), x, 0, '-'), -1)) assert (isequal (limit(sign(x), x, 0, '+'), 1)) ***** test % matrix syms y A = [x 1/x x*y]; B = sym([3 sym(1)/3 3*y]); assert (isequal (limit(A, x, 3), B)) ***** test % omitting arguments syms a assert (isequal (limit(a), 0)) assert (isequal (limit(a*x+a+2), a+2)) assert (isequal (limit(a*x+a+2, 6), 7*a+2)) ***** test % constants assert (isequal (limit(sym(6)), 6)) assert (isequal (limit(sym(6), 7), 6)) assert (isequal (limit([sym(6) sym(2)], 7), [6 2])) ***** test % double constant, with sym limit a = limit (6, sym(0)); assert (isa (a, 'sym')) assert (isequal (a, sym(6))) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/erfcinv.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfcinv.m ***** error erfcinv (sym(1), 2) ***** assert (isequaln (erfcinv (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = erfcinv(x); f2 = erfcinv(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erfcinv(A); f2 = erfcinv(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erfcinv (d); f = erfcinv (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/xor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/xor.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple assert (isequal (xor(t, f), t)) assert (isequal (xor(t, t), f)) ***** test % array w = [t t f f]; z = [t f t f]; assert (isequal (xor(w, z), [f t t f])) ***** xtest % output is sym even for scalar t/f % ₣IXME: should match other bool fcns assert (isa (xor(t, f), 'sym')) ***** test % eqns syms x e = xor(x == 4, x == 5); assert (isequal (subs(e, x, [3 4 5 6]), [f t t f])) ***** test % eqns, exclusive syms x e = xor(x == 3, x^2 == 9); assert (isequal (subs(e, x, [-3 0 3]), [t f f])) ***** error xor (sym('x'), 1, 2) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/ellipticCE.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCE.m ***** error ellipticCE (sym (1), 2) ***** assert (isequal (ellipticCE (sym (0)), sym (1))) ***** assert (isequal (ellipticCE (sym (1)), sym (pi)/2)) ***** assert (double (ellipticCE (sym (pi)/4)), 1.482786927, 10e-10) ***** assert (double (ellipticCE (sym (pi)/2)), 1.775344699, 10e-10) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/nchoosek.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nchoosek.m ***** assert (isequal (nchoosek(sym(5), sym(2)), sym(10))) ***** assert (isequal (nchoosek(sym(5), 2), sym(10))) ***** assert (isequal (nchoosek(5, sym(2)), sym(10))) ***** assert (isequal (nchoosek(sym(10), 0), 1)) ***** assert (isequal (nchoosek(sym(10), -1), 0)) ***** test n = sym('n', 'nonnegative', 'integer'); assert (isequal (nchoosek (n, n), sym(1))) ***** test n = sym('n', 'integer'); q = nchoosek(n, 2); w = subs(q, n, 5); assert (isequal (w, 10)) ***** test n = sym('n', 'integer'); k = sym('k', 'integer'); q = nchoosek(n, k); w = subs(q, {n k}, {5 2}); assert (isequal (w, 10)) ***** test % negative input assert (isequal (nchoosek (sym(-2), sym(5)), sym(-6))) ***** test % complex input n = sym(1 + 3i); k = sym(5); A = nchoosek (n, k); B = gamma (n + 1) / (gamma (k + 1) * gamma (n - k + 1)); assert (double (A), double (B), -2*eps) ***** test % complex input n = sym(-2 + 3i); k = sym(1 + i); A = nchoosek (n, k); B = gamma (n + 1) / (gamma (k + 1) * gamma (n - k + 1)); assert (double (A), double (B), -2*eps) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/cosd.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosd.m ***** error cosd (sym(1), 2) ***** assert (isequaln (cosd (sym(nan)), sym(nan))) ***** test f1 = cosd (sym(1)); f2 = cosd (1); assert (double (f1), f2, -eps) ***** test D = [10 30; 110 -45]; A = sym(D); f1 = cosd (A); f2 = cosd (D); assert (double (f1), f2, -4*eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/log.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log.m ***** error log (sym(1), 2) ***** assert (isequaln (log (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = log(x); f2 = log(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = log(A); f2 = log(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = log (d); f = log (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/equationsToMatrix.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/equationsToMatrix.m ***** test syms x y z [A, B] = equationsToMatrix ([x + y - z == 1, 3*x - 2*y + z == 3, 4*x - 2*y + z + 9 == 0], [x, y, z]); a = sym ([1 1 -1; 3 -2 1; 4 -2 1]); b = sym ([1; 3; -9]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test syms x y z A = equationsToMatrix ([3*x + -3*y - 5*z == 9, 4*x - 7*y + -3*z == -1, 4*x - 9*y - 3*z + 2 == 0], [x, y, z]); a = sym ([3 -3 -5; 4 -7 -3; 4 -9 -3]); assert (isequal (A, a)) ***** test syms x y [A, B] = equationsToMatrix ([3*x + 9*y - 5 == 0, -8*x - 3*y == -2]); a = sym ([3 9; -8 -3]); b = sym ([5; -2]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test % override symvar order syms x y [A, B] = equationsToMatrix ([3*x + 9*y - 5 == 0, -8*x - 3*y == -2], [y x]); a = sym ([9 3; -3 -8]); b = sym ([5; -2]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test syms x y z [A, B] = equationsToMatrix ([x - 9*y + z == -5, -9*y*z == -5], [y, x]); a = sym ([[-9 1]; -9*z 0]); b = sym ([-5 - z; -5]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test syms x y [A, B] = equationsToMatrix (-6*x + 4*y == 5, 4*x - 4*y - 5, x, y); a = sym ([-6 4; 4 -4]); b = sym ([5; 5]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test % vertical list of equations syms x y [A, B] = equationsToMatrix ([-6*x + 4*y == 5; 4*x - 4*y - 5], [x y]); a = sym ([-6 4; 4 -4]); b = sym ([5; 5]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test syms x y [A, B] = equationsToMatrix (5*x == 1, y, x - 6*y - 7, y); a = sym ([0; 1; -6]); b = sym ([1 - 5*x; 0; -x + 7]); assert (isequal (A, a)) assert (isequal (B, b)) ***** error syms x y [A, B] = equationsToMatrix (x^2 + y^2 == 1, x - y + 1, x, y); ***** test % single equation syms x [A, B] = equationsToMatrix (3*x == 2, x); a = sym (3); b = sym (2); assert (isequal (A, a)) assert (isequal (B, b)) ***** test % single equation w/ symvar syms x [A, B] = equationsToMatrix (3*x == 2); a = sym (3); b = sym (2); assert (isequal (A, a)) assert (isequal (B, b)) ***** error syms x equationsToMatrix (3*x == 2, [x x]) 12 tests, 12 passed, 0 known failure, 0 skipped [inst/@sym/det.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/det.m ***** assert (isequal (det(sym([])), 1)) ***** test syms x y real assert (isequal (det([x 5; 7 y]), x*y-35)) ***** test syms x assert (isequal (det(x), x)) assert (isequal (det(sym(-6)), sym(-6))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/horzcat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/horzcat.m ***** test % basic syms x A = [x x]; B = horzcat(x, x); C = horzcat(x, x, x); assert (isa (A, 'sym')) assert (isa (B, 'sym')) assert (isa (C, 'sym')) assert (isequal (size(A), [1 2])) assert (isequal (size(B), [1 2])) assert (isequal (size(C), [1 3])) ***** test % basic, part 2 syms x A = [x 1]; B = [1 x]; C = [1 2 x]; assert (isa (A, 'sym')) assert (isa (B, 'sym')) assert (isa (C, 'sym')) assert (isequal (size(A), [1 2])) assert (isequal (size(B), [1 2])) assert (isequal (size(C), [1 3])) ***** test % row vectors a = [sym(1) 2]; b = [sym(3) 4]; assert (isequal ( [a b] , [1 2 3 4] )) assert (isequal ( [a 3 4] , [1 2 3 4] )) assert (isequal ( [3 4 a] , [3 4 1 2] )) assert (isequal ( [a [3 4]] , [1 2 3 4] )) assert (isequal ( [a sym(3) 4] , [1 2 3 4] )) assert (isequal ( [a [sym(3) 4]] , [1 2 3 4] )) ***** test % col vectors a = [sym(1); 2]; b = [sym(3); 4]; assert (isequal ( [a b] , [1 3; 2 4] )) assert (isequal ( [a b a] , [1 3 1; 2 4 2] )) ***** test % empty vectors v = sym(1); a = [v []]; assert (isequal (a, v)) a = [[] v []]; assert (isequal (a, v)) a = [v [] []]; assert (isequal (a, v)) ***** test % more empty vectors v = [sym(1) sym(2)]; q = sym(ones(1, 0)); assert (isequal ([v q], v)) ***** error v = [sym(1) sym(2)]; q = sym(ones(3, 0)); w = horzcat(v, q); ***** test % issue #700 A = sym ([1 2]); B = simplify (A); assert (isequal ([B A], [A B])) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/piecewise.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/piecewise.m ***** test % basic syms x real f = piecewise (abs (x) < 1, 1); assert (isnan (subs (f, -1))); assert (isequal (subs (f, 0), 1)); assert (isnan (subs (f, 1))); ***** test % heaviside syms x real f = rewrite (heaviside (x, 1 / sym (2)), 'Piecewise'); g = piecewise (x < 0, 0, x == 0, 1 / sym (2), x > 0, 1); assert (logical (simplify (f == g))); 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/besselk.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselk.m ***** test X = [1 2 3; 4 5 6]; ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; n = double(ns); A = double(besselk(ns, X)); B = besselk(n, X); assert (all (all (abs (A - B) < 2*eps*abs(A)))) ***** test % roundtrip syms x A = besselk(2, 10); q = besselk(2, x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps*abs(A)) ***** error besselk(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/find.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/find.m ***** error find (sym (1), 2, 3, 4) ***** error [x, y, z, w] = find (sym (1)) ***** test syms x y positive assert (isequal (find ([0 x 0 y]), [2 4])) assert (isequal (find ([0 x 0 y], 1), 2)) assert (isequal (find ([0 x 0 y], 1, 'first'), 2)) assert (isequal (find ([0 x 0 y], 1, 'last'), 4)) assert (isequal (find ([0 x 0 y], 2, 'last'), [2 4])) ***** test % its enough that it could be non-zero, does not have to be syms x y assert (isequal (find ([0 x+y]), 2)) ***** test % false should not be found syms x y assert (isequal (find ([x==x x==y]), 1)) assert (isequal (find ([x==y]), [])) ***** test % and/or should be treated as boolean syms x y assert (isequal (find ([or(x==y, x==2*y) x==y x==x]), 3)) ***** test % None none = pycall_sympy__ ('return None'); assert (isequal (find ([sym(0) none sym(1)]), 3)) syms x y assert (isequal (find ([x==y none x==x]), 3)) ***** test % two output syms x y A = [x 0 0; x+y 5 0]; [i, j] = find (A); assert (isequal (i, [1; 2; 2])) assert (isequal (j, [1; 1; 2])) ***** test % three output syms x y A = [x 0 0; x+y 5 0]; [i, j, v] = find (A); assert (isequal (i, [1; 2; 2])) assert (isequal (j, [1; 1; 2])) assert (isequal (v, [x; x+y; sym(5)])) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/sign.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sign.m ***** error sign (sym(1), 2) ***** assert (isequaln (sign (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sign(x); f2 = sign(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sign(A); f2 = sign(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sign (d); f = sign (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/sinhint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinhint.m ***** error sinhint (sym(1), 2) ***** xtest assert (isequaln (sinhint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (sinhint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sinhint(x); f2 = 1.057250875375728514572; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sinhint(A); f2 = 1.057250875375728514572; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sinhint (d); f = sinhint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/asind.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asind.m ***** error asind (sym(1), 2) ***** assert (isequaln (asind (sym(nan)), sym(nan))) ***** test f1 = asind (sym(1)/2); f2 = asind (1/2); assert (double (f1), f2, -eps) ***** test D = [1 2; 3 4]/4; A = sym([1 2; 3 4])/4; f1 = asind (A); f2 = asind (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/sinc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinc.m ***** error sinc (sym(1), 2) ***** assert (isequaln (sinc (sym(nan)), sym(nan))) ***** assert (isequal (sinc (sym(0)), sym(1))) ***** assert (isequal (sinc (sym(1)), sym(0))) ***** assert (isequal (sinc (-sym(1)), sym(0))) ***** assert (double (sinc (sym(pi))), sinc (pi), -10*eps) ***** test A = [-sym(1)/2 sym(1)/2 pi; -sym(7)/2 sym(71)/2 sym(101)/3]; D = double (A); assert (sinc (D), double (sinc (A)), -200*eps) ***** test A = [sym(51)/2 sym(1001)/3 sym(10001)/3 sym(100001)/3]; D = double (A); assert (sinc (D), double (sinc (A)), 1e-10) ***** test % round trip syms x A = sinc (1); f = sinc (x); h = function_handle (f); B = h (1); assert (A, B, -eps) ***** test % round trip syms x f = sinc (x); h = function_handle (f); A = sinc (1.5); B = h (1.5); assert (A, B, -eps) ***** test syms x h = function_handle (sinc (x)); A = double (sinc (sym (12)/10)); B = h (1.2); C = sinc (1.2); assert (A, B, -eps) assert (A, C, -eps) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/curl.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/curl.m ***** error curl([sym(1) 2 3], 42, 42) ***** shared x,y,z syms x y z ***** test % double const f = [1 2 3]; g = [sym(0); 0; 0]; assert (isequal (curl(f, [x y z]), g)) % should fail, calls @double: curl(f, {x y z}), g)) ***** test % div curl always 0 v = [exp(x); x*y; sin(z)]; g = curl(v); a = divergence(g, [x y z]); assert (isAlways (a == sym(0))) assert (isa (a, 'sym')) g = curl(v, [x y z]); a = divergence(g, [x y z]); assert (isAlways (a == sym(0))) assert (isa (a, 'sym')) ***** test % div curl always 0 v = [exp(x); erfc(x*y); sin(exp(x)*y+sinh(z))]; g = curl(v, [x y z]); a = divergence(g, [x y z]); assert (isAlways (a == sym(0))) assert (isa (a, 'sym')) ***** test % curl grad is vec zero f = sin(exp(x)*y+sinh(z)); g = curl(gradient(f, [x,y,z])); assert (isequal (g, sym([0;0;0]))) ***** test % 2d fcn in 2d/3d u = sin(exp(x)*y); v = x^2*y^3; vorticity2d = diff(v,x) - diff(u,y); omega = curl([u; v; 0], [x y z]); assert (isequal (omega, [0; 0; vorticity2d])) ***** error <3D vector> curl([sym(1) 2 3 4]) ***** error curl([sym(1) 2 3], {sym('x') sym('y') sym('z') sym('t')}) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/chol.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chol.m ***** error chol (sym ([1 2; 3 4])); ***** error chol (sym ([1 2; 3 4; 5 6])); ***** test A = chol(hilb(sym(2))); B = [[1 0]; sym(1)/2 sqrt(sym(3))/6]; assert( isequal( A, B )) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/nnz.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nnz.m ***** assert (nnz (sym ([1])) == 1) ***** assert (nnz (sym ([0])) == 0) ***** assert (nnz (sym ([])) == 0) ***** assert (nnz (sym ([1 0; 0 3])) == 2) ***** test syms x assert (nnz ([x 0]) == 1) ***** assert (nnz (sym (true)) == 1) ***** assert (nnz (sym (false)) == 0) ***** assert (nnz (sym (inf)) == 1) ***** assert (nnz (sym (nan)) == 1) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/besselyn.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselyn.m ***** test % roundtrip syms x A = double(besselyn(sym(2), sym(10))); q = besselyn(sym(2), x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps) ***** error yn(sym('x')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/private_disp_name.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/private_disp_name.m ***** test syms x s = private_disp_name(x, 'x'); assert (strcmp (s, 'x')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/prod.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/prod.m ***** error prod (sym(1), 2, 3) ***** error prod (sym(1), 42) ***** shared x,y,z syms x y z ***** assert (isequal (prod (x), x)) ***** assert (isequal (prod ([x y z]), x*y*z)) ***** assert (isequal (prod ([x; y; z]), x*y*z)) ***** assert (isequal (prod ([x y z], 1), [x y z])) ***** assert (isequal (prod ([x y z], 2), x*y*z)) ***** shared a,b b = [1 2; 3 4]; a = sym(b); ***** assert (isequal (prod(a), prod(b))) ***** assert (isequal (prod(a,1), prod(b,1))) ***** assert (isequal (prod(a,2), prod(b,2))) ***** test % weird inputs a = prod('xx', sym(1)); assert (isequal (a, sym('xx'))) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/columns.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/columns.m ***** test a = sym([1 2 3]); assert (columns(a) == 3) ***** test a = sym([1; 2]); assert (columns(a) == 1) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/unique.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/unique.m ***** test A = sym([1 2 3 3 5 3 2 6 5]); B = sym([1 2 3 5 6]); assert (isequal (unique(A), B)) ***** test syms x y A = [1 2 3 3 4 5 5 6 7 7 x x y y]; B = [1 2 3 4 5 6 7 x y]; assert (isequal (unique(A), B)) ***** test syms x assert (isequal (unique(x), x)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/hilb.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hilb.m ***** test A = hilb (sym(3)); B = [sym(1) sym(1)/2 sym(1)/3; sym(1)/2 sym(1)/3 sym(1)/4; sym(1)/3 sym(1)/4 sym(1)/5]; assert (isequal (A, B)) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/cond.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cond.m ***** test A = [1 2; 3 4]; B = sym(A); k1 = cond(A); k2 = cond(B); k3 = double(k2); assert (k1 - k3 <= 100*eps) ***** test % matrix with symbols syms x positive A = [x 0; sym(0) 2*x]; k1 = cond(A); assert (isequal (k1, sym(2))) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/hessian.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hessian.m ***** error hessian (sym(1), 2, 3) ***** error hessian ([sym(1) sym(2)]) ***** shared x,y,z syms x y z ***** test % 1D f = x^2; assert (isequal (hessian(f), diff(f,x,x))) assert (isequal (hessian(f,{x}), diff(f,x,x))) assert (isequal (hessian(f,x), diff(f,x,x))) ***** test % const f = sym(1); g = sym(0); assert (isequal (hessian(f), g)) assert (isequal (hessian(f,x), g)) ***** test % double const f = 1; g = sym(0); assert (isequal (hessian(f,x), g)) ***** test % linear f = 42*x; g = sym(0); assert (isequal (hessian(f), g)) assert (isequal (hessian(f,x), g)) ***** test % linear f = 42*x - sym('a')*y; g = [0 0; 0 0]; assert (isequal (hessian(f, {x y}), g)) ***** test % 2d f = x*cos(y); g = [0 -sin(y); -sin(y) -f]; assert (isequal (hessian(f), g)) assert (isequal (hessian(f, {x y}), g)) ***** test % 3d f = x*cos(z); Hexp = [0 0 -sin(z); sym(0) 0 0; -sin(z) 0 -f]; H = hessian(f, {x y z}); assert (isequal (H, Hexp)) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/chebyshevU.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chebyshevU.m ***** error chebyshevU (sym(1)) ***** error chebyshevU (sym(1), 2, 3) ***** assert (isequaln (chebyshevU (2, sym(nan)), sym(nan))) ***** shared x syms x ***** assert(isequal(chebyshevU(0, x), sym(1))) ***** assert(isequal(chebyshevU(1, x), 2*x)) ***** assert(isequal(chebyshevU(2, x), 4*x*x - 1)) ***** assert(isequal(chebyshevU([0 1 2], x), [sym(1) 2*x (4*x*x-1)])) ***** test % round trip syms n z f = chebyshevU (n, z); h = function_handle (f, 'vars', [n z]); A = h (1.1, 2.2); B = chebyshevU (1.1, 2.2); assert (A, B) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/taylor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/taylor.m ***** test syms x f = exp(x); expected = 1 + x + x^2/2 + x^3/6 + x^4/24 + x^5/120; assert (isequal (taylor(f), expected)) assert (isequal (taylor(f,x), expected)) assert (isequal (taylor(f,x,0), expected)) ***** test syms x f = exp(x); expected = 1 + x + x^2/2 + x^3/6 + x^4/24; assert (isequal (taylor(f,'order',5), expected)) assert (isequal (taylor(f,x,'order',5), expected)) assert (isequal (taylor(f,x,0,'order',5), expected)) ***** test % key/value ordering doesn't matter syms x f = exp(x); g1 = taylor(f, 'expansionPoint', 1, 'order', 3); g2 = taylor(f, 'order', 3, 'expansionPoint', 1); assert (isequal (g1, g2)) ***** test syms x f = x^2; assert (isequal (taylor(f,x,0,'order',0), 0)) assert (isequal (taylor(f,x,0,'order',1), 0)) assert (isequal (taylor(f,x,0,'order',2), 0)) assert (isequal (taylor(f,x,0,'order',3), x^2)) assert (isequal (taylor(f,x,0,'order',4), x^2)) ***** test syms x y f = exp(x)+exp(y); expected = 2 + x + x^2/2 + x^3/6 + x^4/24 + y + y^2/2 + y^3/6 + y^4/24; assert (isAlways(taylor(f,[x,y],'order',5)== expected)) assert (isAlways(taylor(f,[x,y],[0,0],'order',5) == expected)) ***** test % key/value ordering doesn't matter syms x f = exp(x); g1 = taylor(f, 'expansionPoint', 1, 'order', 3); g2 = taylor(f, 'order', 3, 'expansionPoint', 1); assert (isequal (g1, g2)) ***** test syms x f = x^2; assert (isequal (taylor(f,x,0,'order',0), 0)) assert (isequal (taylor(f,x,0,'order',1), 0)) assert (isequal (taylor(f,x,0,'order',2), 0)) assert (isequal (taylor(f,x,0,'order',3), x^2)) assert (isequal (taylor(f,x,0,'order',4), x^2)) ***** test % syms for a and order syms x f = x^2; assert (isequal (taylor(f,x,sym(0),'order',sym(2)), 0)) assert (isequal (taylor(f,x,sym(0),'order',sym(4)), x^2)) ***** test syms x y f = exp (x^2 + y^2); expected = 1+ x^2 +y^2 + x^4/2 + x^2*y^2 + y^4/2; assert (isAlways(taylor(f,[x,y],'order',5)== expected)) assert (isAlways(taylor(f,[x,y],'expansionPoint', [0,0],'order',5) == expected)) ***** test syms x y f = sqrt(1+x^2+y^2); expected = 1+ x^2/2 +y^2/2 - x^4/8 - x^2*y^2/4 - y^4/8; assert (isAlways(taylor(f,[x,y],'order',6)== expected)) assert (isAlways(taylor(f,[x,y],'expansionPoint', [0,0],'order',5) == expected)) ***** test syms x y f = sin (x^2 + y^2); expected = sin(sym(1))+2*cos(sym(1))*(x-1)+(cos(sym(1))-2*sin(sym(1)))*(x-1)^2 + cos(sym(1))*y^2; assert (isAlways(taylor(f,[x,y],'expansionPoint', [1,0],'order',3) == expected)) ***** test % key/value ordering doesn't matter syms x y f = exp(x+y); g1 = taylor(f, 'expansionPoint',1, 'order', 3); g2 = taylor(f, 'order', 3, 'expansionPoint',1); assert (isAlways(g1== g2)) ***** test syms x y f = x^2 + y^2; assert (isAlways(taylor(f,[x,y],[0,0],'order',0)== sym(0) )) assert (isAlways(taylor(f,[x,y],[0,0],'order',1)== sym(0) )) assert (isAlways(taylor(f,[x,y],[0,0],'order',2)== sym(0) )) assert (isAlways(taylor(f,[x,y],[0,0],'order',3)== sym(x^2 + y^2))) assert (isAlways(taylor(f,[x,y],[0,0],'order',4)== sym(x^2 + y^2))) ***** test % expansion point syms x a f = x^2; g = taylor(f,x,2); assert (isequal (simplify(g), f)) assert (isequal (g, 4*x+(x-2)^2-4)) g = taylor(f,x,a); assert (isequal (simplify(g), f)) ***** test % wrong order-1 series with nonzero expansion pt: % upstream bug https://github.com/sympy/sympy/issues/9351 syms x g = x^2 + 2*x + 3; h = taylor (g, x, 4, 'order', 1); assert (isequal (h, 27)) ***** test syms x y z g = x^2 + 2*y + 3*z; h = taylor (g, [x,y,z], 'order', 4); assert (isAlways(h == g)) ; ***** test syms x y z g = sin(x*y*z); h = taylor (g, [x,y,z], 'order', 4); assert (isAlways(h == x*y*z)) ; ***** error syms x y taylor(0, [x, y], [1, 2, 3]); 18 tests, 18 passed, 0 known failure, 0 skipped [inst/@sym/ismember.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ismember.m ***** assert (ismember (2, interval(sym(0),2))) ***** assert (~ismember (3, interval(sym(0),2))) ***** test % something in a matrix syms x A = [1 x; sym(pi) 4]; assert (ismember (sym(pi), A)) assert (ismember (x, A)) assert (~ismember (2, A)) ***** test % set syms x S = finiteset(2, sym(pi), x); assert (ismember (x, S)) ***** test % set with positive symbol syms p positive S = finiteset(2, sym(pi), p); assert (~ismember (-1, S)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/matlabFunction.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/matlabFunction.m ***** test % autodetect inputs syms x y s = warning('off', 'OctSymPy:function_handle:nocodegen'); h = matlabFunction(2*x*y, x+y); warning(s) [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/length.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/length.m ***** test a = sym([1 2 3]); assert(length(a) == 3); ***** test % 2D array a = sym([1 2 3; 4 5 6]); assert(length(a) == 3); ***** test % empty a = sym([]); assert(length(a) == 0); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/lu.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lu.m ***** test % scalar [l, u, p] = lu(sym(6)); assert (isequal (l, sym(1))) assert (isequal (u, sym(6))) assert (isequal (p, sym(1))) syms x [l, u, p] = lu(x); assert (isequal (l*u, p*x)) [l, u] = lu(x); assert (isequal (l*u, x)) ***** test % perm A = sym(fliplr(2*eye(3))); [L, U, P] = lu(A); assert (isequal (L*U, P*A)) [L, U, P] = lu(A, 'matrix'); assert (isequal (L*U, P*A)) [L, U, p] = lu(A, 'vector'); assert (isequal (L*U, A(p,:))) [L, U] = lu(A); assert (isequal (L*U, A)) ***** test % p is col vectpr A = sym([0 2; 3 4]); [L, U, p] = lu(A, 'vector'); assert(iscolumn(p)) ***** test % simple matrix A = [1 2; 3 4]; B = sym(A); [L, U, P] = lu(B); assert (isequal (L*U, P*B)) assert (isequal (U(2,1), sym(0))) % needs pivot A = [0 2; 3 4]; B = sym(A); [L, U, P] = lu(B); [Ld, Ud, Pd] = lu(A); assert (isequal (L*U, P*A)) assert (isequal (U(2,1), sym(0))) % matches regular LU assert ( max(max(double(L)-Ld)) <= 10*eps) assert ( max(max(double(U)-Ud)) <= 10*eps) assert ( isequal (P, Pd)) ***** test % rectangular A = sym([1 2; 3 4; 5 6]); [L, U] = lu (A); assert (isequal (L*U, A)) ***** test % rectangular A = sym([1 2 3; 4 5 6]); [L, U] = lu (A); assert (isequal (L*U, A)) ***** test % rectangular, repeated row A = sym([1 2 3; 2 4 6]); [L, U] = lu (A); assert (isequal (L*U, A)) ***** test % rectangular, needs permutation A = sym([0 0 0; 1 2 3]); [L, U] = lu (A); assert (isequal (L*U, A)) assert (~isequal (tril (L), L)) [L, U, P] = lu (A); assert (isequal (L*U, P*A)) assert (isequal (tril (L), L)) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/cross.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cross.m ***** error cross (sym(1), 2, 3) ***** test a = sym([1; 0; 0]); b = sym([0; 1; 0]); c = cross(a, b); assert (isequal (c, sym([0; 0; 1]))) ***** test syms x a = sym([x; 0; 0]); b = sym([0; 1; 0]); c = cross(a, b); assert (isequal (c, sym([0; 0; x]))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/sech.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sech.m ***** error sech (sym(1), 2) ***** assert (isequaln (sech (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sech(x); f2 = sech(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sech(A); f2 = sech(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sech (d); f = sech (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/colon.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/colon.m ***** test a = sym(1):5; b = sym(1:5); assert(isequal(a,b)); a = 1:sym(5); b = sym(1:5); assert(isequal(a,b)); ***** test a = 2:sym(2):8; b = sym(2:2:8); assert(isequal(a,b)); ***** test a = sym(10):-2:-4; b = sym(10:-2:-4); assert(isequal(a,b)); ***** test % symbolic intervals p = sym(pi); L = 0:p/4:p; assert(isa(L,'sym')); assert(isequal(L, [0 p/4 p/2 3*p/4 p])); ***** test % mixed symbolic and double intervals p = sym(pi); s = warning ('off', 'OctSymPy:sym:rationalapprox'); L = 0.1:(sym(pi)/3):2.3; warning(s) assert(isa(L,'sym')); t = sym(1)/10; assert(isequal(L, [t p/3+t 2*p/3+t])); ***** error syms x; a = 0:x; ***** error syms x; a = 1:x; 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/factorial.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/factorial.m ***** error factorial (sym(1), 2) ***** xtest assert (isequaln (factorial (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (factorial (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = factorial(x); f2 = factorial(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = factorial(A); f2 = factorial(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = factorial (d); f = factorial (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/atand.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atand.m ***** error atand (sym(1), 2) ***** assert (isequaln (atand (sym(nan)), sym(nan))) ***** test f1 = atand (sym(1)/2); f2 = atand (1/2); assert (double (f1), f2, -eps) ***** test D = [1 2; 3 4]/4; A = sym([1 2; 3 4])/4; f1 = atand (A); f2 = atand (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/collect.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/collect.m ***** test syms x y z f = [x*y + x - 3 + 2*x^2 - z*x^3 + x^3]; assert (logical (collect (f,x) == ((x^3)*(1 - z) + 2*(x^2) + x*(y + 1) - 3))) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/max.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/max.m ***** test % simple assert (isequal (max([sym(10) sym(11)]), sym(11))) ***** test syms x y assert (isequal (children (max (x, y)), [x y])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/ifourier.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ifourier.m ***** error ifourier (sym(1), 2, 3, 4) ***** test % matlab SMT compat syms t r u x w Pi=sym('pi'); assert(logical( ifourier(exp(-abs(w))) == 1/(Pi*(x^2 + 1)) )) assert(logical( ifourier(exp(-abs(x))) == 1/(Pi*(t^2 + 1)) )) assert(logical( ifourier(exp(-abs(r)),u) == 1/(Pi*(u^2 + 1)) )) assert(logical( ifourier(exp(-abs(r)),r,u) == 1/(Pi*(u^2 + 1)) )) ***** test % basic syms x w Pi=sym('pi'); assert(logical( ifourier(exp(-w^2/4)) == 1/(sqrt(Pi)*exp(x^2)) )) assert(logical( ifourier(sqrt(Pi)/exp(w^2/4)) == exp(-x^2) )) ***** test % Dirac delta tests syms x w Pi=sym('pi'); assert(logical( ifourier(dirac(w-2)) == exp(2*1i*x)/(2*Pi) )) assert (logical( ifourier(sym(2), w, x) == 2*dirac(x) )) ***** test % advanced test syms x w c d Pi=sym('pi'); f=(Pi*(dirac(x-c)+dirac(x+c))+2*Pi*1i*(-dirac(x+3*d)+dirac(x-3*d))+2/(x^2+1))/(2*Pi); assert(logical( simplify(ifourier(cos(c*w)+2*sin(3*d*w)+exp(-abs(w)))-f) == 0 )) ***** xtest % Inverse Fourier transform cannot recover non-smooth functions % SymPy cannot evaluate correctly?? syms x w assert(logical( ifourier(2/(w^2 + 1)) == exp(-abs(x)) )) assert(logical( ifourier(2/(w^2 + 1)) == heaviside(x)/exp(x) + heaviside(-x)*exp(x) )) assert(logical( ifourier(-(w*4)/(w^4 + 2*w^2 + 1) )== -x*exp(-abs(x))*1i )) assert(logical( ifourier(-(w*4)/(w^4 + 2*w^2 + 1) )== -x*(heaviside(x)/exp(x) + heaviside(-x)*exp(x))*1i )) !!!!! known failure assert (logical (ifourier (2 / (w ^ 2 + 1)) == exp (-abs (x)))) failed ***** error ifourier (sym('k', 'positive')*sym('k')) ***** test % SMT compact, prefers k over symvar syms k x y assert (isequal (ifourier(y*exp(-k^2/4)), y/sqrt(sym(pi))*exp(-x^2))) 8 tests, 7 passed, 1 known failure, 0 skipped [inst/@sym/orth.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/orth.m ***** test A = [1 2; 3 6]; K = orth(A); L = orth(sym(A)); assert (isequal (size(L), [2 1])) dif1 = abs (double(L) - K); dif2 = abs (double(L) + K); assert (all (dif1 < 1e-15) || all (dif2 < 1e-15)) ***** test A = [1; 3]; K = orth(A); L = orth(sym(A)); assert (isequal (size(L), [2 1])) dif1 = abs (double(L) - K); dif2 = abs (double(L) + K); assert (all (dif1 < 1e-16) || all (dif2 < 1e-16)) ***** test A = sym([1 2; 3 4]); L = orth(sym(A)); assert (isequal (size(L), [2 2])) v = L(:, 1); w = L(:, 2); assert (isAlways (v' * v == 1)) assert (isAlways (w' * w == 1)) assert (isAlways (v' * w == 0)) ***** test A = sym([1 1; 1 0; 1 0]); L = orth(sym(A)); assert (isequal (size(L), [3 2])) v = L(:, 1); w = L(:, 2); assert (isAlways (v' * v == 1)) assert (isAlways (w' * w == 1)) assert (isAlways (v' * w == 0)) % y and z components must be equal assert (isAlways (v(2) == v(3))) assert (isAlways (w(2) == w(3))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/mpower.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mpower.m ***** test syms x assert(isequal(x^(sym(4)/5), x.^(sym(4)/5))) ***** test % integer powers of scalars syms x assert (isequal (x^2, x*x)) assert (isequal (x^sym(3), x*x*x)) ***** test % array ^ integer syms x y A = [x 2; y 4]; assert (isequal (A^2, A*A)) assert (isequal (simplify(A^3 - A*A*A), [0 0; 0 0])) ***** test % array ^ rational Ad = [1 2; 0 3]; A = sym(Ad); B = A^(sym(1)/3); Bd = Ad^(1/3); assert (max(max(abs(double(B) - Bd))) < 1e-14) ***** test % non-integer power A = sym([1 2; 0 3]); B = A^pi; C = [1 -1+3^sym(pi); 0 sym(3)^pi]; assert (isequal (B, C)) ***** test % matpow syms n A = sym([1 2; 3 4]); B = A^n; C = 10 + B + B^2; D = subs(C, n, 1); E = 10 + A + A^2; assert (isequal (simplify(D), simplify(E))) ***** test % matpow, sub in zero gives identity A = sym([1 2; 0 3]); syms n; B = A^n; C = subs(B, n, 1); assert (isequal (C, A)) C = subs(B, n, 0); assert (isequal (C, sym(eye(2)))) ***** xtest % scalar^array (e.g., defined by matrix exponential) not implemented in SymPy? % on 1.0 < SymPy <= 1.5.1, you can form the expression but still cannot eval syms x A = [1 2; 3 4]; B = x^A; assert (strcmp (regexprep (disp (B, 'flat'), '\s+', ''), 'x**Matrix([[1,2],[3,4]])')) % sub in and compare to double Bs = subs(B, x, sym(3)/2); D1 = double(Bs); D2 = (3/2)^[1 2; 3 4]; assert (max(max(abs(D1 - D2))) < 1e-14) !!!!! known failure Python exception: TypeError: unsupported operand type(s) for ** or pow(): 'Symbol' and 'MutableDenseMatrix' occurred at line 2 of the Python code block: return x**y ***** error A = sym([1 2; 3 4]); B = A^A; 9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/has.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/has.m ***** shared A, x, y syms x y A = [sym(pi) 2*sym(pi); x*y x+y]; ***** assert (isequal (has(A, x), [false false; true true])); ***** assert (isequal (has(A, x+y), [false false; false true])); ***** assert (isequal (has(A, 2), [false true; false false])); ***** assert (isequal (has(A, sym(pi)), [true true; false false])); 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/formula.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/formula.m ***** test syms x assert (isequal (formula(x), x)) assert (isequal (formula(2*x), 2*x)) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/repmat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/repmat.m ***** test % simple syms x A = [x x x; x x x]; assert (isequal (repmat(x, 2, 3), A)) ***** test % block cf double A = [1 2 3; 4 5 6]; B = sym(A); C = repmat(A, 2, 3); D = repmat(B, 2, 3); assert (isequal (C, D)) ***** test % empty A = repmat(sym([]), 2, 3); assert (isempty(A)); assert (isequal (size(A), [0 0])) ***** test % more empties A = repmat(sym(pi), [0 0]); assert (isequal (size(A), [0 0])) A = repmat(sym(pi), [0 3]); assert (isequal (size(A), [0 3])) A = repmat(sym(pi), [2 0]); assert (isequal (size(A), [2 0])) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/mldivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mldivide.m ***** test % scalar syms x assert (isa( x\x, 'sym')) assert (isequal( x\x, sym(1))) assert (isa( 2\x, 'sym')) assert (isa( x\2, 'sym')) ***** test % scalar \ matrix: easy, no system D = 2*[0 1; 2 3]; A = sym(D); assert (isequal ( 2 \ A , D/2 )) assert (isequal ( sym(2) \ A , D/2 )) ***** test % singular matrix A = sym([1 2; 2 4]); b = sym([5; 10]); x = A \ b; syms c1 y = [-2*c1 + 5; c1]; assert (isequal (x, y)) ***** test % singular matrix, mult RHS A = sym([1 2; 2 4]); B = sym([[5; 10] [0; 2] [0; 0]]); x = A \ B; syms c1 c5 y = [-2*c1 + 5 nan -2*c5; c1 nan c5]; assert (isequaln (x, y)) ***** warning % vpa, nearly singular matrix A = sym([1 2; 2 4]); A(1,1) = vpa('1.001'); b = sym([1; 2]); x = A \ b; y = [sym(0); vpa('0.5')]; assert (isequal (x, y)) ***** warning % vpa, singular rhs A = sym([1 2; 2 4]); b = [vpa('1.01'); vpa('2')]; x = A \ b; assert (all(isnan(x))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/erf.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erf.m ***** error erf (sym(1), 2) ***** assert (isequaln (erf (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = erf(x); f2 = erf(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erf(A); f2 = erf(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erf (d); f = erf (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isprime.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isprime.m ***** assert (isprime (sym(5))) ***** assert (~isprime (sym(4))) ***** assert (~isprime (sym(0))) ***** assert (~isprime (sym(1))) ***** test a = [5 7 6; 1 2 337]; assert (isequal (isprime (a), [true true false; false true true])) ***** assert (~isprime(sym(-4))) ***** assert (~isprime(sym(4i))) ***** assert (~isprime(sym(3)/5)) ***** error isprime(sym('x')); 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/jordan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/jordan.m ***** test % basic A = sym ([2 1 0 0; 0 2 1 0; 0 0 3 0; 0 1 -1 3]); [V, J] = jordan (A); assert (isequal (inv (V) * A * V, J)); assert (isequal (J, sym ([2 1 0 0; 0 2 0 0; 0 0 3 0; 0 0 0 3]))) % the first 2 generalized eigenvectors form a cycle assert (isequal ((A - J(1, 1) * eye (4)) * V(:, 1), zeros (4, 1))); assert (isequal ((A - J(2, 2) * eye (4)) * V(:, 2), V(:, 1))); % the last 2 generalized eigenvectors are eigenvectors assert (isequal ((A - J(3, 3) * eye (4)) * V(:, 3), zeros (4, 1))); assert (isequal ((A - J(4, 4) * eye (4)) * V(:, 4), zeros (4, 1))); ***** test % scalars assert (isequal (jordan (sym (-10)), sym (-10))); assert (isequal (jordan (sym ('x')), sym ('x'))); ***** test % diagonal matrices A = diag (sym ([6 6 7])); [V1, D] = eig (A); [V2, J] = jordan (A); assert (isequal (V1, V2)); assert (isequal (D, J)); ***** test % matrices of unknown entries A = [sym('a') sym('b'); sym('c') sym('d')]; [V, D] = eig (A); J = jordan (A); assert (isequal (simplify (D), simplify (J))); ***** test % matrices of mixed entries A = [sym('x')+9 sym('y'); sym(0) 6]; [V, D] = eig (A); J = jordan (A); assert (isequal (simplify (D), simplify (J))); 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/besselj.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselj.m ***** test X = [1 2 3; 4 5 6]; ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; n = double(ns); A = double(besselj(ns, X)); B = besselj(n, X); assert (all (all (abs (A - B) < 50*eps*abs(A)))) ***** test % roundtrip syms x A = besselj(2, 10); q = besselj(2, x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps*abs(A)) ***** error besselj(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/heaviside.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/heaviside.m ***** error heaviside (sym(1), 2, 3) ***** assert (isequal (heaviside (sym(1)), sym(1))) ***** assert (isequal (heaviside (-sym(1)), sym(0))) ***** assert (double (heaviside (1)), heaviside (1)) ***** test D = [1 -1; -10 20]; A = sym(D); assert (double (heaviside (A)), heaviside (D)) ***** test H0 = sym([1 -2 0; 3 0 pi]); A = heaviside (sym(0), H0); assert (isequal (A, H0)) ***** test A = heaviside ([-1 0 1], sym(1)/2); assert (isequal (A, [0 sym(1)/2 1])) ***** test A = heaviside ([-1 0 1], sym(1)/2); assert (isequal (A, [0 sym(1)/2 1])) ***** assert (isequaln (heaviside (sym(nan)), sym(nan))) ***** test assert (isequaln (heaviside (sym(nan), sym(nan)), sym(nan))) assert (isequaln (heaviside (0, sym(nan)), sym(nan))) assert (isequaln (heaviside (2, sym(nan)), sym(1))) assert (isequaln (heaviside (-2, sym(nan)), sym(0))) ***** test % round trip syms x A = heaviside (1); f = heaviside (x); h = function_handle (f); B = h (1); assert (A, B, -eps) ***** test % round trip syms x h0 f = heaviside (x, h0); h = function_handle (f, 'vars', {x h0}); A = heaviside (1, 1/2); B = h (1, 1/2); assert (A, B, -eps) A = heaviside (0, 1/2); B = h (0, 1/2); assert (A, B, -eps) 12 tests, 12 passed, 0 known failure, 0 skipped [inst/@sym/fliplr.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fliplr.m ***** test % simple syms x A = [x 2; sym(pi) x]; B = [2 x; x sym(pi)]; assert (isequal (fliplr(A), B)) ***** test % simple, odd # cols syms x A = [x 2 sym(pi); x 1 2]; B = [sym(pi) 2 x; 2 1 x]; assert (isequal (fliplr(A), B)) ***** test % scalar syms x assert (isequal (fliplr(x), x)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/resize.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/resize.m ***** test B = sym([1 0 0; 0 0 0]); assert (isequal (resize (sym(1), 2, 3), B)) assert (isequal (resize (sym(1), [2 3]), B)) ***** test B = sym([1 0; 0 0]); assert (isequal (resize (sym(1), 2), B)) ***** test A = sym([pi 2; 3 4]); assert (isequal (resize (A, 1), sym(pi))) ***** assert (isequal (size (resize (sym(1), 0, 0)), [0 0])) ***** assert (isequal (size (resize (sym(1), 6, 0)), [6 0])) ***** assert (isequal (size (resize (sym(1), 0, 3)), [0 3])) ***** error resize (sym(1)) ***** error resize (sym(1), 2, 3, 4) ***** error resize (sym(1), [2 3 4]) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/horner.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/horner.m ***** error horner (sym(1), 2, 3) ***** assert (isAlways (horner(sym(1)) == 1)) ***** test syms x assert (isAlways (horner(x) == x)) ***** test syms x a p = a^2 + a*x + 2*a + 2*x; assert (isequal (horner (p, a), a*(a+x+2) + 2*x)) q = a^2 + 2*a + x*(a + 2); assert (isequal (horner (p, x), q)) assert (isequal (horner (p), q)) ***** test syms x p = poly2sym ([2 4 6 8], x); q = horner (p); assert (isAlways (p == q)) assert (isAlways (horner(2*x^3 + 4*x^2 + 6*x + 8) == q)) ***** test % non-sym input syms x assert (isequal (horner(6, x), sym(6))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/degree.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/degree.m ***** error degree (sym(1), 2, 3) ***** test syms x assert (isequal (degree(x^3), 3)) assert (isequal (degree(x^3 + 6), 3)) ***** test % specify variable syms x y p = x^2 + y*x + 1; assert (isequal (degree(p), 2)) assert (isequal (degree(p, x), 2)) assert (isequal (degree(p, y), 1)) ***** test syms x a oo assert (isequal (degree(x^3, a), 0)) assert (isequal (degree(sym(1), a), 0)) assert (isequal (degree(sym(0), a), -oo)) ***** xtest % constant inputs syms oo assert (isequal (degree(sym(1)), 0)) assert (isequal (degree(sym(0)), -oo)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/erfinv.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfinv.m ***** error erfinv (sym(1), 2) ***** assert (isequaln (erfinv (sym(nan)), sym(nan))) ***** shared x, d d = 1/2; x = sym('1/2'); ***** test f1 = erfinv(x); f2 = erfinv(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erfinv(A); f2 = erfinv(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erfinv (d); f = erfinv (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/arg.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/arg.m ***** test syms x assert (isequal (angle (x), arg (x))); 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/conj.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/conj.m ***** test a = sym(6); b = sym(5i); assert (isequal (conj(a), a)) assert (isequal (conj(b), -b)) assert (isequal (conj(a+b), a-b)) ***** test syms x assert (isequal (conj(conj(x)), x)) ***** test syms x real assert (isequal (conj(x), x)) ***** test % array syms x A = [x 6+1i; sym(1) x+2i]; B = [conj(x) 6-1i; sym(1) conj(x)-2i]; assert (isequal (conj(A), B)) ***** test % true/false t = sym(true); f = sym(false); assert (isequal ( conj(t), t)) assert (isequal ( conj(f), f)) ***** test % round trip syms x d = 3 - 5i; f = conj (x); A = conj (d); h = function_handle (f); B = h (d); assert (A, B) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/sinh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinh.m ***** error sinh (sym(1), 2) ***** assert (isequaln (sinh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sinh(x); f2 = sinh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sinh(A); f2 = sinh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sinh (d); f = sinh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/minus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/minus.m ***** test % scalar syms x assert (isa (x-1, 'sym')) assert (isa (x-x, 'sym')) assert (isequal (x-x, sym(0))) ***** test % matrices D = [0 1; 2 3]; A = sym(D); DZ = D - D; assert (isequal ( A - D , DZ )) assert (isequal ( A - A , DZ )) assert (isequal ( D - A , DZ )) assert (isequal ( A - 2 , D - 2 )) assert (isequal ( 4 - A , 4 - D )) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/rows.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rows.m ***** test a = sym([1 2 3]); assert (rows(a) == 1) ***** test a = sym([1 2 3; 4 5 6]); assert (rows(a) == 2) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/rdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rdivide.m ***** test % scalar syms x assert (isa (x ./ 1, 'sym')) assert (isa (x ./ x, 'sym')) assert (isequal (x ./ 1, x)) assert (isequal (x ./ x, sym(1))) ***** test % matrix-scalar D = 2*[0 1; 2 3]; A = sym(D); assert (isequal ( A./2 , D/2 )) assert (isequal ( A./sym(2) , D/2 )) assert (isequal ( D./sym(2) , D/2 )) ***** test % matrix ./ matrix D = [1 2; 3 4]; A = sym(D); assert (isequal ( A./A , D./D )) assert (isequal ( A./D , D./D )) assert (isequal ( D./A , D./D )) ***** test % matrix ./ matrix with symbols syms x y A = [x y; x^2 2*y]; B = [y x; x y]; assert (isequal ( A./A , sym(ones(2,2)) )) assert (isequal ( A./B , [x/y y/x; x 2] )) ***** test % scalar ./ matrix D = [1 2; 3 4]; A = sym(D); assert (isequal ( 12./A , 12./D )) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/asech.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asech.m ***** error asech (sym(1), 2) ***** assert (isequaln (asech (sym(nan)), sym(nan))) ***** shared x, d d = 1/2; x = sym('1/2'); ***** test f1 = asech(x); f2 = asech(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = asech(A); f2 = asech(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = asech (d); f = asech (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/signIm.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/signIm.m ***** assert (isequal (signIm (sym(1)), sym(0))) ***** assert (isequal (signIm (sym(1) + 2i), sym(1))) ***** assert (isequal (signIm (sym(1) - 2i), sym(-1))) ***** test % intermediate A looks bit weird, but it works syms z A = signIm (z); assert (isequal (subs(A, z, 3+sym(4i)), sym(1))) assert (isequal (subs(A, z, 3-sym(4i)), sym(-1))) ***** test % really a @sym/sign test, but that one is autogen z = 3 + sym(4i); A = sign (z); B = z / abs(z); assert (double (A), double (B), eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/bernoulli.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/bernoulli.m ***** error bernoulli (sym(1), 2, 3) ***** assert (isequal (bernoulli (sym(8)), -sym(1)/30)) ***** assert (isequal (bernoulli (sym(9)), sym(0))) ***** test syms x assert (isequal (bernoulli(3,x), x^3 - 3*x^2/2 + x/2)) ***** test % two different definitions in literature assert (isequal (abs (bernoulli (sym(1))), sym(1)/2)) ***** test % we use B_1 = 1/2 if (pycall_sympy__ ('return Version(spver) >= Version("1.12.dev")')) assert (isequal (bernoulli (sym(1)), sym(1)/2)) end ***** test m = sym([0 2; 8 888889]); A = bernoulli (m); B = [1 sym(1)/6; -sym(1)/30 0]; assert (isequal (A, B)) ***** test syms x A = bernoulli ([0; 1], x); B = [sym(1); x - sym(1)/2]; assert (isequal (A, B)) ***** test % round trip syms n x f = bernoulli (n, x); h = function_handle (f, 'vars', [n x]); A = h (2, 2.2); B = bernoulli (2, 2.2); assert (A, B) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/symreplace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symreplace.m ***** test % start with assumptions on x then remove them syms x positive f = x*10; symreplace(x, sym('x')) assert(isempty(assumptions(x))) ***** test % replace x with y syms x f = x*10; symreplace(x, sym('y')) assert( isequal (f, 10*sym('y'))) ***** test % gets inside cells syms x f = {x 1 2 {3 4*x}}; symreplace(x, sym('y')) syms y assert( isequal (f{1}, y)) assert( isequal (f{4}{2}, 4*y)) ***** test % gets inside structs/cells syms x my.foo = {x 1 2 {3 4*x}}; my.bar = x; g = {'ride' my 'motor' 'sicle'}; symreplace(x, sym('y')) syms y f = g{2}; assert( isequal (f.foo{1}, y)) assert( isequal (f.foo{4}{2}, 4*y)) assert( isequal (f.bar, y)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/isequal.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isequal.m ***** test a = sym([1 2]); b = a; assert (isequal (a, b)) b(1) = 42; assert (~isequal (a, b)) ***** test a = sym([1 2; 3 4]); b = a; assert (isequal (a, b)) b(1) = 42; assert (~isequal (a, b)) ***** test a = sym([nan; 2]); b = a; assert (~isequal (a, b)) ***** test % proper nan treatment a = sym([nan 2; 3 4]); b = a; assert (~isequal (a, b)) ***** test % more than two arrays a = sym([1 2 3]); b = a; c = a; assert (isequal (a, b, c)) c(1) = 42; assert (~isequal (a, b, c)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/cat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cat.m ***** test % mostly tested in horzcat, vertcat: one for good measure syms x assert (isequal (cat(1, x, x), [x x])) assert (isequal (cat(2, x, x), [x; x])) ***** error cat(3, sym(2), sym(3)) ***** error cat(0, sym(2), sym(3)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/divisors.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/divisors.m ***** test assert( isequal( divisors(sym(150)), divisors(sym(-150)) )) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/ldivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ldivide.m ***** test % scalar syms x assert (isa (x .\ 1, 'sym')) assert (isa (x .\ x, 'sym')) assert (isequal (x .\ 1, 1/x)) assert (isequal (x .\ x, sym(1))) ***** test % matrix-scalar D = [1 1; 2 3]; A = sym(D); assert (isequal ( A .\ 6 , D .\ 6 )) assert (isequal ( A .\ sym(6) , D .\ 6 )) assert (isequal ( D .\ sym(6) , D .\ 6 )) ***** test % matrix-matrix D = [1 2; 3 4]; A = sym(D); assert (isequal ( A .\ A , D .\ D )) assert (isequal ( A .\ D , D .\ D )) assert (isequal ( D .\ A , D .\ D )) ***** test % matrix .\ matrix with symbols syms x y A = [x y; x^2 2*y]; B = [y x; x y]; assert (isequal ( A .\ A , sym(ones(2, 2)) )) assert (isequal ( B .\ A , [x/y y/x; x 2] )) ***** test % scalar .\ matrix D = 3*[1 2; 3 4]; A = sym(D); assert (isequal ( 3 .\ A , 3 .\ D )) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/vertcat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/vertcat.m ***** test % basic syms x A = [x; x]; B = vertcat(x, x); C = vertcat(x, x, x); assert (isa (A, 'sym')) assert (isa (B, 'sym')) assert (isa (C, 'sym')) assert (isequal (size(A), [2 1])) assert (isequal (size(B), [2 1])) assert (isequal (size(C), [3 1])) ***** test % basic, part 2 syms x A = [x; 1]; B = [1; x]; C = [1; 2; x]; assert (isa (A, 'sym')) assert (isa (B, 'sym')) assert (isa (C, 'sym')) assert (isequal (size(A), [2 1])) assert (isequal (size(B), [2 1])) assert (isequal (size(C), [3 1])) ***** test % column vectors a = [sym(1); 2]; b = [sym(3); 4]; assert (isequal ( [a;b] , [1; 2; 3; 4] )) assert (isequal ( [a;b;a] , [1; 2; 3; 4; 1; 2] )) ***** test % row vectors a = [sym(1) 2]; b = [sym(3) 4]; assert (isequal ( [a;b] , [1 2; 3 4] )) assert (isequal ( [a;b;a] , [1 2; 3 4; 1 2] )) ***** test % row vector, other row a = [sym(1) 2]; assert (isequal ( [a; [sym(3) 4]] , [1 2; 3 4] )) ***** test % empty vectors v = [sym(1) sym(2)]; a = [v; []]; assert (isequal (a, v)) a = [[]; v; []]; assert (isequal (a, v)) a = [v; []; []]; assert (isequal (a, v)) ***** xtest % FIXME: is this Octave bug? worth worrying about syms x a = [x; [] []]; assert (isequal (a, x)) !!!!! known failure octave_base_value::map_value(): wrong type argument 'null_matrix' ***** test % more empty vectors v = [sym(1) sym(2)]; q = sym(ones(0, 2)); assert (isequal ([v; q], v)) ***** error v = [sym(1) sym(2)]; q = sym(ones(0, 3)); w = vertcat(v, q); ***** test % Octave 3.6 bug: should pass on 3.8.1 and matlab a = [sym(1) 2]; assert (isequal ( [a; [3 4]] , [1 2; 3 4] )) assert (isequal ( [a; sym(3) 4] , [1 2; 3 4] )) % more examples syms x [x [x x]; x x x]; [[x x] x; x x x]; [[x x] x; [x x] x]; [x x x; [x x] x]; ***** test % issue #700 A = sym ([1 2]); B = simplify (A); assert (isequal ([B; A], [A; B])) 11 tests, 10 passed, 1 known failure, 0 skipped [inst/@sym/diff.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/diff.m ***** shared x,y,z syms x y z ***** test % basic assert(logical( diff(sin(x)) - cos(x) == 0 )) assert(logical( diff(sin(x),x) - cos(x) == 0 )) assert(logical( diff(sin(x),x,x) + sin(x) == 0 )) ***** test % these fail when doubles are not converted to sym assert(logical( diff(sin(x),x,2) + sin(x) == 0 )) assert(logical( diff(sym(1),x) == 0 )) assert(logical( diff(1,x) == 0 )) assert(logical( diff(pi,x) == 0 )) ***** test % symbolic diff of const (w/o variable) fails in sympy, but we work around assert (isequal (diff(sym(1)), sym(0))) ***** test % nth symbolic diff of const assert (isequal (diff(sym(1), 2), sym(0))) assert (isequal (diff(sym(1), sym(1)), sym(0))) ***** test % octave's vector difference still works assert(isempty(diff(1))) assert((diff([2 6]) == 4)) ***** test % other forms f = sin(x); g = diff(f,x,2); assert (isequal (diff(f,2), g)) assert (isequal (diff(f,sym(2)), g)) g = diff(f,x); assert (isequal (diff(f), g)) assert (isequal (diff(f,1), g)) ***** test % old SMT supported (still does?) the 'n' before the 'x' % we might remove this someday, no longer seems documented in SMT f = sin(x); g = diff(f,x,2); assert (isequal (diff(f,2,x), g)) assert (isequal (diff(f,sym(2),x), g)) g = diff(f,x); assert (isequal (diff(f,1,x), g)) ***** test % matrix A = [x sin(x); x*y 10]; B = [1 cos(x); y 0]; assert(isequal(diff(A,x),B)) ***** test % bug: use symvar a = x*y; b = diff(a); assert (isequal (b, y)) ***** test % bug: symvar should be used on the matrix, not comp-by-comp a = [x y x*x]; b = diff(a); assert (~isequal (b(2), 1)) assert (isequal (b, [1 0 2*x])) b = diff(a,1); assert (~isequal (b(2), 1)) assert (isequal (b, [1 0 2*x])) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/le.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/le.m ***** test % simple x = sym(1); y = sym(1); e = x <= y; assert (logical (e)) x = sym(1); y = sym(2); e = x <= y; assert (logical (e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a <= b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 <= x)) assert (logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x <= 10)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/mrdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mrdivide.m ***** test % scalar syms x assert (isa( x/x, 'sym')) assert (isequal( x/x, sym(1))) assert (isa( 2/x, 'sym')) assert (isa( x/2, 'sym')) ***** test % matrix / scalar D = 2*[0 1; 2 3]; A = sym(D); assert (isequal ( A/2 , D/2 )) assert (isequal ( A/sym(2) , D/2 )) ***** test % I/A: either invert A or leave unevaluated: not bothered which A = sym([1 2; 3 4]); B = sym(eye(2)) / A; assert (isequal (B, inv(A)) || strncmpi (sympy (B), 'MatPow', 6)) ***** xtest % immutable test, upstream: TODO A = sym([1 2; 3 4]); B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); assert (isequal (A/A, B/B)) ***** test % A = C/B is C = A*B A = sym([1 2; 3 4]); B = sym([1 3; 4 8]); C = A*B; A2 = C / B; assert (isequal (A, A2)) ***** test A = [1 2; 3 4]; B = A / A; % assert (isequal (B, sym(eye(2)) assert (isequal (B(1,1), 1)) assert (isequal (B(2,2), 1)) assert (isequal (B(2,1), 0)) assert (isequal (B(1,2), 0)) ***** test A = sym([5 6]); B = sym([1 2; 3 4]); C = A*B; A2 = C / B; assert (isequal (A, A2)) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/ztrans.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ztrans.m ***** test % basic Z-transform table checks % X1, ..., X4 must have inner radius of convergence 1 syms n z % trick to extract the closed form formula using the fact that inner roc = 1 closed_form = @(X) subs (X, abs (1 / z), 1 / sym (2)); % check if ztrans(f) == X check_ztrans = @(f, X) logical (simplify (closed_form (ztrans (f)) == X)); f1 = sym (1); X1 = 1 / (1 - 1 / z); assert (check_ztrans (f1, X1)); f2 = n; X2 = (1 / z) / (1 - 1 / z)^2; assert (check_ztrans (f2, X2)); f3 = n^2; X3 = (1 / z) * (1 + 1 / z) / (1 - 1 / z)^3; assert (check_ztrans (f3, X3)); f4 = n^3; X4 = (1 / z) * (1 + 4 / z + 1 / z^2) / (1 - 1 / z)^4; assert (check_ztrans (f4, X4)); % basic matrix checks A1 = ztrans ([f1 f2; f3 f4]); B1 = [ztrans(f1) ztrans(f2); ztrans(f3) ztrans(f4)]; assert (isequal (A1, B1)); A2 = ztrans ([f1 f2; f3 f4], z); B2 = [ztrans(f1, z) ztrans(f2, z); ztrans(f3, z) ztrans(f4, z)]; assert (isequal (A2, B2)); A3 = ztrans ([f1 f2; f3 f4], n, z); B3 = [ztrans(f1, n, z) ztrans(f2, n, z); ztrans(f3, n, z) ztrans(f4, n, z)]; assert (isequal (A3, B3)); ***** test % additional Z-transform table checks % X1, ..., X4 must have inner radius of convergence a syms n nonnegative integer syms m positive integer syms a syms z % trick to extract the closed form formula using the fact that inner roc = a closed_form = @(X) subs (X, abs (a / z), 1 / sym (2)); % check if ztrans(f) == X check_ztrans = @(f, X) logical (simplify (closed_form (ztrans (f)) == X)); f1 = a^n; X1 = 1 / (1 - a / z); assert (check_ztrans (f1, X1)); f2 = n * a^n; X2 = (a / z) / (1 - a / z)^2; assert (check_ztrans (f2, X2)); f3 = n^2 * a^n; X3 = (a / z) * (1 + a / z) / (1 - a / z)^3; assert (check_ztrans (f3, X3)); f4 = nchoosek(n + m - 1, m - 1) * a^n; X4 = 1 / (1 - a / z)^m; assert (check_ztrans (f4, X4)); % additional matrix checks A1 = ztrans (f1, [n m; m n], [z a; a z]); B1 = [ztrans(f1, n, z) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, n, z)]; assert (isequal (A1, B1)); A2 = ztrans (f1, m, [z a; a z]); B2 = [ztrans(f1, m, z) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, m, z)]; assert (isequal (A2, B2)); A3 = ztrans (f1, [n m; m n], a); B3 = [ztrans(f1, n, a) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, n, a)]; assert (isequal (A3, B3)); ***** test % Kronecker delta checks syms n n0 nonnegative integer syms z assert (isequal (ztrans (kroneckerDelta (n)), 1)); assert (isequal (ztrans (kroneckerDelta (n - n0)), 1 / z^n0)); ***** test % basic var selection checks syms n m z w assert (isequal (ztrans (1 / factorial (n)), exp (1 / z))); assert (isequal (ztrans (1 / factorial (z)), exp (1 / w))); assert (isequal (ztrans (1 / factorial (m), w), exp (1 / w))); assert (isequal (ztrans (1 / factorial (m), m, w), exp (1 / w))); ***** test % additional var selection checks syms n m z f = kroneckerDelta(m) / factorial (n); assert (isequal (ztrans (f, z), exp (1 / z) * kroneckerDelta (m))); assert (isequal (ztrans (f, n, z), exp (1 / z) * kroneckerDelta (m))); assert (isequal (ztrans (f, m, z), 1 / factorial (n))); ***** test % if no t, use symvar: take x before a syms a x z assert (isequal (ztrans (a / factorial (x)), a * exp (1 / z))); ***** error ztrans (sym ('n')^sym ('n', 'nonnegative', 'integer')) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/besselh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselh.m ***** test % default to k=1 syms z a A = besselh(a, z); B = besselh(a, 1, z); assert (isequal (A, B)) ***** error besselh(sym('z')) ***** error besselh(2, 0, sym('z')) ***** error besselh(2, 3, sym('z')) ***** test % doubles, relative error X = [1 2 pi; 4i 5 6+6i]; Xs = sym(X); Alpha = [pi 3 1; 3 2 0]; Alphas = sym(Alpha); for k = 1:2 A = double(besselh(Alphas, k, Xs)); B = besselh(Alpha, k, X); assert (all (all (abs(A - B) < 10*eps*abs(A)))) end ***** test % round-trip syms x for k = 1:2 A = besselh(4, k, 10); q = besselh(4, k, x); h = function_handle(q); B = h(10); assert (abs(A - B) <= eps*abs(A)) end 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/ellipticF.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticF.m ***** error ellipticF (sym(1)) ***** error ellipticF (sym(1), 2, 3) ***** assert (double (ellipticF (sym (pi)/3, sym (-105)/10)), 0.6184459461, 10e-11) ***** assert (double (ellipticF (sym (pi)/4, sym (-pi))), 0.6485970495, 10e-11) ***** assert (double (ellipticF (sym (1), sym (-1))), 0.8963937895, 10e-11) ***** assert (double (ellipticF (sym (pi)/6, sym (0))), 0.5235987756, 10e-11) ***** test % compare to Maple us = vpa (ellipticF (sym(11)/10, sym(9)/4), 40); % > evalf(EllipticF(sin(11/10), sqrt(9/4)), 40); maple = vpa ('1.206444996991058996424988192917728014427', 40) - ... vpa ('0.8157358125823472313001683083685348517476j', 40); assert (abs (double (maple - us)), 0, 1e-39) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/uplus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/uplus.m ***** test syms x assert (isa (+x, 'sym')) assert (isequal (+x, x)) ***** test A = sym([0 -1 inf]); assert( isequal ( +A, A)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/bessely.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/bessely.m ***** test X = [1 2 3; 4 5 6]; ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; n = double(ns); A = double(bessely(ns, X)); B = bessely(n, X); assert (all (all (abs (A - B) < 50*eps*abs(A)))) ***** test % roundtrip syms x A = bessely(2, 10); q = bessely(2, x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps*abs(A)) ***** error bessely(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/fresnelc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fresnelc.m ***** error fresnelc (sym(1), 2) ***** test a = fresnelc(sym(0)); assert (isequal (a, sym(0))) ***** test b = fresnelc(sym('oo')); assert (isequal (b, sym(1)/2)) ***** test % values in a matrix syms x a = fresnelc([sym(0) sym('oo') x 1]); b = [sym(0) sym(1)/2 fresnelc(x) fresnelc(sym(1))]; assert (isequal (a, b)) ***** test % round trip syms x f = fresnelc (x); h = function_handle (f); A = h (1.1); B = fresnelc (1.1); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/rhs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rhs.m ***** test syms x f = x + 1 == 2*x; assert (isequal (rhs(f), 2*x)) ***** error syms x rhs(x) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/size.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/size.m ***** test a = sym([1 2 3]); [n,m] = size(a); assert (n == 1 && m == 3) ***** test a = sym([1 2 3]); n = size(a); assert (isequal (n, [1 3])) ***** test %% size, numel, length a = sym([1 2 3; 4 5 6]); assert (isa (size(a), 'double')) assert (isa (numel(a), 'double')) assert (isa (length(a), 'double')) assert (isequal (size(a), [2 3])) assert (length(a) == 3) assert (numel(a) == 6) a = sym([1; 2; 3]); assert (isequal (size(a), [3 1])) assert (length(a) == 3) assert (numel(a) == 3) ***** test %% size by dim a = sym([1 2 3; 4 5 6]); n = size(a, 1); assert (n == 2) m = size(a, 2); assert (m == 3) a = sym([1 2 3]'); n = size(a, 1); assert (n == 3) m = size(a, 2); assert (m == 1) ***** xtest % symbolic-size matrices syms n m integer A = sym('A', [n m]); d = size(A); assert (~isa(d, 'sym')) assert (isnumeric(d)) assert (isequaln (d, [NaN NaN])) !!!!! known failure assert (isequaln (d, [NaN, NaN])) failed ***** xtest % half-symbolic-size matrices % FIXME: will fail until size stop lying by saying 1x1 syms n integer A = sym('A', [n 3]); assert (isequaln (size(A), [NaN 3])) A = sym('A', [4 n]); assert (isequaln (size(A), [4 NaN])) !!!!! known failure assert (isequaln (size (A), [NaN, 3])) failed ***** xtest % half-symbolic-size empty matrices % FIXME: will fail until size stop lying by saying 1x1 syms n integer A = sym('A', [n 0]); assert (isequaln (size(A), [NaN 0])) !!!!! known failure assert (isequaln (size (A), [NaN, 0])) failed 7 tests, 4 passed, 3 known failures, 0 skipped [inst/@sym/hypot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hypot.m ***** assert (isequal (hypot (sym(3), 4), sym(5))) ***** test % compare to @double (note Matlab hypot only takes 2 inputs) A = hypot (hypot ([1 2 3], [4 5 6]), [7 8 9]); B = double (hypot (sym([1 2 3]), [4 5 6], [7 8 9])); assert (A, B, -eps) ***** test % compare to @double, with complex A = hypot ([1+2i 3+4i], [1 3+1i]); B = double (hypot (sym([1+2i 3+4i]), [1 3+1i])); assert (A, B, -eps) ***** test % matrices x = sym([1 -2; 0 3]); y = sym([0 0; 8 4]); A = hypot (x, y); B = sym([1 2; 8 5]); assert (isequal (A, B)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/sqrt.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sqrt.m ***** error sqrt (sym(1), 2) ***** assert (isequaln (sqrt (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sqrt(x); f2 = sqrt(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sqrt(A); f2 = sqrt(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sqrt (d); f = sqrt (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/zeros.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/zeros.m ***** test y = zeros(sym(2)); x = [0 0; 0 0]; assert( isequal( y, sym(x))) ***** test y = zeros(sym(2), 1); x = [0; 0]; assert( isequal( y, sym(x))) ***** test y = zeros(sym(1), 2); x = [0 0]; assert( isequal( y, sym(x))) ***** test y = zeros (sym([2 3])); x = sym (zeros ([2 3])); assert (isequal (y, x)) ***** assert( isa( zeros(sym(2), 'double'), 'double')) ***** assert( isa( zeros(3, sym(3), 'single') , 'single')) ***** assert( isa( zeros(3, sym(3)), 'sym')) ***** assert( isa( zeros(3, sym(3), 'sym'), 'sym')) ***** xtest % Issue #13 assert( isa( zeros(3, 3, 'sym'), 'sym')) !!!!! known failure invalid data type specified 9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/fresnels.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fresnels.m ***** error fresnels (sym(1), 2) ***** test a = fresnels(sym(0)); assert (isequal (a, sym(0))) ***** test b = fresnels(sym('oo')); assert (isequal (b, sym(1)/2)) ***** test % values in a matrix syms x a = fresnels([sym(0) sym('oo') x 1]); b = [sym(0) sym(1)/2 fresnels(x) fresnels(sym(1))]; assert (isequal (a, b)) ***** test % round trip syms x f = fresnels (x); h = function_handle (f); A = h (1.1); B = fresnels (1.1); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/plus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/plus.m ***** test % basic addition syms x assert (isa (x+5, 'sym')) assert (isa (5+x, 'sym')) assert (isa (5+sym(4), 'sym')) assert (isequal (5+sym(4), sym(9))) ***** test % array addition syms x D = [0 1; 2 3]; A = [sym(0) 1; sym(2) 3]; DZ = D - D; assert( isequal ( A + D , 2*D )) assert( isequal ( D + A , 2*D )) assert( isequal ( A + A , 2*D )) assert( isequal ( A + 2 , D + 2 )) assert( isequal ( 4 + A , 4 + D )) ***** test % ensure MatrixExpr can be manipulated somewhat syms n m integer A = sym('A', [n m]); B = subs(A, [n m], [5 6]); B = B + 1; assert (isa (B, 'sym')) C = B(1, 1); % currently makes a MatrixElement C = C + 1; assert (isa (C, 'sym')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/logical.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logical.m ***** test % basics, many others in isAlways.m assert (logical(true)) assert (~(logical(false))) ***** test % numbers to logic? assert (logical(sym(1))) assert (logical(sym(-1))) assert (~logical(sym(0))) ***** test % eqns, "structurally equivalent" syms x e = logical(x == x); assert ( islogical (e)) assert (e) e = logical(x == 1); assert ( islogical (e)) assert (~e) ***** test % eqn could have solutions but are false in general syms x e = logical(x^2 == x); assert ( islogical (e)) assert (~e) e = logical(2*x == x); assert ( islogical (e)) assert (~e) ***** test % FIXME: (not sure yet) T/F matrices should stay sym until logical() a = sym(1); e = a == a; assert (isa (e, 'sym')) assert (islogical (logical (e))) e = [a == a a == 0 a == a]; assert (isa (e, 'sym')) assert (islogical (logical (e))) ***** test % sym vectors of T/F to logical a = sym(1); e = [a == a a == 0 a == a]; w = logical(e); assert (islogical (w)) assert (isequal (w, [true false true])) e = e'; w = logical(e); assert (islogical (w)) assert (isequal (w, [true; false; true])) ***** test % sym matrix of T/F to logical a = sym([1 2 3; 4 5 6]); b = sym([1 2 0; 4 0 6]); e = a == b; w = logical(e); assert (islogical (w)) assert (isequal (w, [true true false; true false true])) ***** error syms x logical(x); ***** error logical(sym(nan)) ***** test % but oo and zoo are non-zero so we call those true % (SMT errors on these) FIXME syms oo zoo assert (logical (oo)) % assert (logical (zoo)) ***** test % older Octave (< 4.2) didn't automatically do "if (logical(obj))" e = sym(true); if (e) assert(true); else assert(false); end ***** test % more of above e2 = sym(1) == sym(1); if (e2) assert(true); else assert(false); end e3 = sym([1 2]) == sym([1 1]); if (e3(1)) assert(true); else assert(false); end 12 tests, 12 passed, 0 known failure, 0 skipped [inst/@sym/partfrac.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/partfrac.m ***** test % basic syms x y z assert(logical( partfrac(y/(x + 2)/(x + 1),x) == -y/(x + 2) + y/(x + 1) )) assert(logical( factor(partfrac(x^2/(x^2 - y^2),y)) == factor(x/(2*(x + y)) + x/(2*(x - y)) ))) assert(logical( factor(partfrac(x^2/(x^2 - y^2),x)) == factor(-y/(2*(x + y)) + y/(2*(x - y)) + 1 ))) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/expint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expint.m ***** error expint (sym(1), 2, 3) ***** test f1 = expint(sym(1)); f2 = expint(1); assert( abs(double(f1) - f2) < 1e-15 ) ***** test f1 = expint(sym(1i)); f2 = expint(1i); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [1 2; 3 4]; A = sym(D); f1 = expint(A); f2 = expint(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test syms x A = expint(x); B = expint(1, x); assert (isequal (A, B)) ***** test syms x A = exp(-x)/x; B = expint(0, x); assert (isequal (A, B)) ***** test % round trip syms x A = expint (3); f = expint (x); h = function_handle (f); B = h (3); assert (A, B, -eps) ***** error % round trip syms n x f = expint (n, x); h = function_handle (f); 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/isAlways.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isAlways.m ***** test % basics assert(isAlways(true)) assert(isAlways(1==1)) assert(isAlways(sym(1)==sym(1))) assert(isAlways(sym(1)==1)) ***** test % numbers to logic? assert (isAlways(sym(1))) assert (isAlways(sym(-1))) assert (~isAlways(sym(0))) ***** shared x syms x ***** test % in this case it is boolean expr = x - x == 0; assert (logical(expr)) assert (isAlways(expr)) % and both are logical type assert (islogical(logical(expr))) assert (islogical(isAlways(expr))) ***** test % structurally same and mathematically true % (here expr should be sym, non-boolean) expr = x == x; assert (logical(expr)) assert (isAlways(expr)) %assert (~islogical(expr)) % FIXME: Issue #56 %assert (isa(expr, 'sym)) ***** test % structurally same and mathematically true % (here expr should be sym, non-boolean) expr = 1 + x == x + 1; assert (logical(expr)) assert (isAlways(expr)) ***** test % non-zero numbers are true assert (isAlways(sym(1))) assert (isAlways(sym(-10))) assert (~isAlways(sym(0))) ***** shared x, y syms x y ***** test % structurally same and mathematically true % (here expr should be sym, non-boolean) expr = x*(1+y) == x*(y+1); assert (logical(expr)) assert (isAlways(expr)) assert (islogical(isAlways(expr))) ***** test % Now for some differences % simplest example from SymPy FAQ expr = x*(1+y) == x+x*y; assert (~logical(expr)) assert (isAlways(expr)) ***** test % more differences 1, these don't simplify in sympy (as of 2016-01) expr = (x+1)^2 == x*x + 2*x + 1; assert (~logical(expr)) assert (isAlways(expr)) ***** test % more differences 2 expr = sin(2*x) == 2*sin(x)*cos(x); assert (~logical(expr)) assert (isAlways(expr)) ***** test % more differences 3, false expr = x*(x+y) == x^2 + x*y + 1; assert (~logical(expr)) assert (~isAlways(expr)) assert (~isAlways(expr, 'unknown', 'error')) ***** test % logically not equal, math equal exprn = x*(x+y) ~= x^2 + x*y; assert (logical(exprn)) assert (~isAlways(exprn)) ***** test % logically not equal, math not equal exprn = x*(x+y) ~= x^2 + x*y + 1; assert (logical(exprn)) assert (isAlways(exprn)) ***** test % equal and not equal e1 = sin(x)^2 + cos(x)^2 == 1; e2 = sin(x)^2 + cos(x)^2 == 2; assert (~logical(e1)) assert (isAlways(e1)) assert (~logical(e2)) assert (~isAlways(e2)) assert (~isAlways(e2, 'unknown', 'error')) ***** error isAlways(x, 'unknown', 'kevin') ***** error isAlways(x, 'unknown') ***** error isAlways(x, 'kevin', 'true') ***** error a = [x*(x+y)==x^2+x*y x==y]; b = isAlways(a, 'unknown', 'error'); ***** error a = x==y; b = isAlways(a, 'unknown', 'error'); ***** test % array, unknown keyword a = [x==x x==x+1 x==y x*(x+y)==x^2+x*y cos(x)^2+sin(x)^2==2]; b = isAlways(a, 'unknown', false); c = isAlways(a, 'unknown', 'false'); expect = [true false false true false]; assert (islogical(b)) assert (isequal (b, expect)) assert (isequal (c, expect)) b = isAlways(a, 'unknown', true); c = isAlways(a, 'unknown', 'true'); expect = [true false true true false]; assert (islogical(b)) assert (isequal (b, expect)) assert (isequal (c, expect)) ***** test % ineq e = x*(x+y) <= x^2 + x*y + 1; assert (~logical(e)) assert (isAlways(e)) e = x*(x+y) <= x^2 + x*y; assert (~logical(e)) assert (isAlways(e)) 21 tests, 21 passed, 0 known failure, 0 skipped [inst/@sym/ones.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ones.m ***** test y = ones(sym(2)); x = [1 1; 1 1]; assert( isequal( y, sym(x))) ***** test y = ones(sym(2), 1); x = [1; 1]; assert( isequal( y, sym(x))) ***** test y = ones(sym(1), 2); x = [1 1]; assert( isequal( y, sym(x))) ***** test y = ones (sym([2 3])); x = sym (ones ([2 3])); assert (isequal (y, x)) ***** assert( isa( ones(sym(2), 'double'), 'double')) ***** assert( isa( ones(3, sym(3), 'single') , 'single')) ***** assert( isa( ones(3, sym(3)), 'sym')) ***** assert( isa( ones(3, sym(3), 'sym'), 'sym')) ***** xtest % Issue #13 assert( isa( ones(3, 3, 'sym'), 'sym')) !!!!! known failure invalid data type specified 9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/ge.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ge.m ***** test % simple x = sym(1); y = sym(1); e = x >= y; assert (logical (e)) x = sym(1); y = sym(2); e = x >= y; assert (~logical(e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a >= b; assert (isa (e, 'sym')) assert (~logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 >= x)) assert (logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x >= 10)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/csc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/csc.m ***** error csc (sym(1), 2) ***** assert (isequaln (csc (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = csc(x); f2 = csc(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = csc(A); f2 = csc(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = csc (d); f = csc (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/coth.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coth.m ***** error coth (sym(1), 2) ***** assert (isequaln (coth (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = coth(x); f2 = coth(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = coth(A); f2 = coth(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = coth (d); f = coth (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/linspace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/linspace.m ***** test a = linspace(sym(3), 5, 5); b = [sym(6) 7 8 9 10]/2; assert (isequal (a, b)) ***** test % non-integers A = linspace(0, sym(pi), 10); assert (length (A) == 10); assert (isequal (A(6), 5*sym(pi)/9)); ***** test % default argument for N A = linspace(1, 100); assert (length (A) == 100); ***** test % special case for just N = 1 A = linspace(sym(2), 3, 1); assert (isequal (A, 3)) A = linspace(sym(2), 3, 0); assert (isequal (A, 3)) A = linspace(sym(2), 3, sym(3)/2); assert (isequal (A, 3)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/isna.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isna.m ***** test % no sym should be NA syms x oo assert (~isna(sym(1))) assert (~isna(x)) assert (~isna(oo)) assert (~isna(sym(nan))) assert (isequal (isna (sym ([1 nan])), [false false])) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/expm.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expm.m ***** test % scalar syms x assert (isequal (expm(x), exp(x))) ***** test % diagonal A = [sym(1) 0; 0 sym(3)]; B = [exp(sym(1)) 0; 0 exp(sym(3))]; assert (isequal (expm(A), B)) ***** test % diagonal w/ x syms x positive A = [sym(1) 0; 0 x+2]; B = [exp(sym(1)) 0; 0 exp(x+2)]; assert (isequal (expm(A), B)) ***** test % non-diagonal syms x positive A = [sym(1) 2; 0 x+2]; B = expm(A); C = double(subs(B, x, 4)); D = expm(double(subs(A, x, 4))); assert (max (max (abs (C - D))) <= 1e-11) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/findsym.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/findsym.m ***** assert (strcmp (findsym (sym(2)), '')); ***** shared x,y,f x=sym('x'); y=sym('y'); f=x^2+3*x*y-y^2; ***** assert (strcmp (findsym (f), 'x,y')); ***** assert (strcmp (findsym (f,1), 'x')); ***** test % test order of returned vars syms x y a b c xx % https://www.mathworks.com/matlabcentral/newsreader/view_thread/237730 alpha = sym('alpha'); assert (strcmp (findsym(b*xx*exp(alpha) + c*sin(a*y), 2), 'xx,y')) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/uminus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/uminus.m ***** test % scalar syms x assert (isa (-x, 'sym')) assert (isequal (-(-x), x)) ***** test % matrix D = [0 1; 2 3]; A = sym(D); assert( isequal( -A, -D )) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/kron.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/kron.m ***** error kron (sym (2)) ***** test syms x y A = [sin(x), sin(y); x, y]; B = ones(2); expected = sym([sin(x), sin(x), sin(y), sin(y); sin(x), sin(x), sin(y), sin(y); x, x, y, y; x, x, y, y]); assert (isequal (kron(A, B), expected)) ***** test syms x y A = [sin(x), sin(y); x, y]; B = 2; assert (isequal (kron(A, B), 2*A)) ***** test syms x y A = [sin(x), sin(y)]; B = 2; assert (isequal( kron(B, A), 2*A)) ***** test syms x y; X = [tan(x), tan(x)]; Y = [cot(x); cot(x)]; expected = sym(ones(2)); assert (isequal (simplify(kron(X, Y)), expected)) ***** test syms x y z X = [x, y, z]; Y = [y, y; x, x]; expected = [x*y, x*y, y^2, y^2, y*z, y*z; x^2, x^2, x*y, x*y, x*z, x*z]; assert (isequal (kron(X, Y), expected)) ***** test syms x y X = [x, x^2; y, y^2]; Y = [1, 0; 0, 1]; expected = [x, x^2, 0, 0; y, y^2, 0, 0; 0, 0, x, x^2; 0, 0, y, y^2]; assert (isequal (kron(Y, X), expected)) ***** test syms x y z assert (isequal (kron (x, y, z), x*y*z)) assert (isequal (kron (x, y, z, 4), 4*x*y*z)) assert (isequal (kron ([2 3], y, z), [2 3]*y*z)) assert (isequal (kron ([2 3], [4; 5], y), [8 12; 10 15]*y)) ***** test syms x y A = kron ([x y], [1, -1; -1, 1], [2 3; 4 5]); D = kron ([7 9], [1, -1; -1, 1], [2 3; 4 5]); A = double (subs (A, [x y], [7 9])); assert (isequal (A, D)) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/end.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/end.m ***** test % scalar syms x y = x(1:end); assert (isequal (x, y)) ***** test % vector syms x A = [1 2 x 4]; y = A(end-1:end); assert (isequal (y, [x 4])) ***** test % subset of matrix syms x A = [1 2 x; x 3 9; 4 x*x 6]; y = A(end,1:end-1); assert (isequal (y, [4 x*x])) ***** test % linear index of matrix syms x A = [1 2 x; x 3 9]; y = A(end); assert (isequal (y, sym(9))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/symvar.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symvar.m ***** error symvar (sym(1), 2, 3) ***** test %% some empty cases assert (isempty (symvar (sym(1)))); assert (isempty (symvar (sym(1),1))); assert (isempty (symvar (sym(1),0))); assert (isempty (symvar (sym('x'),0))); ***** shared x,y,f x=sym('x'); y=sym('y'); f=x^2+3*x*y-y^2; ***** assert (isequal (symvar (f), [x y])); ***** assert (isequal (symvar (f, 1), x)); ***** test %% closest to x syms x y a b c xx alpha = sym('alpha'); % https://www.mathworks.com/matlabcentral/newsreader/view_thread/237730 assert( isequal (symvar (b*xx*exp(alpha) + c*sin(a*y), 2), [xx y])) %% tests to match Matlab R2013b ***** shared x,y,z,a,b,c,X,Y,Z syms x y z a b c X Y Z ***** test %% X,Y,Z first if no 2nd argument s = prod([x y z a b c X Y Z]); assert (isequal( symvar (s), [X Y Z a b c x y z] )) ***** test %% uppercase have *low* priority with argument? s = prod([x y z a b c X Y Z]); assert (isequal (symvar (s,4), [x, y, z, c] )) ***** test %% closest to x s = prod([y z a b c Y Z]); assert (isequal( symvar (s,6), [ y, z, c, b, a, Y] )) s = prod([a b c Y Z]); assert (isequal( symvar (s,4), [ c, b, a, Y] )) ***** test %% upper case letters in correct order s = X*Y*Z; assert (isequal( symvar (s,3), [X Y Z] )) ***** test % diff. assumptions make diff. symbols x1 = sym('x'); x2 = sym('x', 'positive'); f = x1*x2; assert (length (symvar (f)) == 2) z = symvar (f, 1); assert (xor (isequal (z, x1), isequal (z, x2))) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/dawson.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dawson.m ***** test if (exist ('OCTAVE_VERSION', 'builtin')) % dawson missing on Matlab, Issue #742 A = dawson([1 2]); B = double(dawson(sym([1 2]))); assert(A, B, -eps) end 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/not.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/not.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple assert (isequal( ~t, f)) assert (isequal( ~t, f)) ***** test % array w = [t t f t]; z = [f f t f]; assert (isequal( ~w, z)) ***** test % number assert (isequal( ~sym(5), f)) assert (isequal( ~sym(0), t)) ***** test % output is sym syms x e = ~(x == 4); assert (isa (e, 'sym')) assert (strncmp (sympy(e), 'Unequality', 10)) ***** test % output is sym even for scalar t/f (should match other bool fcns) assert (isa (~t, 'sym')) ***** test % symbol ineq syms x a = [t f x == 1 x ~= 2 x < 3 x <= 4 x > 5 x >= 6]; b = [f t x ~= 1 x == 2 x >= 3 x > 4 x <= 5 x < 6]; assert (isequal( ~a, b)) ***** test syms x y = ~x; s = disp(y, 'flat'); assert (strcmp (strtrim (s), '~x') || strcmpi (strtrim (s), 'Not(x)')) ***** error not (sym(1), 2) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/ellipticE.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticE.m ***** error ellipticE (sym(1), 2, 3) ***** assert (double (ellipticE (sym (-105)/10)), 3.70961391, 10e-9) ***** assert (double (ellipticE (sym (-pi)/4)), 1.844349247, 10e-10) ***** assert (double (ellipticE (sym (0))), 1.570796327, 10e-10) ***** assert (double (ellipticE (sym (1))), 1, 10e-1) ***** test % compare to Maple us = vpa (ellipticE (sym(7)/6, sym(13)/7), 40); % > evalf(EllipticE(sin(7/6), sqrt(13/7)), 40); maple = vpa ('0.6263078268598504591831743625971763209496', 40) + ... vpa ('0.1775496232203171126975790989055865596501j', 40); assert (abs (double (maple - us)), 0, 2e-39) ***** test % compare to Maple us = vpa (ellipticE (sym(8)/7), 40); % > evalf(EllipticE(sqrt(8/7)), 40); maple = vpa ('0.8717182992576322508542205614105802333270', 40) + ... vpa ('0.1066754320328976949531350910798010526685j', 40); assert (abs (double (maple - us)), 0, 2e-39) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/children.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/children.m ***** test % basics, sum syms x y f = 2*x + x*x + sin(y); assert (isempty (setxor (children(f), [2*x x*x sin(y)]))) ***** test % basics, product syms x y f = 2*x*sin(y); assert (isempty (setxor (children(f), [2 x sin(y)]))) ***** test % basics, product and powers syms x y f = 2*x^2*y^3; assert (isempty (setxor (children(f), [2 x^2 y^3]))) ***** test % eqn, ineq syms x y lhs = 2*x^2; rhs = y^3 + 7; assert (isequal (children(lhs == rhs), [lhs rhs])) assert (isequal (children(lhs < rhs), [lhs rhs])) assert (isequal (children(lhs >= rhs), [lhs rhs])) ***** test % matrix syms x y f = [4 + y 1 + x; 2 + x 3 + x]; c = children(f); ec = {[4 y], [1 x]; [2 x], [3 x]}; assert (isequal (size(c), size(ec))) for i=1:length(c) assert (isempty (setxor (c{i}, ec{i}))) end ***** test % matrix, sum/prod syms x y f = [x + y; x*sin(y); sin(x)]; ec = {[x y]; [x sin(y)]; [x]}; c = children(f); assert (isequal (size(c), size(ec))) for i=1:length(c) assert (isempty (setxor (c{i}, ec{i}))) end ***** test % scalar symbol syms x assert (isequal (children(x), x)) ***** test % scalar number x = sym(6); assert (isequal (children(x), x)) ***** test % symbolic size matrix syms n m integer A = sym('a', [n m]); C = children (A); assert (isequal (C(2), n)) assert (isequal (C(3), m)) ***** xtest % symbolic size matrix, fails on newer SymPy Issue #1089 syms n m integer A = sym('a', [n m]); assert (isequal (children (A), [sym('a') n m])) !!!!! known failure assert (isequal (children (A), [sym('a'), n, m])) failed 10 tests, 9 passed, 1 known failure, 0 skipped [inst/@sym/harmonic.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/harmonic.m ***** error harmonic (sym(1), 2) ***** xtest assert (isequaln (harmonic (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (harmonic (sym (nan)), sym (nan))) failed ***** assert (isequal (harmonic (sym(0)), sym(0))) ***** assert (isinf (harmonic (sym(inf)))) ***** assert (isequal (harmonic (sym([9 10])), [sym(7129)/2520 sym(7381)/2520])) ***** test % round trip y = sym('y'); A = harmonic (7); f = harmonic (y); h = function_handle (f); B = h (7); assert (A, B, -eps) 6 tests, 5 passed, 1 known failure, 0 skipped [inst/@sym/char.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/char.m ***** test % issue #91: expose as string a = sym(pi); assert (strcmp (char (a), 'pi')) ***** shared x x = sym('x'); ***** assert (strcmp (char (x), 'x')) ***** assert (strcmp (char (2*x), '2*x')) ***** assert (strcmp (char ([2*x x]), 'Matrix([[2*x, x]])')) ***** assert (strcmp (char ([2*x 2; 1 x]), 'Matrix([[2*x, 2], [1, x]])')) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/lambertw.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lambertw.m ***** test % W(x)*exp(W(x)) == x syms x T = lambertw(x)*exp(lambertw(x)); T = double (subs (T, x, 10)); assert (isequal (T, 10)); ***** test % k, x not x, k to match SMT syms x T = lambertw(2, x)*exp(lambertw(2, x)); T = double (subs (T, x, 10)); assert (abs(T - 10) < 1e-15) ***** assert (isequal (lambertw(sym(0)), sym(0))) ***** assert ( isequal (lambertw (-1/exp(sym(1))), -sym(1))) ***** assert ( isequal (lambertw (0, -1/exp(sym(1))), -sym(1))) ***** assert ( isequal (lambertw (-1, -1/exp(sym(1))), -sym(1))) ***** xtest % W(x)*exp(W(x)) == x; FIXME: a failure in SymPy? syms x T = simplify(lambertw(x)*exp(lambertw(x))); assert (isequal (T, x)) !!!!! known failure assert (isequal (T, x)) failed ***** assert (abs (lambertw(pi) - double(lambertw(sym(pi)))) < 5*eps) ***** assert (abs (lambertw(-1, 5) - double(lambertw(-1, sym(5)))) < 5*eps) ***** assert (abs (lambertw(2, 2) - double(lambertw(2, sym(2)))) < 5*eps) ***** test % round trip syms x k A = lambertw (5); f = lambertw (x); h = function_handle (f); B = h (5); assert (A, B) A = lambertw (3, 5); f = lambertw (k, x); h = function_handle (f); B = h (3, 5); assert (A, B) 11 tests, 10 passed, 1 known failure, 0 skipped [inst/@sym/ccode.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ccode.m ***** shared x,y,z syms x y z ***** test % basic test f = x*sin(y) + abs(z); source = ccode(f); expected = 'x*sin(y) + fabs(z)'; assert(strcmp(source, expected)) ***** test % output test f = x*sin(y) + abs(z); [C, H] = ccode(f, 'file', '', 'show_header', false); expected_c_code = sprintf('#include \"file.h\"\n#include \n\ndouble myfun(double x, double y, double z) {\n\n double myfun_result;\n myfun_result = x*sin(y) + fabs(z);\n return myfun_result;\n\n}\n'); expected_h_code = sprintf('\n#ifndef PROJECT__FILE__H\n#define PROJECT__FILE__H\n\ndouble myfun(double x, double y, double z);\n\n#endif\n\n'); assert(strcmp(C.name, 'file.c')) assert(strcmp(H.name, 'file.h')) hwin = strrep(expected_h_code, sprintf('\n'), sprintf('\r\n')); assert (strcmp (H.code, expected_h_code) || strcmp (H.code, hwin)) s1 = expected_c_code; s2 = strrep(expected_c_code, sprintf('\n'), sprintf('\r\n')); assert (strcmp (C.code, s1) || strcmp (C.code, s2)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/sym.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sym.m ***** test % integers x = sym ('2'); y = sym (2); assert (isa (x, 'sym')) assert (isa (y, 'sym')) assert (isequal (x, y)) ***** test % infinity for x = {'inf', '-inf', inf, -inf, 'Inf'} y = sym (x{1}); assert (isa (y, 'sym')) assert (isinf (double (y))) assert (isinf (y)) end ***** test % pi x = sym ('pi'); assert (isa (x, 'sym')) assert (isequal (sin (x), sym (0))) assert (abs (double (x) - pi) < 2*eps ) x = sym (pi); assert (isa (x, 'sym')) assert (isequal (sin (x), sym (0))) assert (abs (double (x) - pi) < 2*eps ) ***** test % rationals x = sym(1) / 3; assert (isa (x, 'sym')) assert (isequal (3*x - 1, sym (0))) x = 1 / sym (3); assert (isa (x, 'sym')) assert (isequal (3*x - 1, sym (0))) x = sym ('1/3'); assert (isa (x, 'sym')) assert (isequal (3*x - 1, sym (0))) ***** test % passing small rationals x = sym ('1/2'); assert (double (x) == 1/2 ) assert (isequal (2*x, sym (1))) ***** warning x = sym (1/2); ***** test % passing small rationals w/o quotes: despite the warning, % it should work s = warning ('off', 'OctSymPy:sym:rationalapprox'); x = sym (1/2); warning (s) assert (double (x) == 1/2 ) assert (isequal (2*x, sym (1))) ***** test assert (isa (sym (pi), 'sym')) assert (isa (sym ('beta'), 'sym')) ***** test % sym from array D = [0 1; 2 3]; A = [sym(0) 1; sym(2) 3]; assert (isa (sym (D), 'sym')) assert (isequal (size (sym (D)), size (D))) assert (isequal (sym (D), A)) ***** test % more sym from array syms x A = [x x]; assert (isequal (sym (A), A)) A = [1 x]; assert (isequal (sym (A), A)) ***** test %% assumptions and clearing them clear variables % for matlab test script x = sym('x', 'real'); f = {x {2*x}}; asm = assumptions(); assert ( ~isempty(asm)) s = warning ('off', 'OctSymPy:deprecated'); x = sym('x', 'clear'); warning (s) asm = assumptions(); assert ( isempty(asm)) ***** test %% matlab compat, syms x clear should add x to workspace x = sym('x', 'real'); f = 2*x; clear x assert (~logical(exist('x', 'var'))) s = warning ('off', 'OctSymPy:deprecated'); x = sym('x', 'clear'); warning (s) assert (logical(exist('x', 'var'))) ***** test %% assumptions should work if x is already a sym x = sym('x'); x = sym(x, 'real'); assert (~isempty(assumptions(x))) ***** test %% likewise for clear x = sym('x', 'real'); f = 2*x; s = warning ('off', 'OctSymPy:deprecated'); x = sym(x, 'clear'); warning (s) assert (isempty(assumptions(x))) assert (isempty(assumptions(f))) ***** test % bool t = sym (false); t = sym (true); assert (logical (t)) ***** test % bool vec/mat a = sym (1); t = sym ([true false]); assert (isequal (t, [a == 1 a == 0])) t = sym ([true false; false true]); assert (isequal (t, [a == 1 a == 0; a == 0 a == 1])) ***** test % symbolic matrix A = sym ('A', [2 3]); assert (isa (A, 'sym')) assert (isequal (size (A), [2 3])) A(1, 1) = 7; assert (isa (A, 'sym')) A = A + 1; assert (isa (A, 'sym')) ***** test % symbolic matrix, symbolic but Integer size A = sym ('A', sym([2 3])); assert (isa (A, 'sym')) assert (isequal (size (A), [2 3])) ***** test % symbolic matrix, subs in for size syms n m integer A = sym ('A', [n m]); B = subs (A, [n m], [5 6]); assert (isa (B, 'sym')) assert (isequal (size (B), [5 6])) ***** error sym('2*a', [2 3]) ***** error sym(2*sym('a'), [2 3]) ***** error sym('1', [2 3]) ***** error sym(1, [2 3]) ***** error % TODO: symbolic tensor, maybe supported someday sym('a', [2 3 4]) ***** test % 50 shapes of empty a = sym (ones (0, 3)); assert (isa (a, 'sym')) assert (isequal (size (a), [0 3])) a = sym (ones (2, 0)); assert (isequal (size (a), [2 0])) a = sym ([]); assert (isequal (size (a), [0 0])) ***** test % moar empty a = sym ('a', [0 3]); assert (isa (a, 'sym')) assert (isequal (size (a), [0 3])) a = sym ('a', [2 0]); assert (isa (a, 'sym')) assert (isequal (size (a), [2 0])) ***** test % embedded sympy commands, various quotes, issue #143 a = sym ('a'); a1 = sym ('Symbol("a")'); a2 = sym ('Symbol(''a'')'); assert (isequal (a, a1)) assert (isequal (a, a2)) % Octave only, and eval to hide from Matlab parser if exist ('OCTAVE_VERSION', 'builtin') eval( 'a3 = sym("Symbol(''a'')");' ); eval( 'a4 = sym("Symbol(\"a\")");' ); assert (isequal (a, a3)) assert (isequal (a, a4)) end ***** test % complex x = sym(1 + 2i); assert (isequal (x, sym(1)+sym(2)*1i)) ***** test % doubles bigger than int32 INTMAX should not fail d = 4294967295; a = sym (d); assert (isequal (double (a), d)) d = d + 123456; a = sym (d); assert (isequal (double (a), d)) ***** test % int32 integer types a = sym (100); b = sym (int32 (100)); assert (isequal (a, b)) ***** test % int32 MAXINT integers a = sym ('2147483647'); b = sym (int32 (2147483647)); assert (isequal (a, b)) a = sym ('-2147483647'); b = sym (int32 (-2147483647)); assert (isequal (a, b)) a = sym ('4294967295'); b = sym (uint32 (4294967295)); assert (isequal (a, b)) ***** test % int64 integer types a = sym ('123456789012345'); b = sym (int64(123456789012345)); c = sym (uint64(123456789012345)); assert (isequal (a, b)) assert (isequal (a, c)) ***** test % integer arrays a = int64 ([1 2 100]); s = sym (a); assert (isequal (double (a), [1 2 100])) ***** test % bigger int64 integer types q = int64 (123456789012345); w = 10000*q + 123; a = sym ('1234567890123450123'); b = sym (w); assert (isequal (a, b)) ***** test % sym(double) heuristic s = warning ('off', 'OctSymPy:sym:rationalapprox'); x = sym(2*pi/3); assert (isequal (x/sym(pi), sym(2)/3)) x = sym(22*pi); assert (isequal (x/sym(pi), sym(22))) x = sym(pi/123); assert (isequal (x/sym(pi), sym(1)/123)) warning (s) ***** test % sym(double) with 'r': no warning a = 0.1; x = sym(a, 'r'); assert (isequal (x, sym(1)/10)) ***** test % sym(double) array with 'r': no warning a = [0.1 0.2]; x = sym(a, 'r'); assert (isequal (x, [sym(a(1), 'r') sym(a(2), 'r')])) ***** test % sym(double) array with 'f': no warning a = [0.1 0.2]; x = sym(a, 'f'); assert (isequal (x, [sym(a(1), 'f') sym(a(2), 'f')])) ***** test % sym(double, 'f') a = 0.1; x = sym(a, 'f'); assert (~isequal (x, sym(1)/10)) assert (isequal (x, sym('3602879701896397')/sym('36028797018963968'))) ***** test x = sym(pi, 'f'); assert (~isequal (x, sym('pi'))) assert (isequal (x, sym('884279719003555')/sym('281474976710656'))) ***** test q = sym('3602879701896397')/sym('36028797018963968'); x = sym(1 + 0.1i, 'f'); assert (isequal (x, 1 + 1i*q)) x = sym(0.1 + 0.1i, 'f'); assert (isequal (x, q + 1i*q)) ***** test assert (isequal (sym(inf, 'f'), sym(inf))) assert (isequal (sym(-inf, 'f'), sym(-inf))) assert (isequaln (sym(nan, 'f'), sym(nan))) assert (isequal (sym(complex(inf, -inf), 'f'), sym(complex(inf, -inf)))) assert (isequaln (sym(complex(nan, inf), 'f'), sym(complex(nan, inf)))) assert (isequaln (sym(complex(-inf, nan), 'f'), sym(complex(-inf, nan)))) ***** test assert (isequal (sym (sqrt(2), 'r'), sqrt (sym (2)))) assert (isequal (sym (sqrt(12345), 'r'), sqrt (sym (12345)))) ***** test % symbols with special sympy names syms Ei Eq assert (~isempty (regexp (sympy (Eq), '^Symbol'))) assert (~isempty (regexp (sympy (Ei), '^Symbol'))) ***** test % more symbols with special sympy names x = sym('FF'); assert (~isempty (regexp (x.pickle, '^Symbol'))) x = sym('ff'); assert (~isempty (regexp (x.pickle, '^Symbol'))) ***** test % E can be a sym not just exp(sym(1)) syms E assert (~logical (E == exp(sym(1)))) ***** test % e can be a symbol, not exp(sym(1)) syms e assert (~ logical (e == exp(sym(1)))) ***** test % double e x = sym (exp (1)); y = exp (sym (1)); assert (isequal (x, y)) if (exist ('OCTAVE_VERSION', 'builtin')) x = sym (e); assert (isequal (x, y)) end ***** test x = sym (-exp (1)); y = -exp (sym (1)); assert (isequal (x, y)) ***** assert (~ isequal (sym (exp(1)), sym (exp(1), 'f'))) ***** warning sym (1e16); ***** warning sym (-1e16); ***** warning sym (10.33); ***** warning sym (-5.23); ***** warning sym (sqrt (1.4142135623731)); ***** warning sym ([1.2 1.3]); ***** error x = sym ('x', 'positive2'); ***** error x = sym ('x', 'integer', 'positive2'); ***** error x = sym ('x', 'integer2', 'positive'); ***** error x = sym ('-pi', 'positive') ***** error x = sym ('pi', 'integer') ***** test % multiple assumptions n = sym ('n', 'negative', 'even'); a = assumptions (n); assert (strcmp (a, 'n: negative, even') || strcmp (a, 'n: even, negative')) ***** error % multiple assumptions as a list % TODO: should this be allowed? n = sym ('n', {'negative', 'even'}); a = assumptions (n); assert (strcmp (a, 'n: negative, even') || strcmp (a, 'n: even, negative')) ***** error n = sym ('n', {{'negative', 'even'}}); ***** test % save/load sym objects syms x y = 2*x; a = 42; myfile = tempname (); save (myfile, 'x', 'y', 'a') clear x y a load (myfile) assert (isequal (y, 2*x)) assert (a == 42) if (exist ('OCTAVE_VERSION', 'builtin')) assert (unlink (myfile) == 0) else delete ([myfile '.mat']) end ***** test a = sym ('2.1'); b = sym (21) / 10; %% https://github.com/sympy/sympy/issues/11703 assert (pycall_sympy__ ('return _ins[0] == _ins[1] and hash(_ins[0]) == hash(_ins[1])', a, b)) ***** test % issue #706 a = sym('Float("1.23")'); assert (~ isempty (strfind (char (a), '.'))) ***** assert (isequal (sym({1 2 'a'}), [sym(1) sym(2) sym('a')])); ***** error sym({1 2 'a'}, 'positive'); ***** error sym({'a' 'b'}, 'positive'); ***** test a = sym ('--1'); b = sym ('---1'); assert (isequal (a, sym (1))) assert (isequal (b, sym (-1))) ***** test % num2cell works on sym arrays syms x C1 = num2cell ([x 2 3; 4 5 6*x]); assert (iscell (C1)) assert (isequal (size (C1), [2 3])) assert (isequal (C1{1,1}, x)) assert (isequal (C1{2,3}, 6*x)) assert (isequal (C1{1,3}, sym(3))) assert (isa (C1{1,3}, 'sym')) ***** test % function_handle f = @(x, y) y*sin(x); syms x y assert (isequal (sym (f), y*sin(x))); f = @(x) 42; assert (isequal (sym (f), sym (42))); f = @() 42; assert (isequal (sym (f), sym (42))); ***** error % function_handle f = @(x) A*sin(x); sym (f) ***** test % Issue #885 clear f x % if test not isolated (e.g., on matlab) syms x f(x) = sym('S(x)'); f(x) = sym('I(x)'); f(x) = sym('O(x)'); ***** test % sym(sympy(x) == x identity, Issue #890 syms x f = exp (1i*x); s = sympy (f); g = sym (s); assert (isequal (f, g)) ***** test % sym(sympy(x) == x identity % Don't mistake "pi" (which is "srepr(S.Pi)") for a symfun variable f = sym ('ff(pi, pi)'); s1 = sympy (f); s2 = 'FallingFactorial(pi, pi)'; assert (strcmp (s1, s2)) ***** test % sym(sympy(x) == x identity % Don't mistake "I" (which is "srepr(S.ImaginaryUnit)") for a symfun variable f = sym ('sin(I)'); g = 1i*sinh (sym (1)); assert (isequal (f, g)) s = sympy (f); assert (isempty (strfind (s, 'Function'))) ***** error % sym(sympy(x) == x identity % Don't mistake "true/false" (which is "srepr(S.true)") for a symfun variable % (Used to print as `S.true` but just `true` in sympy 1.2) sym ('E(true,false)') ***** test % some variable names that are special to sympy but should not be for us f = sym ('f(S, Q, C, O, N)'); s1 = sympy (f); s2 = 'Function(''f'')(Symbol(''S''), Symbol(''Q''), Symbol(''C''), Symbol(''O''), Symbol(''N''))'; assert (strcmp (s1, s2)) ***** test % For SMT 2014 compatibility, I and E would become ImaginaryUnit and Exp(1) % but I'm not sure this is by design. This test would need to change if % we want stricter SMT compatibility. f = sym ('f(x, I, E)'); s1 = sympy (f); s2 = 'Function(''f'')(Symbol(''x''), Symbol(''I''), Symbol(''E''))'; assert (strcmp (s1, s2)) ***** test % not the identity, force symfun f = sym ('FF(w)'); s1 = sympy (f); s2 = 'Function(''FF'')(Symbol(''w''))'; assert (strcmp (s1, s2)) ***** test % not the identity, force symfun f = sym ('FF(w, pi)'); s1 = sympy (f); s2 = 'Function(''FF'')(Symbol(''w''), pi)'; assert (strcmp (s1, s2)) ***** test % not the identity, force symfun f = sym ('ff(x, y)'); s1 = sympy (f); s2 = 'Function(''ff'')(Symbol(''x''), Symbol(''y''))'; assert (strcmp (s1, s2)) ***** test % But this one should satisfy "sym(sympy(x) == x" identity % (OOTB, SymPy has ff -> FallingFactorial) f = sym ('FallingFactorial(x, y)'); s1 = sympy (f); s2 = 'FallingFactorial(Symbol(''x''), Symbol(''y''))'; assert (strcmp (s1, s2)) ***** error % certain words cannot be used as variables if (pycall_sympy__ ('return Version(spver) >= Version("1.10.1")')) f = sym ('f(x, y, print)') else error ('use another variable') end 86 tests, 86 passed, 0 known failure, 0 skipped [inst/@sym/abs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/abs.m ***** error abs (sym(1), 2) ***** assert (isequaln (abs (sym(nan)), sym(nan))) ***** shared x, d d = -1; x = sym('-1'); ***** test f1 = abs(x); f2 = abs(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = abs(A); f2 = abs(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = abs (d); f = abs (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/log10.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log10.m ***** assert (isequal (log10 (sym (1000)), sym (3))) ***** assert (isequal (log10 (sym ([10 100])), sym ([1 2]))) ***** test % round-trip syms x f = log10 (x); h = function_handle (f); A = h (1.1); B = log10 (1.1); assert (A, B, -eps) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/dirac.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dirac.m ***** error dirac (sym(1), 2) ***** assert (isequaln (dirac (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = dirac(x); f2 = dirac(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = dirac(A); f2 = dirac(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = dirac (d); f = dirac (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/argnames.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/argnames.m ***** test % basic tests syms x f = 2*x; assert (isempty (argnames(x))) assert (isempty (argnames(f))) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/atanh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atanh.m ***** error atanh (sym(1), 2) ***** assert (isequaln (atanh (sym(nan)), sym(nan))) ***** shared x, d d = 1/2; x = sym('1/2'); ***** test f1 = atanh(x); f2 = atanh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = atanh(A); f2 = atanh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = atanh (d); f = atanh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/all.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/all.m ***** test % matrix a = [0 3; 1 2]; s = sym (a); assert (isequal (all (s), all (a))) assert (isequal (all (s,1), all (a,1))) assert (isequal (all (s,2), all (a,2))) ***** test % vector a = [1 2 3]; s = sym (a); assert (isequal (all (s), all (a))) assert (isequal (all (s,1), all (a,1))) assert (isequal (all (s,2), all (a,2))) ***** test % should fail on symbols syms x s = [1 2 x]; try all (s) waserr = false; catch waserr = true; end assert (waserr) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/exp.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/exp.m ***** error exp (sym(1), 2) ***** assert (isequaln (exp (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = exp(x); f2 = exp(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = exp(A); f2 = exp(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = exp (d); f = exp (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/chebyshevT.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chebyshevT.m ***** error chebyshevT (sym(1)) ***** error chebyshevT (sym(1), 2, 3) ***** assert (isequaln (chebyshevT (2, sym(nan)), sym(nan))) ***** shared x syms x ***** assert(isequal(chebyshevT(0, x), sym(1))) ***** assert(isequal(chebyshevT(1, x), x)) ***** assert(isequal(chebyshevT(2, x), 2*x*x - 1)) ***** assert(isequal(chebyshevT([0 1 2], x), [sym(1) x (2*x*x-1)])) ***** test % round trip syms n z f = chebyshevT (n, z); h = function_handle (f, 'vars', [n z]); A = h (1.1, 2.2); B = chebyshevT (1.1, 2.2); assert (A, B) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/function_handle.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/function_handle.m ***** shared x,y,z syms x y z ***** test % basic test h = function_handle(2*x); assert(isa(h, 'function_handle')) assert(h(3)==6) ***** test % autodetect inputs h = function_handle(2*x*y, x+y); [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) ***** test % specified inputs h = function_handle(2*x*y, 'vars', [x y]); assert(h(3,5)==30) h = function_handle(2*x*y, x+y, 'vars', [x y]); [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) ***** test % cell arrays for vars list h = function_handle(2*x*y, x+y, 'vars', {x y}); [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) h = function_handle(2*x*y, x+y, 'vars', {'x' 'y'}); [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) ***** test % cell arrays specify order, overriding symvar order h = function_handle(x*y, 12/y, 'vars', {y x}); [t1, t2] = h(3, 6); assert(t1 == 18 && t2 == 4) h = function_handle(x*y, 12/y, 'vars', [y x]); [t1, t2] = h(3, 6); assert(t1 == 18 && t2 == 4) ***** test % cell arrays specify order, overriding symvar order h = function_handle(x*y, 12/y, 'vars', {y x}); [t1, t2] = h(3, 6); assert(t1 == 18 && t2 == 4) h = function_handle(x*y, 12/y, 'vars', [y x]); [t1, t2] = h(3, 6); assert(t1 == 18 && t2 == 4) ***** test % Functions with different names in Sympy. f = abs(x); % becomes Abs(x) h = function_handle(f); assert(h(-10) == 10) f = ceil(x); h = function_handle(f); assert(h(10.1) == 11) ***** test % 'file' with empty filename returns handle h = function_handle(2*x*y, 'file', ''); assert(isa(h, 'function_handle')) assert(h(3,5)==30) h = function_handle(2*x*y, 'vars', {x y}, 'file', ''); assert(isa(h, 'function_handle')) assert(h(3,5)==30) ***** test % output to disk fprintf('\n') if (exist ('OCTAVE_VERSION', 'builtin')) temp_file = tempname('', 'oct_'); else temp_file = tempname(); end % allow loading function from temp_file [temp_path, ans, ans] = fileparts(temp_file); addpath(temp_path); f = function_handle(2*x*y, 2^x, 'vars', {x y z}, 'file', temp_file); assert( isa(f, 'function_handle')) addpath(temp_path); % Matlab 2014a needs this? [a,b] = f(10,20,30); assert (isnumeric (a) && isnumeric (b)) assert (a == 400) assert (b == 1024) if (exist ('OCTAVE_VERSION', 'builtin')) assert (unlink([temp_file '.m']) == 0) else delete ([temp_file '.m']) end % remove temp_path from load path rmpath(temp_path); Wrote file /tmp/oct_ie4jp0.m. ***** test % output to disk: also works with .m specified if (exist ('OCTAVE_VERSION', 'builtin')) temp_file = [tempname('', 'oct_') '.m']; else temp_file = [tempname() '.m']; end % allow loading function from temp_file [temp_path, ans, ans] = fileparts(temp_file); addpath(temp_path); f = function_handle(2*x*y, 2^x, 'vars', {x y z}, 'file', temp_file); assert( isa(f, 'function_handle')) addpath(temp_path); % Matlab 2014a needs this? [a,b] = f(10,20,30); assert (isnumeric (a) && isnumeric (b)) assert (a == 400) assert (b == 1024) if (exist ('OCTAVE_VERSION', 'builtin')) assert (unlink(temp_file) == 0) else delete (temp_file) end % remove temp_path from load path rmpath(temp_path); Wrote file /tmp/oct_ITT7py.m. ***** test % non-scalar outputs H = [x y z]; M = [x y; z 16]; V = [x;y;z]; h = function_handle(H, M, V); [t1,t2,t3] = h(1,2,3); assert(isequal(t1, [1 2 3])) assert(isequal(t2, [1 2; 3 16])) assert(isequal(t3, [1;2;3])) ***** test % non-scalar outputs in .m files H = [x y z]; M = [x y; z 16]; V = [x;y;z]; if (exist ('OCTAVE_VERSION', 'builtin')) temp_file = tempname('', 'oct_'); else temp_file = tempname(); end % allow loading function from temp_file [temp_path, ans, ans] = fileparts(temp_file); addpath(temp_path); h = function_handle(H, M, V, 'vars', {x y z}, 'file', temp_file); assert( isa(h, 'function_handle')) addpath(temp_path); % Matlab 2014a needs this? [t1,t2,t3] = h(1,2,3); assert(isequal(t1, [1 2 3])) assert(isequal(t2, [1 2; 3 16])) assert(isequal(t3, [1;2;3])) if (exist ('OCTAVE_VERSION', 'builtin')) assert (unlink([temp_file '.m']) == 0) else delete ([temp_file '.m']) end % remove temp_path from load path rmpath(temp_path); Wrote file /tmp/oct_nWhJCN.m. ***** test % order of outputs is lexiographic syms a A x y f = y + 10*a + 100*x + 1000*A; h = function_handle(f); assert (h(1, 2, 3, 4) == 1000 + 20 + 300 + 4) ***** test % https://github.com/gnu-octave/symbolic/issues/854 f = function_handle (x + 1i*sqrt (sym(3))); assert (f (1), complex (1, sqrt (3)), -eps) 14 tests, 14 passed, 0 known failure, 0 skipped [inst/@sym/disp.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/disp.m ***** test syms x s = disp(sin(x)); assert(strcmp(s, sprintf(' sin(x)\n'))) ***** test syms x s = disp(sin(x/2), 'flat'); assert(strcmp(s, sprintf(' sin(x/2)\n'))) ***** test % Examples of 2x0 and 0x2 empty matrices: a = sym([1 2; 3 4]); b2x0 = a([true true], [false false]); b0x2 = a([false false], [true true]); assert (isequal (size (b2x0), [2 0])) assert (isequal (size (b0x2), [0 2])) s = disp(b2x0); assert(strcmp(s, sprintf(' []\n'))) s = disp(b0x2); assert(strcmp(s, sprintf(' []\n'))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/fortran.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fortran.m ***** shared x,y,z syms x y z ***** test % basic test f = x*sin(y) + abs(z); source = fortran(f); expected = ' x*sin(y) + abs(z)'; s1 = strrep (expected, 'abs', 'Abs'); assert (strcmp (source, expected) || strcmp (source, s1)) ***** test % output test f = x*sin(y) + abs(z); [F,H] = fortran(f, 'file', '', 'show_header', false); expected_h_code = sprintf('\ninterface\nREAL*8 function myfun(x, y, z)\nimplicit none\nREAL*8, intent(in) :: x\nREAL*8, intent(in) :: y\nREAL*8, intent(in) :: z\nend function\nend interface\n\n'); expected_f_code = sprintf('\nREAL*8 function myfun(x, y, z)\nimplicit none\nREAL*8, intent(in) :: x\nREAL*8, intent(in) :: y\nREAL*8, intent(in) :: z\n\nmyfun = x*sin(y) + abs(z)\n\nend function\n'); assert(strcmp(F.name, 'file.f90')) assert(strcmp(H.name, 'file.h')) %disp(expected_f_code); disp(F.code) s1 = strrep (expected_f_code, 'abs', 'Abs'); s2 = strrep (expected_f_code, sprintf ('\n'), sprintf ('\r\n')); s3 = strrep (s2, 'abs', 'Abs'); s4 = strrep (expected_h_code, sprintf ('\n'), sprintf ('\r\n')); assert (strcmp (F.code, expected_f_code) || strcmp (F.code, s1) || strcmp (F.code, s2) || strcmp (F.code, s3)) assert (strcmp (H.code, expected_h_code) || strcmp (H.code, s4)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/isconstant.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isconstant.m ***** test syms x A = [x 2 3]; B = [false true true]; assert (isequal (isconstant (A), B)) ***** test syms x A = [x 2; 3 x]; B = [false true; true false]; assert (isequal (isconstant (A), B)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/cos.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cos.m ***** error cos (sym(1), 2) ***** assert (isequaln (cos (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = cos(x); f2 = cos(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cos(A); f2 = cos(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = cos (d); f = cos (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/times.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/times.m ***** test % scalar syms x assert (isa (x.*2, 'sym')) assert (isequal (x.*2, x*2)) assert (isequal (2.*sym(3), sym(6))) assert (isequal (sym(2).*3, sym(6))) ***** test % matrix-matrix and matrix-scalar D = [0 1; 2 3]; A = sym(D); assert (isequal ( 2.*A , 2*D )) assert (isequal ( A.*2 , 2*D )) assert (isequal ( A.*A , D.*D )) assert (isequal ( A.*D , D.*D )) assert (isequal ( D.*A , D.*D )) ***** test syms x A = [1 x]; B = [2 3]; assert (isequal (A.*B, [2 3*x])) ***** test % immutable test A = sym([1 2]); B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)]])'); assert (isequal (A.*A, B.*B)) ***** test % MatrixSymbol test A = sym([1 2; 3 4]); B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); C = sym('MatrixSymbol("C", 2, 2)'); assert (~ isempty (strfind (sympy (C.*C), 'Hadamard'))) assert (~ isempty (strfind (sympy (A.*C), 'Hadamard'))) assert (~ isempty (strfind (sympy (C.*A), 'Hadamard'))) assert (~ isempty (strfind (sympy (B.*C), 'Hadamard'))) assert (~ isempty (strfind (sympy (C.*B), 'Hadamard'))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isscalar.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isscalar.m ***** assert(isscalar(sym('x'))) ***** test a = sym([1 2 3]); assert(~isscalar(a)) ***** assert(~isscalar(sym([]))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/ssinint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ssinint.m ***** assert (isequal (ssinint(sym(0)), -sym(pi)/2)) ***** test A = ssinint (sym ([0 1])); B = [-pi/2 -0.62471325642771360426]; assert( all(all( abs(double(A)-B) < 1e-15 ))) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/latex.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/latex.m ***** test syms x y = sin(x); assert (strcmp (latex (y), '\sin{\left(x \right)}')) ***** assert (strcmp (latex (exp (sym('x'))), 'e^{x}')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/sum.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sum.m ***** error sum (sym(1), 2, 3) ***** error sum (sym(1), 42) ***** shared x,y,z syms x y z ***** assert (isequal (sum (x), x)) ***** assert (isequal (sum ([x y z]), x+y+z)) ***** assert (isequal (sum ([x; y; z]), x+y+z)) ***** assert (isequal (sum ([x y z], 1), [x y z])) ***** assert (isequal (sum ([x y z], 2), x+y+z)) ***** shared a,b b = [1 2; 3 4]; a = sym(b); ***** assert (isequal (sum(a), sum(b))) ***** assert (isequal (sum(a,1), sum(b,1))) ***** assert (isequal (sum(a,2), sum(b,2))) ***** test % weird inputs a = sum('xx', sym(1)); assert (isequal (a, sym('xx'))) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/asinh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asinh.m ***** error asinh (sym(1), 2) ***** assert (isequaln (asinh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = asinh(x); f2 = asinh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = asinh(A); f2 = asinh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = asinh (d); f = asinh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/trace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/trace.m ***** test % scalar syms x assert (isequal (trace(x), x)) ***** test syms x A = [x 3; 2*x 5]; assert (isequal (trace(A), x + 5)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/atan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atan.m ***** error atan (sym(1), 2) ***** assert (isequaln (atan (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = atan(x); f2 = atan(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = atan(A); f2 = atan(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = atan (d); f = atan (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/null.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/null.m ***** test A = sym([1 2; 3 4]); assert (isempty (null (A))) ***** assert (isempty (null (sym(4)))) ***** test A = sym([1 2 3; 3 4 5]); assert (isequal (null(A), sym([1;-2;1]))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/adjoint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/adjoint.m ***** test syms x A = [x x^2; x^3 x^4]; B = [x^4 -x^2; -x^3 x]; assert( isequal( adjoint(A), B )) ***** test syms x assert( isequal( adjoint(x), 1)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/inv.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/inv.m ***** test % scalar syms x assert (isequal (inv(x), 1/x)) ***** test % diagonal syms x A = [sym(1) 0; 0 x]; B = [sym(1) 0; 0 1/x]; assert (isequal (inv(A), B)) ***** test % 2x2 inverse A = [1 2; 3 4]; assert (max (max (abs (double (inv (sym (A))) - inv(A)))) <= 3*eps) ***** error syms a; A = [a a; a a]; inv(A) ***** error syms a; A = [a a]; inv(A) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/beta.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/beta.m ***** error beta (sym(1), 2, 3) ***** assert (isequal (double (beta (sym(1), 2)), 1/2)) ***** assert (isinf (double (beta (sym(1), 0)))) ***** test % round trip syms x y f = beta (x, y); h = function_handle (f); A = h (1.1, 2.2); B = beta (1.1, 2.2); assert (A, B) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/mod.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mod.m ***** error mod (sym(1), 2, 3 ,4) ***** assert (isequal (mod (sym(5), 4), sym(1))) ***** assert (isequal (mod ([sym(5) 8], 4), [1 0] )) ***** assert (isequal (mod (sym(5), [2 3]), [1 2] )) ***** assert (isequal (mod ([sym(5) sym(6)], [2 3]), [1 0] )) ***** test syms x assert (isequal ( mod (5*x, 3), 2*x )) ***** test syms x a = [7*x^2 + 3*x + 3 3*x; 13*x^4 6*x]; assert (isequal ( mod (a,3), [x^2 0; x^4 0] )) ***** test % vector of polys with mix of vars: symvar on each syms x y a = [6*x 7*y]; b = mod(a, 4); c = [2*x 3*y]; assert (isequal (b, c)) ***** test % coeff has variable syms x n = sym('n', 'integer'); p = (3*n + 2)*x; q = mod(p, 3); assert (isequal (q, 2*x)) ***** test % coeff has variable syms x a p = a*x; q = mod(p, 3); q = children(q); q = q(2); % order might be fragile! w = subs(q, a, 5); assert (isequal (w, 2)) ***** test % different modulo syms x y q = mod([5*x + 10 5*y + 10], [2 3]); assert (isequal (q, [x 2*y + 1])) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/acos.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acos.m ***** error acos (sym(1), 2) ***** assert (isequaln (acos (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acos(x); f2 = acos(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acos(A); f2 = acos(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acos (d); f = acos (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/dsolve.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dsolve.m ***** error dsolve (1, sym('x')) ***** test syms y(x) de = diff(y, 2) - 4*y == 0; f = dsolve(de); syms C1 C2 g1 = C1*exp(-2*x) + C2*exp(2*x); g2 = C2*exp(-2*x) + C1*exp(2*x); assert (isequal (f, g1) || isequal (f, g2)) ***** test % Not enough initial conditions syms y(x) C1 de = diff(y, 2) + 4*y == 0; g = 3*cos(2*x) + C1*sin(2*x); try f = dsolve(de, y(0) == 3); waserr = false; catch waserr = true; expectederr = regexp (lasterr (), 'Perhaps.*under-specified'); f = 42; end assert ((waserr && expectederr) || isequal (f, g)) ***** test % Solution in implicit form syms y(x) C1 de = (2*x*y(x) - exp(-2*y(x)))*diff(y(x), x) + y(x) == 0; sol = dsolve (de); eqn = x*exp(2*y(x)) - log(y(x)) == C1; % could differ by signs sol = lhs (sol) - rhs (sol); eqn = lhs (eqn) - rhs (eqn); sol2 = subs (sol, C1, -C1); assert (isequal (sol, eqn) || isequal (sol2, eqn)) ***** test % Compute solution and classification syms y(x) C1 de = (2*x*y(x) - exp(-2*y(x)))*diff(y(x), x) + y(x) == 0; [sol, classy] = dsolve (de); assert (any (strcmp (classy, '1st_exact'))) ***** test % initial conditions (first order ode) syms y(x) de = diff(y, x) + 4*y == 0; f = dsolve(de, y(0) == 3); g = 3*exp(-4*x); assert (isequal (f, g)) ***** test % initial conditions (second order ode) syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, y(0) == 3, subs(diff(y,x),x,0)==0); g = 3*cos(2*x); assert (isequal (f, g)) ***** test % Dirichlet boundary conditions (second order ode) syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, y(0) == 2, y(1) == 0); g = -2*sin(2*x)/tan(sym('2'))+2*cos(2*x); assert (isequal (simplify (f - g), 0)) ***** test % Neumann boundary conditions (second order ode) syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, subs(diff(y,x),x,0)==1, subs(diff(y,x),x,1)==0); g = sin(2*x)/2+cos(2*x)/(2*tan(sym('2'))); assert (isequal (simplify (f - g), 0)) ***** test % Dirichlet-Neumann boundary conditions (second order ode) syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, y(0) == 3, subs(diff(y,x),x,1)==0); g = 3*sin(2*x)*tan(sym('2'))+3*cos(2*x); assert (isequal (simplify (f - g), 0)) ***** test % System of ODEs gives struct, Issue #1003. syms x(t) y(t) ode1 = diff(x(t),t) == 2*y(t); ode2 = diff(y(t),t) == 2*x(t); soln = dsolve([ode1, ode2]); assert (isstruct (soln)) assert (numfields (soln) == 2) assert (isequal (sort (fieldnames (soln)), {'x'; 'y'})) ***** test % System of ODEs syms x(t) y(t) C1 C2 ode1 = diff(x(t),t) == 2*y(t); ode2 = diff(y(t),t) == 2*x(t); soln = dsolve([ode1, ode2]); soln = [soln.x, soln.y]; g1 = [C1*exp(-2*t) + C2*exp(2*t), -C1*exp(-2*t) + C2*exp(2*t)]; g2 = [C1*exp(2*t) + C2*exp(-2*t), C1*exp(2*t) - C2*exp(-2*t)]; g3 = [-C1*exp(-2*t) + C2*exp(2*t), C1*exp(-2*t) + C2*exp(2*t)]; g4 = [C1*exp(2*t) - C2*exp(-2*t), C1*exp(2*t) + C2*exp(-2*t)]; % old SymPy <= 1.5.1 had some extra twos g5 = [2*C1*exp(-2*t) + 2*C2*exp(2*t), -2*C1*exp(-2*t) + 2*C2*exp(2*t)]; g6 = [2*C1*exp(2*t) + 2*C2*exp(-2*t), 2*C1*exp(2*t) - 2*C2*exp(-2*t)]; assert (isequal (soln, g1) || isequal (soln, g2) || ... isequal (soln, g3) || isequal (soln, g4) || ... isequal (soln, g5) || isequal (soln, g6)) ***** test % System of ODEs (initial-value problem) syms x(t) y(t) ode_1=diff(x(t),t) == 2*y(t); ode_2=diff(y(t),t) == 2*x(t); sol_ivp=dsolve([ode_1,ode_2],x(0)==1,y(0)==0); g_ivp=[exp(-2*t)/2+exp(2*t)/2,-exp(-2*t)/2+exp(2*t)/2]; assert (isequal ([sol_ivp.x, sol_ivp.y], g_ivp)) ***** test syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, y(0) == 0, y(sym(pi)/4) == 1); g = sin(2*x); assert (isequal (f, g)) ***** test % Nonlinear example syms y(x) C1 e = diff(y, x) == y^2; g = -1 / (C1 + x); soln = dsolve(e); assert (isequal (soln, g)) ***** test % Nonlinear example with initial condition syms y(x) e = diff(y, x) == y^2; g = -1 / (x - 1); soln = dsolve(e, y(0) == 1); assert (isequal (soln, g)) ***** test % forcing, Issue #183, broken in older sympy if (pycall_sympy__ ('return Version(spver) >= Version("1.7.1")')) syms x(t) y(t) ode1 = diff(x) == x + sin(t) + 2; ode2 = diff(y) == y - t - 3; soln = dsolve([ode1 ode2], x(0) == 1, y(0) == 2); X = soln.x; Y = soln.y; assert (isequal (diff(X) - (X + sin(t) + 2), 0)) assert (isequal (diff(Y) - (Y - t - 3), 0)) end ***** test syms f(x) a b de = diff(f, x) == 4*f; s = dsolve(de, f(a) == b); assert (isequal (subs(s, x, a), b)) ***** test % array of ICs syms x(t) y(t) ode_1 = diff (x(t), t) == 2*y(t); ode_2 = diff (y(t), t) == 2*x(t); sol = dsolve([ode_1, ode_2], [x(0)==1 y(0)==0]); g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; assert (isequal ([sol.x, sol.y], g)) ***** test % cell-array of ICs or ODEs, but not both % Note: to support both we'd need a wrapper outside of @sym syms x(t) y(t) ode_1 = diff (x(t), t) == 2*y(t); ode_2 = diff (y(t), t) == 2*x(t); sol = dsolve([ode_1, ode_2], {x(0)==1 y(0)==0}); g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; assert (isequal ([sol.x, sol.y], g)) sol = dsolve({ode_1, ode_2}, [x(0)==1 y(0)==0]); g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; assert (isequal ([sol.x, sol.y], g)) ***** test % array of ICs, Issue #1040. if (pycall_sympy__ ('return Version(spver) >= Version("1.7.1")')) syms x(t) y(t) z(t) syms x_0 y_0 z_0 diffEqns = [diff(x, t) == -x + 1, diff(y, t) == -y, diff(z, t) == -z]; initCond = [x(0) == x_0, y(0) == y_0, z(0) == z_0]; soln = dsolve (diffEqns, initCond); soln = [soln.x, soln.y, soln.z]; exact_soln = [(x_0 - 1)*exp(-t) + 1 y_0*exp(-t) z_0*exp(-t)]; assert (isequal (soln, exact_soln)) end 21 tests, 21 passed, 0 known failure, 0 skipped [inst/@sym/acoth.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acoth.m ***** error acoth (sym(1), 2) ***** assert (isequaln (acoth (sym(nan)), sym(nan))) ***** shared x, d d = 2; x = sym('2'); ***** test f1 = acoth(x); f2 = acoth(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acoth(A); f2 = acoth(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acoth (d); f = acoth (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ezcontour.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezcontour.m ***** error syms x y z ezcontour (x*y*z) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/ellipticCPi.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCPi.m ***** error ellipticCPi (sym (1)) ***** error ellipticCPi (sym (1), 2, 3) ***** assert (double (ellipticCPi (0, sym (1)/2)), 1.854074677, 10e-10) ***** assert (double (ellipticCPi (sym (6)/10, sym(71)/10)), 1.29469534336658, -20*eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/isnan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isnan.m ***** shared x,zoo,oo,snan oo = sym(inf); zoo = sym('zoo'); x = sym('x'); snan = sym(nan); ***** test % various ops that give nan assert (isnan(0*oo)) assert (isnan(0*zoo)) assert (isnan(snan)) assert (isnan(snan-snan)) assert (isnan(oo+snan)) assert (isnan(oo-oo)) assert (isnan(oo-zoo)) assert (isnan(oo+zoo)) assert (~isnan(oo)) assert (~isnan(zoo)) assert (~isnan(oo+oo)) ***** test % more ops give nan assert(isnan(x+snan)) assert(isnan(x*snan)) assert(isnan(0*snan)) assert(isnan(x+nan)) assert(isnan(x*nan)) assert(isnan(sym(0)*nan)) ***** test % array assert (isequal( isnan([oo zoo]), [0 0] )) assert (isequal( isnan([10 snan]), [0 1] )) assert (isequal( isnan([snan snan]), [1 1] )) assert (isequal( isnan([snan x]), [1 0] )) ***** test % sub in to algebraic expression gives nan y = x - oo; y = subs(y, x, oo); assert(isnan(y)) ***** test % Must not contain string 'symbol'; these all should make an % actual nan. Actually a ctor test, not isnan. y = sym(nan); assert (isempty (strfind (sympy (y), 'Symbol'))) y = sym('nan'); assert (isempty (strfind (sympy (y), 'Symbol'))) y = sym('NaN'); assert (isempty( strfind (sympy (y), 'Symbol'))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/imag.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/imag.m ***** assert (isequal (imag (sym (4) + 3i),3)) ***** test syms x y real z = x + 1i*y; assert (isequal (imag (z),y)) ***** test syms x y real Z = [4 x + 1i*y; 1i*y 4 + 3i]; assert (isequal (imag (Z),[0 y; y 3])) ***** test syms x real d = exp (x*i); assert (isequal (imag (d), sin (x))) ***** test % round trip syms x d = 3 - 5i; f = imag (x); A = imag (d); h = function_handle (f); B = h (d); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ipermute.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ipermute.m ***** error permute (sym(1)) ***** error permute (sym(1), 2, 3) ***** test syms x A = [1 x]; perm = [2 1]; B = permute(A, perm); C = ipermute(B, perm); assert (isequal(C, A)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/sec.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sec.m ***** error sec (sym(1), 2) ***** assert (isequaln (sec (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sec(x); f2 = sec(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sec(A); f2 = sec(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sec (d); f = sec (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/angle.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/angle.m ***** test Z = [sqrt(sym(3)) + 3*sym(i), 3 + sqrt(sym(3))*sym(i); 1 + sym(i), sym(i)]; Q = [sym(pi)/3 sym(pi)/6; sym(pi)/4 sym(pi)/2]; assert( isequal( angle(Z), Q)); ***** test % roundtrip syms x A = angle (2+2i); f = angle (x); h = function_handle (f); B = h (2+2i); assert (A, B, -eps) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/iscolumn.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/iscolumn.m ***** assert (iscolumn (sym ([1]))) ***** assert (iscolumn (sym ([1 2 3]'))) ***** assert (~iscolumn (sym ([]))) ***** assert (~iscolumn (sym ([1 2 3]))) ***** assert (~iscolumn (sym ([1 2; 3 4]))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/cosh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosh.m ***** error cosh (sym(1), 2) ***** assert (isequaln (cosh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = cosh(x); f2 = cosh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cosh(A); f2 = cosh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = cosh (d); f = cosh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/real.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/real.m ***** assert (isequal (real (sym (4) + 3i),4)) ***** test syms x y real z = x + 1i*y; assert (isequal (real (z),x)) ***** test syms x y real Z = [4 x + 1i*y; x 4 + 3i]; assert (isequal (real (Z),[4 x; x 4])) ***** test syms x real d = exp (x*i); assert (isequal (real (d), cos (x))) ***** test % round trip syms x d = 3 - 5i; f = real (x); A = real (d); h = function_handle (f); B = h (d); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/polylog.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/polylog.m ***** assert (isequal (polylog (sym('s'), 0), sym(0))) ***** assert (isequal (double (polylog (1, sym(-1))), -log(2))) ***** assert (isequal (double (polylog (0, sym(2))), -2)) ***** assert (isequal (double (polylog (-1, sym(2))), 2)) ***** assert (isequal (double (polylog (-2, sym(3))), -1.5)) ***** assert (isequal (double (polylog (-3, sym(2))), 26)) ***** assert (isequal (double (polylog (-4, sym(3))), -15)) ***** assert (isequal (double (polylog (1, sym(1)/2)), log(2))) ***** test % round trip syms s z f = polylog (s, z); h = function_handle (f, 'vars', [s z]); A = h (1.1, 2.2); B = polylog (1.1, 2.2); assert (A, B) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/acosh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acosh.m ***** error acosh (sym(1), 2) ***** assert (isequaln (acosh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acosh(x); f2 = acosh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acosh(A); f2 = acosh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acosh (d); f = acosh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/flipud.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/flipud.m ***** test % simple syms x A = [x 2; sym(pi) x]; B = [sym(pi) x; x 2]; assert (isequal (flipud(A), B)) ***** test % simple, odd # rows syms x A = [x 2; sym(pi) x; [1 2]]; B = [[1 2]; sym(pi) x; x 2]; assert (isequal (flipud(A), B)) ***** test % scalar syms x assert (isequal (flipud(x), x)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/ne.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ne.m ***** test % simple x = sym(1); y = sym(1); e = x ~= y; assert (~logical (e)) x = sym(1); y = sym(2); e = x ~= y; assert (logical(e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a ~= b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 ~= x)) assert (~logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x ~= 10)) ***** test % oo syms oo x e = oo ~= x; assert (isa (e, 'sym')) s = strtrim (disp (e, 'flat')); % SymPy <= 0.7.6.x will be '!=', newer gives 'Ne', test both assert (strcmp (s, 'oo != x') || strcmp (s, 'Ne(oo, x)')) ***** test % nan syms oo x snan = sym(nan); e = snan ~= sym(0); assert (logical (e)) e = snan ~= snan; assert (logical (e)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/or.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/or.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple assert (isequal (t | f, t)) assert (isequal (t | t, t)) assert (isequal (f | f, f)) ***** test % array w = [t t f f]; z = [t f t f]; assert (isequal (w | z, [t t t f])) ***** test % output is sym even for scalar t/f assert (isa (t | f, 'sym')) ***** test % eqns syms x e = or(x == 4, x == 5); assert (isequal (subs(e, x, [3 4 5 6]), [f t t f])) ***** error or (sym(1), 2, 3) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ezmesh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezmesh.m ***** error syms u v t ezmesh(u*v, 2*u*v, 3*v*t) ***** error syms u v t ezmesh(u*v, 2*u*v, u*v*t) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/gammaln.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gammaln.m ***** assert (isequal (gammaln (sym (3)), log (sym (2)))) ***** assert (isequal (gammaln (sym (10)), log (gamma (sym (10))))) ***** test % compare to Maple: evalf(lnGAMMA(Pi)); maple = vpa ('0.827694592323437101529578558452359951153502', 40); us = vpa (gammaln (sym(pi)), 40); assert (abs(double(maple-us)) < 1e-39) ***** test % compare to Maple: evalf(lnGAMMA(3+2*I)); maple = vpa ('-0.0316390593739611898037677296008797172022603', 40) + ... vpa ('2.02219319750132712401643376238334982100512j', 40); us = vpa (gammaln (sym(3) + 2i), 40); assert (abs(double(maple-us)) < 1e-39) ***** test % compare to Maple: evalf(lnGAMMA(-1.5)); % notably, @double/gammaln has zero imag part maple = vpa ('0.8600470153764810145109326816703567873271571', 40) - ... vpa ('6.2831853071795864769252867665590057683943388j', 40); us = vpa (gammaln (-sym(3)/2), 40); assert (abs(double(maple-us)) < 1e-39) ***** assert (gammaln (pi), double (gammaln (sym (pi))), -3*eps) ***** assert (gammaln (100), double (gammaln (sym (100))), -3*eps) ***** assert (gammaln (1e-3), double (gammaln (1/sym (1e3))), -100*eps) ***** test % round trip syms x f = gammaln (x); h = function_handle (f); A = h (1.1); B = gammaln (1.1); assert (A, B) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/sympy.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sympy.m ***** assert (strcmp (sympy (sym(pi)), 'pi')) ***** assert (strcmp (sympy (sym(1)), 'Integer(1)')) ***** assert (strcmp (sympy (sym(2)/3), 'Rational(2, 3)')) ***** assert (strcmp (sympy (sym('x')), 'Symbol(''x'')')) ***** test x = sym('x'); assert (isequal (sym(sympy(x)), x)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/gammainc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gammainc.m ***** assert (isequal (gammainc (sym(0), 1), sym(0))) ***** assert (isequal (gammainc (sym(0), 2), sym(0))) ***** assert (isequal (gammainc (sym('oo'), 1), sym(1))) ***** assert (isequal (gammainc (sym(0), 1, 'upper'), sym(1))) ***** assert (isequal (gammainc (sym(0), 2, 'upper'), sym(1))) ***** assert (isequal (gammainc (sym('oo'), 1, 'upper'), sym(0))) ***** test % default is lower syms x a assert (isequal (gammainc (x, a), gammainc(x, a, 'lower'))) ***** test % compare to double x = 5; a = 1; A = gammainc (x, a); B = double (gammainc (sym(x), a)); assert(A, B, -eps) ***** test % compare to double where gamma(a) != 1 x = 5; a = 3; A = gammainc (x, a); B = double (gammainc (sym(x), a)); assert(A, B, -eps) ***** test % compare to double x = 100; a = 1; A = gammainc (x, a); B = double (gammainc (sym(x), a)); assert(A, B, -eps) ***** test % compare to double xs = sym(1)/1000; x = 1/1000; a = 1; A = gammainc (x, a); B = double (gammainc (xs, a)); assert(A, B, -eps) ***** test % compare to double x = 5; a = 1; A = gammainc (x, a, 'upper'); B = double (gammainc (sym(x), a, 'upper')); assert(A, B, -10*eps) ***** test % compare to double x = 10; a = 1; A = gammainc (x, a, 'upper'); B = double (gammainc (sym(x), a, 'upper')); assert(A, B, -10*eps) ***** test % compare to double x = 40; a = 1; A = gammainc (x, a, 'upper'); B = double (gammainc (sym(x), a, 'upper')); assert(A, B, -10*eps) ***** test % compare to double xs = sym(1)/1000; x = 1/1000; a = 1; A = gammainc (x, a, 'upper'); B = double (gammainc (xs, a, 'upper')); assert(A, B, -eps) ***** test % vectorized P = gammainc([sym(pi) 2], [1 3]); expected = [gammainc(pi, sym(1)) gammainc(2, sym(3))]; assert (isequal (P, expected)) ***** test % vectorized P = gammainc(sym(pi), [1 3]); expected = [gammainc(sym(pi), 1) gammainc(sym(pi), 3)]; assert (isequal (P, expected)) ***** test % vectorized P = gammainc([sym(pi) 2], 1); expected = [gammainc(pi, sym(1)) gammainc(2, sym(1))]; assert (isequal (P, expected)) ***** test % round trip syms x a f = gammainc (x, a, 'upper'); h = function_handle (f, 'vars', [x a]); A = h (1.1, 2); B = gammainc (1.1, 2, 'upper'); assert (A, B) ***** test % round trip syms x a f = gammainc (x, a, 'lower'); h = function_handle (f, 'vars', [x a]); A = h (1.1, 2); B = gammainc (1.1, 2, 'lower'); assert (A, B) ***** test % round trip syms x a f = gammainc (x, a, 'upper'); h = function_handle (f, 'vars', [x a]); A = h (1.1, 2.2); B = gammainc (1.1, 2.2, 'upper'); assert (A, B) ***** test % round trip syms x a f = gammainc (x, a, 'lower'); h = function_handle (f, 'vars', [x a]); A = h (1.1, 2.2); B = gammainc (1.1, 2.2, 'lower'); assert (A, B) 22 tests, 22 passed, 0 known failure, 0 skipped [inst/@sym/isrow.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isrow.m ***** assert (isrow (sym ([1]))) ***** assert (isrow (sym ([1 2 3]))) ***** assert (~isrow (sym ([]))) ***** assert (~isrow (sym ([1 2 3]'))) ***** assert (~isrow (sym ([1 2; 3 4]))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/coeffs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coeffs.m ***** error coeffs (sym(1), 2, 3, 4) ***** error coeffs (sym(1), 2, 'al') ***** error coeffs (sym(1), 'al') ***** test % simple syms x [c, t] = coeffs(6*x*x + 27); assert (isequal (c, [6 27])) assert (isequal (t, [x*x 1])) ***** test % specify a variable syms x [c, t] = coeffs(6*x*x + 27, x); assert (isequal (c, [6 27])) assert (isequal (t, [x*x 1])) ***** test % specify another variable syms x y [c, t] = coeffs(6*x + 27, y); assert (isequal (c, 6*x + 27)) assert (isequal (t, 1)) ***** test % weird SMT order syms x a1 = [27 6]; a2 = [6 27]; c = coeffs(6*x*x + 27); assert (isequal (c, a1)) coeffs(6*x*x + 27); assert (isequal (ans, a1)) [c, t] = coeffs(6*x*x + 27); assert (isequal (c, a2)) ***** test % no weird order with "all" syms x c = coeffs(6*x*x + 27, 'all'); assert (isequal (c, [6 0 27])) ***** test % "all" syms x [c, t] = coeffs(6*x*x + 27, 'all'); assert (isequal (c, [6 0 27])) assert (isequal (t, [x^2 x 1])) ***** test % "All" syms x [c, t] = coeffs(6*x, 'All'); assert (isequal (c, [6 0])) assert (isequal (t, [x 1])) ***** test % multivariable array syms x y [c, t] = coeffs(6*x*x + 27*y*x + 36, [x y]); a = [6 27 36]; s = [x^2 x*y 1]; assert (isequal (c, a)) assert (isequal (t, s)) % with list [c, t] = coeffs(6*x*x + 27*y*x + 36, {x y}); assert (isequal (c, a)) assert (isequal (t, s)) ***** test % other symbols treated as part of coeffs syms x y [c, t] = coeffs(6*x*x + 27*y*x + 36, x); a = [6 27*y 36]; s = [x^2 x 1]; assert (isequal (c, a)) assert (isequal (t, s)) ***** error % TODO: multivariate all not working (https://github.com/gnu-octave/symbolic/issues/720) syms x y [c, t] = coeffs(6*x^2 + 7*y + 19, [x y], 'all'); ***** test % empty same as not specifying; maybe not SMT compatible: % https://github.com/gnu-octave/symbolic/pull/708#discussion_r94292831 syms x y [c, t] = coeffs(6*x*x + 27*y*x + 36, {}); a = [6 27 36]; assert (isequal (c, a)) [c, t] = coeffs(6*x*x + 27*y*x + 36); assert (isequal (c, a)) ***** test % no input defaults to all symbols (not symvar to get x) syms x y [c, t] = coeffs(6*x*x + 27*y*x + 36); assert (isequal (c, [6 27 36])) ***** test % non sym input syms x assert (isequal (coeffs(6, x), sym(6))) ***** test % constant input without x assert (isequal (coeffs(sym(6)), sym(6))) ***** test % constant input without x assert (isequal (coeffs (sym(6), {}), sym(6))) % irrational coefficients syms x f = x^2 + sqrt(sym(2))*x; [c1, t1] = coeffs (f); [c2, t2] = coeffs (f, x); assert (isequal (c1, c2)) assert (isequal (t1, t2)) 18 tests, 18 passed, 0 known failure, 0 skipped [inst/@sym/isallconstant.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isallconstant.m ***** assert (isallconstant([sym(1) 2 3])) ***** test syms x assert (~isallconstant([sym(1) x 3])) ***** test syms x assert (~isallconstant([sym(1) x; sym(2) 3])) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/display.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/display.m ***** test assert(true) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/dot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dot.m ***** error dot (sym(1), 2, 3) ***** test a = sym([1; 1; 0]); b = sym([1; 2; 4]); c = dot(a, b); assert (isequal (c, sym(3))) ***** test syms x a = sym([x; 0; 0]); b = sym([0; 1; 0]); c = dot(a, b); assert (isequal (c, sym(0))) ***** test assert (isequal (dot (sym([1 i]), sym([i 2])), sym(-i))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/cumsum.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cumsum.m ***** shared x, y x = sym ('x'); y = sym ('y'); ***** error cumsum (x, 1, 2) ***** assert (isequal (cumsum ([-x; -2*x; -3*x]), [-x; -3*x; -6*x])) ***** assert (isequal (cumsum ([x + 2i*y, 2*x + i*y]), [x + 2i*y, 3*x + 3i*y])) ***** assert (isequal (cumsum ([x, 2*x; 3*x, 4*x], 1), [1*x, 2*x; 4*x, 6*x] )) ***** assert (isequal (cumsum ([x, 2*x; 3*x, 4*x], 2), [1*x, 3*x; 3*x, 7*x] )) ***** test cumsum ([x, x], [2, 1]); # ensure behaves like builtin cumsum ***** test cumsum ([x, x], [1, -2]); # ensure behaves like builtin cumsum ***** error cumsum (x, []) ***** error cumsum (x, {1}) ***** error cumsum (x, struct('a', 1)) ***** error cumsum (x, x) ***** error cumsum (x, 0) ***** error cumsum (x, -1) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/cosint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosint.m ***** error cosint (sym(1), 2) ***** xtest assert (isequaln (cosint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (cosint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = cosint(x); f2 = 0.3374039229009681346626; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cosint(A); f2 = 0.3374039229009681346626; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = cosint (d); f = cosint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) ***** test % rewrite syms x y1 = cosint (x); y2 = rewrite (y1, 'Integral'); d1 = diff (y1, x); d2 = diff (y2, x); assert (isequal (d1, simplify(d2))) v1 = double (subs (d1, x, 2)); v2 = double (subs (d2, x, 2)); assert (v1, v2, -eps) 6 tests, 5 passed, 1 known failure, 0 skipped [inst/@sym/airy.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/airy.m ***** test syms z a = airy(0, z); ap = airy(1, z); assert (isequal (diff (a), ap)) assert (isequal (diff (ap), z*a)) ***** test syms z b = airy(2, z); bp = airy(3, z); assert (isequal (diff (b), bp)) assert (isequal (diff (bp), z*b)) ***** test % default to k=0 syms z a = airy(0, z); a2 = airy(z); assert (isequal (a, a2)) ***** error airy(0, sym('x'), 2) ***** error airy(4, sym('z')) ***** error airy(-1, sym('z')) ***** test % symbolic k syms z b1 = airy(2, z); b2 = airy(sym(2), z); assert (isequal (b1, b2)) ***** test % doubles, relative error X = [1 2 pi; 4i 5 6+6i]; Xs = sym(X); for k = 0:3 A = double(airy(k, Xs)); B = airy(k, X); assert (all (all (abs(A - B) < 500*eps*abs(A)))) end ***** test % round-trip syms x for k = 0:3 A = airy(k, 10); q = airy(k, x); h = function_handle(q); B = h(10); assert (abs(A-B) < 500*eps*abs(A)) end 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/diag.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/diag.m ***** test % scalar syms x assert (isequal (diag(x), x)) ***** test % row,col vec input syms x r = [1 x 2]; c = [sym(1); x]; assert (isequal (diag(diag(c)), c)) assert (isequal (diag(c), [sym(1) 0; 0 x])) assert (isequal (diag(diag(r)), r.')) assert (isequal (diag(r), [sym(1) 0 0; 0 x 0; sym(0) 0 2])) ***** test % create matrix, kth diag syms x r = [1 x]; z = sym(0); assert (isequal (diag (x, 0), x)) assert (isequal (diag (x, 1), [z x; z z])) assert (isequal (diag (x, -1), [z z; x z])) assert (isequal (diag (x, 2), [z z x; z z z; z z z])) assert (isequal (diag (r, 1), [z 1 z; z z x; z z z])) ***** test % extract kth diag A = sym([1 2 3; 4 5 6]); assert (isequal (diag(A), sym([1; 5]))) assert (isequal (diag(A, 0), sym([1; 5]))) assert (isequal (diag(A, 1), sym([2; 6]))) assert (isequal (diag(A, 2), sym(3))) assert (isequal (diag(A, -1), sym(4))) assert (isempty (diag(A, -2))) assert (isempty (diag(A, 3))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/besseli.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besseli.m ***** test X = [1 2 3; 4 5 6]; ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; n = double(ns); A = double(besseli(ns, X)); B = besseli(n, X); assert (all (all (abs (A - B) < 100*eps*abs(A)))) ***** test % roundtrip syms x A = besseli(2, 10); q = besseli(2, x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps*abs(A)) ***** error besseli(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/ellipke.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipke.m ***** error ellipke (sym(1), 2) ***** test for i = 2:10 [K E] = ellipke (sym (1)/i); [k e] = ellipke (1/i); assert (double ([K E]), [k e], 2*eps) end 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/zeta.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/zeta.m ***** error zeta (sym(1), 2, 3) ***** assert (isequaln (zeta (sym(nan)), sym(nan))) ***** test f1 = zeta (sym(2)); f2 = pi^2/6; assert (double (f1), f2, -1e-15) ***** test A = sym([0 2; 4 6]); f1 = zeta (A); f2 = [-1/2 pi^2/6; pi^4/90 pi^6/945]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); f = zeta (y); h = function_handle (f); A = zeta (2); B = h (2); assert (A, B, -eps) ***** test syms x assert (isequal (zeta (0, x), zeta(x))) ***** test % ensure its the nth deriv wrt x, not the n deriv syms x n F = zeta (n, x); F = subs(F, n, 3); assert (isequal (F, diff (zeta (x), x, x, x))) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/mtimes.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mtimes.m ***** test % scalar syms x assert (isa (x*2, 'sym')) assert (isequal (2*sym(3), sym(6))) assert (isequal (sym(2)*3, sym(6))) ***** test % matrix-scalar D = [0 1; 2 3]; A = sym(D); assert (isa (2*A, 'sym')) assert (isequal ( 2*A , 2*D )) assert (isequal ( A*2 , 2*D )) ***** test % matrix-matrix D = [0 1; 2 3]; A = sym(D); assert (isa (A*A, 'sym')) assert (isequal ( A*A , D*D )) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/tan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tan.m ***** error tan (sym(1), 2) ***** assert (isequaln (tan (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = tan(x); f2 = tan(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = tan(A); f2 = tan(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = tan (d); f = tan (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/lgamma.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lgamma.m ***** test % tested by gammaln assert (isequal (lgamma (sym ('x')), gammaln (sym ('x')))) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/assumeAlso.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/assumeAlso.m ***** test syms x x = assumeAlso(x, 'positive'); a = assumptions(x); assert(strcmp(a, 'x: positive')) ***** error syms x x = assumeAlso (x, x); ***** test syms x positive x = assumeAlso(x, 'integer'); [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) ***** test % multiple assumptions syms x positive x = assumeAlso(x, 'integer', 'even'); [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) assert(a{1}.even) ***** test % multiple assumptions syms x integer x = assumeAlso (x, 'even', 'positive'); [tilde, a] = assumptions (x, 'dict'); assert (a{1}.integer) assert (a{1}.even) assert (a{1}.positive) ***** test % has output so avoids workspace syms x positive x2 = x; f = sin(x); assumeAlso(x, 'integer'); a = assumptions(x); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) a = assumptions(x2); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) a = assumptions(f); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) ***** test % has no output so does workspace syms x positive x2 = x; f = sin(x); assumeAlso(x, 'integer'); a = assumptions(x); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) a = assumptions(x2); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) a = assumptions(f); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) ***** error syms a assumeAlso (a > 0) ***** test syms x y assumeAlso ([x y], 'even') assert (strcmp (assumptions (x), 'x: even')) assert (strcmp (assumptions (y), 'y: even')) ***** test syms x y positive f = sin (2*x); assumeAlso ([x y], 'even') assert (strcmp (assumptions (x), 'x: even, positive') || strcmp (assumptions (x), 'x: positive, even')) assert (strcmp (assumptions (y), 'y: even, positive') || strcmp (assumptions (y), 'y: positive, even')) assert (strcmp (assumptions (f), 'x: even, positive') || strcmp (assumptions (f), 'x: positive, even')) ***** test % with output, original x and y are unchanged syms x y positive f = sin (2*x); [p, q] = assumeAlso ([x y], 'even'); assert (strcmp (assumptions (x), 'x: positive')) assert (strcmp (assumptions (y), 'y: positive')) assert (strcmp (assumptions (f), 'x: positive')) assert (strcmp (assumptions (p), 'x: even, positive') || strcmp (assumptions (p), 'x: positive, even')) assert (strcmp (assumptions (q), 'y: even, positive') || strcmp (assumptions (q), 'y: positive, even')) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/gamma.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gamma.m ***** error gamma (sym(1), 2) ***** assert (isequaln (gamma (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = gamma(x); f2 = gamma(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = gamma(A); f2 = gamma(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = gamma (d); f = gamma (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ellipticK.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticK.m ***** error ellipticK (sym(1), 2) ***** assert (isequal (ellipticK (sym (0)), sym (pi)/2)) ***** assert (isequal (ellipticK (sym (-inf)), sym (0))) ***** assert (double (ellipticK (sym (1)/2)), 1.854074677, 10e-10) ***** assert (double (ellipticK (sym (pi)/4)), 2.225253684, 10e-10) ***** assert (double (ellipticK (sym (-55)/10)), 0.9324665884, 10e-11) ***** test % compare to double ellipke m = 1/5; ms = sym(1)/5; [K, E] = ellipke (m); assert (double (ellipticK (ms)), K, -1e-15) assert (double (ellipticE (ms)), E, -1e-15) ***** test % compare to double ellipke if (exist ('OCTAVE_VERSION', 'builtin')) m = -10.3; ms = -sym(103)/10; [K, E] = ellipke (m); assert (double (ellipticK (ms)), K, -1e-15) assert (double (ellipticE (ms)), E, -1e-15) end ***** test % compare to Maple us = vpa (ellipticK (sym (7)), 40); % > evalf(EllipticK(sqrt(7)), 40); maple = vpa ('0.6168027921799632674669917683443602673441', 40) - ... vpa ('0.9114898734184488922164103102629560336918j', 40); assert (abs (double (maple - us)), 0, 1e-39) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/asec.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asec.m ***** error asec (sym(1), 2) ***** assert (isequaln (asec (sym(nan)), sym(nan))) ***** shared x, d d = 2; x = sym('2'); ***** test f1 = asec(x); f2 = asec(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = asec(A); f2 = asec(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = asec (d); f = asec (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isinf.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isinf.m ***** shared x,zoo,oo,snan oo = sym(inf); zoo = sym('zoo'); x = sym('x'); snan = sym(nan); ***** test % various ops that give inf and nan assert (isinf(oo)) assert (isinf(zoo)) assert (isinf(oo+oo)) assert (~isinf(oo+zoo)) assert (~isinf(0*oo)) assert (~isinf(0*zoo)) assert (~isinf(snan)) assert (~isinf(oo-oo)) assert (~isinf(oo-zoo)) ***** test % arrays assert (isequal( isinf([oo zoo]), [1 1] )) assert (isequal( isinf([oo 1]), [1 0] )) assert (isequal( isinf([10 zoo]), [0 1] )) assert (isequal( isinf([x oo x]), [0 1 0] )) ***** test % Must not contain string 'symbol'; these all should make an % actual infinity. Actually a ctor test, not isinf. % IIRC, SMT in Matlab 2013b fails. oo = sym(inf); assert (isempty (strfind (sympy (oo), 'Symbol'))) oo = sym(-inf); assert (isempty (strfind (sympy (oo), 'Symbol'))) oo = sym('inf'); assert (isempty (strfind (sympy (oo), 'Symbol'))) oo = sym('-inf'); assert (isempty (strfind (sympy (oo), 'Symbol'))) oo = sym('Inf'); assert (isempty (strfind (sympy (oo), 'Symbol'))) ***** test % ops with infinity shouldn't collapse syms x oo zoo y = x + oo; assert (~isempty (strfind (lower (sympy (y)), 'add') )) y = x - oo; assert (~isempty (strfind (lower (sympy (y)), 'add') )) y = x - zoo; assert (~isempty (strfind (lower (sympy (y)), 'add') )) y = x*oo; assert (~isempty (strfind (lower (sympy (y)), 'mul') )) ***** test % ops with infinity are not necessarily infinite syms x oo zoo y = x + oo; assert(~isinf(y)) % SMT 2014a says "true", I disagree y = x - zoo; assert(~isinf(y)) y = x*oo; assert(~isinf(y)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isNone.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isNone.m ***** test None = pycall_sympy__ ('return None'); ***** shared None None = pycall_sympy__ ('return None'); ***** assert (isNone(None)) ***** assert (~isNone(sym('x'))) ***** assert (islogical(isNone(None))) ***** test a = [1 None]; a = [None None]; a = [None; 1]; a = [None; None]; a = [None 2; 3 None]; ***** test a = sym([1 2]); a(1,2) = None; assert (isequal (a, [sym(1) None])); ***** assert (isequal (None(1), None)); ***** error None(None); ***** error x=sym('x'); x(None); ***** error x=1; x(None); ***** error None(None); ***** error 1 + None; ***** error None - 1; ***** error 6*None; ***** error 2^None; ***** error [1 2].*None; ***** error isconstant(None); ***** error nnz(None); ***** error logical(None); ***** error isAlways(None); ***** error logical([sym(true) None]); ***** error isAlways([sym(true) None]); ***** assert (isequal (children(None), None)) ***** assert (isequal (repmat(None, 1, 2), [None None])) ***** assert (isequal (fliplr(None), None)) ***** assert (isequal (flipud(None), None)) 26 tests, 26 passed, 0 known failure, 0 skipped [inst/@sym/subsasgn.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsasgn.m ***** shared a,b b = [1:4]; a = sym(b); ***** test a(1) = 10; b(1) = 10; assert(isequal( a, b )) ***** test I = logical([1 0 1 0]); a(I) = 2; b(I) = 2; assert(isequal( a, b )) ***** test I = logical([1 0 1 0]); a(I) = [2 4]; b(I) = [2 4]; assert(isequal( a, b )) ***** test I = logical([1 0 1 0]); a(I) = [2; 4]; b(I) = [2; 4]; assert(isequal( a, b )) ***** shared ***** test b = 1:4; b = [b; 2*b; 3*b]; a = sym(b); rhs = [10 11; 12 13]; a([1:2],[1:2]) = rhs; b([1:2],[1:2]) = rhs; assert(isequal( a, b )) a(1:2,1:2) = rhs; assert(isequal( a, b )) ***** test % slice : b = 1:4; b = [b; 2*b]; a = sym(b); rhs = [10 11; 12 13]; a(:,2:3) = rhs; b(:,2:3) = rhs; assert(isequal( a, b )) ***** test % grow 2D b = 1:4; b = [b; 2*b]; a = sym(b); rhs = [10 11; 12 13]; a([1 end+1],end:end+1) = rhs; b([1 end+1],end:end+1) = rhs; assert(isequal( a, b )) ***** test % grow from nothing clear a a(3) = sym (1); b = sym ([0 0 1]); assert (isequal (a, b)) ***** test % grow from nothing, 2D clear a a(2, 3) = sym (1); b = sym ([0 0 0; 0 0 1;]); assert (isequal (a, b)) ***** test % linear indices of 2D b = 1:4; b = [b; 2*b; 3*b]; a = sym(b); b(1:4) = [10 11 12 13]; a(1:4) = [10 11 12 13]; assert(isequal( a, b )) b(1:4) = [10 11; 12 13]; a(1:4) = [10 11; 12 13]; assert(isequal( a, b )) ***** error % Wrong shape matrix RHS: Matlab/Octave don't allow this on doubles. % Matlab SMT 2013b gets it wrong. We throw an error. rhs = [10 11; 12 13]; a = sym (magic (3)); a(1:2,1:2) = rhs(:); ***** test % Issue #963: vector RHS with diff orientation from 2D indexing b = 1:4; b = [b; 2*b; 3*b]; a = sym(b); b(1:2:3, 1) = 11:2:13; a(1:2:3, 1) = sym(11:2:13); assert (isequal (a, b)) b(1:2:3, 1) = 1:2:3; a(1:2:3, 1) = 1:2:3; assert (isequal (a, b)) ***** test % Issue #963: vector RHS with diff orientation from 2D indexing a = sym (magic (3)); b = a; a(1:2:3, 2) = [14 15]; b(1:2:3, 2) = [14; 15]; assert (isequal (a, b)) a(2, 1:2:3) = [24 25]; b(2, 1:2:3) = [24; 25]; assert (isequal (a, b)) ***** test % 1D growth and 'end' g = sym([1 2 3]); g(3:4) = [67 68]; g(end:end+1) = [12 14]; assert(isequal( g, [1 2 67 12 14] )) ***** test % expanding empty and scalar syms x c = sym([]); c(1) = x; assert(isequal( c, x )) c(2) = 2*x; assert(isequal( c, [x 2*x] )) ***** shared a,b,I,J b = 1:4; b = [b; 3*b; 5*b]; a = sym(b); I = logical([1 0 1]); J = logical([1 0 1 0]); ***** assert(isequal( a(I,J), b(I,J) )) ***** test rhs = [90 91; 92 93]; b(I, J) = rhs; a(I, J) = rhs; assert(isequal( a, b )) ***** test b(I, J) = 100; a(I, J) = 100; assert(isequal( a, b )) ***** shared ***** test % logical with all false syms x y = x; y(false) = 6; assert(isequal( y, x )); a = [x x]; a([false false]) = [6 6]; assert(isequal( a, [x x] )); ***** test % issue #18, scalar access syms x x(1) = sym(6); assert(isequal( x, sym(6) )); x(1) = 6; assert(isequal( x, sym(6) )); x(true) = 88; assert(isequal( x, sym(88) )); ***** test % bug: assignment to column vector used to fail A = sym(zeros(3,1)); A(1) = 5; ***** test % symfun creation (generic function) syms x g(x) = x*x; assert(isa(g,'symfun')) ***** test % symfun creation (generic function) syms x g(x) assert(isa(g,'symfun')) ***** test % symfun creation when g already exists and is a sym/symfun syms x g = x; syms g(x) assert(isa(g,'symfun')) clear g g(x) = x; g(x) = x*x; assert(isa(g,'symfun')) ***** test % Issue #443: assignment with sym indices A = sym([10 11]); A(sym(1)) = 12; assert (isequal (A, sym([12 11]))) ***** test % Issue #443: assignment with sym indices A = sym([10 11]); A(sym(1), 1) = 12; assert (isequal (A, sym([12 11]))) A(sym(1), sym(1)) = 13; assert (isequal (A, sym([13 11]))) ***** test % Issue #443: assignment with sym indices, increase size A = sym([10 11]); A(sym(2), 1) = 12; assert (isequal (A, sym([10 11; 12 0]))) ***** error % Issue #443 A = sym([10 11]); A(2, sym('x')) = sym(12); ***** error % Issue #443 A = sym([10 11]); A(sym(2), sym('x')) = sym(12); ***** error % issue #445 A = sym([10 11]); A(1.1) = 13 ***** error % issue #445 A = sym([10 11]); A(sym(pi)) = 13 ***** error % issue #445 A = sym([1 2; 3 4]); A(1.3, 1.2) = 13 ***** test % older expansion tests syms x f = [2*x 3*x]; f(2) = 4*x; assert (isequal (f, [2*x 4*x])) f(2) = 2; assert (isequal(f, [2*x 2])) g = f; g(1,3) = x*x; assert (isequal(g, [2*x 2 x^2])) g = f; g(3) = x*x; assert (isequal(g, [2*x 2 x^2])) g = f; g(3) = 4; assert (isequal(g, [2*x 2 4])) ***** test % older slicing tests syms x f = [1 x^2 x^4]; f(1:2) = [x x]; assert (isequal( f, [x x x^4] )) f(1:2) = [1 2]; assert (isequal( f, [1 2 x^4] )) f(end-1:end) = [3 4]; assert (isequal( f, [1 3 4] )) f(3:4) = [10 11]; assert (isequal( f, [1 3 10 11] )) f(end:end+1) = [12 14]; assert (isequal( f, [1 3 10 12 14] )) ***** test % struct.str = sym, sometimes calls subsasgn d = struct(); syms x d.a = x; assert (isa (d, 'struct')) assert (isequal (d.a, x)) d.('a') = x; assert (isa (d, 'struct')) assert (isequal (d.a, x)) d = setfield(d, 'a', x); assert (isa (d, 'struct')) assert (isequal (d.a, x)) % at least on Oct 3.8, this calls sym's subsasgn d = struct(); d = setfield(d, 'a', x); assert (isa (d, 'struct')) assert (isequal (d.a, x)) ***** test % bool scalar assignments of true/false into sym syms x a = sym([1 2 x 3]); b = [1 2 10 4]; e = a == b; assert (logical (e(2))) e(2) = false; assert (~logical (e(2))) ***** test % bool vector assignments of true/false into sym syms x a = sym([1 2 x 3]); b = [1 2 10 4]; e = a == b; e(1:2) = [true true]; assert (isequal (e, [sym(1)==1 sym(2)==2 x==10 sym(3)==4])) ***** test % bool scalar promoted to vector assignments into sym syms x a = sym([1 2 x 3]); b = [1 2 10 4]; e = a == b; e(1:2) = true; assert (isequal (e, [sym(1)==1 sym(2)==2 x==10 sym(3)==4])) ***** test % grow scalar equality expression into a matrix of equalities syms a b c d e = a == b; e(2) = c == d; assert (isequal (e, [a==b c==d])) ***** shared a, b, I b = [1:4]; b = [b; 3*b; 5*b]; a = sym(b); I = mod (b, 5) > 1; ***** test A = a; A(I) = 2*b(I); B = b; B(I) = 2*b(I); assert (isequal (A, B)) ***** test % scalar RHS A = a; A(I) = 17; B = b; B(I) = 17; assert (isequal (A, B)) ***** test % nonetheless, above strange case should give right answer I = logical([1 0 1 0; 0 1 0 1; 1 0 1 0]); rhs = 2*b(I); rhs2 = reshape(rhs, 2, 3); A0 = a; A1 = a; A0(I) = rhs; A1(I) = rhs2; assert (isequal (A0, A1)) ***** shared AA, BB BB = [1 2 3; 4 5 6]; AA = sym(BB); ***** test A = AA; B = BB; B([1 6]) = [8 9]; A([1 6]) = [8 9]; assert (isequal (A, B)) ***** test % rhs scalar A = AA; B = BB; B([1 6]) = 88; A([1 6]) = 88; assert (isequal (A, B)) ***** test % If rhs is not a vector, make sure col-based access works rhs = [18 20; 19 21]; A = AA; B = BB; B([1 6]) = 88; A([1 6]) = 88; B([1 2 3 4]) = rhs; A([1 2 3 4]) = rhs; assert (isequal (A, B)) ***** test % Growth A = AA; B = BB; A(1,5) = 10; B(1,5) = 10; assert (isequal (A, B)) ***** shared ***** test % Check row deletion 1D a = sym([1; 3; 5]); b = sym([3; 5]); a(1) = []; assert( isequal( a, b)) ***** test % Check column deletion 1D a = sym([1, 4, 8]); b = sym([4, 8]); a(1) = []; assert( isequal( a, b)) ***** test % Check row deletion 2D a = sym([1, 2; 3, 4]); b = sym([3, 4]); a(1, :) = []; assert( isequal( a, b)) ***** test % Check column deletion 2D a = sym([1, 2; 3, 4]); b = sym([2; 4]); a(:, 1) = []; assert( isequal( a, b)) ***** test % General assign a = sym([1, 2; 3, 4]); b = sym([5, 5; 5, 5]); a(:) = 5; assert( isequal( a, b)) ***** test % Empty matrix a = sym([1, 2; 3, 4]); a(:) = []; assert( isequal( a, sym([]))) ***** test % Disassemble matrix a = sym([1 2; 3 4; 5 6]); b = sym([3 5 2 4 6]); a(1) = []; assert (isequal (a, b)); ***** error a = sym([1, 2; 3, 4]); a(1, 2) = []; ***** test % Issue #964 a = sym(10); a(1) = []; assert (isempty (a)) assert (isequal (a, zeros(1, 0))) ***** test % Issue #963: scalar asgn to empty part of matrix A = sym (magic (3)); B = A; A(1, []) = 42; assert (isequal (A, B)) A([], 2) = 42; assert (isequal (A, B)) A([]) = 42; assert (isequal (A, B)) A([], []) = 42; assert (isequal (A, B)) A(2:3, []) = 42; assert (isequal (A, B)) A([], 2:3) = 42; assert (isequal (A, B)) A(:, []) = 42; assert (isequal (A, B)) A([], :) = 42; assert (isequal (A, B)) ***** test % Issue #1026 a = sym(1:5); a(1:3) = []; assert (isequal (a, sym([4 5]))) ***** test % Issue #1026 B = eye(4); A = sym(B); A(1:2, :) = []; B(1:2, :) = []; assert (isequal (A, B)) ***** error % TODO: do we care what error? A = sym (magic (3)); A(2:3, []) = [66; 66]; ***** error A = sym (magic (3)); A([]) = [66; 66]; ***** error A = sym (magic (3)); A([], 1) = [66; 66]; ***** test % Issue #966: empty indexing, empty RHS, A unchanged B = magic(3); A = sym(B); A(1, []) = []; assert (isequal (A, B)) A([], 2) = []; assert (isequal (A, B)) A([], []) = []; assert (isequal (A, B)) A(2:3, []) = []; assert (isequal (A, B)) A([], 2:3) = []; assert (isequal (A, B)) A(:, []) = []; assert (isequal (A, B)) A([], :) = []; assert (isequal (A, B)) ***** test % Issue 967 B = [1 2; 3 4]; A = sym(B); A([]) = []; assert (isequal (A, B)) ***** test % Issue #965 a = sym(7); a([]) = []; assert (isequal (a, sym(7))) ***** test % Issue #965 a = sym(7); a([]) = 42; assert (isequal (a, sym(7))) ***** error % Issue #965 a = sym(7); a([]) = [42 42] ***** test b = eye (3); a = sym (b); I = [2 3; 4 5]; a(I) = -2*I; b(I) = -2*I; assert (isequal (a, sym (b))); assert (size (a), [3 3]); ***** error syms x A = [1 x; x 2]; A(5) = x; ***** test % 2D indexing with length in one dimension more than 2 a = sym ([1 2; 3 4; 5 6]); indices = [1 4; 2 5; 3 6]; b = [10 11; 12 13; 14 15]; a(indices) = b; assert (isequal (a, sym (b))); ***** test A = sym ([0 0 0]); indices = [false true false]; A(indices) = 1; assert (isequal (A, sym ([0 1 0]))); A(indices) = []; assert (isequal (A, sym ([0 0]))); indices = [false false]; A(indices) = []; assert (isequal (A, sym ([0 0]))); ***** shared a, b a = [1 2 3 5; 4 5 6 9; 7 5 3 2]; b = sym (a); ***** test A = a; B = b; A(true) = 0; B(true) = 0; assert (isequal (A, B)) ***** test A = a; B = b; A(false) = 0; B(false) = 0; assert (isequal (A, B)) ***** test c = [false true]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) ***** test c = [false true false true; true false true false; false true false true]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) ***** test c = [false true false true false]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) ***** test c = [false; true; false; true; false]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) ***** test c = [false true; false true; true false]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) 77 tests, 77 passed, 0 known failure, 0 skipped [inst/@sym/floor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/floor.m ***** error floor (sym(1), 2) ***** assert (isequaln (floor (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = floor(x); f2 = floor(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = floor(A); f2 = floor(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = floor (d); f = floor (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/euler.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/euler.m ***** error euler (sym(1), 2, 3) ***** assert (isequal (euler (sym(0)), sym(1))) ***** test m = sym([0 1 2; 8 10 888889]); A = euler (m); B = sym([1 0 -1; 1385 -50521 0]); assert (isequal (A, B)) ***** test syms x assert (isequal (euler(6, x), x^6 - 3*x^5 + 5*x^3 - 3*x)) ***** assert (isnan (euler (3, sym(nan)))) ***** test syms m x em = euler (m, x); A = subs(em, [m x], [2 sym(pi)]); assert (isequal (A, sym(pi)^2 - sym(pi))) ***** test % vectorized syms x y A = euler([1; 2], [x; y]); B = [x - sym(1)/2; y^2 - y]; assert (isequal (A, B)) ***** test % round trip syms m z f = euler (m, z); h = function_handle (f, 'vars', [m z]); A = h (2, 2.2); B = euler (2, 2.2); assert (A, B) ***** test % compare vpa to maple: Digits:=34; evalf(euler(13, exp(1)+Pi*I/13)); A = vpa('1623.14184180556920918624604530515') + ... vpa('4270.98066989140286451493108809574')*1i; z = vpa (exp(1), 32) + vpa(pi, 32)/13*1i; B = euler (13, z); relerr = abs(double(abs((B - A)/A))); assert (relerr < 20*eps); ***** xtest % as above, high-prec result broken in 1.12: https://github.com/sympy/sympy/issues/24156 A = vpa('1623.14184180556920918624604530515') + ... vpa('4270.98066989140286451493108809574')*1i; z = vpa (exp(1), 32) + vpa(pi, 32)/13*1i; B = euler (13, z); relerr = abs(double(abs((B - A)/A))); assert (relerr < 2e-31); !!!!! known failure assert (relerr < 2e-31) failed 10 tests, 9 passed, 1 known failure, 0 skipped [inst/@sym/tand.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tand.m ***** error tand (sym(1), 2) ***** assert (isequaln (tand (sym(nan)), sym(nan))) ***** test f1 = tand (sym(1)); f2 = tand (1); assert (double (f1), f2, -eps) ***** test D = [10 30; 110 -45]; A = sym(D); f1 = tand (A); f2 = tand (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/double.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/double.m ***** test % numeric scalar a = double(sym(10)); assert (a == 10) assert (isa (a, 'double')) ***** test % numeric vectors a = double(sym([10 12])); assert (isequal (a, [10 12])) assert (isa (a, 'double')) ***** test % complex a = 3 + 4i; b = sym(a); assert (isequal (double (b), a)) ***** xtest % unexpected, precisely same floating point a = 3 + 4i; b = sym(a); assert (isequal (double (b/pi), a/pi)) ***** test % floating point x = sqrt(sym(2)); assert( abs(double(x) - sqrt(2)) < 2*eps) x = sym(pi); assert( abs(double(x) - pi) < 2*eps) ***** test oo = sym(inf); assert( double(oo) == inf ) assert( double(-oo) == -inf ) assert( isnan(double(0*oo)) ) ***** test zoo = sym('zoo'); assert (double(zoo) == complex(inf, inf)) ***** test zoo = sym('zoo'); assert (double(-zoo) == double(zoo) ) assert( isnan(double(0*zoo)) ) ***** test % nan snan = sym(nan); assert( isnan(double(snan))) ***** test % don't want NaN+NaNi snan = sym(nan); assert (isreal (double (snan))) ***** test % arrays a = [1 2; 3 4]; assert( isequal( double(sym(a)), a )) assert( isequal( double(sym(a)), a )) % should fail with error for non-double ***** error syms x; double(x) ***** error syms x; double([1 2 x]) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/power.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/power.m ***** test % scalar .^ scalar syms x assert (isa (x.^2, 'sym')) assert (isa (2.^x, 'sym')) assert (isa (x.^x, 'sym')) assert (isequal (x.^2, x^2)) assert (isequal (2.^x, 2^x)) assert (isequal (x.^x, x^x)) ***** test % scalar .^ matrix D = [0 1; 2 3]; A = sym(D); assert (isequal ( sym(2).^D , 2.^D )) assert (isequal ( sym(2).^A , 2.^A )) assert (isequal ( 2.^D , 2.^A )) assert (isequal ( 2.^A , 2.^A )) ***** test % matrix .^ matrix syms x A = [x 2*x; 3*x 4*x]; D = [0 1; 2 3]; B = sym(D); assert (isequal ( A.^D, [1 2*x; 9*x^2 64*x^3] )) assert (isequal ( A.^B, [1 2*x; 9*x^2 64*x^3] )) ***** test % matrix .^ scalar syms x A = [x 2*x]; assert (isequal ( A.^2, [x^2 4*x^2] )) assert (isequal ( A.^sym(2), [x^2 4*x^2] )) ***** test % 1^oo % (sympy >= 0.7.5 gives NaN, SMT R2013b: gives 1) oo = sym(inf); assert (isnan (1^oo)) ***** test % 1^zoo % (1 on sympy 0.7.4--0.7.6, but nan in git (2014-12-12, a210908d4)) zoo = sym('zoo'); assert (isnan (1^zoo)) ***** test % immutable test A = sym([1 2]); B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)]])'); assert (isequal (A.^A, B.^B)) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/divergence.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/divergence.m ***** shared x,y,z syms x y z ***** test % 1D f = x^2; assert (isequal (divergence(f), diff(f,x))) assert (isequal (divergence(f,{x}), diff(f,x))) assert (isequal (divergence(f,[x]), diff(f,x))) assert (isequal (divergence(f,x), diff(f,x))) ***** test % const f = [sym(1); 2; exp(sym(3))]; assert (isequal (divergence(f,{x,y,z}), 0)) f = [sym(1); 2; exp(sym('c'))]; assert (isequal (divergence(f,{x,y,z}), 0)) ***** test % double const f = [1 2]; g = sym(0); assert (isequal (divergence(f, [x y]), g)) % should fail, calls @double: divergence(f, {x y}), g)) ***** test % 1D fcn in 2d/3d f = [x y z]; assert (isequal (divergence(f), 3)) assert (isequal (divergence(f, {x,y,z}), 3)) assert (isequal (divergence(f, [x,y,z]), 3)) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y+sinh(z)); g2 = [diff(f,x); diff(f,y)]; l2 = diff(g2(1),x) + diff(g2(2),y); g3 = [diff(f,x); diff(f,y); diff(f,z)]; l3 = diff(g3(1),x) + diff(g3(2),y) + diff(g3(3),z); assert (isequal (divergence(g2, {x,y}), l2)) assert (isequal (divergence(g3, {x,y,z}), l3)) ***** error divergence ([1 2], [sym('x')]) ***** error divergence ([1 2], sym('x'), 42) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/eye.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eye.m ***** test y = eye(sym(2)); x = [1 0; 0 1]; assert( isequal( y, sym(x))) ***** test y = eye(sym(2), 1); x = [1; 0]; assert( isequal( y, sym(x))) ***** test y = eye(sym(1), 2); x = [1 0]; assert( isequal( y, sym(x))) ***** test y = eye (sym([2 3])); x = sym (eye ([2 3])); assert (isequal (y, x)) ***** assert( isa( eye(sym(2), 'double'), 'double')) ***** assert( isa( eye(3, sym(3), 'single') , 'single')) ***** assert( isa( eye(3, sym(3)), 'sym')) ***** assert( isa( eye(3, sym(3), 'sym'), 'sym')) ***** xtest % Issue #13 assert( isa( eye(3, 3, 'sym'), 'sym')) !!!!! known failure invalid data type specified 9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/acosd.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acosd.m ***** error acosd (sym(1), 2) ***** assert (isequaln (acosd (sym(nan)), sym(nan))) ***** test f1 = acosd (sym(1)/2); f2 = acosd (1/2); assert (double (f1), f2, -eps) ***** test D = [1 2; 3 4]/4; A = sym([1 2; 3 4])/4; f1 = acosd (A); f2 = acosd (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/isempty.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isempty.m ***** shared se, a se = sym ([]); a = sym ([1 2]); ***** assert (~isempty (sym (1))) ***** assert (isempty (sym (se))) ***** assert (isempty (se == [])) ***** test ***** test se(1) = 10; ***** test assert ( isa (se, 'sym')) ***** test assert ( isequal (se, 10)) ***** shared ***** test % empty matrices A = sym('A', [3 0]); assert (isempty (A)) A = sym(ones(3,0)); assert (isempty (A)) ***** test % non-empty symbolic-size matrices syms n integer A = sym('A', [3 n]); assert (~isempty (A)) ***** xtest % empty symbolic-size matrices % FIXME: will fail until size stop lying by saying 1x1 syms n integer A = sym('A', [0 n]); assert (isempty (A)) A = sym('A', [n 0]); assert (isempty (A)) !!!!! known failure assert (isempty (A)) failed 10 tests, 9 passed, 1 known failure, 0 skipped [inst/findsymbols.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/findsymbols.m ***** test syms x b y n a arlo z = a*x + b*pi*sin (n) + exp (y) + exp (sym (1)) + arlo; s = findsymbols (z); assert (isequal ([s{:}], [a,arlo,b,n,x,y])) ***** test syms x s = findsymbols (x); assert (isequal (s{1}, x)) ***** test syms z x y a s = findsymbols ([x y; 1 a]); assert (isequal ([s{:}], [a x y])) ***** assert (isempty (findsymbols (sym (1)))) ***** assert (isempty (findsymbols (sym ([1 2])))) ***** assert (isempty (findsymbols (sym (nan)))) ***** assert (isempty (findsymbols (sym (inf)))) ***** assert (isempty (findsymbols (exp (sym (2))))) ***** test % empty sym for findsymbols, findsym, and symvar assert (isempty (findsymbols (sym([])))) assert (isempty (findsym (sym([])))) assert (isempty (symvar (sym([])))) ***** test % diff. assumptions make diff. symbols x1 = sym('x'); x2 = sym('x', 'positive'); f = x1*x2; assert (length (findsymbols (f)) == 2) ***** test % symfun or sym syms x f(y) a = f*x; b = f(y)*x; assert (isequal (findsymbols(a), {x y})) assert (isequal (findsymbols(b), {x y})) ***** test % findsymbols on symfun does not find the argnames (unless they % are on the RHS of course, this matches SMT 2014a). syms a x y f(x, y) = a; % const symfun assert (isequal (findsymbols(f), {a})) syms a x y f(x, y) = a*y; assert (isequal (findsymbols(f), {a y})) ***** test % sorts lexicographically, same as symvar *with single input* % (note symvar does something different with 2 inputs). syms A B a b x y X Y f = A*a*B*b*y*X*Y*x; assert (isequal (findsymbols(f), {A B X Y a b x y})) assert (isequal (symvar(f), [A B X Y a b x y])) ***** test % symbols in matpow syms x y syms n A = [sin(x) 2; y 1]; B = A^n; L = findsymbols(B); assert (isequal (L, {n x y})) ***** test % array of eq syms x y assert (isequal (findsymbols (2 == [2 x y]), {x y})) ***** test % array of ineq syms x y A = [x < 1 2*x < y x >= 2 3 <= x x != y]; assert (isequal (findsymbols (A), {x y})) 16 tests, 16 passed, 0 known failure, 0 skipped [inst/lambertw.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/lambertw.m ***** assert (isequal (lambertw (0), 0)) ***** assert (isequal (lambertw (0, 0), 0)) ***** assert (lambertw (-1/exp(1)), -1, 2*eps) ***** assert (lambertw (0, -1/exp(1)), -1, 2*eps) ***** assert (lambertw (-1, -1/exp(1)), -1, 2*eps) ***** test x = [1 2 3 pi 10 100 1000 12345]; W = lambertw (x); assert (W.*exp (W), x, -3*eps) ***** test x = [1 2 3 pi 10 100 1000 12345]; k = [-3 -2 -1 0 1 2 3 4]; W = lambertw (k, x); assert (W.*exp (W), x, -10*eps) ***** test % input shape preserved x = [0 1; 2 3]; b = x; W = lambertw (b, x); assert (W.*exp (W), x, -10*eps) ***** test % input shape preserved x = [0 1; 2 3]; b = 0; W = lambertw (b, x); assert (W.*exp (W), x, -10*eps) ***** test % input shape preserved x = 10; b = [0 1; 2 3]; W = lambertw (b, x); assert (W.*exp (W), x*ones (size (b)), -10*eps) ***** assert (isnan (lambertw (nan))) ***** test % limiting behaviour as z large k = 3; A = lambertw (k, 1e100); assert (abs (imag (A) - 2*pi*k) < 0.1) ***** test % limiting behaviour as z large, up imag axis k = 1; A = lambertw (k, 1e100*1i); assert (abs (imag (A) - (2*k+0.5)*pi) < 0.1) ***** test % limiting behaviour as z large, down imag axis k = -2; A = lambertw (k, -1e100*1i); assert (abs (imag (A) - (2*k-0.5)*pi) < 0.1) ***** test % limiting behaviour as z large, near branch k = 3; A = lambertw (k, -1e100); B = lambertw (k, -1e100 + 1i); C = lambertw (k, -1e100 - 1i); assert (abs (imag (A) - (2*k+1)*pi) < 0.1) assert (abs (imag (B) - (2*k+1)*pi) < 0.1) assert (abs (imag (C) - (2*k-1)*pi) < 0.1) ***** test % infinities and nan A = lambertw ([inf exp(1) -inf nan]); B = [inf 1 inf + pi*1i nan]; assert (isequaln (A, B)) ***** test % infinities and nan A = lambertw (3, [inf 1 -inf nan]); B = [inf + 2*3*pi*1i lambertw(3,1) inf + (2*3+1)*pi*1i nan]; assert (isequaln (A, B)) ***** test % infinities and nan A = lambertw ([0 1 2 0], [inf -inf nan exp(1)]); B = [inf inf+3*pi*1i nan 1]; assert (isequaln (A, B)) ***** test % scalar infinity z, vector b A = lambertw ([1 2 -3], inf); B = [lambertw(1, inf) lambertw(2, inf) lambertw(-3, inf)]; assert (isequal (A, B)) ***** test % scalar -infinity z, vector b A = lambertw ([1 2 -3], -inf); B = [lambertw(1, -inf) lambertw(2, -inf) lambertw(-3, -inf)]; assert (isequal (A, B)) ***** test % scalar z nan, vector b A = lambertw ([1 2 -3], nan); B = [nan nan nan]; assert (isequaln (A, B)) 21 tests, 21 passed, 0 known failure, 0 skipped [inst/dirac.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/dirac.m ***** assert (isinf (dirac (0))) ***** assert (dirac (1) == 0) ***** assert (isnan (dirac (nan))) ***** assert (isequaln (dirac ([-1 1 0 eps inf -inf nan]), [0 0 inf 0 0 0 nan])) ***** error dirac (1i) ***** assert (isa (dirac (single (0)), 'single')) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/eulergamma.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/eulergamma.m ***** error catalan (sym(1)) ***** assert (double (eulergamma ()) > 0.577215664901) ***** assert (double (eulergamma ()) < 0.577215664902) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/digits.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/digits.m ***** test orig = digits(32); % to reset later m = digits(64); p = vpa(sym(pi)); assert (abs (double (sin(p))) < 1e-64) n = digits(m); assert (n == 64) p = vpa(sym(pi)); assert (abs (double (sin(p))) < 1e-32) assert (abs (double (sin(p))) > 1e-40) digits(orig) 1 test, 1 passed, 0 known failure, 0 skipped [inst/cell2sym.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/cell2sym.m ***** test A = {1 2 3; 4 5 6}; B = [1 2 3; 4 5 6]; assert (isequal (cell2sym(A), sym(B))) ***** test A = {'a' 'b'; 'c' 10}; B = [sym('a') sym('b'); sym('c') sym(10)]; assert (isequal (cell2sym(A), B)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/fibonacci.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/fibonacci.m ***** assert (isequal ( fibonacci (sym(0)), 0)) ***** assert (isequal ( fibonacci (sym(14)), sym(377))) ***** assert (isequal ( fibonacci (14), 377)) ***** test syms x assert (isequal (fibonacci (5,x), x^4 + 3*x^2 + 1)) 4 tests, 4 passed, 0 known failure, 0 skipped Checking C++ files ... Done running the unit tests. Summary: 2426 tests, 2395 passed, 31 known failures, 0 skipped dh_installdocs -O--buildsystem=octave dh_installchangelogs -O--buildsystem=octave dh_octave_changelogs -O--buildsystem=octave dh_octave_examples -O--buildsystem=octave dh_installsystemduser -O--buildsystem=octave dh_perl -O--buildsystem=octave dh_link -O--buildsystem=octave dh_strip_nondeterminism -O--buildsystem=octave dh_compress -O--buildsystem=octave dh_fixperms -O--buildsystem=octave dh_missing -O--buildsystem=octave dh_octave_substvar -O--buildsystem=octave dh_installdeb -O--buildsystem=octave dh_gencontrol -O--buildsystem=octave dh_md5sums -O--buildsystem=octave dh_builddeb -O--buildsystem=octave dpkg-deb: building package 'octave-symbolic' in '../octave-symbolic_3.2.1-3_all.deb'. dpkg-genbuildinfo --build=binary -O../octave-symbolic_3.2.1-3_amd64.buildinfo dpkg-genchanges --build=binary -O../octave-symbolic_3.2.1-3_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/1183969 and its subdirectories I: Current time: Fri Feb 21 02:39:11 -12 2025 I: pbuilder-time-stamp: 1740148751 Fri Feb 21 14:39:12 UTC 2025 I: 1st build successful. Starting 2nd build on remote node ionos15-amd64.debian.net. Fri Feb 21 14:39:12 UTC 2025 I: Preparing to do remote build '2' on ionos15-amd64.debian.net. Fri Feb 21 14:39:12 UTC 2025 - checking /var/lib/jenkins/offline_nodes if ionos15-amd64.debian.net is marked as down. Fri Feb 21 14:39:12 UTC 2025 - checking via ssh if ionos15-amd64.debian.net is up. removed '/tmp/read-only-fs-test-ZpcnRL' ==================================================================================== Thu Mar 26 21:02:13 UTC 2026 - running /srv/jenkins/bin/reproducible_build.sh (for job /srv/jenkins/bin/reproducible_build.sh) on ionos15-amd64, called using "2 octave-symbolic unstable /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS 3.2.1-3" as arguments. Thu Mar 26 21:02:13 UTC 2026 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-sY50XiJj" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Thu Mar 26 21:02:13 UTC 2026 I: Downloading source for unstable/octave-symbolic=3.2.1-3 Reading package lists... NOTICE: 'octave-symbolic' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/pkg-octave-team/octave-symbolic.git Please use: git clone https://salsa.debian.org/pkg-octave-team/octave-symbolic.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 282 kB of source archives. Get:1 http://deb.debian.org/debian unstable/main octave-symbolic 3.2.1-3 (dsc) [2308 B] Get:2 http://deb.debian.org/debian unstable/main octave-symbolic 3.2.1-3 (tar) [273 kB] Get:3 http://deb.debian.org/debian unstable/main octave-symbolic 3.2.1-3 (diff) [6832 B] Fetched 282 kB in 0s (1680 kB/s) Download complete and in download only mode Reading package lists... NOTICE: 'octave-symbolic' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/pkg-octave-team/octave-symbolic.git Please use: git clone https://salsa.debian.org/pkg-octave-team/octave-symbolic.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 282 kB of source archives. Get:1 http://deb.debian.org/debian unstable/main octave-symbolic 3.2.1-3 (dsc) [2308 B] Get:2 http://deb.debian.org/debian unstable/main octave-symbolic 3.2.1-3 (tar) [273 kB] Get:3 http://deb.debian.org/debian unstable/main octave-symbolic 3.2.1-3 (diff) [6832 B] Fetched 282 kB in 0s (1680 kB/s) Download complete and in download only mode ============================================================================= Re-Building octave-symbolic in unstable on amd64 on ionos15-amd64 now. Date: Thu Mar 26 21:02:13 UTC 2026 Date UTC: Thu Mar 26 21:02:13 UTC 2026 ============================================================================= ++ mktemp -t pbuilderrc_XXXX --tmpdir=/srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS + local TMPCFG=/srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/pbuilderrc_4iRu + case ${ARCH} in + case $ARCH in + locale=et_EE + language=et + case "${SUITE}" in + reproducible_buildflags=+all + extra_deb_build_options= + case "${SRCPACKAGE}" in + cat + echo BUILDDIR=/build/reproducible-path + '[' octave-symbolic = debian-installer -o octave-symbolic = debian-installer-netboot-images ']' + pbuilder_options=() + local pbuilder_options + DEBBUILDOPTS=-b + BINARYTARGET= + '[' octave-symbolic = u-boot ']' + case "${SRCPACKAGE}" in + PBUILDERTIMEOUT=24 + local PRESULT=0 + sudo timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/pbuilderrc_4iRu --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b2 --logfile b2/build.log octave-symbolic_3.2.1-3.dsc W: /root/.pbuilderrc does not exist I: Logging to b2/build.log I: pbuilder: network access will be disabled during build I: Current time: Fri Mar 27 11:02:13 +14 2026 I: pbuilder-time-stamp: 1774558933 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [octave-symbolic_3.2.1-3.dsc] I: copying [./octave-symbolic_3.2.1.orig.tar.gz] I: copying [./octave-symbolic_3.2.1-3.debian.tar.xz] I: Extracting source dpkg-source: warning: cannot verify inline signature for ./octave-symbolic_3.2.1-3.dsc: unsupported subcommand dpkg-source: info: extracting octave-symbolic in octave-symbolic-3.2.1 dpkg-source: info: unpacking octave-symbolic_3.2.1.orig.tar.gz dpkg-source: info: unpacking octave-symbolic_3.2.1-3.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying vpa-xtest.patch dpkg-source: info: applying fix-intersect-unit-test.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/645323/tmp/hooks/D01_modify_environment starting debug: Running on ionos15-amd64. I: Changing host+domainname to test build reproducibility I: Adding a custom variable just for the fun of it... I: Changing /bin/sh to bash '/bin/sh' -> '/bin/bash' lrwxrwxrwx 1 root root 9 Mar 26 21:02 /bin/sh -> /bin/bash I: Setting pbuilder2's login shell to /bin/bash I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other I: user script /srv/workspace/pbuilder/645323/tmp/hooks/D01_modify_environment finished I: user script /srv/workspace/pbuilder/645323/tmp/hooks/D02_print_environment starting I: set BASH=/bin/sh BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=([0]="12" [1]="0") BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") BASH_VERSION='5.2.37(1)-release' BUILDDIR=/build/reproducible-path BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' BUILDUSERNAME=pbuilder2 BUILD_ARCH=amd64 DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' DIRSTACK=() DISTRIBUTION=unstable EUID=0 FUNCNAME=([0]="Echo" [1]="main") GROUPS=() HOME=/root HOSTNAME=i-capture-the-hostname HOSTTYPE=x86_64 HOST_ARCH=amd64 IFS=' ' INVOCATION_ID=13632c59f67646789d3ba90df8c5ff2c LANG=C LANGUAGE=et_EE:et LC_ALL=C MACHTYPE=x86_64-pc-linux-gnu MAIL=/var/mail/root OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path PBCURRENTCOMMANDLINEOPERATION=build PBUILDER_OPERATION=build PBUILDER_PKGDATADIR=/usr/share/pbuilder PBUILDER_PKGLIBDIR=/usr/lib/pbuilder PBUILDER_SYSCONFDIR=/etc PIPESTATUS=([0]="0") POSIXLY_CORRECT=y PPID=645323 PS4='+ ' PWD=/ SHELL=/bin/bash SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix SHLVL=3 SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/pbuilderrc_4iRu --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b2 --logfile b2/build.log octave-symbolic_3.2.1-3.dsc' SUDO_GID=111 SUDO_UID=106 SUDO_USER=jenkins TERM=unknown TZ=/usr/share/zoneinfo/Etc/GMT-14 UID=0 USER=root _='I: set' http_proxy=http://213.165.73.152:3128 I: uname -a Linux i-capture-the-hostname 6.12.9+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.9-1~bpo12+1 (2025-01-19) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin I: user script /srv/workspace/pbuilder/645323/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), debhelper (>= 12.8~), dh-sequence-octave, python3-packaging, python3-sympy dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19798 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on debhelper (>= 12.8~); however: Package debhelper is not installed. pbuilder-satisfydepends-dummy depends on dh-sequence-octave; however: Package dh-sequence-octave is not installed. pbuilder-satisfydepends-dummy depends on python3-packaging; however: Package python3-packaging is not installed. pbuilder-satisfydepends-dummy depends on python3-sympy; however: Package python3-sympy is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: aglfn{a} appstream{a} autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} ca-certificates{a} cme{a} comerr-dev{a} debhelper{a} dh-autoreconf{a} dh-octave{a} dh-octave-autopkgtest{a} dh-strip-nondeterminism{a} diffstat{a} dwz{a} file{a} fontconfig{a} fontconfig-config{a} fonts-dejavu-core{a} fonts-dejavu-mono{a} fonts-freefont-otf{a} gettext{a} gettext-base{a} gfortran{a} gfortran-14{a} gfortran-14-x86-64-linux-gnu{a} gfortran-x86-64-linux-gnu{a} gnuplot-data{a} gnuplot-nox{a} gpg{a} gpgconf{a} groff-base{a} hdf5-helpers{a} intltool-debian{a} iso-codes{a} krb5-multidev{a} libabsl20230802{a} libaec-dev{a} libaec0{a} libalgorithm-c3-perl{a} libaliased-perl{a} libamd3{a} libaom3{a} libapp-cmd-perl{a} libappstream5{a} libapt-pkg-perl{a} libarchive-zip-perl{a} libarpack2t64{a} libarray-intspan-perl{a} libasound2-data{a} libasound2t64{a} libassuan9{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libavif16{a} libb-hooks-endofscope-perl{a} libb-hooks-op-check-perl{a} libb2-1{a} libberkeleydb-perl{a} libblas-dev{a} libblas3{a} libboolean-perl{a} libbrotli-dev{a} libbrotli1{a} libcairo2{a} libcamd3{a} libcapture-tiny-perl{a} libcarp-assert-more-perl{a} libccolamd3{a} libcgi-pm-perl{a} libcholmod5{a} libclass-c3-perl{a} libclass-data-inheritable-perl{a} libclass-inspector-perl{a} libclass-load-perl{a} libclass-method-modifiers-perl{a} libclass-xsaccessor-perl{a} libclone-choose-perl{a} libclone-perl{a} libcolamd3{a} libcom-err2{a} libconfig-model-backend-yaml-perl{a} libconfig-model-dpkg-perl{a} libconfig-model-perl{a} libconfig-tiny-perl{a} libconst-fast-perl{a} libconvert-binhex-perl{a} libcpanel-json-xs-perl{a} libcups2t64{a} libcurl3t64-gnutls{a} libcurl4-openssl-dev{a} libcurl4t64{a} libcxsparse4{a} libdata-dpath-perl{a} libdata-messagepack-perl{a} libdata-optlist-perl{a} libdata-section-perl{a} libdata-validate-domain-perl{a} libdata-validate-ip-perl{a} libdata-validate-uri-perl{a} libdatrie1{a} libdav1d7{a} libdbus-1-3{a} libde265-0{a} libdebhelper-perl{a} libdeflate0{a} libdevel-callchecker-perl{a} libdevel-size-perl{a} libdevel-stacktrace-perl{a} libdouble-conversion3{a} libdrm-amdgpu1{a} libdrm-common{a} libdrm-intel1{a} libdrm-radeon1{a} libdrm2{a} libduktape207{a} libdynaloader-functions-perl{a} libedit2{a} libegl-mesa0{a} libegl1{a} libelf1t64{a} libemail-address-xs-perl{a} libencode-locale-perl{a} liberror-perl{a} libevdev2{a} libevent-2.1-7t64{a} libexception-class-perl{a} libexpat1{a} libexporter-lite-perl{a} libexporter-tiny-perl{a} libfeature-compat-class-perl{a} libfeature-compat-try-perl{a} libffi8{a} libfftw3-bin{a} libfftw3-dev{a} libfftw3-double3{a} libfftw3-long3{a} libfftw3-quad3{a} libfftw3-single3{a} libfile-basedir-perl{a} libfile-find-rule-perl{a} libfile-homedir-perl{a} libfile-listing-perl{a} libfile-sharedir-perl{a} libfile-stripnondeterminism-perl{a} libfile-which-perl{a} libflac12t64{a} libfltk-gl1.3t64{a} libfltk1.3t64{a} libfont-ttf-perl{a} libfontconfig1{a} libfreetype6{a} libfribidi0{a} libgav1-1{a} libgbm1{a} libgcrypt20{a} libgd3{a} libgetopt-long-descriptive-perl{a} libgfortran-14-dev{a} libgfortran5{a} libgif7{a} libgl-dev{a} libgl1{a} libgl1-mesa-dri{a} libgl2ps1.4{a} libglapi-mesa{a} libglib2.0-0t64{a} libglpk40{a} libglu1-mesa{a} libglvnd0{a} libglx-dev{a} libglx-mesa0{a} libglx0{a} libgmp-dev{a} libgmpxx4ldbl{a} libgnutls-dane0t64{a} libgnutls-openssl27t64{a} libgnutls28-dev{a} libgnutls30t64{a} libgpg-error0{a} libgraphicsmagick++-q16-12t64{a} libgraphicsmagick-q16-3t64{a} libgraphite2-3{a} libgssapi-krb5-2{a} libgssrpc4t64{a} libgudev-1.0-0{a} libharfbuzz0b{a} libhash-merge-perl{a} libhdf5-310{a} libhdf5-cpp-310{a} libhdf5-dev{a} libhdf5-fortran-310{a} libhdf5-hl-310{a} libhdf5-hl-cpp-310{a} libhdf5-hl-fortran-310{a} libheif-plugin-dav1d{a} libheif-plugin-libde265{a} libheif1{a} libhtml-form-perl{a} libhtml-html5-entities-perl{a} libhtml-parser-perl{a} libhtml-tagset-perl{a} libhtml-tokeparser-simple-perl{a} libhtml-tree-perl{a} libhttp-cookies-perl{a} libhttp-date-perl{a} libhttp-message-perl{a} libhttp-negotiate-perl{a} libhwy1t64{a} libice6{a} libicu72{a} libidn2-0{a} libidn2-dev{a} libimagequant0{a} libimath-3-1-29t64{a} libimport-into-perl{a} libindirect-perl{a} libinput-bin{a} libinput10{a} libio-html-perl{a} libio-interactive-perl{a} libio-socket-ssl-perl{a} libio-string-perl{a} libio-stringy-perl{a} libio-tiecombine-perl{a} libipc-run3-perl{a} libipc-system-simple-perl{a} libiterator-perl{a} libiterator-util-perl{a} libjack-jackd2-0{a} libjbig0{a} libjpeg-dev{a} libjpeg62-turbo{a} libjpeg62-turbo-dev{a} libjson-maybexs-perl{a} libjson-perl{a} libjxl0.10{a} libk5crypto3{a} libkadm5clnt-mit12{a} libkadm5srv-mit12{a} libkdb5-10t64{a} libkeyutils1{a} libkrb5-3{a} libkrb5-dev{a} libkrb5support0{a} liblapack-dev{a} liblapack3{a} liblcms2-2{a} libldap-dev{a} libldap2{a} liblerc4{a} liblist-compare-perl{a} liblist-moreutils-perl{a} liblist-moreutils-xs-perl{a} liblist-someutils-perl{a} liblist-utilsby-perl{a} libllvm19{a} liblog-any-adapter-screen-perl{a} liblog-any-perl{a} liblog-log4perl-perl{a} libltdl7{a} liblua5.4-0{a} liblwp-mediatypes-perl{a} liblwp-protocol-https-perl{a} liblz1{a} liblzo2-2{a} libmagic-mgc{a} libmagic1t64{a} libmailtools-perl{a} libmarkdown2{a} libmd4c0{a} libmime-tools-perl{a} libmldbm-perl{a} libmodule-implementation-perl{a} libmodule-pluggable-perl{a} libmodule-runtime-perl{a} libmoo-perl{a} libmoox-aliases-perl{a} libmouse-perl{a} libmousex-nativetraits-perl{a} libmousex-strictconstructor-perl{a} libmp3lame0{a} libmpg123-0t64{a} libmro-compat-perl{a} libmtdev1t64{a} libnamespace-clean-perl{a} libncurses-dev{a} libncurses6{a} libnet-domain-tld-perl{a} libnet-http-perl{a} libnet-ipv6addr-perl{a} libnet-netmask-perl{a} libnet-smtp-ssl-perl{a} libnet-ssleay-perl{a} libnetaddr-ip-perl{a} libnghttp2-14{a} libnghttp2-dev{a} libnghttp3-9{a} libnghttp3-dev{a} libngtcp2-16{a} libngtcp2-crypto-gnutls8{a} libnumber-compare-perl{a} libobject-pad-perl{a} libogg0{a} libopenexr-3-1-30{a} libopengl0{a} libopus0{a} libp11-kit-dev{a} libp11-kit0{a} libpackage-stash-perl{a} libpango-1.0-0{a} libpangocairo-1.0-0{a} libpangoft2-1.0-0{a} libparams-classify-perl{a} libparams-util-perl{a} libparams-validate-perl{a} libparse-debcontrol-perl{a} libparse-recdescent-perl{a} libpath-iterator-rule-perl{a} libpath-tiny-perl{a} libpciaccess0{a} libpcre2-16-0{a} libperlio-gzip-perl{a} libperlio-utf8-strict-perl{a} libpipeline1{a} libpixman-1-0{a} libpkgconf3{a} libpng16-16t64{a} libpod-constants-perl{a} libpod-parser-perl{a} libpod-pom-perl{a} libportaudio2{a} libproc-processtable-perl{a} libproc2-0{a} libproxy1v5{a} libpsl-dev{a} libpsl5t64{a} libpython3-stdlib{a} libpython3.13-minimal{a} libpython3.13-stdlib{a} libqhull-r8.0{a} libqrupdate1{a} libqscintilla2-qt6-15{a} libqscintilla2-qt6-l10n{a} libqt6core5compat6{a} libqt6core6t64{a} libqt6dbus6{a} libqt6gui6{a} libqt6help6{a} libqt6network6{a} libqt6opengl6{a} libqt6openglwidgets6{a} libqt6printsupport6{a} libqt6sql6{a} libqt6widgets6{a} libqt6xml6{a} libraqm0{a} librav1e0.7{a} libreadline-dev{a} libreadline8t64{a} libregexp-common-perl{a} libregexp-pattern-license-perl{a} libregexp-pattern-perl{a} libregexp-wildcards-perl{a} librole-tiny-perl{a} librtmp-dev{a} librtmp1{a} libsamplerate0{a} libsasl2-2{a} libsasl2-modules-db{a} libsensors-config{a} libsensors5{a} libsereal-decoder-perl{a} libsereal-encoder-perl{a} libset-intspan-perl{a} libsharpyuv0{a} libsm6{a} libsndfile1{a} libsoftware-copyright-perl{a} libsoftware-license-perl{a} libsoftware-licensemoreutils-perl{a} libsort-versions-perl{a} libspqr4{a} libssh2-1-dev{a} libssh2-1t64{a} libssl-dev{a} libstemmer0d{a} libstrictures-perl{a} libstring-copyright-perl{a} libstring-escape-perl{a} libstring-license-perl{a} libstring-rewriteprefix-perl{a} libsub-exporter-perl{a} libsub-exporter-progressive-perl{a} libsub-identify-perl{a} libsub-install-perl{a} libsub-name-perl{a} libsub-quote-perl{a} libsub-uplevel-perl{a} libsuitesparseconfig7{a} libsvtav1enc2{a} libsyntax-keyword-try-perl{a} libsz2{a} libtasn1-6{a} libtasn1-6-dev{a} libterm-readkey-perl{a} libtest-exception-perl{a} libtext-autoformat-perl{a} libtext-charwidth-perl{a} libtext-glob-perl{a} libtext-levenshtein-damerau-perl{a} libtext-levenshteinxs-perl{a} libtext-markdown-discount-perl{a} libtext-reform-perl{a} libtext-template-perl{a} libtext-unidecode-perl{a} libtext-wrapi18n-perl{a} libtext-xslate-perl{a} libthai-data{a} libthai0{a} libtiff6{a} libtime-duration-perl{a} libtime-moment-perl{a} libtimedate-perl{a} libtoml-tiny-perl{a} libtool{a} libtry-tiny-perl{a} libts0t64{a} libuchardet0{a} libumfpack6{a} libunbound8{a} libunicode-utf8-perl{a} libunistring5{a} liburi-perl{a} libvariable-magic-perl{a} libvorbis0a{a} libvorbisenc2{a} libvulkan1{a} libwacom-common{a} libwacom9{a} libwayland-client0{a} libwayland-server0{a} libwebp7{a} libwebpmux3{a} libwmflite-0.2-7{a} libwww-mechanize-perl{a} libwww-perl{a} libwww-robotrules-perl{a} libx11-6{a} libx11-data{a} libx11-dev{a} libx11-xcb1{a} libxau-dev{a} libxau6{a} libxcb-cursor0{a} libxcb-dri3-0{a} libxcb-glx0{a} libxcb-icccm4{a} libxcb-image0{a} libxcb-keysyms1{a} libxcb-present0{a} libxcb-randr0{a} libxcb-render-util0{a} libxcb-render0{a} libxcb-shape0{a} libxcb-shm0{a} libxcb-sync1{a} libxcb-util1{a} libxcb-xfixes0{a} libxcb-xinput0{a} libxcb-xkb1{a} libxcb1{a} libxcb1-dev{a} libxcursor1{a} libxdmcp-dev{a} libxdmcp6{a} libxext6{a} libxfixes3{a} libxft2{a} libxinerama1{a} libxkbcommon-x11-0{a} libxkbcommon0{a} libxml-libxml-perl{a} libxml-namespacesupport-perl{a} libxml-sax-base-perl{a} libxml-sax-perl{a} libxml2{a} libxmlb2{a} libxpm4{a} libxrender1{a} libxs-parse-keyword-perl{a} libxs-parse-sublike-perl{a} libxshmfence1{a} libxxf86vm1{a} libyaml-0-2{a} libyaml-libyaml-perl{a} libyaml-pp-perl{a} libyaml-tiny-perl{a} libyuv0{a} libz3-4{a} libzstd-dev{a} licensecheck{a} lintian{a} lzop{a} m4{a} man-db{a} media-types{a} mesa-libgallium{a} netbase{a} nettle-dev{a} octave{a} octave-common{a} octave-dev{a} openssl{a} patchutils{a} perl-openssl-defaults{a} pkgconf{a} pkgconf-bin{a} plzip{a} po-debconf{a} procps{a} python3{a} python3-minimal{a} python3-mpmath{a} python3-packaging{a} python3-sympy{a} python3.13{a} python3.13-minimal{a} readline-common{a} sensible-utils{a} shared-mime-info{a} t1utils{a} tex-common{a} texinfo{a} texinfo-lib{a} tzdata{a} ucf{a} unzip{a} x11-common{a} x11proto-dev{a} xkb-data{a} xorg-sgml-doctools{a} xtrans-dev{a} zlib1g-dev{a} The following packages are RECOMMENDED but will NOT be installed: alsa-topology-conf alsa-ucm-conf bash-completion curl dbus default-jre-headless epstool fonts-liberation fonts-urw-base35 ghostscript gnupg groff isympy-common krb5-locales libarchive-cpio-perl libauthen-sasl-perl libblis4 libcgi-fast-perl libclass-c3-xs-perl libconfig-model-approx-perl libconfig-model-lcdproc-perl libconfig-model-openssh-perl libconfig-model-systemd-perl libconfig-model-tkui-perl libdata-dump-perl libfreezethaw-perl libfuse-perl libglib2.0-data libgpg-error-l10n libgpm2 libheif-plugin-aomenc libheif-plugin-x265 libhtml-format-perl libhttp-daemon-perl libio-compress-brotli-perl libipc-shareable-perl libjson-xs-perl libldap-common liblist-someutils-xs-perl liblog-dispatch-perl libltdl-dev libmail-sendmail-perl libmath-base85-perl libopenblas0 libpackage-stash-xs-perl libqt6sql6-ibase libqt6sql6-mysql libqt6sql6-odbc libqt6sql6-psql libqt6sql6-sqlite libre-engine-re2-perl libsasl2-modules libsocket6-perl libtasn1-doc libtie-ixhash-perl libtypes-serialiser-perl libxml-sax-expat-perl libxstring-perl linux-sysctl-defaults lynx mesa-vulkan-drivers octave-doc psmisc pstoedit publicsuffix python3-numpy python3-pil qt6-gtk-platformtheme qt6-qpa-plugins qt6-svg-plugins qt6-translations-l10n qt6-wayland wget xdg-user-dirs 0 packages upgraded, 547 newly installed, 0 to remove and 0 not upgraded. Need to get 219 MB of archives. After unpacking 850 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main amd64 libpython3.13-minimal amd64 3.13.2-1 [859 kB] Get: 2 http://deb.debian.org/debian unstable/main amd64 libexpat1 amd64 2.6.4-1 [106 kB] Get: 3 http://deb.debian.org/debian unstable/main amd64 python3.13-minimal amd64 3.13.2-1 [2205 kB] Get: 4 http://deb.debian.org/debian unstable/main amd64 python3-minimal amd64 3.13.1-2 [27.0 kB] Get: 5 http://deb.debian.org/debian unstable/main amd64 media-types all 11.0.0 [27.6 kB] Get: 6 http://deb.debian.org/debian unstable/main amd64 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main amd64 tzdata all 2025a-2 [259 kB] Get: 8 http://deb.debian.org/debian unstable/main amd64 libffi8 amd64 3.4.7-1 [23.9 kB] Get: 9 http://deb.debian.org/debian unstable/main amd64 readline-common all 8.2-6 [69.4 kB] Get: 10 http://deb.debian.org/debian unstable/main amd64 libreadline8t64 amd64 8.2-6 [169 kB] Get: 11 http://deb.debian.org/debian unstable/main amd64 libpython3.13-stdlib amd64 3.13.2-1 [1979 kB] Get: 12 http://deb.debian.org/debian unstable/main amd64 python3.13 amd64 3.13.2-1 [745 kB] Get: 13 http://deb.debian.org/debian unstable/main amd64 libpython3-stdlib amd64 3.13.1-2 [9952 B] Get: 14 http://deb.debian.org/debian unstable/main amd64 python3 amd64 3.13.1-2 [28.0 kB] Get: 15 http://deb.debian.org/debian unstable/main amd64 libproc2-0 amd64 2:4.0.4-7 [64.9 kB] Get: 16 http://deb.debian.org/debian unstable/main amd64 procps amd64 2:4.0.4-7 [878 kB] Get: 17 http://deb.debian.org/debian unstable/main amd64 sensible-utils all 0.0.24 [24.8 kB] Get: 18 http://deb.debian.org/debian unstable/main amd64 openssl amd64 3.4.1-1 [1427 kB] Get: 19 http://deb.debian.org/debian unstable/main amd64 ca-certificates all 20241223 [164 kB] Get: 20 http://deb.debian.org/debian unstable/main amd64 libmagic-mgc amd64 1:5.45-3+b1 [314 kB] Get: 21 http://deb.debian.org/debian unstable/main amd64 libmagic1t64 amd64 1:5.45-3+b1 [108 kB] Get: 22 http://deb.debian.org/debian unstable/main amd64 file amd64 1:5.45-3+b1 [43.3 kB] Get: 23 http://deb.debian.org/debian unstable/main amd64 gettext-base amd64 0.23.1-1 [243 kB] Get: 24 http://deb.debian.org/debian unstable/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 25 http://deb.debian.org/debian unstable/main amd64 groff-base amd64 1.23.0-7 [1185 kB] Get: 26 http://deb.debian.org/debian unstable/main amd64 bsdextrautils amd64 2.40.4-4 [92.4 kB] Get: 27 http://deb.debian.org/debian unstable/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 28 http://deb.debian.org/debian unstable/main amd64 man-db amd64 2.13.0-1 [1420 kB] Get: 29 http://deb.debian.org/debian unstable/main amd64 libtext-charwidth-perl amd64 0.04-11+b4 [9476 B] Get: 30 http://deb.debian.org/debian unstable/main amd64 libtext-wrapi18n-perl all 0.06-10 [8808 B] Get: 31 http://deb.debian.org/debian unstable/main amd64 ucf all 3.0050 [42.7 kB] Get: 32 http://deb.debian.org/debian unstable/main amd64 aglfn all 1.7+git20191031.4036a9c-2 [30.5 kB] Get: 33 http://deb.debian.org/debian unstable/main amd64 libglib2.0-0t64 amd64 2.83.3-2 [1511 kB] Get: 34 http://deb.debian.org/debian unstable/main amd64 libicu72 amd64 72.1-6 [9421 kB] Get: 35 http://deb.debian.org/debian unstable/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-0.2+b1 [699 kB] Get: 36 http://deb.debian.org/debian unstable/main amd64 shared-mime-info amd64 2.4-5+b2 [760 kB] Get: 37 http://deb.debian.org/debian unstable/main amd64 libbrotli1 amd64 1.1.0-2+b6 [302 kB] Get: 38 http://deb.debian.org/debian unstable/main amd64 libunistring5 amd64 1.3-1 [476 kB] Get: 39 http://deb.debian.org/debian unstable/main amd64 libidn2-0 amd64 2.3.7-2+b1 [129 kB] Get: 40 http://deb.debian.org/debian unstable/main amd64 libp11-kit0 amd64 0.25.5-3 [425 kB] Get: 41 http://deb.debian.org/debian unstable/main amd64 libtasn1-6 amd64 4.20.0-2 [49.9 kB] Get: 42 http://deb.debian.org/debian unstable/main amd64 libgnutls30t64 amd64 3.8.9-2 [1464 kB] Get: 43 http://deb.debian.org/debian unstable/main amd64 libkrb5support0 amd64 1.21.3-4 [32.8 kB] Get: 44 http://deb.debian.org/debian unstable/main amd64 libcom-err2 amd64 1.47.2-1 [24.0 kB] Get: 45 http://deb.debian.org/debian unstable/main amd64 libk5crypto3 amd64 1.21.3-4 [80.9 kB] Get: 46 http://deb.debian.org/debian unstable/main amd64 libkeyutils1 amd64 1.6.3-4 [9092 B] Get: 47 http://deb.debian.org/debian unstable/main amd64 libkrb5-3 amd64 1.21.3-4 [326 kB] Get: 48 http://deb.debian.org/debian unstable/main amd64 libgssapi-krb5-2 amd64 1.21.3-4 [138 kB] Get: 49 http://deb.debian.org/debian unstable/main amd64 libsasl2-modules-db amd64 2.1.28+dfsg1-8+b1 [19.9 kB] Get: 50 http://deb.debian.org/debian unstable/main amd64 libsasl2-2 amd64 2.1.28+dfsg1-8+b1 [57.6 kB] Get: 51 http://deb.debian.org/debian unstable/main amd64 libldap2 amd64 2.6.9+dfsg-1 [192 kB] Get: 52 http://deb.debian.org/debian unstable/main amd64 libnghttp2-14 amd64 1.64.0-1 [75.5 kB] Get: 53 http://deb.debian.org/debian unstable/main amd64 libnghttp3-9 amd64 1.6.0-2 [64.8 kB] Get: 54 http://deb.debian.org/debian unstable/main amd64 libngtcp2-16 amd64 1.9.1-1 [119 kB] Get: 55 http://deb.debian.org/debian unstable/main amd64 libngtcp2-crypto-gnutls8 amd64 1.9.1-1 [18.5 kB] Get: 56 http://deb.debian.org/debian unstable/main amd64 libpsl5t64 amd64 0.21.2-1.1+b1 [57.2 kB] Get: 57 http://deb.debian.org/debian unstable/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d.1-2+b5 [58.8 kB] Get: 58 http://deb.debian.org/debian unstable/main amd64 libssh2-1t64 amd64 1.11.1-1 [245 kB] Get: 59 http://deb.debian.org/debian unstable/main amd64 libcurl3t64-gnutls amd64 8.12.1-2 [365 kB] Get: 60 http://deb.debian.org/debian unstable/main amd64 libstemmer0d amd64 2.2.0-4+b2 [119 kB] Get: 61 http://deb.debian.org/debian unstable/main amd64 libxmlb2 amd64 0.3.21-1 [63.0 kB] Get: 62 http://deb.debian.org/debian unstable/main amd64 libyaml-0-2 amd64 0.2.5-2 [52.5 kB] Get: 63 http://deb.debian.org/debian unstable/main amd64 libappstream5 amd64 1.0.4-1 [225 kB] Get: 64 http://deb.debian.org/debian unstable/main amd64 appstream amd64 1.0.4-1 [523 kB] Get: 65 http://deb.debian.org/debian unstable/main amd64 m4 amd64 1.4.19-5 [294 kB] Get: 66 http://deb.debian.org/debian unstable/main amd64 autoconf all 2.72-3 [493 kB] Get: 67 http://deb.debian.org/debian unstable/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 68 http://deb.debian.org/debian unstable/main amd64 automake all 1:1.17-3 [862 kB] Get: 69 http://deb.debian.org/debian unstable/main amd64 autopoint all 0.23.1-1 [770 kB] Get: 70 http://deb.debian.org/debian unstable/main amd64 libcapture-tiny-perl all 0.50-1 [24.6 kB] Get: 71 http://deb.debian.org/debian unstable/main amd64 libparams-util-perl amd64 1.102-3+b1 [24.4 kB] Get: 72 http://deb.debian.org/debian unstable/main amd64 libsub-install-perl all 0.929-1 [10.5 kB] Get: 73 http://deb.debian.org/debian unstable/main amd64 libdata-optlist-perl all 0.114-1 [10.6 kB] Get: 74 http://deb.debian.org/debian unstable/main amd64 libb-hooks-op-check-perl amd64 0.22-3+b2 [10.6 kB] Get: 75 http://deb.debian.org/debian unstable/main amd64 libdynaloader-functions-perl all 0.004-1 [12.1 kB] Get: 76 http://deb.debian.org/debian unstable/main amd64 libdevel-callchecker-perl amd64 0.009-1+b1 [16.2 kB] Get: 77 http://deb.debian.org/debian unstable/main amd64 libparams-classify-perl amd64 0.015-2+b4 [22.5 kB] Get: 78 http://deb.debian.org/debian unstable/main amd64 libmodule-runtime-perl all 0.016-2 [19.6 kB] Get: 79 http://deb.debian.org/debian unstable/main amd64 libtry-tiny-perl all 0.32-1 [22.9 kB] Get: 80 http://deb.debian.org/debian unstable/main amd64 libmodule-implementation-perl all 0.09-2 [12.6 kB] Get: 81 http://deb.debian.org/debian unstable/main amd64 libpackage-stash-perl all 0.40-1 [22.0 kB] Get: 82 http://deb.debian.org/debian unstable/main amd64 libclass-load-perl all 0.25-2 [15.3 kB] Get: 83 http://deb.debian.org/debian unstable/main amd64 libio-stringy-perl all 2.113-2 [48.3 kB] Get: 84 http://deb.debian.org/debian unstable/main amd64 libparams-validate-perl amd64 1.31-2+b3 [63.4 kB] Get: 85 http://deb.debian.org/debian unstable/main amd64 libsub-exporter-perl all 0.990-1 [50.6 kB] Get: 86 http://deb.debian.org/debian unstable/main amd64 libgetopt-long-descriptive-perl all 0.116-2 [27.7 kB] Get: 87 http://deb.debian.org/debian unstable/main amd64 libio-tiecombine-perl all 1.005-3 [10.8 kB] Get: 88 http://deb.debian.org/debian unstable/main amd64 libmodule-pluggable-perl all 5.2-5 [23.0 kB] Get: 89 http://deb.debian.org/debian unstable/main amd64 libstring-rewriteprefix-perl all 0.009-1 [7140 B] Get: 90 http://deb.debian.org/debian unstable/main amd64 libapp-cmd-perl all 0.337-2 [61.4 kB] Get: 91 http://deb.debian.org/debian unstable/main amd64 libboolean-perl all 0.46-3 [9924 B] Get: 92 http://deb.debian.org/debian unstable/main amd64 libsub-uplevel-perl all 0.2800-3 [14.0 kB] Get: 93 http://deb.debian.org/debian unstable/main amd64 libtest-exception-perl all 0.43-3 [16.9 kB] Get: 94 http://deb.debian.org/debian unstable/main amd64 libcarp-assert-more-perl all 2.8.0-1 [21.7 kB] Get: 95 http://deb.debian.org/debian unstable/main amd64 libfile-which-perl all 1.27-2 [15.1 kB] Get: 96 http://deb.debian.org/debian unstable/main amd64 libfile-homedir-perl all 1.006-2 [42.4 kB] Get: 97 http://deb.debian.org/debian unstable/main amd64 libclone-choose-perl all 0.010-2 [8676 B] Get: 98 http://deb.debian.org/debian unstable/main amd64 libhash-merge-perl all 0.302-1 [14.7 kB] Get: 99 http://deb.debian.org/debian unstable/main amd64 libjson-perl all 4.10000-1 [87.5 kB] Get: 100 http://deb.debian.org/debian unstable/main amd64 libexporter-tiny-perl all 1.006002-1 [38.7 kB] Get: 101 http://deb.debian.org/debian unstable/main amd64 liblist-moreutils-xs-perl amd64 0.430-4+b2 [42.1 kB] Get: 102 http://deb.debian.org/debian unstable/main amd64 liblist-moreutils-perl all 0.430-2 [46.9 kB] Get: 103 http://deb.debian.org/debian unstable/main amd64 liblog-log4perl-perl all 1.57-1 [367 kB] Get: 104 http://deb.debian.org/debian unstable/main amd64 libmouse-perl amd64 2.5.11-1+b1 [144 kB] Get: 105 http://deb.debian.org/debian unstable/main amd64 libmousex-nativetraits-perl all 1.09-3 [53.5 kB] Get: 106 http://deb.debian.org/debian unstable/main amd64 libmousex-strictconstructor-perl all 0.02-3 [5304 B] Get: 107 http://deb.debian.org/debian unstable/main amd64 libparse-recdescent-perl all 1.967015+dfsg-4 [147 kB] Get: 108 http://deb.debian.org/debian unstable/main amd64 libpath-tiny-perl all 0.146-1 [56.2 kB] Get: 109 http://deb.debian.org/debian unstable/main amd64 libpod-pom-perl all 2.01-4 [65.0 kB] Get: 110 http://deb.debian.org/debian unstable/main amd64 libregexp-common-perl all 2024080801-1 [167 kB] Get: 111 http://deb.debian.org/debian unstable/main amd64 libyaml-tiny-perl all 1.76-1 [29.8 kB] Get: 112 http://deb.debian.org/debian unstable/main amd64 libconfig-model-perl all 2.155-1 [398 kB] Get: 113 http://deb.debian.org/debian unstable/main amd64 libyaml-pp-perl all 0.39.0-1 [111 kB] Get: 114 http://deb.debian.org/debian unstable/main amd64 cme all 1.041-1 [69.6 kB] Get: 115 http://deb.debian.org/debian unstable/main amd64 comerr-dev amd64 2.1-1.47.2-1 [55.7 kB] Get: 116 http://deb.debian.org/debian unstable/main amd64 libdebhelper-perl all 13.24.1 [90.9 kB] Get: 117 http://deb.debian.org/debian unstable/main amd64 libtool all 2.5.4-3 [539 kB] Get: 118 http://deb.debian.org/debian unstable/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 119 http://deb.debian.org/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 120 http://deb.debian.org/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.14.1-2 [19.7 kB] Get: 121 http://deb.debian.org/debian unstable/main amd64 dh-strip-nondeterminism all 1.14.1-2 [8620 B] Get: 122 http://deb.debian.org/debian unstable/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 123 http://deb.debian.org/debian unstable/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 124 http://deb.debian.org/debian unstable/main amd64 gettext amd64 0.23.1-1 [1680 kB] Get: 125 http://deb.debian.org/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 126 http://deb.debian.org/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 127 http://deb.debian.org/debian unstable/main amd64 debhelper all 13.24.1 [920 kB] Get: 128 http://deb.debian.org/debian unstable/main amd64 gnuplot-data all 6.0.2+dfsg1-1 [72.4 kB] Get: 129 http://deb.debian.org/debian unstable/main amd64 libpng16-16t64 amd64 1.6.46-4 [284 kB] Get: 130 http://deb.debian.org/debian unstable/main amd64 libfreetype6 amd64 2.13.3+dfsg-1 [452 kB] Get: 131 http://deb.debian.org/debian unstable/main amd64 fonts-dejavu-mono all 2.37-8 [489 kB] Get: 132 http://deb.debian.org/debian unstable/main amd64 fonts-dejavu-core all 2.37-8 [840 kB] Get: 133 http://deb.debian.org/debian unstable/main amd64 fonts-freefont-otf all 20211204+svn4273-2 [4328 kB] Get: 134 http://deb.debian.org/debian unstable/main amd64 fontconfig-config amd64 2.15.0-2 [317 kB] Get: 135 http://deb.debian.org/debian unstable/main amd64 libfontconfig1 amd64 2.15.0-2 [391 kB] Get: 136 http://deb.debian.org/debian unstable/main amd64 libpixman-1-0 amd64 0.44.0-3 [248 kB] Get: 137 http://deb.debian.org/debian unstable/main amd64 libxau6 amd64 1:1.0.11-1 [20.4 kB] Get: 138 http://deb.debian.org/debian unstable/main amd64 libxdmcp6 amd64 1:1.1.5-1 [27.8 kB] Get: 139 http://deb.debian.org/debian unstable/main amd64 libxcb1 amd64 1.17.0-2+b1 [144 kB] Get: 140 http://deb.debian.org/debian unstable/main amd64 libx11-data all 2:1.8.10-2 [337 kB] Get: 141 http://deb.debian.org/debian unstable/main amd64 libx11-6 amd64 2:1.8.10-2 [813 kB] Get: 142 http://deb.debian.org/debian unstable/main amd64 libxcb-render0 amd64 1.17.0-2+b1 [115 kB] Get: 143 http://deb.debian.org/debian unstable/main amd64 libxcb-shm0 amd64 1.17.0-2+b1 [105 kB] Get: 144 http://deb.debian.org/debian unstable/main amd64 libxext6 amd64 2:1.3.4-1+b3 [50.4 kB] Get: 145 http://deb.debian.org/debian unstable/main amd64 libxrender1 amd64 1:0.9.10-1.1+b4 [27.8 kB] Get: 146 http://deb.debian.org/debian unstable/main amd64 libcairo2 amd64 1.18.2-2 [535 kB] Get: 147 http://deb.debian.org/debian unstable/main amd64 libedit2 amd64 3.1-20250104-1 [93.8 kB] Get: 148 http://deb.debian.org/debian unstable/main amd64 libaom3 amd64 3.12.0-1 [1870 kB] Get: 149 http://deb.debian.org/debian unstable/main amd64 libdav1d7 amd64 1.5.1-1 [559 kB] Get: 150 http://deb.debian.org/debian unstable/main amd64 libabsl20230802 amd64 20230802.1-4 [464 kB] Get: 151 http://deb.debian.org/debian unstable/main amd64 libgav1-1 amd64 0.19.0-3 [350 kB] Get: 152 http://deb.debian.org/debian unstable/main amd64 librav1e0.7 amd64 0.7.1-9+b1 [946 kB] Get: 153 http://deb.debian.org/debian unstable/main amd64 libsvtav1enc2 amd64 2.3.0+dfsg-1 [2489 kB] Get: 154 http://deb.debian.org/debian unstable/main amd64 libjpeg62-turbo amd64 1:2.1.5-3+b1 [168 kB] Get: 155 http://deb.debian.org/debian unstable/main amd64 libyuv0 amd64 0.0.1904.20250204-1 [174 kB] Get: 156 http://deb.debian.org/debian unstable/main amd64 libavif16 amd64 1.1.1-1 [117 kB] Get: 157 http://deb.debian.org/debian unstable/main amd64 libsharpyuv0 amd64 1.5.0-0.1 [116 kB] Get: 158 http://deb.debian.org/debian unstable/main amd64 libheif-plugin-dav1d amd64 1.19.5-1+b1 [11.5 kB] Get: 159 http://deb.debian.org/debian unstable/main amd64 libde265-0 amd64 1.0.15-1+b2 [189 kB] Get: 160 http://deb.debian.org/debian unstable/main amd64 libheif-plugin-libde265 amd64 1.19.5-1+b1 [15.5 kB] Get: 161 http://deb.debian.org/debian unstable/main amd64 libheif1 amd64 1.19.5-1+b1 [514 kB] Get: 162 http://deb.debian.org/debian unstable/main amd64 libimagequant0 amd64 2.18.0-1+b2 [35.2 kB] Get: 163 http://deb.debian.org/debian unstable/main amd64 libfribidi0 amd64 1.0.16-1 [26.5 kB] Get: 164 http://deb.debian.org/debian unstable/main amd64 libgraphite2-3 amd64 1.3.14-2+b1 [75.4 kB] Get: 165 http://deb.debian.org/debian unstable/main amd64 libharfbuzz0b amd64 10.2.0-1 [479 kB] Get: 166 http://deb.debian.org/debian unstable/main amd64 libraqm0 amd64 0.10.2-1 [13.9 kB] Get: 167 http://deb.debian.org/debian unstable/main amd64 libdeflate0 amd64 1.23-1+b1 [47.5 kB] Get: 168 http://deb.debian.org/debian unstable/main amd64 libjbig0 amd64 2.1-6.1+b2 [32.1 kB] Get: 169 http://deb.debian.org/debian unstable/main amd64 liblerc4 amd64 4.0.0+ds-5 [183 kB] Get: 170 http://deb.debian.org/debian unstable/main amd64 libwebp7 amd64 1.5.0-0.1 [318 kB] Get: 171 http://deb.debian.org/debian unstable/main amd64 libtiff6 amd64 4.5.1+git230720-5 [324 kB] Get: 172 http://deb.debian.org/debian unstable/main amd64 libxpm4 amd64 1:3.5.17-1+b3 [56.2 kB] Get: 173 http://deb.debian.org/debian unstable/main amd64 libgd3 amd64 2.3.3-12+b1 [126 kB] Get: 174 http://deb.debian.org/debian unstable/main amd64 liblua5.4-0 amd64 5.4.7-1+b2 [147 kB] Get: 175 http://deb.debian.org/debian unstable/main amd64 fontconfig amd64 2.15.0-2 [463 kB] Get: 176 http://deb.debian.org/debian unstable/main amd64 libthai-data all 0.1.29-2 [168 kB] Get: 177 http://deb.debian.org/debian unstable/main amd64 libdatrie1 amd64 0.2.13-3+b1 [38.1 kB] Get: 178 http://deb.debian.org/debian unstable/main amd64 libthai0 amd64 0.1.29-2+b1 [49.4 kB] Get: 179 http://deb.debian.org/debian unstable/main amd64 libpango-1.0-0 amd64 1.56.1-1 [226 kB] Get: 180 http://deb.debian.org/debian unstable/main amd64 libpangoft2-1.0-0 amd64 1.56.1-1 [55.3 kB] Get: 181 http://deb.debian.org/debian unstable/main amd64 libpangocairo-1.0-0 amd64 1.56.1-1 [35.8 kB] Get: 182 http://deb.debian.org/debian unstable/main amd64 libwebpmux3 amd64 1.5.0-0.1 [126 kB] Get: 183 http://deb.debian.org/debian unstable/main amd64 gnuplot-nox amd64 6.0.2+dfsg1-1 [922 kB] Get: 184 http://deb.debian.org/debian unstable/main amd64 dh-octave-autopkgtest all 1.8.0 [10.0 kB] Get: 185 http://deb.debian.org/debian unstable/main amd64 libapt-pkg-perl amd64 0.1.41 [68.3 kB] Get: 186 http://deb.debian.org/debian unstable/main amd64 libarray-intspan-perl all 2.004-2 [25.7 kB] Get: 187 http://deb.debian.org/debian unstable/main amd64 libyaml-libyaml-perl amd64 0.903.0+ds-1 [35.4 kB] Get: 188 http://deb.debian.org/debian unstable/main amd64 libconfig-model-backend-yaml-perl all 2.134-2 [10.8 kB] Get: 189 http://deb.debian.org/debian unstable/main amd64 libexporter-lite-perl all 0.09-2 [10.7 kB] Get: 190 http://deb.debian.org/debian unstable/main amd64 libencode-locale-perl all 1.05-3 [12.9 kB] Get: 191 http://deb.debian.org/debian unstable/main amd64 libtimedate-perl all 2.3300-2 [39.3 kB] Get: 192 http://deb.debian.org/debian unstable/main amd64 libhttp-date-perl all 6.06-1 [10.7 kB] Get: 193 http://deb.debian.org/debian unstable/main amd64 libfile-listing-perl all 6.16-1 [12.4 kB] Get: 194 http://deb.debian.org/debian unstable/main amd64 libhtml-tagset-perl all 3.24-1 [14.7 kB] Get: 195 http://deb.debian.org/debian unstable/main amd64 liburi-perl all 5.30-1 [105 kB] Get: 196 http://deb.debian.org/debian unstable/main amd64 libhtml-parser-perl amd64 3.83-1+b2 [99.7 kB] Get: 197 http://deb.debian.org/debian unstable/main amd64 libhtml-tree-perl all 5.07-3 [211 kB] Get: 198 http://deb.debian.org/debian unstable/main amd64 libclone-perl amd64 0.47-1+b1 [13.9 kB] Get: 199 http://deb.debian.org/debian unstable/main amd64 libio-html-perl all 1.004-3 [16.2 kB] Get: 200 http://deb.debian.org/debian unstable/main amd64 liblwp-mediatypes-perl all 6.04-2 [20.2 kB] Get: 201 http://deb.debian.org/debian unstable/main amd64 libhttp-message-perl all 7.00-2 [79.8 kB] Get: 202 http://deb.debian.org/debian unstable/main amd64 libhttp-cookies-perl all 6.11-1 [19.1 kB] Get: 203 http://deb.debian.org/debian unstable/main amd64 libhttp-negotiate-perl all 6.01-2 [13.1 kB] Get: 204 http://deb.debian.org/debian unstable/main amd64 perl-openssl-defaults amd64 7+b2 [6724 B] Get: 205 http://deb.debian.org/debian unstable/main amd64 libnet-ssleay-perl amd64 1.94-3 [339 kB] Get: 206 http://deb.debian.org/debian unstable/main amd64 libio-socket-ssl-perl all 2.089-1 [223 kB] Get: 207 http://deb.debian.org/debian unstable/main amd64 libnet-http-perl all 6.23-1 [23.9 kB] Get: 208 http://deb.debian.org/debian unstable/main amd64 liblwp-protocol-https-perl all 6.14-1 [10.8 kB] Get: 209 http://deb.debian.org/debian unstable/main amd64 libwww-robotrules-perl all 6.02-1 [12.9 kB] Get: 210 http://deb.debian.org/debian unstable/main amd64 libwww-perl all 6.77-1 [183 kB] Get: 211 http://deb.debian.org/debian unstable/main amd64 liberror-perl all 0.17029-2 [29.0 kB] Get: 212 http://deb.debian.org/debian unstable/main amd64 libparse-debcontrol-perl all 2.005-6 [21.6 kB] Get: 213 http://deb.debian.org/debian unstable/main amd64 libsoftware-copyright-perl all 0.012-2 [18.0 kB] Get: 214 http://deb.debian.org/debian unstable/main amd64 libalgorithm-c3-perl all 0.11-2 [10.8 kB] Get: 215 http://deb.debian.org/debian unstable/main amd64 libclass-c3-perl all 0.35-2 [21.0 kB] Get: 216 http://deb.debian.org/debian unstable/main amd64 libmro-compat-perl all 0.15-2 [11.8 kB] Get: 217 http://deb.debian.org/debian unstable/main amd64 libdata-section-perl all 0.200008-1 [13.1 kB] Get: 218 http://deb.debian.org/debian unstable/main amd64 libtext-template-perl all 1.61-1 [54.4 kB] Get: 219 http://deb.debian.org/debian unstable/main amd64 libsoftware-license-perl all 0.104006-1 [116 kB] Get: 220 http://deb.debian.org/debian unstable/main amd64 libsoftware-licensemoreutils-perl all 1.009-1 [22.0 kB] Get: 221 http://deb.debian.org/debian unstable/main amd64 libsort-versions-perl all 1.62-3 [8928 B] Get: 222 http://deb.debian.org/debian unstable/main amd64 libtext-reform-perl all 1.20-5 [36.0 kB] Get: 223 http://deb.debian.org/debian unstable/main amd64 libtext-autoformat-perl all 1.750000-2 [35.2 kB] Get: 224 http://deb.debian.org/debian unstable/main amd64 libtext-levenshtein-damerau-perl all 0.41-3 [12.3 kB] Get: 225 http://deb.debian.org/debian unstable/main amd64 libtoml-tiny-perl all 0.19-1 [23.1 kB] Get: 226 http://deb.debian.org/debian unstable/main amd64 libclass-inspector-perl all 1.36-3 [17.5 kB] Get: 227 http://deb.debian.org/debian unstable/main amd64 libfile-sharedir-perl all 1.118-3 [16.0 kB] Get: 228 http://deb.debian.org/debian unstable/main amd64 libindirect-perl amd64 0.39-2+b4 [27.1 kB] Get: 229 http://deb.debian.org/debian unstable/main amd64 libxs-parse-keyword-perl amd64 0.48-2 [65.7 kB] Get: 230 http://deb.debian.org/debian unstable/main amd64 libxs-parse-sublike-perl amd64 0.37-1 [47.1 kB] Get: 231 http://deb.debian.org/debian unstable/main amd64 libobject-pad-perl amd64 0.819-1 [140 kB] Get: 232 http://deb.debian.org/debian unstable/main amd64 libfeature-compat-class-perl all 0.07-1 [11.5 kB] Get: 233 http://deb.debian.org/debian unstable/main amd64 libsyntax-keyword-try-perl amd64 0.30-1+b1 [27.4 kB] Get: 234 http://deb.debian.org/debian unstable/main amd64 libfeature-compat-try-perl all 0.05-1 [10.4 kB] Get: 235 http://deb.debian.org/debian unstable/main amd64 libio-interactive-perl all 1.026-1 [11.7 kB] Get: 236 http://deb.debian.org/debian unstable/main amd64 liblog-any-perl all 1.717-1 [78.9 kB] Get: 237 http://deb.debian.org/debian unstable/main amd64 liblog-any-adapter-screen-perl all 0.141-1 [14.0 kB] Get: 238 http://deb.debian.org/debian unstable/main amd64 libsub-exporter-progressive-perl all 0.001013-3 [7496 B] Get: 239 http://deb.debian.org/debian unstable/main amd64 libvariable-magic-perl amd64 0.64-1+b1 [44.9 kB] Get: 240 http://deb.debian.org/debian unstable/main amd64 libb-hooks-endofscope-perl all 0.28-1 [17.5 kB] Get: 241 http://deb.debian.org/debian unstable/main amd64 libsub-identify-perl amd64 0.14-3+b3 [11.3 kB] Get: 242 http://deb.debian.org/debian unstable/main amd64 libsub-name-perl amd64 0.28-1 [12.2 kB] Get: 243 http://deb.debian.org/debian unstable/main amd64 libnamespace-clean-perl all 0.27-2 [17.8 kB] Get: 244 http://deb.debian.org/debian unstable/main amd64 libnumber-compare-perl all 0.03-3 [6332 B] Get: 245 http://deb.debian.org/debian unstable/main amd64 libtext-glob-perl all 0.11-3 [7676 B] Get: 246 http://deb.debian.org/debian unstable/main amd64 libpath-iterator-rule-perl all 1.015-2 [41.7 kB] Get: 247 http://deb.debian.org/debian unstable/main amd64 libpod-parser-perl all 1.67-1 [94.1 kB] Get: 248 http://deb.debian.org/debian unstable/main amd64 libpod-constants-perl all 0.19-2 [17.3 kB] Get: 249 http://deb.debian.org/debian unstable/main amd64 libset-intspan-perl all 1.19-3 [25.3 kB] Get: 250 http://deb.debian.org/debian unstable/main amd64 libstring-copyright-perl all 0.003014-1 [23.4 kB] Get: 251 http://deb.debian.org/debian unstable/main amd64 libstring-escape-perl all 2010.002-3 [18.7 kB] Get: 252 http://deb.debian.org/debian unstable/main amd64 libregexp-pattern-license-perl all 3.11.2-1 [94.6 kB] Get: 253 http://deb.debian.org/debian unstable/main amd64 libregexp-pattern-perl all 0.2.14-2 [18.7 kB] Get: 254 http://deb.debian.org/debian unstable/main amd64 libstring-license-perl all 0.0.11-1 [34.7 kB] Get: 255 http://deb.debian.org/debian unstable/main amd64 licensecheck all 3.3.9-1 [50.1 kB] Get: 256 http://deb.debian.org/debian unstable/main amd64 diffstat amd64 1.67-1 [35.5 kB] Get: 257 http://deb.debian.org/debian unstable/main amd64 libgpg-error0 amd64 1.51-3 [82.2 kB] Get: 258 http://deb.debian.org/debian unstable/main amd64 libassuan9 amd64 3.0.1-2 [60.6 kB] Get: 259 http://deb.debian.org/debian unstable/main amd64 libgcrypt20 amd64 1.11.0-7 [843 kB] Get: 260 http://deb.debian.org/debian unstable/main amd64 gpgconf amd64 2.2.46-1+b1 [121 kB] Get: 261 http://deb.debian.org/debian unstable/main amd64 gpg amd64 2.2.46-1+b1 [532 kB] Get: 262 http://deb.debian.org/debian unstable/main amd64 iso-codes all 4.17.0-1 [3055 kB] Get: 263 http://deb.debian.org/debian unstable/main amd64 libberkeleydb-perl amd64 0.66-1 [121 kB] Get: 264 http://deb.debian.org/debian unstable/main amd64 libclass-xsaccessor-perl amd64 1.19-4+b5 [36.1 kB] Get: 265 http://deb.debian.org/debian unstable/main amd64 libconfig-tiny-perl all 2.30-1 [18.9 kB] Get: 266 http://deb.debian.org/debian unstable/main amd64 libconst-fast-perl all 0.014-2 [8792 B] Get: 267 http://deb.debian.org/debian unstable/main amd64 libcpanel-json-xs-perl amd64 4.39-1 [130 kB] Get: 268 http://deb.debian.org/debian unstable/main amd64 libaliased-perl all 0.34-3 [13.5 kB] Get: 269 http://deb.debian.org/debian unstable/main amd64 libclass-data-inheritable-perl all 0.10-1 [8632 B] Get: 270 http://deb.debian.org/debian unstable/main amd64 libdevel-stacktrace-perl all 2.0500-1 [26.4 kB] Get: 271 http://deb.debian.org/debian unstable/main amd64 libexception-class-perl all 1.45-1 [34.6 kB] Get: 272 http://deb.debian.org/debian unstable/main amd64 libiterator-perl all 0.03+ds1-2 [18.8 kB] Get: 273 http://deb.debian.org/debian unstable/main amd64 libiterator-util-perl all 0.02+ds1-2 [14.0 kB] Get: 274 http://deb.debian.org/debian unstable/main amd64 libdata-dpath-perl all 0.60-1 [41.8 kB] Get: 275 http://deb.debian.org/debian unstable/main amd64 libnet-domain-tld-perl all 1.75-4 [31.5 kB] Get: 276 http://deb.debian.org/debian unstable/main amd64 libdata-validate-domain-perl all 0.15-1 [11.9 kB] Get: 277 http://deb.debian.org/debian unstable/main amd64 libnet-ipv6addr-perl all 1.02-1 [21.7 kB] Get: 278 http://deb.debian.org/debian unstable/main amd64 libnet-netmask-perl all 2.0002-2 [28.6 kB] Get: 279 http://deb.debian.org/debian unstable/main amd64 libnetaddr-ip-perl amd64 4.079+dfsg-2+b5 [98.1 kB] Get: 280 http://deb.debian.org/debian unstable/main amd64 libdata-validate-ip-perl all 0.31-1 [20.6 kB] Get: 281 http://deb.debian.org/debian unstable/main amd64 libdata-validate-uri-perl all 0.07-3 [11.0 kB] Get: 282 http://deb.debian.org/debian unstable/main amd64 libdevel-size-perl amd64 0.84-1+b1 [24.2 kB] Get: 283 http://deb.debian.org/debian unstable/main amd64 libemail-address-xs-perl amd64 1.05-1+b4 [29.4 kB] Get: 284 http://deb.debian.org/debian unstable/main amd64 libipc-system-simple-perl all 1.30-2 [26.8 kB] Get: 285 http://deb.debian.org/debian unstable/main amd64 libfile-basedir-perl all 0.09-2 [15.1 kB] Get: 286 http://deb.debian.org/debian unstable/main amd64 libfile-find-rule-perl all 0.34-3 [26.6 kB] Get: 287 http://deb.debian.org/debian unstable/main amd64 libio-string-perl all 1.08-4 [12.1 kB] Get: 288 http://deb.debian.org/debian unstable/main amd64 libfont-ttf-perl all 1.06-2 [318 kB] Get: 289 http://deb.debian.org/debian unstable/main amd64 libhtml-html5-entities-perl all 0.004-3 [21.0 kB] Get: 290 http://deb.debian.org/debian unstable/main amd64 libhtml-tokeparser-simple-perl all 3.16-4 [39.1 kB] Get: 291 http://deb.debian.org/debian unstable/main amd64 libipc-run3-perl all 0.049-1 [31.5 kB] Get: 292 http://deb.debian.org/debian unstable/main amd64 libjson-maybexs-perl all 1.004008-1 [12.9 kB] Get: 293 http://deb.debian.org/debian unstable/main amd64 liblist-compare-perl all 0.55-2 [65.7 kB] Get: 294 http://deb.debian.org/debian unstable/main amd64 liblist-someutils-perl all 0.59-1 [37.1 kB] Get: 295 http://deb.debian.org/debian unstable/main amd64 liblist-utilsby-perl all 0.12-2 [15.5 kB] Get: 296 http://deb.debian.org/debian unstable/main amd64 libmldbm-perl all 2.05-4 [16.8 kB] Get: 297 http://deb.debian.org/debian unstable/main amd64 libclass-method-modifiers-perl all 2.15-1 [18.0 kB] Get: 298 http://deb.debian.org/debian unstable/main amd64 libimport-into-perl all 1.002005-2 [11.3 kB] Get: 299 http://deb.debian.org/debian unstable/main amd64 librole-tiny-perl all 2.002004-1 [21.4 kB] Get: 300 http://deb.debian.org/debian unstable/main amd64 libsub-quote-perl all 2.006008-1 [21.8 kB] Get: 301 http://deb.debian.org/debian unstable/main amd64 libmoo-perl all 2.005005-1 [58.0 kB] Get: 302 http://deb.debian.org/debian unstable/main amd64 libstrictures-perl all 2.000006-1 [18.6 kB] Get: 303 http://deb.debian.org/debian unstable/main amd64 libmoox-aliases-perl all 0.001006-2 [7156 B] Get: 304 http://deb.debian.org/debian unstable/main amd64 libperlio-gzip-perl amd64 0.20-1+b4 [17.5 kB] Get: 305 http://deb.debian.org/debian unstable/main amd64 libperlio-utf8-strict-perl amd64 0.010-1+b3 [11.4 kB] Get: 306 http://deb.debian.org/debian unstable/main amd64 libproc-processtable-perl amd64 0.636-1+b3 [42.3 kB] Get: 307 http://deb.debian.org/debian unstable/main amd64 libregexp-wildcards-perl all 1.05-3 [14.1 kB] Get: 308 http://deb.debian.org/debian unstable/main amd64 libsereal-decoder-perl amd64 5.004+ds-1+b3 [100 kB] Get: 309 http://deb.debian.org/debian unstable/main amd64 libsereal-encoder-perl amd64 5.004+ds-1+b3 [104 kB] Get: 310 http://deb.debian.org/debian unstable/main amd64 libterm-readkey-perl amd64 2.38-2+b4 [24.6 kB] Get: 311 http://deb.debian.org/debian unstable/main amd64 libtext-levenshteinxs-perl amd64 0.03-5+b4 [8720 B] Get: 312 http://deb.debian.org/debian unstable/main amd64 libmarkdown2 amd64 2.2.7-2.1 [36.0 kB] Get: 313 http://deb.debian.org/debian unstable/main amd64 libtext-markdown-discount-perl amd64 0.18-1 [13.1 kB] Get: 314 http://deb.debian.org/debian unstable/main amd64 libdata-messagepack-perl amd64 1.02-1+b4 [32.8 kB] Get: 315 http://deb.debian.org/debian unstable/main amd64 libtext-xslate-perl amd64 3.5.9-2+b1 [174 kB] Get: 316 http://deb.debian.org/debian unstable/main amd64 libtime-duration-perl all 1.21-2 [13.1 kB] Get: 317 http://deb.debian.org/debian unstable/main amd64 libtime-moment-perl amd64 0.44-2+b4 [73.2 kB] Get: 318 http://deb.debian.org/debian unstable/main amd64 libunicode-utf8-perl amd64 0.62-2+b3 [20.4 kB] Get: 319 http://deb.debian.org/debian unstable/main amd64 libcgi-pm-perl all 4.67-1 [217 kB] Get: 320 http://deb.debian.org/debian unstable/main amd64 libhtml-form-perl all 6.12-1 [32.3 kB] Get: 321 http://deb.debian.org/debian unstable/main amd64 libwww-mechanize-perl all 2.19-1 [114 kB] Get: 322 http://deb.debian.org/debian unstable/main amd64 libxml-namespacesupport-perl all 1.12-2 [15.1 kB] Get: 323 http://deb.debian.org/debian unstable/main amd64 libxml-sax-base-perl all 1.09-3 [20.6 kB] Get: 324 http://deb.debian.org/debian unstable/main amd64 libxml-sax-perl all 1.02+dfsg-4 [53.4 kB] Get: 325 http://deb.debian.org/debian unstable/main amd64 libxml-libxml-perl amd64 2.0207+dfsg+really+2.0134-5+b2 [314 kB] Get: 326 http://deb.debian.org/debian unstable/main amd64 liblz1 amd64 1.15-2 [38.9 kB] Get: 327 http://deb.debian.org/debian unstable/main amd64 plzip amd64 1.12-1 [65.0 kB] Get: 328 http://deb.debian.org/debian unstable/main amd64 liblzo2-2 amd64 2.10-3+b1 [55.1 kB] Get: 329 http://deb.debian.org/debian unstable/main amd64 lzop amd64 1.04-2 [84.2 kB] Get: 330 http://deb.debian.org/debian unstable/main amd64 patchutils amd64 0.4.2-1 [77.5 kB] Get: 331 http://deb.debian.org/debian unstable/main amd64 t1utils amd64 1.41-4 [62.1 kB] Get: 332 http://deb.debian.org/debian unstable/main amd64 unzip amd64 6.0-28 [166 kB] Get: 333 http://deb.debian.org/debian unstable/main amd64 lintian all 2.121.1 [1058 kB] Get: 334 http://deb.debian.org/debian unstable/main amd64 libconfig-model-dpkg-perl all 3.010 [174 kB] Get: 335 http://deb.debian.org/debian unstable/main amd64 libconvert-binhex-perl all 1.125-3 [27.4 kB] Get: 336 http://deb.debian.org/debian unstable/main amd64 libnet-smtp-ssl-perl all 1.04-2 [6548 B] Get: 337 http://deb.debian.org/debian unstable/main amd64 libmailtools-perl all 2.22-1 [88.8 kB] Get: 338 http://deb.debian.org/debian unstable/main amd64 libmime-tools-perl all 5.515-1 [203 kB] Get: 339 http://deb.debian.org/debian unstable/main amd64 libsuitesparseconfig7 amd64 1:7.8.3+dfsg-3 [23.9 kB] Get: 340 http://deb.debian.org/debian unstable/main amd64 libamd3 amd64 1:7.8.3+dfsg-3 [40.8 kB] Get: 341 http://deb.debian.org/debian unstable/main amd64 libblas3 amd64 3.12.1-2 [160 kB] Get: 342 http://deb.debian.org/debian unstable/main amd64 libgfortran5 amd64 14.2.0-17 [836 kB] Get: 343 http://deb.debian.org/debian unstable/main amd64 liblapack3 amd64 3.12.1-2 [2452 kB] Get: 344 http://deb.debian.org/debian unstable/main amd64 libarpack2t64 amd64 3.9.1-4 [104 kB] Get: 345 http://deb.debian.org/debian unstable/main amd64 libccolamd3 amd64 1:7.8.3+dfsg-3 [39.3 kB] Get: 346 http://deb.debian.org/debian unstable/main amd64 libcamd3 amd64 1:7.8.3+dfsg-3 [37.6 kB] Get: 347 http://deb.debian.org/debian unstable/main amd64 libcolamd3 amd64 1:7.8.3+dfsg-3 [32.6 kB] Get: 348 http://deb.debian.org/debian unstable/main amd64 libcholmod5 amd64 1:7.8.3+dfsg-3 [639 kB] Get: 349 http://deb.debian.org/debian unstable/main amd64 libcxsparse4 amd64 1:7.8.3+dfsg-3 [84.1 kB] Get: 350 http://deb.debian.org/debian unstable/main amd64 libfftw3-double3 amd64 3.3.10-2+b1 [781 kB] Get: 351 http://deb.debian.org/debian unstable/main amd64 libfftw3-single3 amd64 3.3.10-2+b1 [809 kB] Get: 352 http://deb.debian.org/debian unstable/main amd64 libxfixes3 amd64 1:6.0.0-2+b4 [20.2 kB] Get: 353 http://deb.debian.org/debian unstable/main amd64 libxcursor1 amd64 1:1.2.3-1 [39.7 kB] Get: 354 http://deb.debian.org/debian unstable/main amd64 libxft2 amd64 2.3.6-1+b4 [54.5 kB] Get: 355 http://deb.debian.org/debian unstable/main amd64 libxinerama1 amd64 2:1.1.4-3+b3 [16.0 kB] Get: 356 http://deb.debian.org/debian unstable/main amd64 libfltk1.3t64 amd64 1.3.8-6.1+b1 [556 kB] Get: 357 http://deb.debian.org/debian unstable/main amd64 libglvnd0 amd64 1.7.0-1+b2 [52.0 kB] Get: 358 http://deb.debian.org/debian unstable/main amd64 libdrm-common all 2.4.123-1 [8084 B] Get: 359 http://deb.debian.org/debian unstable/main amd64 libdrm2 amd64 2.4.123-1 [38.7 kB] Get: 360 http://deb.debian.org/debian unstable/main amd64 libglapi-mesa amd64 24.3.4-3 [38.5 kB] Get: 361 http://deb.debian.org/debian unstable/main amd64 libx11-xcb1 amd64 2:1.8.10-2 [241 kB] Get: 362 http://deb.debian.org/debian unstable/main amd64 libxcb-dri3-0 amd64 1.17.0-2+b1 [107 kB] Get: 363 http://deb.debian.org/debian unstable/main amd64 libxcb-glx0 amd64 1.17.0-2+b1 [122 kB] Get: 364 http://deb.debian.org/debian unstable/main amd64 libxcb-present0 amd64 1.17.0-2+b1 [106 kB] Get: 365 http://deb.debian.org/debian unstable/main amd64 libxcb-xfixes0 amd64 1.17.0-2+b1 [109 kB] Get: 366 http://deb.debian.org/debian unstable/main amd64 libxxf86vm1 amd64 1:1.1.4-1+b4 [19.3 kB] Get: 367 http://deb.debian.org/debian unstable/main amd64 libdrm-amdgpu1 amd64 2.4.123-1 [22.3 kB] Get: 368 http://deb.debian.org/debian unstable/main amd64 libpciaccess0 amd64 0.17-3+b3 [51.9 kB] Get: 369 http://deb.debian.org/debian unstable/main amd64 libdrm-intel1 amd64 2.4.123-1 [63.7 kB] Get: 370 http://deb.debian.org/debian unstable/main amd64 libdrm-radeon1 amd64 2.4.123-1 [22.3 kB] Get: 371 http://deb.debian.org/debian unstable/main amd64 libz3-4 amd64 4.13.3-1 [8560 kB] Get: 372 http://deb.debian.org/debian unstable/main amd64 libllvm19 amd64 1:19.1.7-1+b1 [26.0 MB] Get: 373 http://deb.debian.org/debian unstable/main amd64 libsensors-config all 1:3.6.0-10 [14.6 kB] Get: 374 http://deb.debian.org/debian unstable/main amd64 libsensors5 amd64 1:3.6.0-10+b1 [35.1 kB] Get: 375 http://deb.debian.org/debian unstable/main amd64 libxcb-randr0 amd64 1.17.0-2+b1 [117 kB] Get: 376 http://deb.debian.org/debian unstable/main amd64 libxcb-sync1 amd64 1.17.0-2+b1 [109 kB] Get: 377 http://deb.debian.org/debian unstable/main amd64 libxshmfence1 amd64 1.3-1+b3 [8852 B] Get: 378 http://deb.debian.org/debian unstable/main amd64 mesa-libgallium amd64 24.3.4-3 [9492 kB] Get: 379 http://deb.debian.org/debian unstable/main amd64 libwayland-server0 amd64 1.23.1-3 [34.4 kB] Get: 380 http://deb.debian.org/debian unstable/main amd64 libgbm1 amd64 24.3.4-3 [43.7 kB] Get: 381 http://deb.debian.org/debian unstable/main amd64 libvulkan1 amd64 1.4.304.0-1 [129 kB] Get: 382 http://deb.debian.org/debian unstable/main amd64 libgl1-mesa-dri amd64 24.3.4-3 [45.2 kB] Get: 383 http://deb.debian.org/debian unstable/main amd64 libglx-mesa0 amd64 24.3.4-3 [143 kB] Get: 384 http://deb.debian.org/debian unstable/main amd64 libglx0 amd64 1.7.0-1+b2 [34.9 kB] Get: 385 http://deb.debian.org/debian unstable/main amd64 libgl1 amd64 1.7.0-1+b2 [89.5 kB] Get: 386 http://deb.debian.org/debian unstable/main amd64 libfltk-gl1.3t64 amd64 1.3.8-6.1+b1 [63.0 kB] Get: 387 http://deb.debian.org/debian unstable/main amd64 libgl2ps1.4 amd64 1.4.2+dfsg1-2 [41.3 kB] Get: 388 http://deb.debian.org/debian unstable/main amd64 libltdl7 amd64 2.5.4-3 [415 kB] Get: 389 http://deb.debian.org/debian unstable/main amd64 libglpk40 amd64 5.0-1+b2 [401 kB] Get: 390 http://deb.debian.org/debian unstable/main amd64 libopengl0 amd64 1.7.0-1+b2 [30.9 kB] Get: 391 http://deb.debian.org/debian unstable/main amd64 libglu1-mesa amd64 9.0.2-1.1+b3 [184 kB] Get: 392 http://deb.debian.org/debian unstable/main amd64 libgif7 amd64 5.2.2-1+b1 [44.2 kB] Get: 393 http://deb.debian.org/debian unstable/main amd64 libhwy1t64 amd64 1.2.0-2+b2 [676 kB] Get: 394 http://deb.debian.org/debian unstable/main amd64 liblcms2-2 amd64 2.16-2 [160 kB] Get: 395 http://deb.debian.org/debian unstable/main amd64 libimath-3-1-29t64 amd64 3.1.12-1+b3 [45.5 kB] Get: 396 http://deb.debian.org/debian unstable/main amd64 libopenexr-3-1-30 amd64 3.1.5-5.1+b4 [935 kB] Get: 397 http://deb.debian.org/debian unstable/main amd64 libjxl0.10 amd64 0.10.4-2 [1096 kB] Get: 398 http://deb.debian.org/debian unstable/main amd64 libwmflite-0.2-7 amd64 0.2.13-1.1+b3 [75.6 kB] Get: 399 http://deb.debian.org/debian unstable/main amd64 libgraphicsmagick-q16-3t64 amd64 1.4+really1.3.45-1+b2 [1228 kB] Get: 400 http://deb.debian.org/debian unstable/main amd64 libgraphicsmagick++-q16-12t64 amd64 1.4+really1.3.45-1+b2 [126 kB] Get: 401 http://deb.debian.org/debian unstable/main amd64 libcurl4t64 amd64 8.12.1-2 [369 kB] Get: 402 http://deb.debian.org/debian unstable/main amd64 libaec0 amd64 1.1.3-1+b1 [23.8 kB] Get: 403 http://deb.debian.org/debian unstable/main amd64 libsz2 amd64 1.1.3-1+b1 [8080 B] Get: 404 http://deb.debian.org/debian unstable/main amd64 libhdf5-310 amd64 1.14.5+repack-3 [1344 kB] Get: 405 http://deb.debian.org/debian unstable/main amd64 libasound2-data all 1.2.13-1 [21.1 kB] Get: 406 http://deb.debian.org/debian unstable/main amd64 libasound2t64 amd64 1.2.13-1+b1 [373 kB] Get: 407 http://deb.debian.org/debian unstable/main amd64 libopus0 amd64 1.5.2-2 [2852 kB] Get: 408 http://deb.debian.org/debian unstable/main amd64 libsamplerate0 amd64 0.2.2-4+b2 [950 kB] Get: 409 http://deb.debian.org/debian unstable/main amd64 libjack-jackd2-0 amd64 1.9.22~dfsg-4 [287 kB] Get: 410 http://deb.debian.org/debian unstable/main amd64 libportaudio2 amd64 19.6.0-1.2+b3 [64.8 kB] Get: 411 http://deb.debian.org/debian unstable/main amd64 libqhull-r8.0 amd64 2020.2-6+b2 [248 kB] Get: 412 http://deb.debian.org/debian unstable/main amd64 libqrupdate1 amd64 1.1.5-1 [39.9 kB] Get: 413 http://deb.debian.org/debian unstable/main amd64 libqscintilla2-qt6-l10n all 2.14.1+dfsg-1 [105 kB] Get: 414 http://deb.debian.org/debian unstable/main amd64 libb2-1 amd64 0.98.1-1.1+b2 [41.7 kB] Get: 415 http://deb.debian.org/debian unstable/main amd64 libdouble-conversion3 amd64 3.3.1-1 [41.8 kB] Get: 416 http://deb.debian.org/debian unstable/main amd64 libpcre2-16-0 amd64 10.45-1 [281 kB] Get: 417 http://deb.debian.org/debian unstable/main amd64 libqt6core6t64 amd64 6.7.2+dfsg-6 [1799 kB] Get: 418 http://deb.debian.org/debian unstable/main amd64 libwayland-client0 amd64 1.23.1-3 [26.8 kB] Get: 419 http://deb.debian.org/debian unstable/main amd64 libegl-mesa0 amd64 24.3.4-3 [127 kB] Get: 420 http://deb.debian.org/debian unstable/main amd64 libegl1 amd64 1.7.0-1+b2 [34.6 kB] Get: 421 http://deb.debian.org/debian unstable/main amd64 x11-common all 1:7.7+24 [217 kB] Get: 422 http://deb.debian.org/debian unstable/main amd64 libice6 amd64 2:1.1.1-1 [65.4 kB] Get: 423 http://deb.debian.org/debian unstable/main amd64 libevdev2 amd64 1.13.3+dfsg-1 [32.2 kB] Get: 424 http://deb.debian.org/debian unstable/main amd64 libmtdev1t64 amd64 1.1.7-1 [22.6 kB] Get: 425 http://deb.debian.org/debian unstable/main amd64 libgudev-1.0-0 amd64 238-6 [14.5 kB] Get: 426 http://deb.debian.org/debian unstable/main amd64 libwacom-common all 2.14.0-1 [103 kB] Get: 427 http://deb.debian.org/debian unstable/main amd64 libwacom9 amd64 2.14.0-1 [25.3 kB] Get: 428 http://deb.debian.org/debian unstable/main amd64 libinput-bin amd64 1.27.1-1 [26.0 kB] Get: 429 http://deb.debian.org/debian unstable/main amd64 libinput10 amd64 1.27.1-1 [135 kB] Get: 430 http://deb.debian.org/debian unstable/main amd64 libmd4c0 amd64 0.5.2-2+b1 [49.0 kB] Get: 431 http://deb.debian.org/debian unstable/main amd64 libdbus-1-3 amd64 1.16.0-1 [177 kB] Get: 432 http://deb.debian.org/debian unstable/main amd64 libqt6dbus6 amd64 6.7.2+dfsg-6 [260 kB] Get: 433 http://deb.debian.org/debian unstable/main amd64 libsm6 amd64 2:1.2.4-1 [35.2 kB] Get: 434 http://deb.debian.org/debian unstable/main amd64 libts0t64 amd64 1.22-1.1+b1 [61.7 kB] Get: 435 http://deb.debian.org/debian unstable/main amd64 libxcb-util1 amd64 0.4.1-1 [23.5 kB] Get: 436 http://deb.debian.org/debian unstable/main amd64 libxcb-image0 amd64 0.4.0-2+b2 [22.2 kB] Get: 437 http://deb.debian.org/debian unstable/main amd64 libxcb-render-util0 amd64 0.3.10-1 [18.4 kB] Get: 438 http://deb.debian.org/debian unstable/main amd64 libxcb-cursor0 amd64 0.1.5-1 [17.1 kB] Get: 439 http://deb.debian.org/debian unstable/main amd64 libxcb-icccm4 amd64 0.4.2-1 [27.5 kB] Get: 440 http://deb.debian.org/debian unstable/main amd64 libxcb-keysyms1 amd64 0.4.1-1 [16.7 kB] Get: 441 http://deb.debian.org/debian unstable/main amd64 libxcb-shape0 amd64 1.17.0-2+b1 [106 kB] Get: 442 http://deb.debian.org/debian unstable/main amd64 libxcb-xinput0 amd64 1.17.0-2+b1 [130 kB] Get: 443 http://deb.debian.org/debian unstable/main amd64 libxcb-xkb1 amd64 1.17.0-2+b1 [130 kB] Get: 444 http://deb.debian.org/debian unstable/main amd64 xkb-data all 2.42-1 [790 kB] Get: 445 http://deb.debian.org/debian unstable/main amd64 libxkbcommon0 amd64 1.7.0-2 [113 kB] Get: 446 http://deb.debian.org/debian unstable/main amd64 libxkbcommon-x11-0 amd64 1.7.0-2 [16.2 kB] Get: 447 http://deb.debian.org/debian unstable/main amd64 libqt6gui6 amd64 6.7.2+dfsg-6 [3019 kB] Get: 448 http://deb.debian.org/debian unstable/main amd64 libavahi-common-data amd64 0.8-16 [112 kB] Get: 449 http://deb.debian.org/debian unstable/main amd64 libavahi-common3 amd64 0.8-16 [44.2 kB] Get: 450 http://deb.debian.org/debian unstable/main amd64 libavahi-client3 amd64 0.8-16 [48.4 kB] Get: 451 http://deb.debian.org/debian unstable/main amd64 libcups2t64 amd64 2.4.10-2+b1 [251 kB] Get: 452 http://deb.debian.org/debian unstable/main amd64 libqt6widgets6 amd64 6.7.2+dfsg-6 [2586 kB] Get: 453 http://deb.debian.org/debian unstable/main amd64 libqt6printsupport6 amd64 6.7.2+dfsg-6 [214 kB] Get: 454 http://deb.debian.org/debian unstable/main amd64 libqscintilla2-qt6-15 amd64 2.14.1+dfsg-1+b4 [1174 kB] Get: 455 http://deb.debian.org/debian unstable/main amd64 libqt6core5compat6 amd64 6.7.2-3 [135 kB] Get: 456 http://deb.debian.org/debian unstable/main amd64 libqt6sql6 amd64 6.7.2+dfsg-6 [138 kB] Get: 457 http://deb.debian.org/debian unstable/main amd64 libqt6help6 amd64 6.7.2-6 [180 kB] Get: 458 http://deb.debian.org/debian unstable/main amd64 libduktape207 amd64 2.7.0-2+b2 [135 kB] Get: 459 http://deb.debian.org/debian unstable/main amd64 libproxy1v5 amd64 0.5.9-1 [26.4 kB] Get: 460 http://deb.debian.org/debian unstable/main amd64 libqt6network6 amd64 6.7.2+dfsg-6 [766 kB] Get: 461 http://deb.debian.org/debian unstable/main amd64 libqt6opengl6 amd64 6.7.2+dfsg-6 [405 kB] Get: 462 http://deb.debian.org/debian unstable/main amd64 libqt6openglwidgets6 amd64 6.7.2+dfsg-6 [49.3 kB] Get: 463 http://deb.debian.org/debian unstable/main amd64 libqt6xml6 amd64 6.7.2+dfsg-6 [83.7 kB] Get: 464 http://deb.debian.org/debian unstable/main amd64 libogg0 amd64 1.3.5-3+b2 [23.8 kB] Get: 465 http://deb.debian.org/debian unstable/main amd64 libflac12t64 amd64 1.4.3+ds-4 [201 kB] Get: 466 http://deb.debian.org/debian unstable/main amd64 libmp3lame0 amd64 3.100-6+b3 [363 kB] Get: 467 http://deb.debian.org/debian unstable/main amd64 libmpg123-0t64 amd64 1.32.10-1 [149 kB] Get: 468 http://deb.debian.org/debian unstable/main amd64 libvorbis0a amd64 1.3.7-2+b1 [91.1 kB] Get: 469 http://deb.debian.org/debian unstable/main amd64 libvorbisenc2 amd64 1.3.7-2+b1 [76.1 kB] Get: 470 http://deb.debian.org/debian unstable/main amd64 libsndfile1 amd64 1.2.2-2 [199 kB] Get: 471 http://deb.debian.org/debian unstable/main amd64 libspqr4 amd64 1:7.8.3+dfsg-3 [146 kB] Get: 472 http://deb.debian.org/debian unstable/main amd64 libumfpack6 amd64 1:7.8.3+dfsg-3 [280 kB] Get: 473 http://deb.debian.org/debian unstable/main amd64 libtext-unidecode-perl all 1.30-3 [101 kB] Get: 474 http://deb.debian.org/debian unstable/main amd64 texinfo-lib amd64 7.1.1-1+b1 [232 kB] Get: 475 http://deb.debian.org/debian unstable/main amd64 tex-common all 6.18 [32.5 kB] Get: 476 http://deb.debian.org/debian unstable/main amd64 texinfo all 7.1.1-1 [1753 kB] Get: 477 http://deb.debian.org/debian unstable/main amd64 octave-common all 9.4.0-1 [6593 kB] Get: 478 http://deb.debian.org/debian unstable/main amd64 octave amd64 9.4.0-1 [9740 kB] Get: 479 http://deb.debian.org/debian unstable/main amd64 libncurses6 amd64 6.5+20250216-1 [105 kB] Get: 480 http://deb.debian.org/debian unstable/main amd64 libncurses-dev amd64 6.5+20250216-1 [353 kB] Get: 481 http://deb.debian.org/debian unstable/main amd64 libreadline-dev amd64 8.2-6 [153 kB] Get: 482 http://deb.debian.org/debian unstable/main amd64 libhdf5-fortran-310 amd64 1.14.5+repack-3 [111 kB] Get: 483 http://deb.debian.org/debian unstable/main amd64 libhdf5-hl-310 amd64 1.14.5+repack-3 [69.3 kB] Get: 484 http://deb.debian.org/debian unstable/main amd64 libhdf5-hl-fortran-310 amd64 1.14.5+repack-3 [43.9 kB] Get: 485 http://deb.debian.org/debian unstable/main amd64 libhdf5-cpp-310 amd64 1.14.5+repack-3 [133 kB] Get: 486 http://deb.debian.org/debian unstable/main amd64 libhdf5-hl-cpp-310 amd64 1.14.5+repack-3 [24.4 kB] Get: 487 http://deb.debian.org/debian unstable/main amd64 zlib1g-dev amd64 1:1.3.dfsg+really1.3.1-1+b1 [920 kB] Get: 488 http://deb.debian.org/debian unstable/main amd64 libjpeg62-turbo-dev amd64 1:2.1.5-3+b1 [292 kB] Get: 489 http://deb.debian.org/debian unstable/main amd64 libjpeg-dev amd64 1:2.1.5-3+b1 [72.2 kB] Get: 490 http://deb.debian.org/debian unstable/main amd64 libaec-dev amd64 1.1.3-1+b1 [21.5 kB] Get: 491 http://deb.debian.org/debian unstable/main amd64 libbrotli-dev amd64 1.1.0-2+b6 [316 kB] Get: 492 http://deb.debian.org/debian unstable/main amd64 libidn2-dev amd64 2.3.7-2+b1 [123 kB] Get: 493 http://deb.debian.org/debian unstable/main amd64 libgssrpc4t64 amd64 1.21.3-4 [60.0 kB] Get: 494 http://deb.debian.org/debian unstable/main amd64 libkadm5clnt-mit12 amd64 1.21.3-4 [42.2 kB] Get: 495 http://deb.debian.org/debian unstable/main amd64 libkdb5-10t64 amd64 1.21.3-4 [42.4 kB] Get: 496 http://deb.debian.org/debian unstable/main amd64 libkadm5srv-mit12 amd64 1.21.3-4 [54.2 kB] Get: 497 http://deb.debian.org/debian unstable/main amd64 krb5-multidev amd64 1.21.3-4 [126 kB] Get: 498 http://deb.debian.org/debian unstable/main amd64 libkrb5-dev amd64 1.21.3-4 [15.9 kB] Get: 499 http://deb.debian.org/debian unstable/main amd64 libldap-dev amd64 2.6.9+dfsg-1 [307 kB] Get: 500 http://deb.debian.org/debian unstable/main amd64 libpkgconf3 amd64 1.8.1-4 [36.4 kB] Get: 501 http://deb.debian.org/debian unstable/main amd64 pkgconf-bin amd64 1.8.1-4 [30.2 kB] Get: 502 http://deb.debian.org/debian unstable/main amd64 pkgconf amd64 1.8.1-4 [26.2 kB] Get: 503 http://deb.debian.org/debian unstable/main amd64 libnghttp2-dev amd64 1.64.0-1 [115 kB] Get: 504 http://deb.debian.org/debian unstable/main amd64 libnghttp3-dev amd64 1.6.0-2 [88.5 kB] Get: 505 http://deb.debian.org/debian unstable/main amd64 libpsl-dev amd64 0.21.2-1.1+b1 [77.6 kB] Get: 506 http://deb.debian.org/debian unstable/main amd64 libgmpxx4ldbl amd64 2:6.3.0+dfsg-3 [329 kB] Get: 507 http://deb.debian.org/debian unstable/main amd64 libgmp-dev amd64 2:6.3.0+dfsg-3 [642 kB] Get: 508 http://deb.debian.org/debian unstable/main amd64 libevent-2.1-7t64 amd64 2.1.12-stable-10+b1 [182 kB] Get: 509 http://deb.debian.org/debian unstable/main amd64 libunbound8 amd64 1.22.0-1+b1 [598 kB] Get: 510 http://deb.debian.org/debian unstable/main amd64 libgnutls-dane0t64 amd64 3.8.9-2 [455 kB] Get: 511 http://deb.debian.org/debian unstable/main amd64 libgnutls-openssl27t64 amd64 3.8.9-2 [455 kB] Get: 512 http://deb.debian.org/debian unstable/main amd64 libp11-kit-dev amd64 0.25.5-3 [208 kB] Get: 513 http://deb.debian.org/debian unstable/main amd64 libtasn1-6-dev amd64 4.20.0-2 [99.2 kB] Get: 514 http://deb.debian.org/debian unstable/main amd64 nettle-dev amd64 3.10.1-1 [1318 kB] Get: 515 http://deb.debian.org/debian unstable/main amd64 libgnutls28-dev amd64 3.8.9-2 [1401 kB] Get: 516 http://deb.debian.org/debian unstable/main amd64 librtmp-dev amd64 2.4+20151223.gitfa8646d.1-2+b5 [68.0 kB] Get: 517 http://deb.debian.org/debian unstable/main amd64 libssl-dev amd64 3.4.1-1 [2787 kB] Get: 518 http://deb.debian.org/debian unstable/main amd64 libssh2-1-dev amd64 1.11.1-1 [393 kB] Get: 519 http://deb.debian.org/debian unstable/main amd64 libzstd-dev amd64 1.5.6+dfsg-2 [365 kB] Get: 520 http://deb.debian.org/debian unstable/main amd64 libcurl4-openssl-dev amd64 8.12.1-2 [483 kB] Get: 521 http://deb.debian.org/debian unstable/main amd64 hdf5-helpers amd64 1.14.5+repack-3 [26.6 kB] Get: 522 http://deb.debian.org/debian unstable/main amd64 libhdf5-dev amd64 1.14.5+repack-3 [3165 kB] Get: 523 http://deb.debian.org/debian unstable/main amd64 xorg-sgml-doctools all 1:1.11-1.1 [22.1 kB] Get: 524 http://deb.debian.org/debian unstable/main amd64 x11proto-dev all 2024.1-1 [603 kB] Get: 525 http://deb.debian.org/debian unstable/main amd64 libxau-dev amd64 1:1.0.11-1 [23.6 kB] Get: 526 http://deb.debian.org/debian unstable/main amd64 libxdmcp-dev amd64 1:1.1.5-1 [44.3 kB] Get: 527 http://deb.debian.org/debian unstable/main amd64 xtrans-dev all 1.4.0-1 [98.7 kB] Get: 528 http://deb.debian.org/debian unstable/main amd64 libxcb1-dev amd64 1.17.0-2+b1 [181 kB] Get: 529 http://deb.debian.org/debian unstable/main amd64 libx11-dev amd64 2:1.8.10-2 [891 kB] Get: 530 http://deb.debian.org/debian unstable/main amd64 libglx-dev amd64 1.7.0-1+b2 [15.8 kB] Get: 531 http://deb.debian.org/debian unstable/main amd64 libgl-dev amd64 1.7.0-1+b2 [101 kB] Get: 532 http://deb.debian.org/debian unstable/main amd64 libblas-dev amd64 3.12.1-2 [170 kB] Get: 533 http://deb.debian.org/debian unstable/main amd64 liblapack-dev amd64 3.12.1-2 [4998 kB] Get: 534 http://deb.debian.org/debian unstable/main amd64 libfftw3-long3 amd64 3.3.10-2+b1 [347 kB] Get: 535 http://deb.debian.org/debian unstable/main amd64 libfftw3-quad3 amd64 3.3.10-2+b1 [618 kB] Get: 536 http://deb.debian.org/debian unstable/main amd64 libfftw3-bin amd64 3.3.10-2+b1 [51.3 kB] Get: 537 http://deb.debian.org/debian unstable/main amd64 libfftw3-dev amd64 3.3.10-2+b1 [2118 kB] Get: 538 http://deb.debian.org/debian unstable/main amd64 libgfortran-14-dev amd64 14.2.0-17 [879 kB] Get: 539 http://deb.debian.org/debian unstable/main amd64 gfortran-14-x86-64-linux-gnu amd64 14.2.0-17 [11.7 MB] Get: 540 http://deb.debian.org/debian unstable/main amd64 gfortran-14 amd64 14.2.0-17 [14.0 kB] Get: 541 http://deb.debian.org/debian unstable/main amd64 gfortran-x86-64-linux-gnu amd64 4:14.2.0-1 [1284 B] Get: 542 http://deb.debian.org/debian unstable/main amd64 gfortran amd64 4:14.2.0-1 [1436 B] Get: 543 http://deb.debian.org/debian unstable/main amd64 octave-dev amd64 9.4.0-1 [1007 kB] Get: 544 http://deb.debian.org/debian unstable/main amd64 dh-octave all 1.8.0 [22.7 kB] Get: 545 http://deb.debian.org/debian unstable/main amd64 python3-mpmath all 1.3.0-1 [419 kB] Get: 546 http://deb.debian.org/debian unstable/main amd64 python3-packaging all 24.2-1 [55.3 kB] Get: 547 http://deb.debian.org/debian unstable/main amd64 python3-sympy all 1.13.3-3 [4148 kB] Fetched 219 MB in 23s (9401 kB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal: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 ... 19798 files and directories currently installed.) Preparing to unpack .../libpython3.13-minimal_3.13.2-1_amd64.deb ... Unpacking libpython3.13-minimal:amd64 (3.13.2-1) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.6.4-1_amd64.deb ... Unpacking libexpat1:amd64 (2.6.4-1) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.2-1_amd64.deb ... Unpacking python3.13-minimal (3.13.2-1) ... Setting up libpython3.13-minimal:amd64 (3.13.2-1) ... Setting up libexpat1:amd64 (2.6.4-1) ... Setting up python3.13-minimal (3.13.2-1) ... Selecting previously unselected package python3-minimal. (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 ... 20132 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.1-2_amd64.deb ... Unpacking python3-minimal (3.13.1-2) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_11.0.0_all.deb ... Unpacking media-types (11.0.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2025a-2_all.deb ... Unpacking tzdata (2025a-2) ... Selecting previously unselected package libffi8:amd64. Preparing to unpack .../4-libffi8_3.4.7-1_amd64.deb ... Unpacking libffi8:amd64 (3.4.7-1) ... Selecting previously unselected package readline-common. Preparing to unpack .../5-readline-common_8.2-6_all.deb ... Unpacking readline-common (8.2-6) ... Selecting previously unselected package libreadline8t64:amd64. Preparing to unpack .../6-libreadline8t64_8.2-6_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:amd64 (8.2-6) ... Selecting previously unselected package libpython3.13-stdlib:amd64. Preparing to unpack .../7-libpython3.13-stdlib_3.13.2-1_amd64.deb ... Unpacking libpython3.13-stdlib:amd64 (3.13.2-1) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.2-1_amd64.deb ... Unpacking python3.13 (3.13.2-1) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../9-libpython3-stdlib_3.13.1-2_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.13.1-2) ... Setting up python3-minimal (3.13.1-2) ... Selecting previously unselected package python3. (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 ... 21142 files and directories currently installed.) Preparing to unpack .../000-python3_3.13.1-2_amd64.deb ... Unpacking python3 (3.13.1-2) ... Selecting previously unselected package libproc2-0:amd64. Preparing to unpack .../001-libproc2-0_2%3a4.0.4-7_amd64.deb ... Unpacking libproc2-0:amd64 (2:4.0.4-7) ... Selecting previously unselected package procps. Preparing to unpack .../002-procps_2%3a4.0.4-7_amd64.deb ... Unpacking procps (2:4.0.4-7) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../003-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package openssl. Preparing to unpack .../004-openssl_3.4.1-1_amd64.deb ... Unpacking openssl (3.4.1-1) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../005-ca-certificates_20241223_all.deb ... Unpacking ca-certificates (20241223) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../006-libmagic-mgc_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../007-libmagic1t64_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../008-file_1%3a5.45-3+b1_amd64.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../009-gettext-base_0.23.1-1_amd64.deb ... Unpacking gettext-base (0.23.1-1) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../010-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../011-groff-base_1.23.0-7_amd64.deb ... Unpacking groff-base (1.23.0-7) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../012-bsdextrautils_2.40.4-4_amd64.deb ... Unpacking bsdextrautils (2.40.4-4) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../013-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../014-man-db_2.13.0-1_amd64.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package libtext-charwidth-perl:amd64. Preparing to unpack .../015-libtext-charwidth-perl_0.04-11+b4_amd64.deb ... Unpacking libtext-charwidth-perl:amd64 (0.04-11+b4) ... Selecting previously unselected package libtext-wrapi18n-perl. Preparing to unpack .../016-libtext-wrapi18n-perl_0.06-10_all.deb ... Unpacking libtext-wrapi18n-perl (0.06-10) ... Selecting previously unselected package ucf. Preparing to unpack .../017-ucf_3.0050_all.deb ... Moving old data out of the way Unpacking ucf (3.0050) ... Selecting previously unselected package aglfn. Preparing to unpack .../018-aglfn_1.7+git20191031.4036a9c-2_all.deb ... Unpacking aglfn (1.7+git20191031.4036a9c-2) ... Selecting previously unselected package libglib2.0-0t64:amd64. Preparing to unpack .../019-libglib2.0-0t64_2.83.3-2_amd64.deb ... Unpacking libglib2.0-0t64:amd64 (2.83.3-2) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../020-libicu72_72.1-6_amd64.deb ... Unpacking libicu72:amd64 (72.1-6) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../021-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package shared-mime-info. Preparing to unpack .../022-shared-mime-info_2.4-5+b2_amd64.deb ... Unpacking shared-mime-info (2.4-5+b2) ... Selecting previously unselected package libbrotli1:amd64. Preparing to unpack .../023-libbrotli1_1.1.0-2+b6_amd64.deb ... Unpacking libbrotli1:amd64 (1.1.0-2+b6) ... Selecting previously unselected package libunistring5:amd64. Preparing to unpack .../024-libunistring5_1.3-1_amd64.deb ... Unpacking libunistring5:amd64 (1.3-1) ... Selecting previously unselected package libidn2-0:amd64. Preparing to unpack .../025-libidn2-0_2.3.7-2+b1_amd64.deb ... Unpacking libidn2-0:amd64 (2.3.7-2+b1) ... Selecting previously unselected package libp11-kit0:amd64. Preparing to unpack .../026-libp11-kit0_0.25.5-3_amd64.deb ... Unpacking libp11-kit0:amd64 (0.25.5-3) ... Selecting previously unselected package libtasn1-6:amd64. Preparing to unpack .../027-libtasn1-6_4.20.0-2_amd64.deb ... Unpacking libtasn1-6:amd64 (4.20.0-2) ... Selecting previously unselected package libgnutls30t64:amd64. Preparing to unpack .../028-libgnutls30t64_3.8.9-2_amd64.deb ... Unpacking libgnutls30t64:amd64 (3.8.9-2) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../029-libkrb5support0_1.21.3-4_amd64.deb ... Unpacking libkrb5support0:amd64 (1.21.3-4) ... Selecting previously unselected package libcom-err2:amd64. Preparing to unpack .../030-libcom-err2_1.47.2-1_amd64.deb ... Unpacking libcom-err2:amd64 (1.47.2-1) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../031-libk5crypto3_1.21.3-4_amd64.deb ... Unpacking libk5crypto3:amd64 (1.21.3-4) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../032-libkeyutils1_1.6.3-4_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6.3-4) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../033-libkrb5-3_1.21.3-4_amd64.deb ... Unpacking libkrb5-3:amd64 (1.21.3-4) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../034-libgssapi-krb5-2_1.21.3-4_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.21.3-4) ... Selecting previously unselected package libsasl2-modules-db:amd64. Preparing to unpack .../035-libsasl2-modules-db_2.1.28+dfsg1-8+b1_amd64.deb ... Unpacking libsasl2-modules-db:amd64 (2.1.28+dfsg1-8+b1) ... Selecting previously unselected package libsasl2-2:amd64. Preparing to unpack .../036-libsasl2-2_2.1.28+dfsg1-8+b1_amd64.deb ... Unpacking libsasl2-2:amd64 (2.1.28+dfsg1-8+b1) ... Selecting previously unselected package libldap2:amd64. Preparing to unpack .../037-libldap2_2.6.9+dfsg-1_amd64.deb ... Unpacking libldap2:amd64 (2.6.9+dfsg-1) ... Selecting previously unselected package libnghttp2-14:amd64. Preparing to unpack .../038-libnghttp2-14_1.64.0-1_amd64.deb ... Unpacking libnghttp2-14:amd64 (1.64.0-1) ... Selecting previously unselected package libnghttp3-9:amd64. Preparing to unpack .../039-libnghttp3-9_1.6.0-2_amd64.deb ... Unpacking libnghttp3-9:amd64 (1.6.0-2) ... Selecting previously unselected package libngtcp2-16:amd64. Preparing to unpack .../040-libngtcp2-16_1.9.1-1_amd64.deb ... Unpacking libngtcp2-16:amd64 (1.9.1-1) ... Selecting previously unselected package libngtcp2-crypto-gnutls8:amd64. Preparing to unpack .../041-libngtcp2-crypto-gnutls8_1.9.1-1_amd64.deb ... Unpacking libngtcp2-crypto-gnutls8:amd64 (1.9.1-1) ... Selecting previously unselected package libpsl5t64:amd64. Preparing to unpack .../042-libpsl5t64_0.21.2-1.1+b1_amd64.deb ... Unpacking libpsl5t64:amd64 (0.21.2-1.1+b1) ... Selecting previously unselected package librtmp1:amd64. Preparing to unpack .../043-librtmp1_2.4+20151223.gitfa8646d.1-2+b5_amd64.deb ... Unpacking librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Selecting previously unselected package libssh2-1t64:amd64. Preparing to unpack .../044-libssh2-1t64_1.11.1-1_amd64.deb ... Unpacking libssh2-1t64:amd64 (1.11.1-1) ... Selecting previously unselected package libcurl3t64-gnutls:amd64. Preparing to unpack .../045-libcurl3t64-gnutls_8.12.1-2_amd64.deb ... Unpacking libcurl3t64-gnutls:amd64 (8.12.1-2) ... Selecting previously unselected package libstemmer0d:amd64. Preparing to unpack .../046-libstemmer0d_2.2.0-4+b2_amd64.deb ... Unpacking libstemmer0d:amd64 (2.2.0-4+b2) ... Selecting previously unselected package libxmlb2:amd64. Preparing to unpack .../047-libxmlb2_0.3.21-1_amd64.deb ... Unpacking libxmlb2:amd64 (0.3.21-1) ... Selecting previously unselected package libyaml-0-2:amd64. Preparing to unpack .../048-libyaml-0-2_0.2.5-2_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.2.5-2) ... Selecting previously unselected package libappstream5:amd64. Preparing to unpack .../049-libappstream5_1.0.4-1_amd64.deb ... Unpacking libappstream5:amd64 (1.0.4-1) ... Selecting previously unselected package appstream. Preparing to unpack .../050-appstream_1.0.4-1_amd64.deb ... Unpacking appstream (1.0.4-1) ... Selecting previously unselected package m4. Preparing to unpack .../051-m4_1.4.19-5_amd64.deb ... Unpacking m4 (1.4.19-5) ... Selecting previously unselected package autoconf. Preparing to unpack .../052-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../053-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../054-automake_1%3a1.17-3_all.deb ... Unpacking automake (1:1.17-3) ... Selecting previously unselected package autopoint. Preparing to unpack .../055-autopoint_0.23.1-1_all.deb ... Unpacking autopoint (0.23.1-1) ... Selecting previously unselected package libcapture-tiny-perl. Preparing to unpack .../056-libcapture-tiny-perl_0.50-1_all.deb ... Unpacking libcapture-tiny-perl (0.50-1) ... Selecting previously unselected package libparams-util-perl. Preparing to unpack .../057-libparams-util-perl_1.102-3+b1_amd64.deb ... Unpacking libparams-util-perl (1.102-3+b1) ... Selecting previously unselected package libsub-install-perl. Preparing to unpack .../058-libsub-install-perl_0.929-1_all.deb ... Unpacking libsub-install-perl (0.929-1) ... Selecting previously unselected package libdata-optlist-perl. Preparing to unpack .../059-libdata-optlist-perl_0.114-1_all.deb ... Unpacking libdata-optlist-perl (0.114-1) ... Selecting previously unselected package libb-hooks-op-check-perl:amd64. Preparing to unpack .../060-libb-hooks-op-check-perl_0.22-3+b2_amd64.deb ... Unpacking libb-hooks-op-check-perl:amd64 (0.22-3+b2) ... Selecting previously unselected package libdynaloader-functions-perl. Preparing to unpack .../061-libdynaloader-functions-perl_0.004-1_all.deb ... Unpacking libdynaloader-functions-perl (0.004-1) ... Selecting previously unselected package libdevel-callchecker-perl:amd64. Preparing to unpack .../062-libdevel-callchecker-perl_0.009-1+b1_amd64.deb ... Unpacking libdevel-callchecker-perl:amd64 (0.009-1+b1) ... Selecting previously unselected package libparams-classify-perl:amd64. Preparing to unpack .../063-libparams-classify-perl_0.015-2+b4_amd64.deb ... Unpacking libparams-classify-perl:amd64 (0.015-2+b4) ... Selecting previously unselected package libmodule-runtime-perl. Preparing to unpack .../064-libmodule-runtime-perl_0.016-2_all.deb ... Unpacking libmodule-runtime-perl (0.016-2) ... Selecting previously unselected package libtry-tiny-perl. Preparing to unpack .../065-libtry-tiny-perl_0.32-1_all.deb ... Unpacking libtry-tiny-perl (0.32-1) ... Selecting previously unselected package libmodule-implementation-perl. Preparing to unpack .../066-libmodule-implementation-perl_0.09-2_all.deb ... Unpacking libmodule-implementation-perl (0.09-2) ... Selecting previously unselected package libpackage-stash-perl. Preparing to unpack .../067-libpackage-stash-perl_0.40-1_all.deb ... Unpacking libpackage-stash-perl (0.40-1) ... Selecting previously unselected package libclass-load-perl. Preparing to unpack .../068-libclass-load-perl_0.25-2_all.deb ... Unpacking libclass-load-perl (0.25-2) ... Selecting previously unselected package libio-stringy-perl. Preparing to unpack .../069-libio-stringy-perl_2.113-2_all.deb ... Unpacking libio-stringy-perl (2.113-2) ... Selecting previously unselected package libparams-validate-perl:amd64. Preparing to unpack .../070-libparams-validate-perl_1.31-2+b3_amd64.deb ... Unpacking libparams-validate-perl:amd64 (1.31-2+b3) ... Selecting previously unselected package libsub-exporter-perl. Preparing to unpack .../071-libsub-exporter-perl_0.990-1_all.deb ... Unpacking libsub-exporter-perl (0.990-1) ... Selecting previously unselected package libgetopt-long-descriptive-perl. Preparing to unpack .../072-libgetopt-long-descriptive-perl_0.116-2_all.deb ... Unpacking libgetopt-long-descriptive-perl (0.116-2) ... Selecting previously unselected package libio-tiecombine-perl. Preparing to unpack .../073-libio-tiecombine-perl_1.005-3_all.deb ... Unpacking libio-tiecombine-perl (1.005-3) ... Selecting previously unselected package libmodule-pluggable-perl. Preparing to unpack .../074-libmodule-pluggable-perl_5.2-5_all.deb ... Unpacking libmodule-pluggable-perl (5.2-5) ... Selecting previously unselected package libstring-rewriteprefix-perl. Preparing to unpack .../075-libstring-rewriteprefix-perl_0.009-1_all.deb ... Unpacking libstring-rewriteprefix-perl (0.009-1) ... Selecting previously unselected package libapp-cmd-perl. Preparing to unpack .../076-libapp-cmd-perl_0.337-2_all.deb ... Unpacking libapp-cmd-perl (0.337-2) ... Selecting previously unselected package libboolean-perl. Preparing to unpack .../077-libboolean-perl_0.46-3_all.deb ... Unpacking libboolean-perl (0.46-3) ... Selecting previously unselected package libsub-uplevel-perl. Preparing to unpack .../078-libsub-uplevel-perl_0.2800-3_all.deb ... Unpacking libsub-uplevel-perl (0.2800-3) ... Selecting previously unselected package libtest-exception-perl. Preparing to unpack .../079-libtest-exception-perl_0.43-3_all.deb ... Unpacking libtest-exception-perl (0.43-3) ... Selecting previously unselected package libcarp-assert-more-perl. Preparing to unpack .../080-libcarp-assert-more-perl_2.8.0-1_all.deb ... Unpacking libcarp-assert-more-perl (2.8.0-1) ... Selecting previously unselected package libfile-which-perl. Preparing to unpack .../081-libfile-which-perl_1.27-2_all.deb ... Unpacking libfile-which-perl (1.27-2) ... Selecting previously unselected package libfile-homedir-perl. Preparing to unpack .../082-libfile-homedir-perl_1.006-2_all.deb ... Unpacking libfile-homedir-perl (1.006-2) ... Selecting previously unselected package libclone-choose-perl. Preparing to unpack .../083-libclone-choose-perl_0.010-2_all.deb ... Unpacking libclone-choose-perl (0.010-2) ... Selecting previously unselected package libhash-merge-perl. Preparing to unpack .../084-libhash-merge-perl_0.302-1_all.deb ... Unpacking libhash-merge-perl (0.302-1) ... Selecting previously unselected package libjson-perl. Preparing to unpack .../085-libjson-perl_4.10000-1_all.deb ... Unpacking libjson-perl (4.10000-1) ... Selecting previously unselected package libexporter-tiny-perl. Preparing to unpack .../086-libexporter-tiny-perl_1.006002-1_all.deb ... Unpacking libexporter-tiny-perl (1.006002-1) ... Selecting previously unselected package liblist-moreutils-xs-perl. Preparing to unpack .../087-liblist-moreutils-xs-perl_0.430-4+b2_amd64.deb ... Unpacking liblist-moreutils-xs-perl (0.430-4+b2) ... Selecting previously unselected package liblist-moreutils-perl. Preparing to unpack .../088-liblist-moreutils-perl_0.430-2_all.deb ... Unpacking liblist-moreutils-perl (0.430-2) ... Selecting previously unselected package liblog-log4perl-perl. Preparing to unpack .../089-liblog-log4perl-perl_1.57-1_all.deb ... Unpacking liblog-log4perl-perl (1.57-1) ... Selecting previously unselected package libmouse-perl:amd64. Preparing to unpack .../090-libmouse-perl_2.5.11-1+b1_amd64.deb ... Unpacking libmouse-perl:amd64 (2.5.11-1+b1) ... Selecting previously unselected package libmousex-nativetraits-perl. Preparing to unpack .../091-libmousex-nativetraits-perl_1.09-3_all.deb ... Unpacking libmousex-nativetraits-perl (1.09-3) ... Selecting previously unselected package libmousex-strictconstructor-perl. Preparing to unpack .../092-libmousex-strictconstructor-perl_0.02-3_all.deb ... Unpacking libmousex-strictconstructor-perl (0.02-3) ... Selecting previously unselected package libparse-recdescent-perl. Preparing to unpack .../093-libparse-recdescent-perl_1.967015+dfsg-4_all.deb ... Unpacking libparse-recdescent-perl (1.967015+dfsg-4) ... Selecting previously unselected package libpath-tiny-perl. Preparing to unpack .../094-libpath-tiny-perl_0.146-1_all.deb ... Unpacking libpath-tiny-perl (0.146-1) ... Selecting previously unselected package libpod-pom-perl. Preparing to unpack .../095-libpod-pom-perl_2.01-4_all.deb ... Unpacking libpod-pom-perl (2.01-4) ... Selecting previously unselected package libregexp-common-perl. Preparing to unpack .../096-libregexp-common-perl_2024080801-1_all.deb ... Unpacking libregexp-common-perl (2024080801-1) ... Selecting previously unselected package libyaml-tiny-perl. Preparing to unpack .../097-libyaml-tiny-perl_1.76-1_all.deb ... Unpacking libyaml-tiny-perl (1.76-1) ... Selecting previously unselected package libconfig-model-perl. Preparing to unpack .../098-libconfig-model-perl_2.155-1_all.deb ... Unpacking libconfig-model-perl (2.155-1) ... Selecting previously unselected package libyaml-pp-perl. Preparing to unpack .../099-libyaml-pp-perl_0.39.0-1_all.deb ... Unpacking libyaml-pp-perl (0.39.0-1) ... Selecting previously unselected package cme. Preparing to unpack .../100-cme_1.041-1_all.deb ... Unpacking cme (1.041-1) ... Selecting previously unselected package comerr-dev:amd64. Preparing to unpack .../101-comerr-dev_2.1-1.47.2-1_amd64.deb ... Unpacking comerr-dev:amd64 (2.1-1.47.2-1) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../102-libdebhelper-perl_13.24.1_all.deb ... Unpacking libdebhelper-perl (13.24.1) ... Selecting previously unselected package libtool. Preparing to unpack .../103-libtool_2.5.4-3_all.deb ... Unpacking libtool (2.5.4-3) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../104-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../105-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../106-libfile-stripnondeterminism-perl_1.14.1-2_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.1-2) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../107-dh-strip-nondeterminism_1.14.1-2_all.deb ... Unpacking dh-strip-nondeterminism (1.14.1-2) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../108-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../109-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../110-gettext_0.23.1-1_amd64.deb ... Unpacking gettext (0.23.1-1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../111-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../112-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../113-debhelper_13.24.1_all.deb ... Unpacking debhelper (13.24.1) ... Selecting previously unselected package gnuplot-data. Preparing to unpack .../114-gnuplot-data_6.0.2+dfsg1-1_all.deb ... Unpacking gnuplot-data (6.0.2+dfsg1-1) ... Selecting previously unselected package libpng16-16t64:amd64. Preparing to unpack .../115-libpng16-16t64_1.6.46-4_amd64.deb ... Unpacking libpng16-16t64:amd64 (1.6.46-4) ... Selecting previously unselected package libfreetype6:amd64. Preparing to unpack .../116-libfreetype6_2.13.3+dfsg-1_amd64.deb ... Unpacking libfreetype6:amd64 (2.13.3+dfsg-1) ... Selecting previously unselected package fonts-dejavu-mono. Preparing to unpack .../117-fonts-dejavu-mono_2.37-8_all.deb ... Unpacking fonts-dejavu-mono (2.37-8) ... Selecting previously unselected package fonts-dejavu-core. Preparing to unpack .../118-fonts-dejavu-core_2.37-8_all.deb ... Unpacking fonts-dejavu-core (2.37-8) ... Selecting previously unselected package fonts-freefont-otf. Preparing to unpack .../119-fonts-freefont-otf_20211204+svn4273-2_all.deb ... Unpacking fonts-freefont-otf (20211204+svn4273-2) ... Selecting previously unselected package fontconfig-config. Preparing to unpack .../120-fontconfig-config_2.15.0-2_amd64.deb ... Unpacking fontconfig-config (2.15.0-2) ... Selecting previously unselected package libfontconfig1:amd64. Preparing to unpack .../121-libfontconfig1_2.15.0-2_amd64.deb ... Unpacking libfontconfig1:amd64 (2.15.0-2) ... Selecting previously unselected package libpixman-1-0:amd64. Preparing to unpack .../122-libpixman-1-0_0.44.0-3_amd64.deb ... Unpacking libpixman-1-0:amd64 (0.44.0-3) ... Selecting previously unselected package libxau6:amd64. Preparing to unpack .../123-libxau6_1%3a1.0.11-1_amd64.deb ... Unpacking libxau6:amd64 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp6:amd64. Preparing to unpack .../124-libxdmcp6_1%3a1.1.5-1_amd64.deb ... Unpacking libxdmcp6:amd64 (1:1.1.5-1) ... Selecting previously unselected package libxcb1:amd64. Preparing to unpack .../125-libxcb1_1.17.0-2+b1_amd64.deb ... Unpacking libxcb1:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libx11-data. Preparing to unpack .../126-libx11-data_2%3a1.8.10-2_all.deb ... Unpacking libx11-data (2:1.8.10-2) ... Selecting previously unselected package libx11-6:amd64. Preparing to unpack .../127-libx11-6_2%3a1.8.10-2_amd64.deb ... Unpacking libx11-6:amd64 (2:1.8.10-2) ... Selecting previously unselected package libxcb-render0:amd64. Preparing to unpack .../128-libxcb-render0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-render0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-shm0:amd64. Preparing to unpack .../129-libxcb-shm0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-shm0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxext6:amd64. Preparing to unpack .../130-libxext6_2%3a1.3.4-1+b3_amd64.deb ... Unpacking libxext6:amd64 (2:1.3.4-1+b3) ... Selecting previously unselected package libxrender1:amd64. Preparing to unpack .../131-libxrender1_1%3a0.9.10-1.1+b4_amd64.deb ... Unpacking libxrender1:amd64 (1:0.9.10-1.1+b4) ... Selecting previously unselected package libcairo2:amd64. Preparing to unpack .../132-libcairo2_1.18.2-2_amd64.deb ... Unpacking libcairo2:amd64 (1.18.2-2) ... Selecting previously unselected package libedit2:amd64. Preparing to unpack .../133-libedit2_3.1-20250104-1_amd64.deb ... Unpacking libedit2:amd64 (3.1-20250104-1) ... Selecting previously unselected package libaom3:amd64. Preparing to unpack .../134-libaom3_3.12.0-1_amd64.deb ... Unpacking libaom3:amd64 (3.12.0-1) ... Selecting previously unselected package libdav1d7:amd64. Preparing to unpack .../135-libdav1d7_1.5.1-1_amd64.deb ... Unpacking libdav1d7:amd64 (1.5.1-1) ... Selecting previously unselected package libabsl20230802:amd64. Preparing to unpack .../136-libabsl20230802_20230802.1-4_amd64.deb ... Unpacking libabsl20230802:amd64 (20230802.1-4) ... Selecting previously unselected package libgav1-1:amd64. Preparing to unpack .../137-libgav1-1_0.19.0-3_amd64.deb ... Unpacking libgav1-1:amd64 (0.19.0-3) ... Selecting previously unselected package librav1e0.7:amd64. Preparing to unpack .../138-librav1e0.7_0.7.1-9+b1_amd64.deb ... Unpacking librav1e0.7:amd64 (0.7.1-9+b1) ... Selecting previously unselected package libsvtav1enc2:amd64. Preparing to unpack .../139-libsvtav1enc2_2.3.0+dfsg-1_amd64.deb ... Unpacking libsvtav1enc2:amd64 (2.3.0+dfsg-1) ... Selecting previously unselected package libjpeg62-turbo:amd64. Preparing to unpack .../140-libjpeg62-turbo_1%3a2.1.5-3+b1_amd64.deb ... Unpacking libjpeg62-turbo:amd64 (1:2.1.5-3+b1) ... Selecting previously unselected package libyuv0:amd64. Preparing to unpack .../141-libyuv0_0.0.1904.20250204-1_amd64.deb ... Unpacking libyuv0:amd64 (0.0.1904.20250204-1) ... Selecting previously unselected package libavif16:amd64. Preparing to unpack .../142-libavif16_1.1.1-1_amd64.deb ... Unpacking libavif16:amd64 (1.1.1-1) ... Selecting previously unselected package libsharpyuv0:amd64. Preparing to unpack .../143-libsharpyuv0_1.5.0-0.1_amd64.deb ... Unpacking libsharpyuv0:amd64 (1.5.0-0.1) ... Selecting previously unselected package libheif-plugin-dav1d:amd64. Preparing to unpack .../144-libheif-plugin-dav1d_1.19.5-1+b1_amd64.deb ... Unpacking libheif-plugin-dav1d:amd64 (1.19.5-1+b1) ... Selecting previously unselected package libde265-0:amd64. Preparing to unpack .../145-libde265-0_1.0.15-1+b2_amd64.deb ... Unpacking libde265-0:amd64 (1.0.15-1+b2) ... Selecting previously unselected package libheif-plugin-libde265:amd64. Preparing to unpack .../146-libheif-plugin-libde265_1.19.5-1+b1_amd64.deb ... Unpacking libheif-plugin-libde265:amd64 (1.19.5-1+b1) ... Selecting previously unselected package libheif1:amd64. Preparing to unpack .../147-libheif1_1.19.5-1+b1_amd64.deb ... Unpacking libheif1:amd64 (1.19.5-1+b1) ... Selecting previously unselected package libimagequant0:amd64. Preparing to unpack .../148-libimagequant0_2.18.0-1+b2_amd64.deb ... Unpacking libimagequant0:amd64 (2.18.0-1+b2) ... Selecting previously unselected package libfribidi0:amd64. Preparing to unpack .../149-libfribidi0_1.0.16-1_amd64.deb ... Unpacking libfribidi0:amd64 (1.0.16-1) ... Selecting previously unselected package libgraphite2-3:amd64. Preparing to unpack .../150-libgraphite2-3_1.3.14-2+b1_amd64.deb ... Unpacking libgraphite2-3:amd64 (1.3.14-2+b1) ... Selecting previously unselected package libharfbuzz0b:amd64. Preparing to unpack .../151-libharfbuzz0b_10.2.0-1_amd64.deb ... Unpacking libharfbuzz0b:amd64 (10.2.0-1) ... Selecting previously unselected package libraqm0:amd64. Preparing to unpack .../152-libraqm0_0.10.2-1_amd64.deb ... Unpacking libraqm0:amd64 (0.10.2-1) ... Selecting previously unselected package libdeflate0:amd64. Preparing to unpack .../153-libdeflate0_1.23-1+b1_amd64.deb ... Unpacking libdeflate0:amd64 (1.23-1+b1) ... Selecting previously unselected package libjbig0:amd64. Preparing to unpack .../154-libjbig0_2.1-6.1+b2_amd64.deb ... Unpacking libjbig0:amd64 (2.1-6.1+b2) ... Selecting previously unselected package liblerc4:amd64. Preparing to unpack .../155-liblerc4_4.0.0+ds-5_amd64.deb ... Unpacking liblerc4:amd64 (4.0.0+ds-5) ... Selecting previously unselected package libwebp7:amd64. Preparing to unpack .../156-libwebp7_1.5.0-0.1_amd64.deb ... Unpacking libwebp7:amd64 (1.5.0-0.1) ... Selecting previously unselected package libtiff6:amd64. Preparing to unpack .../157-libtiff6_4.5.1+git230720-5_amd64.deb ... Unpacking libtiff6:amd64 (4.5.1+git230720-5) ... Selecting previously unselected package libxpm4:amd64. Preparing to unpack .../158-libxpm4_1%3a3.5.17-1+b3_amd64.deb ... Unpacking libxpm4:amd64 (1:3.5.17-1+b3) ... Selecting previously unselected package libgd3:amd64. Preparing to unpack .../159-libgd3_2.3.3-12+b1_amd64.deb ... Unpacking libgd3:amd64 (2.3.3-12+b1) ... Selecting previously unselected package liblua5.4-0:amd64. Preparing to unpack .../160-liblua5.4-0_5.4.7-1+b2_amd64.deb ... Unpacking liblua5.4-0:amd64 (5.4.7-1+b2) ... Selecting previously unselected package fontconfig. Preparing to unpack .../161-fontconfig_2.15.0-2_amd64.deb ... Unpacking fontconfig (2.15.0-2) ... Selecting previously unselected package libthai-data. Preparing to unpack .../162-libthai-data_0.1.29-2_all.deb ... Unpacking libthai-data (0.1.29-2) ... Selecting previously unselected package libdatrie1:amd64. Preparing to unpack .../163-libdatrie1_0.2.13-3+b1_amd64.deb ... Unpacking libdatrie1:amd64 (0.2.13-3+b1) ... Selecting previously unselected package libthai0:amd64. Preparing to unpack .../164-libthai0_0.1.29-2+b1_amd64.deb ... Unpacking libthai0:amd64 (0.1.29-2+b1) ... Selecting previously unselected package libpango-1.0-0:amd64. Preparing to unpack .../165-libpango-1.0-0_1.56.1-1_amd64.deb ... Unpacking libpango-1.0-0:amd64 (1.56.1-1) ... Selecting previously unselected package libpangoft2-1.0-0:amd64. Preparing to unpack .../166-libpangoft2-1.0-0_1.56.1-1_amd64.deb ... Unpacking libpangoft2-1.0-0:amd64 (1.56.1-1) ... Selecting previously unselected package libpangocairo-1.0-0:amd64. Preparing to unpack .../167-libpangocairo-1.0-0_1.56.1-1_amd64.deb ... Unpacking libpangocairo-1.0-0:amd64 (1.56.1-1) ... Selecting previously unselected package libwebpmux3:amd64. Preparing to unpack .../168-libwebpmux3_1.5.0-0.1_amd64.deb ... Unpacking libwebpmux3:amd64 (1.5.0-0.1) ... Selecting previously unselected package gnuplot-nox. Preparing to unpack .../169-gnuplot-nox_6.0.2+dfsg1-1_amd64.deb ... Unpacking gnuplot-nox (6.0.2+dfsg1-1) ... Selecting previously unselected package dh-octave-autopkgtest. Preparing to unpack .../170-dh-octave-autopkgtest_1.8.0_all.deb ... Unpacking dh-octave-autopkgtest (1.8.0) ... Selecting previously unselected package libapt-pkg-perl. Preparing to unpack .../171-libapt-pkg-perl_0.1.41_amd64.deb ... Unpacking libapt-pkg-perl (0.1.41) ... Selecting previously unselected package libarray-intspan-perl. Preparing to unpack .../172-libarray-intspan-perl_2.004-2_all.deb ... Unpacking libarray-intspan-perl (2.004-2) ... Selecting previously unselected package libyaml-libyaml-perl. Preparing to unpack .../173-libyaml-libyaml-perl_0.903.0+ds-1_amd64.deb ... Unpacking libyaml-libyaml-perl (0.903.0+ds-1) ... Selecting previously unselected package libconfig-model-backend-yaml-perl. Preparing to unpack .../174-libconfig-model-backend-yaml-perl_2.134-2_all.deb ... Unpacking libconfig-model-backend-yaml-perl (2.134-2) ... Selecting previously unselected package libexporter-lite-perl. Preparing to unpack .../175-libexporter-lite-perl_0.09-2_all.deb ... Unpacking libexporter-lite-perl (0.09-2) ... Selecting previously unselected package libencode-locale-perl. Preparing to unpack .../176-libencode-locale-perl_1.05-3_all.deb ... Unpacking libencode-locale-perl (1.05-3) ... Selecting previously unselected package libtimedate-perl. Preparing to unpack .../177-libtimedate-perl_2.3300-2_all.deb ... Unpacking libtimedate-perl (2.3300-2) ... Selecting previously unselected package libhttp-date-perl. Preparing to unpack .../178-libhttp-date-perl_6.06-1_all.deb ... Unpacking libhttp-date-perl (6.06-1) ... Selecting previously unselected package libfile-listing-perl. Preparing to unpack .../179-libfile-listing-perl_6.16-1_all.deb ... Unpacking libfile-listing-perl (6.16-1) ... Selecting previously unselected package libhtml-tagset-perl. Preparing to unpack .../180-libhtml-tagset-perl_3.24-1_all.deb ... Unpacking libhtml-tagset-perl (3.24-1) ... Selecting previously unselected package liburi-perl. Preparing to unpack .../181-liburi-perl_5.30-1_all.deb ... Unpacking liburi-perl (5.30-1) ... Selecting previously unselected package libhtml-parser-perl:amd64. Preparing to unpack .../182-libhtml-parser-perl_3.83-1+b2_amd64.deb ... Unpacking libhtml-parser-perl:amd64 (3.83-1+b2) ... Selecting previously unselected package libhtml-tree-perl. Preparing to unpack .../183-libhtml-tree-perl_5.07-3_all.deb ... Unpacking libhtml-tree-perl (5.07-3) ... Selecting previously unselected package libclone-perl:amd64. Preparing to unpack .../184-libclone-perl_0.47-1+b1_amd64.deb ... Unpacking libclone-perl:amd64 (0.47-1+b1) ... Selecting previously unselected package libio-html-perl. Preparing to unpack .../185-libio-html-perl_1.004-3_all.deb ... Unpacking libio-html-perl (1.004-3) ... Selecting previously unselected package liblwp-mediatypes-perl. Preparing to unpack .../186-liblwp-mediatypes-perl_6.04-2_all.deb ... Unpacking liblwp-mediatypes-perl (6.04-2) ... Selecting previously unselected package libhttp-message-perl. Preparing to unpack .../187-libhttp-message-perl_7.00-2_all.deb ... Unpacking libhttp-message-perl (7.00-2) ... Selecting previously unselected package libhttp-cookies-perl. Preparing to unpack .../188-libhttp-cookies-perl_6.11-1_all.deb ... Unpacking libhttp-cookies-perl (6.11-1) ... Selecting previously unselected package libhttp-negotiate-perl. Preparing to unpack .../189-libhttp-negotiate-perl_6.01-2_all.deb ... Unpacking libhttp-negotiate-perl (6.01-2) ... Selecting previously unselected package perl-openssl-defaults:amd64. Preparing to unpack .../190-perl-openssl-defaults_7+b2_amd64.deb ... Unpacking perl-openssl-defaults:amd64 (7+b2) ... Selecting previously unselected package libnet-ssleay-perl:amd64. Preparing to unpack .../191-libnet-ssleay-perl_1.94-3_amd64.deb ... Unpacking libnet-ssleay-perl:amd64 (1.94-3) ... Selecting previously unselected package libio-socket-ssl-perl. Preparing to unpack .../192-libio-socket-ssl-perl_2.089-1_all.deb ... Unpacking libio-socket-ssl-perl (2.089-1) ... Selecting previously unselected package libnet-http-perl. Preparing to unpack .../193-libnet-http-perl_6.23-1_all.deb ... Unpacking libnet-http-perl (6.23-1) ... Selecting previously unselected package liblwp-protocol-https-perl. Preparing to unpack .../194-liblwp-protocol-https-perl_6.14-1_all.deb ... Unpacking liblwp-protocol-https-perl (6.14-1) ... Selecting previously unselected package libwww-robotrules-perl. Preparing to unpack .../195-libwww-robotrules-perl_6.02-1_all.deb ... Unpacking libwww-robotrules-perl (6.02-1) ... Selecting previously unselected package libwww-perl. Preparing to unpack .../196-libwww-perl_6.77-1_all.deb ... Unpacking libwww-perl (6.77-1) ... Selecting previously unselected package liberror-perl. Preparing to unpack .../197-liberror-perl_0.17029-2_all.deb ... Unpacking liberror-perl (0.17029-2) ... Selecting previously unselected package libparse-debcontrol-perl. Preparing to unpack .../198-libparse-debcontrol-perl_2.005-6_all.deb ... Unpacking libparse-debcontrol-perl (2.005-6) ... Selecting previously unselected package libsoftware-copyright-perl. Preparing to unpack .../199-libsoftware-copyright-perl_0.012-2_all.deb ... Unpacking libsoftware-copyright-perl (0.012-2) ... Selecting previously unselected package libalgorithm-c3-perl. Preparing to unpack .../200-libalgorithm-c3-perl_0.11-2_all.deb ... Unpacking libalgorithm-c3-perl (0.11-2) ... Selecting previously unselected package libclass-c3-perl. Preparing to unpack .../201-libclass-c3-perl_0.35-2_all.deb ... Unpacking libclass-c3-perl (0.35-2) ... Selecting previously unselected package libmro-compat-perl. Preparing to unpack .../202-libmro-compat-perl_0.15-2_all.deb ... Unpacking libmro-compat-perl (0.15-2) ... Selecting previously unselected package libdata-section-perl. Preparing to unpack .../203-libdata-section-perl_0.200008-1_all.deb ... Unpacking libdata-section-perl (0.200008-1) ... Selecting previously unselected package libtext-template-perl. Preparing to unpack .../204-libtext-template-perl_1.61-1_all.deb ... Unpacking libtext-template-perl (1.61-1) ... Selecting previously unselected package libsoftware-license-perl. Preparing to unpack .../205-libsoftware-license-perl_0.104006-1_all.deb ... Unpacking libsoftware-license-perl (0.104006-1) ... Selecting previously unselected package libsoftware-licensemoreutils-perl. Preparing to unpack .../206-libsoftware-licensemoreutils-perl_1.009-1_all.deb ... Unpacking libsoftware-licensemoreutils-perl (1.009-1) ... Selecting previously unselected package libsort-versions-perl. Preparing to unpack .../207-libsort-versions-perl_1.62-3_all.deb ... Unpacking libsort-versions-perl (1.62-3) ... Selecting previously unselected package libtext-reform-perl. Preparing to unpack .../208-libtext-reform-perl_1.20-5_all.deb ... Unpacking libtext-reform-perl (1.20-5) ... Selecting previously unselected package libtext-autoformat-perl. Preparing to unpack .../209-libtext-autoformat-perl_1.750000-2_all.deb ... Unpacking libtext-autoformat-perl (1.750000-2) ... Selecting previously unselected package libtext-levenshtein-damerau-perl. Preparing to unpack .../210-libtext-levenshtein-damerau-perl_0.41-3_all.deb ... Unpacking libtext-levenshtein-damerau-perl (0.41-3) ... Selecting previously unselected package libtoml-tiny-perl. Preparing to unpack .../211-libtoml-tiny-perl_0.19-1_all.deb ... Unpacking libtoml-tiny-perl (0.19-1) ... Selecting previously unselected package libclass-inspector-perl. Preparing to unpack .../212-libclass-inspector-perl_1.36-3_all.deb ... Unpacking libclass-inspector-perl (1.36-3) ... Selecting previously unselected package libfile-sharedir-perl. Preparing to unpack .../213-libfile-sharedir-perl_1.118-3_all.deb ... Unpacking libfile-sharedir-perl (1.118-3) ... Selecting previously unselected package libindirect-perl. Preparing to unpack .../214-libindirect-perl_0.39-2+b4_amd64.deb ... Unpacking libindirect-perl (0.39-2+b4) ... Selecting previously unselected package libxs-parse-keyword-perl. Preparing to unpack .../215-libxs-parse-keyword-perl_0.48-2_amd64.deb ... Unpacking libxs-parse-keyword-perl (0.48-2) ... Selecting previously unselected package libxs-parse-sublike-perl:amd64. Preparing to unpack .../216-libxs-parse-sublike-perl_0.37-1_amd64.deb ... Unpacking libxs-parse-sublike-perl:amd64 (0.37-1) ... Selecting previously unselected package libobject-pad-perl. Preparing to unpack .../217-libobject-pad-perl_0.819-1_amd64.deb ... Unpacking libobject-pad-perl (0.819-1) ... Selecting previously unselected package libfeature-compat-class-perl. Preparing to unpack .../218-libfeature-compat-class-perl_0.07-1_all.deb ... Unpacking libfeature-compat-class-perl (0.07-1) ... Selecting previously unselected package libsyntax-keyword-try-perl. Preparing to unpack .../219-libsyntax-keyword-try-perl_0.30-1+b1_amd64.deb ... Unpacking libsyntax-keyword-try-perl (0.30-1+b1) ... Selecting previously unselected package libfeature-compat-try-perl. Preparing to unpack .../220-libfeature-compat-try-perl_0.05-1_all.deb ... Unpacking libfeature-compat-try-perl (0.05-1) ... Selecting previously unselected package libio-interactive-perl. Preparing to unpack .../221-libio-interactive-perl_1.026-1_all.deb ... Unpacking libio-interactive-perl (1.026-1) ... Selecting previously unselected package liblog-any-perl. Preparing to unpack .../222-liblog-any-perl_1.717-1_all.deb ... Unpacking liblog-any-perl (1.717-1) ... Selecting previously unselected package liblog-any-adapter-screen-perl. Preparing to unpack .../223-liblog-any-adapter-screen-perl_0.141-1_all.deb ... Unpacking liblog-any-adapter-screen-perl (0.141-1) ... Selecting previously unselected package libsub-exporter-progressive-perl. Preparing to unpack .../224-libsub-exporter-progressive-perl_0.001013-3_all.deb ... Unpacking libsub-exporter-progressive-perl (0.001013-3) ... Selecting previously unselected package libvariable-magic-perl. Preparing to unpack .../225-libvariable-magic-perl_0.64-1+b1_amd64.deb ... Unpacking libvariable-magic-perl (0.64-1+b1) ... Selecting previously unselected package libb-hooks-endofscope-perl. Preparing to unpack .../226-libb-hooks-endofscope-perl_0.28-1_all.deb ... Unpacking libb-hooks-endofscope-perl (0.28-1) ... Selecting previously unselected package libsub-identify-perl. Preparing to unpack .../227-libsub-identify-perl_0.14-3+b3_amd64.deb ... Unpacking libsub-identify-perl (0.14-3+b3) ... Selecting previously unselected package libsub-name-perl:amd64. Preparing to unpack .../228-libsub-name-perl_0.28-1_amd64.deb ... Unpacking libsub-name-perl:amd64 (0.28-1) ... Selecting previously unselected package libnamespace-clean-perl. Preparing to unpack .../229-libnamespace-clean-perl_0.27-2_all.deb ... Unpacking libnamespace-clean-perl (0.27-2) ... Selecting previously unselected package libnumber-compare-perl. Preparing to unpack .../230-libnumber-compare-perl_0.03-3_all.deb ... Unpacking libnumber-compare-perl (0.03-3) ... Selecting previously unselected package libtext-glob-perl. Preparing to unpack .../231-libtext-glob-perl_0.11-3_all.deb ... Unpacking libtext-glob-perl (0.11-3) ... Selecting previously unselected package libpath-iterator-rule-perl. Preparing to unpack .../232-libpath-iterator-rule-perl_1.015-2_all.deb ... Unpacking libpath-iterator-rule-perl (1.015-2) ... Selecting previously unselected package libpod-parser-perl. Preparing to unpack .../233-libpod-parser-perl_1.67-1_all.deb ... Adding 'diversion of /usr/bin/podselect to /usr/bin/podselect.bundled by libpod-parser-perl' Adding 'diversion of /usr/share/man/man1/podselect.1.gz to /usr/share/man/man1/podselect.bundled.1.gz by libpod-parser-perl' Unpacking libpod-parser-perl (1.67-1) ... Selecting previously unselected package libpod-constants-perl. Preparing to unpack .../234-libpod-constants-perl_0.19-2_all.deb ... Unpacking libpod-constants-perl (0.19-2) ... Selecting previously unselected package libset-intspan-perl. Preparing to unpack .../235-libset-intspan-perl_1.19-3_all.deb ... Unpacking libset-intspan-perl (1.19-3) ... Selecting previously unselected package libstring-copyright-perl. Preparing to unpack .../236-libstring-copyright-perl_0.003014-1_all.deb ... Unpacking libstring-copyright-perl (0.003014-1) ... Selecting previously unselected package libstring-escape-perl. Preparing to unpack .../237-libstring-escape-perl_2010.002-3_all.deb ... Unpacking libstring-escape-perl (2010.002-3) ... Selecting previously unselected package libregexp-pattern-license-perl. Preparing to unpack .../238-libregexp-pattern-license-perl_3.11.2-1_all.deb ... Unpacking libregexp-pattern-license-perl (3.11.2-1) ... Selecting previously unselected package libregexp-pattern-perl. Preparing to unpack .../239-libregexp-pattern-perl_0.2.14-2_all.deb ... Unpacking libregexp-pattern-perl (0.2.14-2) ... Selecting previously unselected package libstring-license-perl. Preparing to unpack .../240-libstring-license-perl_0.0.11-1_all.deb ... Unpacking libstring-license-perl (0.0.11-1) ... Selecting previously unselected package licensecheck. Preparing to unpack .../241-licensecheck_3.3.9-1_all.deb ... Unpacking licensecheck (3.3.9-1) ... Selecting previously unselected package diffstat. Preparing to unpack .../242-diffstat_1.67-1_amd64.deb ... Unpacking diffstat (1.67-1) ... Selecting previously unselected package libgpg-error0:amd64. Preparing to unpack .../243-libgpg-error0_1.51-3_amd64.deb ... Unpacking libgpg-error0:amd64 (1.51-3) ... Selecting previously unselected package libassuan9:amd64. Preparing to unpack .../244-libassuan9_3.0.1-2_amd64.deb ... Unpacking libassuan9:amd64 (3.0.1-2) ... Selecting previously unselected package libgcrypt20:amd64. Preparing to unpack .../245-libgcrypt20_1.11.0-7_amd64.deb ... Unpacking libgcrypt20:amd64 (1.11.0-7) ... Selecting previously unselected package gpgconf. Preparing to unpack .../246-gpgconf_2.2.46-1+b1_amd64.deb ... Unpacking gpgconf (2.2.46-1+b1) ... Selecting previously unselected package gpg. Preparing to unpack .../247-gpg_2.2.46-1+b1_amd64.deb ... Unpacking gpg (2.2.46-1+b1) ... Selecting previously unselected package iso-codes. Preparing to unpack .../248-iso-codes_4.17.0-1_all.deb ... Unpacking iso-codes (4.17.0-1) ... Selecting previously unselected package libberkeleydb-perl:amd64. Preparing to unpack .../249-libberkeleydb-perl_0.66-1_amd64.deb ... Unpacking libberkeleydb-perl:amd64 (0.66-1) ... Selecting previously unselected package libclass-xsaccessor-perl. Preparing to unpack .../250-libclass-xsaccessor-perl_1.19-4+b5_amd64.deb ... Unpacking libclass-xsaccessor-perl (1.19-4+b5) ... Selecting previously unselected package libconfig-tiny-perl. Preparing to unpack .../251-libconfig-tiny-perl_2.30-1_all.deb ... Unpacking libconfig-tiny-perl (2.30-1) ... Selecting previously unselected package libconst-fast-perl. Preparing to unpack .../252-libconst-fast-perl_0.014-2_all.deb ... Unpacking libconst-fast-perl (0.014-2) ... Selecting previously unselected package libcpanel-json-xs-perl:amd64. Preparing to unpack .../253-libcpanel-json-xs-perl_4.39-1_amd64.deb ... Unpacking libcpanel-json-xs-perl:amd64 (4.39-1) ... Selecting previously unselected package libaliased-perl. Preparing to unpack .../254-libaliased-perl_0.34-3_all.deb ... Unpacking libaliased-perl (0.34-3) ... Selecting previously unselected package libclass-data-inheritable-perl. Preparing to unpack .../255-libclass-data-inheritable-perl_0.10-1_all.deb ... Unpacking libclass-data-inheritable-perl (0.10-1) ... Selecting previously unselected package libdevel-stacktrace-perl. Preparing to unpack .../256-libdevel-stacktrace-perl_2.0500-1_all.deb ... Unpacking libdevel-stacktrace-perl (2.0500-1) ... Selecting previously unselected package libexception-class-perl. Preparing to unpack .../257-libexception-class-perl_1.45-1_all.deb ... Unpacking libexception-class-perl (1.45-1) ... Selecting previously unselected package libiterator-perl. Preparing to unpack .../258-libiterator-perl_0.03+ds1-2_all.deb ... Unpacking libiterator-perl (0.03+ds1-2) ... Selecting previously unselected package libiterator-util-perl. Preparing to unpack .../259-libiterator-util-perl_0.02+ds1-2_all.deb ... Unpacking libiterator-util-perl (0.02+ds1-2) ... Selecting previously unselected package libdata-dpath-perl. Preparing to unpack .../260-libdata-dpath-perl_0.60-1_all.deb ... Unpacking libdata-dpath-perl (0.60-1) ... Selecting previously unselected package libnet-domain-tld-perl. Preparing to unpack .../261-libnet-domain-tld-perl_1.75-4_all.deb ... Unpacking libnet-domain-tld-perl (1.75-4) ... Selecting previously unselected package libdata-validate-domain-perl. Preparing to unpack .../262-libdata-validate-domain-perl_0.15-1_all.deb ... Unpacking libdata-validate-domain-perl (0.15-1) ... Selecting previously unselected package libnet-ipv6addr-perl. Preparing to unpack .../263-libnet-ipv6addr-perl_1.02-1_all.deb ... Unpacking libnet-ipv6addr-perl (1.02-1) ... Selecting previously unselected package libnet-netmask-perl. Preparing to unpack .../264-libnet-netmask-perl_2.0002-2_all.deb ... Unpacking libnet-netmask-perl (2.0002-2) ... Selecting previously unselected package libnetaddr-ip-perl. Preparing to unpack .../265-libnetaddr-ip-perl_4.079+dfsg-2+b5_amd64.deb ... Unpacking libnetaddr-ip-perl (4.079+dfsg-2+b5) ... Selecting previously unselected package libdata-validate-ip-perl. Preparing to unpack .../266-libdata-validate-ip-perl_0.31-1_all.deb ... Unpacking libdata-validate-ip-perl (0.31-1) ... Selecting previously unselected package libdata-validate-uri-perl. Preparing to unpack .../267-libdata-validate-uri-perl_0.07-3_all.deb ... Unpacking libdata-validate-uri-perl (0.07-3) ... Selecting previously unselected package libdevel-size-perl. Preparing to unpack .../268-libdevel-size-perl_0.84-1+b1_amd64.deb ... Unpacking libdevel-size-perl (0.84-1+b1) ... Selecting previously unselected package libemail-address-xs-perl. Preparing to unpack .../269-libemail-address-xs-perl_1.05-1+b4_amd64.deb ... Unpacking libemail-address-xs-perl (1.05-1+b4) ... Selecting previously unselected package libipc-system-simple-perl. Preparing to unpack .../270-libipc-system-simple-perl_1.30-2_all.deb ... Unpacking libipc-system-simple-perl (1.30-2) ... Selecting previously unselected package libfile-basedir-perl. Preparing to unpack .../271-libfile-basedir-perl_0.09-2_all.deb ... Unpacking libfile-basedir-perl (0.09-2) ... Selecting previously unselected package libfile-find-rule-perl. Preparing to unpack .../272-libfile-find-rule-perl_0.34-3_all.deb ... Unpacking libfile-find-rule-perl (0.34-3) ... Selecting previously unselected package libio-string-perl. Preparing to unpack .../273-libio-string-perl_1.08-4_all.deb ... Unpacking libio-string-perl (1.08-4) ... Selecting previously unselected package libfont-ttf-perl. Preparing to unpack .../274-libfont-ttf-perl_1.06-2_all.deb ... Unpacking libfont-ttf-perl (1.06-2) ... Selecting previously unselected package libhtml-html5-entities-perl. Preparing to unpack .../275-libhtml-html5-entities-perl_0.004-3_all.deb ... Unpacking libhtml-html5-entities-perl (0.004-3) ... Selecting previously unselected package libhtml-tokeparser-simple-perl. Preparing to unpack .../276-libhtml-tokeparser-simple-perl_3.16-4_all.deb ... Unpacking libhtml-tokeparser-simple-perl (3.16-4) ... Selecting previously unselected package libipc-run3-perl. Preparing to unpack .../277-libipc-run3-perl_0.049-1_all.deb ... Unpacking libipc-run3-perl (0.049-1) ... Selecting previously unselected package libjson-maybexs-perl. Preparing to unpack .../278-libjson-maybexs-perl_1.004008-1_all.deb ... Unpacking libjson-maybexs-perl (1.004008-1) ... Selecting previously unselected package liblist-compare-perl. Preparing to unpack .../279-liblist-compare-perl_0.55-2_all.deb ... Unpacking liblist-compare-perl (0.55-2) ... Selecting previously unselected package liblist-someutils-perl. Preparing to unpack .../280-liblist-someutils-perl_0.59-1_all.deb ... Unpacking liblist-someutils-perl (0.59-1) ... Selecting previously unselected package liblist-utilsby-perl. Preparing to unpack .../281-liblist-utilsby-perl_0.12-2_all.deb ... Unpacking liblist-utilsby-perl (0.12-2) ... Selecting previously unselected package libmldbm-perl. Preparing to unpack .../282-libmldbm-perl_2.05-4_all.deb ... Unpacking libmldbm-perl (2.05-4) ... Selecting previously unselected package libclass-method-modifiers-perl. Preparing to unpack .../283-libclass-method-modifiers-perl_2.15-1_all.deb ... Unpacking libclass-method-modifiers-perl (2.15-1) ... Selecting previously unselected package libimport-into-perl. Preparing to unpack .../284-libimport-into-perl_1.002005-2_all.deb ... Unpacking libimport-into-perl (1.002005-2) ... Selecting previously unselected package librole-tiny-perl. Preparing to unpack .../285-librole-tiny-perl_2.002004-1_all.deb ... Unpacking librole-tiny-perl (2.002004-1) ... Selecting previously unselected package libsub-quote-perl. Preparing to unpack .../286-libsub-quote-perl_2.006008-1_all.deb ... Unpacking libsub-quote-perl (2.006008-1) ... Selecting previously unselected package libmoo-perl. Preparing to unpack .../287-libmoo-perl_2.005005-1_all.deb ... Unpacking libmoo-perl (2.005005-1) ... Selecting previously unselected package libstrictures-perl. Preparing to unpack .../288-libstrictures-perl_2.000006-1_all.deb ... Unpacking libstrictures-perl (2.000006-1) ... Selecting previously unselected package libmoox-aliases-perl. Preparing to unpack .../289-libmoox-aliases-perl_0.001006-2_all.deb ... Unpacking libmoox-aliases-perl (0.001006-2) ... Selecting previously unselected package libperlio-gzip-perl. Preparing to unpack .../290-libperlio-gzip-perl_0.20-1+b4_amd64.deb ... Unpacking libperlio-gzip-perl (0.20-1+b4) ... Selecting previously unselected package libperlio-utf8-strict-perl. Preparing to unpack .../291-libperlio-utf8-strict-perl_0.010-1+b3_amd64.deb ... Unpacking libperlio-utf8-strict-perl (0.010-1+b3) ... Selecting previously unselected package libproc-processtable-perl:amd64. Preparing to unpack .../292-libproc-processtable-perl_0.636-1+b3_amd64.deb ... Unpacking libproc-processtable-perl:amd64 (0.636-1+b3) ... Selecting previously unselected package libregexp-wildcards-perl. Preparing to unpack .../293-libregexp-wildcards-perl_1.05-3_all.deb ... Unpacking libregexp-wildcards-perl (1.05-3) ... Selecting previously unselected package libsereal-decoder-perl. Preparing to unpack .../294-libsereal-decoder-perl_5.004+ds-1+b3_amd64.deb ... Unpacking libsereal-decoder-perl (5.004+ds-1+b3) ... Selecting previously unselected package libsereal-encoder-perl. Preparing to unpack .../295-libsereal-encoder-perl_5.004+ds-1+b3_amd64.deb ... Unpacking libsereal-encoder-perl (5.004+ds-1+b3) ... Selecting previously unselected package libterm-readkey-perl. Preparing to unpack .../296-libterm-readkey-perl_2.38-2+b4_amd64.deb ... Unpacking libterm-readkey-perl (2.38-2+b4) ... Selecting previously unselected package libtext-levenshteinxs-perl. Preparing to unpack .../297-libtext-levenshteinxs-perl_0.03-5+b4_amd64.deb ... Unpacking libtext-levenshteinxs-perl (0.03-5+b4) ... Selecting previously unselected package libmarkdown2:amd64. Preparing to unpack .../298-libmarkdown2_2.2.7-2.1_amd64.deb ... Unpacking libmarkdown2:amd64 (2.2.7-2.1) ... Selecting previously unselected package libtext-markdown-discount-perl. Preparing to unpack .../299-libtext-markdown-discount-perl_0.18-1_amd64.deb ... Unpacking libtext-markdown-discount-perl (0.18-1) ... Selecting previously unselected package libdata-messagepack-perl. Preparing to unpack .../300-libdata-messagepack-perl_1.02-1+b4_amd64.deb ... Unpacking libdata-messagepack-perl (1.02-1+b4) ... Selecting previously unselected package libtext-xslate-perl:amd64. Preparing to unpack .../301-libtext-xslate-perl_3.5.9-2+b1_amd64.deb ... Unpacking libtext-xslate-perl:amd64 (3.5.9-2+b1) ... Selecting previously unselected package libtime-duration-perl. Preparing to unpack .../302-libtime-duration-perl_1.21-2_all.deb ... Unpacking libtime-duration-perl (1.21-2) ... Selecting previously unselected package libtime-moment-perl. Preparing to unpack .../303-libtime-moment-perl_0.44-2+b4_amd64.deb ... Unpacking libtime-moment-perl (0.44-2+b4) ... Selecting previously unselected package libunicode-utf8-perl. Preparing to unpack .../304-libunicode-utf8-perl_0.62-2+b3_amd64.deb ... Unpacking libunicode-utf8-perl (0.62-2+b3) ... Selecting previously unselected package libcgi-pm-perl. Preparing to unpack .../305-libcgi-pm-perl_4.67-1_all.deb ... Unpacking libcgi-pm-perl (4.67-1) ... Selecting previously unselected package libhtml-form-perl. Preparing to unpack .../306-libhtml-form-perl_6.12-1_all.deb ... Unpacking libhtml-form-perl (6.12-1) ... Selecting previously unselected package libwww-mechanize-perl. Preparing to unpack .../307-libwww-mechanize-perl_2.19-1_all.deb ... Unpacking libwww-mechanize-perl (2.19-1) ... Selecting previously unselected package libxml-namespacesupport-perl. Preparing to unpack .../308-libxml-namespacesupport-perl_1.12-2_all.deb ... Unpacking libxml-namespacesupport-perl (1.12-2) ... Selecting previously unselected package libxml-sax-base-perl. Preparing to unpack .../309-libxml-sax-base-perl_1.09-3_all.deb ... Unpacking libxml-sax-base-perl (1.09-3) ... Selecting previously unselected package libxml-sax-perl. Preparing to unpack .../310-libxml-sax-perl_1.02+dfsg-4_all.deb ... Unpacking libxml-sax-perl (1.02+dfsg-4) ... Selecting previously unselected package libxml-libxml-perl. Preparing to unpack .../311-libxml-libxml-perl_2.0207+dfsg+really+2.0134-5+b2_amd64.deb ... Unpacking libxml-libxml-perl (2.0207+dfsg+really+2.0134-5+b2) ... Selecting previously unselected package liblz1:amd64. Preparing to unpack .../312-liblz1_1.15-2_amd64.deb ... Unpacking liblz1:amd64 (1.15-2) ... Selecting previously unselected package plzip. Preparing to unpack .../313-plzip_1.12-1_amd64.deb ... Unpacking plzip (1.12-1) ... Selecting previously unselected package liblzo2-2:amd64. Preparing to unpack .../314-liblzo2-2_2.10-3+b1_amd64.deb ... Unpacking liblzo2-2:amd64 (2.10-3+b1) ... Selecting previously unselected package lzop. Preparing to unpack .../315-lzop_1.04-2_amd64.deb ... Unpacking lzop (1.04-2) ... Selecting previously unselected package patchutils. Preparing to unpack .../316-patchutils_0.4.2-1_amd64.deb ... Unpacking patchutils (0.4.2-1) ... Selecting previously unselected package t1utils. Preparing to unpack .../317-t1utils_1.41-4_amd64.deb ... Unpacking t1utils (1.41-4) ... Selecting previously unselected package unzip. Preparing to unpack .../318-unzip_6.0-28_amd64.deb ... Unpacking unzip (6.0-28) ... Selecting previously unselected package lintian. Preparing to unpack .../319-lintian_2.121.1_all.deb ... Unpacking lintian (2.121.1) ... Selecting previously unselected package libconfig-model-dpkg-perl. Preparing to unpack .../320-libconfig-model-dpkg-perl_3.010_all.deb ... Unpacking libconfig-model-dpkg-perl (3.010) ... Selecting previously unselected package libconvert-binhex-perl. Preparing to unpack .../321-libconvert-binhex-perl_1.125-3_all.deb ... Unpacking libconvert-binhex-perl (1.125-3) ... Selecting previously unselected package libnet-smtp-ssl-perl. Preparing to unpack .../322-libnet-smtp-ssl-perl_1.04-2_all.deb ... Unpacking libnet-smtp-ssl-perl (1.04-2) ... Selecting previously unselected package libmailtools-perl. Preparing to unpack .../323-libmailtools-perl_2.22-1_all.deb ... Unpacking libmailtools-perl (2.22-1) ... Selecting previously unselected package libmime-tools-perl. Preparing to unpack .../324-libmime-tools-perl_5.515-1_all.deb ... Unpacking libmime-tools-perl (5.515-1) ... Selecting previously unselected package libsuitesparseconfig7:amd64. Preparing to unpack .../325-libsuitesparseconfig7_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libsuitesparseconfig7:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libamd3:amd64. Preparing to unpack .../326-libamd3_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libamd3:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libblas3:amd64. Preparing to unpack .../327-libblas3_3.12.1-2_amd64.deb ... Unpacking libblas3:amd64 (3.12.1-2) ... Selecting previously unselected package libgfortran5:amd64. Preparing to unpack .../328-libgfortran5_14.2.0-17_amd64.deb ... Unpacking libgfortran5:amd64 (14.2.0-17) ... Selecting previously unselected package liblapack3:amd64. Preparing to unpack .../329-liblapack3_3.12.1-2_amd64.deb ... Unpacking liblapack3:amd64 (3.12.1-2) ... Selecting previously unselected package libarpack2t64:amd64. Preparing to unpack .../330-libarpack2t64_3.9.1-4_amd64.deb ... Unpacking libarpack2t64:amd64 (3.9.1-4) ... Selecting previously unselected package libccolamd3:amd64. Preparing to unpack .../331-libccolamd3_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libccolamd3:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libcamd3:amd64. Preparing to unpack .../332-libcamd3_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libcamd3:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libcolamd3:amd64. Preparing to unpack .../333-libcolamd3_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libcolamd3:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libcholmod5:amd64. Preparing to unpack .../334-libcholmod5_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libcholmod5:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libcxsparse4:amd64. Preparing to unpack .../335-libcxsparse4_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libcxsparse4:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libfftw3-double3:amd64. Preparing to unpack .../336-libfftw3-double3_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-double3:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-single3:amd64. Preparing to unpack .../337-libfftw3-single3_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-single3:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libxfixes3:amd64. Preparing to unpack .../338-libxfixes3_1%3a6.0.0-2+b4_amd64.deb ... Unpacking libxfixes3:amd64 (1:6.0.0-2+b4) ... Selecting previously unselected package libxcursor1:amd64. Preparing to unpack .../339-libxcursor1_1%3a1.2.3-1_amd64.deb ... Unpacking libxcursor1:amd64 (1:1.2.3-1) ... Selecting previously unselected package libxft2:amd64. Preparing to unpack .../340-libxft2_2.3.6-1+b4_amd64.deb ... Unpacking libxft2:amd64 (2.3.6-1+b4) ... Selecting previously unselected package libxinerama1:amd64. Preparing to unpack .../341-libxinerama1_2%3a1.1.4-3+b3_amd64.deb ... Unpacking libxinerama1:amd64 (2:1.1.4-3+b3) ... Selecting previously unselected package libfltk1.3t64:amd64. Preparing to unpack .../342-libfltk1.3t64_1.3.8-6.1+b1_amd64.deb ... Unpacking libfltk1.3t64:amd64 (1.3.8-6.1+b1) ... Selecting previously unselected package libglvnd0:amd64. Preparing to unpack .../343-libglvnd0_1.7.0-1+b2_amd64.deb ... Unpacking libglvnd0:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libdrm-common. Preparing to unpack .../344-libdrm-common_2.4.123-1_all.deb ... Unpacking libdrm-common (2.4.123-1) ... Selecting previously unselected package libdrm2:amd64. Preparing to unpack .../345-libdrm2_2.4.123-1_amd64.deb ... Unpacking libdrm2:amd64 (2.4.123-1) ... Selecting previously unselected package libglapi-mesa:amd64. Preparing to unpack .../346-libglapi-mesa_24.3.4-3_amd64.deb ... Unpacking libglapi-mesa:amd64 (24.3.4-3) ... Selecting previously unselected package libx11-xcb1:amd64. Preparing to unpack .../347-libx11-xcb1_2%3a1.8.10-2_amd64.deb ... Unpacking libx11-xcb1:amd64 (2:1.8.10-2) ... Selecting previously unselected package libxcb-dri3-0:amd64. Preparing to unpack .../348-libxcb-dri3-0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-dri3-0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-glx0:amd64. Preparing to unpack .../349-libxcb-glx0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-glx0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-present0:amd64. Preparing to unpack .../350-libxcb-present0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-present0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-xfixes0:amd64. Preparing to unpack .../351-libxcb-xfixes0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-xfixes0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxxf86vm1:amd64. Preparing to unpack .../352-libxxf86vm1_1%3a1.1.4-1+b4_amd64.deb ... Unpacking libxxf86vm1:amd64 (1:1.1.4-1+b4) ... Selecting previously unselected package libdrm-amdgpu1:amd64. Preparing to unpack .../353-libdrm-amdgpu1_2.4.123-1_amd64.deb ... Unpacking libdrm-amdgpu1:amd64 (2.4.123-1) ... Selecting previously unselected package libpciaccess0:amd64. Preparing to unpack .../354-libpciaccess0_0.17-3+b3_amd64.deb ... Unpacking libpciaccess0:amd64 (0.17-3+b3) ... Selecting previously unselected package libdrm-intel1:amd64. Preparing to unpack .../355-libdrm-intel1_2.4.123-1_amd64.deb ... Unpacking libdrm-intel1:amd64 (2.4.123-1) ... Selecting previously unselected package libdrm-radeon1:amd64. Preparing to unpack .../356-libdrm-radeon1_2.4.123-1_amd64.deb ... Unpacking libdrm-radeon1:amd64 (2.4.123-1) ... Selecting previously unselected package libz3-4:amd64. Preparing to unpack .../357-libz3-4_4.13.3-1_amd64.deb ... Unpacking libz3-4:amd64 (4.13.3-1) ... Selecting previously unselected package libllvm19:amd64. Preparing to unpack .../358-libllvm19_1%3a19.1.7-1+b1_amd64.deb ... Unpacking libllvm19:amd64 (1:19.1.7-1+b1) ... Selecting previously unselected package libsensors-config. Preparing to unpack .../359-libsensors-config_1%3a3.6.0-10_all.deb ... Unpacking libsensors-config (1:3.6.0-10) ... Selecting previously unselected package libsensors5:amd64. Preparing to unpack .../360-libsensors5_1%3a3.6.0-10+b1_amd64.deb ... Unpacking libsensors5:amd64 (1:3.6.0-10+b1) ... Selecting previously unselected package libxcb-randr0:amd64. Preparing to unpack .../361-libxcb-randr0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-randr0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-sync1:amd64. Preparing to unpack .../362-libxcb-sync1_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-sync1:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxshmfence1:amd64. Preparing to unpack .../363-libxshmfence1_1.3-1+b3_amd64.deb ... Unpacking libxshmfence1:amd64 (1.3-1+b3) ... Selecting previously unselected package mesa-libgallium:amd64. Preparing to unpack .../364-mesa-libgallium_24.3.4-3_amd64.deb ... Unpacking mesa-libgallium:amd64 (24.3.4-3) ... Selecting previously unselected package libwayland-server0:amd64. Preparing to unpack .../365-libwayland-server0_1.23.1-3_amd64.deb ... Unpacking libwayland-server0:amd64 (1.23.1-3) ... Selecting previously unselected package libgbm1:amd64. Preparing to unpack .../366-libgbm1_24.3.4-3_amd64.deb ... Unpacking libgbm1:amd64 (24.3.4-3) ... Selecting previously unselected package libvulkan1:amd64. Preparing to unpack .../367-libvulkan1_1.4.304.0-1_amd64.deb ... Unpacking libvulkan1:amd64 (1.4.304.0-1) ... Selecting previously unselected package libgl1-mesa-dri:amd64. Preparing to unpack .../368-libgl1-mesa-dri_24.3.4-3_amd64.deb ... Unpacking libgl1-mesa-dri:amd64 (24.3.4-3) ... Selecting previously unselected package libglx-mesa0:amd64. Preparing to unpack .../369-libglx-mesa0_24.3.4-3_amd64.deb ... Unpacking libglx-mesa0:amd64 (24.3.4-3) ... Selecting previously unselected package libglx0:amd64. Preparing to unpack .../370-libglx0_1.7.0-1+b2_amd64.deb ... Unpacking libglx0:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libgl1:amd64. Preparing to unpack .../371-libgl1_1.7.0-1+b2_amd64.deb ... Unpacking libgl1:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libfltk-gl1.3t64:amd64. Preparing to unpack .../372-libfltk-gl1.3t64_1.3.8-6.1+b1_amd64.deb ... Unpacking libfltk-gl1.3t64:amd64 (1.3.8-6.1+b1) ... Selecting previously unselected package libgl2ps1.4. Preparing to unpack .../373-libgl2ps1.4_1.4.2+dfsg1-2_amd64.deb ... Unpacking libgl2ps1.4 (1.4.2+dfsg1-2) ... Selecting previously unselected package libltdl7:amd64. Preparing to unpack .../374-libltdl7_2.5.4-3_amd64.deb ... Unpacking libltdl7:amd64 (2.5.4-3) ... Selecting previously unselected package libglpk40:amd64. Preparing to unpack .../375-libglpk40_5.0-1+b2_amd64.deb ... Unpacking libglpk40:amd64 (5.0-1+b2) ... Selecting previously unselected package libopengl0:amd64. Preparing to unpack .../376-libopengl0_1.7.0-1+b2_amd64.deb ... Unpacking libopengl0:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libglu1-mesa:amd64. Preparing to unpack .../377-libglu1-mesa_9.0.2-1.1+b3_amd64.deb ... Unpacking libglu1-mesa:amd64 (9.0.2-1.1+b3) ... Selecting previously unselected package libgif7:amd64. Preparing to unpack .../378-libgif7_5.2.2-1+b1_amd64.deb ... Unpacking libgif7:amd64 (5.2.2-1+b1) ... Selecting previously unselected package libhwy1t64:amd64. Preparing to unpack .../379-libhwy1t64_1.2.0-2+b2_amd64.deb ... Unpacking libhwy1t64:amd64 (1.2.0-2+b2) ... Selecting previously unselected package liblcms2-2:amd64. Preparing to unpack .../380-liblcms2-2_2.16-2_amd64.deb ... Unpacking liblcms2-2:amd64 (2.16-2) ... Selecting previously unselected package libimath-3-1-29t64:amd64. Preparing to unpack .../381-libimath-3-1-29t64_3.1.12-1+b3_amd64.deb ... Unpacking libimath-3-1-29t64:amd64 (3.1.12-1+b3) ... Selecting previously unselected package libopenexr-3-1-30:amd64. Preparing to unpack .../382-libopenexr-3-1-30_3.1.5-5.1+b4_amd64.deb ... Unpacking libopenexr-3-1-30:amd64 (3.1.5-5.1+b4) ... Selecting previously unselected package libjxl0.10:amd64. Preparing to unpack .../383-libjxl0.10_0.10.4-2_amd64.deb ... Unpacking libjxl0.10:amd64 (0.10.4-2) ... Selecting previously unselected package libwmflite-0.2-7:amd64. Preparing to unpack .../384-libwmflite-0.2-7_0.2.13-1.1+b3_amd64.deb ... Unpacking libwmflite-0.2-7:amd64 (0.2.13-1.1+b3) ... Selecting previously unselected package libgraphicsmagick-q16-3t64. Preparing to unpack .../385-libgraphicsmagick-q16-3t64_1.4+really1.3.45-1+b2_amd64.deb ... Unpacking libgraphicsmagick-q16-3t64 (1.4+really1.3.45-1+b2) ... Selecting previously unselected package libgraphicsmagick++-q16-12t64. Preparing to unpack .../386-libgraphicsmagick++-q16-12t64_1.4+really1.3.45-1+b2_amd64.deb ... Unpacking libgraphicsmagick++-q16-12t64 (1.4+really1.3.45-1+b2) ... Selecting previously unselected package libcurl4t64:amd64. Preparing to unpack .../387-libcurl4t64_8.12.1-2_amd64.deb ... Unpacking libcurl4t64:amd64 (8.12.1-2) ... Selecting previously unselected package libaec0:amd64. Preparing to unpack .../388-libaec0_1.1.3-1+b1_amd64.deb ... Unpacking libaec0:amd64 (1.1.3-1+b1) ... Selecting previously unselected package libsz2:amd64. Preparing to unpack .../389-libsz2_1.1.3-1+b1_amd64.deb ... Unpacking libsz2:amd64 (1.1.3-1+b1) ... Selecting previously unselected package libhdf5-310:amd64. Preparing to unpack .../390-libhdf5-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libasound2-data. Preparing to unpack .../391-libasound2-data_1.2.13-1_all.deb ... Unpacking libasound2-data (1.2.13-1) ... Selecting previously unselected package libasound2t64:amd64. Preparing to unpack .../392-libasound2t64_1.2.13-1+b1_amd64.deb ... Unpacking libasound2t64:amd64 (1.2.13-1+b1) ... Selecting previously unselected package libopus0:amd64. Preparing to unpack .../393-libopus0_1.5.2-2_amd64.deb ... Unpacking libopus0:amd64 (1.5.2-2) ... Selecting previously unselected package libsamplerate0:amd64. Preparing to unpack .../394-libsamplerate0_0.2.2-4+b2_amd64.deb ... Unpacking libsamplerate0:amd64 (0.2.2-4+b2) ... Selecting previously unselected package libjack-jackd2-0:amd64. Preparing to unpack .../395-libjack-jackd2-0_1.9.22~dfsg-4_amd64.deb ... Unpacking libjack-jackd2-0:amd64 (1.9.22~dfsg-4) ... Selecting previously unselected package libportaudio2:amd64. Preparing to unpack .../396-libportaudio2_19.6.0-1.2+b3_amd64.deb ... Unpacking libportaudio2:amd64 (19.6.0-1.2+b3) ... Selecting previously unselected package libqhull-r8.0:amd64. Preparing to unpack .../397-libqhull-r8.0_2020.2-6+b2_amd64.deb ... Unpacking libqhull-r8.0:amd64 (2020.2-6+b2) ... Selecting previously unselected package libqrupdate1:amd64. Preparing to unpack .../398-libqrupdate1_1.1.5-1_amd64.deb ... Unpacking libqrupdate1:amd64 (1.1.5-1) ... Selecting previously unselected package libqscintilla2-qt6-l10n. Preparing to unpack .../399-libqscintilla2-qt6-l10n_2.14.1+dfsg-1_all.deb ... Unpacking libqscintilla2-qt6-l10n (2.14.1+dfsg-1) ... Selecting previously unselected package libb2-1:amd64. Preparing to unpack .../400-libb2-1_0.98.1-1.1+b2_amd64.deb ... Unpacking libb2-1:amd64 (0.98.1-1.1+b2) ... Selecting previously unselected package libdouble-conversion3:amd64. Preparing to unpack .../401-libdouble-conversion3_3.3.1-1_amd64.deb ... Unpacking libdouble-conversion3:amd64 (3.3.1-1) ... Selecting previously unselected package libpcre2-16-0:amd64. Preparing to unpack .../402-libpcre2-16-0_10.45-1_amd64.deb ... Unpacking libpcre2-16-0:amd64 (10.45-1) ... Selecting previously unselected package libqt6core6t64:amd64. Preparing to unpack .../403-libqt6core6t64_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6core6t64:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libwayland-client0:amd64. Preparing to unpack .../404-libwayland-client0_1.23.1-3_amd64.deb ... Unpacking libwayland-client0:amd64 (1.23.1-3) ... Selecting previously unselected package libegl-mesa0:amd64. Preparing to unpack .../405-libegl-mesa0_24.3.4-3_amd64.deb ... Unpacking libegl-mesa0:amd64 (24.3.4-3) ... Selecting previously unselected package libegl1:amd64. Preparing to unpack .../406-libegl1_1.7.0-1+b2_amd64.deb ... Unpacking libegl1:amd64 (1.7.0-1+b2) ... Selecting previously unselected package x11-common. Preparing to unpack .../407-x11-common_1%3a7.7+24_all.deb ... Unpacking x11-common (1:7.7+24) ... Selecting previously unselected package libice6:amd64. Preparing to unpack .../408-libice6_2%3a1.1.1-1_amd64.deb ... Unpacking libice6:amd64 (2:1.1.1-1) ... Selecting previously unselected package libevdev2:amd64. Preparing to unpack .../409-libevdev2_1.13.3+dfsg-1_amd64.deb ... Unpacking libevdev2:amd64 (1.13.3+dfsg-1) ... Selecting previously unselected package libmtdev1t64:amd64. Preparing to unpack .../410-libmtdev1t64_1.1.7-1_amd64.deb ... Unpacking libmtdev1t64:amd64 (1.1.7-1) ... Selecting previously unselected package libgudev-1.0-0:amd64. Preparing to unpack .../411-libgudev-1.0-0_238-6_amd64.deb ... Unpacking libgudev-1.0-0:amd64 (238-6) ... Selecting previously unselected package libwacom-common. Preparing to unpack .../412-libwacom-common_2.14.0-1_all.deb ... Unpacking libwacom-common (2.14.0-1) ... Selecting previously unselected package libwacom9:amd64. Preparing to unpack .../413-libwacom9_2.14.0-1_amd64.deb ... Unpacking libwacom9:amd64 (2.14.0-1) ... Selecting previously unselected package libinput-bin. Preparing to unpack .../414-libinput-bin_1.27.1-1_amd64.deb ... Unpacking libinput-bin (1.27.1-1) ... Selecting previously unselected package libinput10:amd64. Preparing to unpack .../415-libinput10_1.27.1-1_amd64.deb ... Unpacking libinput10:amd64 (1.27.1-1) ... Selecting previously unselected package libmd4c0:amd64. Preparing to unpack .../416-libmd4c0_0.5.2-2+b1_amd64.deb ... Unpacking libmd4c0:amd64 (0.5.2-2+b1) ... Selecting previously unselected package libdbus-1-3:amd64. Preparing to unpack .../417-libdbus-1-3_1.16.0-1_amd64.deb ... Unpacking libdbus-1-3:amd64 (1.16.0-1) ... Selecting previously unselected package libqt6dbus6:amd64. Preparing to unpack .../418-libqt6dbus6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6dbus6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libsm6:amd64. Preparing to unpack .../419-libsm6_2%3a1.2.4-1_amd64.deb ... Unpacking libsm6:amd64 (2:1.2.4-1) ... Selecting previously unselected package libts0t64:amd64. Preparing to unpack .../420-libts0t64_1.22-1.1+b1_amd64.deb ... Unpacking libts0t64:amd64 (1.22-1.1+b1) ... Selecting previously unselected package libxcb-util1:amd64. Preparing to unpack .../421-libxcb-util1_0.4.1-1_amd64.deb ... Unpacking libxcb-util1:amd64 (0.4.1-1) ... Selecting previously unselected package libxcb-image0:amd64. Preparing to unpack .../422-libxcb-image0_0.4.0-2+b2_amd64.deb ... Unpacking libxcb-image0:amd64 (0.4.0-2+b2) ... Selecting previously unselected package libxcb-render-util0:amd64. Preparing to unpack .../423-libxcb-render-util0_0.3.10-1_amd64.deb ... Unpacking libxcb-render-util0:amd64 (0.3.10-1) ... Selecting previously unselected package libxcb-cursor0:amd64. Preparing to unpack .../424-libxcb-cursor0_0.1.5-1_amd64.deb ... Unpacking libxcb-cursor0:amd64 (0.1.5-1) ... Selecting previously unselected package libxcb-icccm4:amd64. Preparing to unpack .../425-libxcb-icccm4_0.4.2-1_amd64.deb ... Unpacking libxcb-icccm4:amd64 (0.4.2-1) ... Selecting previously unselected package libxcb-keysyms1:amd64. Preparing to unpack .../426-libxcb-keysyms1_0.4.1-1_amd64.deb ... Unpacking libxcb-keysyms1:amd64 (0.4.1-1) ... Selecting previously unselected package libxcb-shape0:amd64. Preparing to unpack .../427-libxcb-shape0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-shape0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-xinput0:amd64. Preparing to unpack .../428-libxcb-xinput0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-xinput0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-xkb1:amd64. Preparing to unpack .../429-libxcb-xkb1_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-xkb1:amd64 (1.17.0-2+b1) ... Selecting previously unselected package xkb-data. Preparing to unpack .../430-xkb-data_2.42-1_all.deb ... Unpacking xkb-data (2.42-1) ... Selecting previously unselected package libxkbcommon0:amd64. Preparing to unpack .../431-libxkbcommon0_1.7.0-2_amd64.deb ... Unpacking libxkbcommon0:amd64 (1.7.0-2) ... Selecting previously unselected package libxkbcommon-x11-0:amd64. Preparing to unpack .../432-libxkbcommon-x11-0_1.7.0-2_amd64.deb ... Unpacking libxkbcommon-x11-0:amd64 (1.7.0-2) ... Selecting previously unselected package libqt6gui6:amd64. Preparing to unpack .../433-libqt6gui6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6gui6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libavahi-common-data:amd64. Preparing to unpack .../434-libavahi-common-data_0.8-16_amd64.deb ... Unpacking libavahi-common-data:amd64 (0.8-16) ... Selecting previously unselected package libavahi-common3:amd64. Preparing to unpack .../435-libavahi-common3_0.8-16_amd64.deb ... Unpacking libavahi-common3:amd64 (0.8-16) ... Selecting previously unselected package libavahi-client3:amd64. Preparing to unpack .../436-libavahi-client3_0.8-16_amd64.deb ... Unpacking libavahi-client3:amd64 (0.8-16) ... Selecting previously unselected package libcups2t64:amd64. Preparing to unpack .../437-libcups2t64_2.4.10-2+b1_amd64.deb ... Unpacking libcups2t64:amd64 (2.4.10-2+b1) ... Selecting previously unselected package libqt6widgets6:amd64. Preparing to unpack .../438-libqt6widgets6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6widgets6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6printsupport6:amd64. Preparing to unpack .../439-libqt6printsupport6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6printsupport6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqscintilla2-qt6-15:amd64. Preparing to unpack .../440-libqscintilla2-qt6-15_2.14.1+dfsg-1+b4_amd64.deb ... Unpacking libqscintilla2-qt6-15:amd64 (2.14.1+dfsg-1+b4) ... Selecting previously unselected package libqt6core5compat6:amd64. Preparing to unpack .../441-libqt6core5compat6_6.7.2-3_amd64.deb ... Unpacking libqt6core5compat6:amd64 (6.7.2-3) ... Selecting previously unselected package libqt6sql6:amd64. Preparing to unpack .../442-libqt6sql6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6sql6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6help6:amd64. Preparing to unpack .../443-libqt6help6_6.7.2-6_amd64.deb ... Unpacking libqt6help6:amd64 (6.7.2-6) ... Selecting previously unselected package libduktape207:amd64. Preparing to unpack .../444-libduktape207_2.7.0-2+b2_amd64.deb ... Unpacking libduktape207:amd64 (2.7.0-2+b2) ... Selecting previously unselected package libproxy1v5:amd64. Preparing to unpack .../445-libproxy1v5_0.5.9-1_amd64.deb ... Unpacking libproxy1v5:amd64 (0.5.9-1) ... Selecting previously unselected package libqt6network6:amd64. Preparing to unpack .../446-libqt6network6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6network6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6opengl6:amd64. Preparing to unpack .../447-libqt6opengl6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6opengl6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6openglwidgets6:amd64. Preparing to unpack .../448-libqt6openglwidgets6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6openglwidgets6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libqt6xml6:amd64. Preparing to unpack .../449-libqt6xml6_6.7.2+dfsg-6_amd64.deb ... Unpacking libqt6xml6:amd64 (6.7.2+dfsg-6) ... Selecting previously unselected package libogg0:amd64. Preparing to unpack .../450-libogg0_1.3.5-3+b2_amd64.deb ... Unpacking libogg0:amd64 (1.3.5-3+b2) ... Selecting previously unselected package libflac12t64:amd64. Preparing to unpack .../451-libflac12t64_1.4.3+ds-4_amd64.deb ... Unpacking libflac12t64:amd64 (1.4.3+ds-4) ... Selecting previously unselected package libmp3lame0:amd64. Preparing to unpack .../452-libmp3lame0_3.100-6+b3_amd64.deb ... Unpacking libmp3lame0:amd64 (3.100-6+b3) ... Selecting previously unselected package libmpg123-0t64:amd64. Preparing to unpack .../453-libmpg123-0t64_1.32.10-1_amd64.deb ... Unpacking libmpg123-0t64:amd64 (1.32.10-1) ... Selecting previously unselected package libvorbis0a:amd64. Preparing to unpack .../454-libvorbis0a_1.3.7-2+b1_amd64.deb ... Unpacking libvorbis0a:amd64 (1.3.7-2+b1) ... Selecting previously unselected package libvorbisenc2:amd64. Preparing to unpack .../455-libvorbisenc2_1.3.7-2+b1_amd64.deb ... Unpacking libvorbisenc2:amd64 (1.3.7-2+b1) ... Selecting previously unselected package libsndfile1:amd64. Preparing to unpack .../456-libsndfile1_1.2.2-2_amd64.deb ... Unpacking libsndfile1:amd64 (1.2.2-2) ... Selecting previously unselected package libspqr4:amd64. Preparing to unpack .../457-libspqr4_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libspqr4:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libumfpack6:amd64. Preparing to unpack .../458-libumfpack6_1%3a7.8.3+dfsg-3_amd64.deb ... Unpacking libumfpack6:amd64 (1:7.8.3+dfsg-3) ... Selecting previously unselected package libtext-unidecode-perl. Preparing to unpack .../459-libtext-unidecode-perl_1.30-3_all.deb ... Unpacking libtext-unidecode-perl (1.30-3) ... Selecting previously unselected package texinfo-lib. Preparing to unpack .../460-texinfo-lib_7.1.1-1+b1_amd64.deb ... Unpacking texinfo-lib (7.1.1-1+b1) ... Selecting previously unselected package tex-common. Preparing to unpack .../461-tex-common_6.18_all.deb ... Unpacking tex-common (6.18) ... Selecting previously unselected package texinfo. Preparing to unpack .../462-texinfo_7.1.1-1_all.deb ... Unpacking texinfo (7.1.1-1) ... Selecting previously unselected package octave-common. Preparing to unpack .../463-octave-common_9.4.0-1_all.deb ... Unpacking octave-common (9.4.0-1) ... Selecting previously unselected package octave. Preparing to unpack .../464-octave_9.4.0-1_amd64.deb ... Unpacking octave (9.4.0-1) ... Selecting previously unselected package libncurses6:amd64. Preparing to unpack .../465-libncurses6_6.5+20250216-1_amd64.deb ... Unpacking libncurses6:amd64 (6.5+20250216-1) ... Selecting previously unselected package libncurses-dev:amd64. Preparing to unpack .../466-libncurses-dev_6.5+20250216-1_amd64.deb ... Unpacking libncurses-dev:amd64 (6.5+20250216-1) ... Selecting previously unselected package libreadline-dev:amd64. Preparing to unpack .../467-libreadline-dev_8.2-6_amd64.deb ... Unpacking libreadline-dev:amd64 (8.2-6) ... Selecting previously unselected package libhdf5-fortran-310:amd64. Preparing to unpack .../468-libhdf5-fortran-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-fortran-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-hl-310:amd64. Preparing to unpack .../469-libhdf5-hl-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-hl-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-hl-fortran-310:amd64. Preparing to unpack .../470-libhdf5-hl-fortran-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-hl-fortran-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-cpp-310:amd64. Preparing to unpack .../471-libhdf5-cpp-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-cpp-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-hl-cpp-310:amd64. Preparing to unpack .../472-libhdf5-hl-cpp-310_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-hl-cpp-310:amd64 (1.14.5+repack-3) ... Selecting previously unselected package zlib1g-dev:amd64. Preparing to unpack .../473-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1+b1_amd64.deb ... Unpacking zlib1g-dev:amd64 (1:1.3.dfsg+really1.3.1-1+b1) ... Selecting previously unselected package libjpeg62-turbo-dev:amd64. Preparing to unpack .../474-libjpeg62-turbo-dev_1%3a2.1.5-3+b1_amd64.deb ... Unpacking libjpeg62-turbo-dev:amd64 (1:2.1.5-3+b1) ... Selecting previously unselected package libjpeg-dev:amd64. Preparing to unpack .../475-libjpeg-dev_1%3a2.1.5-3+b1_amd64.deb ... Unpacking libjpeg-dev:amd64 (1:2.1.5-3+b1) ... Selecting previously unselected package libaec-dev:amd64. Preparing to unpack .../476-libaec-dev_1.1.3-1+b1_amd64.deb ... Unpacking libaec-dev:amd64 (1.1.3-1+b1) ... Selecting previously unselected package libbrotli-dev:amd64. Preparing to unpack .../477-libbrotli-dev_1.1.0-2+b6_amd64.deb ... Unpacking libbrotli-dev:amd64 (1.1.0-2+b6) ... Selecting previously unselected package libidn2-dev:amd64. Preparing to unpack .../478-libidn2-dev_2.3.7-2+b1_amd64.deb ... Unpacking libidn2-dev:amd64 (2.3.7-2+b1) ... Selecting previously unselected package libgssrpc4t64:amd64. Preparing to unpack .../479-libgssrpc4t64_1.21.3-4_amd64.deb ... Unpacking libgssrpc4t64:amd64 (1.21.3-4) ... Selecting previously unselected package libkadm5clnt-mit12:amd64. Preparing to unpack .../480-libkadm5clnt-mit12_1.21.3-4_amd64.deb ... Unpacking libkadm5clnt-mit12:amd64 (1.21.3-4) ... Selecting previously unselected package libkdb5-10t64:amd64. Preparing to unpack .../481-libkdb5-10t64_1.21.3-4_amd64.deb ... Unpacking libkdb5-10t64:amd64 (1.21.3-4) ... Selecting previously unselected package libkadm5srv-mit12:amd64. Preparing to unpack .../482-libkadm5srv-mit12_1.21.3-4_amd64.deb ... Unpacking libkadm5srv-mit12:amd64 (1.21.3-4) ... Selecting previously unselected package krb5-multidev:amd64. Preparing to unpack .../483-krb5-multidev_1.21.3-4_amd64.deb ... Unpacking krb5-multidev:amd64 (1.21.3-4) ... Selecting previously unselected package libkrb5-dev:amd64. Preparing to unpack .../484-libkrb5-dev_1.21.3-4_amd64.deb ... Unpacking libkrb5-dev:amd64 (1.21.3-4) ... Selecting previously unselected package libldap-dev:amd64. Preparing to unpack .../485-libldap-dev_2.6.9+dfsg-1_amd64.deb ... Unpacking libldap-dev:amd64 (2.6.9+dfsg-1) ... Selecting previously unselected package libpkgconf3:amd64. Preparing to unpack .../486-libpkgconf3_1.8.1-4_amd64.deb ... Unpacking libpkgconf3:amd64 (1.8.1-4) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../487-pkgconf-bin_1.8.1-4_amd64.deb ... Unpacking pkgconf-bin (1.8.1-4) ... Selecting previously unselected package pkgconf:amd64. Preparing to unpack .../488-pkgconf_1.8.1-4_amd64.deb ... Unpacking pkgconf:amd64 (1.8.1-4) ... Selecting previously unselected package libnghttp2-dev:amd64. Preparing to unpack .../489-libnghttp2-dev_1.64.0-1_amd64.deb ... Unpacking libnghttp2-dev:amd64 (1.64.0-1) ... Selecting previously unselected package libnghttp3-dev:amd64. Preparing to unpack .../490-libnghttp3-dev_1.6.0-2_amd64.deb ... Unpacking libnghttp3-dev:amd64 (1.6.0-2) ... Selecting previously unselected package libpsl-dev:amd64. Preparing to unpack .../491-libpsl-dev_0.21.2-1.1+b1_amd64.deb ... Unpacking libpsl-dev:amd64 (0.21.2-1.1+b1) ... Selecting previously unselected package libgmpxx4ldbl:amd64. Preparing to unpack .../492-libgmpxx4ldbl_2%3a6.3.0+dfsg-3_amd64.deb ... Unpacking libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-3) ... Selecting previously unselected package libgmp-dev:amd64. Preparing to unpack .../493-libgmp-dev_2%3a6.3.0+dfsg-3_amd64.deb ... Unpacking libgmp-dev:amd64 (2:6.3.0+dfsg-3) ... Selecting previously unselected package libevent-2.1-7t64:amd64. Preparing to unpack .../494-libevent-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libunbound8:amd64. Preparing to unpack .../495-libunbound8_1.22.0-1+b1_amd64.deb ... Unpacking libunbound8:amd64 (1.22.0-1+b1) ... Selecting previously unselected package libgnutls-dane0t64:amd64. Preparing to unpack .../496-libgnutls-dane0t64_3.8.9-2_amd64.deb ... Unpacking libgnutls-dane0t64:amd64 (3.8.9-2) ... Selecting previously unselected package libgnutls-openssl27t64:amd64. Preparing to unpack .../497-libgnutls-openssl27t64_3.8.9-2_amd64.deb ... Unpacking libgnutls-openssl27t64:amd64 (3.8.9-2) ... Selecting previously unselected package libp11-kit-dev:amd64. Preparing to unpack .../498-libp11-kit-dev_0.25.5-3_amd64.deb ... Unpacking libp11-kit-dev:amd64 (0.25.5-3) ... Selecting previously unselected package libtasn1-6-dev:amd64. Preparing to unpack .../499-libtasn1-6-dev_4.20.0-2_amd64.deb ... Unpacking libtasn1-6-dev:amd64 (4.20.0-2) ... Selecting previously unselected package nettle-dev:amd64. Preparing to unpack .../500-nettle-dev_3.10.1-1_amd64.deb ... Unpacking nettle-dev:amd64 (3.10.1-1) ... Selecting previously unselected package libgnutls28-dev:amd64. Preparing to unpack .../501-libgnutls28-dev_3.8.9-2_amd64.deb ... Unpacking libgnutls28-dev:amd64 (3.8.9-2) ... Selecting previously unselected package librtmp-dev:amd64. Preparing to unpack .../502-librtmp-dev_2.4+20151223.gitfa8646d.1-2+b5_amd64.deb ... Unpacking librtmp-dev:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Selecting previously unselected package libssl-dev:amd64. Preparing to unpack .../503-libssl-dev_3.4.1-1_amd64.deb ... Unpacking libssl-dev:amd64 (3.4.1-1) ... Selecting previously unselected package libssh2-1-dev:amd64. Preparing to unpack .../504-libssh2-1-dev_1.11.1-1_amd64.deb ... Unpacking libssh2-1-dev:amd64 (1.11.1-1) ... Selecting previously unselected package libzstd-dev:amd64. Preparing to unpack .../505-libzstd-dev_1.5.6+dfsg-2_amd64.deb ... Unpacking libzstd-dev:amd64 (1.5.6+dfsg-2) ... Selecting previously unselected package libcurl4-openssl-dev:amd64. Preparing to unpack .../506-libcurl4-openssl-dev_8.12.1-2_amd64.deb ... Unpacking libcurl4-openssl-dev:amd64 (8.12.1-2) ... Selecting previously unselected package hdf5-helpers. Preparing to unpack .../507-hdf5-helpers_1.14.5+repack-3_amd64.deb ... Unpacking hdf5-helpers (1.14.5+repack-3) ... Selecting previously unselected package libhdf5-dev. Preparing to unpack .../508-libhdf5-dev_1.14.5+repack-3_amd64.deb ... Unpacking libhdf5-dev (1.14.5+repack-3) ... Selecting previously unselected package xorg-sgml-doctools. Preparing to unpack .../509-xorg-sgml-doctools_1%3a1.11-1.1_all.deb ... Unpacking xorg-sgml-doctools (1:1.11-1.1) ... Selecting previously unselected package x11proto-dev. Preparing to unpack .../510-x11proto-dev_2024.1-1_all.deb ... Unpacking x11proto-dev (2024.1-1) ... Selecting previously unselected package libxau-dev:amd64. Preparing to unpack .../511-libxau-dev_1%3a1.0.11-1_amd64.deb ... Unpacking libxau-dev:amd64 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp-dev:amd64. Preparing to unpack .../512-libxdmcp-dev_1%3a1.1.5-1_amd64.deb ... Unpacking libxdmcp-dev:amd64 (1:1.1.5-1) ... Selecting previously unselected package xtrans-dev. Preparing to unpack .../513-xtrans-dev_1.4.0-1_all.deb ... Unpacking xtrans-dev (1.4.0-1) ... Selecting previously unselected package libxcb1-dev:amd64. Preparing to unpack .../514-libxcb1-dev_1.17.0-2+b1_amd64.deb ... Unpacking libxcb1-dev:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libx11-dev:amd64. Preparing to unpack .../515-libx11-dev_2%3a1.8.10-2_amd64.deb ... Unpacking libx11-dev:amd64 (2:1.8.10-2) ... Selecting previously unselected package libglx-dev:amd64. Preparing to unpack .../516-libglx-dev_1.7.0-1+b2_amd64.deb ... Unpacking libglx-dev:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libgl-dev:amd64. Preparing to unpack .../517-libgl-dev_1.7.0-1+b2_amd64.deb ... Unpacking libgl-dev:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libblas-dev:amd64. Preparing to unpack .../518-libblas-dev_3.12.1-2_amd64.deb ... Unpacking libblas-dev:amd64 (3.12.1-2) ... Selecting previously unselected package liblapack-dev:amd64. Preparing to unpack .../519-liblapack-dev_3.12.1-2_amd64.deb ... Unpacking liblapack-dev:amd64 (3.12.1-2) ... Selecting previously unselected package libfftw3-long3:amd64. Preparing to unpack .../520-libfftw3-long3_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-long3:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-quad3:amd64. Preparing to unpack .../521-libfftw3-quad3_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-quad3:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-bin. Preparing to unpack .../522-libfftw3-bin_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-bin (3.3.10-2+b1) ... Selecting previously unselected package libfftw3-dev:amd64. Preparing to unpack .../523-libfftw3-dev_3.3.10-2+b1_amd64.deb ... Unpacking libfftw3-dev:amd64 (3.3.10-2+b1) ... Selecting previously unselected package libgfortran-14-dev:amd64. Preparing to unpack .../524-libgfortran-14-dev_14.2.0-17_amd64.deb ... Unpacking libgfortran-14-dev:amd64 (14.2.0-17) ... Selecting previously unselected package gfortran-14-x86-64-linux-gnu. Preparing to unpack .../525-gfortran-14-x86-64-linux-gnu_14.2.0-17_amd64.deb ... Unpacking gfortran-14-x86-64-linux-gnu (14.2.0-17) ... Selecting previously unselected package gfortran-14. Preparing to unpack .../526-gfortran-14_14.2.0-17_amd64.deb ... Unpacking gfortran-14 (14.2.0-17) ... Selecting previously unselected package gfortran-x86-64-linux-gnu. Preparing to unpack .../527-gfortran-x86-64-linux-gnu_4%3a14.2.0-1_amd64.deb ... Unpacking gfortran-x86-64-linux-gnu (4:14.2.0-1) ... Selecting previously unselected package gfortran. Preparing to unpack .../528-gfortran_4%3a14.2.0-1_amd64.deb ... Unpacking gfortran (4:14.2.0-1) ... Selecting previously unselected package octave-dev. Preparing to unpack .../529-octave-dev_9.4.0-1_amd64.deb ... Unpacking octave-dev (9.4.0-1) ... Selecting previously unselected package dh-octave. Preparing to unpack .../530-dh-octave_1.8.0_all.deb ... Unpacking dh-octave (1.8.0) ... Selecting previously unselected package python3-mpmath. Preparing to unpack .../531-python3-mpmath_1.3.0-1_all.deb ... Unpacking python3-mpmath (1.3.0-1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../532-python3-packaging_24.2-1_all.deb ... Unpacking python3-packaging (24.2-1) ... Selecting previously unselected package python3-sympy. Preparing to unpack .../533-python3-sympy_1.13.3-3_all.deb ... Unpacking python3-sympy (1.13.3-3) ... Setting up libapt-pkg-perl (0.1.41) ... Setting up liblz1:amd64 (1.15-2) ... Setting up libhwy1t64:amd64 (1.2.0-2+b2) ... Setting up media-types (11.0.0) ... Setting up libmodule-pluggable-perl (5.2-5) ... Setting up libb2-1:amd64 (0.98.1-1.1+b2) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up libgraphite2-3:amd64 (1.3.14-2+b1) ... Setting up libstring-escape-perl (2010.002-3) ... Setting up liblcms2-2:amd64 (2.16-2) ... Setting up libberkeleydb-perl:amd64 (0.66-1) ... Setting up libpixman-1-0:amd64 (0.44.0-3) ... Setting up plzip (1.12-1) ... update-alternatives: using /usr/bin/lzip.plzip to provide /usr/bin/lzip (lzip) in auto mode update-alternatives: using /usr/bin/lzip.plzip to provide /usr/bin/lzip-compressor (lzip-compressor) in auto mode update-alternatives: using /usr/bin/lzip.plzip to provide /usr/bin/lzip-decompressor (lzip-decompressor) in auto mode Setting up libtext-charwidth-perl:amd64 (0.04-11+b4) ... Setting up libsharpyuv0:amd64 (1.5.0-0.1) ... Setting up libaom3:amd64 (3.12.0-1) ... Setting up libpciaccess0:amd64 (0.17-3+b3) ... Setting up libfile-which-perl (1.27-2) ... Setting up libxau6:amd64 (1:1.0.11-1) ... Setting up libxdmcp6:amd64 (1:1.1.5-1) ... Setting up libdouble-conversion3:amd64 (3.3.1-1) ... Setting up libkeyutils1:amd64 (1.6.3-4) ... Setting up libxcb1:amd64 (1.17.0-2+b1) ... Setting up libunicode-utf8-perl (0.62-2+b3) ... Setting up libfftw3-single3:amd64 (3.3.10-2+b1) ... Setting up libset-intspan-perl (1.19-3) ... Setting up libicu72:amd64 (72.1-6) ... Setting up libxcb-xfixes0:amd64 (1.17.0-2+b1) ... Setting up libogg0:amd64 (1.3.5-3+b2) ... Setting up libmouse-perl:amd64 (2.5.11-1+b1) ... Setting up libzstd-dev:amd64 (1.5.6+dfsg-2) ... Setting up liblerc4:amd64 (4.0.0+ds-5) ... Setting up libpod-pom-perl (2.01-4) ... Setting up bsdextrautils (2.40.4-4) ... Setting up hdf5-helpers (1.14.5+repack-3) ... Setting up libwmflite-0.2-7:amd64 (0.2.13-1.1+b3) ... Setting up libregexp-pattern-perl (0.2.14-2) ... Setting up libgpg-error0:amd64 (1.51-3) ... Setting up libdata-messagepack-perl (1.02-1+b4) ... Setting up libclass-inspector-perl (1.36-3) ... Setting up libxcb-xinput0:amd64 (1.17.0-2+b1) ... Setting up libdynaloader-functions-perl (0.004-1) ... Setting up libdatrie1:amd64 (0.2.13-3+b1) ... Setting up libtext-glob-perl (0.11-3) ... Setting up libclass-method-modifiers-perl (2.15-1) ... Setting up liblist-compare-perl (0.55-2) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libxcb-render0:amd64 (1.17.0-2+b1) ... Setting up libclone-perl:amd64 (0.47-1+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:amd64 (0.2.5-2) ... Setting up libsub-identify-perl (0.14-3+b3) ... Setting up libcpanel-json-xs-perl:amd64 (4.39-1) ... Setting up libglvnd0:amd64 (1.7.0-1+b2) ... Setting up libio-stringy-perl (2.113-2) ... Setting up libhtml-tagset-perl (3.24-1) ... Setting up libts0t64:amd64 (1.22-1.1+b1) ... Setting up liblog-any-perl (1.717-1) ... Setting up libyaml-pp-perl (0.39.0-1) ... Setting up libxcb-glx0:amd64 (1.17.0-2+b1) ... Setting up libdevel-size-perl (0.84-1+b1) ... Setting up unzip (6.0-28) ... Setting up libdebhelper-perl (13.24.1) ... Setting up libbrotli1:amd64 (1.1.0-2+b6) ... Setting up libedit2:amd64 (3.1-20250104-1) ... Setting up libregexp-pattern-license-perl (3.11.2-1) ... Setting up libconvert-binhex-perl (1.125-3) ... Setting up liblwp-mediatypes-perl (6.04-2) ... Setting up libmagic1t64:amd64 (1:5.45-3+b1) ... Setting up libyaml-libyaml-perl (0.903.0+ds-1) ... Setting up fonts-freefont-otf (20211204+svn4273-2) ... Setting up libio-interactive-perl (1.026-1) ... Setting up libxcb-keysyms1:amd64 (0.4.1-1) ... Setting up libxcb-shape0:amd64 (1.17.0-2+b1) ... Setting up x11-common (1:7.7+24) ... invoke-rc.d: could not determine current runlevel Setting up X socket directories... /tmp/.X11-unix /tmp/.ICE-unix. Setting up libtry-tiny-perl (0.32-1) ... Setting up libsensors-config (1:3.6.0-10) ... Setting up libnghttp2-14:amd64 (1.64.0-1) ... Setting up libdeflate0:amd64 (1.23-1+b1) ... Setting up perl-openssl-defaults:amd64 (7+b2) ... Setting up libmldbm-perl (2.05-4) ... Setting up libxml-namespacesupport-perl (1.12-2) ... Setting up libfftw3-long3:amd64 (3.3.10-2+b1) ... Setting up gettext-base (0.23.1-1) ... Setting up m4 (1.4.19-5) ... Setting up libevent-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libgcrypt20:amd64 (1.11.0-7) ... Setting up libclone-choose-perl (0.010-2) ... Setting up libqhull-r8.0:amd64 (2020.2-6+b2) ... Setting up libxcb-render-util0:amd64 (0.3.10-1) ... Setting up xkb-data (2.42-1) ... Setting up liblzo2-2:amd64 (2.10-3+b1) ... Setting up libtime-moment-perl (0.44-2+b4) ... Setting up libencode-locale-perl (1.05-3) ... Setting up libxcb-shm0:amd64 (1.17.0-2+b1) ... Setting up libxcb-icccm4:amd64 (0.4.2-1) ... Setting up libcom-err2:amd64 (1.47.2-1) ... Setting up file (1:5.45-3+b1) ... Setting up texinfo-lib (7.1.1-1+b1) ... Setting up libmpg123-0t64:amd64 (1.32.10-1) ... Setting up libconfig-tiny-perl (2.30-1) ... Setting up libsereal-encoder-perl (5.004+ds-1+b3) ... Setting up liblist-utilsby-perl (0.12-2) ... Setting up libyaml-tiny-perl (1.76-1) ... Setting up libtext-wrapi18n-perl (0.06-10) ... Setting up libjbig0:amd64 (2.1-6.1+b2) ... Setting up octave-common (9.4.0-1) ... Setting up libregexp-common-perl (2024080801-1) ... Setting up libpcre2-16-0:amd64 (10.45-1) ... Setting up libaec0:amd64 (1.1.3-1+b1) ... Setting up libnet-netmask-perl (2.0002-2) ... Setting up libopengl0:amd64 (1.7.0-1+b2) ... Setting up libsub-install-perl (0.929-1) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up libxcb-util1:amd64 (0.4.1-1) ... Setting up libindirect-perl (0.39-2+b4) ... Setting up libxcb-xkb1:amd64 (1.17.0-2+b1) ... Setting up libxcb-image0:amd64 (0.4.0-2+b2) ... Setting up libkrb5support0:amd64 (1.21.3-4) ... Setting up libnumber-compare-perl (0.03-3) ... Setting up libsasl2-modules-db:amd64 (2.1.28+dfsg1-8+b1) ... Setting up tzdata (2025a-2) ... Current default time zone: 'Etc/UTC' Local time is now: Thu Mar 26 21:05:07 UTC 2026. Universal Time is now: Thu Mar 26 21:05:07 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libxcb-present0:amd64 (1.17.0-2+b1) ... Setting up liberror-perl (0.17029-2) ... Setting up libasound2-data (1.2.13-1) ... Setting up libjson-maybexs-perl (1.004008-1) ... Setting up libxml-sax-base-perl (1.09-3) ... Setting up libio-string-perl (1.08-4) ... Setting up libboolean-perl (0.46-3) ... Setting up libnetaddr-ip-perl (4.079+dfsg-2+b5) ... Setting up xtrans-dev (1.4.0-1) ... Setting up autotools-dev (20220109.1) ... Setting up libz3-4:amd64 (4.13.3-1) ... Setting up libblas3:amd64 (3.12.1-2) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/x86_64-linux-gnu/libblas.so.3 (libblas.so.3-x86_64-linux-gnu) in auto mode Setting up libclass-data-inheritable-perl (0.10-1) ... Setting up libunbound8:amd64 (1.22.0-1+b1) ... Setting up libpkgconf3:amd64 (1.8.1-4) ... Setting up libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-3) ... Setting up libalgorithm-c3-perl (0.11-2) ... Setting up libasound2t64:amd64 (1.2.13-1+b1) ... Setting up liblog-log4perl-perl (1.57-1) ... Setting up libtext-reform-perl (1.20-5) ... Setting up libjpeg62-turbo:amd64 (1:2.1.5-3+b1) ... Setting up libx11-data (2:1.8.10-2) ... Setting up libsvtav1enc2:amd64 (2.3.0+dfsg-1) ... Setting up libjpeg62-turbo-dev:amd64 (1:2.1.5-3+b1) ... Setting up libfile-find-rule-perl (0.34-3) ... Setting up libxcb-sync1:amd64 (1.17.0-2+b1) ... Setting up libipc-system-simple-perl (1.30-2) ... Setting up libio-tiecombine-perl (1.005-3) ... Setting up libnet-domain-tld-perl (1.75-4) ... Setting up libperlio-utf8-strict-perl (0.010-1+b3) ... Setting up aglfn (1.7+git20191031.4036a9c-2) ... Setting up libxcb-cursor0:amd64 (0.1.5-1) ... Setting up libavahi-common-data:amd64 (0.8-16) ... Setting up libncurses6:amd64 (6.5+20250216-1) ... Setting up libdbus-1-3:amd64 (1.16.0-1) ... Setting up libfftw3-quad3:amd64 (3.3.10-2+b1) ... Setting up libfribidi0:amd64 (1.0.16-1) ... Setting up libopus0:amd64 (1.5.2-2) ... Setting up t1utils (1.41-4) ... Setting up diffstat (1.67-1) ... Setting up libimagequant0:amd64 (2.18.0-1+b2) ... Setting up libproc2-0:amd64 (2:4.0.4-7) ... Setting up comerr-dev:amd64 (2.1-1.47.2-1) ... Setting up libunistring5:amd64 (1.3-1) ... Setting up fonts-dejavu-mono (2.37-8) ... Setting up libssl-dev:amd64 (3.4.1-1) ... Setting up libpng16-16t64:amd64 (1.6.46-4) ... Setting up libimath-3-1-29t64:amd64 (3.1.12-1+b3) ... Setting up libvorbis0a:amd64 (1.3.7-2+b1) ... Setting up libvariable-magic-perl (0.64-1+b1) ... Setting up libio-html-perl (1.004-3) ... Setting up libtext-template-perl (1.61-1) ... Setting up libpod-parser-perl (1.67-1) ... Setting up autopoint (0.23.1-1) ... Setting up libb-hooks-op-check-perl:amd64 (0.22-3+b2) ... Setting up fonts-dejavu-core (2.37-8) ... Setting up liblist-moreutils-xs-perl (0.430-4+b2) ... Setting up pkgconf-bin (1.8.1-4) ... Setting up libsensors5:amd64 (1:3.6.0-10+b1) ... Setting up libk5crypto3:amd64 (1.21.3-4) ... Setting up libqscintilla2-qt6-l10n (2.14.1+dfsg-1) ... Setting up libltdl7:amd64 (2.5.4-3) ... Setting up libfftw3-double3:amd64 (3.3.10-2+b1) ... Setting up libglapi-mesa:amd64 (24.3.4-3) ... Setting up libparams-util-perl (1.102-3+b1) ... Setting up libsasl2-2:amd64 (2.1.28+dfsg1-8+b1) ... Setting up libgfortran5:amd64 (14.2.0-17) ... Setting up libvulkan1:amd64 (1.4.304.0-1) ... Setting up libtime-duration-perl (1.21-2) ... Setting up autoconf (2.72-3) ... Setting up libtext-xslate-perl:amd64 (3.5.9-2+b1) ... Setting up libnghttp3-9:amd64 (1.6.0-2) ... Setting up libsub-exporter-progressive-perl (0.001013-3) ... Setting up libwebp7:amd64 (1.5.0-0.1) ... Setting up libarray-intspan-perl (2.004-2) ... Setting up libcapture-tiny-perl (0.50-1) ... Setting up libnghttp3-dev:amd64 (1.6.0-2) ... Setting up libtimedate-perl (2.3300-2) ... Setting up libexporter-lite-perl (0.09-2) ... Setting up libsub-name-perl:amd64 (0.28-1) ... Setting up libgif7:amd64 (5.2.2-1+b1) ... Setting up zlib1g-dev:amd64 (1:1.3.dfsg+really1.3.1-1+b1) ... Setting up libffi8:amd64 (3.4.7-1) ... Setting up dwz (0.15-1+b1) ... Setting up libdata-validate-domain-perl (0.15-1) ... Setting up libproc-processtable-perl:amd64 (0.636-1+b3) ... Setting up libparse-recdescent-perl (1.967015+dfsg-4) ... Setting up libdav1d7:amd64 (1.5.1-1) ... Setting up libmtdev1t64:amd64 (1.1.7-1) ... Setting up sensible-utils (0.0.24) ... Setting up libduktape207:amd64 (2.7.0-2+b2) ... Setting up libxshmfence1:amd64 (1.3-1+b3) ... Setting up libtiff6:amd64 (4.5.1+git230720-5) ... Setting up libxcb-randr0:amd64 (1.17.0-2+b1) ... Setting up librav1e0.7:amd64 (0.7.1-9+b1) ... Setting up libpath-tiny-perl (0.146-1) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up lzop (1.04-2) ... Setting up libassuan9:amd64 (3.0.1-2) ... Setting up procps (2:4.0.4-7) ... Setting up libjson-perl (4.10000-1) ... Setting up liblog-any-adapter-screen-perl (0.141-1) ... Setting up librole-tiny-perl (2.002004-1) ... Setting up libtasn1-6:amd64 (4.20.0-2) ... Setting up libipc-run3-perl (0.049-1) ... Setting up libmd4c0:amd64 (0.5.2-2+b1) ... Setting up libregexp-wildcards-perl (1.05-3) ... Setting up libmousex-strictconstructor-perl (0.02-3) ... Setting up libfile-sharedir-perl (1.118-3) ... Setting up libsub-uplevel-perl (0.2800-3) ... Setting up libsuitesparseconfig7:amd64 (1:7.8.3+dfsg-3) ... Setting up liblua5.4-0:amd64 (5.4.7-1+b2) ... Setting up libx11-6:amd64 (2:1.8.10-2) ... Setting up libaliased-perl (0.34-3) ... Setting up libthai-data (0.1.29-2) ... Setting up xorg-sgml-doctools (1:1.11-1.1) ... Setting up netbase (6.4) ... Setting up libabsl20230802:amd64 (20230802.1-4) ... Setting up libngtcp2-16:amd64 (1.9.1-1) ... Setting up libstrictures-perl (2.000006-1) ... Setting up libsub-quote-perl (2.006008-1) ... Setting up libdevel-stacktrace-perl (2.0500-1) ... Setting up libclass-xsaccessor-perl (1.19-4+b5) ... Setting up libtext-autoformat-perl (1.750000-2) ... Setting up libkrb5-3:amd64 (1.21.3-4) ... Setting up libglu1-mesa:amd64 (9.0.2-1.1+b3) ... Setting up libflac12t64:amd64 (1.4.3+ds-4) ... Setting up libtoml-tiny-perl (0.19-1) ... Setting up libstemmer0d:amd64 (2.2.0-4+b2) ... Setting up libsort-versions-perl (1.62-3) ... Setting up libssh2-1t64:amd64 (1.11.1-1) ... Setting up libexporter-tiny-perl (1.006002-1) ... Setting up libterm-readkey-perl (2.38-2+b4) ... Setting up libtext-unidecode-perl (1.30-3) ... Setting up libde265-0:amd64 (1.0.15-1+b2) ... Setting up libfont-ttf-perl (1.06-2) ... Setting up libfile-homedir-perl (1.006-2) ... Setting up libsamplerate0:amd64 (0.2.2-4+b2) ... Setting up libtasn1-6-dev:amd64 (4.20.0-2) ... Setting up openssl (3.4.1-1) ... Setting up libwebpmux3:amd64 (1.5.0-0.1) ... Setting up libtext-levenshteinxs-perl (0.03-5+b4) ... Setting up libperlio-gzip-perl (0.20-1+b4) ... Setting up libdrm-common (2.4.123-1) ... Setting up libyuv0:amd64 (0.0.1904.20250204-1) ... Setting up libevdev2:amd64 (1.13.3+dfsg-1) ... Setting up readline-common (8.2-6) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up libhtml-html5-entities-perl (0.004-3) ... Setting up libtext-levenshtein-damerau-perl (0.41-3) ... Setting up libsereal-decoder-perl (5.004+ds-1+b3) ... Setting up libmarkdown2:amd64 (2.2.7-2.1) ... Setting up libldap2:amd64 (2.6.9+dfsg-1) ... Setting up liburi-perl (5.30-1) ... Setting up iso-codes (4.17.0-1) ... Setting up libnet-ipv6addr-perl (1.02-1) ... Setting up libbrotli-dev:amd64 (1.1.0-2+b6) ... Setting up libmp3lame0:amd64 (3.100-6+b3) ... Setting up libblas-dev:amd64 (3.12.1-2) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so to provide /usr/lib/x86_64-linux-gnu/libblas.so (libblas.so-x86_64-linux-gnu) in auto mode Setting up libsz2:amd64 (1.1.3-1+b1) ... Setting up libvorbisenc2:amd64 (1.3.7-2+b1) ... Setting up libdata-validate-ip-perl (0.31-1) ... Setting up libwacom-common (2.14.0-1) ... Setting up libmousex-nativetraits-perl (1.09-3) ... Setting up libemail-address-xs-perl (1.05-1+b4) ... Setting up libxkbcommon0:amd64 (1.7.0-2) ... Setting up libwayland-client0:amd64 (1.23.1-3) ... Setting up libnet-ssleay-perl:amd64 (1.94-3) ... Setting up automake (1:1.17-3) ... update-alternatives: using /usr/bin/automake-1.17 to provide /usr/bin/automake (automake) in auto mode Setting up libgfortran-14-dev:amd64 (14.2.0-17) ... Setting up x11proto-dev (2024.1-1) ... Setting up libfile-stripnondeterminism-perl (1.14.1-2) ... Setting up libxcb-dri3-0:amd64 (1.17.0-2+b1) ... Setting up gnuplot-data (6.0.2+dfsg1-1) ... Setting up libllvm19:amd64 (1:19.1.7-1+b1) ... Setting up libwayland-server0:amd64 (1.23.1-3) ... Setting up libx11-xcb1:amd64 (2:1.8.10-2) ... Setting up libice6:amd64 (2:1.1.1-1) ... Setting up libhttp-date-perl (6.06-1) ... Setting up liblapack3:amd64 (3.12.1-2) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/x86_64-linux-gnu/liblapack.so.3 (liblapack.so.3-x86_64-linux-gnu) in auto mode Setting up libncurses-dev:amd64 (6.5+20250216-1) ... Setting up libfile-basedir-perl (0.09-2) ... Setting up gettext (0.23.1-1) ... Setting up libarpack2t64:amd64 (3.9.1-4) ... Setting up libgmp-dev:amd64 (2:6.3.0+dfsg-3) ... Setting up libamd3:amd64 (1:7.8.3+dfsg-3) ... Setting up libfile-listing-perl (6.16-1) ... Setting up libxau-dev:amd64 (1:1.0.11-1) ... Setting up libxpm4:amd64 (1:3.5.17-1+b3) ... Setting up nettle-dev:amd64 (3.10.1-1) ... Setting up libxrender1:amd64 (1:0.9.10-1.1+b4) ... Setting up libtool (2.5.4-3) ... Setting up libcolamd3:amd64 (1:7.8.3+dfsg-3) ... Setting up libfftw3-bin (3.3.10-2+b1) ... Setting up fontconfig-config (2.15.0-2) ... Setting up liblist-moreutils-perl (0.430-2) ... Setting up libpod-constants-perl (0.19-2) ... Setting up libhash-merge-perl (0.302-1) ... Setting up libsoftware-copyright-perl (0.012-2) ... Setting up libaec-dev:amd64 (1.1.3-1+b1) ... Setting up libavahi-common3:amd64 (0.8-16) ... Setting up libcxsparse4:amd64 (1:7.8.3+dfsg-3) ... Setting up libjpeg-dev:amd64 (1:2.1.5-3+b1) ... Setting up libxext6:amd64 (2:1.3.4-1+b3) ... Setting up libnet-http-perl (6.23-1) ... Setting up libpath-iterator-rule-perl (1.015-2) ... Setting up libtext-markdown-discount-perl (0.18-1) ... Setting up libidn2-0:amd64 (2.3.7-2+b1) ... Setting up libexception-class-perl (1.45-1) ... Setting up libclass-c3-perl (0.35-2) ... Setting up libqrupdate1:amd64 (1.1.5-1) ... Setting up libdevel-callchecker-perl:amd64 (0.009-1+b1) ... Setting up libcamd3:amd64 (1:7.8.3+dfsg-3) ... Setting up gfortran-14-x86-64-linux-gnu (14.2.0-17) ... Setting up pkgconf:amd64 (1.8.1-4) ... Setting up libxxf86vm1:amd64 (1:1.1.4-1+b4) ... Setting up libxs-parse-sublike-perl:amd64 (0.37-1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up patchutils (0.4.2-1) ... Setting up libthai0:amd64 (0.1.29-2+b1) ... Setting up ca-certificates (20241223) ... Updating certificates in /etc/ssl/certs... 152 added, 0 removed; done. Setting up libxdmcp-dev:amd64 (1:1.1.5-1) ... Setting up libglib2.0-0t64:amd64 (2.83.3-2) ... No schema files found: doing nothing. Setting up libdata-validate-uri-perl (0.07-3) ... Setting up libxs-parse-keyword-perl (0.48-2) ... Setting up libtest-exception-perl (0.43-3) ... Setting up libfreetype6:amd64 (2.13.3+dfsg-1) ... Setting up libglpk40:amd64 (5.0-1+b2) ... Setting up libxfixes3:amd64 (1:6.0.0-2+b4) ... Setting up libstring-copyright-perl (0.003014-1) ... Setting up libldap-dev:amd64 (2.6.9+dfsg-1) ... Setting up libopenexr-3-1-30:amd64 (3.1.5-5.1+b4) ... Setting up shared-mime-info (2.4-5+b2) ... Setting up libp11-kit0:amd64 (0.25.5-3) ... Setting up libxinerama1:amd64 (2:1.1.4-3+b3) ... Setting up libxkbcommon-x11-0:amd64 (1.7.0-2) ... Setting up liblapack-dev:amd64 (3.12.1-2) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/lapack/liblapack.so to provide /usr/lib/x86_64-linux-gnu/liblapack.so (liblapack.so-x86_64-linux-gnu) in auto mode Setting up libgssapi-krb5-2:amd64 (1.21.3-4) ... Setting up libdata-optlist-perl (0.114-1) ... Setting up libgav1-1:amd64 (0.19.0-3) ... Setting up ucf (3.0050) ... Setting up libssh2-1-dev:amd64 (1.11.1-1) ... Setting up libidn2-dev:amd64 (2.3.7-2+b1) ... Setting up libccolamd3:amd64 (1:7.8.3+dfsg-3) ... Setting up libreadline8t64:amd64 (8.2-6) ... Setting up dh-strip-nondeterminism (1.14.1-2) ... Setting up libwww-robotrules-perl (6.02-1) ... Setting up libsyntax-keyword-try-perl (0.30-1+b1) ... Setting up libjack-jackd2-0:amd64 (1.9.22~dfsg-4) ... Setting up libdrm2:amd64 (2.4.123-1) ... Setting up groff-base (1.23.0-7) ... Setting up libhtml-parser-perl:amd64 (3.83-1+b2) ... Setting up gpgconf (2.2.46-1+b1) ... Setting up libharfbuzz0b:amd64 (10.2.0-1) ... Setting up libfontconfig1:amd64 (2.15.0-2) ... Setting up libsndfile1:amd64 (1.2.2-2) ... Setting up libmro-compat-perl (0.15-2) ... Setting up gfortran-14 (14.2.0-17) ... Setting up libsm6:amd64 (2:1.2.4-1) ... Setting up libpython3.13-stdlib:amd64 (3.13.2-1) ... Setting up libfftw3-dev:amd64 (3.3.10-2+b1) ... Setting up libavahi-client3:amd64 (0.8-16) ... Setting up libio-socket-ssl-perl (2.089-1) ... Setting up gpg (2.2.46-1+b1) ... Setting up libgudev-1.0-0:amd64 (238-6) ... Setting up libp11-kit-dev:amd64 (0.25.5-3) ... Setting up libsub-exporter-perl (0.990-1) ... Setting up libpython3-stdlib:amd64 (3.13.1-2) ... Setting up libhttp-message-perl (7.00-2) ... Setting up libdrm-amdgpu1:amd64 (2.4.123-1) ... Setting up libhtml-form-perl (6.12-1) ... Setting up libjxl0.10:amd64 (0.10.4-2) ... Setting up libgnutls30t64:amd64 (3.8.9-2) ... Setting up libiterator-perl (0.03+ds1-2) ... Setting up libgnutls-openssl27t64:amd64 (3.8.9-2) ... Setting up libnghttp2-dev:amd64 (1.64.0-1) ... Setting up libportaudio2:amd64 (19.6.0-1.2+b3) ... Setting up libqt6core6t64:amd64 (6.7.2+dfsg-6) ... Setting up libhttp-negotiate-perl (6.01-2) ... Setting up fontconfig (2.15.0-2) ... Regenerating fonts cache... done. Setting up libavif16:amd64 (1.1.1-1) ... Setting up libcarp-assert-more-perl (2.8.0-1) ... Setting up libcholmod5:amd64 (1:7.8.3+dfsg-3) ... Setting up libxft2:amd64 (2.3.6-1+b4) ... Setting up libfeature-compat-try-perl (0.05-1) ... Setting up libxcb1-dev:amd64 (1.17.0-2+b1) ... Setting up libiterator-util-perl (0.02+ds1-2) ... Setting up libhttp-cookies-perl (6.11-1) ... Setting up libspqr4:amd64 (1:7.8.3+dfsg-3) ... Setting up python3.13 (3.13.2-1) ... Setting up libwacom9:amd64 (2.14.0-1) ... Setting up libdrm-radeon1:amd64 (2.4.123-1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libhtml-tree-perl (5.07-3) ... Setting up libxmlb2:amd64 (0.3.21-1) ... Setting up libxcursor1:amd64 (1:1.2.3-1) ... Setting up libparams-classify-perl:amd64 (0.015-2+b4) ... Setting up libpango-1.0-0:amd64 (1.56.1-1) ... Setting up libdrm-intel1:amd64 (2.4.123-1) ... Setting up libcgi-pm-perl (4.67-1) ... Setting up libpsl5t64:amd64 (0.21.2-1.1+b1) ... Setting up libx11-dev:amd64 (2:1.8.10-2) ... Setting up python3 (3.13.1-2) ... Setting up libreadline-dev:amd64 (8.2-6) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up gfortran-x86-64-linux-gnu (4:14.2.0-1) ... Setting up libxml-sax-perl (1.02+dfsg-4) ... update-perl-sax-parsers: Registering Perl SAX parser XML::SAX::PurePerl with priority 10... update-perl-sax-parsers: Updating overall Perl SAX parser modules info file... Creating config file /etc/perl/XML/SAX/ParserDetails.ini with new version Setting up gfortran (4:14.2.0-1) ... update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f77 (f77) in auto mode Setting up libcairo2:amd64 (1.18.2-2) ... Setting up libpsl-dev:amd64 (0.21.2-1.1+b1) ... Setting up libinput-bin (1.27.1-1) ... Setting up libobject-pad-perl (0.819-1) ... Setting up tex-common (6.18) ... update-language: texlive-base not installed and configured, doing nothing! Setting up python3-packaging (24.2-1) ... Setting up libnet-smtp-ssl-perl (1.04-2) ... Setting up libgnutls-dane0t64:amd64 (3.8.9-2) ... Setting up libqt6xml6:amd64 (6.7.2+dfsg-6) ... Setting up libqt6sql6:amd64 (6.7.2+dfsg-6) ... Setting up libmodule-runtime-perl (0.016-2) ... Setting up libmailtools-perl (2.22-1) ... Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Setting up libgssrpc4t64:amd64 (1.21.3-4) ... Setting up libraqm0:amd64 (0.10.2-1) ... Setting up libconfig-model-perl (2.155-1) ... Setting up libxml-libxml-perl (2.0207+dfsg+really+2.0134-5+b2) ... update-perl-sax-parsers: Registering Perl SAX parser XML::LibXML::SAX::Parser with priority 50... update-perl-sax-parsers: Registering Perl SAX parser XML::LibXML::SAX with priority 50... update-perl-sax-parsers: Updating overall Perl SAX parser modules info file... Replacing config file /etc/perl/XML/SAX/ParserDetails.ini with new version Setting up libumfpack6:amd64 (1:7.8.3+dfsg-3) ... Setting up libconst-fast-perl (0.014-2) ... Setting up libdata-section-perl (0.200008-1) ... Setting up libqt6core5compat6:amd64 (6.7.2-3) ... Setting up libpangoft2-1.0-0:amd64 (1.56.1-1) ... Setting up python3-mpmath (1.3.0-1) ... Setting up libdata-dpath-perl (0.60-1) ... Setting up libfltk1.3t64:amd64 (1.3.8-6.1+b1) ... Setting up libcups2t64:amd64 (2.4.10-2+b1) ... Setting up libngtcp2-crypto-gnutls8:amd64 (1.9.1-1) ... Setting up libstring-rewriteprefix-perl (0.009-1) ... Setting up libpangocairo-1.0-0:amd64 (1.56.1-1) ... Setting up libqt6dbus6:amd64 (6.7.2+dfsg-6) ... Setting up libkadm5clnt-mit12:amd64 (1.21.3-4) ... Setting up libgnutls28-dev:amd64 (3.8.9-2) ... Setting up libconfig-model-backend-yaml-perl (2.134-2) ... Setting up libinput10:amd64 (1.27.1-1) ... Setting up python3-sympy (1.13.3-3) ... Setting up mesa-libgallium:amd64 (24.3.4-3) ... Setting up libcurl4t64:amd64 (8.12.1-2) ... Setting up libkdb5-10t64:amd64 (1.21.3-4) ... Setting up libgbm1:amd64 (24.3.4-3) ... Setting up libmodule-implementation-perl (0.09-2) ... Setting up libpackage-stash-perl (0.40-1) ... Setting up libimport-into-perl (1.002005-2) ... Setting up libmoo-perl (2.005005-1) ... Setting up libgl1-mesa-dri:amd64 (24.3.4-3) ... Setting up libcurl3t64-gnutls:amd64 (8.12.1-2) ... Setting up liblist-someutils-perl (0.59-1) ... Setting up debhelper (13.24.1) ... Setting up libappstream5:amd64 (1.0.4-1) ... Setting up libmime-tools-perl (5.515-1) ... Setting up libsoftware-license-perl (0.104006-1) ... Setting up libclass-load-perl (0.25-2) ... Setting up libfeature-compat-class-perl (0.07-1) ... Setting up libegl-mesa0:amd64 (24.3.4-3) ... Setting up appstream (1.0.4-1) ... ? Metadata cache was updated successfully. Setting up librtmp-dev:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Setting up texinfo (7.1.1-1) ... Setting up libhdf5-310:amd64 (1.14.5+repack-3) ... Setting up libkadm5srv-mit12:amd64 (1.21.3-4) ... Setting up libegl1:amd64 (1.7.0-1+b2) ... Setting up libmoox-aliases-perl (0.001006-2) ... Setting up libparams-validate-perl:amd64 (1.31-2+b3) ... Setting up libhdf5-fortran-310:amd64 (1.14.5+repack-3) ... Setting up libb-hooks-endofscope-perl (0.28-1) ... Setting up krb5-multidev:amd64 (1.21.3-4) ... Setting up libhdf5-cpp-310:amd64 (1.14.5+repack-3) ... Setting up libhdf5-hl-310:amd64 (1.14.5+repack-3) ... Setting up libproxy1v5:amd64 (0.5.9-1) ... Setting up libglx-mesa0:amd64 (24.3.4-3) ... Setting up libglx0:amd64 (1.7.0-1+b2) ... Setting up libsoftware-licensemoreutils-perl (1.009-1) ... Setting up libkrb5-dev:amd64 (1.21.3-4) ... Setting up libgl1:amd64 (1.7.0-1+b2) ... Setting up libqt6gui6:amd64 (6.7.2+dfsg-6) ... Setting up libcurl4-openssl-dev:amd64 (8.12.1-2) ... Setting up libnamespace-clean-perl (0.27-2) ... Setting up libstring-license-perl (0.0.11-1) ... Setting up libgetopt-long-descriptive-perl (0.116-2) ... Setting up libqt6network6:amd64 (6.7.2+dfsg-6) ... Setting up libglx-dev:amd64 (1.7.0-1+b2) ... Setting up libgl-dev:amd64 (1.7.0-1+b2) ... Setting up licensecheck (3.3.9-1) ... Setting up libhdf5-hl-cpp-310:amd64 (1.14.5+repack-3) ... Setting up libhdf5-hl-fortran-310:amd64 (1.14.5+repack-3) ... Setting up libapp-cmd-perl (0.337-2) ... Setting up libqt6opengl6:amd64 (6.7.2+dfsg-6) ... Setting up libgl2ps1.4 (1.4.2+dfsg1-2) ... Setting up libqt6widgets6:amd64 (6.7.2+dfsg-6) ... Setting up libfltk-gl1.3t64:amd64 (1.3.8-6.1+b1) ... Setting up libhdf5-dev (1.14.5+repack-3) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/pkgconfig/hdf5-serial.pc to provide /usr/lib/x86_64-linux-gnu/pkgconfig/hdf5.pc (hdf5.pc) in auto mode Setting up cme (1.041-1) ... Setting up libqt6openglwidgets6:amd64 (6.7.2+dfsg-6) ... Setting up libqt6printsupport6:amd64 (6.7.2+dfsg-6) ... Setting up libqt6help6:amd64 (6.7.2-6) ... Setting up libqscintilla2-qt6-15:amd64 (2.14.1+dfsg-1+b4) ... Setting up libheif-plugin-dav1d:amd64 (1.19.5-1+b1) ... Setting up liblwp-protocol-https-perl (6.14-1) ... Setting up libheif-plugin-libde265:amd64 (1.19.5-1+b1) ... Setting up libwww-perl (6.77-1) ... Setting up libheif1:amd64 (1.19.5-1+b1) ... Setting up libparse-debcontrol-perl (2.005-6) ... Setting up libhtml-tokeparser-simple-perl (3.16-4) ... Setting up libwww-mechanize-perl (2.19-1) ... Setting up libgd3:amd64 (2.3.3-12+b1) ... Setting up gnuplot-nox (6.0.2+dfsg1-1) ... update-alternatives: using /usr/bin/gnuplot-nox to provide /usr/bin/gnuplot (gnuplot) in auto mode Setting up libgraphicsmagick-q16-3t64 (1.4+really1.3.45-1+b2) ... Setting up lintian (2.121.1) ... Setting up libgraphicsmagick++-q16-12t64 (1.4+really1.3.45-1+b2) ... Setting up libconfig-model-dpkg-perl (3.010) ... Setting up dh-octave-autopkgtest (1.8.0) ... Setting up octave (9.4.0-1) ... Setting up octave-dev (9.4.0-1) ... Setting up dh-octave (1.8.0) ... Processing triggers for libc-bin (2.40-7) ... Processing triggers for ca-certificates (20241223) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: user script /srv/workspace/pbuilder/645323/tmp/hooks/A99_set_merged_usr starting Not re-configuring usrmerge for unstable I: user script /srv/workspace/pbuilder/645323/tmp/hooks/A99_set_merged_usr finished hostname: Name or service not known I: Running cd /build/reproducible-path/octave-symbolic-3.2.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../octave-symbolic_3.2.1-3_source.changes dpkg-buildpackage: info: source package octave-symbolic dpkg-buildpackage: info: source version 3.2.1-3 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 debian/rules clean dh clean --buildsystem=octave dh_auto_clean -O--buildsystem=octave dh_octave_clean make[1]: Entering directory '/build/reproducible-path/octave-symbolic-3.2.1' /bin/bash: line 1: git: command not found rm -rf "tmp" rm -f fntests.log make[1]: *** No rule to make target 'distclean'. make[1]: Leaving directory '/build/reproducible-path/octave-symbolic-3.2.1' make[1]: Entering directory '/build/reproducible-path/octave-symbolic-3.2.1' make[1]: *** src: No such file or directory. Stop. make[1]: Leaving directory '/build/reproducible-path/octave-symbolic-3.2.1' dh_autoreconf_clean -O--buildsystem=octave dh_clean -O--buildsystem=octave debian/rules binary dh binary --buildsystem=octave dh_update_autotools_config -O--buildsystem=octave dh_autoreconf -O--buildsystem=octave dh_octave_version -O--buildsystem=octave Checking the Octave version... ok dh_auto_configure -O--buildsystem=octave dh_auto_build -O--buildsystem=octave dh_auto_test -O--buildsystem=octave create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=octave dh_prep -O--buildsystem=octave dh_auto_install --destdir=debian/octave-symbolic/ -O--buildsystem=octave octave --no-gui --no-history --silent --no-init-file --no-window-system /usr/share/dh-octave/install-pkg.m /build/reproducible-path/octave-symbolic-3.2.1/debian/octave-symbolic/usr/share/octave/packages /build/reproducible-path/octave-symbolic-3.2.1/debian/octave-symbolic/usr/lib/x86_64-linux-gnu/octave/packages For information about changes from previous versions of the symbolic package, run 'news symbolic'. dh_octave_check -O--buildsystem=octave Checking package... Run the unit tests... Checking m files ... [inst/@sym/isfinite.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isfinite.m ***** assert (isfinite(sym(1))) Symbolic pkg v3.2.1: Python communication link active, SymPy v1.13.3. ***** assert (isfinite(sym(-10))) ***** assert (~isfinite(sym('oo'))) ***** assert (~isfinite(sym('-oo'))) ***** assert (~isfinite(sym(1)/0)) ***** assert (~isfinite(sym(nan))) ***** assert (isequal (isfinite (sym ([1 inf])), [true false])) ***** test % finite-by-assumption syms x finite assert (isfinite (x)) warning: test: file /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isfinite.m leaked file descriptors 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/euler.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/euler.m ***** error euler (sym(1), 2, 3) ***** assert (isequal (euler (sym(0)), sym(1))) ***** test m = sym([0 1 2; 8 10 888889]); A = euler (m); B = sym([1 0 -1; 1385 -50521 0]); assert (isequal (A, B)) ***** test syms x assert (isequal (euler(6, x), x^6 - 3*x^5 + 5*x^3 - 3*x)) ***** assert (isnan (euler (3, sym(nan)))) ***** test syms m x em = euler (m, x); A = subs(em, [m x], [2 sym(pi)]); assert (isequal (A, sym(pi)^2 - sym(pi))) ***** test % vectorized syms x y A = euler([1; 2], [x; y]); B = [x - sym(1)/2; y^2 - y]; assert (isequal (A, B)) ***** test % round trip syms m z f = euler (m, z); h = function_handle (f, 'vars', [m z]); A = h (2, 2.2); B = euler (2, 2.2); assert (A, B) ***** test % compare vpa to maple: Digits:=34; evalf(euler(13, exp(1)+Pi*I/13)); A = vpa('1623.14184180556920918624604530515') + ... vpa('4270.98066989140286451493108809574')*1i; z = vpa (exp(1), 32) + vpa(pi, 32)/13*1i; B = euler (13, z); relerr = abs(double(abs((B - A)/A))); assert (relerr < 20*eps); ***** xtest % as above, high-prec result broken in 1.12: https://github.com/sympy/sympy/issues/24156 A = vpa('1623.14184180556920918624604530515') + ... vpa('4270.98066989140286451493108809574')*1i; z = vpa (exp(1), 32) + vpa(pi, 32)/13*1i; B = euler (13, z); relerr = abs(double(abs((B - A)/A))); assert (relerr < 2e-31); !!!!! known failure assert (relerr < 2e-31) failed 10 tests, 9 passed, 1 known failure, 0 skipped [inst/@sym/eq.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eq.m ***** test % simple tests with scalar numbers assert (logical (sym(1) == sym(1))) assert (logical (sym(1) == 1)) assert (~logical (sym(1) == 0)) assert (isequal (sym(1) == sym(1), sym(true))) assert (isequal (sym(1) == 1, sym(true))) assert (isequal (sym(1) == 0, sym(false))) ***** test % Type of the output is sym or logical? % FIXME: in current version, they are sym e = sym(1) == sym(1); %assert (islogical (e)) assert (isa (e, 'sym')) ***** test % things involving a variable are usually not bool but sym. % (SMT behaviour says always, FIXME: currently we differ.) syms x e = x == 0; assert (~islogical (e)) assert (isa (e, 'sym')) ***** test % ... except of course via cancellation syms x e = x - x == 0; assert (logical (e)) assert (isequal (e, sym(true))) ***** test % array == array a = sym([1 2; 3 4]); y = a == a; assert (isequal( size(y), [2 2])) assert (isequal (y, sym([true true; true true]))) assert (all(all(y))) y = a == 1; assert (isequal( size(y), [2 2])) assert (isequal (y, sym([true false; false false]))) assert (any(any(y))) y = a == 42; assert (isequal( size(y), [2 2])) assert (isequal (y, sym([false false; false false]))) -1103:22: SymPyDeprecationWarning: non-Expr objects in a Matrix is deprecated. Matrix represents a mathematical matrix. To represent a container of non-numeric entities, Use a list of lists, TableForm, NumPy array, or some other data structure instead. See https://docs.sympy.org/latest/explanation/active-deprecations.html#deprecated-non-expr-in-matrix for details. This has been deprecated since SymPy version 1.9. It will be removed in a future version of SymPy. return Matrix(*q.shape, elements) ***** test % more array == array D = [0 1; 2 3]; A = [sym(0) 1; sym(2) 3]; DZ = D - D; assert (isequal (logical(A == A), [true true; true true])) assert (isequal (logical(A == D), [true true; true true])) assert (isequal (logical(A - D == DZ), [true true; true true])) assert (all (all ( A == A ))) assert (all (all ( A == D ))) assert (all (all ( A - D == DZ ))) ***** test % logical output, right shape, etc t = true; f = false; a = sym([0 1 2; 3 4 5]); b = sym([0 1 1; 3 5 5]); e = a == b; eexp = sym(logical([1 1 0; 1 0 1])); assert (isequal (e, eexp)) a = sym([0 1 2]); b = sym([0 1 1]); e = a == b; eexp = sym(logical([1 1 0])); assert (isequal (e, eexp)) e = a' == b'; eexp = eexp.'; % is/was bug here with ' assert (isequal (e, eexp)) ***** test % empty matrices compare to correct empty size a = zeros (sym(3), 0); assert (size (a == a), [3, 0]) a = zeros (sym(0), 2); assert (size (a == a), [0, 2]) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/lt.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lt.m ***** test % simple x = sym(1); y = sym(1); e = x < y; assert (~logical (e)) x = sym(1); y = sym(2); e = x < y; assert (logical (e)) ***** test % mix sym and double x = sym(1); y = 1; e = x < y; assert (~logical (e)) x = sym(1); y = 2; e = x < y; assert (logical (e)) x = 1; y = sym(1); e = x < y; assert (~logical (e)) x = 1; y = sym(2); e = x < y; assert (logical (e)) ***** test % Type of the output is sym or logical? % FIXME: in current version, they are sym x = sym(1); y = sym(1); e1 = x < y; x = sym(1); y = sym(2); e2 = x < y; %assert (islogical (e1)) %assert (islogical (e2)) assert (isa (e1, 'sym')) assert (isa (e2, 'sym')) ***** test % ineq w/ symbols syms x y e = x < y; assert (~islogical (e)) assert (isa (e, 'sym')) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a < b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 < x)) assert (~logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x < 10)) ***** test % array -- scalar syms x oo a = sym([1 x oo]); b = sym(3); e = a < b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), x < 3)) assert (~logical (e(3))) ***** test % scalar -- array syms x oo a = sym(1); b = sym([2 x -oo]); e = a < b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 1 < x)) assert (~logical (e(3))) ***** test % ineq w/ nan syms x snan = sym(nan); e = x < snan; assert (~logical (e)) e = snan < x; assert (~logical (e)) b = [sym(0) x]; e = b < snan; assert (isequal (e, [false false])) ***** test % oo syms oo x e = oo < x; assert (isa (e, 'sym')) assert (strcmp (strtrim (disp (e, 'flat')), 'oo < x')) ***** test % sympy true matrix a = sym([1 3 3]); b = sym([2 4 1]); e = a < b; %assert (~isa (e, 'sym')) %assert (islogical (e)) assert (isequal (e, [true true false])) ***** test % oo, finite real variables syms oo syms z real assumeAlso(z, 'finite') e = -oo < z; assert (isequal (e, sym(true))) e = z < oo; assert (isequal (e, sym(true))) ***** test % -oo, positive var (known failure w/ sympy 0.7.6.x) syms oo syms z positive e = -oo < z; assert (logical (e)) assert (isequal (e, sym(true))) ***** test % positive syms z positive e = -1 < z; assert (isequal (e, sym(true))) ***** test syms oo z = sym('z', 'negative'); e = z < oo; assert (isequal (e, sym(true))) 14 tests, 14 passed, 0 known failure, 0 skipped [inst/@sym/fix.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fix.m ***** test d = 3/2; x = sym('3/2'); f1 = fix(x); f2 = fix(d); assert (isequal (f1, f2)) ***** test D = [1.1 4.6; -3.4 -8.9]; A = [sym(11)/10 sym(46)/10; sym(-34)/10 sym(-89)/10]; f1 = fix(A); f2 = fix(D); assert( isequal (f1, f2)) ***** test d = sym(-11)/10; c = -1; assert (isequal (fix (d), c)) ***** test d = sym(-19)/10; c = -1; assert (isequal (fix (d), c)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/ellipticF.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticF.m ***** error ellipticF (sym(1)) ***** error ellipticF (sym(1), 2, 3) ***** assert (double (ellipticF (sym (pi)/3, sym (-105)/10)), 0.6184459461, 10e-11) ***** assert (double (ellipticF (sym (pi)/4, sym (-pi))), 0.6485970495, 10e-11) ***** assert (double (ellipticF (sym (1), sym (-1))), 0.8963937895, 10e-11) ***** assert (double (ellipticF (sym (pi)/6, sym (0))), 0.5235987756, 10e-11) ***** test % compare to Maple us = vpa (ellipticF (sym(11)/10, sym(9)/4), 40); % > evalf(EllipticF(sin(11/10), sqrt(9/4)), 40); maple = vpa ('1.206444996991058996424988192917728014427', 40) - ... vpa ('0.8157358125823472313001683083685348517476j', 40); assert (abs (double (maple - us)), 0, 1e-39) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/atanh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atanh.m ***** error atanh (sym(1), 2) ***** assert (isequaln (atanh (sym(nan)), sym(nan))) ***** shared x, d d = 1/2; x = sym('1/2'); ***** test f1 = atanh(x); f2 = atanh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = atanh(A); f2 = atanh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = atanh (d); f = atanh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/curl.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/curl.m ***** error curl([sym(1) 2 3], 42, 42) ***** shared x,y,z syms x y z ***** test % double const f = [1 2 3]; g = [sym(0); 0; 0]; assert (isequal (curl(f, [x y z]), g)) % should fail, calls @double: curl(f, {x y z}), g)) ***** test % div curl always 0 v = [exp(x); x*y; sin(z)]; g = curl(v); a = divergence(g, [x y z]); assert (isAlways (a == sym(0))) assert (isa (a, 'sym')) g = curl(v, [x y z]); a = divergence(g, [x y z]); assert (isAlways (a == sym(0))) assert (isa (a, 'sym')) ***** test % div curl always 0 v = [exp(x); erfc(x*y); sin(exp(x)*y+sinh(z))]; g = curl(v, [x y z]); a = divergence(g, [x y z]); assert (isAlways (a == sym(0))) assert (isa (a, 'sym')) ***** test % curl grad is vec zero f = sin(exp(x)*y+sinh(z)); g = curl(gradient(f, [x,y,z])); assert (isequal (g, sym([0;0;0]))) ***** test % 2d fcn in 2d/3d u = sin(exp(x)*y); v = x^2*y^3; vorticity2d = diff(v,x) - diff(u,y); omega = curl([u; v; 0], [x y z]); assert (isequal (omega, [0; 0; vorticity2d])) ***** error <3D vector> curl([sym(1) 2 3 4]) ***** error curl([sym(1) 2 3], {sym('x') sym('y') sym('z') sym('t')}) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/ceil.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ceil.m ***** error ceil (sym(1), 2) ***** assert (isequaln (ceil (sym(nan)), sym(nan))) ***** shared x, d d = 3/2; x = sym('3/2'); ***** test f1 = ceil(x); f2 = ceil(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = ceil(A); f2 = ceil(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = ceil (d); f = ceil (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/coth.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coth.m ***** error coth (sym(1), 2) ***** assert (isequaln (coth (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = coth(x); f2 = coth(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = coth(A); f2 = coth(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = coth (d); f = coth (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/formula.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/formula.m ***** test syms x assert (isequal (formula(x), x)) assert (isequal (formula(2*x), 2*x)) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/cat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cat.m ***** test % mostly tested in horzcat, vertcat: one for good measure syms x assert (isequal (cat(1, x, x), [x x])) assert (isequal (cat(2, x, x), [x; x])) ***** error cat(3, sym(2), sym(3)) ***** error cat(0, sym(2), sym(3)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/imag.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/imag.m ***** assert (isequal (imag (sym (4) + 3i),3)) ***** test syms x y real z = x + 1i*y; assert (isequal (imag (z),y)) ***** test syms x y real Z = [4 x + 1i*y; 1i*y 4 + 3i]; assert (isequal (imag (Z),[0 y; y 3])) ***** test syms x real d = exp (x*i); assert (isequal (imag (d), sin (x))) ***** test % round trip syms x d = 3 - 5i; f = imag (x); A = imag (d); h = function_handle (f); B = h (d); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/divergence.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/divergence.m ***** shared x,y,z syms x y z ***** test % 1D f = x^2; assert (isequal (divergence(f), diff(f,x))) assert (isequal (divergence(f,{x}), diff(f,x))) assert (isequal (divergence(f,[x]), diff(f,x))) assert (isequal (divergence(f,x), diff(f,x))) ***** test % const f = [sym(1); 2; exp(sym(3))]; assert (isequal (divergence(f,{x,y,z}), 0)) f = [sym(1); 2; exp(sym('c'))]; assert (isequal (divergence(f,{x,y,z}), 0)) ***** test % double const f = [1 2]; g = sym(0); assert (isequal (divergence(f, [x y]), g)) % should fail, calls @double: divergence(f, {x y}), g)) ***** test % 1D fcn in 2d/3d f = [x y z]; assert (isequal (divergence(f), 3)) assert (isequal (divergence(f, {x,y,z}), 3)) assert (isequal (divergence(f, [x,y,z]), 3)) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y+sinh(z)); g2 = [diff(f,x); diff(f,y)]; l2 = diff(g2(1),x) + diff(g2(2),y); g3 = [diff(f,x); diff(f,y); diff(f,z)]; l3 = diff(g3(1),x) + diff(g3(2),y) + diff(g3(3),z); assert (isequal (divergence(g2, {x,y}), l2)) assert (isequal (divergence(g3, {x,y,z}), l3)) ***** error divergence ([1 2], [sym('x')]) ***** error divergence ([1 2], sym('x'), 42) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/dirac.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dirac.m ***** error dirac (sym(1), 2) ***** assert (isequaln (dirac (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = dirac(x); f2 = dirac(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = dirac(A); f2 = dirac(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = dirac (d); f = dirac (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/limit.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/limit.m ***** error limit (sym(1), 2, 3, 4, 5) ***** shared x, oo syms x oo = sym(inf); ***** assert (isa (limit(x, x, pi), 'sym')) ***** assert (isequal (limit(x, x, pi), sym(pi))) ***** assert (isequal (limit(sin(x)/x, x, 0), 1)) ***** test % left/right-hand limit assert (isequal (limit(1/x, x, 0, 'right'), oo)) assert (isequal (limit(1/x, x, 0), oo)) assert (isequal (limit(1/x, x, 0, 'left'), -oo)) assert (isequal (limit(1/x, x, oo), 0)) assert (isequal (limit(sign(x), x, 0, 'left'), -1)) assert (isequal (limit(sign(x), x, 0, 'right'), 1)) assert (isequal (limit(sign(x), x, 0, '-'), -1)) assert (isequal (limit(sign(x), x, 0, '+'), 1)) ***** test % matrix syms y A = [x 1/x x*y]; B = sym([3 sym(1)/3 3*y]); assert (isequal (limit(A, x, 3), B)) ***** test % omitting arguments syms a assert (isequal (limit(a), 0)) assert (isequal (limit(a*x+a+2), a+2)) assert (isequal (limit(a*x+a+2, 6), 7*a+2)) ***** test % constants assert (isequal (limit(sym(6)), 6)) assert (isequal (limit(sym(6), 7), 6)) assert (isequal (limit([sym(6) sym(2)], 7), [6 2])) ***** test % double constant, with sym limit a = limit (6, sym(0)); assert (isa (a, 'sym')) assert (isequal (a, sym(6))) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/log.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log.m ***** error log (sym(1), 2) ***** assert (isequaln (log (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = log(x); f2 = log(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = log(A); f2 = log(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = log (d); f = log (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/orth.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/orth.m ***** test A = [1 2; 3 6]; K = orth(A); L = orth(sym(A)); assert (isequal (size(L), [2 1])) dif1 = abs (double(L) - K); dif2 = abs (double(L) + K); assert (all (dif1 < 1e-15) || all (dif2 < 1e-15)) ***** test A = [1; 3]; K = orth(A); L = orth(sym(A)); assert (isequal (size(L), [2 1])) dif1 = abs (double(L) - K); dif2 = abs (double(L) + K); assert (all (dif1 < 1e-16) || all (dif2 < 1e-16)) ***** test A = sym([1 2; 3 4]); L = orth(sym(A)); assert (isequal (size(L), [2 2])) v = L(:, 1); w = L(:, 2); assert (isAlways (v' * v == 1)) assert (isAlways (w' * w == 1)) assert (isAlways (v' * w == 0)) ***** test A = sym([1 1; 1 0; 1 0]); L = orth(sym(A)); assert (isequal (size(L), [3 2])) v = L(:, 1); w = L(:, 2); assert (isAlways (v' * v == 1)) assert (isAlways (w' * w == 1)) assert (isAlways (v' * w == 0)) % y and z components must be equal assert (isAlways (v(2) == v(3))) assert (isAlways (w(2) == w(3))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/permute.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/permute.m ***** error permute (sym(1)) ***** error permute (sym(1), 2, 3) ***** test D = round(10*rand(5,3)); A = sym(D); B = permute(A, [1 2]); assert (isequal(B, A)) B = permute(A, [2 1]); assert (isequal(B, A.')) ***** test syms x A = [1 x]; B = permute(A, [2 1]); assert (isequal(B, [1; x])) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/besselk.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselk.m ***** test X = [1 2 3; 4 5 6]; ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; n = double(ns); A = double(besselk(ns, X)); B = besselk(n, X); assert (all (all (abs (A - B) < 2*eps*abs(A)))) ***** test % roundtrip syms x A = besselk(2, 10); q = besselk(2, x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps*abs(A)) ***** error besselk(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/has.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/has.m ***** shared A, x, y syms x y A = [sym(pi) 2*sym(pi); x*y x+y]; ***** assert (isequal (has(A, x), [false false; true true])); ***** assert (isequal (has(A, x+y), [false false; false true])); ***** assert (isequal (has(A, 2), [false true; false false])); ***** assert (isequal (has(A, sym(pi)), [true true; false false])); 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/setdiff.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/setdiff.m ***** test A = sym([1 2 3]); B = sym([1 2 4]); C = setdiff(A, B); D = sym([3]); assert (isequal (C, D)) ***** test % one nonsym A = sym([1 2 3]); B = [1 2 4]; C = setdiff(A, B); D = sym([3]); assert (isequal (C, D)) ***** test % empty A = sym([1 2 3]); C = setdiff(A, A); assert (isempty (C)) ***** test % empty input A = sym([1 2]); C = setdiff(A, []); assert (isequal (C, A) || isequal (C, sym([2 1]))) ***** test % scalar syms x assert (isequal (setdiff([x 1], x), sym(1))) assert (isempty (setdiff(x, x))) ***** test A = interval(sym(1), 3); B = interval(sym(2), 5); C = setdiff(A, B); assert( isequal( C, interval(sym(1), 2, false, true))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/gradient.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gradient.m ***** shared x,y,z syms x y z ***** test % 1D f = x^2; assert (isequal (gradient(f), diff(f,x))) assert (isequal (gradient(f,{x}), diff(f,x))) assert (isequal (gradient(f,[x]), diff(f,x))) assert (isequal (gradient(f,x), diff(f,x))) ***** test % const f = sym(1); g = sym(0); assert (isequal (gradient(f), g)) assert (isequal (gradient(f,x), g)) ***** test % double const f = 1; g = sym(0); assert (isequal (gradient(f,x), g)) ***** test % 1D fcn in 2d/3d f = sin(y); assert (isequal (gradient(f), diff(f,y))) assert (isequal (gradient(f, {x,y}), [sym(0); diff(f,y)])) assert (isequal (gradient(f, [x y]), [sym(0); diff(f,y)])) assert (isequal (size (gradient(f, {x,y})), [2 1])) assert (isequal (gradient(f, {x,y,z}), [0; diff(f,y); 0])) assert (isequal (gradient(f, [x y z]), [0; diff(f,y); 0])) assert (isequal (size (gradient(f, {x,y,z})), [3 1])) ***** test % grad is column vector f = sin(y); assert (isequal (size (gradient(f, {x,y})), [2 1])) assert (isequal (size (gradient(f, {x,y,z})), [3 1])) assert (isequal (size (gradient(f, [x y])), [2 1])) assert (isequal (size (gradient(f, [x;y])), [2 1])) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y); g2 = [diff(f,x); diff(f,y)]; g3 = [diff(f,x); diff(f,y); diff(f,z)]; assert (isequal (gradient(f), g2)) assert (isequal (gradient(f, {x,y}), g2)) assert (isequal (gradient(f, {x,y,z}), g3)) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y+sinh(z)); g2 = [diff(f,x); diff(f,y)]; g3 = [diff(f,x); diff(f,y); diff(f,z)]; assert (isequal (gradient(f), g3)) assert (isequal (gradient(f, {x,y}), g2)) assert (isequal (gradient(f, {x,y,z}), g3)) ***** error gradient(sym('x'), 42, 42) ***** error gradient([sym('x') sym('x')]) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/sinhint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinhint.m ***** error sinhint (sym(1), 2) ***** xtest assert (isequaln (sinhint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (sinhint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sinhint(x); f2 = 1.057250875375728514572; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sinhint(A); f2 = 1.057250875375728514572; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sinhint (d); f = sinhint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/partfrac.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/partfrac.m ***** test % basic syms x y z assert(logical( partfrac(y/(x + 2)/(x + 1),x) == -y/(x + 2) + y/(x + 1) )) assert(logical( factor(partfrac(x^2/(x^2 - y^2),y)) == factor(x/(2*(x + y)) + x/(2*(x - y)) ))) assert(logical( factor(partfrac(x^2/(x^2 - y^2),x)) == factor(-y/(2*(x + y)) + y/(2*(x - y)) + 1 ))) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/acosd.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acosd.m ***** error acosd (sym(1), 2) ***** assert (isequaln (acosd (sym(nan)), sym(nan))) ***** test f1 = acosd (sym(1)/2); f2 = acosd (1/2); assert (double (f1), f2, -eps) ***** test D = [1 2; 3 4]/4; A = sym([1 2; 3 4])/4; f1 = acosd (A); f2 = acosd (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/uplus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/uplus.m ***** test syms x assert (isa (+x, 'sym')) assert (isequal (+x, x)) ***** test A = sym([0 -1 inf]); assert( isequal ( +A, A)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/qr.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/qr.m ***** error qr (sym(1), 2, 3) ***** error [Q, R, P] = qr (sym(1)) ***** error qr (sym(1), 1) ***** test % scalar [q, r] = qr(sym(6)); assert (isequal (q, sym(1))) assert (isequal (r, sym(6))) ***** test syms x positive [q, r] = qr(x); assert (isequal (q*r, x)) assert (isequal (q, sym(1))) assert (isequal (r, x)) ***** test % trickier if x could be zero, fails on 1.8 <= SymPy <= 1.10.1 syms x [q, r] = qr(x); if (pycall_sympy__ ('return Version(spver) > Version("1.10.1")')) assert (isequal (q*r, x)) end ***** test A = [1 2; 3 4]; B = sym(A); [Q, R] = qr(B); assert (isequal (Q*R, B)) assert (isequal (R(2,1), sym(0))) assert (isequal (Q(:,1)'*Q(:,2), sym(0))) %[QA, RA] = qr(A) %assert ( max(max(double(Q)-QA)) <= 10*eps) %assert ( max(max(double(Q)-QA)) <= 10*eps) ***** test % non square: tall skinny A = sym([1 2; 3 4; 5 6]); [Q, R] = qr (A, 0); assert (size (Q), [3 2]) assert (size (R), [2 2]) assert (isequal (Q*R, A)) ***** test % non square: short fat A = sym([1 2 3; 4 5 6]); [Q, R] = qr (A); assert (isequal (Q*R, A)) ***** test % non square: short fat, rank deficient A = sym([1 2 3; 2 4 6]); [Q, R] = qr (A); assert (isequal (Q*R, A)) A = sym([1 2 3; 2 4 6; 0 0 0]); [Q, R] = qr (A); assert (isequal (Q*R, A)) ***** test % rank deficient A = sym([1 2 3; 2 4 6; 0 0 0]); [Q, R] = qr (A); assert (isequal (Q*R, A)) A = sym([1 2 3; 2 5 6; 0 0 0]); [Q, R] = qr (A); assert (isequal (Q*R, A)) ***** test % single return value R not Q assert (isequal (qr (sym(4)), sym(4))) 12 tests, 12 passed, 0 known failure, 0 skipped [inst/@sym/symvar.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symvar.m ***** error symvar (sym(1), 2, 3) ***** test %% some empty cases assert (isempty (symvar (sym(1)))); assert (isempty (symvar (sym(1),1))); assert (isempty (symvar (sym(1),0))); assert (isempty (symvar (sym('x'),0))); ***** shared x,y,f x=sym('x'); y=sym('y'); f=x^2+3*x*y-y^2; ***** assert (isequal (symvar (f), [x y])); ***** assert (isequal (symvar (f, 1), x)); ***** test %% closest to x syms x y a b c xx alpha = sym('alpha'); % https://www.mathworks.com/matlabcentral/newsreader/view_thread/237730 assert( isequal (symvar (b*xx*exp(alpha) + c*sin(a*y), 2), [xx y])) %% tests to match Matlab R2013b ***** shared x,y,z,a,b,c,X,Y,Z syms x y z a b c X Y Z ***** test %% X,Y,Z first if no 2nd argument s = prod([x y z a b c X Y Z]); assert (isequal( symvar (s), [X Y Z a b c x y z] )) ***** test %% uppercase have *low* priority with argument? s = prod([x y z a b c X Y Z]); assert (isequal (symvar (s,4), [x, y, z, c] )) ***** test %% closest to x s = prod([y z a b c Y Z]); assert (isequal( symvar (s,6), [ y, z, c, b, a, Y] )) s = prod([a b c Y Z]); assert (isequal( symvar (s,4), [ c, b, a, Y] )) ***** test %% upper case letters in correct order s = X*Y*Z; assert (isequal( symvar (s,3), [X Y Z] )) ***** test % diff. assumptions make diff. symbols x1 = sym('x'); x2 = sym('x', 'positive'); f = x1*x2; assert (length (symvar (f)) == 2) z = symvar (f, 1); assert (xor (isequal (z, x1), isequal (z, x2))) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/resize.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/resize.m ***** test B = sym([1 0 0; 0 0 0]); assert (isequal (resize (sym(1), 2, 3), B)) assert (isequal (resize (sym(1), [2 3]), B)) ***** test B = sym([1 0; 0 0]); assert (isequal (resize (sym(1), 2), B)) ***** test A = sym([pi 2; 3 4]); assert (isequal (resize (A, 1), sym(pi))) ***** assert (isequal (size (resize (sym(1), 0, 0)), [0 0])) ***** assert (isequal (size (resize (sym(1), 6, 0)), [6 0])) ***** assert (isequal (size (resize (sym(1), 0, 3)), [0 3])) ***** error resize (sym(1)) ***** error resize (sym(1), 2, 3, 4) ***** error resize (sym(1), [2 3 4]) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/sym2poly.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sym2poly.m ***** shared x,y,a,b,c syms x y a b c ***** assert (isequal (sym2poly (x^2 + 3*x - 4), [1 3 -4])) ***** assert (isequal (sym2poly (x^6 - x^3), [1 0 0 -1 0 0 0])) ***** assert (isequal (sym2poly (x^2 + 3*x - 4, x), [1 3 -4])) ***** assert (norm (sym2poly (pi*x^2 + exp(sym(1))) - [pi 0 exp(1)]) < 10*eps) ***** assert (isa (sym2poly (x^2 + 3*x - 4), 'double')) ***** assert (isa (sym2poly (x^2 + 3*x - 4, x), 'sym')) ***** assert (isequal (sym2poly (x^2+y*x, x), [sym(1) y sym(0)])) ***** assert (isequal (sym2poly (x^2+y*x, y), [x x^2])) ***** assert (isequal (sym2poly (poly2sym ([a b c], x), x), [a b c])) ***** assert (isequal (poly2sym (sym2poly(a*x^2 + c, x), x), a*x^2 + c)) ***** assert (isequal (sym2poly (poly2sym ([1 2 3])), [1 2 3])) ***** error % too many symbols for single-input p = a*x^2 + 2; c = sym2poly (p); ***** assert (isequal (sym2poly (sym(5)), sym(5))) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/cosh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosh.m ***** error cosh (sym(1), 2) ***** assert (isequaln (cosh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = cosh(x); f2 = cosh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cosh(A); f2 = cosh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = cosh (d); f = cosh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/sym.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sym.m ***** test % integers x = sym ('2'); y = sym (2); assert (isa (x, 'sym')) assert (isa (y, 'sym')) assert (isequal (x, y)) ***** test % infinity for x = {'inf', '-inf', inf, -inf, 'Inf'} y = sym (x{1}); assert (isa (y, 'sym')) assert (isinf (double (y))) assert (isinf (y)) end ***** test % pi x = sym ('pi'); assert (isa (x, 'sym')) assert (isequal (sin (x), sym (0))) assert (abs (double (x) - pi) < 2*eps ) x = sym (pi); assert (isa (x, 'sym')) assert (isequal (sin (x), sym (0))) assert (abs (double (x) - pi) < 2*eps ) ***** test % rationals x = sym(1) / 3; assert (isa (x, 'sym')) assert (isequal (3*x - 1, sym (0))) x = 1 / sym (3); assert (isa (x, 'sym')) assert (isequal (3*x - 1, sym (0))) x = sym ('1/3'); assert (isa (x, 'sym')) assert (isequal (3*x - 1, sym (0))) ***** test % passing small rationals x = sym ('1/2'); assert (double (x) == 1/2 ) assert (isequal (2*x, sym (1))) ***** warning x = sym (1/2); ***** test % passing small rationals w/o quotes: despite the warning, % it should work s = warning ('off', 'OctSymPy:sym:rationalapprox'); x = sym (1/2); warning (s) assert (double (x) == 1/2 ) assert (isequal (2*x, sym (1))) ***** test assert (isa (sym (pi), 'sym')) assert (isa (sym ('beta'), 'sym')) ***** test % sym from array D = [0 1; 2 3]; A = [sym(0) 1; sym(2) 3]; assert (isa (sym (D), 'sym')) assert (isequal (size (sym (D)), size (D))) assert (isequal (sym (D), A)) ***** test % more sym from array syms x A = [x x]; assert (isequal (sym (A), A)) A = [1 x]; assert (isequal (sym (A), A)) ***** test %% assumptions and clearing them clear variables % for matlab test script x = sym('x', 'real'); f = {x {2*x}}; asm = assumptions(); assert ( ~isempty(asm)) s = warning ('off', 'OctSymPy:deprecated'); x = sym('x', 'clear'); warning (s) asm = assumptions(); assert ( isempty(asm)) ***** test %% matlab compat, syms x clear should add x to workspace x = sym('x', 'real'); f = 2*x; clear x assert (~logical(exist('x', 'var'))) s = warning ('off', 'OctSymPy:deprecated'); x = sym('x', 'clear'); warning (s) assert (logical(exist('x', 'var'))) ***** test %% assumptions should work if x is already a sym x = sym('x'); x = sym(x, 'real'); assert (~isempty(assumptions(x))) ***** test %% likewise for clear x = sym('x', 'real'); f = 2*x; s = warning ('off', 'OctSymPy:deprecated'); x = sym(x, 'clear'); warning (s) assert (isempty(assumptions(x))) assert (isempty(assumptions(f))) ***** test % bool t = sym (false); t = sym (true); assert (logical (t)) ***** test % bool vec/mat a = sym (1); t = sym ([true false]); assert (isequal (t, [a == 1 a == 0])) t = sym ([true false; false true]); assert (isequal (t, [a == 1 a == 0; a == 0 a == 1])) ***** test % symbolic matrix A = sym ('A', [2 3]); assert (isa (A, 'sym')) assert (isequal (size (A), [2 3])) A(1, 1) = 7; assert (isa (A, 'sym')) A = A + 1; assert (isa (A, 'sym')) ***** test % symbolic matrix, symbolic but Integer size A = sym ('A', sym([2 3])); assert (isa (A, 'sym')) assert (isequal (size (A), [2 3])) ***** test % symbolic matrix, subs in for size syms n m integer A = sym ('A', [n m]); B = subs (A, [n m], [5 6]); assert (isa (B, 'sym')) assert (isequal (size (B), [5 6])) ***** error sym('2*a', [2 3]) ***** error sym(2*sym('a'), [2 3]) ***** error sym('1', [2 3]) ***** error sym(1, [2 3]) ***** error % TODO: symbolic tensor, maybe supported someday sym('a', [2 3 4]) ***** test % 50 shapes of empty a = sym (ones (0, 3)); assert (isa (a, 'sym')) assert (isequal (size (a), [0 3])) a = sym (ones (2, 0)); assert (isequal (size (a), [2 0])) a = sym ([]); assert (isequal (size (a), [0 0])) ***** test % moar empty a = sym ('a', [0 3]); assert (isa (a, 'sym')) assert (isequal (size (a), [0 3])) a = sym ('a', [2 0]); assert (isa (a, 'sym')) assert (isequal (size (a), [2 0])) ***** test % embedded sympy commands, various quotes, issue #143 a = sym ('a'); a1 = sym ('Symbol("a")'); a2 = sym ('Symbol(''a'')'); assert (isequal (a, a1)) assert (isequal (a, a2)) % Octave only, and eval to hide from Matlab parser if exist ('OCTAVE_VERSION', 'builtin') eval( 'a3 = sym("Symbol(''a'')");' ); eval( 'a4 = sym("Symbol(\"a\")");' ); assert (isequal (a, a3)) assert (isequal (a, a4)) end ***** test % complex x = sym(1 + 2i); assert (isequal (x, sym(1)+sym(2)*1i)) ***** test % doubles bigger than int32 INTMAX should not fail d = 4294967295; a = sym (d); assert (isequal (double (a), d)) d = d + 123456; a = sym (d); assert (isequal (double (a), d)) ***** test % int32 integer types a = sym (100); b = sym (int32 (100)); assert (isequal (a, b)) ***** test % int32 MAXINT integers a = sym ('2147483647'); b = sym (int32 (2147483647)); assert (isequal (a, b)) a = sym ('-2147483647'); b = sym (int32 (-2147483647)); assert (isequal (a, b)) a = sym ('4294967295'); b = sym (uint32 (4294967295)); assert (isequal (a, b)) ***** test % int64 integer types a = sym ('123456789012345'); b = sym (int64(123456789012345)); c = sym (uint64(123456789012345)); assert (isequal (a, b)) assert (isequal (a, c)) ***** test % integer arrays a = int64 ([1 2 100]); s = sym (a); assert (isequal (double (a), [1 2 100])) ***** test % bigger int64 integer types q = int64 (123456789012345); w = 10000*q + 123; a = sym ('1234567890123450123'); b = sym (w); assert (isequal (a, b)) ***** test % sym(double) heuristic s = warning ('off', 'OctSymPy:sym:rationalapprox'); x = sym(2*pi/3); assert (isequal (x/sym(pi), sym(2)/3)) x = sym(22*pi); assert (isequal (x/sym(pi), sym(22))) x = sym(pi/123); assert (isequal (x/sym(pi), sym(1)/123)) warning (s) ***** test % sym(double) with 'r': no warning a = 0.1; x = sym(a, 'r'); assert (isequal (x, sym(1)/10)) ***** test % sym(double) array with 'r': no warning a = [0.1 0.2]; x = sym(a, 'r'); assert (isequal (x, [sym(a(1), 'r') sym(a(2), 'r')])) ***** test % sym(double) array with 'f': no warning a = [0.1 0.2]; x = sym(a, 'f'); assert (isequal (x, [sym(a(1), 'f') sym(a(2), 'f')])) ***** test % sym(double, 'f') a = 0.1; x = sym(a, 'f'); assert (~isequal (x, sym(1)/10)) assert (isequal (x, sym('3602879701896397')/sym('36028797018963968'))) ***** test x = sym(pi, 'f'); assert (~isequal (x, sym('pi'))) assert (isequal (x, sym('884279719003555')/sym('281474976710656'))) ***** test q = sym('3602879701896397')/sym('36028797018963968'); x = sym(1 + 0.1i, 'f'); assert (isequal (x, 1 + 1i*q)) x = sym(0.1 + 0.1i, 'f'); assert (isequal (x, q + 1i*q)) ***** test assert (isequal (sym(inf, 'f'), sym(inf))) assert (isequal (sym(-inf, 'f'), sym(-inf))) assert (isequaln (sym(nan, 'f'), sym(nan))) assert (isequal (sym(complex(inf, -inf), 'f'), sym(complex(inf, -inf)))) assert (isequaln (sym(complex(nan, inf), 'f'), sym(complex(nan, inf)))) assert (isequaln (sym(complex(-inf, nan), 'f'), sym(complex(-inf, nan)))) ***** test assert (isequal (sym (sqrt(2), 'r'), sqrt (sym (2)))) assert (isequal (sym (sqrt(12345), 'r'), sqrt (sym (12345)))) ***** test % symbols with special sympy names syms Ei Eq assert (~isempty (regexp (sympy (Eq), '^Symbol'))) assert (~isempty (regexp (sympy (Ei), '^Symbol'))) ***** test % more symbols with special sympy names x = sym('FF'); assert (~isempty (regexp (x.pickle, '^Symbol'))) x = sym('ff'); assert (~isempty (regexp (x.pickle, '^Symbol'))) ***** test % E can be a sym not just exp(sym(1)) syms E assert (~logical (E == exp(sym(1)))) ***** test % e can be a symbol, not exp(sym(1)) syms e assert (~ logical (e == exp(sym(1)))) ***** test % double e x = sym (exp (1)); y = exp (sym (1)); assert (isequal (x, y)) if (exist ('OCTAVE_VERSION', 'builtin')) x = sym (e); assert (isequal (x, y)) end ***** test x = sym (-exp (1)); y = -exp (sym (1)); assert (isequal (x, y)) ***** assert (~ isequal (sym (exp(1)), sym (exp(1), 'f'))) ***** warning sym (1e16); ***** warning sym (-1e16); ***** warning sym (10.33); ***** warning sym (-5.23); ***** warning sym (sqrt (1.4142135623731)); ***** warning sym ([1.2 1.3]); ***** error x = sym ('x', 'positive2'); ***** error x = sym ('x', 'integer', 'positive2'); ***** error x = sym ('x', 'integer2', 'positive'); ***** error x = sym ('-pi', 'positive') ***** error x = sym ('pi', 'integer') ***** test % multiple assumptions n = sym ('n', 'negative', 'even'); a = assumptions (n); assert (strcmp (a, 'n: negative, even') || strcmp (a, 'n: even, negative')) ***** error % multiple assumptions as a list % TODO: should this be allowed? n = sym ('n', {'negative', 'even'}); a = assumptions (n); assert (strcmp (a, 'n: negative, even') || strcmp (a, 'n: even, negative')) ***** error n = sym ('n', {{'negative', 'even'}}); ***** test % save/load sym objects syms x y = 2*x; a = 42; myfile = tempname (); save (myfile, 'x', 'y', 'a') clear x y a load (myfile) assert (isequal (y, 2*x)) assert (a == 42) if (exist ('OCTAVE_VERSION', 'builtin')) assert (unlink (myfile) == 0) else delete ([myfile '.mat']) end ***** test a = sym ('2.1'); b = sym (21) / 10; %% https://github.com/sympy/sympy/issues/11703 assert (pycall_sympy__ ('return _ins[0] == _ins[1] and hash(_ins[0]) == hash(_ins[1])', a, b)) ***** test % issue #706 a = sym('Float("1.23")'); assert (~ isempty (strfind (char (a), '.'))) ***** assert (isequal (sym({1 2 'a'}), [sym(1) sym(2) sym('a')])); ***** error sym({1 2 'a'}, 'positive'); ***** error sym({'a' 'b'}, 'positive'); ***** test a = sym ('--1'); b = sym ('---1'); assert (isequal (a, sym (1))) assert (isequal (b, sym (-1))) ***** test % num2cell works on sym arrays syms x C1 = num2cell ([x 2 3; 4 5 6*x]); assert (iscell (C1)) assert (isequal (size (C1), [2 3])) assert (isequal (C1{1,1}, x)) assert (isequal (C1{2,3}, 6*x)) assert (isequal (C1{1,3}, sym(3))) assert (isa (C1{1,3}, 'sym')) ***** test % function_handle f = @(x, y) y*sin(x); syms x y assert (isequal (sym (f), y*sin(x))); f = @(x) 42; assert (isequal (sym (f), sym (42))); f = @() 42; assert (isequal (sym (f), sym (42))); ***** error % function_handle f = @(x) A*sin(x); sym (f) ***** test % Issue #885 clear f x % if test not isolated (e.g., on matlab) syms x f(x) = sym('S(x)'); f(x) = sym('I(x)'); f(x) = sym('O(x)'); ***** test % sym(sympy(x) == x identity, Issue #890 syms x f = exp (1i*x); s = sympy (f); g = sym (s); assert (isequal (f, g)) ***** test % sym(sympy(x) == x identity % Don't mistake "pi" (which is "srepr(S.Pi)") for a symfun variable f = sym ('ff(pi, pi)'); s1 = sympy (f); s2 = 'FallingFactorial(pi, pi)'; assert (strcmp (s1, s2)) ***** test % sym(sympy(x) == x identity % Don't mistake "I" (which is "srepr(S.ImaginaryUnit)") for a symfun variable f = sym ('sin(I)'); g = 1i*sinh (sym (1)); assert (isequal (f, g)) s = sympy (f); assert (isempty (strfind (s, 'Function'))) ***** error % sym(sympy(x) == x identity % Don't mistake "true/false" (which is "srepr(S.true)") for a symfun variable % (Used to print as `S.true` but just `true` in sympy 1.2) sym ('E(true,false)') ***** test % some variable names that are special to sympy but should not be for us f = sym ('f(S, Q, C, O, N)'); s1 = sympy (f); s2 = 'Function(''f'')(Symbol(''S''), Symbol(''Q''), Symbol(''C''), Symbol(''O''), Symbol(''N''))'; assert (strcmp (s1, s2)) ***** test % For SMT 2014 compatibility, I and E would become ImaginaryUnit and Exp(1) % but I'm not sure this is by design. This test would need to change if % we want stricter SMT compatibility. f = sym ('f(x, I, E)'); s1 = sympy (f); s2 = 'Function(''f'')(Symbol(''x''), Symbol(''I''), Symbol(''E''))'; assert (strcmp (s1, s2)) ***** test % not the identity, force symfun f = sym ('FF(w)'); s1 = sympy (f); s2 = 'Function(''FF'')(Symbol(''w''))'; assert (strcmp (s1, s2)) ***** test % not the identity, force symfun f = sym ('FF(w, pi)'); s1 = sympy (f); s2 = 'Function(''FF'')(Symbol(''w''), pi)'; assert (strcmp (s1, s2)) ***** test % not the identity, force symfun f = sym ('ff(x, y)'); s1 = sympy (f); s2 = 'Function(''ff'')(Symbol(''x''), Symbol(''y''))'; assert (strcmp (s1, s2)) ***** test % But this one should satisfy "sym(sympy(x) == x" identity % (OOTB, SymPy has ff -> FallingFactorial) f = sym ('FallingFactorial(x, y)'); s1 = sympy (f); s2 = 'FallingFactorial(Symbol(''x''), Symbol(''y''))'; assert (strcmp (s1, s2)) ***** error % certain words cannot be used as variables if (pycall_sympy__ ('return Version(spver) >= Version("1.10.1")')) f = sym ('f(x, y, print)') else error ('use another variable') end 86 tests, 86 passed, 0 known failure, 0 skipped [inst/@sym/argnames.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/argnames.m ***** test % basic tests syms x f = 2*x; assert (isempty (argnames(x))) assert (isempty (argnames(f))) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/isvector.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isvector.m ***** assert(isvector(sym('x'))) ***** assert(isvector(sym([1 2 3]))) ***** assert(isvector(sym([1; 2]))) ***** assert(~isvector(sym([1 2; 3 4]))) ***** assert(~isvector(sym([]))) ***** assert(isvector(sym(ones(1,0)))) ***** assert(~isvector(sym(ones(0,3)))) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/laguerreL.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laguerreL.m ***** shared x syms x ***** assert (isequal (laguerreL(0, x), sym(1))) ***** assert (isequal (laguerreL(1, x), 1-x)) ***** assert (isequal (laguerreL(2, x), x^2/2 - 2*x + 1)) ***** error laguerreL(x) ***** error laguerreL(1, 2, x, 3) ***** shared ***** test syms x assert (isequal (laguerreL (-3, x), exp(x)*(x^2/2 + 2*x + 1))) ***** test syms x n L = laguerreL([2 n], x); expected = [laguerreL(2, x) laguerreL(n, x)]; assert (isequal (L, expected)) ***** test syms x y L = laguerreL([1; 2], [x; y]); expected = [laguerreL(1, x); laguerreL(2, y)]; assert (isequal (L, expected)) ***** test syms x n assert (isequal (laguerreL(n, 0, x), laguerreL(n, x))) ***** shared x, y, n syms x y n ***** assert (isequal (laguerreL([1 n], 0, x), laguerreL([1 n], x))) ***** test L = laguerreL([1; n], [pi; 0], [x; y]); expected = [laguerreL(1, pi, x); laguerreL(n, 0, y)]; assert (isequal (L, expected)) ***** test L = laguerreL([1 n], [pi 0], x); expected = [laguerreL(1, pi, x) laguerreL(n, 0, x)]; assert (isequal (L, expected)) ***** test L = laguerreL([1 n], pi, [x y]); expected = [laguerreL(1, pi, x) laguerreL(n, pi, y)]; assert (isequal (L, expected)) ***** test L = laguerreL(1, [pi 0], [x y]); expected = [laguerreL(1, pi, x) laguerreL(1, 0, y)]; assert (isequal (L, expected)) ***** test L = laguerreL([1 n], pi, x); expected = [laguerreL(1, pi, x) laguerreL(n, pi, x)]; assert (isequal (L, expected)) ***** test L = laguerreL(1, [pi 0], x); expected = [laguerreL(1, pi, x) laguerreL(1, 0, x)]; assert (isequal (L, expected)) ***** test L = laguerreL(1, pi, [x y]); expected = [laguerreL(1, pi, x) laguerreL(1, pi, y)]; assert (isequal (L, expected)) ***** test % round trip f = laguerreL (n, x); h = function_handle (f); A = h (1, 3.2); B = laguerreL (1, 3.2); assert (A, B) A = h ([1 2], [3.3 4.4]); B = laguerreL ([1 2], [3.3 4.4]); assert (A, B) ***** error % round trip f = laguerreL (n, y, x); h = function_handle (f); 19 tests, 19 passed, 0 known failure, 0 skipped [inst/@sym/besselj.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselj.m ***** test X = [1 2 3; 4 5 6]; ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; n = double(ns); A = double(besselj(ns, X)); B = besselj(n, X); assert (all (all (abs (A - B) < 50*eps*abs(A)))) ***** test % roundtrip syms x A = besselj(2, 10); q = besselj(2, x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps*abs(A)) ***** error besselj(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/minus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/minus.m ***** test % scalar syms x assert (isa (x-1, 'sym')) assert (isa (x-x, 'sym')) assert (isequal (x-x, sym(0))) ***** test % matrices D = [0 1; 2 3]; A = sym(D); DZ = D - D; assert (isequal ( A - D , DZ )) assert (isequal ( A - A , DZ )) assert (isequal ( D - A , DZ )) assert (isequal ( A - 2 , D - 2 )) assert (isequal ( 4 - A , 4 - D )) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/ne.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ne.m ***** test % simple x = sym(1); y = sym(1); e = x ~= y; assert (~logical (e)) x = sym(1); y = sym(2); e = x ~= y; assert (logical(e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a ~= b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 ~= x)) assert (~logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x ~= 10)) ***** test % oo syms oo x e = oo ~= x; assert (isa (e, 'sym')) s = strtrim (disp (e, 'flat')); % SymPy <= 0.7.6.x will be '!=', newer gives 'Ne', test both assert (strcmp (s, 'oo != x') || strcmp (s, 'Ne(oo, x)')) ***** test % nan syms oo x snan = sym(nan); e = snan ~= sym(0); assert (logical (e)) e = snan ~= snan; assert (logical (e)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/cumsum.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cumsum.m ***** shared x, y x = sym ('x'); y = sym ('y'); ***** error cumsum (x, 1, 2) ***** assert (isequal (cumsum ([-x; -2*x; -3*x]), [-x; -3*x; -6*x])) ***** assert (isequal (cumsum ([x + 2i*y, 2*x + i*y]), [x + 2i*y, 3*x + 3i*y])) ***** assert (isequal (cumsum ([x, 2*x; 3*x, 4*x], 1), [1*x, 2*x; 4*x, 6*x] )) ***** assert (isequal (cumsum ([x, 2*x; 3*x, 4*x], 2), [1*x, 3*x; 3*x, 7*x] )) ***** test cumsum ([x, x], [2, 1]); # ensure behaves like builtin cumsum ***** test cumsum ([x, x], [1, -2]); # ensure behaves like builtin cumsum ***** error cumsum (x, []) ***** error cumsum (x, {1}) ***** error cumsum (x, struct('a', 1)) ***** error cumsum (x, x) ***** error cumsum (x, 0) ***** error cumsum (x, -1) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/setxor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/setxor.m ***** test A = sym([1 2 3]); B = sym([1 2 4]); C = setxor(A, B); D1 = sym([3 4]); D2 = sym([4 3]); assert (isequal (C, D1) || isequal (C, D2)) ***** test % one nonsym A = sym([1 2 3]); B = [1 2 4]; C = setxor(A, B); D1 = sym([3 4]); D2 = sym([4 3]); assert (isequal (C, D1) || isequal (C, D2)) ***** test % empty A = sym([1 2 3]); C = setxor(A, A); assert (isempty (C)) ***** test % empty input A = sym([1 2]); C = setxor(A, []); assert (isequal (C, A) || isequal (C, sym([2 1]))) ***** test % scalar syms x assert (isequal (setxor([x 1], x), sym(1))) assert (isempty (setxor(x, x))) ***** test A = interval(sym(1), 3); B = interval(sym(2), 5); C = setxor(A, B); D = union (interval (sym(1), 2, false, true), interval (sym(3), 5, true, false)); assert( isequal( C, D)) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/logspace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logspace.m ***** test % default argument for N A = logspace(0, 2); assert (length (A) == 50); ***** test % special case: pi as end pt A = logspace(-sym(3), sym(pi), 3); assert (isequal (A(end), sym(pi))) ***** test A = logspace(-sym(4), 0, 3); B = [sym(1)/10000 sym(1)/100 sym(1)]; assert (isequal (A, B)) ***** test % vpa support, might need recent sympy for sympy issue #10063 n = 32; A = logspace(-vpa(1,n), 0, 3); B = [10^(-vpa(1,n)) 10^(-vpa(sym(1)/2,n)) vpa(1,n)]; assert (all (A == B)) assert (max(abs(double(A) - logspace(-1, 0, 3))) < 1e-15) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/isequal.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isequal.m ***** test a = sym([1 2]); b = a; assert (isequal (a, b)) b(1) = 42; assert (~isequal (a, b)) ***** test a = sym([1 2; 3 4]); b = a; assert (isequal (a, b)) b(1) = 42; assert (~isequal (a, b)) ***** test a = sym([nan; 2]); b = a; assert (~isequal (a, b)) ***** test % proper nan treatment a = sym([nan 2; 3 4]); b = a; assert (~isequal (a, b)) ***** test % more than two arrays a = sym([1 2 3]); b = a; c = a; assert (isequal (a, b, c)) c(1) = 42; assert (~isequal (a, b, c)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ldivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ldivide.m ***** test % scalar syms x assert (isa (x .\ 1, 'sym')) assert (isa (x .\ x, 'sym')) assert (isequal (x .\ 1, 1/x)) assert (isequal (x .\ x, sym(1))) ***** test % matrix-scalar D = [1 1; 2 3]; A = sym(D); assert (isequal ( A .\ 6 , D .\ 6 )) assert (isequal ( A .\ sym(6) , D .\ 6 )) assert (isequal ( D .\ sym(6) , D .\ 6 )) ***** test % matrix-matrix D = [1 2; 3 4]; A = sym(D); assert (isequal ( A .\ A , D .\ D )) assert (isequal ( A .\ D , D .\ D )) assert (isequal ( D .\ A , D .\ D )) ***** test % matrix .\ matrix with symbols syms x y A = [x y; x^2 2*y]; B = [y x; x y]; assert (isequal ( A .\ A , sym(ones(2, 2)) )) assert (isequal ( B .\ A , [x/y y/x; x 2] )) ***** test % scalar .\ matrix D = 3*[1 2; 3 4]; A = sym(D); assert (isequal ( 3 .\ A , 3 .\ D )) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ellipke.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipke.m ***** error ellipke (sym(1), 2) ***** test for i = 2:10 [K E] = ellipke (sym (1)/i); [k e] = ellipke (1/i); assert (double ([K E]), [k e], 2*eps) end 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/vertcat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/vertcat.m ***** test % basic syms x A = [x; x]; B = vertcat(x, x); C = vertcat(x, x, x); assert (isa (A, 'sym')) assert (isa (B, 'sym')) assert (isa (C, 'sym')) assert (isequal (size(A), [2 1])) assert (isequal (size(B), [2 1])) assert (isequal (size(C), [3 1])) ***** test % basic, part 2 syms x A = [x; 1]; B = [1; x]; C = [1; 2; x]; assert (isa (A, 'sym')) assert (isa (B, 'sym')) assert (isa (C, 'sym')) assert (isequal (size(A), [2 1])) assert (isequal (size(B), [2 1])) assert (isequal (size(C), [3 1])) ***** test % column vectors a = [sym(1); 2]; b = [sym(3); 4]; assert (isequal ( [a;b] , [1; 2; 3; 4] )) assert (isequal ( [a;b;a] , [1; 2; 3; 4; 1; 2] )) ***** test % row vectors a = [sym(1) 2]; b = [sym(3) 4]; assert (isequal ( [a;b] , [1 2; 3 4] )) assert (isequal ( [a;b;a] , [1 2; 3 4; 1 2] )) ***** test % row vector, other row a = [sym(1) 2]; assert (isequal ( [a; [sym(3) 4]] , [1 2; 3 4] )) ***** test % empty vectors v = [sym(1) sym(2)]; a = [v; []]; assert (isequal (a, v)) a = [[]; v; []]; assert (isequal (a, v)) a = [v; []; []]; assert (isequal (a, v)) ***** xtest % FIXME: is this Octave bug? worth worrying about syms x a = [x; [] []]; assert (isequal (a, x)) !!!!! known failure octave_base_value::map_value(): wrong type argument 'null_matrix' ***** test % more empty vectors v = [sym(1) sym(2)]; q = sym(ones(0, 2)); assert (isequal ([v; q], v)) ***** error v = [sym(1) sym(2)]; q = sym(ones(0, 3)); w = vertcat(v, q); ***** test % Octave 3.6 bug: should pass on 3.8.1 and matlab a = [sym(1) 2]; assert (isequal ( [a; [3 4]] , [1 2; 3 4] )) assert (isequal ( [a; sym(3) 4] , [1 2; 3 4] )) % more examples syms x [x [x x]; x x x]; [[x x] x; x x x]; [[x x] x; [x x] x]; [x x x; [x x] x]; ***** test % issue #700 A = sym ([1 2]); B = simplify (A); assert (isequal ([B; A], [A; B])) 11 tests, 10 passed, 1 known failure, 0 skipped [inst/@sym/isAlways.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isAlways.m ***** test % basics assert(isAlways(true)) assert(isAlways(1==1)) assert(isAlways(sym(1)==sym(1))) assert(isAlways(sym(1)==1)) ***** test % numbers to logic? assert (isAlways(sym(1))) assert (isAlways(sym(-1))) assert (~isAlways(sym(0))) ***** shared x syms x ***** test % in this case it is boolean expr = x - x == 0; assert (logical(expr)) assert (isAlways(expr)) % and both are logical type assert (islogical(logical(expr))) assert (islogical(isAlways(expr))) ***** test % structurally same and mathematically true % (here expr should be sym, non-boolean) expr = x == x; assert (logical(expr)) assert (isAlways(expr)) %assert (~islogical(expr)) % FIXME: Issue #56 %assert (isa(expr, 'sym)) ***** test % structurally same and mathematically true % (here expr should be sym, non-boolean) expr = 1 + x == x + 1; assert (logical(expr)) assert (isAlways(expr)) ***** test % non-zero numbers are true assert (isAlways(sym(1))) assert (isAlways(sym(-10))) assert (~isAlways(sym(0))) ***** shared x, y syms x y ***** test % structurally same and mathematically true % (here expr should be sym, non-boolean) expr = x*(1+y) == x*(y+1); assert (logical(expr)) assert (isAlways(expr)) assert (islogical(isAlways(expr))) ***** test % Now for some differences % simplest example from SymPy FAQ expr = x*(1+y) == x+x*y; assert (~logical(expr)) assert (isAlways(expr)) ***** test % more differences 1, these don't simplify in sympy (as of 2016-01) expr = (x+1)^2 == x*x + 2*x + 1; assert (~logical(expr)) assert (isAlways(expr)) ***** test % more differences 2 expr = sin(2*x) == 2*sin(x)*cos(x); assert (~logical(expr)) assert (isAlways(expr)) ***** test % more differences 3, false expr = x*(x+y) == x^2 + x*y + 1; assert (~logical(expr)) assert (~isAlways(expr)) assert (~isAlways(expr, 'unknown', 'error')) ***** test % logically not equal, math equal exprn = x*(x+y) ~= x^2 + x*y; assert (logical(exprn)) assert (~isAlways(exprn)) ***** test % logically not equal, math not equal exprn = x*(x+y) ~= x^2 + x*y + 1; assert (logical(exprn)) assert (isAlways(exprn)) ***** test % equal and not equal e1 = sin(x)^2 + cos(x)^2 == 1; e2 = sin(x)^2 + cos(x)^2 == 2; assert (~logical(e1)) assert (isAlways(e1)) assert (~logical(e2)) assert (~isAlways(e2)) assert (~isAlways(e2, 'unknown', 'error')) ***** error isAlways(x, 'unknown', 'kevin') ***** error isAlways(x, 'unknown') ***** error isAlways(x, 'kevin', 'true') ***** error a = [x*(x+y)==x^2+x*y x==y]; b = isAlways(a, 'unknown', 'error'); ***** error a = x==y; b = isAlways(a, 'unknown', 'error'); ***** test % array, unknown keyword a = [x==x x==x+1 x==y x*(x+y)==x^2+x*y cos(x)^2+sin(x)^2==2]; b = isAlways(a, 'unknown', false); c = isAlways(a, 'unknown', 'false'); expect = [true false false true false]; assert (islogical(b)) assert (isequal (b, expect)) assert (isequal (c, expect)) b = isAlways(a, 'unknown', true); c = isAlways(a, 'unknown', 'true'); expect = [true false true true false]; assert (islogical(b)) assert (isequal (b, expect)) assert (isequal (c, expect)) ***** test % ineq e = x*(x+y) <= x^2 + x*y + 1; assert (~logical(e)) assert (isAlways(e)) e = x*(x+y) <= x^2 + x*y; assert (~logical(e)) assert (isAlways(e)) 21 tests, 21 passed, 0 known failure, 0 skipped [inst/@sym/intersect.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/intersect.m ***** test A = sym([1 2 3]); B = sym([1 2 4]); C = intersect(A, B); D = sym([1 2]); assert (isequal (C, D)) ***** test % one nonsym A = sym([1 2 3]); B = [1 2 4]; C = intersect(A, B); D = sym([1 2]); assert (isequal (C, D)) ***** test % empty A = sym([1 2 3]); C = intersect(A, A); assert (isequal (C, A)) ***** test % empty input A = sym([1 2]); C = intersect(A, []); assert (isempty (C)) ***** test % scalar syms x assert (isequal (intersect([x 1], x), x)) assert (isequal (intersect(x, x), x)) ***** test A = interval(sym(1), 3); B = interval(sym(2), 5); C = intersect(A, B); assert( isequal( C, interval(sym(2), 3))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/pretty.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pretty.m ***** test % simple syms x s1 = pretty(sin(x)); s2 = sprintf(' sin(x)\n'); assert (strcmp (s1, s2)) ***** test % force ascii syms x s1 = pretty(sin(x/2), 'ascii'); s2 = sprintf(' /x\\\n sin|-|\n \\2/\n'); swin = strrep(s1, sprintf('\r\n'), sprintf('\n')); assert (strcmp (s1, s2) || strcmp (swin, s2)) ***** test % force unicode syms x s1 = pretty(sin(x/2), 'unicode'); s2 = sprintf(' ⎛x⎞\n sin⎜─⎟\n ⎝2⎠\n'); swin = strrep(s1, sprintf('\r\n'), sprintf('\n')); assert (strcmp (s1, s2) || strcmp (swin, s2)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/isna.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isna.m ***** test % no sym should be NA syms x oo assert (~isna(sym(1))) assert (~isna(x)) assert (~isna(oo)) assert (~isna(sym(nan))) assert (isequal (isna (sym ([1 nan])), [false false])) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/ellipticCK.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCK.m ***** error ellipticCK (sym (1), 2) ***** assert (double (ellipticCK (sym (1)/2)), 1.8541, 10e-5) ***** assert (double (ellipticCK (sym (101)/10)), 0.812691836806976, -3*eps) ***** assert (isequal (ellipticCK (sym (1)), sym(pi)/2)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/acsch.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acsch.m ***** error acsch (sym(1), 2) ***** assert (isequaln (acsch (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acsch(x); f2 = acsch(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acsch(A); f2 = acsch(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acsch (d); f = acsch (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/assume.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/assume.m ***** test syms x x = assume(x, 'positive'); a = assumptions(x); assert(strcmp(a, 'x: positive')) x = assume(x, 'even'); a = assumptions(x); assert(strcmp(a, 'x: even')) x = assume(x, 'odd'); a = assumptions(x); assert(strcmp(a, 'x: odd')) ***** error syms x x = assume (x, x); ***** error syms x x = assume (x/pi, 'integer') ***** test % multiple assumptions syms x x = assume(x, 'positive', 'integer'); [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) ***** test % multiple assumptions syms x x = assume(x, 'even', 'positive'); [tilde, a] = assumptions(x, 'dict'); assert(a{1}.even) assert(a{1}.positive) ***** test % has output so avoids workspace syms x positive x2 = x; f = sin(x); x = assume(x, 'negative'); a = assumptions(x); assert(strcmp(a, 'x: negative')) a = assumptions(x2); assert(strcmp(a, 'x: positive')) a = assumptions(f); assert(strcmp(a, 'x: positive')) ***** test % clear: has output so avoids workspace syms x positive f = 2*x; x2 = assume(x, 'clear'); assert (~ isempty (assumptions (f))); ***** test % has no output so does workspace syms x positive x2 = x; f = sin(x); assume(x, 'negative'); a = assumptions(x); assert(strcmp(a, 'x: negative')) a = assumptions(x2); assert(strcmp(a, 'x: negative')) a = assumptions(f); assert(strcmp(a, 'x: negative')) ***** test % clear: has not output so does workspace syms x positive f = 2*x; assume(x, 'clear'); assert (isempty (assumptions (f))); assert (isempty (assumptions ())); ***** test syms x positive assume (x, 'clear') assert (isempty (assumptions ())) ***** error syms x x2 = assume (x, 'clear', 'real'); ***** error syms a assume (a > 0) ***** test syms x y assume ([x y], 'real') assert (strcmp (assumptions (x), 'x: real')) assert (strcmp (assumptions (y), 'y: real')) ***** test syms x y assume ([x y], 'positive', 'even') assert (strcmp (assumptions (x), 'x: positive, even') || strcmp (assumptions (x), 'x: even, positive')) assert (strcmp (assumptions (y), 'y: positive, even') || strcmp (assumptions (y), 'y: even, positive')) ***** test % with output, original x and y are unchanged syms x y [p, q] = assume ([x y], 'real'); assert (isempty (assumptions (x))) assert (isempty (assumptions (y))) assert (strcmp (assumptions (p), 'x: real')) assert (strcmp (assumptions (q), 'y: real')) ***** test % matrix input syms a b c d assume ([a b; c d], 'real') assert (strcmp (assumptions (a), 'a: real')) assert (strcmp (assumptions (b), 'b: real')) assert (strcmp (assumptions (c), 'c: real')) assert (strcmp (assumptions (d), 'd: real')) 16 tests, 16 passed, 0 known failure, 0 skipped [inst/@sym/round.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/round.m ***** test d = 3/2; x = sym('3/2'); f1 = round(x); f2 = round(d); assert (isequal (f1, f2)) ***** xtest % ideally rounding direction would match Octave d = 5/2; x = sym('5/2'); f1 = round(x); f2 = round(d); assert (isequal (f1, f2)) !!!!! known failure assert (isequal (f1, f2)) failed ***** test D = [1.1 4.6; -3.4 -8.9]; A = [sym(11)/10 sym(46)/10; sym(-34)/10 sym(-89)/10]; f1 = round(A); f2 = round(D); assert( isequal (f1, f2)) ***** test d = sym(-11)/10; c = -1; assert (isequal (round (d), c)) ***** test d = sym(-19)/10; c = -2; assert (isequal (round (d), c)) ***** test d = 7j/2; x = sym(7j)/2; f1 = round (x); f2 = round (d); assert (isequal (f1, f2)) ***** test d = 5/3 - 4j/7; x = sym(5)/3 - sym(4j)/7; f1 = round (x); f2 = round (d); assert (isequal (f1, f2)) 7 tests, 6 passed, 1 known failure, 0 skipped [inst/@sym/sinc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinc.m ***** error sinc (sym(1), 2) ***** assert (isequaln (sinc (sym(nan)), sym(nan))) ***** assert (isequal (sinc (sym(0)), sym(1))) ***** assert (isequal (sinc (sym(1)), sym(0))) ***** assert (isequal (sinc (-sym(1)), sym(0))) ***** assert (double (sinc (sym(pi))), sinc (pi), -10*eps) ***** test A = [-sym(1)/2 sym(1)/2 pi; -sym(7)/2 sym(71)/2 sym(101)/3]; D = double (A); assert (sinc (D), double (sinc (A)), -200*eps) ***** test A = [sym(51)/2 sym(1001)/3 sym(10001)/3 sym(100001)/3]; D = double (A); assert (sinc (D), double (sinc (A)), 1e-10) ***** test % round trip syms x A = sinc (1); f = sinc (x); h = function_handle (f); B = h (1); assert (A, B, -eps) ***** test % round trip syms x f = sinc (x); h = function_handle (f); A = sinc (1.5); B = h (1.5); assert (A, B, -eps) ***** test syms x h = function_handle (sinc (x)); A = double (sinc (sym (12)/10)); B = h (1.2); C = sinc (1.2); assert (A, B, -eps) assert (A, C, -eps) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/hilb.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hilb.m ***** test A = hilb (sym(3)); B = [sym(1) sym(1)/2 sym(1)/3; sym(1)/2 sym(1)/3 sym(1)/4; sym(1)/3 sym(1)/4 sym(1)/5]; assert (isequal (A, B)) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/charpoly.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/charpoly.m ***** error charpoly (sym (1), 1, 2) ***** error charpoly (sym ([1 2])) ***** test syms x A = sym([1 2; 3 4]); assert (isequal (charpoly(A, x), x^2 - 5*x -2)) ***** test syms x A = sym([1 2; 3 4]); B = sym([1 -5 -2]); assert (isequal (charpoly(A), B)) ***** test syms x A = sym([x x; x x]); B = sym([1 -2*x 0]); assert (isequal (charpoly(A), B)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/sqrt.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sqrt.m ***** error sqrt (sym(1), 2) ***** assert (isequaln (sqrt (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sqrt(x); f2 = sqrt(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sqrt(A); f2 = sqrt(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sqrt (d); f = sqrt (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ezcontour.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezcontour.m ***** error syms x y z ezcontour (x*y*z) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/length.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/length.m ***** test a = sym([1 2 3]); assert(length(a) == 3); ***** test % 2D array a = sym([1 2 3; 4 5 6]); assert(length(a) == 3); ***** test % empty a = sym([]); assert(length(a) == 0); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/tanh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tanh.m ***** error tanh (sym(1), 2) ***** assert (isequaln (tanh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = tanh(x); f2 = tanh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = tanh(A); f2 = tanh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = tanh (d); f = tanh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/rank.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rank.m ***** test A = sym([1 2; 3 4]); assert (rank(A) == 2); ***** test A = sym([1 2 3; 3 4 5]); assert (rank(A) == 2); ***** test A = sym([1 2; 1 2]); assert (rank(A) == 1); ***** test A = sym([1 2; 3 4]); assert (rank(A) == 2); ***** assert (rank(sym(1)) == 1); ***** assert (rank(sym(0)) == 0); ***** assert (rank(sym('x', 'positive')) == 1); 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/sympy.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sympy.m ***** assert (strcmp (sympy (sym(pi)), 'pi')) ***** assert (strcmp (sympy (sym(1)), 'Integer(1)')) ***** assert (strcmp (sympy (sym(2)/3), 'Rational(2, 3)')) ***** assert (strcmp (sympy (sym('x')), 'Symbol(''x'')')) ***** test x = sym('x'); assert (isequal (sym(sympy(x)), x)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/min.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/min.m ***** test % scalars with dim a = min(sym(pi), [], 1); b = sym(pi); assert (isequal (a, b)); a = min(sym(pi), [], 2); assert (isequal (a, b)); a = max(sym(pi), [], 1); assert (isequal (a, b)); a = max(sym(pi), [], 2); assert (isequal (a, b)); ***** shared A, D D = [0 1 2 3]; A = sym(D); ***** test % row vectors assert (isequal (min(A), sym(min(D)))) assert (isequal (min(A), sym(0))) assert (isequal (max(A), sym(max(D)))) assert (isequal (max(A), sym(3))) ***** test % row vectors with dim assert (isequal (min(A, [], 1), sym(min(D, [], 1)))) assert (isequal (min(A, [], 2), sym(min(D, [], 2)))) assert (isequal (max(A, [], 1), sym(max(D, [], 1)))) assert (isequal (max(A, [], 2), sym(max(D, [], 2)))) ***** test % column vectors A = A.'; D = D.'; assert (isequal (min(A), sym(min(D)))) assert (isequal (min(A), sym(0))) assert (isequal (max(A), sym(max(D)))) assert (isequal (max(A), sym(3))) ***** test % row vectors with dim assert (isequal (min(A, [], 1), sym(min(D, [], 1)))) assert (isequal (min(A, [], 2), sym(min(D, [], 2)))) assert (isequal (max(A, [], 1), sym(max(D, [], 1)))) assert (isequal (max(A, [], 2), sym(max(D, [], 2)))) ***** shared ***** test % empty a = min(sym([])); assert(isempty(a)) a = max(sym([])); assert(isempty(a)) ***** test % matrix A = [1 4 6; 2 2 5]; A = sym(A); assert (isequal (min(A), sym([1 2 5]))) assert (isequal (min(A, [], 1), sym([1 2 5]))) assert (isequal (min(A, [], 2), sym([1; 2]))) assert (isequal (max(A), sym([2 4 6]))) assert (isequal (max(A, [], 1), sym([2 4 6]))) assert (isequal (max(A, [], 2), sym([6; 5]))) ***** test % index output is double not sym [m, I] = min(sym(2), [], 1); assert (strcmp(class(I), 'double')) [m, I] = max(sym(2), [], 1); assert (strcmp(class(I), 'double')) ***** test % empty rows/columns, I is double A = sym(zeros(0, 4)); [m, I] = min(A, [], 1); assert (strcmp(class(I), 'double')) [m, I] = max(A, [], 1); assert (strcmp(class(I), 'double')) A = sym(zeros(3, 0)); [m, I] = min(A, [], 2); assert (strcmp(class(I), 'double')) [m, I] = max(A, [], 2); assert (strcmp(class(I), 'double')) ***** test % index output A = [0 1 9; 10 7 4]; B = sym(A); [m1, I1] = min(A); [m2, I2] = min(B); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) [m1, I1] = max(A); [m2, I2] = max(B); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) ***** test % index output, with dim A = [0 1 9; 10 7 4]; B = sym(A); [m1, I1] = min(A, [], 1); [m2, I2] = min(B, [], 1); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) [m1, I1] = min(A, [], 2); [m2, I2] = min(B, [], 2); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) [m1, I1] = max(A, [], 1); [m2, I2] = max(B, [], 1); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) [m1, I1] = max(A, [], 2); [m2, I2] = max(B, [], 2); assert (isequal (I1, I2)) assert (isequal (m1, double(m2))) ***** test % empty columns A = sym(zeros(0, 4)); [m, I] = min(A, [], 1); assert (isequal (size(m), [0 4])) assert (isequal (size(I), [0 4])) [m, I] = max(A, [], 1); assert (isequal (size(m), [0 4])) assert (isequal (size(I), [0 4])) ***** test % empty rows A = sym(zeros(3, 0)); [m, I] = min(A, [], 2); assert (isequal (size(m), [3 0])) assert (isequal (size(I), [3 0])) [m, I] = max(A, [], 2); assert (isequal (size(m), [3 0])) assert (isequal (size(I), [3 0])) ***** test % another empty case % we differ slightly from double which gives 1x0/0x1 A = sym(zeros(3, 0)); [m, I] = min(A, [], 1); assert (isempty (m)) assert (isempty (I)) A = sym(zeros(0, 3)); [m, I] = min(A, [], 2); assert (isempty (m)) assert (isempty (I)) ***** test % empty without index output A = sym(zeros(3, 0)); assert (isempty (min (A, [], 1))) assert (isempty (max (A, [], 1))) assert (isempty (min (A, [], 2))) assert (isempty (max (A, [], 2))) A = sym(zeros(0, 3)); assert (isempty (min (A, [], 1))) assert (isempty (max (A, [], 1))) assert (isempty (min (A, [], 2))) assert (isempty (max (A, [], 2))) ***** test % binary op form, one a scalar A = sym([3 1 9]); m = min(A, sym(2)); M = max(A, sym(2)); assert (isequal (m, sym([2 1 2]))) assert (isequal (M, sym([3 2 9]))) m = min(sym(2), A); M = max(sym(2), A); assert (isequal (m, sym([2 1 2]))) assert (isequal (M, sym([3 2 9]))) ***** test % binary op form, both scalar m = min(sym(1), sym(2)); M = max(sym(2), sym(2)); assert (isequal (m, sym(1))) assert (isequal (M, sym(2))) ***** test syms x y assert (isequal (children (min (x, y)), [x y])) ***** test syms x y z A = [x 1; y z]; assert (isequal (min (A, [], 1), [min(x, y) min(1, z)])) assert (isequal (max (A, [], 1), [max(x, y) max(1, z)])) assert (isequal (min (A, [], 2), [min(x, 1); min(y, z)])) assert (isequal (max (A, [], 2), [max(x, 1); max(y, z)])) ***** test syms x y positive a = min([x 2 y -6]); assert (isequal (a, -6)) a = max([x y -6]); assert (isequal (a, max(x, y))) ***** test syms x negative a = min([x 6 10]); assert (isequal (a, x)) a = max([x -2 6]); assert (isequal (a, 6)) 21 tests, 21 passed, 0 known failure, 0 skipped [inst/@sym/tril.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tril.m ***** test syms x assert (isequal (tril(x), x)) ***** test % with symbols syms x A = [x 2*x; 3*x 4*x]; assert (isequal (tril(A), [x 0; 3*x 4*x])) ***** test % diagonal shifts B = round(10*rand(3,4)); A = sym(B); assert (isequal (tril(A), tril(B))) assert (isequal (tril(A,0), tril(B,0))) assert (isequal (tril(A,1), tril(B,1))) assert (isequal (tril(A,-1), tril(B,-1))) ***** test % double array pass through B = round(10*rand(3,4)); assert (isequal (tril(B,sym(1)), tril(B,1))) assert (isa (tril(B,sym(1)), 'double')) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/not.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/not.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple assert (isequal( ~t, f)) assert (isequal( ~t, f)) ***** test % array w = [t t f t]; z = [f f t f]; assert (isequal( ~w, z)) ***** test % number assert (isequal( ~sym(5), f)) assert (isequal( ~sym(0), t)) ***** test % output is sym syms x e = ~(x == 4); assert (isa (e, 'sym')) assert (strncmp (sympy(e), 'Unequality', 10)) ***** test % output is sym even for scalar t/f (should match other bool fcns) assert (isa (~t, 'sym')) ***** test % symbol ineq syms x a = [t f x == 1 x ~= 2 x < 3 x <= 4 x > 5 x >= 6]; b = [f t x ~= 1 x == 2 x >= 3 x > 4 x <= 5 x < 6]; assert (isequal( ~a, b)) ***** test syms x y = ~x; s = disp(y, 'flat'); assert (strcmp (strtrim (s), '~x') || strcmpi (strtrim (s), 'Not(x)')) ***** error not (sym(1), 2) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/diag.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/diag.m ***** test % scalar syms x assert (isequal (diag(x), x)) ***** test % row,col vec input syms x r = [1 x 2]; c = [sym(1); x]; assert (isequal (diag(diag(c)), c)) assert (isequal (diag(c), [sym(1) 0; 0 x])) assert (isequal (diag(diag(r)), r.')) assert (isequal (diag(r), [sym(1) 0 0; 0 x 0; sym(0) 0 2])) ***** test % create matrix, kth diag syms x r = [1 x]; z = sym(0); assert (isequal (diag (x, 0), x)) assert (isequal (diag (x, 1), [z x; z z])) assert (isequal (diag (x, -1), [z z; x z])) assert (isequal (diag (x, 2), [z z x; z z z; z z z])) assert (isequal (diag (r, 1), [z 1 z; z z x; z z z])) ***** test % extract kth diag A = sym([1 2 3; 4 5 6]); assert (isequal (diag(A), sym([1; 5]))) assert (isequal (diag(A, 0), sym([1; 5]))) assert (isequal (diag(A, 1), sym([2; 6]))) assert (isequal (diag(A, 2), sym(3))) assert (isequal (diag(A, -1), sym(4))) assert (isempty (diag(A, -2))) assert (isempty (diag(A, 3))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/dawson.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dawson.m ***** test if (exist ('OCTAVE_VERSION', 'builtin')) % dawson missing on Matlab, Issue #742 A = dawson([1 2]); B = double(dawson(sym([1 2]))); assert(A, B, -eps) end 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/asind.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asind.m ***** error asind (sym(1), 2) ***** assert (isequaln (asind (sym(nan)), sym(nan))) ***** test f1 = asind (sym(1)/2); f2 = asind (1/2); assert (double (f1), f2, -eps) ***** test D = [1 2; 3 4]/4; A = sym([1 2; 3 4])/4; f1 = asind (A); f2 = asind (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/besselyn.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselyn.m ***** test % roundtrip syms x A = double(besselyn(sym(2), sym(10))); q = besselyn(sym(2), x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps) ***** error yn(sym('x')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/toeplitz.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/toeplitz.m ***** test % rect R = [10 20 40]; C = [10 30]; A = sym(toeplitz(R,C)); B = toeplitz(sym(R),sym(C)); assert (isequal (A, B)) R = [10 20]; C = [10 30 50]; A = sym(toeplitz(R,C)); B = toeplitz(sym(R),sym(C)); assert (isequal (A, B)) ***** test % symbols syms x y R = [10 20 40]; C = [10 30]; Rs = [10 x 40]; Cs = [10 y]; A = toeplitz(R,C); B = toeplitz(Rs,Cs); assert (isequal (A, subs(B,[x,y],[20 30]))) ***** test % hermitian syms a b c A = [a b c; conj(b) a b; conj(c) conj(b) a]; B = toeplitz([a,b,c]); assert (isequal( A, B)) ***** warning % mismatch syms x B = toeplitz([10 x], [1 3 x]); ***** warning % scalar B = toeplitz(sym(2), 3); assert (isequal (B, sym(2))) ***** test % mismatch syms x y fprintf('\n one warning expected\n') % how to quiet this one? A = toeplitz([10 2], [1 3 5]); s = warning ('off', 'OctSymPy:toeplitz:diagconflict'); B = toeplitz([10 x], [1 3 y]); warning(s) assert (isequal (A, subs(B, [x,y], [2 5]))) one warning expected warning: toeplitz: column wins diagonal conflict warning: called from toeplitz at line 84 column 7 __test__ at line 6 column 4 test at line 682 column 11 /tmp/tmp.ZYBI9fhIE2 at line 574 column 31 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/mldivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mldivide.m ***** test % scalar syms x assert (isa( x\x, 'sym')) assert (isequal( x\x, sym(1))) assert (isa( 2\x, 'sym')) assert (isa( x\2, 'sym')) ***** test % scalar \ matrix: easy, no system D = 2*[0 1; 2 3]; A = sym(D); assert (isequal ( 2 \ A , D/2 )) assert (isequal ( sym(2) \ A , D/2 )) ***** test % singular matrix A = sym([1 2; 2 4]); b = sym([5; 10]); x = A \ b; syms c1 y = [-2*c1 + 5; c1]; assert (isequal (x, y)) ***** test % singular matrix, mult RHS A = sym([1 2; 2 4]); B = sym([[5; 10] [0; 2] [0; 0]]); x = A \ B; syms c1 c5 y = [-2*c1 + 5 nan -2*c5; c1 nan c5]; assert (isequaln (x, y)) ***** warning % vpa, nearly singular matrix A = sym([1 2; 2 4]); A(1,1) = vpa('1.001'); b = sym([1; 2]); x = A \ b; y = [sym(0); vpa('0.5')]; assert (isequal (x, y)) ***** warning % vpa, singular rhs A = sym([1 2; 2 4]); b = [vpa('1.01'); vpa('2')]; x = A \ b; assert (all(isnan(x))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/beta.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/beta.m ***** error beta (sym(1), 2, 3) ***** assert (isequal (double (beta (sym(1), 2)), 1/2)) ***** assert (isinf (double (beta (sym(1), 0)))) ***** test % round trip syms x y f = beta (x, y); h = function_handle (f); A = h (1.1, 2.2); B = beta (1.1, 2.2); assert (A, B) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/acos.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acos.m ***** error acos (sym(1), 2) ***** assert (isequaln (acos (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acos(x); f2 = acos(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acos(A); f2 = acos(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acos (d); f = acos (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/unique.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/unique.m ***** test A = sym([1 2 3 3 5 3 2 6 5]); B = sym([1 2 3 5 6]); assert (isequal (unique(A), B)) ***** test syms x y A = [1 2 3 3 4 5 5 6 7 7 x x y y]; B = [1 2 3 4 5 6 7 x y]; assert (isequal (unique(A), B)) ***** test syms x assert (isequal (unique(x), x)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/piecewise.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/piecewise.m ***** test % basic syms x real f = piecewise (abs (x) < 1, 1); assert (isnan (subs (f, -1))); assert (isequal (subs (f, 0), 1)); assert (isnan (subs (f, 1))); ***** test % heaviside syms x real f = rewrite (heaviside (x, 1 / sym (2)), 'Piecewise'); g = piecewise (x < 0, 0, x == 0, 1 / sym (2), x > 0, 1); assert (logical (simplify (f == g))); 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/xor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/xor.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple assert (isequal (xor(t, f), t)) assert (isequal (xor(t, t), f)) ***** test % array w = [t t f f]; z = [t f t f]; assert (isequal (xor(w, z), [f t t f])) ***** xtest % output is sym even for scalar t/f % ₣IXME: should match other bool fcns assert (isa (xor(t, f), 'sym')) ***** test % eqns syms x e = xor(x == 4, x == 5); assert (isequal (subs(e, x, [3 4 5 6]), [f t t f])) ***** test % eqns, exclusive syms x e = xor(x == 3, x^2 == 9); assert (isequal (subs(e, x, [-3 0 3]), [t f f])) ***** error xor (sym('x'), 1, 2) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/angle.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/angle.m ***** test Z = [sqrt(sym(3)) + 3*sym(i), 3 + sqrt(sym(3))*sym(i); 1 + sym(i), sym(i)]; Q = [sym(pi)/3 sym(pi)/6; sym(pi)/4 sym(pi)/2]; assert( isequal( angle(Z), Q)); ***** test % roundtrip syms x A = angle (2+2i); f = angle (x); h = function_handle (f); B = h (2+2i); assert (A, B, -eps) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/isrow.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isrow.m ***** assert (isrow (sym ([1]))) ***** assert (isrow (sym ([1 2 3]))) ***** assert (~isrow (sym ([]))) ***** assert (~isrow (sym ([1 2 3]'))) ***** assert (~isrow (sym ([1 2; 3 4]))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/kron.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/kron.m ***** error kron (sym (2)) ***** test syms x y A = [sin(x), sin(y); x, y]; B = ones(2); expected = sym([sin(x), sin(x), sin(y), sin(y); sin(x), sin(x), sin(y), sin(y); x, x, y, y; x, x, y, y]); assert (isequal (kron(A, B), expected)) ***** test syms x y A = [sin(x), sin(y); x, y]; B = 2; assert (isequal (kron(A, B), 2*A)) ***** test syms x y A = [sin(x), sin(y)]; B = 2; assert (isequal( kron(B, A), 2*A)) ***** test syms x y; X = [tan(x), tan(x)]; Y = [cot(x); cot(x)]; expected = sym(ones(2)); assert (isequal (simplify(kron(X, Y)), expected)) ***** test syms x y z X = [x, y, z]; Y = [y, y; x, x]; expected = [x*y, x*y, y^2, y^2, y*z, y*z; x^2, x^2, x*y, x*y, x*z, x*z]; assert (isequal (kron(X, Y), expected)) ***** test syms x y X = [x, x^2; y, y^2]; Y = [1, 0; 0, 1]; expected = [x, x^2, 0, 0; y, y^2, 0, 0; 0, 0, x, x^2; 0, 0, y, y^2]; assert (isequal (kron(Y, X), expected)) ***** test syms x y z assert (isequal (kron (x, y, z), x*y*z)) assert (isequal (kron (x, y, z, 4), 4*x*y*z)) assert (isequal (kron ([2 3], y, z), [2 3]*y*z)) assert (isequal (kron ([2 3], [4; 5], y), [8 12; 10 15]*y)) ***** test syms x y A = kron ([x y], [1, -1; -1, 1], [2 3; 4 5]); D = kron ([7 9], [1, -1; -1, 1], [2 3; 4 5]); A = double (subs (A, [x y], [7 9])); assert (isequal (A, D)) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/findsym.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/findsym.m ***** assert (strcmp (findsym (sym(2)), '')); ***** shared x,y,f x=sym('x'); y=sym('y'); f=x^2+3*x*y-y^2; ***** assert (strcmp (findsym (f), 'x,y')); ***** assert (strcmp (findsym (f,1), 'x')); ***** test % test order of returned vars syms x y a b c xx % https://www.mathworks.com/matlabcentral/newsreader/view_thread/237730 alpha = sym('alpha'); assert (strcmp (findsym(b*xx*exp(alpha) + c*sin(a*y), 2), 'xx,y')) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/union.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/union.m ***** test A = sym([1 2 3]); B = sym([1 2 4]); C = union(A, B); D = sym([1 2 3 4]); assert (isequal (C, D)) ***** test % one nonsym A = sym([1 2 3]); B = [1 2 4]; C = union(A, B); D = sym([1 2 3 4]); assert (isequal (C, D)) ***** test % empty A = sym([1 2 3]); C = union(A, A); assert (isequal(C, A)) ***** test % empty input A = sym([1 2]); C = union(A, []); assert (isequal (C, sym([1 2]))) ***** test % scalar syms x assert (isequal (union([x 1], x), [1 x])) assert (isequal (union(x, x), x)) ***** test A = interval(sym(1), 3); B = interval(sym(2), 5); C = union(A, B); assert( isequal( C, interval(sym(1), 5))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/csc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/csc.m ***** error csc (sym(1), 2) ***** assert (isequaln (csc (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = csc(x); f2 = csc(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = csc(A); f2 = csc(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = csc (d); f = csc (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/pochhammer.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pochhammer.m ***** error pochhammer (sym(1)) ***** error pochhammer (sym(1), 2, 3) ***** assert (isequal (pochhammer (sym(3), 4), sym(360))) ***** assert (isequal (pochhammer (sym([2 3]), 3), sym([24 60]))) ***** test % round trip syms n z f = pochhammer (z, n); h = function_handle (f, 'vars', [z n]); A = h (1.1, 2.2); B = pochhammer (1.1, 2.2); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/sinint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinint.m ***** error sinint (sym(1), 2) ***** xtest assert (isequaln (sinint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (sinint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sinint(x); f2 = 0.9460830703671830149414; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sinint(A); f2 = 0.9460830703671830149414; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sinint (d); f = sinint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) ***** test % rewrite syms x y1 = sinint (x); y2 = rewrite (y1, 'Integral'); d1 = diff (y1, x); d2 = diff (y2, x); v1 = double (subs (d1, x, 2)); v2 = double (subs (d2, x, 2)); assert (v1, v2, -eps) 6 tests, 5 passed, 1 known failure, 0 skipped [inst/@sym/laplace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laplace.m ***** test % basic syms t s u w assert(logical( laplace(cos(3*t)) == s/(s^2+9) )) assert(logical( laplace(t^3) == 6/s^4 )) ***** test % matlab SMT compat syms t s u w z assert(logical( laplace(exp(2*t)) == 1/(s-2) )) assert(logical( laplace(exp(2*s)) == 1/(z-2) )) assert(logical( laplace(exp(2*u),w) == 1/(w-2) )) assert(logical( laplace(exp(2*u),u,w) == 1/(w-2) )) ***** test syms x s t z % matlab SMT prefers t over x assert (isequal (laplace (x*exp (t), z), x/(z - 1))) % as usual, you can just specify: assert (isequal (laplace(x*exp(t), t, z), x/(z - 1))) % SMT result assert (isequal (laplace(x*exp(t), x, z), exp(t)/z^2)) ***** test syms x a s % if no t, use symvar: take x before a assert (isequal (laplace (a*exp (x)), a/(s - 1))) ***** error laplace (sym('t')*sym('t', 'real')) ***** test % constant, issue #250 syms s f = laplace(2, s); assert (isequal (f, 2/s)) ***** test % Dirac delta and Heaviside tests syms t s assert (isequal (laplace(dirac(t-3)), exp(-3*s))) assert (isequal (laplace((t-3)*heaviside(t-3)), exp(-3*s)/s^2)) ***** xtest % Differential operator to algebraic % SymPy cannot evaluate? (Issue #170) syms s f(t) assert(logical( laplace(diff(f(t),t),t,s) == s*laplace(f(t),t,s)-f(0) )) ***** test % https://github.com/gnu-octave/symbolic/issues/1295 % fails on SymPy 1.10.* and 1.11.* if (pycall_sympy__ ('return Version(spver) >= Version("1.12")')) syms t s L = simplify (laplace (3*t*sin (4*t))); assert (isAlways (L == 24*s / (s^2 + 16)^2)) end 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/chol.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chol.m ***** error chol (sym ([1 2; 3 4])); ***** error chol (sym ([1 2; 3 4; 5 6])); ***** test A = chol(hilb(sym(2))); B = [[1 0]; sym(1)/2 sqrt(sym(3))/6]; assert( isequal( A, B )) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/acot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acot.m ***** error acot (sym(1), 2) ***** assert (isequaln (acot (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acot(x); f2 = acot(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acot(A); f2 = acot(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acot (d); f = acot (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/cond.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cond.m ***** test A = [1 2; 3 4]; B = sym(A); k1 = cond(A); k2 = cond(B); k3 = double(k2); assert (k1 - k3 <= 100*eps) ***** test % matrix with symbols syms x positive A = [x 0; sym(0) 2*x]; k1 = cond(A); assert (isequal (k1, sym(2))) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/sign.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sign.m ***** error sign (sym(1), 2) ***** assert (isequaln (sign (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sign(x); f2 = sign(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sign(A); f2 = sign(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sign (d); f = sign (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/latex.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/latex.m ***** test syms x y = sin(x); assert (strcmp (latex (y), '\sin{\left(x \right)}')) ***** assert (strcmp (latex (exp (sym('x'))), 'e^{x}')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/power.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/power.m ***** test % scalar .^ scalar syms x assert (isa (x.^2, 'sym')) assert (isa (2.^x, 'sym')) assert (isa (x.^x, 'sym')) assert (isequal (x.^2, x^2)) assert (isequal (2.^x, 2^x)) assert (isequal (x.^x, x^x)) ***** test % scalar .^ matrix D = [0 1; 2 3]; A = sym(D); assert (isequal ( sym(2).^D , 2.^D )) assert (isequal ( sym(2).^A , 2.^A )) assert (isequal ( 2.^D , 2.^A )) assert (isequal ( 2.^A , 2.^A )) ***** test % matrix .^ matrix syms x A = [x 2*x; 3*x 4*x]; D = [0 1; 2 3]; B = sym(D); assert (isequal ( A.^D, [1 2*x; 9*x^2 64*x^3] )) assert (isequal ( A.^B, [1 2*x; 9*x^2 64*x^3] )) ***** test % matrix .^ scalar syms x A = [x 2*x]; assert (isequal ( A.^2, [x^2 4*x^2] )) assert (isequal ( A.^sym(2), [x^2 4*x^2] )) ***** test % 1^oo % (sympy >= 0.7.5 gives NaN, SMT R2013b: gives 1) oo = sym(inf); assert (isnan (1^oo)) ***** test % 1^zoo % (1 on sympy 0.7.4--0.7.6, but nan in git (2014-12-12, a210908d4)) zoo = sym('zoo'); assert (isnan (1^zoo)) ***** test % immutable test A = sym([1 2]); B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)]])'); assert (isequal (A.^A, B.^B)) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/asec.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asec.m ***** error asec (sym(1), 2) ***** assert (isequaln (asec (sym(nan)), sym(nan))) ***** shared x, d d = 2; x = sym('2'); ***** test f1 = asec(x); f2 = asec(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = asec(A); f2 = asec(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = asec (d); f = asec (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/all.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/all.m ***** test % matrix a = [0 3; 1 2]; s = sym (a); assert (isequal (all (s), all (a))) assert (isequal (all (s,1), all (a,1))) assert (isequal (all (s,2), all (a,2))) ***** test % vector a = [1 2 3]; s = sym (a); assert (isequal (all (s), all (a))) assert (isequal (all (s,1), all (a,1))) assert (isequal (all (s,2), all (a,2))) ***** test % should fail on symbols syms x s = [1 2 x]; try all (s) waserr = false; catch waserr = true; end assert (waserr) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/le.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/le.m ***** test % simple x = sym(1); y = sym(1); e = x <= y; assert (logical (e)) x = sym(1); y = sym(2); e = x <= y; assert (logical (e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a <= b; assert (isa (e, 'sym')) assert (logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 <= x)) assert (logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x <= 10)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/cumprod.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cumprod.m ***** shared x, y x = sym ('x'); y = sym ('y'); ***** error cumprod (x, 1, 2) ***** assert (isequal (cumprod ([-x; -2*x; -3*x]), [-x; 2*x^2; -6*x^3])) ***** assert (isequal (expand (cumprod ([x + i, x - i])), [x + i, x^2 + 1])) ***** assert (isequal (cumprod ([1, x; y, 2], 1), [1, x; y, 2*x] )) ***** assert (isequal (cumprod ([1, x; y, 2], 2), [1, x; y, 2*y] )) ***** test cumprod ([x, x], [2, 1]); # ensure behaves like builtin cumprod ***** test cumprod ([x, x], [1, -2]); # ensure behaves like builtin cumprod ***** error cumprod (x, []) ***** error cumprod (x, {1}) ***** error cumprod (x, struct('a', 1)) ***** error cumprod (x, x) ***** error cumprod (x, 0) ***** error cumprod (x, -1) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/iscolumn.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/iscolumn.m ***** assert (iscolumn (sym ([1]))) ***** assert (iscolumn (sym ([1 2 3]'))) ***** assert (~iscolumn (sym ([]))) ***** assert (~iscolumn (sym ([1 2 3]))) ***** assert (~iscolumn (sym ([1 2; 3 4]))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/subsasgn.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsasgn.m ***** shared a,b b = [1:4]; a = sym(b); ***** test a(1) = 10; b(1) = 10; assert(isequal( a, b )) ***** test I = logical([1 0 1 0]); a(I) = 2; b(I) = 2; assert(isequal( a, b )) ***** test I = logical([1 0 1 0]); a(I) = [2 4]; b(I) = [2 4]; assert(isequal( a, b )) ***** test I = logical([1 0 1 0]); a(I) = [2; 4]; b(I) = [2; 4]; assert(isequal( a, b )) ***** shared ***** test b = 1:4; b = [b; 2*b; 3*b]; a = sym(b); rhs = [10 11; 12 13]; a([1:2],[1:2]) = rhs; b([1:2],[1:2]) = rhs; assert(isequal( a, b )) a(1:2,1:2) = rhs; assert(isequal( a, b )) ***** test % slice : b = 1:4; b = [b; 2*b]; a = sym(b); rhs = [10 11; 12 13]; a(:,2:3) = rhs; b(:,2:3) = rhs; assert(isequal( a, b )) ***** test % grow 2D b = 1:4; b = [b; 2*b]; a = sym(b); rhs = [10 11; 12 13]; a([1 end+1],end:end+1) = rhs; b([1 end+1],end:end+1) = rhs; assert(isequal( a, b )) ***** test % grow from nothing clear a a(3) = sym (1); b = sym ([0 0 1]); assert (isequal (a, b)) ***** test % grow from nothing, 2D clear a a(2, 3) = sym (1); b = sym ([0 0 0; 0 0 1;]); assert (isequal (a, b)) ***** test % linear indices of 2D b = 1:4; b = [b; 2*b; 3*b]; a = sym(b); b(1:4) = [10 11 12 13]; a(1:4) = [10 11 12 13]; assert(isequal( a, b )) b(1:4) = [10 11; 12 13]; a(1:4) = [10 11; 12 13]; assert(isequal( a, b )) ***** error % Wrong shape matrix RHS: Matlab/Octave don't allow this on doubles. % Matlab SMT 2013b gets it wrong. We throw an error. rhs = [10 11; 12 13]; a = sym (magic (3)); a(1:2,1:2) = rhs(:); ***** test % Issue #963: vector RHS with diff orientation from 2D indexing b = 1:4; b = [b; 2*b; 3*b]; a = sym(b); b(1:2:3, 1) = 11:2:13; a(1:2:3, 1) = sym(11:2:13); assert (isequal (a, b)) b(1:2:3, 1) = 1:2:3; a(1:2:3, 1) = 1:2:3; assert (isequal (a, b)) ***** test % Issue #963: vector RHS with diff orientation from 2D indexing a = sym (magic (3)); b = a; a(1:2:3, 2) = [14 15]; b(1:2:3, 2) = [14; 15]; assert (isequal (a, b)) a(2, 1:2:3) = [24 25]; b(2, 1:2:3) = [24; 25]; assert (isequal (a, b)) ***** test % 1D growth and 'end' g = sym([1 2 3]); g(3:4) = [67 68]; g(end:end+1) = [12 14]; assert(isequal( g, [1 2 67 12 14] )) ***** test % expanding empty and scalar syms x c = sym([]); c(1) = x; assert(isequal( c, x )) c(2) = 2*x; assert(isequal( c, [x 2*x] )) ***** shared a,b,I,J b = 1:4; b = [b; 3*b; 5*b]; a = sym(b); I = logical([1 0 1]); J = logical([1 0 1 0]); ***** assert(isequal( a(I,J), b(I,J) )) ***** test rhs = [90 91; 92 93]; b(I, J) = rhs; a(I, J) = rhs; assert(isequal( a, b )) ***** test b(I, J) = 100; a(I, J) = 100; assert(isequal( a, b )) ***** shared ***** test % logical with all false syms x y = x; y(false) = 6; assert(isequal( y, x )); a = [x x]; a([false false]) = [6 6]; assert(isequal( a, [x x] )); ***** test % issue #18, scalar access syms x x(1) = sym(6); assert(isequal( x, sym(6) )); x(1) = 6; assert(isequal( x, sym(6) )); x(true) = 88; assert(isequal( x, sym(88) )); ***** test % bug: assignment to column vector used to fail A = sym(zeros(3,1)); A(1) = 5; ***** test % symfun creation (generic function) syms x g(x) = x*x; assert(isa(g,'symfun')) ***** test % symfun creation (generic function) syms x g(x) assert(isa(g,'symfun')) ***** test % symfun creation when g already exists and is a sym/symfun syms x g = x; syms g(x) assert(isa(g,'symfun')) clear g g(x) = x; g(x) = x*x; assert(isa(g,'symfun')) ***** test % Issue #443: assignment with sym indices A = sym([10 11]); A(sym(1)) = 12; assert (isequal (A, sym([12 11]))) ***** test % Issue #443: assignment with sym indices A = sym([10 11]); A(sym(1), 1) = 12; assert (isequal (A, sym([12 11]))) A(sym(1), sym(1)) = 13; assert (isequal (A, sym([13 11]))) ***** test % Issue #443: assignment with sym indices, increase size A = sym([10 11]); A(sym(2), 1) = 12; assert (isequal (A, sym([10 11; 12 0]))) ***** error % Issue #443 A = sym([10 11]); A(2, sym('x')) = sym(12); ***** error % Issue #443 A = sym([10 11]); A(sym(2), sym('x')) = sym(12); ***** error % issue #445 A = sym([10 11]); A(1.1) = 13 ***** error % issue #445 A = sym([10 11]); A(sym(pi)) = 13 ***** error % issue #445 A = sym([1 2; 3 4]); A(1.3, 1.2) = 13 ***** test % older expansion tests syms x f = [2*x 3*x]; f(2) = 4*x; assert (isequal (f, [2*x 4*x])) f(2) = 2; assert (isequal(f, [2*x 2])) g = f; g(1,3) = x*x; assert (isequal(g, [2*x 2 x^2])) g = f; g(3) = x*x; assert (isequal(g, [2*x 2 x^2])) g = f; g(3) = 4; assert (isequal(g, [2*x 2 4])) ***** test % older slicing tests syms x f = [1 x^2 x^4]; f(1:2) = [x x]; assert (isequal( f, [x x x^4] )) f(1:2) = [1 2]; assert (isequal( f, [1 2 x^4] )) f(end-1:end) = [3 4]; assert (isequal( f, [1 3 4] )) f(3:4) = [10 11]; assert (isequal( f, [1 3 10 11] )) f(end:end+1) = [12 14]; assert (isequal( f, [1 3 10 12 14] )) ***** test % struct.str = sym, sometimes calls subsasgn d = struct(); syms x d.a = x; assert (isa (d, 'struct')) assert (isequal (d.a, x)) d.('a') = x; assert (isa (d, 'struct')) assert (isequal (d.a, x)) d = setfield(d, 'a', x); assert (isa (d, 'struct')) assert (isequal (d.a, x)) % at least on Oct 3.8, this calls sym's subsasgn d = struct(); d = setfield(d, 'a', x); assert (isa (d, 'struct')) assert (isequal (d.a, x)) ***** test % bool scalar assignments of true/false into sym syms x a = sym([1 2 x 3]); b = [1 2 10 4]; e = a == b; assert (logical (e(2))) e(2) = false; assert (~logical (e(2))) ***** test % bool vector assignments of true/false into sym syms x a = sym([1 2 x 3]); b = [1 2 10 4]; e = a == b; e(1:2) = [true true]; assert (isequal (e, [sym(1)==1 sym(2)==2 x==10 sym(3)==4])) ***** test % bool scalar promoted to vector assignments into sym syms x a = sym([1 2 x 3]); b = [1 2 10 4]; e = a == b; e(1:2) = true; assert (isequal (e, [sym(1)==1 sym(2)==2 x==10 sym(3)==4])) ***** test % grow scalar equality expression into a matrix of equalities syms a b c d e = a == b; e(2) = c == d; assert (isequal (e, [a==b c==d])) ***** shared a, b, I b = [1:4]; b = [b; 3*b; 5*b]; a = sym(b); I = mod (b, 5) > 1; ***** test A = a; A(I) = 2*b(I); B = b; B(I) = 2*b(I); assert (isequal (A, B)) ***** test % scalar RHS A = a; A(I) = 17; B = b; B(I) = 17; assert (isequal (A, B)) ***** test % nonetheless, above strange case should give right answer I = logical([1 0 1 0; 0 1 0 1; 1 0 1 0]); rhs = 2*b(I); rhs2 = reshape(rhs, 2, 3); A0 = a; A1 = a; A0(I) = rhs; A1(I) = rhs2; assert (isequal (A0, A1)) ***** shared AA, BB BB = [1 2 3; 4 5 6]; AA = sym(BB); ***** test A = AA; B = BB; B([1 6]) = [8 9]; A([1 6]) = [8 9]; assert (isequal (A, B)) ***** test % rhs scalar A = AA; B = BB; B([1 6]) = 88; A([1 6]) = 88; assert (isequal (A, B)) ***** test % If rhs is not a vector, make sure col-based access works rhs = [18 20; 19 21]; A = AA; B = BB; B([1 6]) = 88; A([1 6]) = 88; B([1 2 3 4]) = rhs; A([1 2 3 4]) = rhs; assert (isequal (A, B)) ***** test % Growth A = AA; B = BB; A(1,5) = 10; B(1,5) = 10; assert (isequal (A, B)) ***** shared ***** test % Check row deletion 1D a = sym([1; 3; 5]); b = sym([3; 5]); a(1) = []; assert( isequal( a, b)) ***** test % Check column deletion 1D a = sym([1, 4, 8]); b = sym([4, 8]); a(1) = []; assert( isequal( a, b)) ***** test % Check row deletion 2D a = sym([1, 2; 3, 4]); b = sym([3, 4]); a(1, :) = []; assert( isequal( a, b)) ***** test % Check column deletion 2D a = sym([1, 2; 3, 4]); b = sym([2; 4]); a(:, 1) = []; assert( isequal( a, b)) ***** test % General assign a = sym([1, 2; 3, 4]); b = sym([5, 5; 5, 5]); a(:) = 5; assert( isequal( a, b)) ***** test % Empty matrix a = sym([1, 2; 3, 4]); a(:) = []; assert( isequal( a, sym([]))) ***** test % Disassemble matrix a = sym([1 2; 3 4; 5 6]); b = sym([3 5 2 4 6]); a(1) = []; assert (isequal (a, b)); ***** error a = sym([1, 2; 3, 4]); a(1, 2) = []; ***** test % Issue #964 a = sym(10); a(1) = []; assert (isempty (a)) assert (isequal (a, zeros(1, 0))) ***** test % Issue #963: scalar asgn to empty part of matrix A = sym (magic (3)); B = A; A(1, []) = 42; assert (isequal (A, B)) A([], 2) = 42; assert (isequal (A, B)) A([]) = 42; assert (isequal (A, B)) A([], []) = 42; assert (isequal (A, B)) A(2:3, []) = 42; assert (isequal (A, B)) A([], 2:3) = 42; assert (isequal (A, B)) A(:, []) = 42; assert (isequal (A, B)) A([], :) = 42; assert (isequal (A, B)) ***** test % Issue #1026 a = sym(1:5); a(1:3) = []; assert (isequal (a, sym([4 5]))) ***** test % Issue #1026 B = eye(4); A = sym(B); A(1:2, :) = []; B(1:2, :) = []; assert (isequal (A, B)) ***** error % TODO: do we care what error? A = sym (magic (3)); A(2:3, []) = [66; 66]; ***** error A = sym (magic (3)); A([]) = [66; 66]; ***** error A = sym (magic (3)); A([], 1) = [66; 66]; ***** test % Issue #966: empty indexing, empty RHS, A unchanged B = magic(3); A = sym(B); A(1, []) = []; assert (isequal (A, B)) A([], 2) = []; assert (isequal (A, B)) A([], []) = []; assert (isequal (A, B)) A(2:3, []) = []; assert (isequal (A, B)) A([], 2:3) = []; assert (isequal (A, B)) A(:, []) = []; assert (isequal (A, B)) A([], :) = []; assert (isequal (A, B)) ***** test % Issue 967 B = [1 2; 3 4]; A = sym(B); A([]) = []; assert (isequal (A, B)) ***** test % Issue #965 a = sym(7); a([]) = []; assert (isequal (a, sym(7))) ***** test % Issue #965 a = sym(7); a([]) = 42; assert (isequal (a, sym(7))) ***** error % Issue #965 a = sym(7); a([]) = [42 42] ***** test b = eye (3); a = sym (b); I = [2 3; 4 5]; a(I) = -2*I; b(I) = -2*I; assert (isequal (a, sym (b))); assert (size (a), [3 3]); ***** error syms x A = [1 x; x 2]; A(5) = x; ***** test % 2D indexing with length in one dimension more than 2 a = sym ([1 2; 3 4; 5 6]); indices = [1 4; 2 5; 3 6]; b = [10 11; 12 13; 14 15]; a(indices) = b; assert (isequal (a, sym (b))); ***** test A = sym ([0 0 0]); indices = [false true false]; A(indices) = 1; assert (isequal (A, sym ([0 1 0]))); A(indices) = []; assert (isequal (A, sym ([0 0]))); indices = [false false]; A(indices) = []; assert (isequal (A, sym ([0 0]))); ***** shared a, b a = [1 2 3 5; 4 5 6 9; 7 5 3 2]; b = sym (a); ***** test A = a; B = b; A(true) = 0; B(true) = 0; assert (isequal (A, B)) ***** test A = a; B = b; A(false) = 0; B(false) = 0; assert (isequal (A, B)) ***** test c = [false true]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) ***** test c = [false true false true; true false true false; false true false true]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) ***** test c = [false true false true false]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) ***** test c = [false; true; false; true; false]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) ***** test c = [false true; false true; true false]; A = a; B = b; A(c) = 0; B(c) = 0; assert (isequal (A, B)) d = c | true; A(d) = 1; B(d) = 1; assert (isequal (A, B)) d = c & false; A(d) = 2; B(d) = 2; assert (isequal (A, B)) 77 tests, 77 passed, 0 known failure, 0 skipped [inst/@sym/abs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/abs.m ***** error abs (sym(1), 2) ***** assert (isequaln (abs (sym(nan)), sym(nan))) ***** shared x, d d = -1; x = sym('-1'); ***** test f1 = abs(x); f2 = abs(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = abs(A); f2 = abs(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = abs (d); f = abs (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/asinh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asinh.m ***** error asinh (sym(1), 2) ***** assert (isequaln (asinh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = asinh(x); f2 = asinh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = asinh(A); f2 = asinh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = asinh (d); f = asinh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/mrdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mrdivide.m ***** test % scalar syms x assert (isa( x/x, 'sym')) assert (isequal( x/x, sym(1))) assert (isa( 2/x, 'sym')) assert (isa( x/2, 'sym')) ***** test % matrix / scalar D = 2*[0 1; 2 3]; A = sym(D); assert (isequal ( A/2 , D/2 )) assert (isequal ( A/sym(2) , D/2 )) ***** test % I/A: either invert A or leave unevaluated: not bothered which A = sym([1 2; 3 4]); B = sym(eye(2)) / A; assert (isequal (B, inv(A)) || strncmpi (sympy (B), 'MatPow', 6)) ***** xtest % immutable test, upstream: TODO A = sym([1 2; 3 4]); B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); assert (isequal (A/A, B/B)) ***** test % A = C/B is C = A*B A = sym([1 2; 3 4]); B = sym([1 3; 4 8]); C = A*B; A2 = C / B; assert (isequal (A, A2)) ***** test A = [1 2; 3 4]; B = A / A; % assert (isequal (B, sym(eye(2)) assert (isequal (B(1,1), 1)) assert (isequal (B(2,2), 1)) assert (isequal (B(2,1), 0)) assert (isequal (B(1,2), 0)) ***** test A = sym([5 6]); B = sym([1 2; 3 4]); C = A*B; A2 = C / B; assert (isequal (A, A2)) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/cbrt.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cbrt.m ***** error cbrt (sym(1), 2) ***** assert (isequaln (cbrt (sym(nan)), sym(nan))) ***** shared x, d d = 2; x = sym('2'); ***** test f1 = cbrt(x); f2 = 1.2599210498948731647; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cbrt(A); f2 = 1.2599210498948731647; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); if (exist ('OCTAVE_VERSION', 'builtin')) A = cbrt (d); else % Issue #742 A = d^(1/3); end f = cbrt (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/psi.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/psi.m ***** assert (isequal (psi (sym (1)), -eulergamma)) ***** assert (isequal (psi (1, sym (1)), sym (pi)^2/6)) ***** assert (isinf (psi (sym ('inf')))) ***** test % compare to Maple: evalf(Psi(-101/100)); maple = vpa ('100.3963127058453949545769053445198842332424', 40); us = vpa (psi (sym (-101)/100), 40); assert (abs(double(maple-us)) < 1e-39) ***** test % compare to Maple: evalf(Psi(1, 3*I-2)); maple = vpa ('-0.1651414829219882371561038184133243839778799', 40) - ... vpa ('0.1960040752985823275302034466611711263617296j', 40); us = vpa (psi (1, sym (-2) + sym(3i)), 40); assert (abs(double(maple-us)) < 1e-39) ***** test % should match @double/psi if (exist ('psi','builtin')) assert (psi (pi), double (psi (sym (pi))), -3*eps) assert (psi (100), double (psi (sym (100))), -3*eps) assert (psi (1e-3), double (psi (1/sym (1e3))), -3*eps) if (exist ('OCTAVE_VERSION', 'builtin')) % 2014a doesn't support negative or complex arguments assert (psi (-1.5), double (psi (sym (-3)/2)), -3*eps) assert (psi (-8.3), double (psi (sym (-83)/10)),-4*eps) assert (psi (2i), double (psi (sym (2i))), -3*eps) assert (psi (10i+3), double (psi (sym (10i)+3)), -3*eps) end end ***** test % @double/psi loses accuracy near the poles: note higher rel tol if (exist ('psi','builtin')) if (exist ('OCTAVE_VERSION', 'builtin')) assert (psi (-1.1), double (psi (sym (-11)/10)), -6*eps) assert (psi (-1.01), double (psi (sym (-101)/100)), -50*eps) end end ***** test if (exist ('psi','builtin')) assert (psi (1, pi), double (psi (1, sym (pi))), -3*eps) assert (psi (1, 100), double (psi (1, sym (100))), -3*eps) assert (psi (1, 1e-4), double (psi (1, 1/sym (1e4))), -3*eps) end ***** test if (exist ('psi','builtin')) assert (psi (2, pi), double (psi (2, sym (pi))), -3*eps) assert (psi (2, 1000), double (psi (2, sym (1000))), -3*eps) assert (psi (2, 1e-4), double (psi (2, 1/sym (1e4))), -3*eps) end ***** test % round trip if (exist ('psi','builtin')) syms x f = psi (x); h = function_handle (f); A = h (1.1); B = psi (1.1); assert (A, B) end 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/kroneckerDelta.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/kroneckerDelta.m ***** error kroneckerDelta (sym(1), 2, 3) ***** test syms x assert (isequal (kroneckerDelta (x, x), sym(1))) ***** assert (isequal (kroneckerDelta ([sym(1) 2 3], [1 2 0]), sym([1 1 0]))) ***** test % round trip syms x y f = kroneckerDelta (x, y); h = function_handle (f); assert (h (1, 2), 0) assert (h (2, 2), 1) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/ones.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ones.m ***** test y = ones(sym(2)); x = [1 1; 1 1]; assert( isequal( y, sym(x))) ***** test y = ones(sym(2), 1); x = [1; 1]; assert( isequal( y, sym(x))) ***** test y = ones(sym(1), 2); x = [1 1]; assert( isequal( y, sym(x))) ***** test y = ones (sym([2 3])); x = sym (ones ([2 3])); assert (isequal (y, x)) ***** assert( isa( ones(sym(2), 'double'), 'double')) ***** assert( isa( ones(3, sym(3), 'single') , 'single')) ***** assert( isa( ones(3, sym(3)), 'sym')) ***** assert( isa( ones(3, sym(3), 'sym'), 'sym')) ***** xtest % Issue #13 assert( isa( ones(3, 3, 'sym'), 'sym')) !!!!! known failure invalid data type specified 9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/nextprime.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nextprime.m ***** assert (isequal (nextprime(sym(2)), 3)); ***** assert (isequal (nextprime(sym(18)), 19)); ***** assert (isequal (nextprime(sym([1 2 3])), [2 3 5])); ***** assert (isequal (nextprime(sym([-1 0])), [2 2])); ***** test % result is a sym p = nextprime(sym(2)); assert (isa (p, 'sym')) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/zeros.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/zeros.m ***** test y = zeros(sym(2)); x = [0 0; 0 0]; assert( isequal( y, sym(x))) ***** test y = zeros(sym(2), 1); x = [0; 0]; assert( isequal( y, sym(x))) ***** test y = zeros(sym(1), 2); x = [0 0]; assert( isequal( y, sym(x))) ***** test y = zeros (sym([2 3])); x = sym (zeros ([2 3])); assert (isequal (y, x)) ***** assert( isa( zeros(sym(2), 'double'), 'double')) ***** assert( isa( zeros(3, sym(3), 'single') , 'single')) ***** assert( isa( zeros(3, sym(3)), 'sym')) ***** assert( isa( zeros(3, sym(3), 'sym'), 'sym')) ***** xtest % Issue #13 assert( isa( zeros(3, 3, 'sym'), 'sym')) !!!!! known failure invalid data type specified 9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/hypot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hypot.m ***** assert (isequal (hypot (sym(3), 4), sym(5))) ***** test % compare to @double (note Matlab hypot only takes 2 inputs) A = hypot (hypot ([1 2 3], [4 5 6]), [7 8 9]); B = double (hypot (sym([1 2 3]), [4 5 6], [7 8 9])); assert (A, B, -eps) ***** test % compare to @double, with complex A = hypot ([1+2i 3+4i], [1 3+1i]); B = double (hypot (sym([1+2i 3+4i]), [1 3+1i])); assert (A, B, -eps) ***** test % matrices x = sym([1 -2; 0 3]); y = sym([0 0; 8 4]); A = hypot (x, y); B = sym([1 2; 8 5]); assert (isequal (A, B)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/or.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/or.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple assert (isequal (t | f, t)) assert (isequal (t | t, t)) assert (isequal (f | f, f)) ***** test % array w = [t t f f]; z = [t f t f]; assert (isequal (w | z, [t t t f])) ***** test % output is sym even for scalar t/f assert (isa (t | f, 'sym')) ***** test % eqns syms x e = or(x == 4, x == 5); assert (isequal (subs(e, x, [3 4 5 6]), [f t t f])) ***** error or (sym(1), 2, 3) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/besselh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselh.m ***** test % default to k=1 syms z a A = besselh(a, z); B = besselh(a, 1, z); assert (isequal (A, B)) ***** error besselh(sym('z')) ***** error besselh(2, 0, sym('z')) ***** error besselh(2, 3, sym('z')) ***** test % doubles, relative error X = [1 2 pi; 4i 5 6+6i]; Xs = sym(X); Alpha = [pi 3 1; 3 2 0]; Alphas = sym(Alpha); for k = 1:2 A = double(besselh(Alphas, k, Xs)); B = besselh(Alpha, k, X); assert (all (all (abs(A - B) < 10*eps*abs(A)))) end ***** test % round-trip syms x for k = 1:2 A = besselh(4, k, 10); q = besselh(4, k, x); h = function_handle(q); B = h(10); assert (abs(A - B) <= eps*abs(A)) end 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/dsolve.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dsolve.m ***** error dsolve (1, sym('x')) ***** test syms y(x) de = diff(y, 2) - 4*y == 0; f = dsolve(de); syms C1 C2 g1 = C1*exp(-2*x) + C2*exp(2*x); g2 = C2*exp(-2*x) + C1*exp(2*x); assert (isequal (f, g1) || isequal (f, g2)) ***** test % Not enough initial conditions syms y(x) C1 de = diff(y, 2) + 4*y == 0; g = 3*cos(2*x) + C1*sin(2*x); try f = dsolve(de, y(0) == 3); waserr = false; catch waserr = true; expectederr = regexp (lasterr (), 'Perhaps.*under-specified'); f = 42; end assert ((waserr && expectederr) || isequal (f, g)) ***** test % Solution in implicit form syms y(x) C1 de = (2*x*y(x) - exp(-2*y(x)))*diff(y(x), x) + y(x) == 0; sol = dsolve (de); eqn = x*exp(2*y(x)) - log(y(x)) == C1; % could differ by signs sol = lhs (sol) - rhs (sol); eqn = lhs (eqn) - rhs (eqn); sol2 = subs (sol, C1, -C1); assert (isequal (sol, eqn) || isequal (sol2, eqn)) ***** test % Compute solution and classification syms y(x) C1 de = (2*x*y(x) - exp(-2*y(x)))*diff(y(x), x) + y(x) == 0; [sol, classy] = dsolve (de); assert (any (strcmp (classy, '1st_exact'))) ***** test % initial conditions (first order ode) syms y(x) de = diff(y, x) + 4*y == 0; f = dsolve(de, y(0) == 3); g = 3*exp(-4*x); assert (isequal (f, g)) ***** test % initial conditions (second order ode) syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, y(0) == 3, subs(diff(y,x),x,0)==0); g = 3*cos(2*x); assert (isequal (f, g)) ***** test % Dirichlet boundary conditions (second order ode) syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, y(0) == 2, y(1) == 0); g = -2*sin(2*x)/tan(sym('2'))+2*cos(2*x); assert (isequal (simplify (f - g), 0)) ***** test % Neumann boundary conditions (second order ode) syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, subs(diff(y,x),x,0)==1, subs(diff(y,x),x,1)==0); g = sin(2*x)/2+cos(2*x)/(2*tan(sym('2'))); assert (isequal (simplify (f - g), 0)) ***** test % Dirichlet-Neumann boundary conditions (second order ode) syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, y(0) == 3, subs(diff(y,x),x,1)==0); g = 3*sin(2*x)*tan(sym('2'))+3*cos(2*x); assert (isequal (simplify (f - g), 0)) ***** test % System of ODEs gives struct, Issue #1003. syms x(t) y(t) ode1 = diff(x(t),t) == 2*y(t); ode2 = diff(y(t),t) == 2*x(t); soln = dsolve([ode1, ode2]); assert (isstruct (soln)) assert (numfields (soln) == 2) assert (isequal (sort (fieldnames (soln)), {'x'; 'y'})) ***** test % System of ODEs syms x(t) y(t) C1 C2 ode1 = diff(x(t),t) == 2*y(t); ode2 = diff(y(t),t) == 2*x(t); soln = dsolve([ode1, ode2]); soln = [soln.x, soln.y]; g1 = [C1*exp(-2*t) + C2*exp(2*t), -C1*exp(-2*t) + C2*exp(2*t)]; g2 = [C1*exp(2*t) + C2*exp(-2*t), C1*exp(2*t) - C2*exp(-2*t)]; g3 = [-C1*exp(-2*t) + C2*exp(2*t), C1*exp(-2*t) + C2*exp(2*t)]; g4 = [C1*exp(2*t) - C2*exp(-2*t), C1*exp(2*t) + C2*exp(-2*t)]; % old SymPy <= 1.5.1 had some extra twos g5 = [2*C1*exp(-2*t) + 2*C2*exp(2*t), -2*C1*exp(-2*t) + 2*C2*exp(2*t)]; g6 = [2*C1*exp(2*t) + 2*C2*exp(-2*t), 2*C1*exp(2*t) - 2*C2*exp(-2*t)]; assert (isequal (soln, g1) || isequal (soln, g2) || ... isequal (soln, g3) || isequal (soln, g4) || ... isequal (soln, g5) || isequal (soln, g6)) ***** test % System of ODEs (initial-value problem) syms x(t) y(t) ode_1=diff(x(t),t) == 2*y(t); ode_2=diff(y(t),t) == 2*x(t); sol_ivp=dsolve([ode_1,ode_2],x(0)==1,y(0)==0); g_ivp=[exp(-2*t)/2+exp(2*t)/2,-exp(-2*t)/2+exp(2*t)/2]; assert (isequal ([sol_ivp.x, sol_ivp.y], g_ivp)) ***** test syms y(x) de = diff(y, 2) + 4*y == 0; f = dsolve(de, y(0) == 0, y(sym(pi)/4) == 1); g = sin(2*x); assert (isequal (f, g)) ***** test % Nonlinear example syms y(x) C1 e = diff(y, x) == y^2; g = -1 / (C1 + x); soln = dsolve(e); assert (isequal (soln, g)) ***** test % Nonlinear example with initial condition syms y(x) e = diff(y, x) == y^2; g = -1 / (x - 1); soln = dsolve(e, y(0) == 1); assert (isequal (soln, g)) ***** test % forcing, Issue #183, broken in older sympy if (pycall_sympy__ ('return Version(spver) >= Version("1.7.1")')) syms x(t) y(t) ode1 = diff(x) == x + sin(t) + 2; ode2 = diff(y) == y - t - 3; soln = dsolve([ode1 ode2], x(0) == 1, y(0) == 2); X = soln.x; Y = soln.y; assert (isequal (diff(X) - (X + sin(t) + 2), 0)) assert (isequal (diff(Y) - (Y - t - 3), 0)) end ***** test syms f(x) a b de = diff(f, x) == 4*f; s = dsolve(de, f(a) == b); assert (isequal (subs(s, x, a), b)) ***** test % array of ICs syms x(t) y(t) ode_1 = diff (x(t), t) == 2*y(t); ode_2 = diff (y(t), t) == 2*x(t); sol = dsolve([ode_1, ode_2], [x(0)==1 y(0)==0]); g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; assert (isequal ([sol.x, sol.y], g)) ***** test % cell-array of ICs or ODEs, but not both % Note: to support both we'd need a wrapper outside of @sym syms x(t) y(t) ode_1 = diff (x(t), t) == 2*y(t); ode_2 = diff (y(t), t) == 2*x(t); sol = dsolve([ode_1, ode_2], {x(0)==1 y(0)==0}); g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; assert (isequal ([sol.x, sol.y], g)) sol = dsolve({ode_1, ode_2}, [x(0)==1 y(0)==0]); g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; assert (isequal ([sol.x, sol.y], g)) ***** test % array of ICs, Issue #1040. if (pycall_sympy__ ('return Version(spver) >= Version("1.7.1")')) syms x(t) y(t) z(t) syms x_0 y_0 z_0 diffEqns = [diff(x, t) == -x + 1, diff(y, t) == -y, diff(z, t) == -z]; initCond = [x(0) == x_0, y(0) == y_0, z(0) == z_0]; soln = dsolve (diffEqns, initCond); soln = [soln.x, soln.y, soln.z]; exact_soln = [(x_0 - 1)*exp(-t) + 1 y_0*exp(-t) z_0*exp(-t)]; assert (isequal (soln, exact_soln)) end 21 tests, 21 passed, 0 known failure, 0 skipped [inst/@sym/collect.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/collect.m ***** test syms x y z f = [x*y + x - 3 + 2*x^2 - z*x^3 + x^3]; assert (logical (collect (f,x) == ((x^3)*(1 - z) + 2*(x^2) + x*(y + 1) - 3))) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/trace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/trace.m ***** test % scalar syms x assert (isequal (trace(x), x)) ***** test syms x A = [x 3; 2*x 5]; assert (isequal (trace(A), x + 5)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/rhs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rhs.m ***** test syms x f = x + 1 == 2*x; assert (isequal (rhs(f), 2*x)) ***** error syms x rhs(x) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/size.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/size.m ***** test a = sym([1 2 3]); [n,m] = size(a); assert (n == 1 && m == 3) ***** test a = sym([1 2 3]); n = size(a); assert (isequal (n, [1 3])) ***** test %% size, numel, length a = sym([1 2 3; 4 5 6]); assert (isa (size(a), 'double')) assert (isa (numel(a), 'double')) assert (isa (length(a), 'double')) assert (isequal (size(a), [2 3])) assert (length(a) == 3) assert (numel(a) == 6) a = sym([1; 2; 3]); assert (isequal (size(a), [3 1])) assert (length(a) == 3) assert (numel(a) == 3) ***** test %% size by dim a = sym([1 2 3; 4 5 6]); n = size(a, 1); assert (n == 2) m = size(a, 2); assert (m == 3) a = sym([1 2 3]'); n = size(a, 1); assert (n == 3) m = size(a, 2); assert (m == 1) ***** xtest % symbolic-size matrices syms n m integer A = sym('A', [n m]); d = size(A); assert (~isa(d, 'sym')) assert (isnumeric(d)) assert (isequaln (d, [NaN NaN])) !!!!! known failure assert (isequaln (d, [NaN, NaN])) failed ***** xtest % half-symbolic-size matrices % FIXME: will fail until size stop lying by saying 1x1 syms n integer A = sym('A', [n 3]); assert (isequaln (size(A), [NaN 3])) A = sym('A', [4 n]); assert (isequaln (size(A), [4 NaN])) !!!!! known failure assert (isequaln (size (A), [NaN, 3])) failed ***** xtest % half-symbolic-size empty matrices % FIXME: will fail until size stop lying by saying 1x1 syms n integer A = sym('A', [n 0]); assert (isequaln (size(A), [NaN 0])) !!!!! known failure assert (isequaln (size (A), [NaN, 0])) failed 7 tests, 4 passed, 3 known failures, 0 skipped [inst/@sym/gammainc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gammainc.m ***** assert (isequal (gammainc (sym(0), 1), sym(0))) ***** assert (isequal (gammainc (sym(0), 2), sym(0))) ***** assert (isequal (gammainc (sym('oo'), 1), sym(1))) ***** assert (isequal (gammainc (sym(0), 1, 'upper'), sym(1))) ***** assert (isequal (gammainc (sym(0), 2, 'upper'), sym(1))) ***** assert (isequal (gammainc (sym('oo'), 1, 'upper'), sym(0))) ***** test % default is lower syms x a assert (isequal (gammainc (x, a), gammainc(x, a, 'lower'))) ***** test % compare to double x = 5; a = 1; A = gammainc (x, a); B = double (gammainc (sym(x), a)); assert(A, B, -eps) ***** test % compare to double where gamma(a) != 1 x = 5; a = 3; A = gammainc (x, a); B = double (gammainc (sym(x), a)); assert(A, B, -eps) ***** test % compare to double x = 100; a = 1; A = gammainc (x, a); B = double (gammainc (sym(x), a)); assert(A, B, -eps) ***** test % compare to double xs = sym(1)/1000; x = 1/1000; a = 1; A = gammainc (x, a); B = double (gammainc (xs, a)); assert(A, B, -eps) ***** test % compare to double x = 5; a = 1; A = gammainc (x, a, 'upper'); B = double (gammainc (sym(x), a, 'upper')); assert(A, B, -10*eps) ***** test % compare to double x = 10; a = 1; A = gammainc (x, a, 'upper'); B = double (gammainc (sym(x), a, 'upper')); assert(A, B, -10*eps) ***** test % compare to double x = 40; a = 1; A = gammainc (x, a, 'upper'); B = double (gammainc (sym(x), a, 'upper')); assert(A, B, -10*eps) ***** test % compare to double xs = sym(1)/1000; x = 1/1000; a = 1; A = gammainc (x, a, 'upper'); B = double (gammainc (xs, a, 'upper')); assert(A, B, -eps) ***** test % vectorized P = gammainc([sym(pi) 2], [1 3]); expected = [gammainc(pi, sym(1)) gammainc(2, sym(3))]; assert (isequal (P, expected)) ***** test % vectorized P = gammainc(sym(pi), [1 3]); expected = [gammainc(sym(pi), 1) gammainc(sym(pi), 3)]; assert (isequal (P, expected)) ***** test % vectorized P = gammainc([sym(pi) 2], 1); expected = [gammainc(pi, sym(1)) gammainc(2, sym(1))]; assert (isequal (P, expected)) ***** test % round trip syms x a f = gammainc (x, a, 'upper'); h = function_handle (f, 'vars', [x a]); A = h (1.1, 2); B = gammainc (1.1, 2, 'upper'); assert (A, B) ***** test % round trip syms x a f = gammainc (x, a, 'lower'); h = function_handle (f, 'vars', [x a]); A = h (1.1, 2); B = gammainc (1.1, 2, 'lower'); assert (A, B) ***** test % round trip syms x a f = gammainc (x, a, 'upper'); h = function_handle (f, 'vars', [x a]); A = h (1.1, 2.2); B = gammainc (1.1, 2.2, 'upper'); assert (A, B) ***** test % round trip syms x a f = gammainc (x, a, 'lower'); h = function_handle (f, 'vars', [x a]); A = h (1.1, 2.2); B = gammainc (1.1, 2.2, 'lower'); assert (A, B) 22 tests, 22 passed, 0 known failure, 0 skipped [inst/@sym/ellipticE.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticE.m ***** error ellipticE (sym(1), 2, 3) ***** assert (double (ellipticE (sym (-105)/10)), 3.70961391, 10e-9) ***** assert (double (ellipticE (sym (-pi)/4)), 1.844349247, 10e-10) ***** assert (double (ellipticE (sym (0))), 1.570796327, 10e-10) ***** assert (double (ellipticE (sym (1))), 1, 10e-1) ***** test % compare to Maple us = vpa (ellipticE (sym(7)/6, sym(13)/7), 40); % > evalf(EllipticE(sin(7/6), sqrt(13/7)), 40); maple = vpa ('0.6263078268598504591831743625971763209496', 40) + ... vpa ('0.1775496232203171126975790989055865596501j', 40); assert (abs (double (maple - us)), 0, 2e-39) ***** test % compare to Maple us = vpa (ellipticE (sym(8)/7), 40); % > evalf(EllipticE(sqrt(8/7)), 40); maple = vpa ('0.8717182992576322508542205614105802333270', 40) + ... vpa ('0.1066754320328976949531350910798010526685j', 40); assert (abs (double (maple - us)), 0, 2e-39) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/eig.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eig.m ***** test % basic A = [1 2; 3 4]; B = sym(A); sd = eig(A); s = eig(B); s2 = double(s); assert (norm(sort(s2) - sort(sd)) <= 10*eps) ***** test % scalars syms x a = sym(-10); assert (isequal (eig(a), a)) assert (isequal (eig(x), x)) ***** test % diag, multiplicity A = diag([6 6 7]); B = sym(A); e = eig(B); assert (isequal (size (e), [3 1])) assert (sum(logical(e == 6)) == 2) assert (sum(logical(e == 7)) == 1) ***** test % matrix with symbols syms x y positive A = [x+9 y; sym(0) 6]; s = eig(A); s = simplify(s); assert (isequal (s, [x+9; 6]) || isequal (s, [6; x+9])) ***** test % eigenvects e = sym([5 5 5 6 7]); A = diag(e); [V, D] = eig(A); assert (isequal (diag(D), e.')) assert (isequal (V, diag(sym([1 1 1 1 1])))) ***** test % alg/geom mult, eigenvects e = sym([5 5 5 6]); A = diag(e); A(1,2) = 1; [V, D] = eig(A); assert (isequal (diag(D), e.')) assert (sum(logical(V(1,:) ~= 0)) == 2) assert (sum(logical(V(2,:) ~= 0)) == 0) assert (sum(logical(V(3,:) ~= 0)) == 1) assert (sum(logical(V(4,:) ~= 0)) == 1) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/eval.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eval.m ***** error eval (sym(1), 2) ***** assert (isnumeric (eval (sym(3)))) ***** assert (isnumeric (eval (sin (sym(3))))) ***** test syms x y f = 2*x*y; x = 3; y = 4; g = eval (f); assert (isequal (g, 24)) ***** test syms x y f = 2*x*y; clear y x = 3; g = eval (f); assert (isequal (g, 6*sym('y'))) ***** test % do not convert inputs to sym, for SMT compat nearpi = pi + 1e-14; % sym could make this pi x = sym('x'); f = 2*x; x = nearpi; d = eval (f); assert (abs (d - 2*pi) > 1e-15) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/besseljn.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besseljn.m ***** test % roundtrip syms x A = double(besseljn(sym(2), sym(9))); q = besseljn(sym(2), x); h = function_handle(q); B = h(9); assert (abs (A - B) <= eps) ***** error jn(sym('x')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/uminus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/uminus.m ***** test % scalar syms x assert (isa (-x, 'sym')) assert (isequal (-(-x), x)) ***** test % matrix D = [0 1; 2 3]; A = sym(D); assert( isequal( -A, -D )) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/ellipticK.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticK.m ***** error ellipticK (sym(1), 2) ***** assert (isequal (ellipticK (sym (0)), sym (pi)/2)) ***** assert (isequal (ellipticK (sym (-inf)), sym (0))) ***** assert (double (ellipticK (sym (1)/2)), 1.854074677, 10e-10) ***** assert (double (ellipticK (sym (pi)/4)), 2.225253684, 10e-10) ***** assert (double (ellipticK (sym (-55)/10)), 0.9324665884, 10e-11) ***** test % compare to double ellipke m = 1/5; ms = sym(1)/5; [K, E] = ellipke (m); assert (double (ellipticK (ms)), K, -1e-15) assert (double (ellipticE (ms)), E, -1e-15) ***** test % compare to double ellipke if (exist ('OCTAVE_VERSION', 'builtin')) m = -10.3; ms = -sym(103)/10; [K, E] = ellipke (m); assert (double (ellipticK (ms)), K, -1e-15) assert (double (ellipticE (ms)), E, -1e-15) end ***** test % compare to Maple us = vpa (ellipticK (sym (7)), 40); % > evalf(EllipticK(sqrt(7)), 40); maple = vpa ('0.6168027921799632674669917683443602673441', 40) - ... vpa ('0.9114898734184488922164103102629560336918j', 40); assert (abs (double (maple - us)), 0, 1e-39) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/isequaln.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isequaln.m ***** test a = sym([1 2]); b = a; assert (isequaln (a, b)) b(1) = 42; assert (~isequaln (a, b)) ***** test a = sym([1 2; 3 4]); b = a; assert (isequaln (a, b)) b(1) = 42; assert (~isequaln (a, b)) ***** test a = sym([nan; 2]); b = a; assert (isequaln (a, b)) ***** test a = sym([nan 2; 3 4]); b = a; assert (isequaln (a, b)) ***** test % more than two arrays a = sym([nan 2 3]); b = a; c = a; assert (isequaln (a, b, c)) c(1) = 42; assert (~isequaln (a, b, c)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/signIm.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/signIm.m ***** assert (isequal (signIm (sym(1)), sym(0))) ***** assert (isequal (signIm (sym(1) + 2i), sym(1))) ***** assert (isequal (signIm (sym(1) - 2i), sym(-1))) ***** test % intermediate A looks bit weird, but it works syms z A = signIm (z); assert (isequal (subs(A, z, 3+sym(4i)), sym(1))) assert (isequal (subs(A, z, 3-sym(4i)), sym(-1))) ***** test % really a @sym/sign test, but that one is autogen z = 3 + sym(4i); A = sign (z); B = z / abs(z); assert (double (A), double (B), eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/adjoint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/adjoint.m ***** test syms x A = [x x^2; x^3 x^4]; B = [x^4 -x^2; -x^3 x]; assert( isequal( adjoint(A), B )) ***** test syms x assert( isequal( adjoint(x), 1)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/symprod.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symprod.m ***** error symprod (sym(1), 2, 3, 4, 5) ***** test % simple syms n assert (isequal (symprod(n, n, 1, 10), factorial(sym(10)))) assert (isequal (symprod(n, n, sym(1), sym(10)), factorial(10))) ***** test % one input syms n f = symprod (n); g = factorial (n); assert (isequal (f, g)) f = symprod (2*n); g = 2^n * factorial (n); assert (isequal (f, g)) ***** test % constant input f = symprod (sym(2)); syms x g = 2^x; assert (isequal (f, g)) ***** test % two inputs syms n f = symprod (2*n, n); g = 2^n * factorial (n); assert (isequal (f, g)) ***** test % two inputs, second is range syms n f = symprod (n, [1 6]); g = 720; assert (isequal (f, g)) f = symprod (n, [sym(1) 6]); g = 720; assert (isequal (f, g)) f = symprod (2*n, [1 6]); g = sym(2)^6*720; assert (isequal (f, g)) ***** test % three inputs, last is range syms n f = symprod (2*n, n, [1 4]); g = sym(384); assert (isequal (f, g)) f = symprod (2*n, n, [sym(1) 4]); g = sym(384); assert (isequal (f, g)) f = symprod (2, n, [sym(1) 4]); g = sym(16); assert (isequal (f, g)) ***** test % three inputs, no range syms n f = symprod (2*n, 1, 4); g = sym(384); assert (isequal (f, g)) f = symprod (5, sym(1), 3); g = sym(125); assert (isequal (f, g)) ***** test % infinite product syms a n oo zoo = sym('zoo'); assert (isequal (symprod(a, n, 1, oo), a^oo)) assert (isequal (symprod(a, n, 1, inf), a^oo)) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/find.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/find.m ***** error find (sym (1), 2, 3, 4) ***** error [x, y, z, w] = find (sym (1)) ***** test syms x y positive assert (isequal (find ([0 x 0 y]), [2 4])) assert (isequal (find ([0 x 0 y], 1), 2)) assert (isequal (find ([0 x 0 y], 1, 'first'), 2)) assert (isequal (find ([0 x 0 y], 1, 'last'), 4)) assert (isequal (find ([0 x 0 y], 2, 'last'), [2 4])) ***** test % its enough that it could be non-zero, does not have to be syms x y assert (isequal (find ([0 x+y]), 2)) ***** test % false should not be found syms x y assert (isequal (find ([x==x x==y]), 1)) assert (isequal (find ([x==y]), [])) ***** test % and/or should be treated as boolean syms x y assert (isequal (find ([or(x==y, x==2*y) x==y x==x]), 3)) ***** test % None none = pycall_sympy__ ('return None'); assert (isequal (find ([sym(0) none sym(1)]), 3)) syms x y assert (isequal (find ([x==y none x==x]), 3)) ***** test % two output syms x y A = [x 0 0; x+y 5 0]; [i, j] = find (A); assert (isequal (i, [1; 2; 2])) assert (isequal (j, [1; 1; 2])) ***** test % three output syms x y A = [x 0 0; x+y 5 0]; [i, j, v] = find (A); assert (isequal (i, [1; 2; 2])) assert (isequal (j, [1; 1; 2])) assert (isequal (v, [x; x+y; sym(5)])) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/plus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/plus.m ***** test % basic addition syms x assert (isa (x+5, 'sym')) assert (isa (5+x, 'sym')) assert (isa (5+sym(4), 'sym')) assert (isequal (5+sym(4), sym(9))) ***** test % array addition syms x D = [0 1; 2 3]; A = [sym(0) 1; sym(2) 3]; DZ = D - D; assert( isequal ( A + D , 2*D )) assert( isequal ( D + A , 2*D )) assert( isequal ( A + A , 2*D )) assert( isequal ( A + 2 , D + 2 )) assert( isequal ( 4 + A , 4 + D )) ***** test % ensure MatrixExpr can be manipulated somewhat syms n m integer A = sym('A', [n m]); B = subs(A, [n m], [5 6]); B = B + 1; assert (isa (B, 'sym')) C = B(1, 1); % currently makes a MatrixElement C = C + 1; assert (isa (C, 'sym')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/rewrite.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rewrite.m ***** test syms x assert (isequal (rewrite(x, 'exp'), x)) ***** test % empty e = sym([]); assert (isequal (rewrite(e, 'sin'), e)) ***** test syms x A = [exp(x) exp(2*x)]; B = [sinh(x) + cosh(x) sinh(2*x) + cosh(2*x)]; assert (isequal (rewrite(A, 'sin'), B)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/subs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subs.m ***** error subs (sym(1), 2, 3, 4) ***** shared x,y,t,f syms x y t f = x*y; ***** test assert( isequal( subs(f, x, y), y^2 )) assert( isequal( subs(f, y, sin(x)), x*sin(x) )) assert( isequal( subs(f, x, 16), 16*y )) ***** test % multiple subs w/ cells assert( isequal( subs(f, {x}, {t}), y*t )) assert( isequal( subs(f, {x y}, {t t}), t*t )) assert( isequal( subs(f, {x y}, {t 16}), 16*t )) assert( isequal( subs(f, {x y}, {16 t}), 16*t )) assert( isequal( subs(f, {x y}, {2 16}), 32 )) ***** test % multiple subs w/ vectors assert( isequal( subs(f, [x y], [t t]), t*t )) assert( isequal( subs(f, [x y], [t 16]), 16*t )) assert( isequal( subs(f, [x y], [2 16]), 32 )) ***** test % anything you can think of assert( isequal( subs(f, [x y], {t t}), t*t )) assert( isequal( subs(f, {x y}, [t t]), t*t )) assert( isequal( subs(f, {x; y}, [t; t]), t*t )) ***** test % sub in doubles gives sym (matches SMT 2013b) % FIXME: but see % http://www.mathworks.co.uk/help/symbolic/gradient.html assert( isequal( subs(f, {x y}, {2 pi}), 2*sym(pi) )) assert( ~isa(subs(f, {x y}, {2 pi}), 'double')) assert( isa(subs(f, {x y}, {2 pi}), 'sym')) assert( isa(subs(f, {x y}, {2 sym(pi)}), 'sym')) assert( isa(subs(f, {x y}, {sym(2) sym(pi)}), 'sym')) ***** shared x,y,t,f,F syms x y t f = sin(x)*y; F = [f; 2*f]; ***** test % need the simultaneous=True flag in SymPy (matches SMT 2013b) assert( isequal( subs(f, [x t], [t 6]), y*sin(t) )) assert( isequal( subs(F, [x t], [t 6]), [y*sin(t); 2*y*sin(t)] )) ***** test % swap x and y (also needs simultaneous=True assert( isequal( subs(f, [x y], [y x]), x*sin(y) )) ***** test % but of course both x and y to t still works assert( isequal( subs(f, [x y], [t t]), t*sin(t) )) ***** shared ***** test % Issue #10, subbing matrices in for scalars syms y a = sym([1 2; 3 4]); f = sin(y); g = subs(f, y, a); assert (isequal (g, sin(a))) ***** test % Issue #10, subbing matrices in for scalars syms y a = sym([1 2]); g = subs(sin(y), {y}, {a}); assert (isequal (g, sin(a))) ***** test % Issue #10, subbing matrices in for scalars syms y a = sym([1; 2]); g = subs(sin(y), {y}, a); assert (isequal (g, sin(a))) ***** test % Issue #10, subbing matrices in for scalars syms y a = [10 20 30]; f = 2*y; g = subs(f, y, a); assert (isequal (g, 2*a)) assert (isa (g, 'sym')) ***** test % Issue #10, sub matrices in for two scalars syms x y a = [10 20 30]; f = x^2*y; g = subs(f, {x y}, {a a+1}); h = a.^2.*(a+1); assert (isequal (g, h)) ***** test % Issue #10, sub matrices in for two scalars syms x y z a = [10 20 30]; f = x^2*y; g = subs(f, {x y}, {a z}); h = a.^2*z; assert (isequal (g, h)) g = subs(f, {x y}, {a 6}); h = a.^2*6; assert (isequal (g, h)) ***** error syms x y a = [10 20 30]; f = x^2*y; g = subs(f, {x y}, {[10 20 30] [10 20]}); ***** test % two inputs syms x y assert (isequal (subs (2*x, 6), sym(12))) assert (isequal (subs (2*x*y^2, 6), 12*y^2)) assert (isequal (subs (2*y, 6), sym(12))) assert (isequal (subs (sym(2), 6), sym(2))) ***** test % only two inputs, vector syms x assert (isequal (subs (2*x, [3 5]), sym([6 10]))) ***** test % SMT compat, subbing in vec/mat for nonexist x syms x y z % you might think this would be y: assert (~ isequal (subs (y, x, [1 2]), y)) % but it gives two y's: assert (isequal (subs (y, x, [1 2]), [y y])) assert (isequal (subs (sym(42), [3 5]), sym([42 42]))) assert (isequal (subs (sym(42), x, []), sym([]))) assert (isequal (subs (y, {x y}, {[1 2; 3 4], 6}), sym([6 6; 6 6]))) assert (isequal (subs (y, {x z}, {[1 2; 3 4], 6}), [y y; y y])) ***** test syms x y assert (isequal (subs (sym(42), x, y), sym(42))) assert (isequal (subs (sym(42), y), sym(42))) assert (isequal (subs (sym(42)), sym(42))) ***** test % empty lists assert (isequal (subs (sym(42), {}, {}), sym(42))) assert (isequal (subs (42, sym([]), sym([])), sym(42))) ***** test syms x y f = x*y; x = 6; y = 7; g = subs (f); assert (isequal (g, sym (42))) assert (isa (g, 'sym')) ***** test syms x y f = x*y; x = 6; g = subs (f); assert (isequal (g, 6*y)) ***** test syms x y f = x*y; xsave = x; x = 6; g = subs (f); assert (isequal (g, 6*y)) assert (isequal (f, xsave*y)) ***** test syms a x y f = a*x*y; a = 6; clear x g = subs (f); syms x assert (isequal (g, 6*x*y)) 25 tests, 25 passed, 0 known failure, 0 skipped [inst/@sym/real.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/real.m ***** assert (isequal (real (sym (4) + 3i),4)) ***** test syms x y real z = x + 1i*y; assert (isequal (real (z),x)) ***** test syms x y real Z = [4 x + 1i*y; x 4 + 3i]; assert (isequal (real (Z),[4 x; x 4])) ***** test syms x real d = exp (x*i); assert (isequal (real (d), cos (x))) ***** test % round trip syms x d = 3 - 5i; f = real (x); A = real (d); h = function_handle (f); B = h (d); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/polylog.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/polylog.m ***** assert (isequal (polylog (sym('s'), 0), sym(0))) ***** assert (isequal (double (polylog (1, sym(-1))), -log(2))) ***** assert (isequal (double (polylog (0, sym(2))), -2)) ***** assert (isequal (double (polylog (-1, sym(2))), 2)) ***** assert (isequal (double (polylog (-2, sym(3))), -1.5)) ***** assert (isequal (double (polylog (-3, sym(2))), 26)) ***** assert (isequal (double (polylog (-4, sym(3))), -15)) ***** assert (isequal (double (polylog (1, sym(1)/2)), log(2))) ***** test % round trip syms s z f = polylog (s, z); h = function_handle (f, 'vars', [s z]); A = h (1.1, 2.2); B = polylog (1.1, 2.2); assert (A, B) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/jacobian.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/jacobian.m ***** error jacobian (sym(1), 2, 3) ***** error jacobian ([sym(1) 2; sym(3) 4]) ***** shared x,y,z syms x y z ***** test % 1D f = x^2; assert (isequal (jacobian(f), diff(f,x))) assert (isequal (jacobian(f,{x}), diff(f,x))) assert (isequal (jacobian(f,x), diff(f,x))) ***** test % const f = sym(1); g = sym(0); assert (isequal (jacobian(f), g)) assert (isequal (jacobian(f,x), g)) ***** test % double const f = 1; g = sym(0); assert (isequal (jacobian(f,x), g)) ***** test % diag f = [x y^2]; g = [sym(1) 0; 0 2*y]; assert (isequal (jacobian(f), g)) assert (isequal (jacobian(f, [x y]), g)) assert (isequal (jacobian(f, {x y}), g)) ***** test % anti-diag f = [y^2 x]; g = [0 2*y; sym(1) 0]; assert (isequal (jacobian(f), g)) assert (isequal (jacobian(f, {x y}), g)) ***** test % shape f = [x y^2]; assert (isequal (size(jacobian(f, {x y z})), [2 3])) assert (isequal (size(jacobian(f, [x y z])), [2 3])) assert (isequal (size(jacobian(f, [x; y; z])), [2 3])) assert (isequal (size(jacobian(f.', {x y z})), [2 3])) ***** test % scalar f f = x*y; assert (isequal (size(jacobian(f, {x y})), [1 2])) g = gradient(f, {x y}); assert (isequal (jacobian(f, {x y}), g.')) ***** test % vect f wrt 1 var f = [x x^2]; assert (isequal (size(jacobian(f, x)), [2 1])) f = f.'; % same shape output assert (isequal (size(jacobian(f, x)), [2 1])) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/reshape.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/reshape.m ***** test d = [2 4 6; 8 10 12]; a = sym(d); assert (isequal (reshape(a, [1 6]), reshape(d, [1 6]))) assert (isequal (reshape(a, 1, 6), reshape(d, 1, 6))) assert (isequal (reshape(a, 2, 3), reshape(d, 2, 3))) assert (isequal (reshape(a, 3, 2), reshape(d, 3, 2))) assert (isequal (reshape(a, 6, 1), reshape(d, 6, 1))) ***** shared x, a, d syms x a = [1 x^2 x^4; x x^3 x^5]; d = [0 2 4; 1 3 5]; ***** test b = reshape(a, [1 6]); assert (isequal (size(b), [1 6])) assert (isequal (b, x.^reshape(d,1,6))) ***** test b = reshape(a, [6 1]); assert (isequal (size(b), [6 1])) assert (isequal (b, x.^reshape(d,6,1))) b = reshape(b, size(a)); assert (isequal (size(b), [2 3])) assert (isequal (b, a)) ***** test b = a(:); assert( isequal (size(b), [6 1])) assert( isequal (b, x.^(d(:)))) ***** test % reshape scalar assert (logical( reshape(x, 1, 1) == x )) assert (logical( reshape(x, [1 1]) == x )) ***** shared a syms a ***** error reshape(a, 2, 1) ***** error reshape(a, 1, 2) ***** error reshape(a, 1, 1, 1) ***** error reshape(a, [1, 1, 1]) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/sin.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sin.m ***** error sin (sym(1), 2) ***** assert (isequaln (sin (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sin(x); f2 = sin(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sin(A); f2 = sin(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sin (d); f = sin (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/frac.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/frac.m ***** test f1 = frac(sym(11)/10); f2 = sym(1)/10; assert (isequal (f1, f2)) ***** test d = sym(-11)/10; c = sym(9)/10; assert (isequal (frac (d), c)) ***** test d = sym(-19)/10; c = sym(1)/10; assert (isequal (frac (d), c)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/display.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/display.m ***** test assert(true) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/harmonic.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/harmonic.m ***** error harmonic (sym(1), 2) ***** xtest assert (isequaln (harmonic (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (harmonic (sym (nan)), sym (nan))) failed ***** assert (isequal (harmonic (sym(0)), sym(0))) ***** assert (isinf (harmonic (sym(inf)))) ***** assert (isequal (harmonic (sym([9 10])), [sym(7129)/2520 sym(7381)/2520])) ***** test % round trip y = sym('y'); A = harmonic (7); f = harmonic (y); h = function_handle (f); B = h (7); assert (A, B, -eps) 6 tests, 5 passed, 1 known failure, 0 skipped [inst/@sym/tand.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tand.m ***** error tand (sym(1), 2) ***** assert (isequaln (tand (sym(nan)), sym(nan))) ***** test f1 = tand (sym(1)); f2 = tand (1); assert (double (f1), f2, -eps) ***** test D = [10 30; 110 -45]; A = sym(D); f1 = tand (A); f2 = tand (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/asin.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asin.m ***** error asin (sym(1), 2) ***** assert (isequaln (asin (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = asin(x); f2 = asin(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = asin(A); f2 = asin(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = asin (d); f = asin (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/function_handle.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/function_handle.m ***** shared x,y,z syms x y z ***** test % basic test h = function_handle(2*x); assert(isa(h, 'function_handle')) assert(h(3)==6) ***** test % autodetect inputs h = function_handle(2*x*y, x+y); [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) ***** test % specified inputs h = function_handle(2*x*y, 'vars', [x y]); assert(h(3,5)==30) h = function_handle(2*x*y, x+y, 'vars', [x y]); [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) ***** test % cell arrays for vars list h = function_handle(2*x*y, x+y, 'vars', {x y}); [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) h = function_handle(2*x*y, x+y, 'vars', {'x' 'y'}); [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) ***** test % cell arrays specify order, overriding symvar order h = function_handle(x*y, 12/y, 'vars', {y x}); [t1, t2] = h(3, 6); assert(t1 == 18 && t2 == 4) h = function_handle(x*y, 12/y, 'vars', [y x]); [t1, t2] = h(3, 6); assert(t1 == 18 && t2 == 4) ***** test % cell arrays specify order, overriding symvar order h = function_handle(x*y, 12/y, 'vars', {y x}); [t1, t2] = h(3, 6); assert(t1 == 18 && t2 == 4) h = function_handle(x*y, 12/y, 'vars', [y x]); [t1, t2] = h(3, 6); assert(t1 == 18 && t2 == 4) ***** test % Functions with different names in Sympy. f = abs(x); % becomes Abs(x) h = function_handle(f); assert(h(-10) == 10) f = ceil(x); h = function_handle(f); assert(h(10.1) == 11) ***** test % 'file' with empty filename returns handle h = function_handle(2*x*y, 'file', ''); assert(isa(h, 'function_handle')) assert(h(3,5)==30) h = function_handle(2*x*y, 'vars', {x y}, 'file', ''); assert(isa(h, 'function_handle')) assert(h(3,5)==30) ***** test % output to disk fprintf('\n') if (exist ('OCTAVE_VERSION', 'builtin')) temp_file = tempname('', 'oct_'); else temp_file = tempname(); end % allow loading function from temp_file [temp_path, ans, ans] = fileparts(temp_file); addpath(temp_path); f = function_handle(2*x*y, 2^x, 'vars', {x y z}, 'file', temp_file); assert( isa(f, 'function_handle')) addpath(temp_path); % Matlab 2014a needs this? [a,b] = f(10,20,30); assert (isnumeric (a) && isnumeric (b)) assert (a == 400) assert (b == 1024) if (exist ('OCTAVE_VERSION', 'builtin')) assert (unlink([temp_file '.m']) == 0) else delete ([temp_file '.m']) end % remove temp_path from load path rmpath(temp_path); Wrote file /tmp/oct_20KOsG.m. ***** test % output to disk: also works with .m specified if (exist ('OCTAVE_VERSION', 'builtin')) temp_file = [tempname('', 'oct_') '.m']; else temp_file = [tempname() '.m']; end % allow loading function from temp_file [temp_path, ans, ans] = fileparts(temp_file); addpath(temp_path); f = function_handle(2*x*y, 2^x, 'vars', {x y z}, 'file', temp_file); assert( isa(f, 'function_handle')) addpath(temp_path); % Matlab 2014a needs this? [a,b] = f(10,20,30); assert (isnumeric (a) && isnumeric (b)) assert (a == 400) assert (b == 1024) if (exist ('OCTAVE_VERSION', 'builtin')) assert (unlink(temp_file) == 0) else delete (temp_file) end % remove temp_path from load path rmpath(temp_path); Wrote file /tmp/oct_Ux6zc2.m. ***** test % non-scalar outputs H = [x y z]; M = [x y; z 16]; V = [x;y;z]; h = function_handle(H, M, V); [t1,t2,t3] = h(1,2,3); assert(isequal(t1, [1 2 3])) assert(isequal(t2, [1 2; 3 16])) assert(isequal(t3, [1;2;3])) ***** test % non-scalar outputs in .m files H = [x y z]; M = [x y; z 16]; V = [x;y;z]; if (exist ('OCTAVE_VERSION', 'builtin')) temp_file = tempname('', 'oct_'); else temp_file = tempname(); end % allow loading function from temp_file [temp_path, ans, ans] = fileparts(temp_file); addpath(temp_path); h = function_handle(H, M, V, 'vars', {x y z}, 'file', temp_file); assert( isa(h, 'function_handle')) addpath(temp_path); % Matlab 2014a needs this? [t1,t2,t3] = h(1,2,3); assert(isequal(t1, [1 2 3])) assert(isequal(t2, [1 2; 3 16])) assert(isequal(t3, [1;2;3])) if (exist ('OCTAVE_VERSION', 'builtin')) assert (unlink([temp_file '.m']) == 0) else delete ([temp_file '.m']) end % remove temp_path from load path rmpath(temp_path); Wrote file /tmp/oct_wrC4vA.m. ***** test % order of outputs is lexiographic syms a A x y f = y + 10*a + 100*x + 1000*A; h = function_handle(f); assert (h(1, 2, 3, 4) == 1000 + 20 + 300 + 4) ***** test % https://github.com/gnu-octave/symbolic/issues/854 f = function_handle (x + 1i*sqrt (sym(3))); assert (f (1), complex (1, sqrt (3)), -eps) 14 tests, 14 passed, 0 known failure, 0 skipped [inst/@sym/fresnels.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fresnels.m ***** error fresnels (sym(1), 2) ***** test a = fresnels(sym(0)); assert (isequal (a, sym(0))) ***** test b = fresnels(sym('oo')); assert (isequal (b, sym(1)/2)) ***** test % values in a matrix syms x a = fresnels([sym(0) sym('oo') x 1]); b = [sym(0) sym(1)/2 fresnels(x) fresnels(sym(1))]; assert (isequal (a, b)) ***** test % round trip syms x f = fresnels (x); h = function_handle (f); A = h (1.1); B = fresnels (1.1); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/expm.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expm.m ***** test % scalar syms x assert (isequal (expm(x), exp(x))) ***** test % diagonal A = [sym(1) 0; 0 sym(3)]; B = [exp(sym(1)) 0; 0 exp(sym(3))]; assert (isequal (expm(A), B)) ***** test % diagonal w/ x syms x positive A = [sym(1) 0; 0 x+2]; B = [exp(sym(1)) 0; 0 exp(x+2)]; assert (isequal (expm(A), B)) ***** test % non-diagonal syms x positive A = [sym(1) 2; 0 x+2]; B = expm(A); C = double(subs(B, x, 4)); D = expm(double(subs(A, x, 4))); assert (max (max (abs (C - D))) <= 1e-11) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/heaviside.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/heaviside.m ***** error heaviside (sym(1), 2, 3) ***** assert (isequal (heaviside (sym(1)), sym(1))) ***** assert (isequal (heaviside (-sym(1)), sym(0))) ***** assert (double (heaviside (1)), heaviside (1)) ***** test D = [1 -1; -10 20]; A = sym(D); assert (double (heaviside (A)), heaviside (D)) ***** test H0 = sym([1 -2 0; 3 0 pi]); A = heaviside (sym(0), H0); assert (isequal (A, H0)) ***** test A = heaviside ([-1 0 1], sym(1)/2); assert (isequal (A, [0 sym(1)/2 1])) ***** test A = heaviside ([-1 0 1], sym(1)/2); assert (isequal (A, [0 sym(1)/2 1])) ***** assert (isequaln (heaviside (sym(nan)), sym(nan))) ***** test assert (isequaln (heaviside (sym(nan), sym(nan)), sym(nan))) assert (isequaln (heaviside (0, sym(nan)), sym(nan))) assert (isequaln (heaviside (2, sym(nan)), sym(1))) assert (isequaln (heaviside (-2, sym(nan)), sym(0))) ***** test % round trip syms x A = heaviside (1); f = heaviside (x); h = function_handle (f); B = h (1); assert (A, B, -eps) ***** test % round trip syms x h0 f = heaviside (x, h0); h = function_handle (f, 'vars', {x h0}); A = heaviside (1, 1/2); B = h (1, 1/2); assert (A, B, -eps) A = heaviside (0, 1/2); B = h (0, 1/2); assert (A, B, -eps) 12 tests, 12 passed, 0 known failure, 0 skipped [inst/@sym/ezsurf.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezsurf.m ***** error syms u v t ezsurf(u*v, 2*u*v, 3*v*t) ***** error syms u v t ezsurf(u*v, 2*u*v, u*v*t) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/sec.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sec.m ***** error sec (sym(1), 2) ***** assert (isequaln (sec (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sec(x); f2 = sec(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sec(A); f2 = sec(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sec (d); f = sec (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/tan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tan.m ***** error tan (sym(1), 2) ***** assert (isequaln (tan (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = tan(x); f2 = tan(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = tan(A); f2 = tan(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = tan (d); f = tan (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/cot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cot.m ***** error cot (sym(1), 2) ***** assert (isequaln (cot (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = cot(x); f2 = cot(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cot(A); f2 = cot(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = cot (d); f = cot (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/factor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/factor.m ***** test % n = 152862; % [p,m] = factor(n); % only works on Octave, no Matlab as of 2014a n = 330; % so we use an output without repeated factors p = factor(n); m = ones(size(p)); [ps,ms] = factor(sym(n)); assert (isequal (p, ps)) assert (isequal (m, ms)) ***** test n = sym(2)^4*13; [p,m] = factor(n); assert (isequal (p, [2 13])) assert (isequal (m, [4 1])) ***** test syms x assert( logical (factor(x^2 + 6*x + 5) == (x+5)*(x+1))) ***** test syms x f = [ x^4/2 + 5*x^3/12 - x^2/3 x^2 - 1 10]; g = [ x^2*(2*x - 1)*(3*x + 4)/12 (x+1)*(x-1) 10]; assert (isequal (factor(f), g)) ***** test % "fragile form" works A = factor(sym(124)); B = strtrim(disp(A, 'flat')); assert (strcmp (B, '2**2*31**1')) ***** error [p, m] = factor(sym('x')); ***** error [p, m] = factor(sym(42), sym('x')); ***** test % if polynomial happens to be a constant, don't attempt integer % factorization if a variable is specified f = sym(42); q = factor(f, sym('x')); assert (isequal (f, q)); 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/max.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/max.m ***** test % simple assert (isequal (max([sym(10) sym(11)]), sym(11))) ***** test syms x y assert (isequal (children (max (x, y)), [x y])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/ezmesh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezmesh.m ***** error syms u v t ezmesh(u*v, 2*u*v, 3*v*t) ***** error syms u v t ezmesh(u*v, 2*u*v, u*v*t) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/nchoosek.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nchoosek.m ***** assert (isequal (nchoosek(sym(5), sym(2)), sym(10))) ***** assert (isequal (nchoosek(sym(5), 2), sym(10))) ***** assert (isequal (nchoosek(5, sym(2)), sym(10))) ***** assert (isequal (nchoosek(sym(10), 0), 1)) ***** assert (isequal (nchoosek(sym(10), -1), 0)) ***** test n = sym('n', 'nonnegative', 'integer'); assert (isequal (nchoosek (n, n), sym(1))) ***** test n = sym('n', 'integer'); q = nchoosek(n, 2); w = subs(q, n, 5); assert (isequal (w, 10)) ***** test n = sym('n', 'integer'); k = sym('k', 'integer'); q = nchoosek(n, k); w = subs(q, {n k}, {5 2}); assert (isequal (w, 10)) ***** test % negative input assert (isequal (nchoosek (sym(-2), sym(5)), sym(-6))) ***** test % complex input n = sym(1 + 3i); k = sym(5); A = nchoosek (n, k); B = gamma (n + 1) / (gamma (k + 1) * gamma (n - k + 1)); assert (double (A), double (B), -2*eps) ***** test % complex input n = sym(-2 + 3i); k = sym(1 + i); A = nchoosek (n, k); B = gamma (n + 1) / (gamma (k + 1) * gamma (n - k + 1)); assert (double (A), double (B), -2*eps) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/ei.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ei.m ***** test syms x f = ei(sym(0)); assert (double(f) == -inf) ***** test D = [1.895117816355937 4.954234356001890]; A = ei(sym([1 2])); assert (all (abs(double(A) - D) < 1e-15)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/sech.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sech.m ***** error sech (sym(1), 2) ***** assert (isequaln (sech (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sech(x); f2 = sech(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sech(A); f2 = sech(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sech (d); f = sech (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/triu.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/triu.m ***** test % scalar syms x assert (isequal (triu(x), x)) assert (isequal (triu(x,0), x)) assert (isequal (triu(x,1), 0)) assert (isequal (triu(x,-1), 0)) ***** test % with symbols syms x A = [x 2*x; 3*x 4*x]; assert (isequal (triu(A), [x 2*x; 0 4*x])) ***** test % diagonal shifts B = round(10*rand(3,4)); A = sym(B); assert (isequal (triu(A), triu(B))) assert (isequal (triu(A,0), triu(B,0))) assert (isequal (triu(A,1), triu(B,1))) assert (isequal (triu(A,-1), triu(B,-1))) ***** test % double array pass through B = round(10*rand(3,4)); assert (isequal (triu(B,sym(1)), triu(B,1))) assert (isa (triu(B,sym(1)), 'double')) ***** test % immutable test A = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); assert (isequal (triu (A), sym ([1 2; 0 4]))) assert (isequal (tril (A), sym ([1 0; 3 4]))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ellipticCPi.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCPi.m ***** error ellipticCPi (sym (1)) ***** error ellipticCPi (sym (1), 2, 3) ***** assert (double (ellipticCPi (0, sym (1)/2)), 1.854074677, 10e-10) ***** assert (double (ellipticCPi (sym (6)/10, sym(71)/10)), 1.29469534336658, -20*eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/ismember.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ismember.m ***** assert (ismember (2, interval(sym(0),2))) ***** assert (~ismember (3, interval(sym(0),2))) ***** test % something in a matrix syms x A = [1 x; sym(pi) 4]; assert (ismember (sym(pi), A)) assert (ismember (x, A)) assert (~ismember (2, A)) ***** test % set syms x S = finiteset(2, sym(pi), x); assert (ismember (x, S)) ***** test % set with positive symbol syms p positive S = finiteset(2, sym(pi), p); assert (~ismember (-1, S)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/disp.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/disp.m ***** test syms x s = disp(sin(x)); assert(strcmp(s, sprintf(' sin(x)\n'))) ***** test syms x s = disp(sin(x/2), 'flat'); assert(strcmp(s, sprintf(' sin(x/2)\n'))) ***** test % Examples of 2x0 and 0x2 empty matrices: a = sym([1 2; 3 4]); b2x0 = a([true true], [false false]); b0x2 = a([false false], [true true]); assert (isequal (size (b2x0), [2 0])) assert (isequal (size (b0x2), [0 2])) s = disp(b2x0); assert(strcmp(s, sprintf(' []\n'))) s = disp(b0x2); assert(strcmp(s, sprintf(' []\n'))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/children.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/children.m ***** test % basics, sum syms x y f = 2*x + x*x + sin(y); assert (isempty (setxor (children(f), [2*x x*x sin(y)]))) ***** test % basics, product syms x y f = 2*x*sin(y); assert (isempty (setxor (children(f), [2 x sin(y)]))) ***** test % basics, product and powers syms x y f = 2*x^2*y^3; assert (isempty (setxor (children(f), [2 x^2 y^3]))) ***** test % eqn, ineq syms x y lhs = 2*x^2; rhs = y^3 + 7; assert (isequal (children(lhs == rhs), [lhs rhs])) assert (isequal (children(lhs < rhs), [lhs rhs])) assert (isequal (children(lhs >= rhs), [lhs rhs])) ***** test % matrix syms x y f = [4 + y 1 + x; 2 + x 3 + x]; c = children(f); ec = {[4 y], [1 x]; [2 x], [3 x]}; assert (isequal (size(c), size(ec))) for i=1:length(c) assert (isempty (setxor (c{i}, ec{i}))) end ***** test % matrix, sum/prod syms x y f = [x + y; x*sin(y); sin(x)]; ec = {[x y]; [x sin(y)]; [x]}; c = children(f); assert (isequal (size(c), size(ec))) for i=1:length(c) assert (isempty (setxor (c{i}, ec{i}))) end ***** test % scalar symbol syms x assert (isequal (children(x), x)) ***** test % scalar number x = sym(6); assert (isequal (children(x), x)) ***** test % symbolic size matrix syms n m integer A = sym('a', [n m]); C = children (A); assert (isequal (C(2), n)) assert (isequal (C(3), m)) ***** xtest % symbolic size matrix, fails on newer SymPy Issue #1089 syms n m integer A = sym('a', [n m]); assert (isequal (children (A), [sym('a') n m])) !!!!! known failure assert (isequal (children (A), [sym('a'), n, m])) failed 10 tests, 9 passed, 1 known failure, 0 skipped [inst/@sym/ilaplace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ilaplace.m ***** error ilaplace (sym(1), 2, 3, 4) ***** test % basic SMT compact: no heaviside syms s syms t positive assert (isequal (ilaplace(1/s^2), t)) assert (isequal (ilaplace(s/(s^2+9)), cos(3*t))) assert (isequal (ilaplace(6/s^4), t^3)) ***** test % more SMT compact syms r syms u positive assert (isequal (ilaplace(1/r^2, u), u)) assert (isequal (ilaplace(1/r^2, r, u), u)) ***** test % if t specified and not positive, we expect heaviside clear s t syms s t assert (isequal (ilaplace(1/s^2, s, t), t*heaviside(t))) assert (isequal (ilaplace(s/(s^2+9), t), cos(3*t)*heaviside(t))) assert (isequal (ilaplace(6/s^4, t), t^3*heaviside(t))) ***** test % Heaviside test syms s t=sym('t', 'positive'); assert(logical( ilaplace(exp(-5*s)/s^2,t) == (t-5)*heaviside(t-5) )) ***** test % Delta dirac test syms s t = sym('t'); assert (isequal (ilaplace (sym('2'), t), 2*dirac(t))) ***** test % Delta dirac test 2 syms s t calc = ilaplace (5*exp (-3*s) - 2*exp (-2*s)/s, s, t); want = 5*dirac (t-3) - 2*heaviside (t-2); assert (isequal (calc, want)) ***** test % Delta dirac test 3, coefficient syms s t syms c positive calc = ilaplace (2*exp (-c*s), s, t); want = 2*dirac (t - c); assert (isAlways (calc == want)) ***** error ilaplace (sym('s', 'positive')*sym('s')) ***** test % SMT compact, prefers s over symvar syms s x syms t positive assert (isequal (ilaplace(x/s^4), x*t^3/6)) t = sym('t'); assert (isequal (ilaplace(x/s^4, t), x*t^3/6*heaviside(t))) ***** test % pick s even it has assumptions syms s real syms x t assert (isequal (ilaplace (x/s^2, t), x*t*heaviside(t))) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/coshint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coshint.m ***** error coshint (sym(1), 2) ***** xtest assert (isequaln (coshint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (coshint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = coshint(x); f2 = 0.8378669409802082408947; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = coshint(A); f2 = 0.8378669409802082408947; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = coshint (d); f = coshint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/interval.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/interval.m ***** test a = interval(sym(1), 2); assert (isa (a, 'sym')) ***** test % some set subtraction a = interval(sym(0), 4); b = interval(sym(0), 1); c = interval(sym(1), 4, true); q = a - b; assert (isequal( q, c)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/lhs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lhs.m ***** test syms x y f = x + 1 == 2*y; assert (isequal (lhs(f), x + 1)) assert (isequal (rhs(f), 2*y)) ***** test syms x y f = x + 1 < 2*y; assert (isequal (lhs(f), x + 1)) assert (isequal (rhs(f), 2*y)) ***** test syms x y f = x + 1 >= 2*y; assert (isequal (lhs(f), x + 1)) assert (isequal (rhs(f), 2*y)) ***** test syms x y A = [x == y 2*x < 2*y; 3*x > 3*y 4*x <= 4*y; 5*x >= 5*y x < 0]; L = [x 2*x; 3*x 4*x; 5*x x]; R = [y 2*y; 3*y 4*y; 5*y 0]; assert (isequal( lhs(A), L)) assert (isequal( rhs(A), R)) ***** error syms x lhs(x) ***** error lhs(sym(true)) ***** error syms x A = [1 + x == 2*x sym(6)]; lhs(A) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/isallconstant.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isallconstant.m ***** assert (isallconstant([sym(1) 2 3])) ***** test syms x assert (~isallconstant([sym(1) x 3])) ***** test syms x assert (~isallconstant([sym(1) x; sym(2) 3])) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/log10.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log10.m ***** assert (isequal (log10 (sym (1000)), sym (3))) ***** assert (isequal (log10 (sym ([10 100])), sym ([1 2]))) ***** test % round-trip syms x f = log10 (x); h = function_handle (f); A = h (1.1); B = log10 (1.1); assert (A, B, -eps) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/equationsToMatrix.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/equationsToMatrix.m ***** test syms x y z [A, B] = equationsToMatrix ([x + y - z == 1, 3*x - 2*y + z == 3, 4*x - 2*y + z + 9 == 0], [x, y, z]); a = sym ([1 1 -1; 3 -2 1; 4 -2 1]); b = sym ([1; 3; -9]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test syms x y z A = equationsToMatrix ([3*x + -3*y - 5*z == 9, 4*x - 7*y + -3*z == -1, 4*x - 9*y - 3*z + 2 == 0], [x, y, z]); a = sym ([3 -3 -5; 4 -7 -3; 4 -9 -3]); assert (isequal (A, a)) ***** test syms x y [A, B] = equationsToMatrix ([3*x + 9*y - 5 == 0, -8*x - 3*y == -2]); a = sym ([3 9; -8 -3]); b = sym ([5; -2]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test % override symvar order syms x y [A, B] = equationsToMatrix ([3*x + 9*y - 5 == 0, -8*x - 3*y == -2], [y x]); a = sym ([9 3; -3 -8]); b = sym ([5; -2]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test syms x y z [A, B] = equationsToMatrix ([x - 9*y + z == -5, -9*y*z == -5], [y, x]); a = sym ([[-9 1]; -9*z 0]); b = sym ([-5 - z; -5]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test syms x y [A, B] = equationsToMatrix (-6*x + 4*y == 5, 4*x - 4*y - 5, x, y); a = sym ([-6 4; 4 -4]); b = sym ([5; 5]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test % vertical list of equations syms x y [A, B] = equationsToMatrix ([-6*x + 4*y == 5; 4*x - 4*y - 5], [x y]); a = sym ([-6 4; 4 -4]); b = sym ([5; 5]); assert (isequal (A, a)) assert (isequal (B, b)) ***** test syms x y [A, B] = equationsToMatrix (5*x == 1, y, x - 6*y - 7, y); a = sym ([0; 1; -6]); b = sym ([1 - 5*x; 0; -x + 7]); assert (isequal (A, a)) assert (isequal (B, b)) ***** error syms x y [A, B] = equationsToMatrix (x^2 + y^2 == 1, x - y + 1, x, y); ***** test % single equation syms x [A, B] = equationsToMatrix (3*x == 2, x); a = sym (3); b = sym (2); assert (isequal (A, a)) assert (isequal (B, b)) ***** test % single equation w/ symvar syms x [A, B] = equationsToMatrix (3*x == 2); a = sym (3); b = sym (2); assert (isequal (A, a)) assert (isequal (B, b)) ***** error syms x equationsToMatrix (3*x == 2, [x x]) 12 tests, 12 passed, 0 known failure, 0 skipped [inst/@sym/ismatrix.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ismatrix.m ***** assert(ismatrix(sym('x'))) ***** assert(ismatrix(sym([1 2 3]))) ***** assert(ismatrix(sym([1; 2]))) ***** assert(ismatrix(sym([1 2; 3 4]))) ***** assert(ismatrix(sym([]))) ***** assert(ismatrix(sym(ones(1,0)))) ***** assert(ismatrix(sym(ones(0,3)))) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/colon.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/colon.m ***** test a = sym(1):5; b = sym(1:5); assert(isequal(a,b)); a = 1:sym(5); b = sym(1:5); assert(isequal(a,b)); ***** test a = 2:sym(2):8; b = sym(2:2:8); assert(isequal(a,b)); ***** test a = sym(10):-2:-4; b = sym(10:-2:-4); assert(isequal(a,b)); ***** test % symbolic intervals p = sym(pi); L = 0:p/4:p; assert(isa(L,'sym')); assert(isequal(L, [0 p/4 p/2 3*p/4 p])); ***** test % mixed symbolic and double intervals p = sym(pi); s = warning ('off', 'OctSymPy:sym:rationalapprox'); L = 0.1:(sym(pi)/3):2.3; warning(s) assert(isa(L,'sym')); t = sym(1)/10; assert(isequal(L, [t p/3+t 2*p/3+t])); ***** error syms x; a = 0:x; ***** error syms x; a = 1:x; 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/hessian.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hessian.m ***** error hessian (sym(1), 2, 3) ***** error hessian ([sym(1) sym(2)]) ***** shared x,y,z syms x y z ***** test % 1D f = x^2; assert (isequal (hessian(f), diff(f,x,x))) assert (isequal (hessian(f,{x}), diff(f,x,x))) assert (isequal (hessian(f,x), diff(f,x,x))) ***** test % const f = sym(1); g = sym(0); assert (isequal (hessian(f), g)) assert (isequal (hessian(f,x), g)) ***** test % double const f = 1; g = sym(0); assert (isequal (hessian(f,x), g)) ***** test % linear f = 42*x; g = sym(0); assert (isequal (hessian(f), g)) assert (isequal (hessian(f,x), g)) ***** test % linear f = 42*x - sym('a')*y; g = [0 0; 0 0]; assert (isequal (hessian(f, {x y}), g)) ***** test % 2d f = x*cos(y); g = [0 -sin(y); -sin(y) -f]; assert (isequal (hessian(f), g)) assert (isequal (hessian(f, {x y}), g)) ***** test % 3d f = x*cos(z); Hexp = [0 0 -sin(z); sym(0) 0 0; -sin(z) 0 -f]; H = hessian(f, {x y z}); assert (isequal (H, Hexp)) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/subsref.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsref.m ***** shared a,b b = [1:4]; a = sym(b); ***** assert(isequal( a(1), b(1) )) ***** assert(isequal( a(2), b(2) )) ***** assert(isequal( a(4), b(4) )) ***** assert(isempty( a([]) )) ***** shared a,b b = [1:4]; b = [b; 3*b; 5*b]; a = sym(b); ***** assert(isequal( a(1), b(1) )) ***** assert(isequal( a(2), b(2) )) ***** assert(isequal( a(4), b(4) )) ***** assert(isequal( a(:,:), a )) ***** assert(isequal( a(1:2,1:3), a(1:2,1:3) )) ***** assert(isequal( a(1:2:3,[1 2 4]), b(1:2:3,[1 2 4]) )) ***** assert(isequal( a(1:2:3,[4 2 3 1]), b(1:2:3,[4 2 3 1]) )) ***** assert(isequal( a(1:2:3,[4 1 1 1]), b(1:2:3,[4 1 1 1]) )) ***** assert(isequal( a([],:), b([],:) )) ***** assert(isequal( size(a([],:)), [0 4] )) ***** assert(isequal( a(1:2,[]), b(1:2,[]) )) ***** assert(isequal( size(a(1:2,[])), [2 0] )) ***** assert(isempty( a(1:2,[]) )) ***** assert(isempty( a([],[]) )) ***** assert(isequal( a([],[]), sym([]) )) ***** assert(~isequal( a(1:2,[]), sym([]) )) ***** shared e e = sym([1 3 5; 2 4 6]); ***** assert(isequal( e(:), sym((1:6)') )) ***** assert(isequal( e([1 2 3]), sym([1 2 3]) )) ***** assert(isequal( e([1; 3; 4]), sym([1; 3; 4]) )) ***** assert(isempty( e([]) )) ***** assert(isempty( e('') )) ***** assert(isequal( e([]), sym([]) )) ***** shared a,b b = 1:5; a = sym(b); ***** assert(isequal( a([1 2 5]), b([1 2 5]) )) ***** assert(isequal( a([1; 2; 5]), b([1; 2; 5]) )) ***** shared x syms x ***** test % logical with empty result assert(isempty( x(false) )) a = [x x]; assert(isempty( a([false false]) )) ***** test % issue 18, scalar access assert(isequal( x(1), x )) assert(isequal( x(true), x )) ***** shared ***** test % older access tests syms x f = [x 2; 3 4*x]; % element access assert (logical( f(1,1) == x )) assert (logical( f(1,2) == 2 )) % linear access of 2d array assert (logical( f(1) == x )) assert (logical( f(2) == 3 )) % column based assert (logical( f(3) == 2 )) ***** shared a,b % effectively a random matrix a = reshape( round(50*(sin(1:20)+1)), 5,4); b = sym(a); ***** test % older array refs test assert (logical(b(1,1) == a(1,1))) assert (logical(b(3,1) == a(3,1))) assert (logical(b(1,3) == a(1,3))) assert (logical(b(4,4) == a(4,4))) ***** test % older array refs test: linear indices assert (logical(b(1) == a(1))) assert (logical(b(3) == a(3))) assert (logical(b(13) == a(13))) ***** test % older array refs test: end assert (all(all(logical( b(end,1) == a(end,1) )))) assert (all(all(logical( b(2,end) == a(2,end) )))) assert (all(all(logical( b(end,end) == a(end,end) )))) assert (all(all(logical( b(end-1,1) == a(end-1,1) )))) assert (all(all(logical( b(2,end-1) == a(2,end-1) )))) assert (all(all(logical( b(end-1,end-1) == a(end-1,end-1) )))) ***** shared ***** test % older slicing tests syms x a = [1 2 3 4 5 6]; a = [a; 3*a; 5*a; 2*a; 4*a]; b = sym(a); assert (isequal( b(:,1), a(:,1) )) assert (isequal( b(:,2), a(:,2) )) assert (isequal( b(1,:), a(1,:) )) assert (isequal( b(2,:), a(2,:) )) assert (isequal( b(:,:), a(:,:) )) assert (isequal( b(1:3,2), a(1:3,2) )) assert (isequal( b(1:4,:), a(1:4,:) )) assert (isequal( b(1:2:5,:), a(1:2:5,:) )) assert (isequal( b(1:2:4,:), a(1:2:4,:) )) assert (isequal( b(2:2:4,3), a(2:2:4,3) )) assert (isequal( b(2:2:4,3), a(2:2:4,3) )) ***** test % 2D arrays b = [1:4]; b = [b; 3*b; 5*b]; a = sym(b); I = rand(size(b)) > 0.5; assert (isequal (a(I), b(I))) I = I(:); assert (isequal (a(I), b(I))) I = I'; assert (isequal (a(I), b(I))) I = logical(zeros(size(b))); assert (isequal (a(I), b(I))) ***** test % 1D arrays, does right with despite warning r = [1:6]; ar = sym(r); c = r'; ac = sym(c); Ir = rand(size(r)) > 0.5; Ic = rand(size(c)) > 0.5; assert (isequal (ar(Ir), r(Ir))) assert (isequal (ac(Ic), c(Ic))) assert (isequal (ar(Ic), r(Ic))) assert (isequal (ac(Ir), c(Ir))) ***** test % rccross tests B = [1 2 3 4; 5 6 7 9; 10 11 12 13]; A = sym(B); assert (isequal (A([1 3],[2 3]), B([1 3], [2 3]) )) assert (isequal (A(1,[2 3]), B(1,[2 3]) )) assert (isequal (A([1 2],4), B([1 2],4) )) assert (isequal (A([2 1],[4 2]), B([2 1],[4 2]) )) assert (isequal (A([],[]), B([],[]) )) ***** error % issue #445 A = sym([10 11]); A(1.1) ***** error % issue #445 A = sym([10 11]); A(sym(4)/3) ***** error % issue #445 A = sym([1 2; 3 4]); A(1.1, 1) ***** error % issue #445 A = sym([1 2; 3 4]); A(1, sym(4)/3) ***** error A = sym([1 2; 3 4]); A(5) ***** shared a, b a = [1 2 3 5; 4 5 6 9; 7 5 3 2]; b = sym (a); ***** test c = true; assert (isequal (a(c), b(c))) c = false; assert (isequal (a(c), b(c))) ***** test c = [false true]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** test c = [false true false true; true false true false; false true false true]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** test c = [false true false true false]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** test c = [false; true; false; true; false]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** test c = [false true; false true; true false]; assert (isequal (a(c), b(c))) d = c | true; assert (isequal (a(d), b(d))) d = c & false; assert (isequal (a(d), b(d))) ***** shared ***** test % Orientation of empty results of logical indexing on row or column vectors r = [1:6]; c = r'; ar = sym(r); ac = sym(c); assert (isequal (ar(false), r(false))) assert (isequal (ac(false), c(false))) assert (isequal (ar(false (1, 6)), r(false (1, 6)))) assert (isequal (ac(false (1, 6)), c(false (1, 6)))) assert (isequal (ar(false (6, 1)), r(false (6, 1)))) assert (isequal (ac(false (6, 1)), c(false (6, 1)))) 50 tests, 50 passed, 0 known failure, 0 skipped [inst/@sym/symreplace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symreplace.m ***** test % start with assumptions on x then remove them syms x positive f = x*10; symreplace(x, sym('x')) assert(isempty(assumptions(x))) ***** test % replace x with y syms x f = x*10; symreplace(x, sym('y')) assert( isequal (f, 10*sym('y'))) ***** test % gets inside cells syms x f = {x 1 2 {3 4*x}}; symreplace(x, sym('y')) syms y assert( isequal (f{1}, y)) assert( isequal (f{4}{2}, 4*y)) ***** test % gets inside structs/cells syms x my.foo = {x 1 2 {3 4*x}}; my.bar = x; g = {'ride' my 'motor' 'sicle'}; symreplace(x, sym('y')) syms y f = g{2}; assert( isequal (f.foo{1}, y)) assert( isequal (f.foo{4}{2}, 4*y)) assert( isequal (f.bar, y)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/igamma.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/igamma.m ***** test % mostly tested in @sym/gammainc syms x assert (isequal (igamma (2, x), gammainc(x, 2, 'upper'))) ***** test % unregularized B = double (igamma (sym(3), 1)); A = gammainc (1, 3, 'upper')*gamma (3); assert (A, B, -2*eps) ***** test % something like a round trip: no igamma() syms x a f = igamma (a, x); h = function_handle (f, 'vars', [a x]); A = h (1.1, 2.2); B = double (igamma (sym(11)/10, sym(22)/10)); C = gammainc (2.2, 1.1, 'upper')*gamma(1.1); assert (A, B, -10*eps) assert (A, C, -10*eps) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/atan2.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atan2.m ***** error atan2 (1) ***** error atan2 (1, 2, 3) ***** test % some angles e = sym(1); a = atan2(0, e); assert (isequal (a, sym(0))) a = atan2(e, 0); assert (isequal (a, sym(pi)/2)) ***** test % symbols can give numerical answer syms x positive a = atan2(0, x); assert (isequal (a, sym(0))) a = atan2(x, 0); assert (isequal (a, sym(pi)/2)) a = atan2(-x, 0); assert (isequal (a, -sym(pi)/2)) ***** test % matrices x = sym([1 -2; 0 0]); y = sym([0 0; 8 -3]); a = atan2(y, x); sp = sym(pi); aex = [0 sp; sp/2 -sp/2]; assert (isequal (a, aex)) ***** test % round trip syms x y xd = -2; yd = -3; f = atan2 (x, y); A = atan2 (xd, yd); h = function_handle (f); B = h (xd, yd); assert (A, B, -eps) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/gt.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gt.m ***** test % simple x = sym(1); y = sym(1); e = x > y; assert (~logical (e)) x = sym(1); y = sym(2); e = x > y; assert (~logical (e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a > b; assert (isa (e, 'sym')) assert (~logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 > x)) assert (~logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x > 10)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/fplot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fplot.m ***** test % simple syms x f = cos (x); fplot (f); No entry for terminal type "unknown"; using dumb terminal settings. warning: using the gnuplot graphics toolkit is discouraged The gnuplot graphics toolkit is not actively maintained and has a number of limitations that are unlikely to be fixed. Communication with gnuplot uses a one-directional pipe and limited information is passed back to the Octave interpreter so most changes made interactively in the plot window will not be reflected in the graphics properties managed by Octave. For example, if the plot window is closed with a mouse click, Octave will not be notified and will not update its internal list of open figure windows. The qt toolkit is recommended instead. ***** test % constant function fplot (sym (10)); No entry for terminal type "unknown"; using dumb terminal settings. line 0: warning: iconv failed to convert degree sign warning: fplot: FCN is not a vectorized function which reduces performance warning: called from fplot at line 172 column 7 fplot at line 107 column 5 __test__ at line 4 column 2 test at line 682 column 11 /tmp/tmp.ZYBI9fhIE2 at line 1406 column 31 ***** test syms x f = cos (x); [xx, yy] = fplot (f); assert (xx(1), -5) assert (xx(end), 5) assert (min (yy), -1, 0.1) assert (max (yy), 1, 0.1) line 0: warning: iconv failed to convert degree sign ***** test syms x f = cos (x); dom = [1 3]; [xx, yy] = fplot (f, dom); assert (xx(1), dom(1)) assert (xx(end), dom(2)) ***** test syms x f = cos (x); dom = [1 3]; fplot (f, dom); assert (get (gca, 'xlim'), dom) ***** test syms x f = exp (x); dom = [1 2 3 4]; fplot (f, dom); assert (get (gca, 'xlim'), dom(1:2)) assert (get (gca, 'ylim'), dom(3:4)) line 0: warning: iconv failed to convert degree sign ***** test % bounds as syms syms x f = cos (x); dom = [1 2 3 4]; fplot (f, sym (dom)); assert (get (gca, 'xlim'), dom(1:2)) assert (get (gca, 'ylim'), dom(3:4)) line 0: warning: iconv failed to convert degree sign |---------------------------------------------------------------------| 4 +|+ + *+ + + +-+| +| + * + + +-----------------++| #|#######################*#########################+***?***x) exp (x)+ | #|######################*############################################ | 3.8 +|+#####################*###########################################+-+| #|#####################*############################################# | #|####################*############################################## | #|###################*############################################### | 3.6 +|+#################*###############################################+-+| #|#################*################################################# | #|################*################################################## | #|###############*################################################### | 3.4 +|+############**###################################################+-+| #|############*###################################################### | #|###########*####################################################### | #|##########*######################################################## | 3.2 +|+########*########################################################+-+| #|########*########################################################## | #|######**########################################################### | +|---------------------------------------------------------------------| 3 +-+###*#######+#############+#############+#############+###########+-+ 1 1.2 1.4 1.6 1.8 2 ***** test % bounds as syms, regular handle for function % fails on 6.1.0, maybe earlier too? if (compare_versions (OCTAVE_VERSION (), '6.1.0', '!=')) dom = [1 2]; fplot (@cos, sym (dom)); assert (get (gca, 'xlim'), dom(1:2)) end line 0: warning: iconv failed to convert degree sign |---------------------------------------------------------------------| 4 +|+ + + + + +-+| +| + + + +-----------------++| #|#################################################+***?***x) cos (x)+ | #|################################################################### | 3.8 +|+#################################################################+-+| #|################################################################### | #|################################################################### | #|################################################################### | 3.6 +|+#################################################################+-+| #|################################################################### | #|################################################################### | #|################################################################### | 3.4 +|+#################################################################+-+| #|################################################################### | #|################################################################### | #|################################################################### | 3.2 +|+#################################################################+-+| #|################################################################### | #|################################################################### | +|---------------------------------------------------------------------| 3 +-+###########+#############+#############+#############+###########+-+ 1 1.2 1.4 1.6 1.8 2 ***** error syms x y fplot (x*y) line 0: warning: iconv failed to convert degree sign |--------------------------------------------------------------------| 0.8 +|+ + + + + +-+| +| + + + + +----------++| 0.6 +|+######################################################+***?***cos++| *|*################################################################# | #|#*****############################################################ | 0.4 +|+#####*****######################################################+-+| #|###########**********############################################# | 0.2 +|+####################*****#######################################+-+| #|##########################*****################################### | #|###############################****############################### | 0 +|+##################################*****#########################+-+| #|########################################*****##################### | -0.2 +|+############################################*****###############+-+| #|##################################################*****########### | #|#######################################################**********# | -0.4 +|+################################################################***| #|################################################################## | -0.6 +|+################################################################+-+| #|################################################################## | +|--------------------------------------------------------------------| -0.8 +-+###########+#############+############+#############+###########+-+ 1 1.2 1.4 1.6 1.8 2 ***** test % N parameter does something syms x [xx, yy] = fplot (sin (x), [0 2], 5); N = length (xx); assert (N >= 5) [xx, yy] = fplot (sin (x), [0 2], 1000); N = length (xx); assert (N == 1000) ***** test % tolerance parameter does something syms x [xx, yy] = fplot (sin (exp (x/2)), [0 3], 0.1); N1 = length (xx); [xx, yy] = fplot (sin (exp (x/2)), [0 3], 0.01); N2 = length (xx); assert (N2 > N1) ***** test % fmt parameter does something syms x fplot (sin (x), [0 6], 'rx--', 'linewidth', 5); l = get (gca (), 'children'); assert (get (l, 'color'), [1 0 0]) assert (get (l, 'linewidth'), 5) f = exp (x); dom = [1 2 3 4]; fplot (f, dom); assert (get (gca, 'xlim'), dom(1:2)) assert (get (gca, 'ylim'), dom(3:4)) line 0: warning: iconv failed to convert degree sign |--------------------------------------------------------------------| 1 +|+ + BBBB*BB + + + + +-+| +| B*B BB + + +-----------------++| #|########BB############*BB#######################+***B***x) sin (x)+ | #|######*B#################B######################################## | #|#####B####################B####################################### | 0.5 +|+###B######################*B####################################+-+| #|###B#########################B#################################### | #|#*B###########################B################################### | #|B##############################B################################## | #|################################*B################################ | 0 B|+#################################B##############################+-+| #|###################################B############################## | #|####################################B############################# | #|#####################################B############################ B| #|######################################*B##########################B | -0.5 +|+#######################################B#######################*B-+| #|#########################################B#####################B## | #|##########################################B*B################BB### | #|#############################################B#############*B##### | +|--------------------------------------------------------------------| -1 +-+#########+##########+###########+##########+#####BBBB*B+########+-+ 0 1 2 3 4 5 6 ***** test close all 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/factorial.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/factorial.m ***** error factorial (sym(1), 2) ***** xtest assert (isequaln (factorial (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (factorial (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = factorial(x); f2 = factorial(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = factorial(A); f2 = factorial(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = factorial (d); f = factorial (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/erfc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfc.m ***** error erfc (sym(1), 2) ***** assert (isequaln (erfc (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = erfc(x); f2 = erfc(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erfc(A); f2 = erfc(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erfc (d); f = erfc (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/norm.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/norm.m ***** assert (isequal (norm(sym(-6)), 6)) ***** test % 2-norm default A = [1 2; 3 4]; n1 = norm (sym (A)); assert (isequal (n1, sqrt (sqrt (sym(221)) + 15))) assert (norm (A), double (n1), -eps) ***** test syms x y real assert (isequal (norm([x 1; 3 y], 'fro'), sqrt(x^2 + y^2 + 10))) ***** test syms x real assert (isequal (norm([x 1], 2), sqrt(x^2 + 1))) ***** test % test sym vs double ord syms x assert (isequal (norm([x 2 1], 1), abs(x) + 3)) assert (isequal (norm([x 2 1], sym(1)), abs(x) + 3)) assert (isequal (norm([sym(-3) 2 1], inf), sym(3))) assert (isequal (norm([sym(-3) 2 1], sym(inf)), sym(3))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ctranspose.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ctranspose.m ***** test x = sym(1); assert (isequal (x', x)) ***** assert (isempty (sym([])')) ***** test % conjugate does nothing to real x syms x real assert (isequal (x', x)) ***** test % complex syms x assert (isequal (x', conj(x))) ***** test % complex array syms x A = [x 2*x]; B = [conj(x); 2*conj(x)]; assert(isequal(A', B)) ***** test A = [1 2; 3 4]; assert(isequal( sym(A)' , sym(A') )) ***** test A = [1 2] + 1i; assert(isequal( sym(A)' , sym(A') )) ***** test % true/false t = sym(true); f = sym(false); assert (isequal ( t', t)) assert (isequal ( f', f)) ***** test % more true/false syms x A = [x true 1i]; B = [conj(x); true; -sym(1i)]; assert (isequal ( A', B)) /usr/lib/python3/dist-packages/sympy/matrices/matrixbase.py:2051: SymPyDeprecationWarning: non-Expr objects in a Matrix is deprecated. Matrix represents a mathematical matrix. To represent a container of non-numeric entities, Use a list of lists, TableForm, NumPy array, or some other data structure instead. See https://docs.sympy.org/latest/explanation/active-deprecations.html#deprecated-non-expr-in-matrix for details. This has been deprecated since SymPy version 1.9. It will be removed in a future version of SymPy. out = self.from_dok(self.rows, self.cols, fdok) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/floor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/floor.m ***** error floor (sym(1), 2) ***** assert (isequaln (floor (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = floor(x); f2 = floor(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = floor(A); f2 = floor(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = floor (d); f = floor (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/numel.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/numel.m ***** test a = sym([1 2 3]); assert(numel(a) == 3); ***** test % 2D array a = sym([1 2 3; 4 5 6]); assert(numel(a) == 6); ***** test % empty a = sym([]); assert(numel(a) == 0); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/isempty.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isempty.m ***** shared se, a se = sym ([]); a = sym ([1 2]); ***** assert (~isempty (sym (1))) ***** assert (isempty (sym (se))) ***** assert (isempty (se == [])) ***** test ***** test se(1) = 10; ***** test assert ( isa (se, 'sym')) ***** test assert ( isequal (se, 10)) ***** shared ***** test % empty matrices A = sym('A', [3 0]); assert (isempty (A)) A = sym(ones(3,0)); assert (isempty (A)) ***** test % non-empty symbolic-size matrices syms n integer A = sym('A', [3 n]); assert (~isempty (A)) ***** xtest % empty symbolic-size matrices % FIXME: will fail until size stop lying by saying 1x1 syms n integer A = sym('A', [0 n]); assert (isempty (A)) A = sym('A', [n 0]); assert (isempty (A)) !!!!! known failure assert (isempty (A)) failed 10 tests, 9 passed, 1 known failure, 0 skipped [inst/@sym/horzcat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/horzcat.m ***** test % basic syms x A = [x x]; B = horzcat(x, x); C = horzcat(x, x, x); assert (isa (A, 'sym')) assert (isa (B, 'sym')) assert (isa (C, 'sym')) assert (isequal (size(A), [1 2])) assert (isequal (size(B), [1 2])) assert (isequal (size(C), [1 3])) ***** test % basic, part 2 syms x A = [x 1]; B = [1 x]; C = [1 2 x]; assert (isa (A, 'sym')) assert (isa (B, 'sym')) assert (isa (C, 'sym')) assert (isequal (size(A), [1 2])) assert (isequal (size(B), [1 2])) assert (isequal (size(C), [1 3])) ***** test % row vectors a = [sym(1) 2]; b = [sym(3) 4]; assert (isequal ( [a b] , [1 2 3 4] )) assert (isequal ( [a 3 4] , [1 2 3 4] )) assert (isequal ( [3 4 a] , [3 4 1 2] )) assert (isequal ( [a [3 4]] , [1 2 3 4] )) assert (isequal ( [a sym(3) 4] , [1 2 3 4] )) assert (isequal ( [a [sym(3) 4]] , [1 2 3 4] )) ***** test % col vectors a = [sym(1); 2]; b = [sym(3); 4]; assert (isequal ( [a b] , [1 3; 2 4] )) assert (isequal ( [a b a] , [1 3 1; 2 4 2] )) ***** test % empty vectors v = sym(1); a = [v []]; assert (isequal (a, v)) a = [[] v []]; assert (isequal (a, v)) a = [v [] []]; assert (isequal (a, v)) ***** test % more empty vectors v = [sym(1) sym(2)]; q = sym(ones(1, 0)); assert (isequal ([v q], v)) ***** error v = [sym(1) sym(2)]; q = sym(ones(3, 0)); w = horzcat(v, q); ***** test % issue #700 A = sym ([1 2]); B = simplify (A); assert (isequal ([B A], [A B])) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/isinf.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isinf.m ***** shared x,zoo,oo,snan oo = sym(inf); zoo = sym('zoo'); x = sym('x'); snan = sym(nan); ***** test % various ops that give inf and nan assert (isinf(oo)) assert (isinf(zoo)) assert (isinf(oo+oo)) assert (~isinf(oo+zoo)) assert (~isinf(0*oo)) assert (~isinf(0*zoo)) assert (~isinf(snan)) assert (~isinf(oo-oo)) assert (~isinf(oo-zoo)) ***** test % arrays assert (isequal( isinf([oo zoo]), [1 1] )) assert (isequal( isinf([oo 1]), [1 0] )) assert (isequal( isinf([10 zoo]), [0 1] )) assert (isequal( isinf([x oo x]), [0 1 0] )) ***** test % Must not contain string 'symbol'; these all should make an % actual infinity. Actually a ctor test, not isinf. % IIRC, SMT in Matlab 2013b fails. oo = sym(inf); assert (isempty (strfind (sympy (oo), 'Symbol'))) oo = sym(-inf); assert (isempty (strfind (sympy (oo), 'Symbol'))) oo = sym('inf'); assert (isempty (strfind (sympy (oo), 'Symbol'))) oo = sym('-inf'); assert (isempty (strfind (sympy (oo), 'Symbol'))) oo = sym('Inf'); assert (isempty (strfind (sympy (oo), 'Symbol'))) ***** test % ops with infinity shouldn't collapse syms x oo zoo y = x + oo; assert (~isempty (strfind (lower (sympy (y)), 'add') )) y = x - oo; assert (~isempty (strfind (lower (sympy (y)), 'add') )) y = x - zoo; assert (~isempty (strfind (lower (sympy (y)), 'add') )) y = x*oo; assert (~isempty (strfind (lower (sympy (y)), 'mul') )) ***** test % ops with infinity are not necessarily infinite syms x oo zoo y = x + oo; assert(~isinf(y)) % SMT 2014a says "true", I disagree y = x - zoo; assert(~isinf(y)) y = x*oo; assert(~isinf(y)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/mod.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mod.m ***** error mod (sym(1), 2, 3 ,4) ***** assert (isequal (mod (sym(5), 4), sym(1))) ***** assert (isequal (mod ([sym(5) 8], 4), [1 0] )) ***** assert (isequal (mod (sym(5), [2 3]), [1 2] )) ***** assert (isequal (mod ([sym(5) sym(6)], [2 3]), [1 0] )) ***** test syms x assert (isequal ( mod (5*x, 3), 2*x )) ***** test syms x a = [7*x^2 + 3*x + 3 3*x; 13*x^4 6*x]; assert (isequal ( mod (a,3), [x^2 0; x^4 0] )) ***** test % vector of polys with mix of vars: symvar on each syms x y a = [6*x 7*y]; b = mod(a, 4); c = [2*x 3*y]; assert (isequal (b, c)) ***** test % coeff has variable syms x n = sym('n', 'integer'); p = (3*n + 2)*x; q = mod(p, 3); assert (isequal (q, 2*x)) ***** test % coeff has variable syms x a p = a*x; q = mod(p, 3); q = children(q); q = q(2); % order might be fragile! w = subs(q, a, 5); assert (isequal (w, 2)) ***** test % different modulo syms x y q = mod([5*x + 10 5*y + 10], [2 3]); assert (isequal (q, [x 2*y + 1])) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/chebyshevU.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chebyshevU.m ***** error chebyshevU (sym(1)) ***** error chebyshevU (sym(1), 2, 3) ***** assert (isequaln (chebyshevU (2, sym(nan)), sym(nan))) ***** shared x syms x ***** assert(isequal(chebyshevU(0, x), sym(1))) ***** assert(isequal(chebyshevU(1, x), 2*x)) ***** assert(isequal(chebyshevU(2, x), 4*x*x - 1)) ***** assert(isequal(chebyshevU([0 1 2], x), [sym(1) 2*x (4*x*x-1)])) ***** test % round trip syms n z f = chebyshevU (n, z); h = function_handle (f, 'vars', [n z]); A = h (1.1, 2.2); B = chebyshevU (1.1, 2.2); assert (A, B) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/divisors.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/divisors.m ***** test assert( isequal( divisors(sym(150)), divisors(sym(-150)) )) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/sinh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinh.m ***** error sinh (sym(1), 2) ***** assert (isequaln (sinh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = sinh(x); f2 = sinh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = sinh(A); f2 = sinh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = sinh (d); f = sinh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/log2.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log2.m ***** assert (isequal (log2 (sym (1024)), sym (10))) ***** assert (isequal (log2 (sym ([2 16; 32 1])), sym ([1 4; 5 0]))) ***** test % round-trip syms x f = log2 (x); h = function_handle (f); A = h (1.1); B = log2 (1.1); assert (A, B, -5*eps) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/pinv.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pinv.m ***** test % scalar syms x assert (isequal (pinv(x), 1/x)) ***** test % 2x3 A = [1 2 3; 4 5 6]; assert (max (max (abs (double (pinv (sym (A))) - pinv(A)))) <= 10*eps) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/cosd.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosd.m ***** error cosd (sym(1), 2) ***** assert (isequaln (cosd (sym(nan)), sym(nan))) ***** test f1 = cosd (sym(1)); f2 = cosd (1); assert (double (f1), f2, -eps) ***** test D = [10 30; 110 -45]; A = sym(D); f1 = cosd (A); f2 = cosd (D); assert (double (f1), f2, -4*eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/cosint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosint.m ***** error cosint (sym(1), 2) ***** xtest assert (isequaln (cosint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (cosint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test f1 = cosint(x); f2 = 0.3374039229009681346626; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cosint(A); f2 = 0.3374039229009681346626; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = cosint (d); f = cosint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) ***** test % rewrite syms x y1 = cosint (x); y2 = rewrite (y1, 'Integral'); d1 = diff (y1, x); d2 = diff (y2, x); assert (isequal (d1, simplify(d2))) v1 = double (subs (d1, x, 2)); v2 = double (subs (d2, x, 2)); assert (v1, v2, -eps) 6 tests, 5 passed, 1 known failure, 0 skipped [inst/@sym/hypergeom.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hypergeom.m ***** assert (isequal (double (hypergeom ([1, 2], [2, 3], sym(0))), 1)) ***** test % matrix input syms z a = sym([1 2]); b = sym([3 4]); A = hypergeom (a, b, [0 sym(1); 2 z]); B = [hypergeom(a,b,0) hypergeom(a,b,1); hypergeom(a,b,2) hypergeom(a,b,z)]; assert (isequal (A, B)) ***** test % scalars for a and/or b syms z assert (isequal (hypergeom(1, 2, z), hypergeom({sym(1)}, {sym(2)}, z))) assert (isequal (hypergeom([1 2], 3, z), hypergeom([1 2], {sym(3)}, z))) assert (isequal (hypergeom(1, [2 3], z), hypergeom({sym(1)}, [2 3], z))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/simplify.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/simplify.m ***** shared x,p,q syms x p = x^2 + x + 1; q = horner (p); ***** assert(~isequal( p - q, 0)) ***** assert(isequal( simplify(p - q), 0)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/chebyshevT.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chebyshevT.m ***** error chebyshevT (sym(1)) ***** error chebyshevT (sym(1), 2, 3) ***** assert (isequaln (chebyshevT (2, sym(nan)), sym(nan))) ***** shared x syms x ***** assert(isequal(chebyshevT(0, x), sym(1))) ***** assert(isequal(chebyshevT(1, x), x)) ***** assert(isequal(chebyshevT(2, x), 2*x*x - 1)) ***** assert(isequal(chebyshevT([0 1 2], x), [sym(1) x (2*x*x-1)])) ***** test % round trip syms n z f = chebyshevT (n, z); h = function_handle (f, 'vars', [n z]); A = h (1.1, 2.2); B = chebyshevT (1.1, 2.2); assert (A, B) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/fresnelc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fresnelc.m ***** error fresnelc (sym(1), 2) ***** test a = fresnelc(sym(0)); assert (isequal (a, sym(0))) ***** test b = fresnelc(sym('oo')); assert (isequal (b, sym(1)/2)) ***** test % values in a matrix syms x a = fresnelc([sym(0) sym('oo') x 1]); b = [sym(0) sym(1)/2 fresnelc(x) fresnelc(sym(1))]; assert (isequal (a, b)) ***** test % round trip syms x f = fresnelc (x); h = function_handle (f); A = h (1.1); B = fresnelc (1.1); assert (A, B) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/repmat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/repmat.m ***** test % simple syms x A = [x x x; x x x]; assert (isequal (repmat(x, 2, 3), A)) ***** test % block cf double A = [1 2 3; 4 5 6]; B = sym(A); C = repmat(A, 2, 3); D = repmat(B, 2, 3); assert (isequal (C, D)) ***** test % empty A = repmat(sym([]), 2, 3); assert (isempty(A)); assert (isequal (size(A), [0 0])) ***** test % more empties A = repmat(sym(pi), [0 0]); assert (isequal (size(A), [0 0])) A = repmat(sym(pi), [0 3]); assert (isequal (size(A), [0 3])) A = repmat(sym(pi), [2 0]); assert (isequal (size(A), [2 0])) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/acosh.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acosh.m ***** error acosh (sym(1), 2) ***** assert (isequaln (acosh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acosh(x); f2 = acosh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acosh(A); f2 = acosh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acosh (d); f = acosh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/isprime.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isprime.m ***** assert (isprime (sym(5))) ***** assert (~isprime (sym(4))) ***** assert (~isprime (sym(0))) ***** assert (~isprime (sym(1))) ***** test a = [5 7 6; 1 2 337]; assert (isequal (isprime (a), [true true false; false true true])) ***** assert (~isprime(sym(-4))) ***** assert (~isprime(sym(4i))) ***** assert (~isprime(sym(3)/5)) ***** error isprime(sym('x')); 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/lgamma.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lgamma.m ***** test % tested by gammaln assert (isequal (lgamma (sym ('x')), gammaln (sym ('x')))) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/rdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rdivide.m ***** test % scalar syms x assert (isa (x ./ 1, 'sym')) assert (isa (x ./ x, 'sym')) assert (isequal (x ./ 1, x)) assert (isequal (x ./ x, sym(1))) ***** test % matrix-scalar D = 2*[0 1; 2 3]; A = sym(D); assert (isequal ( A./2 , D/2 )) assert (isequal ( A./sym(2) , D/2 )) assert (isequal ( D./sym(2) , D/2 )) ***** test % matrix ./ matrix D = [1 2; 3 4]; A = sym(D); assert (isequal ( A./A , D./D )) assert (isequal ( A./D , D./D )) assert (isequal ( D./A , D./D )) ***** test % matrix ./ matrix with symbols syms x y A = [x y; x^2 2*y]; B = [y x; x y]; assert (isequal ( A./A , sym(ones(2,2)) )) assert (isequal ( A./B , [x/y y/x; x 2] )) ***** test % scalar ./ matrix D = [1 2; 3 4]; A = sym(D); assert (isequal ( 12./A , 12./D )) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/columns.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/columns.m ***** test a = sym([1 2 3]); assert (columns(a) == 3) ***** test a = sym([1; 2]); assert (columns(a) == 1) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/mpower.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mpower.m ***** test syms x assert(isequal(x^(sym(4)/5), x.^(sym(4)/5))) ***** test % integer powers of scalars syms x assert (isequal (x^2, x*x)) assert (isequal (x^sym(3), x*x*x)) ***** test % array ^ integer syms x y A = [x 2; y 4]; assert (isequal (A^2, A*A)) assert (isequal (simplify(A^3 - A*A*A), [0 0; 0 0])) ***** test % array ^ rational Ad = [1 2; 0 3]; A = sym(Ad); B = A^(sym(1)/3); Bd = Ad^(1/3); assert (max(max(abs(double(B) - Bd))) < 1e-14) ***** test % non-integer power A = sym([1 2; 0 3]); B = A^pi; C = [1 -1+3^sym(pi); 0 sym(3)^pi]; assert (isequal (B, C)) ***** test % matpow syms n A = sym([1 2; 3 4]); B = A^n; C = 10 + B + B^2; D = subs(C, n, 1); E = 10 + A + A^2; assert (isequal (simplify(D), simplify(E))) ***** test % matpow, sub in zero gives identity A = sym([1 2; 0 3]); syms n; B = A^n; C = subs(B, n, 1); assert (isequal (C, A)) C = subs(B, n, 0); assert (isequal (C, sym(eye(2)))) ***** xtest % scalar^array (e.g., defined by matrix exponential) not implemented in SymPy? % on 1.0 < SymPy <= 1.5.1, you can form the expression but still cannot eval syms x A = [1 2; 3 4]; B = x^A; assert (strcmp (regexprep (disp (B, 'flat'), '\s+', ''), 'x**Matrix([[1,2],[3,4]])')) % sub in and compare to double Bs = subs(B, x, sym(3)/2); D1 = double(Bs); D2 = (3/2)^[1 2; 3 4]; assert (max(max(abs(D1 - D2))) < 1e-14) !!!!! known failure Python exception: TypeError: unsupported operand type(s) for ** or pow(): 'Symbol' and 'MutableDenseMatrix' occurred at line 2 of the Python code block: return x**y ***** error A = sym([1 2; 3 4]); B = A^A; 9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/fortran.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fortran.m ***** shared x,y,z syms x y z ***** test % basic test f = x*sin(y) + abs(z); source = fortran(f); expected = ' x*sin(y) + abs(z)'; s1 = strrep (expected, 'abs', 'Abs'); assert (strcmp (source, expected) || strcmp (source, s1)) ***** test % output test f = x*sin(y) + abs(z); [F,H] = fortran(f, 'file', '', 'show_header', false); expected_h_code = sprintf('\ninterface\nREAL*8 function myfun(x, y, z)\nimplicit none\nREAL*8, intent(in) :: x\nREAL*8, intent(in) :: y\nREAL*8, intent(in) :: z\nend function\nend interface\n\n'); expected_f_code = sprintf('\nREAL*8 function myfun(x, y, z)\nimplicit none\nREAL*8, intent(in) :: x\nREAL*8, intent(in) :: y\nREAL*8, intent(in) :: z\n\nmyfun = x*sin(y) + abs(z)\n\nend function\n'); assert(strcmp(F.name, 'file.f90')) assert(strcmp(H.name, 'file.h')) %disp(expected_f_code); disp(F.code) s1 = strrep (expected_f_code, 'abs', 'Abs'); s2 = strrep (expected_f_code, sprintf ('\n'), sprintf ('\r\n')); s3 = strrep (s2, 'abs', 'Abs'); s4 = strrep (expected_h_code, sprintf ('\n'), sprintf ('\r\n')); assert (strcmp (F.code, expected_f_code) || strcmp (F.code, s1) || strcmp (F.code, s2) || strcmp (F.code, s3)) assert (strcmp (H.code, expected_h_code) || strcmp (H.code, s4)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/asech.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asech.m ***** error asech (sym(1), 2) ***** assert (isequaln (asech (sym(nan)), sym(nan))) ***** shared x, d d = 1/2; x = sym('1/2'); ***** test f1 = asech(x); f2 = asech(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = asech(A); f2 = asech(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = asech (d); f = asech (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/bernoulli.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/bernoulli.m ***** error bernoulli (sym(1), 2, 3) ***** assert (isequal (bernoulli (sym(8)), -sym(1)/30)) ***** assert (isequal (bernoulli (sym(9)), sym(0))) ***** test syms x assert (isequal (bernoulli(3,x), x^3 - 3*x^2/2 + x/2)) ***** test % two different definitions in literature assert (isequal (abs (bernoulli (sym(1))), sym(1)/2)) ***** test % we use B_1 = 1/2 if (pycall_sympy__ ('return Version(spver) >= Version("1.12.dev")')) assert (isequal (bernoulli (sym(1)), sym(1)/2)) end ***** test m = sym([0 2; 8 888889]); A = bernoulli (m); B = [1 sym(1)/6; -sym(1)/30 0]; assert (isequal (A, B)) ***** test syms x A = bernoulli ([0; 1], x); B = [sym(1); x - sym(1)/2]; assert (isequal (A, B)) ***** test % round trip syms n x f = bernoulli (n, x); h = function_handle (f, 'vars', [n x]); A = h (2, 2.2); B = bernoulli (2, 2.2); assert (A, B) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/exp.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/exp.m ***** error exp (sym(1), 2) ***** assert (isequaln (exp (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = exp(x); f2 = exp(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = exp(A); f2 = exp(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = exp (d); f = exp (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/solve.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/solve.m ***** test % Simple, single variable, single solution syms x d = solve(10*x == 50); assert (isequal (d, 5)) ***** test % Single variable, multiple solutions syms x d = solve(x^2 == 4); assert (length(d) == 2); assert (isequal (d, [2; -2]) || isequal (d, [-2; 2])) ***** shared x,y,eq syms x y eq = 10*x == 20*y; ***** test d = solve(eq, x); assert (isequal (d, 2*y)) ***** test d = solve(eq, y); assert (isequal (d, x/2)) ***** test d = solve(eq); assert (isequal (d, 2*y)) ***** shared x,y syms x y ***** test d = solve(2*x - 3*y == 0, x + y == 1); assert (isequal (d.x, sym(3)/5) && isequal(d.y, sym(2)/5)) ***** test d = solve(2*x - 3*y == 0, x + y == 1, x, y); assert (isequal (d.x, sym(3)/5) && isequal(d.y, sym(2)/5)) ***** test % Multiple solutions, multiple variables d = solve(x^2 == 4, x + y == 1); assert (length(d) == 2); % FIXME: SMT has d.x gives vector and d.y giving vector, what is % more intuitive? for i = 1:2 assert (isequal (d{i}.x + d{i}.y, 1)) assert (isequal ((d{i}.x)^2, 4)) end ***** test % No solutions syms x y z d = solve(x == y, z); assert (isempty (d)); ***** test % Multiple outputs with single solution [X, Y] = solve(2*x + y == 5, x + y == 3); assert (isequal (X, 2)) assert (isequal (Y, 1)) ***** test % system: vector of equations, vector of vars [X, Y] = solve([2*x + y == 5, x + y == 3], [x y]); assert (isequal (X, 2)) assert (isequal (Y, 1)) ***** test % system: vector of equations, individual vars [X, Y] = solve([2*x + y == 5, x + y == 3], x, y); assert (isequal (X, 2)) assert (isequal (Y, 1)) ***** test % system: individual equations, vector of vars [X, Y] = solve(2*x + y == 5, x + y == 3, [x y]); assert (isequal (X, 2)) assert (isequal (Y, 1)) ***** test % Multiple outputs with multiple solns [X, Y] = solve(x*x == 4, x == 2*y); assert ((isequal (X, [2; -2]) && isequal (Y, [1; -1])) || ... (isequal (X, [-2; 2]) && isequal (Y, [-1; 1]))) ***** test % Multiple outputs with multiple solns, specify vars [X, Y] = solve(x*x == 4, x == 2*y, x, y); assert ((isequal (X, [2; -2]) && isequal (Y, [1; -1])) || ... (isequal (X, [-2; 2]) && isequal (Y, [-1; 1]))) ***** error % mult outputs not allowed for scalar equation, even with mult soln (?) [s1, s2] = solve(x^2 == 4, x); ***** test % overdetermined X = solve(2*x - 10 == 0, 3*x - 15 == 0, x); assert (isequal (X, sym(5))) ***** test a = solve(2*x >= 10, 10*x <= 50); assert (isequal( a, x==sym(5))) ***** test A = solve([2*x == 4*y, 2 == 3], x); assert (isempty (A)) ***** test % Issue #850 A = solve (sym(pi)^2*x + y == 0); assert (isequal (A, -y/sym(pi)^2)) ***** test % https://github.com/sympy/sympy/issues/14632 A = solve([2*x == 4*y, sym(2) == 2], x); assert (isequal (A, 2*y)) ***** test % https://github.com/sympy/sympy/issues/14632 A = solve([2*x^2 == 32*y^2, sym(2) == 2], x); B = solve([2*x^2 == 32*y^2], x); assert (isequal (A, B) || isequal (A, flip (B))) ***** test A = solve ([x+1 0], x); assert (isequal (A, sym (-1))) ***** test A = solve (x + 1, x); assert (isequal (A, sym (-1))) A = solve (x, x); assert (isequal (A, sym (0))) 24 tests, 24 passed, 0 known failure, 0 skipped [inst/@sym/nnz.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nnz.m ***** assert (nnz (sym ([1])) == 1) ***** assert (nnz (sym ([0])) == 0) ***** assert (nnz (sym ([])) == 0) ***** assert (nnz (sym ([1 0; 0 3])) == 2) ***** test syms x assert (nnz ([x 0]) == 1) ***** assert (nnz (sym (true)) == 1) ***** assert (nnz (sym (false)) == 0) ***** assert (nnz (sym (inf)) == 1) ***** assert (nnz (sym (nan)) == 1) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/ssinint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ssinint.m ***** assert (isequal (ssinint(sym(0)), -sym(pi)/2)) ***** test A = ssinint (sym ([0 1])); B = [-pi/2 -0.62471325642771360426]; assert( all(all( abs(double(A)-B) < 1e-15 ))) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/ifourier.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ifourier.m ***** error ifourier (sym(1), 2, 3, 4) ***** test % matlab SMT compat syms t r u x w Pi=sym('pi'); assert(logical( ifourier(exp(-abs(w))) == 1/(Pi*(x^2 + 1)) )) assert(logical( ifourier(exp(-abs(x))) == 1/(Pi*(t^2 + 1)) )) assert(logical( ifourier(exp(-abs(r)),u) == 1/(Pi*(u^2 + 1)) )) assert(logical( ifourier(exp(-abs(r)),r,u) == 1/(Pi*(u^2 + 1)) )) ***** test % basic syms x w Pi=sym('pi'); assert(logical( ifourier(exp(-w^2/4)) == 1/(sqrt(Pi)*exp(x^2)) )) assert(logical( ifourier(sqrt(Pi)/exp(w^2/4)) == exp(-x^2) )) ***** test % Dirac delta tests syms x w Pi=sym('pi'); assert(logical( ifourier(dirac(w-2)) == exp(2*1i*x)/(2*Pi) )) assert (logical( ifourier(sym(2), w, x) == 2*dirac(x) )) ***** test % advanced test syms x w c d Pi=sym('pi'); f=(Pi*(dirac(x-c)+dirac(x+c))+2*Pi*1i*(-dirac(x+3*d)+dirac(x-3*d))+2/(x^2+1))/(2*Pi); assert(logical( simplify(ifourier(cos(c*w)+2*sin(3*d*w)+exp(-abs(w)))-f) == 0 )) ***** xtest % Inverse Fourier transform cannot recover non-smooth functions % SymPy cannot evaluate correctly?? syms x w assert(logical( ifourier(2/(w^2 + 1)) == exp(-abs(x)) )) assert(logical( ifourier(2/(w^2 + 1)) == heaviside(x)/exp(x) + heaviside(-x)*exp(x) )) assert(logical( ifourier(-(w*4)/(w^4 + 2*w^2 + 1) )== -x*exp(-abs(x))*1i )) assert(logical( ifourier(-(w*4)/(w^4 + 2*w^2 + 1) )== -x*(heaviside(x)/exp(x) + heaviside(-x)*exp(x))*1i )) !!!!! known failure assert (logical (ifourier (2 / (w ^ 2 + 1)) == exp (-abs (x)))) failed ***** error ifourier (sym('k', 'positive')*sym('k')) ***** test % SMT compact, prefers k over symvar syms k x y assert (isequal (ifourier(y*exp(-k^2/4)), y/sqrt(sym(pi))*exp(-x^2))) 8 tests, 7 passed, 1 known failure, 0 skipped [inst/@sym/horner.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/horner.m ***** error horner (sym(1), 2, 3) ***** assert (isAlways (horner(sym(1)) == 1)) ***** test syms x assert (isAlways (horner(x) == x)) ***** test syms x a p = a^2 + a*x + 2*a + 2*x; assert (isequal (horner (p, a), a*(a+x+2) + 2*x)) q = a^2 + 2*a + x*(a + 2); assert (isequal (horner (p, x), q)) assert (isequal (horner (p), q)) ***** test syms x p = poly2sym ([2 4 6 8], x); q = horner (p); assert (isAlways (p == q)) assert (isAlways (horner(2*x^3 + 4*x^2 + 6*x + 8) == q)) ***** test % non-sym input syms x assert (isequal (horner(6, x), sym(6))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/zeta.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/zeta.m ***** error zeta (sym(1), 2, 3) ***** assert (isequaln (zeta (sym(nan)), sym(nan))) ***** test f1 = zeta (sym(2)); f2 = pi^2/6; assert (double (f1), f2, -1e-15) ***** test A = sym([0 2; 4 6]); f1 = zeta (A); f2 = [-1/2 pi^2/6; pi^4/90 pi^6/945]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); f = zeta (y); h = function_handle (f); A = zeta (2); B = h (2); assert (A, B, -eps) ***** test syms x assert (isequal (zeta (0, x), zeta(x))) ***** test % ensure its the nth deriv wrt x, not the n deriv syms x n F = zeta (n, x); F = subs(F, n, 3); assert (isequal (F, diff (zeta (x), x, x, x))) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/private_disp_name.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/private_disp_name.m ***** test syms x s = private_disp_name(x, 'x'); assert (strcmp (s, 'x')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/bessely.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/bessely.m ***** test X = [1 2 3; 4 5 6]; ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; n = double(ns); A = double(bessely(ns, X)); B = bessely(n, X); assert (all (all (abs (A - B) < 50*eps*abs(A)))) ***** test % roundtrip syms x A = bessely(2, 10); q = bessely(2, x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps*abs(A)) ***** error bessely(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/ipermute.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ipermute.m ***** error permute (sym(1)) ***** error permute (sym(1), 2, 3) ***** test syms x A = [1 x]; perm = [2 1]; B = permute(A, perm); C = ipermute(B, perm); assert (isequal(C, A)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/int.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/int.m ***** shared x,y,a syms x y a ***** assert(logical(int(cos(x)) - sin(x) == 0)) ***** assert(logical(int(cos(x),x) - sin(x) == 0)) ***** assert(logical(int(cos(x),x,0,1) - sin(sym(1)) == 0)) ***** test %% limits might be syms assert( isequal (int(cos(x),x,sym(0),sym(1)), sin(sym(1)))) assert( isequal (int(cos(x),x,0,a), sin(a))) ***** test %% other variables present assert( isequal (int(y*cos(x),x), y*sin(x))) ***** test %% limits as array assert( isequal (int(cos(x),x,[0 1]), sin(sym(1)))) assert( isequal (int(cos(x),x,sym([0 1])), sin(sym(1)))) assert( isequal (int(cos(x),x,[0 a]), sin(a))) ***** test %% no x given assert( isequal (int(cos(x),[0 1]), sin(sym(1)))) assert( isequal (int(cos(x),sym([0 1])), sin(sym(1)))) assert( isequal (int(cos(x),[0 a]), sin(a))) assert( isequal (int(cos(x),0,a), sin(a))) ***** test %% integration of const assert( isequal (int(sym(2),y), 2*y)) assert( isequal (int(sym(2)), 2*x)) assert( isequal (int(sym(2),[0 a]), 2*a)) assert( isequal (int(sym(2),0,a), 2*a)) ***** test % componentwise int of array A = [x x*x]; assert (isequal (int(A, x), [x^2/2 x^3/3])) ***** test % NonElementaryIntegral bug % https://savannah.gnu.org/bugs/index.php?46831 f = int(exp(exp(x))); f = f + 2; g = diff(f); assert (isequal (g, exp(exp(x)))) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/any.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/any.m ***** test % matrix a = [0 0; 1 0]; s = sym(a); assert (isequal (any (s), any (a))) assert (isequal (any (s,1), any (a,1))) assert (isequal (any (s,2), any (a,2))) ***** test % vector a = [0 1 0]; s = sym(a); assert (isequal (any (s), any (a))) assert (isequal (any (s,1), any (a,1))) assert (isequal (any (s,2), any (a,2))) ***** test % should fail on symbols syms x s = [0 1 x]; try any (s) waserr = false; catch waserr = true; end assert (waserr) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/logical.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logical.m ***** test % basics, many others in isAlways.m assert (logical(true)) assert (~(logical(false))) ***** test % numbers to logic? assert (logical(sym(1))) assert (logical(sym(-1))) assert (~logical(sym(0))) ***** test % eqns, "structurally equivalent" syms x e = logical(x == x); assert ( islogical (e)) assert (e) e = logical(x == 1); assert ( islogical (e)) assert (~e) ***** test % eqn could have solutions but are false in general syms x e = logical(x^2 == x); assert ( islogical (e)) assert (~e) e = logical(2*x == x); assert ( islogical (e)) assert (~e) ***** test % FIXME: (not sure yet) T/F matrices should stay sym until logical() a = sym(1); e = a == a; assert (isa (e, 'sym')) assert (islogical (logical (e))) e = [a == a a == 0 a == a]; assert (isa (e, 'sym')) assert (islogical (logical (e))) ***** test % sym vectors of T/F to logical a = sym(1); e = [a == a a == 0 a == a]; w = logical(e); assert (islogical (w)) assert (isequal (w, [true false true])) e = e'; w = logical(e); assert (islogical (w)) assert (isequal (w, [true; false; true])) ***** test % sym matrix of T/F to logical a = sym([1 2 3; 4 5 6]); b = sym([1 2 0; 4 0 6]); e = a == b; w = logical(e); assert (islogical (w)) assert (isequal (w, [true true false; true false true])) ***** error syms x logical(x); ***** error logical(sym(nan)) ***** test % but oo and zoo are non-zero so we call those true % (SMT errors on these) FIXME syms oo zoo assert (logical (oo)) % assert (logical (zoo)) ***** test % older Octave (< 4.2) didn't automatically do "if (logical(obj))" e = sym(true); if (e) assert(true); else assert(false); end ***** test % more of above e2 = sym(1) == sym(1); if (e2) assert(true); else assert(false); end e3 = sym([1 2]) == sym([1 1]); if (e3(1)) assert(true); else assert(false); end 12 tests, 12 passed, 0 known failure, 0 skipped [inst/@sym/dilog.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dilog.m ***** assert (isequal (dilog (sym(1)), sym(0))) ***** assert (isequal (dilog (sym(0)), sym(pi)^2/6)) ***** assert (isequal (dilog (sym(2)), -sym(pi)^2/12)) ***** assert (double(dilog(sym(-1))), pi^2/4 - pi*1i*log(2), eps) ***** test % round-trip syms x f = dilog (x); h = function_handle (f); A = h (1.1); B = dilog (1.1); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/invhilb.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/invhilb.m ***** test A = invhilb(sym(3)); B = sym([9 -36 30;-36 192 -180;30 -180 180]); assert( isequal( A, B)) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/gammaln.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gammaln.m ***** assert (isequal (gammaln (sym (3)), log (sym (2)))) ***** assert (isequal (gammaln (sym (10)), log (gamma (sym (10))))) ***** test % compare to Maple: evalf(lnGAMMA(Pi)); maple = vpa ('0.827694592323437101529578558452359951153502', 40); us = vpa (gammaln (sym(pi)), 40); assert (abs(double(maple-us)) < 1e-39) ***** test % compare to Maple: evalf(lnGAMMA(3+2*I)); maple = vpa ('-0.0316390593739611898037677296008797172022603', 40) + ... vpa ('2.02219319750132712401643376238334982100512j', 40); us = vpa (gammaln (sym(3) + 2i), 40); assert (abs(double(maple-us)) < 1e-39) ***** test % compare to Maple: evalf(lnGAMMA(-1.5)); % notably, @double/gammaln has zero imag part maple = vpa ('0.8600470153764810145109326816703567873271571', 40) - ... vpa ('6.2831853071795864769252867665590057683943388j', 40); us = vpa (gammaln (-sym(3)/2), 40); assert (abs(double(maple-us)) < 1e-39) ***** assert (gammaln (pi), double (gammaln (sym (pi))), -3*eps) ***** assert (gammaln (100), double (gammaln (sym (100))), -3*eps) ***** assert (gammaln (1e-3), double (gammaln (1/sym (1e3))), -100*eps) ***** test % round trip syms x f = gammaln (x); h = function_handle (f); A = h (1.1); B = gammaln (1.1); assert (A, B) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/numden.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/numden.m ***** error numden (sym(1), 2) ***** test syms x [n, d] = numden (1/x); assert (isequal (n, sym(1)) && isequal (d, x)) ***** test syms x y n1 = [sym(1); x]; d1 = [x; y]; [n, d] = numden (n1 ./ d1); assert (isequal (n, n1) && isequal (d, d1)) ***** test [n, d] = numden (sym(2)); assert (isequal (n, 2)); assert (isequal (d, 1)); ***** test syms x y [n, d] = numden ((x + pi)/(y + 6)); assert (isequal (n, x + pi)); assert (isequal (d, y + 6)); ***** test syms x y [n, d] = numden ((x^2 + y^2)/(x*y)); assert (isequal (n, x^2 + y^2)); assert (isequal (d, x*y)); 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/flipud.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/flipud.m ***** test % simple syms x A = [x 2; sym(pi) x]; B = [sym(pi) x; x 2]; assert (isequal (flipud(A), B)) ***** test % simple, odd # rows syms x A = [x 2; sym(pi) x; [1 2]]; B = [[1 2]; sym(pi) x; x 2]; assert (isequal (flipud(A), B)) ***** test % scalar syms x assert (isequal (flipud(x), x)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/erfcinv.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfcinv.m ***** error erfcinv (sym(1), 2) ***** assert (isequaln (erfcinv (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = erfcinv(x); f2 = erfcinv(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erfcinv(A); f2 = erfcinv(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erfcinv (d); f = erfcinv (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/cart2pol.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cart2pol.m ***** test % multiple non-scalar inputs x = sym ('x', [2 2]); assume (x, 'real'); y = sym ('y', [2 2]); assume (y, 'real'); [theta, r] = cart2pol (x, y); assert (isequal (r, sqrt (x.^2 + y.^2))); assert (isequal (tan (theta), y ./ x)); % mixing scalar inputs with non-scalar inputs syms z real [theta_2, r_2, z_2] = cart2pol (x, y, z); assert (isequal (r_2, sqrt (x.^2 + y.^2))); assert (isequal (tan (theta_2), y ./ x)); assert (isequal (z_2, z * ones (2, 2))); ***** test % column vector with 2 entries syms x y real [theta, r] = cart2pol ([x; y]); assert (isequal (r, sqrt (x.^2 + y.^2))); assert (isequal (tan (theta), y ./ x)); % column vector with 3 entries syms z real [theta_2, r_2, z_2] = cart2pol ([x; y; z]); assert (isequal (r_2, sqrt (x.^2 + y.^2))); assert (isequal (tan (theta_2), y ./ x)); assert (isequal (z_2, z)); ***** test % matrix with 2 columns syms x y u v real C = [x y; u v]; [theta, r] = cart2pol (C); assert (isequal (r, [sqrt(x.^2+y.^2); sqrt(u.^2+v.^2)])); assert (isequal (tan (theta), [y/x; v/u])); % matrix with 3 columns syms z w real C_2 = [x y z; u v w]; [theta_2, r_2, z_2] = cart2pol (C_2); assert (isequal (r, [sqrt(x.^2+y.^2); sqrt(u.^2+v.^2)])); assert (isequal (tan (theta), [y/x; v/u])); assert (isequal (z_2, [z; w])); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/acsc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acsc.m ***** error acsc (sym(1), 2) ***** assert (isequaln (acsc (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = acsc(x); f2 = acsc(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acsc(A); f2 = acsc(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acsc (d); f = acsc (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/fliplr.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fliplr.m ***** test % simple syms x A = [x 2; sym(pi) x]; B = [2 x; x sym(pi)]; assert (isequal (fliplr(A), B)) ***** test % simple, odd # cols syms x A = [x 2 sym(pi); x 1 2]; B = [sym(pi) 2 x; 2 1 x]; assert (isequal (fliplr(A), B)) ***** test % scalar syms x assert (isequal (fliplr(x), x)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/subsindex.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsindex.m ***** test i = sym(1); a = 7; assert(a(i)==a); i = sym(2); a = 2:2:10; assert(a(i)==4); ***** test i = sym([1 3 5]); a = 1:10; assert( isequal (a(i), [1 3 5])) ***** test i = sym([1 3 5]); a = sym(1:10); assert( isequal (a(i), sym([1 3 5]))); ***** test % should be an error if it doesn't convert to double syms x a = 1:10; try a(x) waserr = false; catch waserr = true; end assert(waserr) ***** test syms x assert (isequal (x(sym (true)), x)) assert (isequal (x(sym (false)), sym ([]))) ***** test x = 6; assert (isequal (x(sym (true)), 6)) assert (isequal (x(sym (false)), [])) ***** test a = sym([10 12 14]); assert (isequal (a(sym ([true false true])), a([1 3]))) assert (isequal (a(sym ([false false false])), sym (ones(1,0)))) ***** test a = [10 11; 12 13]; p = [true false; true true]; assert (isequal (a(sym (p)), a(p))) p = [false false false]; assert (isequal (a(sym (p)), a(p))) ***** error a = [10 12]; I = [sym(true) 2]; b = a(I); 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/conj.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/conj.m ***** test a = sym(6); b = sym(5i); assert (isequal (conj(a), a)) assert (isequal (conj(b), -b)) assert (isequal (conj(a+b), a-b)) ***** test syms x assert (isequal (conj(conj(x)), x)) ***** test syms x real assert (isequal (conj(x), x)) ***** test % array syms x A = [x 6+1i; sym(1) x+2i]; B = [conj(x) 6-1i; sym(1) conj(x)-2i]; assert (isequal (conj(A), B)) ***** test % true/false t = sym(true); f = sym(false); assert (isequal ( conj(t), t)) assert (isequal ( conj(f), f)) ***** test % round trip syms x d = 3 - 5i; f = conj (x); A = conj (d); h = function_handle (f); B = h (d); assert (A, B) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/expint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expint.m ***** error expint (sym(1), 2, 3) ***** test f1 = expint(sym(1)); f2 = expint(1); assert( abs(double(f1) - f2) < 1e-15 ) ***** test f1 = expint(sym(1i)); f2 = expint(1i); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [1 2; 3 4]; A = sym(D); f1 = expint(A); f2 = expint(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test syms x A = expint(x); B = expint(1, x); assert (isequal (A, B)) ***** test syms x A = exp(-x)/x; B = expint(0, x); assert (isequal (A, B)) ***** test % round trip syms x A = expint (3); f = expint (x); h = function_handle (f); B = h (3); assert (A, B, -eps) ***** error % round trip syms n x f = expint (n, x); h = function_handle (f); 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/svd.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/svd.m ***** test % basic A = [1 2; 3 4]; B = sym(A); sd = svd(A); s = svd(B); s2 = double(s); assert (norm(s2 - sd) <= 10*eps) ***** test % scalars syms x syms y positive a = sym(-10); assert (isequal (svd(a), sym(10))) assert (isequal (svd(x), sqrt(x*conj(x)))) assert (isequal (svd(y), y)) ***** test % matrix with symbols syms x positive A = [x+1 0; sym(0) 2*x+1]; s = svd(A); s2 = subs(s, x, 2); assert (isequal (s2, [sym(5); 3])) ***** test % matrix with symbols syms x positive A = [x+1 0; sym(0) 2*x+1]; s = svd(A); s2 = subs(s, x, 2); assert (isequal (s2, [sym(5); 3])) ***** test % matrix with symbols, nonneg sing values syms x real A = [x 0; 0 sym(-5)]; s = svd(A); assert (isequal (s, [abs(x); 5])) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/inv.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/inv.m ***** test % scalar syms x assert (isequal (inv(x), 1/x)) ***** test % diagonal syms x A = [sym(1) 0; 0 x]; B = [sym(1) 0; 0 1/x]; assert (isequal (inv(A), B)) ***** test % 2x2 inverse A = [1 2; 3 4]; assert (max (max (abs (double (inv (sym (A))) - inv(A)))) <= 3*eps) ***** error syms a; A = [a a; a a]; inv(A) ***** error syms a; A = [a a]; inv(A) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/end.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/end.m ***** test % scalar syms x y = x(1:end); assert (isequal (x, y)) ***** test % vector syms x A = [1 2 x 4]; y = A(end-1:end); assert (isequal (y, [x 4])) ***** test % subset of matrix syms x A = [1 2 x; x 3 9; 4 x*x 6]; y = A(end,1:end-1); assert (isequal (y, [4 x*x])) ***** test % linear index of matrix syms x A = [1 2 x; x 3 9]; y = A(end); assert (isequal (y, sym(9))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/eye.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eye.m ***** test y = eye(sym(2)); x = [1 0; 0 1]; assert( isequal( y, sym(x))) ***** test y = eye(sym(2), 1); x = [1; 0]; assert( isequal( y, sym(x))) ***** test y = eye(sym(1), 2); x = [1 0]; assert( isequal( y, sym(x))) ***** test y = eye (sym([2 3])); x = sym (eye ([2 3])); assert (isequal (y, x)) ***** assert( isa( eye(sym(2), 'double'), 'double')) ***** assert( isa( eye(3, sym(3), 'single') , 'single')) ***** assert( isa( eye(3, sym(3)), 'sym')) ***** assert( isa( eye(3, sym(3), 'sym'), 'sym')) ***** xtest % Issue #13 assert( isa( eye(3, 3, 'sym'), 'sym')) !!!!! known failure invalid data type specified 9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/isconstant.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isconstant.m ***** test syms x A = [x 2 3]; B = [false true true]; assert (isequal (isconstant (A), B)) ***** test syms x A = [x 2; 3 x]; B = [false true; true false]; assert (isequal (isconstant (A), B)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/acoth.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acoth.m ***** error acoth (sym(1), 2) ***** assert (isequaln (acoth (sym(nan)), sym(nan))) ***** shared x, d d = 2; x = sym('2'); ***** test f1 = acoth(x); f2 = acoth(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = acoth(A); f2 = acoth(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = acoth (d); f = acoth (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ccode.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ccode.m ***** shared x,y,z syms x y z ***** test % basic test f = x*sin(y) + abs(z); source = ccode(f); expected = 'x*sin(y) + fabs(z)'; assert(strcmp(source, expected)) ***** test % output test f = x*sin(y) + abs(z); [C, H] = ccode(f, 'file', '', 'show_header', false); expected_c_code = sprintf('#include \"file.h\"\n#include \n\ndouble myfun(double x, double y, double z) {\n\n double myfun_result;\n myfun_result = x*sin(y) + fabs(z);\n return myfun_result;\n\n}\n'); expected_h_code = sprintf('\n#ifndef PROJECT__FILE__H\n#define PROJECT__FILE__H\n\ndouble myfun(double x, double y, double z);\n\n#endif\n\n'); assert(strcmp(C.name, 'file.c')) assert(strcmp(H.name, 'file.h')) hwin = strrep(expected_h_code, sprintf('\n'), sprintf('\r\n')); assert (strcmp (H.code, expected_h_code) || strcmp (H.code, hwin)) s1 = expected_c_code; s2 = strrep(expected_c_code, sprintf('\n'), sprintf('\r\n')); assert (strcmp (C.code, s1) || strcmp (C.code, s2)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/times.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/times.m ***** test % scalar syms x assert (isa (x.*2, 'sym')) assert (isequal (x.*2, x*2)) assert (isequal (2.*sym(3), sym(6))) assert (isequal (sym(2).*3, sym(6))) ***** test % matrix-matrix and matrix-scalar D = [0 1; 2 3]; A = sym(D); assert (isequal ( 2.*A , 2*D )) assert (isequal ( A.*2 , 2*D )) assert (isequal ( A.*A , D.*D )) assert (isequal ( A.*D , D.*D )) assert (isequal ( D.*A , D.*D )) ***** test syms x A = [1 x]; B = [2 3]; assert (isequal (A.*B, [2 3*x])) ***** test % immutable test A = sym([1 2]); B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)]])'); assert (isequal (A.*A, B.*B)) ***** test % MatrixSymbol test A = sym([1 2; 3 4]); B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); C = sym('MatrixSymbol("C", 2, 2)'); assert (~ isempty (strfind (sympy (C.*C), 'Hadamard'))) assert (~ isempty (strfind (sympy (A.*C), 'Hadamard'))) assert (~ isempty (strfind (sympy (C.*A), 'Hadamard'))) assert (~ isempty (strfind (sympy (B.*C), 'Hadamard'))) assert (~ isempty (strfind (sympy (C.*B), 'Hadamard'))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/double.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/double.m ***** test % numeric scalar a = double(sym(10)); assert (a == 10) assert (isa (a, 'double')) ***** test % numeric vectors a = double(sym([10 12])); assert (isequal (a, [10 12])) assert (isa (a, 'double')) ***** test % complex a = 3 + 4i; b = sym(a); assert (isequal (double (b), a)) ***** xtest % unexpected, precisely same floating point a = 3 + 4i; b = sym(a); assert (isequal (double (b/pi), a/pi)) ***** test % floating point x = sqrt(sym(2)); assert( abs(double(x) - sqrt(2)) < 2*eps) x = sym(pi); assert( abs(double(x) - pi) < 2*eps) ***** test oo = sym(inf); assert( double(oo) == inf ) assert( double(-oo) == -inf ) assert( isnan(double(0*oo)) ) ***** test zoo = sym('zoo'); assert (double(zoo) == complex(inf, inf)) ***** test zoo = sym('zoo'); assert (double(-zoo) == double(zoo) ) assert( isnan(double(0*zoo)) ) ***** test % nan snan = sym(nan); assert( isnan(double(snan))) ***** test % don't want NaN+NaNi snan = sym(nan); assert (isreal (double (snan))) ***** test % arrays a = [1 2; 3 4]; assert( isequal( double(sym(a)), a )) assert( isequal( double(sym(a)), a )) % should fail with error for non-double ***** error syms x; double(x) ***** error syms x; double([1 2 x]) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@sym/assumeAlso.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/assumeAlso.m ***** test syms x x = assumeAlso(x, 'positive'); a = assumptions(x); assert(strcmp(a, 'x: positive')) ***** error syms x x = assumeAlso (x, x); ***** test syms x positive x = assumeAlso(x, 'integer'); [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) ***** test % multiple assumptions syms x positive x = assumeAlso(x, 'integer', 'even'); [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) assert(a{1}.even) ***** test % multiple assumptions syms x integer x = assumeAlso (x, 'even', 'positive'); [tilde, a] = assumptions (x, 'dict'); assert (a{1}.integer) assert (a{1}.even) assert (a{1}.positive) ***** test % has output so avoids workspace syms x positive x2 = x; f = sin(x); assumeAlso(x, 'integer'); a = assumptions(x); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) a = assumptions(x2); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) a = assumptions(f); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) ***** test % has no output so does workspace syms x positive x2 = x; f = sin(x); assumeAlso(x, 'integer'); a = assumptions(x); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) a = assumptions(x2); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) a = assumptions(f); assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) ***** error syms a assumeAlso (a > 0) ***** test syms x y assumeAlso ([x y], 'even') assert (strcmp (assumptions (x), 'x: even')) assert (strcmp (assumptions (y), 'y: even')) ***** test syms x y positive f = sin (2*x); assumeAlso ([x y], 'even') assert (strcmp (assumptions (x), 'x: even, positive') || strcmp (assumptions (x), 'x: positive, even')) assert (strcmp (assumptions (y), 'y: even, positive') || strcmp (assumptions (y), 'y: positive, even')) assert (strcmp (assumptions (f), 'x: even, positive') || strcmp (assumptions (f), 'x: positive, even')) ***** test % with output, original x and y are unchanged syms x y positive f = sin (2*x); [p, q] = assumeAlso ([x y], 'even'); assert (strcmp (assumptions (x), 'x: positive')) assert (strcmp (assumptions (y), 'y: positive')) assert (strcmp (assumptions (f), 'x: positive')) assert (strcmp (assumptions (p), 'x: even, positive') || strcmp (assumptions (p), 'x: positive, even')) assert (strcmp (assumptions (q), 'y: even, positive') || strcmp (assumptions (q), 'y: positive, even')) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/char.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/char.m ***** test % issue #91: expose as string a = sym(pi); assert (strcmp (char (a), 'pi')) ***** shared x x = sym('x'); ***** assert (strcmp (char (x), 'x')) ***** assert (strcmp (char (2*x), '2*x')) ***** assert (strcmp (char ([2*x x]), 'Matrix([[2*x, x]])')) ***** assert (strcmp (char ([2*x 2; 1 x]), 'Matrix([[2*x, 2], [1, x]])')) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/cross.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cross.m ***** error cross (sym(1), 2, 3) ***** test a = sym([1; 0; 0]); b = sym([0; 1; 0]); c = cross(a, b); assert (isequal (c, sym([0; 0; 1]))) ***** test syms x a = sym([x; 0; 0]); b = sym([0; 1; 0]); c = cross(a, b); assert (isequal (c, sym([0; 0; x]))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/lu.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lu.m ***** test % scalar [l, u, p] = lu(sym(6)); assert (isequal (l, sym(1))) assert (isequal (u, sym(6))) assert (isequal (p, sym(1))) syms x [l, u, p] = lu(x); assert (isequal (l*u, p*x)) [l, u] = lu(x); assert (isequal (l*u, x)) ***** test % perm A = sym(fliplr(2*eye(3))); [L, U, P] = lu(A); assert (isequal (L*U, P*A)) [L, U, P] = lu(A, 'matrix'); assert (isequal (L*U, P*A)) [L, U, p] = lu(A, 'vector'); assert (isequal (L*U, A(p,:))) [L, U] = lu(A); assert (isequal (L*U, A)) ***** test % p is col vectpr A = sym([0 2; 3 4]); [L, U, p] = lu(A, 'vector'); assert(iscolumn(p)) ***** test % simple matrix A = [1 2; 3 4]; B = sym(A); [L, U, P] = lu(B); assert (isequal (L*U, P*B)) assert (isequal (U(2,1), sym(0))) % needs pivot A = [0 2; 3 4]; B = sym(A); [L, U, P] = lu(B); [Ld, Ud, Pd] = lu(A); assert (isequal (L*U, P*A)) assert (isequal (U(2,1), sym(0))) % matches regular LU assert ( max(max(double(L)-Ld)) <= 10*eps) assert ( max(max(double(U)-Ud)) <= 10*eps) assert ( isequal (P, Pd)) ***** test % rectangular A = sym([1 2; 3 4; 5 6]); [L, U] = lu (A); assert (isequal (L*U, A)) ***** test % rectangular A = sym([1 2 3; 4 5 6]); [L, U] = lu (A); assert (isequal (L*U, A)) ***** test % rectangular, repeated row A = sym([1 2 3; 2 4 6]); [L, U] = lu (A); assert (isequal (L*U, A)) ***** test % rectangular, needs permutation A = sym([0 0 0; 1 2 3]); [L, U] = lu (A); assert (isequal (L*U, A)) assert (~isequal (tril (L), L)) [L, U, P] = lu (A); assert (isequal (L*U, P*A)) assert (isequal (tril (L), L)) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/mtimes.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mtimes.m ***** test % scalar syms x assert (isa (x*2, 'sym')) assert (isequal (2*sym(3), sym(6))) assert (isequal (sym(2)*3, sym(6))) ***** test % matrix-scalar D = [0 1; 2 3]; A = sym(D); assert (isa (2*A, 'sym')) assert (isequal ( 2*A , 2*D )) assert (isequal ( A*2 , 2*D )) ***** test % matrix-matrix D = [0 1; 2 3]; A = sym(D); assert (isa (A*A, 'sym')) assert (isequal ( A*A , D*D )) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/sind.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sind.m ***** error sind (sym(1), 2) ***** assert (isequaln (sind (sym(nan)), sym(nan))) ***** test f1 = sind (sym(1)); f2 = sind (1); assert (double (f1), f2, -eps) ***** test D = [10 30; 110 -45]; A = sym(D); f1 = sind (A); f2 = sind (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/atand.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atand.m ***** error atand (sym(1), 2) ***** assert (isequaln (atand (sym(nan)), sym(nan))) ***** test f1 = atand (sym(1)/2); f2 = atand (1/2); assert (double (f1), f2, -eps) ***** test D = [1 2; 3 4]/4; A = sym([1 2; 3 4])/4; f1 = atand (A); f2 = atand (D); assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/isnan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isnan.m ***** shared x,zoo,oo,snan oo = sym(inf); zoo = sym('zoo'); x = sym('x'); snan = sym(nan); ***** test % various ops that give nan assert (isnan(0*oo)) assert (isnan(0*zoo)) assert (isnan(snan)) assert (isnan(snan-snan)) assert (isnan(oo+snan)) assert (isnan(oo-oo)) assert (isnan(oo-zoo)) assert (isnan(oo+zoo)) assert (~isnan(oo)) assert (~isnan(zoo)) assert (~isnan(oo+oo)) ***** test % more ops give nan assert(isnan(x+snan)) assert(isnan(x*snan)) assert(isnan(0*snan)) assert(isnan(x+nan)) assert(isnan(x*nan)) assert(isnan(sym(0)*nan)) ***** test % array assert (isequal( isnan([oo zoo]), [0 0] )) assert (isequal( isnan([10 snan]), [0 1] )) assert (isequal( isnan([snan snan]), [1 1] )) assert (isequal( isnan([snan x]), [1 0] )) ***** test % sub in to algebraic expression gives nan y = x - oo; y = subs(y, x, oo); assert(isnan(y)) ***** test % Must not contain string 'symbol'; these all should make an % actual nan. Actually a ctor test, not isnan. y = sym(nan); assert (isempty (strfind (sympy (y), 'Symbol'))) y = sym('nan'); assert (isempty (strfind (sympy (y), 'Symbol'))) y = sym('NaN'); assert (isempty( strfind (sympy (y), 'Symbol'))) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/logint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logint.m ***** error logint (sym(1), 2) ***** xtest assert (isequaln (logint (sym(nan)), sym(nan))) !!!!! known failure assert (isequaln (logint (sym (nan)), sym (nan))) failed ***** shared x, d d = 2; x = sym('2'); ***** test f1 = logint(x); f2 = 1.045163780117492784845; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = logint(A); f2 = 1.045163780117492784845; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = logint (d); f = logint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/diff.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/diff.m ***** shared x,y,z syms x y z ***** test % basic assert(logical( diff(sin(x)) - cos(x) == 0 )) assert(logical( diff(sin(x),x) - cos(x) == 0 )) assert(logical( diff(sin(x),x,x) + sin(x) == 0 )) ***** test % these fail when doubles are not converted to sym assert(logical( diff(sin(x),x,2) + sin(x) == 0 )) assert(logical( diff(sym(1),x) == 0 )) assert(logical( diff(1,x) == 0 )) assert(logical( diff(pi,x) == 0 )) ***** test % symbolic diff of const (w/o variable) fails in sympy, but we work around assert (isequal (diff(sym(1)), sym(0))) ***** test % nth symbolic diff of const assert (isequal (diff(sym(1), 2), sym(0))) assert (isequal (diff(sym(1), sym(1)), sym(0))) ***** test % octave's vector difference still works assert(isempty(diff(1))) assert((diff([2 6]) == 4)) ***** test % other forms f = sin(x); g = diff(f,x,2); assert (isequal (diff(f,2), g)) assert (isequal (diff(f,sym(2)), g)) g = diff(f,x); assert (isequal (diff(f), g)) assert (isequal (diff(f,1), g)) ***** test % old SMT supported (still does?) the 'n' before the 'x' % we might remove this someday, no longer seems documented in SMT f = sin(x); g = diff(f,x,2); assert (isequal (diff(f,2,x), g)) assert (isequal (diff(f,sym(2),x), g)) g = diff(f,x); assert (isequal (diff(f,1,x), g)) ***** test % matrix A = [x sin(x); x*y 10]; B = [1 cos(x); y 0]; assert(isequal(diff(A,x),B)) ***** test % bug: use symvar a = x*y; b = diff(a); assert (isequal (b, y)) ***** test % bug: symvar should be used on the matrix, not comp-by-comp a = [x y x*x]; b = diff(a); assert (~isequal (b(2), 1)) assert (isequal (b, [1 0 2*x])) b = diff(a,1); assert (~isequal (b(2), 1)) assert (isequal (b, [1 0 2*x])) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@sym/transpose.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/transpose.m ***** test x = sym(1); assert (isequal (x.', x)) ***** assert (isempty (sym([]).')) ***** test syms x; assert (isequal (x.', x)) ***** test A = [1 2; 3 4]; assert(isequal( sym(A).' , sym(A.') )) ***** test A = [1 2] + 1i; assert(isequal( sym(A).' , sym(A.') )) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/rows.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rows.m ***** test a = sym([1 2 3]); assert (rows(a) == 1) ***** test a = sym([1 2 3; 4 5 6]); assert (rows(a) == 2) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/isscalar.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isscalar.m ***** assert(isscalar(sym('x'))) ***** test a = sym([1 2 3]); assert(~isscalar(a)) ***** assert(~isscalar(sym([]))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/erfi.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfi.m ***** error erfi (sym(1), 2) ***** assert (isequaln (erfi (sym(nan)), sym(nan))) ***** shared x, d d = 0; x = sym('0'); ***** test f1 = erfi(x); f2 = 0; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erfi(A); f2 = 0; f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erfi (d); f = erfi (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/expand.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expand.m ***** test syms x assert (logical (x^2 + 6*x + 5 == expand ((x+5)*(x+1)))) assert (isequal (x^2 + 6*x + 5, expand ((x+5)*(x+1)))) ***** test % array syms x assert (isequal (expand ([x (x+1)*x]), [x x^2+x])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/taylor.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/taylor.m ***** test syms x f = exp(x); expected = 1 + x + x^2/2 + x^3/6 + x^4/24 + x^5/120; assert (isequal (taylor(f), expected)) assert (isequal (taylor(f,x), expected)) assert (isequal (taylor(f,x,0), expected)) ***** test syms x f = exp(x); expected = 1 + x + x^2/2 + x^3/6 + x^4/24; assert (isequal (taylor(f,'order',5), expected)) assert (isequal (taylor(f,x,'order',5), expected)) assert (isequal (taylor(f,x,0,'order',5), expected)) ***** test % key/value ordering doesn't matter syms x f = exp(x); g1 = taylor(f, 'expansionPoint', 1, 'order', 3); g2 = taylor(f, 'order', 3, 'expansionPoint', 1); assert (isequal (g1, g2)) ***** test syms x f = x^2; assert (isequal (taylor(f,x,0,'order',0), 0)) assert (isequal (taylor(f,x,0,'order',1), 0)) assert (isequal (taylor(f,x,0,'order',2), 0)) assert (isequal (taylor(f,x,0,'order',3), x^2)) assert (isequal (taylor(f,x,0,'order',4), x^2)) ***** test syms x y f = exp(x)+exp(y); expected = 2 + x + x^2/2 + x^3/6 + x^4/24 + y + y^2/2 + y^3/6 + y^4/24; assert (isAlways(taylor(f,[x,y],'order',5)== expected)) assert (isAlways(taylor(f,[x,y],[0,0],'order',5) == expected)) ***** test % key/value ordering doesn't matter syms x f = exp(x); g1 = taylor(f, 'expansionPoint', 1, 'order', 3); g2 = taylor(f, 'order', 3, 'expansionPoint', 1); assert (isequal (g1, g2)) ***** test syms x f = x^2; assert (isequal (taylor(f,x,0,'order',0), 0)) assert (isequal (taylor(f,x,0,'order',1), 0)) assert (isequal (taylor(f,x,0,'order',2), 0)) assert (isequal (taylor(f,x,0,'order',3), x^2)) assert (isequal (taylor(f,x,0,'order',4), x^2)) ***** test % syms for a and order syms x f = x^2; assert (isequal (taylor(f,x,sym(0),'order',sym(2)), 0)) assert (isequal (taylor(f,x,sym(0),'order',sym(4)), x^2)) ***** test syms x y f = exp (x^2 + y^2); expected = 1+ x^2 +y^2 + x^4/2 + x^2*y^2 + y^4/2; assert (isAlways(taylor(f,[x,y],'order',5)== expected)) assert (isAlways(taylor(f,[x,y],'expansionPoint', [0,0],'order',5) == expected)) ***** test syms x y f = sqrt(1+x^2+y^2); expected = 1+ x^2/2 +y^2/2 - x^4/8 - x^2*y^2/4 - y^4/8; assert (isAlways(taylor(f,[x,y],'order',6)== expected)) assert (isAlways(taylor(f,[x,y],'expansionPoint', [0,0],'order',5) == expected)) ***** test syms x y f = sin (x^2 + y^2); expected = sin(sym(1))+2*cos(sym(1))*(x-1)+(cos(sym(1))-2*sin(sym(1)))*(x-1)^2 + cos(sym(1))*y^2; assert (isAlways(taylor(f,[x,y],'expansionPoint', [1,0],'order',3) == expected)) ***** test % key/value ordering doesn't matter syms x y f = exp(x+y); g1 = taylor(f, 'expansionPoint',1, 'order', 3); g2 = taylor(f, 'order', 3, 'expansionPoint',1); assert (isAlways(g1== g2)) ***** test syms x y f = x^2 + y^2; assert (isAlways(taylor(f,[x,y],[0,0],'order',0)== sym(0) )) assert (isAlways(taylor(f,[x,y],[0,0],'order',1)== sym(0) )) assert (isAlways(taylor(f,[x,y],[0,0],'order',2)== sym(0) )) assert (isAlways(taylor(f,[x,y],[0,0],'order',3)== sym(x^2 + y^2))) assert (isAlways(taylor(f,[x,y],[0,0],'order',4)== sym(x^2 + y^2))) ***** test % expansion point syms x a f = x^2; g = taylor(f,x,2); assert (isequal (simplify(g), f)) assert (isequal (g, 4*x+(x-2)^2-4)) g = taylor(f,x,a); assert (isequal (simplify(g), f)) ***** test % wrong order-1 series with nonzero expansion pt: % upstream bug https://github.com/sympy/sympy/issues/9351 syms x g = x^2 + 2*x + 3; h = taylor (g, x, 4, 'order', 1); assert (isequal (h, 27)) ***** test syms x y z g = x^2 + 2*y + 3*z; h = taylor (g, [x,y,z], 'order', 4); assert (isAlways(h == g)) ; ***** test syms x y z g = sin(x*y*z); h = taylor (g, [x,y,z], 'order', 4); assert (isAlways(h == x*y*z)) ; ***** error syms x y taylor(0, [x, y], [1, 2, 3]); 18 tests, 18 passed, 0 known failure, 0 skipped [inst/@sym/jordan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/jordan.m ***** test % basic A = sym ([2 1 0 0; 0 2 1 0; 0 0 3 0; 0 1 -1 3]); [V, J] = jordan (A); assert (isequal (inv (V) * A * V, J)); assert (isequal (J, sym ([2 1 0 0; 0 2 0 0; 0 0 3 0; 0 0 0 3]))) % the first 2 generalized eigenvectors form a cycle assert (isequal ((A - J(1, 1) * eye (4)) * V(:, 1), zeros (4, 1))); assert (isequal ((A - J(2, 2) * eye (4)) * V(:, 2), V(:, 1))); % the last 2 generalized eigenvectors are eigenvectors assert (isequal ((A - J(3, 3) * eye (4)) * V(:, 3), zeros (4, 1))); assert (isequal ((A - J(4, 4) * eye (4)) * V(:, 4), zeros (4, 1))); ***** test % scalars assert (isequal (jordan (sym (-10)), sym (-10))); assert (isequal (jordan (sym ('x')), sym ('x'))); ***** test % diagonal matrices A = diag (sym ([6 6 7])); [V1, D] = eig (A); [V2, J] = jordan (A); assert (isequal (V1, V2)); assert (isequal (D, J)); ***** test % matrices of unknown entries A = [sym('a') sym('b'); sym('c') sym('d')]; [V, D] = eig (A); J = jordan (A); assert (isequal (simplify (D), simplify (J))); ***** test % matrices of mixed entries A = [sym('x')+9 sym('y'); sym(0) 6]; [V, D] = eig (A); J = jordan (A); assert (isequal (simplify (D), simplify (J))); 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/ellipticPi.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticPi.m ***** error ellipticPi (sym (1)) ***** error ellipticPi (sym (1), 2, 3, 4) ***** assert (double (ellipticPi (sym (-23)/10, sym (pi)/4, 0)), 0.5876852228, 10e-11) ***** assert (double (ellipticPi (sym (1)/3, sym (pi)/3, sym (1)/2)), 1.285032276, 10e-11) ***** assert (double (ellipticPi (sym (2), sym (pi)/6, sym (2))), 0.7507322117, 10e-11) ***** xtest % FIXME: search/report upstream assert (double (ellipticPi (sym (-1), 0, sym (1))), 0) !!!!! known failure ASSERT errors for: assert (double (ellipticPi (sym (-1), 0, sym (1))),0) Location | Observed | Expected | Reason () NaN 0 'NaN' mismatch ***** xtest % FIXME: this is a regression somewhere: loss of precision: Issue #1064 % compare to Maple, complete us = vpa (ellipticPi (sym(1)/6, sym(4)/3), 40); % > evalf(EllipticPi(sin(1/6), sqrt(4/3)), 40); maple = vpa ('2.019271696236161760696477679310987869058', 40) - ... vpa ('1.708165765120289929280805062355360570830j', 40); assert (abs (double (maple - us)), 0, 2e-39) !!!!! known failure ASSERT errors for: assert (abs (double (maple - us)),0,2e-39) Location | Observed | Expected | Reason () 5.7666e-32 0 Abs err 5.7666e-32 exceeds tol 2e-39 by 6e-32 ***** test % compare to Maple, complete us = vpa (ellipticPi (sym(1)/6, sym(4)/3), 40); % > evalf(EllipticPi(sin(1/6), sqrt(4/3)), 40); maple = vpa ('2.019271696236161760696477679310987869058', 40) - ... vpa ('1.708165765120289929280805062355360570830j', 40); assert (abs (double (maple - us)), 0, 2e-30) ***** test % compare to Maple, incomplete us = vpa (ellipticPi (sym(8)/7, sym(4)/3, sym(2)/7), 40); % > evalf(EllipticPi(sin(4/3), 8/7, sqrt(2/7)), 40); maple = vpa ('2.089415796799294830305265090302275542033', 40) - ... vpa ('4.798862045930802761256228043192491271947j', 40); assert (abs (double (maple - us)), 0, 6e-39) 9 tests, 7 passed, 2 known failures, 0 skipped [inst/@sym/degree.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/degree.m ***** error degree (sym(1), 2, 3) ***** test syms x assert (isequal (degree(x^3), 3)) assert (isequal (degree(x^3 + 6), 3)) ***** test % specify variable syms x y p = x^2 + y*x + 1; assert (isequal (degree(p), 2)) assert (isequal (degree(p, x), 2)) assert (isequal (degree(p, y), 1)) ***** test syms x a oo assert (isequal (degree(x^3, a), 0)) assert (isequal (degree(sym(1), a), 0)) assert (isequal (degree(sym(0), a), -oo)) ***** xtest % constant inputs syms oo assert (isequal (degree(sym(1)), 0)) assert (isequal (degree(sym(0)), -oo)) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/gamma.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gamma.m ***** error gamma (sym(1), 2) ***** assert (isequaln (gamma (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = gamma(x); f2 = gamma(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = gamma(A); f2 = gamma(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = gamma (d); f = gamma (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/and.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/and.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple assert (isequal (t & f, f)) assert (isequal (t & t, t)) ***** test % mix with nonsym assert (isequal (t & false, f)) assert (isequal (t & true, t)) assert (isequal (t & 0, f)) assert (isequal (t & 1, t)) assert (isa (t & false, 'sym')) assert (isa (t & 1, 'sym')) ***** test % array w = [t t f f]; z = [t f t f]; assert (isequal (w & z, [t f f f])) ***** test % number assert (isequal( sym(1) & t, t)) assert (isequal( sym(0) & t, f)) ***** test % output is sym even for scalar t/f assert (isa (t & f, 'sym')) ***** test % eqns, exclusive syms x e = (x == 3) & (x^2 == 9); assert (isequal (subs(e, x, [-3 0 3]), [f f t])) ***** error and (sym('x'), 2, 3) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/sum.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sum.m ***** error sum (sym(1), 2, 3) ***** error sum (sym(1), 42) ***** shared x,y,z syms x y z ***** assert (isequal (sum (x), x)) ***** assert (isequal (sum ([x y z]), x+y+z)) ***** assert (isequal (sum ([x; y; z]), x+y+z)) ***** assert (isequal (sum ([x y z], 1), [x y z])) ***** assert (isequal (sum ([x y z], 2), x+y+z)) ***** shared a,b b = [1 2; 3 4]; a = sym(b); ***** assert (isequal (sum(a), sum(b))) ***** assert (isequal (sum(a,1), sum(b,1))) ***** assert (isequal (sum(a,2), sum(b,2))) ***** test % weird inputs a = sum('xx', sym(1)); assert (isequal (a, sym('xx'))) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/fourier.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fourier.m ***** test % matlab SMT compatibility for arguments syms r x u w v Pi=sym('pi'); assert(logical( fourier(exp(-x^2)) == sqrt(Pi)/exp(w^2/4) )) assert(logical( fourier(exp(-w^2)) == sqrt(Pi)/exp(v^2/4) )) assert(logical( fourier(exp(-r^2),u) == sqrt(Pi)/exp(u^2/4) )) assert(logical( fourier(exp(-r^2),r,u) == sqrt(Pi)/exp(u^2/4) )) ***** test % basic tests syms x w assert(logical( fourier(exp(-abs(x))) == 2/(w^2 + 1) )) assert(logical( fourier(x*exp(-abs(x))) == -(w*4*1i)/(w^4 + 2*w^2 + 1) )) ***** test % Dirac delta tests syms x w Pi=sym('pi'); assert(logical( fourier(dirac(x-2)) == exp(-2*1i*w) )) assert (logical( fourier(sym(2), x, w) == 4*Pi*dirac(w) )) ***** test % advanced test syms x w c d Pi=sym('pi'); F=Pi*(dirac(w-c)+dirac(w+c))+2*Pi*1i*(dirac(w+3*d)-dirac(w-3*d))+2/(w^2+1); assert(logical( fourier(cos(c*x)+2*sin(3*d*x)+exp(-abs(x))) == expand(F) )) ***** xtest % Differential operator to algebraic % SymPy cannot evaluate? (Issue #170) syms x w f(x) assert(logical( fourier(diff(f(x),x),x,w) == -1i*w*fourier(f(x),x,w) )) !!!!! known failure assert (logical (fourier (diff (f (x), x), x, w) == -1i * w * fourier (f (x), x, w))) failed 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@sym/symsum.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symsum.m ***** error symsum (sym(1), 2, 3, 4, 5) ***** test % finite sums syms n assert (isequal (symsum(n,n,1,10), 55)) assert(isa(symsum(n,n,1,10), 'sym')) assert (isequal (symsum(n,n,sym(1),sym(10)), 55)) assert (isequal (symsum(n,n,sym(1),sym(10)), 55)) assert (isequal (symsum(1/n,n,1,10), sym(7381)/2520)) ***** test % negative limits syms n assert (isequal (symsum(n,n,-3,3), sym(0))) assert (isequal (symsum(n,n,-3,0), sym(-6))) assert (isequal (symsum(n,n,-3,-1), sym(-6))) ***** test % one input syms n f = symsum (n); g = n^2/2 - n/2; assert (isequal (f, g)) f = symsum (2*n); g = n^2 - n; assert (isequal (f, g)) ***** test % constant input f = symsum (sym(2)); syms x g = 2*x; assert (isequal (f, g)) ***** test % two inputs syms n f = symsum (2*n, n); g = n^2 - n; assert (isequal (f, g)) ***** test % two inputs, second is range syms n f = symsum (n, [1 6]); g = 21; assert (isequal (f, g)) f = symsum (n, [sym(1) 6]); g = 21; assert (isequal (f, g)) f = symsum (2*n, [1 6]); g = 2*21; assert (isequal (f, g)) ***** test % three inputs, last is range syms n f = symsum (2*n, n, [1 4]); g = sym(20); assert (isequal (f, g)) f = symsum (2*n, n, [sym(1) 4]); g = sym(20); assert (isequal (f, g)) f = symsum (2, n, [sym(1) 4]); g = sym(8); assert (isequal (f, g)) ***** test % three inputs, no range syms n f = symsum (2*n, 1, 4); g = sym(20); assert (isequal (f, g)) f = symsum (5, sym(1), 3); g = sym(15); assert (isequal (f, g)) ***** test % ok to use double's for arguments in infinite series syms n oo assert(isequal(symsum(1/n^2,n,1,oo), sym(pi)^2/6)) assert(isequal(symsum(1/n^2,n,1,inf), sym(pi)^2/6)) ***** test % should be oo because 1 is real but seems to be % zoo/oo depending on sympy version syms n oo zoo = sym('zoo'); assert (isequal (symsum(1/n,n,1,oo), oo) || ... isequal (symsum(1/n,n,1,oo), zoo)) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/prevprime.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/prevprime.m ***** assert (isequal (prevprime(sym(3)), 2)); ***** assert (isequal (prevprime(sym(20)), 19)); ***** assert (isequal (prevprime(sym([3 5 10])), [2 3 7])); ***** error prevprime(sym(2)) ***** error prevprime(sym(-2)) ***** test % result is a sym p = prevprime(sym(3)); assert (isa (p, 'sym')) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/null.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/null.m ***** test A = sym([1 2; 3 4]); assert (isempty (null (A))) ***** assert (isempty (null (sym(4)))) ***** test A = sym([1 2 3; 3 4 5]); assert (isequal (null(A), sym([1;-2;1]))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/arg.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/arg.m ***** test syms x assert (isequal (angle (x), arg (x))); 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/ge.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ge.m ***** test % simple x = sym(1); y = sym(1); e = x >= y; assert (logical (e)) x = sym(1); y = sym(2); e = x >= y; assert (~logical(e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); e = a >= b; assert (isa (e, 'sym')) assert (~logical (e(1))) assert (isa (e(2), 'sym')) assert (isequal (e(2), 3 >= x)) assert (logical (e(3))) assert (isa (e(4), 'sym')) assert (isequal (e(4), 2*x >= 10)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/erfinv.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfinv.m ***** error erfinv (sym(1), 2) ***** assert (isequaln (erfinv (sym(nan)), sym(nan))) ***** shared x, d d = 1/2; x = sym('1/2'); ***** test f1 = erfinv(x); f2 = erfinv(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erfinv(A); f2 = erfinv(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erfinv (d); f = erfinv (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/det.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/det.m ***** assert (isequal (det(sym([])), 1)) ***** test syms x y real assert (isequal (det([x 5; 7 y]), x*y-35)) ***** test syms x assert (isequal (det(x), x)) assert (isequal (det(sym(-6)), sym(-6))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/lambertw.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lambertw.m ***** test % W(x)*exp(W(x)) == x syms x T = lambertw(x)*exp(lambertw(x)); T = double (subs (T, x, 10)); assert (isequal (T, 10)); ***** test % k, x not x, k to match SMT syms x T = lambertw(2, x)*exp(lambertw(2, x)); T = double (subs (T, x, 10)); assert (abs(T - 10) < 1e-15) ***** assert (isequal (lambertw(sym(0)), sym(0))) ***** assert ( isequal (lambertw (-1/exp(sym(1))), -sym(1))) ***** assert ( isequal (lambertw (0, -1/exp(sym(1))), -sym(1))) ***** assert ( isequal (lambertw (-1, -1/exp(sym(1))), -sym(1))) ***** xtest % W(x)*exp(W(x)) == x; FIXME: a failure in SymPy? syms x T = simplify(lambertw(x)*exp(lambertw(x))); assert (isequal (T, x)) !!!!! known failure assert (isequal (T, x)) failed ***** assert (abs (lambertw(pi) - double(lambertw(sym(pi)))) < 5*eps) ***** assert (abs (lambertw(-1, 5) - double(lambertw(-1, sym(5)))) < 5*eps) ***** assert (abs (lambertw(2, 2) - double(lambertw(2, sym(2)))) < 5*eps) ***** test % round trip syms x k A = lambertw (5); f = lambertw (x); h = function_handle (f); B = h (5); assert (A, B) A = lambertw (3, 5); f = lambertw (k, x); h = function_handle (f); B = h (3, 5); assert (A, B) 11 tests, 10 passed, 1 known failure, 0 skipped [inst/@sym/ellipticCE.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCE.m ***** error ellipticCE (sym (1), 2) ***** assert (isequal (ellipticCE (sym (0)), sym (1))) ***** assert (isequal (ellipticCE (sym (1)), sym (pi)/2)) ***** assert (double (ellipticCE (sym (pi)/4)), 1.482786927, 10e-10) ***** assert (double (ellipticCE (sym (pi)/2)), 1.775344699, 10e-10) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/coeffs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coeffs.m ***** error coeffs (sym(1), 2, 3, 4) ***** error coeffs (sym(1), 2, 'al') ***** error coeffs (sym(1), 'al') ***** test % simple syms x [c, t] = coeffs(6*x*x + 27); assert (isequal (c, [6 27])) assert (isequal (t, [x*x 1])) ***** test % specify a variable syms x [c, t] = coeffs(6*x*x + 27, x); assert (isequal (c, [6 27])) assert (isequal (t, [x*x 1])) ***** test % specify another variable syms x y [c, t] = coeffs(6*x + 27, y); assert (isequal (c, 6*x + 27)) assert (isequal (t, 1)) ***** test % weird SMT order syms x a1 = [27 6]; a2 = [6 27]; c = coeffs(6*x*x + 27); assert (isequal (c, a1)) coeffs(6*x*x + 27); assert (isequal (ans, a1)) [c, t] = coeffs(6*x*x + 27); assert (isequal (c, a2)) ***** test % no weird order with "all" syms x c = coeffs(6*x*x + 27, 'all'); assert (isequal (c, [6 0 27])) ***** test % "all" syms x [c, t] = coeffs(6*x*x + 27, 'all'); assert (isequal (c, [6 0 27])) assert (isequal (t, [x^2 x 1])) ***** test % "All" syms x [c, t] = coeffs(6*x, 'All'); assert (isequal (c, [6 0])) assert (isequal (t, [x 1])) ***** test % multivariable array syms x y [c, t] = coeffs(6*x*x + 27*y*x + 36, [x y]); a = [6 27 36]; s = [x^2 x*y 1]; assert (isequal (c, a)) assert (isequal (t, s)) % with list [c, t] = coeffs(6*x*x + 27*y*x + 36, {x y}); assert (isequal (c, a)) assert (isequal (t, s)) ***** test % other symbols treated as part of coeffs syms x y [c, t] = coeffs(6*x*x + 27*y*x + 36, x); a = [6 27*y 36]; s = [x^2 x 1]; assert (isequal (c, a)) assert (isequal (t, s)) ***** error % TODO: multivariate all not working (https://github.com/gnu-octave/symbolic/issues/720) syms x y [c, t] = coeffs(6*x^2 + 7*y + 19, [x y], 'all'); ***** test % empty same as not specifying; maybe not SMT compatible: % https://github.com/gnu-octave/symbolic/pull/708#discussion_r94292831 syms x y [c, t] = coeffs(6*x*x + 27*y*x + 36, {}); a = [6 27 36]; assert (isequal (c, a)) [c, t] = coeffs(6*x*x + 27*y*x + 36); assert (isequal (c, a)) ***** test % no input defaults to all symbols (not symvar to get x) syms x y [c, t] = coeffs(6*x*x + 27*y*x + 36); assert (isequal (c, [6 27 36])) ***** test % non sym input syms x assert (isequal (coeffs(6, x), sym(6))) ***** test % constant input without x assert (isequal (coeffs(sym(6)), sym(6))) ***** test % constant input without x assert (isequal (coeffs (sym(6), {}), sym(6))) % irrational coefficients syms x f = x^2 + sqrt(sym(2))*x; [c1, t1] = coeffs (f); [c2, t2] = coeffs (f, x); assert (isequal (c1, c2)) assert (isequal (t1, t2)) 18 tests, 18 passed, 0 known failure, 0 skipped [inst/@sym/potential.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/potential.m ***** error potential (sym(1), 2, 3, 4) ***** shared x,y,z syms x y z ***** test % 1D f = 3*x^2; F = x^3; assert (isequal (potential(f), F)) assert (isequal (potential(f, x), F)) assert (isequal (potential(f, x, 0), F)) assert (isequal (potential(f, x, 2), F - 8)) ***** test F = x*exp(y) + (z-1)^2; f = gradient(F); G = potential(f, [x;y;z], [0;1;1]); assert (isAlways (G == F)) ***** test F = x*exp(y); f = gradient(F); G = potential(f); assert (isAlways (G == F)) ***** test % no potential exists syms x y a = [x; x*y^2]; assert (isnan (potential (a))) ***** shared ***** xtest % fails b/c of sympy #8458 (piecewise expr that should simplify) syms x f = cos(x); assert (isequal (potential(f, x), sin(x))) !!!!! known failure assert (isequal (potential (f, x), sin (x))) failed 6 tests, 5 passed, 1 known failure, 0 skipped [inst/@sym/erf.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erf.m ***** error erf (sym(1), 2) ***** assert (isequaln (erf (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = erf(x); f2 = erf(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = erf(A); f2 = erf(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = erf (d); f = erf (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/sort.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sort.m ***** error sort (sym(1), 2) ***** test f = [sym(1), sym(0)]; expected = sym([0, 1]); assert (isequal (sort(f), expected)) ***** test f = [sym(1)]; expected = sym(1); assert (isequal (sort(f), expected)) ***** test f = [sym(3), sym(2), sym(6)]; s = sort(f); expected_s = sym([2, 3, 6]); assert (isequal (s, expected_s)) ***** test f = [sym(pi), sin(sym(2)), sqrt(sym(6))]; s = sort(f); expected_s = sym([sin(sym(2)), sqrt(sym(6)), sym(pi)]); assert (isequal (s, expected_s)) ***** test f = [sym(1), sym(2); sym(2), sym(pi); sym(pi), sym(1)]; s = sort(f); expected_s = ([sym(1), sym(1); sym(2), sym(2); sym(pi), sym(pi)]); assert (isequal (s, expected_s)) ***** assert (isequal (sort(sym([])), sym([]))) ***** error sort([sym('x') 1]) ***** test % but with assumptions, symbols can be sorted p = sym('p', 'positive'); n = sym('n', 'negative'); expected_s = [n p]; s = sort ([p n]); assert (isequal (s, expected_s)) 9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/atan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atan.m ***** error atan (sym(1), 2) ***** assert (isequaln (atan (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = atan(x); f2 = atan(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = atan(A); f2 = atan(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = atan (d); f = atan (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/prod.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/prod.m ***** error prod (sym(1), 2, 3) ***** error prod (sym(1), 42) ***** shared x,y,z syms x y z ***** assert (isequal (prod (x), x)) ***** assert (isequal (prod ([x y z]), x*y*z)) ***** assert (isequal (prod ([x; y; z]), x*y*z)) ***** assert (isequal (prod ([x y z], 1), [x y z])) ***** assert (isequal (prod ([x y z], 2), x*y*z)) ***** shared a,b b = [1 2; 3 4]; a = sym(b); ***** assert (isequal (prod(a), prod(b))) ***** assert (isequal (prod(a,1), prod(b,1))) ***** assert (isequal (prod(a,2), prod(b,2))) ***** test % weird inputs a = prod('xx', sym(1)); assert (isequal (a, sym('xx'))) 11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/dot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dot.m ***** error dot (sym(1), 2, 3) ***** test a = sym([1; 1; 0]); b = sym([1; 2; 4]); c = dot(a, b); assert (isequal (c, sym(3))) ***** test syms x a = sym([x; 0; 0]); b = sym([0; 1; 0]); c = dot(a, b); assert (isequal (c, sym(0))) ***** test assert (isequal (dot (sym([1 i]), sym([i 2])), sym(-i))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/csch.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/csch.m ***** error csch (sym(1), 2) ***** assert (isequaln (csch (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = csch(x); f2 = csch(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = csch(A); f2 = csch(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = csch (d); f = csch (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/laplacian.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laplacian.m ***** shared x,y,z syms x y z ***** test % 1D f = x^2; g = diff(f,x,x); assert (isequal (laplacian(f), g)) assert (isequal (laplacian(f,{x}), g)) assert (isequal (laplacian(f,[x]), g)) assert (isequal (laplacian(f,x), g)) ***** test % const f = sym(1); g = sym(0); assert (isequal (laplacian(f), g)) assert (isequal (laplacian(f,x), g)) f = sym('c'); assert (isequal (laplacian(f,x), g)) ***** test % double const f = 1; g = sym(0); assert (isequal (laplacian(f,x), g)) ***** test % 1D fcn in 2d/3d f = sin(2*y); g = -4*f; assert (isequal (laplacian(f), g)) assert (isequal (laplacian(f, {x,y}), g)) assert (isequal (laplacian(f, {x,y,z}), g)) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y); g = diff(f,x,x) + diff(f,y,y); assert (isequal (laplacian(f), g)) assert (isequal (laplacian(f, {x,y}), g)) ***** test % 2d fcn in 2d/3d f = sin(exp(x)*y+sinh(z)); gr2 = gradient(f, {x,y}); divgr2 = divergence(gr2, {x,y}); l2 = laplacian(f,{x,y}); gr3 = gradient(f, {x,y,z}); divgr3 = divergence(gr3, {x,y,z}); l3 = laplacian(f,{x,y,z}); assert (isAlways (l2 == divgr2)) assert (isAlways (l3 == divgr3)) ***** error laplacian(sym('x'), sym('x'), 42) ***** error laplacian([sym('x'), sym('x')]) 8 tests, 8 passed, 0 known failure, 0 skipped [inst/@sym/ztrans.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ztrans.m ***** test % basic Z-transform table checks % X1, ..., X4 must have inner radius of convergence 1 syms n z % trick to extract the closed form formula using the fact that inner roc = 1 closed_form = @(X) subs (X, abs (1 / z), 1 / sym (2)); % check if ztrans(f) == X check_ztrans = @(f, X) logical (simplify (closed_form (ztrans (f)) == X)); f1 = sym (1); X1 = 1 / (1 - 1 / z); assert (check_ztrans (f1, X1)); f2 = n; X2 = (1 / z) / (1 - 1 / z)^2; assert (check_ztrans (f2, X2)); f3 = n^2; X3 = (1 / z) * (1 + 1 / z) / (1 - 1 / z)^3; assert (check_ztrans (f3, X3)); f4 = n^3; X4 = (1 / z) * (1 + 4 / z + 1 / z^2) / (1 - 1 / z)^4; assert (check_ztrans (f4, X4)); % basic matrix checks A1 = ztrans ([f1 f2; f3 f4]); B1 = [ztrans(f1) ztrans(f2); ztrans(f3) ztrans(f4)]; assert (isequal (A1, B1)); A2 = ztrans ([f1 f2; f3 f4], z); B2 = [ztrans(f1, z) ztrans(f2, z); ztrans(f3, z) ztrans(f4, z)]; assert (isequal (A2, B2)); A3 = ztrans ([f1 f2; f3 f4], n, z); B3 = [ztrans(f1, n, z) ztrans(f2, n, z); ztrans(f3, n, z) ztrans(f4, n, z)]; assert (isequal (A3, B3)); ***** test % additional Z-transform table checks % X1, ..., X4 must have inner radius of convergence a syms n nonnegative integer syms m positive integer syms a syms z % trick to extract the closed form formula using the fact that inner roc = a closed_form = @(X) subs (X, abs (a / z), 1 / sym (2)); % check if ztrans(f) == X check_ztrans = @(f, X) logical (simplify (closed_form (ztrans (f)) == X)); f1 = a^n; X1 = 1 / (1 - a / z); assert (check_ztrans (f1, X1)); f2 = n * a^n; X2 = (a / z) / (1 - a / z)^2; assert (check_ztrans (f2, X2)); f3 = n^2 * a^n; X3 = (a / z) * (1 + a / z) / (1 - a / z)^3; assert (check_ztrans (f3, X3)); f4 = nchoosek(n + m - 1, m - 1) * a^n; X4 = 1 / (1 - a / z)^m; assert (check_ztrans (f4, X4)); % additional matrix checks A1 = ztrans (f1, [n m; m n], [z a; a z]); B1 = [ztrans(f1, n, z) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, n, z)]; assert (isequal (A1, B1)); A2 = ztrans (f1, m, [z a; a z]); B2 = [ztrans(f1, m, z) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, m, z)]; assert (isequal (A2, B2)); A3 = ztrans (f1, [n m; m n], a); B3 = [ztrans(f1, n, a) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, n, a)]; assert (isequal (A3, B3)); ***** test % Kronecker delta checks syms n n0 nonnegative integer syms z assert (isequal (ztrans (kroneckerDelta (n)), 1)); assert (isequal (ztrans (kroneckerDelta (n - n0)), 1 / z^n0)); ***** test % basic var selection checks syms n m z w assert (isequal (ztrans (1 / factorial (n)), exp (1 / z))); assert (isequal (ztrans (1 / factorial (z)), exp (1 / w))); assert (isequal (ztrans (1 / factorial (m), w), exp (1 / w))); assert (isequal (ztrans (1 / factorial (m), m, w), exp (1 / w))); ***** test % additional var selection checks syms n m z f = kroneckerDelta(m) / factorial (n); assert (isequal (ztrans (f, z), exp (1 / z) * kroneckerDelta (m))); assert (isequal (ztrans (f, n, z), exp (1 / z) * kroneckerDelta (m))); assert (isequal (ztrans (f, m, z), 1 / factorial (n))); ***** test % if no t, use symvar: take x before a syms a x z assert (isequal (ztrans (a / factorial (x)), a * exp (1 / z))); ***** error ztrans (sym ('n')^sym ('n', 'nonnegative', 'integer')) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@sym/besseli.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besseli.m ***** test X = [1 2 3; 4 5 6]; ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; n = double(ns); A = double(besseli(ns, X)); B = besseli(n, X); assert (all (all (abs (A - B) < 100*eps*abs(A)))) ***** test % roundtrip syms x A = besseli(2, 10); q = besseli(2, x); h = function_handle(q); B = h(10); assert (abs (A - B) <= eps*abs(A)) ***** error besseli(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/cos.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cos.m ***** error cos (sym(1), 2) ***** assert (isequaln (cos (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test f1 = cos(x); f2 = cos(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; f1 = cos(A); f2 = cos(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); A = cos (d); f = cos (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/linspace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/linspace.m ***** test a = linspace(sym(3), 5, 5); b = [sym(6) 7 8 9 10]/2; assert (isequal (a, b)) ***** test % non-integers A = linspace(0, sym(pi), 10); assert (length (A) == 10); assert (isequal (A(6), 5*sym(pi)/9)); ***** test % default argument for N A = linspace(1, 100); assert (length (A) == 100); ***** test % special case for just N = 1 A = linspace(sym(2), 3, 1); assert (isequal (A, 3)) A = linspace(sym(2), 3, 0); assert (isequal (A, 3)) A = linspace(sym(2), 3, sym(3)/2); assert (isequal (A, 3)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/rref.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rref.m ***** test A = sym([1 2; 3 4]); [r, k] = rref(A); assert (isequal (r, eye(2))) assert (isequal (k, [1 2])) ***** assert (isequal (rref(sym([2 1])), [1 sym(1)/2])) ***** assert (isequal (rref(sym([1 2; 2 4])), [1 2; 0 0])) ***** assert (isequal (rref(sym([0 0; 2 4])), [1 2; 0 0])) ***** test A = sym([1 2 3; 2 3 4]); [r, k] = rref(A); assert (isequal (r, [1 0 -1; 0 1 2])) assert (isequal (k, [1 2])); 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/matlabFunction.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/matlabFunction.m ***** test % autodetect inputs syms x y s = warning('off', 'OctSymPy:function_handle:nocodegen'); h = matlabFunction(2*x*y, x+y); warning(s) [t1, t2] = h(3,5); assert(t1 == 30 && t2 == 8) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/isNone.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isNone.m ***** test None = pycall_sympy__ ('return None'); ***** shared None None = pycall_sympy__ ('return None'); ***** assert (isNone(None)) ***** assert (~isNone(sym('x'))) ***** assert (islogical(isNone(None))) ***** test a = [1 None]; a = [None None]; a = [None; 1]; a = [None; None]; a = [None 2; 3 None]; ***** test a = sym([1 2]); a(1,2) = None; assert (isequal (a, [sym(1) None])); ***** assert (isequal (None(1), None)); ***** error None(None); ***** error x=sym('x'); x(None); ***** error x=1; x(None); ***** error None(None); ***** error 1 + None; ***** error None - 1; ***** error 6*None; ***** error 2^None; ***** error [1 2].*None; ***** error isconstant(None); ***** error nnz(None); ***** error logical(None); ***** error isAlways(None); ***** error logical([sym(true) None]); ***** error isAlways([sym(true) None]); ***** assert (isequal (children(None), None)) ***** assert (isequal (repmat(None, 1, 2), [None None])) ***** assert (isequal (fliplr(None), None)) ***** assert (isequal (flipud(None), None)) 26 tests, 26 passed, 0 known failure, 0 skipped [inst/@sym/airy.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/airy.m ***** test syms z a = airy(0, z); ap = airy(1, z); assert (isequal (diff (a), ap)) assert (isequal (diff (ap), z*a)) ***** test syms z b = airy(2, z); bp = airy(3, z); assert (isequal (diff (b), bp)) assert (isequal (diff (bp), z*b)) ***** test % default to k=0 syms z a = airy(0, z); a2 = airy(z); assert (isequal (a, a2)) ***** error airy(0, sym('x'), 2) ***** error airy(4, sym('z')) ***** error airy(-1, sym('z')) ***** test % symbolic k syms z b1 = airy(2, z); b2 = airy(sym(2), z); assert (isequal (b1, b2)) ***** test % doubles, relative error X = [1 2 pi; 4i 5 6+6i]; Xs = sym(X); for k = 0:3 A = double(airy(k, Xs)); B = airy(k, X); assert (all (all (abs(A - B) < 500*eps*abs(A)))) end ***** test % round-trip syms x for k = 0:3 A = airy(k, 10); q = airy(k, x); h = function_handle(q); B = h(10); assert (abs(A-B) < 500*eps*abs(A)) end 9 tests, 9 passed, 0 known failure, 0 skipped [inst/dirac.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/dirac.m ***** assert (isinf (dirac (0))) ***** assert (dirac (1) == 0) ***** assert (isnan (dirac (nan))) ***** assert (isequaln (dirac ([-1 1 0 eps inf -inf nan]), [0 0 inf 0 0 0 nan])) ***** error dirac (1i) ***** assert (isa (dirac (single (0)), 'single')) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/digits.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/digits.m ***** test orig = digits(32); % to reset later m = digits(64); p = vpa(sym(pi)); assert (abs (double (sin(p))) < 1e-64) n = digits(m); assert (n == 64) p = vpa(sym(pi)); assert (abs (double (sin(p))) < 1e-32) assert (abs (double (sin(p))) > 1e-40) digits(orig) 1 test, 1 passed, 0 known failure, 0 skipped [inst/fibonacci.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/fibonacci.m ***** assert (isequal ( fibonacci (sym(0)), 0)) ***** assert (isequal ( fibonacci (sym(14)), sym(377))) ***** assert (isequal ( fibonacci (14), 377)) ***** test syms x assert (isequal (fibonacci (5,x), x^4 + 3*x^2 + 1)) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/laguerreL.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/laguerreL.m ***** error laguerreL (1) ***** error laguerreL (1, 2, 3) ***** assert (isequal (laguerreL (0, rand), 1)) ***** test x = rand; assert (isequal (laguerreL (1, x), 1 - x)) ***** test x=rand; y1=laguerreL(2, x); p2=[.5 -2 1]; y2=polyval(p2,x); assert(y1 - y2, 0, 10*eps); ***** test x=rand; y1=laguerreL(3, x); p3=[-1/6 9/6 -18/6 1]; y2=polyval(p3,x); assert(y1 - y2, 0, 20*eps); ***** test x=rand; y1=laguerreL(4, x); p4=[1/24 -16/24 72/24 -96/24 1]; y2=polyval(p4,x); assert(y1 - y2, 0, 30*eps) ***** error laguerreL(1.5, 10) ***** error laguerreL([0 1], [1 2 3]) ***** error laguerreL([0 1], [1; 2]) ***** test % numerically stable implementation (in n) L = laguerreL (10, 10); Lex = 1763/63; assert (L, Lex, -eps) L = laguerreL (20, 10); Lex = -177616901779/14849255421; % e.g., laguerreL(sym(20),10) assert (L, Lex, -eps) ***** test % vectorized x L = laguerreL (2, [5 6 7]); Lex = [3.5 7 11.5]; assert (L, Lex, eps) ***** test L = laguerreL (0, [4 5]); assert (L, [1 1], eps) ***** test % vector n L = laguerreL ([0 1 2 3], [4 5 6 9]); assert (L, [1 -4 7 -26], eps) ***** test % vector n, scalar x L = laguerreL ([0 1 2 3], 6); assert (L, [1 -5 7 1], eps) ***** assert (isa (laguerreL (0, single (1)), 'single')) ***** assert (isa (laguerreL (1, single ([1 2])), 'single')) ***** assert (isa (laguerreL ([1 2], single ([1 2])), 'single')) 18 tests, 18 passed, 0 known failure, 0 skipped [inst/assume.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/assume.m ***** error a = assume('a', 'real') ***** error assume positive integer ***** error assume x y ***** error assume x clear real ***** error assume a>0 ***** error assume 'x/pi' integer ***** test syms x assume x positive a = assumptions(x); assert(strcmp(a, 'x: positive')) assume x even a = assumptions(x); assert(strcmp(a, 'x: even')) ***** test % multiple assumptions syms x assume x positive integer [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) ***** test % does workspace syms x positive x2 = x; f = sin(x); assume x negative a = assumptions(x); assert(strcmp(a, 'x: negative')) a = assumptions(x2); assert(strcmp(a, 'x: negative')) a = assumptions(f); assert(strcmp(a, 'x: negative')) ***** error % does not create new variable x clear x assume x real ***** error % no explicit variable named x clear x f = 2*sym('x'); assume x real ***** test % clear does workspace syms x positive f = 2*x; assume x clear assert (isempty (assumptions (f))); assert (isempty (assumptions ())); ***** test syms x y f = sin (2*x); assume x y real assert (strcmp (assumptions (x), 'x: real')) assert (strcmp (assumptions (y), 'y: real')) assert (strcmp (assumptions (f), 'x: real')) ***** test syms x y f = sin (2*x); assume x y positive even assert (strcmp (assumptions (x), 'x: positive, even') || strcmp (assumptions (x), 'x: even, positive')) assert (strcmp (assumptions (y), 'y: positive, even') || strcmp (assumptions (y), 'y: even, positive')) assert (strcmp (assumptions (f), 'x: positive, even') || strcmp (assumptions (f), 'x: even, positive')) ***** test % works from variable names not symbols syms x y a = [x y]; assume a real assert (strcmp (assumptions (x), 'x: real')) assert (strcmp (assumptions (y), 'y: real')) ***** test % works from variable names not symbols y = sym('x'); f = 2*y; assume y real assert (strcmp (assumptions (f), 'x: real')) ***** test % matrix of symbols syms a b c d A = [a b; c d]; assume A real assert (strcmp (assumptions (a), 'a: real')) assert (strcmp (assumptions (b), 'b: real')) assert (strcmp (assumptions (c), 'c: real')) assert (strcmp (assumptions (d), 'd: real')) ***** test % assume after symfun clear x syms f(x) assume x real assert (~ isempty (assumptions (formula (f)))) assert (~ isempty (assumptions (argnames (f)))) 18 tests, 18 passed, 0 known failure, 0 skipped [inst/vpa.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/vpa.m ***** test a = vpa(0, 4); b = double(a); assert(b == 0) ***** test a = vpa(pi, 4); b = sin(a); assert(abs(double(b)) < 1e-4) ***** test % vpa from double is ok, doesn't warn (c.f., sym(2.3)) a = vpa(2.3); assert(true) ***** test % vpa from double not more than 16 digits a = vpa(sqrt(pi), 32); b = sin(a^2); assert(abs(double(b)) > 1e-20) assert(abs(double(b)) < 1e-15) ***** test a = vpa(sym(pi), 32); b = sin(a); assert(abs(double(b)) < 1e-30) ***** test a = vpa(sym(pi), 256); b = sin(a); assert(abs(double(b)) < 1e-256) ***** test % pi str a = vpa('pi', 32); b = sin(a); assert(abs(double(b)) < 1e-32) ***** test % pi str a = vpa('pi', 32); b = vpa(sym('pi'), 32); assert (double (a - b) == 0) ***** test spi = sym(pi); a = vpa(spi, 10); b = double(a); assert(~isAlways(spi == a)) ***** test % matrix of sym a = [sym(pi) 0; sym(1)/2 1]; b = [pi 0; 0.5 1]; c = vpa(a, 6); assert(max(max(abs(double(c)-b))) < 1e-6) ***** test % matrix of double b = [pi 0; 0.5 1]; c = vpa(b, 6); assert(max(max(abs(double(c)-b))) < 1e-6) ***** test % integer type a = vpa(int32(6), 64); b = vpa(6, 64); assert (isequal (a, b)) ***** test % matrix of int b = int32([pi 0; 6.25 1]); c = vpa(b, 6); assert (isequal (double(c), [3 0; 6 1])) ***** test % can pass pi directly to vpa a = vpa(sym(pi), 128); b = vpa(pi, 128); assert (isequal (a, b)) ***** test % if sym does sth special for e so should vpa a = vpa(sym(exp(1)), 64); b = vpa(exp(1), 64); assert (isequal (a, b)) ***** test % can pass pi directly to vpa, even in array a = vpa(sym([2 pi]), 128); b = vpa([2 pi], 128); assert (isequal (a, b)) ***** test % can pass i directly to vpa a = vpa(sym(i)); b = vpa(i); ***** test % 'i' and 'I' just make vars a = vpa(sym(1i)); b = vpa('i'); c = vpa('I'); assert (~isequal (a, b)) assert (~isequal (a, c)) ***** test % '1i' and '1j' strings a = vpa(sym(1i)); b = vpa('1i'); c = vpa('1j'); assert (isequal (a, b)) assert (isequal (a, c)) ***** test % Issue #868, precision loss on '0.33j' a = vpa('0.33j', 40); b = vpa('0.33i', 40); assert (double (abs (imag (a)*100/33) - 1) < 1e-39) assert (isequal (a, b)) ***** test % inf/-inf do not become symbol('inf') S = {'oo', '-oo', 'inf', 'Inf', '-inf', '+inf'}; for j = 1:length(S) a = vpa(S{j}); b = vpa(sym(S{j})); assert (isequal (a, b)) end ***** test a = vpa('2.3', 20); s = strtrim(disp(a, 'flat')); assert (strcmp (s, '2.3000000000000000000')) ***** test % these should *not* be the same a = vpa(2.3, 40); b = vpa('2.3', 40); sa = sympy (a); sb = sympy (b); assert (~isequal (a, b)) assert (abs(double(a - b)) > 1e-20) assert (abs(double(a - b)) < 1e-15) assert (~strcmp(sa, sb)) ***** test % these should *not* be the same x = vpa('1/3', 32); y = vpa(sym(1)/3, 32); z = vpa(1/3, 32); assert (isequal (x, y)) assert (~isequal (x, z)) ***** test % big integers a = int64(12345678); a = a*a; b = vpa(a); c = vpa('152415765279684'); assert (isequal (b, c)) ***** test % big integers (workaround poor num2str, works in 4.0?) a = int64(1234567891); a = a*a; b = vpa(a); c = vpa('1524157877488187881'); assert (isequal (b, c)) ***** test % isequal and other comparisons a = vpa ("2/3", 32); b = vpa ("2/3", 64); assert (~ logical (a == b)) assert (~ isequal (a, b)) a = vpa ("1/3", 32); b = vpa ("1/3", 64); assert (~ logical (a == b)) assert (~ isequal (a, b)) a = vpa ("0.1", 32); b = vpa ("0.1", 64); assert (~ logical (a == b)) assert (~ isequal (a, b)) ***** test % isequal with array: Issue #1285 a = vpa ("2/3", 32); b = vpa ("2/3", 64); assert (~ isequal ([a 2*a], [b 2*b])) ***** xtest % non-equality of vpa that "might be" be integers: Issue #1285 a = vpa ("123", 32); b = vpa ("123", 64); assert (~ logical (a == b)) !!!!! known failure assert (!logical (a == b)) failed ***** xtest % non-equality of vpa that "might be" be integers: Issue #1285 if (pycall_sympy__ ('return Version(spver) >= Version("1.12.1")')) a = vpa ("123", 32); b = vpa ("123", 64); assert (~ isequal (a, b)) end ***** warning vpa ('sqrt(2.0)'); ***** warning a = vpa('2**0.5'); b = vpa(sqrt(sym(2))); assert (isequal (a, b)) ***** test a = vpa('2.3e1'); b = vpa(' 2.3e+1 '); assert (isequal (a, b)) a = vpa('21e-1'); b = vpa('2.1'); assert (isequal (a, b)) ***** test % Issue #859, operations on immutable matrices x = vpa (sym ([1 2])); % If vpa no longer makes an ImmutableDenseMatrix, % may need to adjust or remove this test. assert (~ isempty (strfind (sympy (x), 'Immutable'))) y = sin(x); y2 = [sin(vpa(sym(1))) sin(vpa(sym(2)))]; assert (isequal (y, y2)) 34 tests, 33 passed, 1 known failure, 0 skipped [inst/eulergamma.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/eulergamma.m ***** error catalan (sym(1)) ***** assert (double (eulergamma ()) > 0.577215664901) ***** assert (double (eulergamma ()) < 0.577215664902) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/poly2sym.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/poly2sym.m ***** shared x,y,a,b,c,p syms x y a b c p = x^3 + 2*x^2 + 3*x + 4; ***** assert(isAlways( poly2sym([1 2 3 4]) == p )) ***** assert(isAlways( poly2sym([1 2 3 4],x) == p )) ***** assert(isAlways( poly2sym([1 2 3 4],y) == subs(p,x,y) )) ***** assert(isAlways( poly2sym([1 2 3 4],5) == subs(p,x,5) )) ***** assert(isequal( poly2sym ([1]), 1 )) ***** assert(isequal( poly2sym ([]), 0 )) ***** assert(isAlways( poly2sym(sym([1 2 3 4]),x) == p )) ***** assert(isAlways( poly2sym([a b c],x) == a*x^2 + b*x + c )) ***** assert(isAlways( poly2sym([a b c]) == a*x^2 + b*x + c )) ***** assert(isequal( poly2sym(sym([])), 0 )) ***** assert(isAlways( poly2sym({sym(1) sym(2)}, x) == x + 2 )) ***** assert(isequal( poly2sym ({1}), 1 )) ***** assert(isequal( poly2sym ({}), 0 )) ***** assert(isequal( poly2sym ({1}, x), 1 )) ***** assert(isequal( poly2sym ({}, x), 0 )) ***** assert(isAlways( poly2sym([x x], x) == x^2 + x )) ***** test % mixed cell array with doubles and syms assert (isequal (poly2sym ({2.0 sym(3) int64(4)}), 2*x^2 + 3*x + 4)) ***** test % string for x p = poly2sym ([1 2], 's'); syms s assert (isequal (p, s + 2)) 18 tests, 18 passed, 0 known failure, 0 skipped [inst/catalan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/catalan.m ***** error catalan (sym(1)) ***** assert (double (catalan ()) > 0.915965594177) ***** assert (double (catalan ()) < 0.915965594178) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/findsymbols.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/findsymbols.m ***** test syms x b y n a arlo z = a*x + b*pi*sin (n) + exp (y) + exp (sym (1)) + arlo; s = findsymbols (z); assert (isequal ([s{:}], [a,arlo,b,n,x,y])) ***** test syms x s = findsymbols (x); assert (isequal (s{1}, x)) ***** test syms z x y a s = findsymbols ([x y; 1 a]); assert (isequal ([s{:}], [a x y])) ***** assert (isempty (findsymbols (sym (1)))) ***** assert (isempty (findsymbols (sym ([1 2])))) ***** assert (isempty (findsymbols (sym (nan)))) ***** assert (isempty (findsymbols (sym (inf)))) ***** assert (isempty (findsymbols (exp (sym (2))))) ***** test % empty sym for findsymbols, findsym, and symvar assert (isempty (findsymbols (sym([])))) assert (isempty (findsym (sym([])))) assert (isempty (symvar (sym([])))) ***** test % diff. assumptions make diff. symbols x1 = sym('x'); x2 = sym('x', 'positive'); f = x1*x2; assert (length (findsymbols (f)) == 2) ***** test % symfun or sym syms x f(y) a = f*x; b = f(y)*x; assert (isequal (findsymbols(a), {x y})) assert (isequal (findsymbols(b), {x y})) ***** test % findsymbols on symfun does not find the argnames (unless they % are on the RHS of course, this matches SMT 2014a). syms a x y f(x, y) = a; % const symfun assert (isequal (findsymbols(f), {a})) syms a x y f(x, y) = a*y; assert (isequal (findsymbols(f), {a y})) ***** test % sorts lexicographically, same as symvar *with single input* % (note symvar does something different with 2 inputs). syms A B a b x y X Y f = A*a*B*b*y*X*Y*x; assert (isequal (findsymbols(f), {A B X Y a b x y})) assert (isequal (symvar(f), [A B X Y a b x y])) ***** test % symbols in matpow syms x y syms n A = [sin(x) 2; y 1]; B = A^n; L = findsymbols(B); assert (isequal (L, {n x y})) ***** test % array of eq syms x y assert (isequal (findsymbols (2 == [2 x y]), {x y})) ***** test % array of ineq syms x y A = [x < 1 2*x < y x >= 2 3 <= x x != y]; assert (isequal (findsymbols (A), {x y})) 16 tests, 16 passed, 0 known failure, 0 skipped [inst/pycall_sympy__.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/pycall_sympy__.m ***** test % general test x = 10; y = 6; cmd = '(x,y) = _ins; return (x+y,x-y)'; [a,b] = pycall_sympy__ (cmd, x, y); assert (a == x + y && b == x - y) ***** test % bool assert (pycall_sympy__ ('return True,')) assert (~pycall_sympy__ ('return False,')) ***** test % float assert (abs(pycall_sympy__ ('return 1.0/3,') - 1/3) < 1e-15) ***** test % int r = pycall_sympy__ ('return 123456'); assert (r == 123456) assert (isinteger (r)) ***** test % string x = 'octave'; cmd = 's = _ins[0]; return s.capitalize(),'; y = pycall_sympy__ (cmd, x); assert (strcmp(y, 'Octave')) ***** test % string with escaped newlines, comes back as escaped newlines x = 'a string\nbroke off\nmy guitar\n'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % string with actual newlines, comes back as actual newlines x = sprintf('a string\nbroke off\nmy guitar\n'); y = pycall_sympy__ ('return _ins', x); y2 = strrep(y, sprintf('\n'), sprintf('\r\n')); % windows assert (strcmp(x, y) || strcmp(x, y2)) ***** test % cmd string with newlines, works with cell y = pycall_sympy__ ('return "string\nbroke",'); y2 = sprintf('string\nbroke'); y3 = strrep(y2, sprintf('\n'), sprintf('\r\n')); % windows assert (strcmp(y, y2) || strcmp(y, y3)) ***** test % string with XML escapes x = '<> >< <<>>'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) x = '&'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % strings with double quotes x = 'a\"b\"c'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) x = '\"'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % cmd has double quotes, these must be escaped by user % (of course: she is writing python code) expy = 'a"b"c'; y = pycall_sympy__ ('return "a\"b\"c",'); assert (strcmp(y, expy)) ***** test % strings with quotes x = 'a''b'; % this is a single quote y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % strings with quotes x = '\"a''b\"c''\"d'; y = pycall_sympy__ ('return _ins[0]', x); assert (strcmp(y, x)) ***** test % strings with quotes expy = '"a''b"c''"d'; y = pycall_sympy__ ('s = "\"a''b\"c''\"d"; return s'); assert (strcmp(y, expy)) ***** test % strings with printf escapes x = '% %% %%% %%%% %s %g %%s'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % cmd with printf escapes x = '% %% %%% %%%% %s %g %%s'; y = pycall_sympy__ (['return "' x '",']); assert (strcmp(y, x)) ***** test % cmd w/ backslash and \n must be escaped by user expy = 'a\b\\c\nd\'; y = pycall_sympy__ ('return "a\\b\\\\c\\nd\\",'); assert (strcmp(y, expy)) ***** test % slashes x = '/\\ // \\\\ \\/\\/\\'; z = '/\ // \\ \/\/\'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % slashes z = '/\ // \\ \/\/\'; y = pycall_sympy__ ('return "/\\ // \\\\ \\/\\/\\"'); assert (strcmp(y, z)) ***** test % strings with special chars x = '!@#$^&* you!'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) x = '~-_=+[{]}|;:,.?'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** xtest % string with backtick trouble for system -c (sysoneline) x = '`'; y = pycall_sympy__ ('return _ins', x); assert (strcmp(y, x)) ***** test % unicode s1 = '我爱你'; cmd = 'return u"\u6211\u7231\u4f60",'; s2 = pycall_sympy__ (cmd); assert (strcmp (s1, s2)) ***** test % unicode with \x s1 = '我'; cmd = 'return b"\xe6\x88\x91".decode("utf-8")'; s2 = pycall_sympy__ (cmd); assert (strcmp (s1, s2)) ***** test % unicode with \x and some escaped backslashes s1 = '\我\'; cmd = 'return b"\\\xe6\x88\x91\\".decode("utf-8")'; s2 = pycall_sympy__ (cmd); assert (strcmp (s1, s2)) ***** xtest % unicode passthru s = '我爱你'; s2 = pycall_sympy__ ('return _ins', s); assert (strcmp (s, s2)) s = '我爱你<>\&//\#%% %\我'; s2 = pycall_sympy__ ('return _ins', s); assert (strcmp (s, s2)) ***** xtest % unicode w/ slashes, escapes s = '我<>\&//\#%% %\我'; s2 = pycall_sympy__ ('return "我<>\\&//\\#%% %\\我"'); assert (strcmp (s, s2)) ***** test % list, tuple assert (isequal (pycall_sympy__ ('return [1,2,3],'), {1, 2, 3})) assert (isequal (pycall_sympy__ ('return (4,5),'), {4, 5})) assert (isequal (pycall_sympy__ ('return (6,),'), {6,})) assert (isequal (pycall_sympy__ ('return [],'), {})) ***** test % dict cmd = 'd = dict(); d["a"] = 6; d["b"] = 10; return d,'; d = pycall_sympy__ (cmd); assert (d.a == 6 && d.b == 10) ***** test r = pycall_sympy__ ('return 6'); assert (isequal (r, 6)) ***** test r = pycall_sympy__ ('return "Hi"'); assert (strcmp (r, 'Hi')) ***** test % blank lines, lines with spaces a = pycall_sympy__ ({ '', '', ' ', 'return 6', ' ', ''}); assert (isequal (a, 6)) ***** test % blank lines, strange comment lines cmd = {'a = 1', '', '#', '', '# ', ' #', 'a = a + 2', ' #', 'return a'}; a = pycall_sympy__ (cmd); assert (isequal (a, 3)) ***** test % return empty string (was https://bugs.python.org/issue25270) assert (isempty (pycall_sympy__ ('return ""'))) ***** test % return nothing (via an empty list) % note distinct from 'return [],' pycall_sympy__ ('return []') ***** test % return nothing (because no return command) pycall_sympy__ ('dummy = 1') ***** test % return nothing (because no command) pycall_sympy__ ('') ***** test % return nothing (because no command) pycall_sympy__ ({}) ***** error % python exception while passing variables to python % This tests the "INTERNAL_PYTHON_ERROR" path. % FIXME: this is a very specialized test, relies on internal octsympy % implementation details, and may need to be adjusted for changes. disp('') disp('**********************************************************************') disp('') disp(' Some deliberate AttributeError and ValueError may appear next') disp('') disp('v v v v v v v v v v v v v v v v v v v v v v v v') b = sym([], 'S.This_is_supposed_to_make_an_exception', [1 1], 'Test', 'Test', 'Test'); c = b + 1; ********************************************************************** Some deliberate AttributeError and ValueError may appear next v v v v v v v v v v v v v v v v v v v v v v v v Traceback (most recent call last): File "", line 4, in _ins.append(S.This_is_supposed_to_make_an_exception) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/sympy/core/singleton.py", line 118, in __getattr__ raise AttributeError( "Attribute '%s' was not installed on SymPy registry %s" % ( name, self)) AttributeError: Attribute 'This_is_supposed_to_make_an_exception' was not installed on SymPy registry S ***** test % ...and after the above test, the pipe should still work a = pycall_sympy__ ('return _ins[0]*2', 3); assert (isequal (a, 6)) ***** test % This command does not fail with native interface and '@pyobject' s = warning ('off', 'OctSymPy:pythonic_no_convert'); try q = pycall_sympy__ ({'return type(int)'}); catch msg = lasterror.message; assert (~ isempty (regexp (msg, '.*does not know how to.*'))) end warning (s) disp('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^') disp(' End of deliberate errors!') disp(' You should see "46/46" or "Passes 46 out of 46 tests" below') disp('**********************************************************************') % ...and after the above test, the pipe should still work a = pycall_sympy__ ('return _ins[0]*2', 3); assert (isequal (a, 6)) Traceback (most recent call last): File "", line 2, in octoutput_drv(_outs) ~~~~~~~~~~~~~^^^^^^^ File "", line 12, in octoutput_drv octoutput(x, xroot) ~~~~~~~~~^^^^^^^^^^ File "", line 96, in octoutput raise ValueError("octoutput does not know how to export type " + str(type(x))) ValueError: octoutput does not know how to export type ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ End of deliberate errors! You should see "46/46" or "Passes 46 out of 46 tests" below ********************************************************************** ***** test % complex input [A, B] = pycall_sympy__ ('z = 2*_ins[0]; return (z.real,z.imag)', 3+4i); assert (A, 6) assert (B, 8) ***** test % complex output z = pycall_sympy__ ('return 3+2j'); assert (z, 3+2i) ***** error s = char ('abc', 'defgh', '12345'); r = pycall_sympy__ ('return _ins[0]', s); ***** test r = pycall_sympy__ ('return len(_ins[0])', ''); assert (r == 0) ***** test % ensure the 0x0 matrix in octave gets mapped to the empty list in python % @sym/subsasgn currently replies on this behaviour assert (pycall_sympy__ ('return _ins[0] == []', [])); ***** test % ensure the empty string gets mapped to the empty string in python assert (pycall_sympy__ ('return _ins[0] == ""', '')); 46 tests, 46 passed, 0 known failure, 0 skipped [inst/heaviside.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/heaviside.m ***** assert (heaviside (0) == 0.5) ***** assert (isnan (heaviside (nan))) ***** assert (isequal (heaviside ([-inf -eps 0 eps inf]), [0 0 0.5 1 1])) ***** assert (isequaln (heaviside ([-1 1 nan]), [0 1 nan])) ***** assert (heaviside (0, 1) == 1) ***** error heaviside (1i) ***** assert (isa (heaviside (single (0)), 'single')) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/syms.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/syms.m ***** test %% assumptions syms x real x2 = sym('x', 'real'); assert (isequal (x, x2)) ***** test % assumptions and clearing them on a symbol syms x real assert (~isempty (assumptions (x))) syms x assert (isempty (assumptions (x))) ***** test % Note SMT would clear syms in existing expressions syms x real f = {x {2*x} cos(x/2)}; assert (~isempty (assumptions (f))) syms x % but we do not: this would have to toggle for pure SMT compat assert (~isempty (assumptions (f))) % assert (isempty (assumptions (f))) ***** error syms x clear ***** error syms x positive y ***** error % this sometimes catches typos or errors in assumption names % (if you need careful checking, use sym not syms) syms x positive evne ***** error syms positive integer ***** test % does not create a variable called positive syms x positive integer assert (logical(exist('x', 'var'))) assert (~logical(exist('positive', 'var'))) ***** test % Issue #885 syms S(x) I(x) O(x) ***** test % Issue #290 syms FF(x) syms ff(x) syms Eq(x) ***** test % Issue #290 syms beta(x) ***** test syms x real syms f(x) assert (~ isempty (assumptions (x))) ***** test syms x real f(x) = symfun(sym('f(x)'), x); assert (~ isempty (assumptions (x))) assert (~ isempty (assumptions (argnames (f)))) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/cell2sym.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/cell2sym.m ***** test A = {1 2 3; 4 5 6}; B = [1 2 3; 4 5 6]; assert (isequal (cell2sym(A), sym(B))) ***** test A = {'a' 'b'; 'c' 10}; B = [sym('a') sym('b'); sym('c') sym(10)]; assert (isequal (cell2sym(A), B)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/assumptions.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/assumptions.m ***** test syms x assert(isempty(assumptions(x))) ***** test x = sym('x', 'positive'); a = assumptions(x); assert(~isempty(strfind(a{1}, 'positive'))) ***** test syms x assert(isempty(assumptions(x))) ***** test clear variables % for matlab test script syms x positive assert(~isempty(assumptions())) clear x assert(isempty(assumptions())) ***** test % make sure we have at least these possible assumptions A = {'real' 'positive' 'negative' 'integer' 'even' 'odd' 'rational'}; B = assumptions('possible'); assert (isempty (setdiff(A, B))) ***** test A = assumptions('possible'); for i = 1:length(A) x = sym('x', A{i}); a = assumptions(x); assert(strcmp(a{1}, ['x: ' A{i}] )) s1 = sympy (x); s2 = ['Symbol(''x'', ' A{i} '=True)']; assert (strcmp (s1, s2)) end ***** test syms x positive syms y real syms z f = x*y*z; a = assumptions(f); assert(length(a) == 2) assert(~isempty(strfind(a{1}, 'positive'))) assert(~isempty(strfind(a{2}, 'real'))) ***** test % dict output syms x positive syms y real syms z f = x*y*z; [v, d] = assumptions(f, 'dict'); assert(length(v) == 2) assert(iscell(v)) assert(isa(v{1}, 'sym')) assert(isa(v{2}, 'sym')) assert(length(d) == 2) assert(iscell(d)) assert(isstruct(d{1})) assert(isstruct(d{2})) ***** test %% assumptions on just the vars in an expression clear variables % for matlab test script syms x y positive f = 2*x; assert(length(assumptions(f))==1) assert(length(assumptions())==2) ***** test %% assumptions in cell/struct clear variables % for matlab test script syms x y z w positive f = {2*x [1 2 y] {1, {z}}}; assert(length(assumptions())==4) assert(length(assumptions(f))==3) clear x y z w assert(length(assumptions())==3) assert(length(assumptions(f))==3) ***** test % multiple assumptions n = sym('n', 'negative', 'even'); assert (logical (n < 0)) assert (~(logical (n > 0))) assert (~(logical (n == -1))) ***** test % multiple assumptions: eqn neither true nor false n = sym('n', 'negative', 'even'); assert (~isequal (n, sym(true)) && ~isequal (n, sym(false))) ***** test %% TODO: rewrite later with https://github.com/gnu-octave/symbolic/issues/622 a = pycall_sympy__ ('return Symbol("a", real=False)'); assert (strcmp (assumptions (a), {'a: ~real'})) 13 tests, 13 passed, 0 known failure, 0 skipped [inst/@symfun/formula.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/formula.m ***** test % simple syms x f(x) = sin(x); g = formula(f); assert (isequal (g, sin(x))); ***** test % concrete: return is a sym, not a symfun syms x f(x) = sin(x); g = formula(f); assert (~isa(g, 'symfun')); ***** test % abstract: return is a sym, not a symfun syms f(x) g = formula(f); assert (~isa(g, 'symfun')); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@symfun/symvar.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/symvar.m ***** test % basic syms f(t, s) assert (isempty (symvar (f, 0))) assert (isequal (symvar (f, 1), t)) assert (isequal (symvar (f, 2), [t s])) assert (isequal (symvar (f, 3), [t s])) ***** test % note preference for vars of symfun, if n requested syms x f(y) assert (isequal (symvar(f*x, 1), y)) assert (isequal (symvar(f(y)*x, 1), x)) ***** test % symfun, checked smt syms x f(y) a = f*x; b = f(y)*x; assert (isequal (symvar(a), [x y])) assert (isequal (symvar(b), [x y])) ***** test % preference for the explicit variables syms a x f(t, s) h = f*a + x; assert (isequal (symvar (h, 1), t)) assert (isequal (symvar (h, 2), [t s])) assert (isequal (symvar (h, 3), [t s x])) assert (isequal (symvar (h, 4), [t s x a])) assert (isequal (symvar (h, 5), [t s x a])) assert (isequal (symvar (h), [a s t x])) ***** test % symfun dep on some vars only, matches smt w/ n syms x s t f(s) = x; g(s, t) = x*s; assert (isequal (symvar(f, 1), s)) assert (isequal (symvar(f, 2), [s x])) assert (isequal (symvar(g, 1), s)) assert (isequal (symvar(g, 2), [s t])) assert (isequal (symvar(g, 3), [s t x])) ***** test % A documented difference from SMT on symvar(symfun) w/o n syms x s t f(s) = x; g(s, t) = x*s; % SMT would have %assert (isequal (symvar(f), x)) % no s %assert (isequal (symvar(g), [s x])) % no t assert (isequal (symvar(f), [s x])) assert (isequal (symvar(g), [s t x])) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@symfun/argnames.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/argnames.m ***** test % basic test syms f(x) assert (isequal (argnames (f), x)) ***** test % Multiple variables, abstract symfun syms f(t, x, y) assert (isequal (argnames (f), [t x y])) ***** test % Concrete symfun syms x y z t f(t, x, y) = x + y + z; assert (isequal (argnames (f), [t x y])) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@symfun/minus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/minus.m ***** test syms x f(x) = x^2; assert( isa(f - f, 'symfun')) assert( isa(f - x, 'symfun')) ***** test % Octave bug #42735 fixed in 4.4.2 syms x f(x) = x^2; g = x^2; h = x - f; assert (isa (h, 'symfun') && isequal (formula (h), x - g)) h = x + f; assert (isa (h, 'symfun') && isequal (formula (h), x + g)) h = x * f; assert (isa (h, 'symfun') && isequal (formula (h), x * g)) h = x / f; assert (isa (h, 'symfun') && isequal (formula (h), x / g)) h = x ^ f; assert (isa (h, 'symfun') && isequal (formula (h), x ^ g)) h = x .* f; assert (isa (h, 'symfun') && isequal (formula (h), x .* g)) h = x ./ f; assert (isa (h, 'symfun') && isequal (formula (h), x ./ g)) h = x .^ f; assert (isa (h, 'symfun') && isequal (formula (h), x .^ g)) ***** test % different variables syms x y f(x) = 2*x; g(y) = sin(y); h = f - g(x); assert( isa(h, 'symfun')) assert( isequal (argnames (h), argnames (f))) assert (isequal (formula (h), 2*x - sin(x))) % and even if rh-sym has a dummy variable: h = f - g(y); assert( isa(h, 'symfun')) assert( isequal (argnames (h), argnames(f))) assert (isequal (formula (h), 2*x - sin(y))) ***** test % different variables, f has more syms x y f(x,y) = 2*x*y; g(y) = sin(y); h = f - g(y) + g(x); assert( isa(h, 'symfun')) assert( isequal (argnames (h), argnames (f))) assert (isequal (formula (h), 2*x*y - sin(y) + sin(x))) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@symfun/isequal.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/isequal.m ***** error isequal (symfun('x + 1', x)) ***** test syms x y f(x) = 2*x; g(x) = 2*x; assert (isequal (f, g)) ***** test syms x f(x) = 2*x + 1; g(x) = 2*x + 1; h(x) = 2*x + 1; assert (isequal (f, g, h)) ***** test syms x f(x) = 2*x + 1; g(x) = 2*x + 1; h(x) = 2*x; assert (~ isequal (f, g, h)) ***** test syms x y f(x) = 2*x; g(x, y) = 2*x; assert (~ isequal (f, g)) ***** test syms x y f(x) = symfun(nan, x); g(x) = symfun(nan, x); assert (~ isequal (f, g)) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@symfun/ldivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/ldivide.m ***** test syms x f(x) = x^2; assert( isa(f .\ f, 'symfun')) assert( isa(f .\ x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/mldivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mldivide.m ***** test syms x f(x) = x^2; assert( isa(f\f, 'symfun')) assert( isa(f\x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/power.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/power.m ***** test syms x f(x) = 2*x; h = f.^f; assert( isa(h, 'symfun')) assert (isequal (formula (h), (2*x)^(2*x))) ***** test syms x f(x) = [x 2*x]; h = f.^[x 3]; assert( isa(h, 'symfun')) assert (isequal (formula (h), [x^x 8*x^3])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/mrdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mrdivide.m ***** test syms x f(x) = x^2; assert( isa(f/f, 'symfun')) assert( isa(f/x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/size.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/size.m ***** test syms x f(x) = x; d = size(f); assert (isequal (d, [1 1])) [n, m] = size(f); assert (isequal ([n m], [1 1])) assert (size(f, 1) == 1) assert (size(f, 2) == 1) ***** test syms x f(x) = [1 x]; d = size(f); assert (isequal (d, [1 1])) [n, m] = size(f); assert (isequal ([n m], [1 1])) assert (size(f, 1) == 1) assert (size(f, 2) == 1) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/uminus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/uminus.m ***** test % Issue #447 syms x f(x) = x^2; assert (isa (-f, 'symfun')) ***** test syms f(x) h = -f; assert (isa (h, 'symfun')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/isequaln.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/isequaln.m ***** error isequaln (symfun('x + 1', x)) ***** test syms x y f(x) = 2*x; g(x) = 2*x; assert (isequaln (f, g)) ***** test syms x f(x) = 2*x + 1; g(x) = 2*x + 1; h(x) = 2*x + 1; assert (isequaln (f, g, h)) ***** test syms x f(x) = 2*x + 1; g(x) = 2*x + 1; h(x) = 2*x; assert (~ isequaln (f, g, h)) ***** test syms x y f(x) = 2*x; g(x, y) = 2*x; assert (~ isequaln (f, g)) ***** test syms x y f(x) = symfun(nan, x); g(x) = symfun(nan, x); assert (isequaln (f, g)) ***** test syms x y f(x) = symfun(nan, x); g(x, y) = symfun(nan, x); assert (~ isequaln (f, g)) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@symfun/plus.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/plus.m ***** test syms x f(x) = x^2; assert( isa(f + f, 'symfun')) assert( isa(f + x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/subsref.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/subsref.m ***** test syms x f(x) = x^2; v = f.vars; assert(iscell(v)) assert(length(v)==1) assert(isequal(v{1},x)) ***** test %% pass through to sym properties syms x f(x) = x^2; y = x^2; % not a symfun assert(strcmp(f.flat, y.flat)) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/numel.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/numel.m ***** test syms x f(x) = x^2; assert(numel(f)==1) ***** test syms x f(x) = [1 x]; assert(numel(f)==1) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/symfun.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/symfun.m ***** error symfun (1, sym('x'), 3) ***** error symfun ('f', sym('x')) ***** test syms x y syms f(x) assert(isa(f,'symfun')) clear f f(x,y) = sym('f(x,y)'); assert(isa(f,'symfun')) ***** test % symfuns are syms as well syms x f(x) = 2*x; assert (isa (f, 'symfun')) assert (isa (f, 'sym')) assert (isequal (f(3), 6)) assert (isequal (f(sin(x)), 2*sin(x))) ***** test syms x y f = symfun(sym('f(x)'), {x}); assert(isa(f, 'symfun')) f = symfun(sym('f(x,y)'), [x y]); assert(isa(f, 'symfun')) f = symfun(sym('f(x,y)'), {x y}); assert(isa(f, 'symfun')) ***** test % rhs is not sym syms x f = symfun(8, x); assert (isa (f,'symfun')) assert (isequal (f(10), sym(8))) ***** test % vector symfun syms x y F(x,y) = [1; 2*x; y; y*sin(x)]; assert (isa (F, 'symfun')) assert (isa (F, 'sym')) assert (isequal (F(sym(pi)/2,4) , [sym(1); sym(pi); 4; 4] )) ***** test x = sym('x'); y = sym('y'); f(x) = sym('f(x)'); g(x,y) = sym('g(x,y)'); % make sure these don't fail f(1); g(1,2); g(x,y); diff(g, x); diff(g, y); ***** test % defining 1D symfun in terms of a 2D symfun syms x y t syms 'g(x,y)' f(t) = g(t,t); f(5); assert (length (argnames (f)) == 1) assert (isequal (argnames (f), t)) assert (isequal( formula(diff(f,x)), sym(0))) ***** test % replace g with shorter and specific fcn syms x g(x) g; g(x) = 2*x; assert( isequal (g(5), 10)) ***** test % octave <= 3.8 needs quotes on 2D symfuns, so make sure it works syms x y syms 'f(x)' syms 'g(x,y)' assert (isa (f, 'symfun')) assert (isa (g, 'symfun')) ***** test % Bug #41: Octave <= 3.8 parser fails without quotes around 2D fcn syms x y eval('syms g(x,y)') assert (isa (g, 'symfun')) ***** test % and these days it works without eval trick syms g(x,y) assert (isa (g, 'symfun')) ***** test % syms f(x) without defining x clear x syms f(x) assert(isa(f, 'symfun')) assert(isa(x, 'sym')) ***** test % SMT compat: symfun indep var overwrites existing var t = 6; syms f(t) assert (logical (t ~= 6)) ***** test % SMT compat: symfun indep var overwrites existing var, even if sym syms x t = x; syms f(t) assert (~ logical (t == x)) ***** test syms x y f(x) = x^2; g(x,y) = sym('g(x,y)'); f2 = 2*f; assert( isequal (f2(4), 32)) assert( isa(f2, 'symfun')) assert( isa(2*g, 'symfun')) assert( isa(0*g, 'symfun')) % in SMT, this is the zero symfun ***** test % syms has its own parsing code, check it works syms f(x,y) g = f; syms f(x, y) assert (isequal (f, g)) syms 'f( x, y )' assert (isequal (f, g)) ***** test % syms own parsing code should not reorder the vars syms f(y, x) v = argnames (f); assert (isequal (v(1), y) && isequal (v(2), x)) ***** test % assignment of symfun to symfun, issue #189 syms t x(t) = 2*t; y(t) = x; assert (isa (y, 'symfun')) y = symfun(x, t); assert (isa (y, 'symfun')) % others y = x; assert (isa (y, 'symfun')) y(t) = x(t); assert (isa (y, 'symfun')) ***** test % assignment of generic symfun to symfun syms t x(t) y(t) = x; assert (isa (y, 'symfun')) y = symfun(x, t); assert (isa (y, 'symfun')) ***** error % Issue #444: invalid args syms x f(x, x) = 2*x; ***** error % Issue #444: invalid args syms x y f(x, y, x) = x + y; ***** error % Issue #444: invalid args syms x y f(x, y, x) = x + y; ***** error % Issue #444: expression as arg syms x f(2*x) = 4*x; 25 tests, 25 passed, 0 known failure, 0 skipped [inst/@symfun/rdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/rdivide.m ***** test syms x f(x) = x^2; assert( isa(f./f, 'symfun')) assert( isa(f./[x x^2], 'symfun')) ***** test syms x f(x) = [x 2*x]; h = f./[x 2]; assert( isa(h, 'symfun')) assert (isequal (formula (h), [1 x])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/mpower.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mpower.m ***** test syms x f(x) = 2*x; h = f^f; assert( isa(h, 'symfun')) assert (isequal (formula (h), (2*x)^(2*x))) h = f^sym(2); assert( isa(h, 'symfun')) assert (isequal (formula (h), 4*x^2)) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/private_disp_name.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/private_disp_name.m ***** test syms f(x) s = private_disp_name(f, 'f'); assert (strcmp (s, 'f(x)')) ***** test syms x y g(y, x) = x + y; s = private_disp_name(g, 'g'); assert (strcmp (s, 'g(y, x)')) ***** test syms f(x) assert (isempty (private_disp_name(f, ''))) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@symfun/int.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/int.m ***** test % indefinite integral of symfun gives symfun syms x f(x) = x^2; g = int(f); assert (isa(g, 'symfun')) g = int(f, x); assert (isa(g, 'symfun')) ***** test % indefinite integral of abstract symfun gives symfun syms f(x) g = int(f); assert (isa(g, 'symfun')) g = int(f, x); assert (isa(g, 'symfun')) ***** test % definite integral does not give symfun syms x f(x) = x^2; g = int(f, x, 0, 2); assert (isa(g, 'sym')) assert (~isa(g, 'symfun')) ***** test % ... even if it has a variable in it syms x t f(x) = x; g = int(f, x, 0, t); assert (isa(g, 'sym')) assert (~isa(g, 'symfun')) ***** test % ... even if the input is abstract function syms f(x) g = int(f, x, 0, 2); assert (isa(g, 'sym')) assert (~isa(g, 'symfun')) ***** test % symfun in x, integrated in y gives symfun still in x % (SMT does this too). syms f(x) y g = int(f, y); assert (isa (g, 'symfun')) assert (isequal (argnames (g), x)) ***** test % same as above, but concrete symfun syms x y f(x) = x^2; g = int(f, y); assert (isa (g, 'symfun')) assert (isequal (argnames (g), x)) assert (isequal (formula(g), x^2*y)) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@symfun/times.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/times.m ***** test syms x f(x) = x^2; assert( isa(f .* f, 'symfun')) assert( isa(f .* x, 'symfun')) ***** test syms x f(x) = [x 2*x]; h = f.*[x 3]; assert( isa(h, 'symfun')) assert (isequal (formula (h), [x^2 6*x])) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@symfun/mtimes.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mtimes.m ***** test syms x f(x) = x^2; assert( isa(f * f, 'symfun')) assert( isa(f * x, 'symfun')) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@symfun/diff.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/diff.m ***** test % concrete fcn syms x f(x) = x*x; g(x) = 2*x; assert (logical (diff(f) == g)) assert (isa (diff(f), 'symfun')) ***** test % abstract fcn syms y(x) assert (logical (diff(y) == diff(y(x)))) assert (isa (diff(y), 'symfun')) 2 tests, 2 passed, 0 known failure, 0 skipped [inst/finiteset.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/finiteset.m ***** test s1 = finiteset(sym(1), 2, 2); s2 = finiteset(sym(1), 2, 2, 2); assert (isequal (s1, s2)) ***** test s1 = finiteset(sym(0), 1); s2 = finiteset(sym(0), 2, 3); s = finiteset(sym(0), 1, 2, 3); assert (isequal (s1 + s2, s)) ***** test e = finiteset(); s = finiteset(sym(1)); s2 = e + s; assert (isequal (s, s2)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@double/euler.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/euler.m ***** error euler (1, 2, 3) ***** error euler ([1 2], [1 2 3]) ***** error euler ([1 2], [1; 2]) ***** assert (isequal (euler (0), 1)) ***** assert (isequal (euler (1), 0)) ***** assert (isequal (euler (10), -50521)) ***** test n = sym(88); m = 88; A = euler (m); B = double (euler (n)); assert (A, B, -eps); ***** test m = [0 1; 2 4]; n = sym(m); A = euler (m); B = double (euler (n)); assert (isequal (A, B)); ***** test y = sym(19)/10; n = sym(2); x = 1.9; m = 2; A = euler (m, x); B = double (euler (n, y)); assert (A, B, -eps); ***** test % correct behaviour at floating point infinity assert (isequal (euler (4, inf), inf)) assert (isequal (euler (4, -inf), inf)) assert (isequal (euler (3, inf), inf)) assert (isequal (euler (3, -inf), -inf)) ***** test assert (isnan (euler(3, nan))) assert (isnumeric (euler(3, nan))) ***** test % maple, complex input A = 113.33970046079423204 - 46.991080726974811540i; B = euler(7, 2.12345 + 1.23i); assert (A, B, -eps); ***** test % maple, complex input, large m, small x A = 0.18034673393294025238e276 + 0.27756266681280689172e276*i; B = euler (200, 0.123+0.234i); assert (A, B, -eps); ***** test % x matrix, m scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; n = sym(2); x = double (y); m = 2; A = euler (m, x); B = double (euler (n, y)); assert (A, B, -eps); ***** test % m matrix, x scalar m = [1 2 3; 4 5 6]; n = sym(m); y = sym(21)/10; x = 2.1; A = euler (m, x); B = double (euler (n, y)); assert (A, B, -3*eps); 15 tests, 15 passed, 0 known failure, 0 skipped [inst/@double/sinhint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/sinhint.m ***** error sinhint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = sinhint (x); B = double (sinhint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = sinhint (x); B = double (sinhint (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Shi(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 0.45769171128668800567 + 1.8332099215048436239*1i 0.60888490416819746440 + 1.2482232175376056201*1i 0.13577763724269399110e42 1.6583475942188740493*1i -0.00010000000005553888891 + 0.10000000016666111119e-5*1i -0.74701205140887967022e7 - 0.10381447401236722090e8*1i ]; B = sinhint (x); assert (A, B, -eps) ***** assert (sinhint (inf), inf) ***** assert (sinhint (-inf), -inf) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/pochhammer.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/pochhammer.m ***** error pochhammer (1) ***** error pochhammer (1, 2, 3) ***** error pochhammer ([1 2], [1 2 3]) ***** error pochhammer ([1 2], [1; 2]) ***** test y = sym(11)/10; t = sym(3); x = 1.1; s = 3; A = pochhammer (x, s); B = double (pochhammer (y, t)); assert (A, B, -2*eps); ***** test % maple A = 256.798558090310131720; B = pochhammer (18.1, 1.9); assert (A, B, -20*eps) ***** test % maple, complex inputs> A = 2.67921619474318221972 + 1.96716724764630702653*1i; B = pochhammer (12.1+3.1*i, 0.5+0.2i); assert (A, B, -4*eps); ***** test % maple, matrix inputs A = [5.61467232547723663908 20.6144884613920190965]; B = pochhammer ([0.9 0.8], [3.1 4.2]); assert (A, B, -3*eps); ***** test % x matrix, s scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; t = sym(2); x = double (y); s = 2; A = pochhammer (s, x); B = double (pochhammer (t, y)); assert (A, B, -3*eps); ***** test % s matrix, x scalar t = [1 2 sym(pi); exp(sym(1)) 5 6]; y = sym(2); s = double (t); x = 2; A = pochhammer (s, x); B = double (pochhammer (t, y)); assert (A, B, -5*eps); 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@double/sinint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/sinint.m ***** error sinint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = sinint (x); B = double (sinint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = sinint (x); B = double (sinint (y)); assert (A, B, -4*eps); ***** assert (sinint (0), 0) ***** assert (sinint (inf), pi/2) ***** assert (sinint (-inf), -pi/2) ***** assert (sinint (1), 0.9460830703671830149414, -2*eps) ***** assert (sinint (-1), -0.9460830703671830149414, -2*eps) ***** assert (sinint (pi), 1.851937051982466170361, -2*eps) ***** assert (sinint (-pi), -1.851937051982466170361, -2*eps) ***** assert (sinint (300), 1.5708810882137495193, -2*eps) ***** assert (sinint (1e4), 1.5708915453859619157, -2*eps) ***** assert (sinint (20i), 1.2807826332028294459e7*1i, -2*eps) ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Si(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 1.6782404878293681180 + 2.0396845546022061045*1i -18.154174221650281533 + 1.6146414539230479060*1i 1.5622254668890562934 1246.1144901994233444*1i -0.000099999999944461111128 + 0.99999999833338888972e-6*1i -1.5386156269726011209 - 0.053969388020443786229*1i ]; B = sinint (x); assert (A, B, -eps) 14 tests, 14 passed, 0 known failure, 0 skipped [inst/@double/adjoint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/adjoint.m ***** test M = [1 2; 3 4]; A = [4 -2; -3 1]; assert (isequal (adjoint (M), A)); ***** test assert (isequal (adjoint (42), 1)); 2 tests, 2 passed, 0 known failure, 0 skipped [inst/@double/polylog.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/polylog.m ***** error polylog (1) ***** error polylog (1, 2, 3) ***** error polylog ([1 2], [1 2 3]) ***** error polylog ([1 2], [1; 2]) ***** test y = sym(11)/10; t = sym(2); x = 1.1; s = 2; A = polylog (s, x); B = double (polylog (t, y)); assert (A, B, -eps); ***** test % maple A = 2.3201804233130983964 - 3.4513922952232026614*1i; B = polylog (2, 3); assert (A, B, -eps) ***** test % maple, complex inputs A = -11.381456201167411758 + 6.2696695219721651947*1i; B = polylog (1+2i, 3+4i); assert (A, B, -eps); ***** test % maple, matrix inputs A1 = 0.47961557317612748431 - 0.52788287823025778869*1i; A2 = -0.0049750526563452645369 - 0.024579343612396884851*1i; B = polylog ([-1-2i -3], [30+40i 40i]); assert ([A1 A2], B, -eps); ***** test % x matrix, s scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; t = sym(2); x = double (y); s = 2; A = polylog (s, x); B = double (polylog (t, y)); assert (A, B, -eps); ***** test % s matrix, x scalar t = [1 2 sym(pi); exp(sym(1)) 5 6]; y = sym(2); s = double (t); x = 2; A = polylog (s, x); B = double (polylog (t, y)); assert (A, B, -eps); 10 tests, 10 passed, 0 known failure, 0 skipped [inst/@double/harmonic.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/harmonic.m ***** error harmonic (1, 2) ***** test x = 1.1; y = sym(11)/10; A = harmonic (x); B = double (harmonic (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = harmonic (x); B = double (harmonic (y)); assert (A, B, -4*eps); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@double/fresnels.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/fresnels.m ***** error fresnels (1, 2) ***** test x = 1.1; y = sym(11)/10; A = fresnels (x); B = double (fresnels (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = fresnels (x); B = double (fresnels (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(FresnelS(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 36.725464883991438430 + 15.587751104404587334*1i 0.12213736710980573217e13 - 0.47688568479924574726e12*1i 0.49681690114783755327 -0.46816997858488224040*1i -0.52344169596561937423e-12 + 0.15707439669173367248e-13*1i 0.75738824160998910399e24 + 0.15391592966931193100e26*1i ]; B = fresnels (x); assert (A, B, -eps) ***** assert (fresnels (inf), 0.5) ***** assert (fresnels (-inf), -0.5) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/coshint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/coshint.m ***** error coshint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = coshint (x); B = double (coshint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = coshint (x); B = double (coshint (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Chi(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 0.58447599687824767874 + 1.8682915044330306402*1i -0.63131069034703116988 + 1.8986171211850702957*1i 0.13577763724269399110e42 -0.045456433004455372635 + 1.5707963267948966192*1i -8.6330747070747332203 + 3.1315929868531280002*1i 0.74701205140887966531e7 + 0.10381444259644068585e8*1i ]; B = coshint (x); assert (A, B, -eps) ***** assert (coshint (inf), inf) ***** assert (isinf (coshint (-inf))) ***** assert (imag (coshint (-inf)), pi) 7 tests, 7 passed, 0 known failure, 0 skipped [inst/@double/chebyshevU.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/chebyshevU.m ***** error chebyshevU (1) ***** error chebyshevU (1, 2, 3) ***** error chebyshevU ([1 2], [1 2 3]) ***** error chebyshevU ([1 2], [1; 2]) ***** test y = sym(11)/10; t = sym(2); x = 1.1; s = 2; A = chebyshevU (s, x); B = double (chebyshevU (t, y)); assert (A, B, -2*eps); ***** test % maple A = 1.661891066691338157; B = chebyshevU (18.1, 0.9); assert (A, B, -3*eps) ***** test % maple, complex inputs> % ChebyshevU(12.1+3.1*I, 0.5+0.2*I); A = 1.046959313670290818 - 0.03386773634958834846*1i; B = chebyshevU (12.1+3.1*i, 0.5+0.2i); assert (A, B, -3*eps); ***** test % maple, matrix inputs A = [2.2543638828875776000 -1.3872651600553574400]; B = chebyshevU ([16 17], [0.9 0.8]); assert (A, B, -10*eps); ***** test % x matrix, s scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; t = sym(2); x = double (y); s = 2; A = chebyshevU (s, x); B = double (chebyshevU (t, y)); assert (A, B, -eps); ***** test % s matrix, x scalar t = [1 2 sym(pi); exp(sym(1)) 5 6]; y = sym(2); s = double (t); x = 2; A = chebyshevU (s, x); B = double (chebyshevU (t, y)); assert (A, B, -2*eps); ***** xtest % https://github.com/fredrik-johansson/mpmath/issues/469 assert (chebyshevU (4, inf), inf) assert (chebyshevU (4, -inf), inf) assert (chebyshevU (3, inf), inf) assert (chebyshevU (3, -inf), -inf) !!!!! known failure ASSERT errors for: assert (chebyshevU (4, inf),inf) Location | Observed | Expected | Reason () 5 Inf 'Inf' mismatch 11 tests, 10 passed, 1 known failure, 0 skipped [inst/@double/cosint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/cosint.m ***** error cosint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = cosint (x); B = double (cosint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = cosint (x); B = double (cosint (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Ci(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 2.0302963932917216378 - 0.15190715517585688438*1i 1.6153896382910774851 + 19.725754055338264980*1i -0.0051488251426104921444 1246.1144860424544147 + 1.5707963267948966192*1i -8.6330747120742332203 + 3.1315929869531280002*1i 0.069822228467306149311 - 3.1184744625477294643*1i ]; B = cosint (x); assert (A, B, -eps) ***** xtest % is it nan or -inf? SymPy says zoo. assert (isnan (cosint (0))) !!!!! known failure assert (isnan (cosint (0))) failed ***** assert (cosint (inf), 0) ***** assert (cosint (-inf), pi*1i, -eps) ***** assert (cosint (1), 0.33740392290096813466, -eps) ***** assert (cosint (-1), 0.33740392290096813466 + pi*1i, -eps) ***** assert (cosint (pi), 0.073667912046425485978, -5*eps) ***** assert (cosint (-pi), 0.07366791204642548597821 + pi*1i, -5*eps) ***** assert (cosint (300), -3.3321999185921117800e-3, -2*eps) ***** assert (cosint (1e4), -3.0551916724485212665e-5, -2*eps) ***** assert (cosint (1 + 1i), 0.8821721805559363250506+0.2872491335199559395273*1i, eps) ***** assert (cosint (1i), 0.8378669409802082408947 + pi/2*1i, -2*eps) ***** test % compare both sinint and cosint to expint x = pi; C1 = cosint (x); S1 = sinint (x); R = expint (1i*x); C2 = -real (R); S2 = imag (R) + pi/2; assert (C1, C2, -100*eps); assert (S1, S2, -100*eps); 16 tests, 15 passed, 1 known failure, 0 skipped [inst/@double/chebyshevT.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/chebyshevT.m ***** error chebyshevT (1) ***** error chebyshevT (1, 2, 3) ***** error chebyshevT ([1 2], [1 2 3]) ***** error chebyshevT ([1 2], [1; 2]) ***** test y = sym(11)/10; t = sym(2); x = 1.1; s = 2; A = chebyshevT (s, x); B = double (chebyshevT (t, y)); assert (A, B, -2*eps); ***** test % maple A = -0.304681164165948269030369; B = chebyshevT (18.1, 0.9); assert (A, B, -10*eps) ***** test % maple, complex inputs % ChebyshevT(12.1+3.1*I, 0.5+0.2*I); A = 0.637229289490379273451 - 0.475324703778957991318*1i; B = chebyshevT (12.1+3.1*i, 0.5+0.2i); assert (A, B, -5*eps); ***** test % maple, matrix inputs A = [0.59523064198266880000 0.57727442996887552000]; B = chebyshevT ([16 17], [0.9 0.7]); assert (A, B, -10*eps); ***** test % x matrix, s scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; t = sym(2); x = double (y); s = 2; A = chebyshevT (s, x); B = double (chebyshevT (t, y)); assert (A, B, -eps); ***** test % s matrix, x scalar t = [1 2 sym(pi); exp(sym(1)) 5 6]; y = sym(2); s = double (t); x = 2; A = chebyshevT (s, x); B = double (chebyshevT (t, y)); assert (A, B, -eps); ***** xtest % https://github.com/fredrik-johansson/mpmath/issues/469 assert (chebyshevT (4, inf), inf) assert (chebyshevT (4, -inf), inf) assert (chebyshevT (3, inf), inf) assert (chebyshevT (3, -inf), -inf) !!!!! known failure ASSERT errors for: assert (chebyshevT (4, inf),inf) Location | Observed | Expected | Reason () 1 Inf 'Inf' mismatch 11 tests, 10 passed, 1 known failure, 0 skipped [inst/@double/fresnelc.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/fresnelc.m ***** error fresnelc (1, 2) ***** test x = 1.1; y = sym(11)/10; A = fresnelc (x); B = double (fresnelc (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = fresnelc (x); B = double (fresnelc (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(FresnelC(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 16.087871374125480424 - 36.225687992881650217*1i 0.47688568479874574722e12 + 0.12213736710985573216e13*1i 0.49999989867881789756 0.49989869420551572361*1i -0.000099999999999999997535 + 0.99999999999999987665e-6*1i 0.15391592966931193100e26 - 0.75738824160998910388e24*1i ]; B = fresnelc (x); assert (A, B, -eps) ***** assert (fresnelc (inf), 0.5) ***** assert (fresnelc (-inf), -0.5) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/bernoulli.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/bernoulli.m ***** error bernoulli (1, 2, 3) ***** error bernoulli ([1 2], [1 2 3]) ***** error bernoulli ([1 2], [1; 2]) ***** assert (bernoulli (0), 1) ***** assert (bernoulli (3), 0) ***** test % two different definitions in literature assert (abs (bernoulli (1)), 0.5, -eps) ***** xtest % we want to use B_1 = 1/2, possible with a version-specific filter assert (bernoulli (1), 0.5, -eps) !!!!! known failure ASSERT errors for: assert (bernoulli (1),0.5,-eps) Location | Observed | Expected | Reason () -0.5 0.5 Rel err 2 exceeds tol 2.2204e-16 by 2 ***** test n = sym(88); m = 88; A = bernoulli (m); B = double (bernoulli (n)); assert (A, B, -eps); ***** test m = [0 2; 3 4]; n = sym(m); A = bernoulli (m); B = double (bernoulli (n)); assert (isequal (A, B)); ***** test y = sym(19)/10; n = sym(2); x = 1.9; m = 2; A = bernoulli (m, x); B = double (bernoulli (n, y)); assert (A, B, -eps); ***** test assert (isequal (bernoulli (4, inf), inf)) assert (isequal (bernoulli (4, -inf), inf)) ***** xtest % still broken? assert (isequal (bernoulli (3, inf), inf)) assert (isequal (bernoulli (3, -inf), -inf)) ***** test assert (isnan (bernoulli(3, nan))) assert (isnumeric (bernoulli(3, nan))) ***** test % maple, complex input A = 34.21957245745810513 - 130.0046256649829101i; B = bernoulli(7, 2.123 + 1.234i); assert (A, B, -5*eps); ***** test % x matrix, m scalar y = [1 2 sym(pi); exp(sym(1)) 5 6]; n = sym(2); x = double (y); m = 2; A = bernoulli (m, x); B = double (bernoulli (n, y)); assert (A, B, -eps); ***** test % m matrix, x scalar m = [1 2 3; 4 5 6]; n = sym(m); y = sym(21)/10; x = 2.1; A = bernoulli (m, x); B = double (bernoulli (n, y)); assert (A, B, -3*eps); 16 tests, 15 passed, 1 known failure, 0 skipped [inst/@double/zeta.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/zeta.m ***** error zeta (1, 2, 3) ***** assert (isnan (zeta (nan))) ***** test x = 1.1; y = sym(11)/10; A = zeta (x); B = double (zeta (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = zeta (x); B = double (zeta (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Zeta(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 0.59816556976238173670 - 0.35185474521784529050*1i 0.21425967567391921717 + 0.52503846985036050707*1i 1.0 1.7564685929749629608 - 0.10151198543617116894*1i -0.49990811617645824900 - 0.91873792757763831501e-6*1i 175.09070083717643866 - 71.512541417467273425*1i ]; B = zeta (x); assert (A, B, -eps) ***** assert (zeta (inf), 1.0) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/@double/dilog.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/dilog.m ***** test x = 1.1; y = sym(11)/10; A = dilog (x); B = double (dilog (y)); assert (A, B, -4*eps); ***** test y = [2 2 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = dilog (x); B = double (dilog (y)); assert (A, B, -eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(dilog(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ -0.59248494924959145800 - 1.5760154034463234224*1i -1.0549087538833908441 - 3.8759788000863368495*1i -12.192421669033171348 -2.9195729380904939394 - 3.9540920181102973073*1i 1.6459519160623984119 - 0.00032335296277550987686*1i -1.5445800511775466879 + 9.4256034277816069684*1i ]; B = dilog (x); assert (A, B, -eps) ***** xtest % https://github.com/fredrik-johansson/mpmath/issues/473 assert (isinf (dilog (inf))) !!!!! known failure assert (isinf (dilog (inf))) failed ***** assert (isnan (dilog (-inf))) 5 tests, 4 passed, 1 known failure, 0 skipped [inst/@double/logint.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/logint.m ***** error logint (1, 2) ***** test x = 1.1; y = sym(11)/10; A = logint (x); B = double (logint (y)); assert (A, B, -4*eps); ***** test y = [2 3 sym(pi); exp(sym(1)) 5 6]; x = double (y); A = logint (x); B = double (logint (y)); assert (A, B, -4*eps); ***** test % maple: % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; % > for a in A do evalf(Li(a)) end do; x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; A = [ 1.3876787420229375511 + 2.5087546988592328752*1i 1.6987684473874802274 + 4.5936366057115204667*1i 30.126141584079629926 3.4936715673748995398 + 5.5260023797127391973*1i 0.90264689772681592152e-5 + 3.1415953634267361942*1i -2.3996350854560916779 - 7.6971739096353664559*1i ]; B = logint (x); assert (A, B, -eps) ***** assert (logint (inf), inf) ***** assert (isnan (logint (-inf))) 6 tests, 6 passed, 0 known failure, 0 skipped [inst/vpasolve.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/vpasolve.m ***** test syms x vpi = vpa(sym(pi), 64); e = tan(x/4) == 1; q = vpasolve(e, x, 3.0); w = q - vpi ; assert (double(w) < 1e-30) ***** test syms x vpi = vpa(sym(pi), 64); e = tan(x/4) == 1; q = vpasolve(e, x); w = q - vpi; assert (double(w) < 1e-30) q = vpasolve(e); w = q - vpi; assert (double(w) < 1e-30) ***** test % very accurate pi syms x e = tan(x/4) == 1; m = digits(256); q = vpasolve(e, x, 3); assert (double(abs(sin(q))) < 1e-256) digits(m); ***** test % very accurate sqrt 2 syms x e = x*x == 2; m = digits(256); q = vpasolve(e, x, 1.5); assert (double(abs(q*q - 2)) < 1e-256) digits(m); ***** test % very accurate sqrt pi % (used to fail https://github.com/sympy/sympy/issues/8564) syms x e = x*x == sym(pi); m = digits(256); q = vpasolve(e, x, 3); assert (double(abs(sin(q*q))) < 1e-256) digits(m); ***** test syms x r = vpasolve(x^2 + 2 == 0, x, 1i); assert (double (imag(r)^2 - 2), 0, 1e-32) assert (double (real(r)^2), 0, 1e-32) r = vpasolve(x^2 + 2 == 0, x, -3i + 5); assert (double (imag(r)^2 - 2), 0, 1e-32) assert (double (real(r)^2), 0, 1e-32) ***** test % system syms x y f = 3*x^2 - 2*y^2 - 1; g = x^2 - 2*x + y^2 + 2*y - 8; r = vpasolve([f; g], [x; y], sym([-1; 1])); assert (isa (r, 'sym')) assert (numel (r) == 2) ***** test % system, double guess syms x y f = 3*x^2 - 2*y^2 - 1; g = x^2 - 2*x + y^2 + 2*y - 8; r = vpasolve([f; g], [x; y], [-1.1 1.2]); ***** test % system, double guess syms x y f = 3*x^2 - 2*y^2 - 1; g = x^2 - 2*x + y^2 + 2*y - 8; r1 = vpasolve([f; g], [x; y], [-1.1]); r2 = vpasolve([f; g], [x; y], [-1.1 -1.1]); assert (isequal (r1, r2)) ***** test % system, more eqns than unknowns syms x y eqns = [x^3 - x - y == 0; y*exp(x) == 16; log(y) + x == 4*log(sym(2))]; r = vpasolve (eqns, [x; y], [1; 1]); A = subs (lhs (eqns), [x; y], r); err = A - [0; 16; 4*log(sym(2))]; assert (double (err), zeros (size (err)), 1e-31) 10 tests, 10 passed, 0 known failure, 0 skipped [inst/octsympy_tests.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/octsympy_tests.m ***** assert(true) 1 test, 1 passed, 0 known failure, 0 skipped [inst/@logical/isAlways.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@logical/isAlways.m ***** error isAlways (true, false) ***** assert(isAlways(true)) ***** assert(~isAlways(false)) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/lambertw.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/lambertw.m ***** assert (isequal (lambertw (0), 0)) ***** assert (isequal (lambertw (0, 0), 0)) ***** assert (lambertw (-1/exp(1)), -1, 2*eps) ***** assert (lambertw (0, -1/exp(1)), -1, 2*eps) ***** assert (lambertw (-1, -1/exp(1)), -1, 2*eps) ***** test x = [1 2 3 pi 10 100 1000 12345]; W = lambertw (x); assert (W.*exp (W), x, -3*eps) ***** test x = [1 2 3 pi 10 100 1000 12345]; k = [-3 -2 -1 0 1 2 3 4]; W = lambertw (k, x); assert (W.*exp (W), x, -10*eps) ***** test % input shape preserved x = [0 1; 2 3]; b = x; W = lambertw (b, x); assert (W.*exp (W), x, -10*eps) ***** test % input shape preserved x = [0 1; 2 3]; b = 0; W = lambertw (b, x); assert (W.*exp (W), x, -10*eps) ***** test % input shape preserved x = 10; b = [0 1; 2 3]; W = lambertw (b, x); assert (W.*exp (W), x*ones (size (b)), -10*eps) ***** assert (isnan (lambertw (nan))) ***** test % limiting behaviour as z large k = 3; A = lambertw (k, 1e100); assert (abs (imag (A) - 2*pi*k) < 0.1) ***** test % limiting behaviour as z large, up imag axis k = 1; A = lambertw (k, 1e100*1i); assert (abs (imag (A) - (2*k+0.5)*pi) < 0.1) ***** test % limiting behaviour as z large, down imag axis k = -2; A = lambertw (k, -1e100*1i); assert (abs (imag (A) - (2*k-0.5)*pi) < 0.1) ***** test % limiting behaviour as z large, near branch k = 3; A = lambertw (k, -1e100); B = lambertw (k, -1e100 + 1i); C = lambertw (k, -1e100 - 1i); assert (abs (imag (A) - (2*k+1)*pi) < 0.1) assert (abs (imag (B) - (2*k+1)*pi) < 0.1) assert (abs (imag (C) - (2*k-1)*pi) < 0.1) ***** test % infinities and nan A = lambertw ([inf exp(1) -inf nan]); B = [inf 1 inf + pi*1i nan]; assert (isequaln (A, B)) ***** test % infinities and nan A = lambertw (3, [inf 1 -inf nan]); B = [inf + 2*3*pi*1i lambertw(3,1) inf + (2*3+1)*pi*1i nan]; assert (isequaln (A, B)) ***** test % infinities and nan A = lambertw ([0 1 2 0], [inf -inf nan exp(1)]); B = [inf inf+3*pi*1i nan 1]; assert (isequaln (A, B)) ***** test % scalar infinity z, vector b A = lambertw ([1 2 -3], inf); B = [lambertw(1, inf) lambertw(2, inf) lambertw(-3, inf)]; assert (isequal (A, B)) ***** test % scalar -infinity z, vector b A = lambertw ([1 2 -3], -inf); B = [lambertw(1, -inf) lambertw(2, -inf) lambertw(-3, -inf)]; assert (isequal (A, B)) ***** test % scalar z nan, vector b A = lambertw ([1 2 -3], nan); B = [nan nan nan]; assert (isequaln (A, B)) 21 tests, 21 passed, 0 known failure, 0 skipped Checking C++ files ... Done running the unit tests. Summary: 2426 tests, 2395 passed, 31 known failures, 0 skipped dh_installdocs -O--buildsystem=octave dh_installchangelogs -O--buildsystem=octave dh_octave_changelogs -O--buildsystem=octave dh_octave_examples -O--buildsystem=octave dh_installsystemduser -O--buildsystem=octave dh_perl -O--buildsystem=octave dh_link -O--buildsystem=octave dh_strip_nondeterminism -O--buildsystem=octave dh_compress -O--buildsystem=octave dh_fixperms -O--buildsystem=octave dh_missing -O--buildsystem=octave dh_octave_substvar -O--buildsystem=octave dh_installdeb -O--buildsystem=octave dh_gencontrol -O--buildsystem=octave dh_md5sums -O--buildsystem=octave dh_builddeb -O--buildsystem=octave dpkg-deb: building package 'octave-symbolic' in '../octave-symbolic_3.2.1-3_all.deb'. dpkg-genbuildinfo --build=binary -O../octave-symbolic_3.2.1-3_amd64.buildinfo dpkg-genchanges --build=binary -O../octave-symbolic_3.2.1-3_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration I: user script /srv/workspace/pbuilder/645323/tmp/hooks/B01_cleanup starting I: user script /srv/workspace/pbuilder/645323/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/645323 and its subdirectories I: Current time: Fri Mar 27 11:23:43 +14 2026 I: pbuilder-time-stamp: 1774560223 + false + set +x Thu Mar 26 21:23:43 UTC 2026 I: Signing ./b2/octave-symbolic_3.2.1-3_amd64.buildinfo as octave-symbolic_3.2.1-3_amd64.buildinfo.asc Thu Mar 26 21:23:43 UTC 2026 I: Signed ./b2/octave-symbolic_3.2.1-3_amd64.buildinfo as ./b2/octave-symbolic_3.2.1-3_amd64.buildinfo.asc Thu Mar 26 21:23:43 UTC 2026 - build #2 for octave-symbolic/unstable/amd64 on ionos15-amd64 done. Starting cleanup. All cleanup done. Thu Mar 26 21:23:43 UTC 2026 - reproducible_build.sh stopped running as /tmp/jenkins-script-sY50XiJj, removing. /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS: total 588 drwxr-xr-x 2 jenkins jenkins 4096 Feb 21 14:39 b1 drwxr-xr-x 2 jenkins jenkins 4096 Feb 21 15:00 b2 -rw-r--r-- 1 jenkins jenkins 2308 Nov 10 21:52 octave-symbolic_3.2.1-3.dsc -rw------- 1 jenkins jenkins 581860 Feb 21 14:39 rbuildlog.GzdzZ3z /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b1: total 844 -rw-r--r-- 1 jenkins jenkins 578108 Feb 21 14:39 build.log -rw-r--r-- 1 jenkins jenkins 6832 Feb 21 14:39 octave-symbolic_3.2.1-3.debian.tar.xz -rw-r--r-- 1 jenkins jenkins 2308 Feb 21 14:39 octave-symbolic_3.2.1-3.dsc -rw-r--r-- 1 jenkins jenkins 204628 Feb 21 14:39 octave-symbolic_3.2.1-3_all.deb -rw-r--r-- 1 jenkins jenkins 21534 Feb 21 14:39 octave-symbolic_3.2.1-3_amd64.buildinfo -rw-r--r-- 1 jenkins jenkins 22416 Feb 21 14:39 octave-symbolic_3.2.1-3_amd64.buildinfo.asc -rw-r--r-- 1 jenkins jenkins 1174 Feb 21 14:39 octave-symbolic_3.2.1-3_amd64.changes -rw-r--r-- 1 jenkins jenkins 1360 Feb 21 14:39 octave-symbolic_3.2.1-3_source.changes /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b2: total 832 -rw-r--r-- 1 jenkins jenkins 574286 Feb 21 15:00 build.log -rw-r--r-- 1 jenkins jenkins 6832 Feb 21 15:00 octave-symbolic_3.2.1-3.debian.tar.xz -rw-r--r-- 1 jenkins jenkins 2308 Feb 21 15:00 octave-symbolic_3.2.1-3.dsc -rw-r--r-- 1 jenkins jenkins 204628 Feb 21 15:00 octave-symbolic_3.2.1-3_all.deb -rw-r--r-- 1 jenkins jenkins 21543 Feb 21 15:00 octave-symbolic_3.2.1-3_amd64.buildinfo -rw-r--r-- 1 jenkins jenkins 22425 Feb 21 15:00 octave-symbolic_3.2.1-3_amd64.buildinfo.asc -rw-r--r-- 1 jenkins jenkins 1174 Feb 21 15:00 octave-symbolic_3.2.1-3_amd64.changes -rw-r--r-- 1 jenkins jenkins 1360 Feb 21 15:00 octave-symbolic_3.2.1-3_source.changes Fri Feb 21 15:00:44 UTC 2025 I: Deleting $TMPDIR on ionos15-amd64.debian.net. Fri Feb 21 15:00:44 UTC 2025 I: octave-symbolic_3.2.1-3_amd64.changes: Format: 1.8 Date: Sun, 10 Nov 2024 17:00:00 -0300 Source: octave-symbolic Binary: octave-symbolic Architecture: all Version: 3.2.1-3 Distribution: unstable Urgency: medium Maintainer: Debian Octave Group Changed-By: Rafael Laboissière Description: octave-symbolic - symbolic package for Octave Closes: 1084311 Changes: octave-symbolic (3.2.1-3) unstable; urgency=medium . * d/u/metadata: Use the official project slug at GitHub * d/p/fix-intersect-unit-test.patch: New patch (Closes: #1084311) Checksums-Sha1: 70c4d8507dd5b7c1ade57db72abb2a100b56718e 204628 octave-symbolic_3.2.1-3_all.deb 9f31ad74f4496f990bc9d1d0afd307c7bf849c3c 21534 octave-symbolic_3.2.1-3_amd64.buildinfo Checksums-Sha256: 8823cd0a2b73a637e2cd0dffd5c857b9de810d8b60402673f2c36e7a99e06b99 204628 octave-symbolic_3.2.1-3_all.deb a05aaf5ac008163bc5e1cb22430409a7ae0ba6af71d848eb67fafb99596ea29d 21534 octave-symbolic_3.2.1-3_amd64.buildinfo Files: 80bfca0d0e2711e5b1618faac7bffca7 204628 math optional octave-symbolic_3.2.1-3_all.deb 7340c0aeefc5e148881406c8e46dba42 21534 math optional octave-symbolic_3.2.1-3_amd64.buildinfo removed '/var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/amd64/octave-symbolic_3.2.1-3.rbuild.log' removed '/var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/amd64/octave-symbolic_3.2.1-3.rbuild.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/logs/unstable/amd64/octave-symbolic_3.2.1-3.build1.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/logs/unstable/amd64/octave-symbolic_3.2.1-3.build2.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/buildinfo/unstable/amd64/octave-symbolic_3.2.1-3_amd64.buildinfo' removed '/var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/amd64/octave-symbolic_3.2.1-3.diff.gz' Diff of the two buildlogs: -- --- b1/build.log 2025-02-21 14:39:11.708974908 +0000 +++ b2/build.log 2025-02-21 15:00:44.146735559 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Fri Feb 21 02:17:38 -12 2025 -I: pbuilder-time-stamp: 1740147458 +I: Current time: Fri Mar 27 11:02:13 +14 2026 +I: pbuilder-time-stamp: 1774558933 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -25,52 +25,84 @@ dpkg-source: info: applying fix-intersect-unit-test.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/1183969/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/645323/tmp/hooks/D01_modify_environment starting +debug: Running on ionos15-amd64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Mar 26 21:02 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/645323/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/645323/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='amd64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='1ab59e4cb5b44f5ba199297ff251076a' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='1183969' - PS1='# ' - PS2='> ' + INVOCATION_ID=13632c59f67646789d3ba90df8c5ff2c + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=645323 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/pbuilderrc_ZhGU --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b1 --logfile b1/build.log octave-symbolic_3.2.1-3.dsc' - SUDO_GID='110' - SUDO_UID='105' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://46.16.76.132:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/pbuilderrc_4iRu --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b2 --logfile b2/build.log octave-symbolic_3.2.1-3.dsc' + SUDO_GID=111 + SUDO_UID=106 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://213.165.73.152:3128 I: uname -a - Linux ionos1-amd64 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.12.9+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.9-1~bpo12+1 (2025-01-19) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/1183969/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/645323/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -661,7 +693,7 @@ Get: 545 http://deb.debian.org/debian unstable/main amd64 python3-mpmath all 1.3.0-1 [419 kB] Get: 546 http://deb.debian.org/debian unstable/main amd64 python3-packaging all 24.2-1 [55.3 kB] Get: 547 http://deb.debian.org/debian unstable/main amd64 python3-sympy all 1.13.3-3 [4148 kB] -Fetched 219 MB in 54s (4073 kB/s) +Fetched 219 MB in 23s (9401 kB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal: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 ... 19798 files and directories currently installed.) @@ -2447,8 +2479,8 @@ Setting up tzdata (2025a-2) ... Current default time zone: 'Etc/UTC' -Local time is now: Fri Feb 21 14:21:58 UTC 2025. -Universal Time is now: Fri Feb 21 14:21:58 UTC 2025. +Local time is now: Thu Mar 26 21:05:07 UTC 2026. +Universal Time is now: Thu Mar 26 21:05:07 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libxcb-present0:amd64 (1.17.0-2+b1) ... @@ -2910,7 +2942,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/octave-symbolic-3.2.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../octave-symbolic_3.2.1-3_source.changes +I: user script /srv/workspace/pbuilder/645323/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/645323/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/octave-symbolic-3.2.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../octave-symbolic_3.2.1-3_source.changes dpkg-buildpackage: info: source package octave-symbolic dpkg-buildpackage: info: source version 3.2.1-3 dpkg-buildpackage: info: source distribution unstable @@ -2951,2511 +2987,3205 @@ Checking package... Run the unit tests... Checking m files ... -[inst/pycall_sympy__.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/pycall_sympy__.m -***** test - % general test - x = 10; y = 6; - cmd = '(x,y) = _ins; return (x+y,x-y)'; - [a,b] = pycall_sympy__ (cmd, x, y); - assert (a == x + y && b == x - y) +[inst/@sym/isfinite.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isfinite.m +***** assert (isfinite(sym(1))) Symbolic pkg v3.2.1: Python communication link active, SymPy v1.13.3. +***** assert (isfinite(sym(-10))) +***** assert (~isfinite(sym('oo'))) +***** assert (~isfinite(sym('-oo'))) +***** assert (~isfinite(sym(1)/0)) +***** assert (~isfinite(sym(nan))) +***** assert (isequal (isfinite (sym ([1 inf])), [true false])) ***** test - % bool - assert (pycall_sympy__ ('return True,')) - assert (~pycall_sympy__ ('return False,')) + % finite-by-assumption + syms x finite + assert (isfinite (x)) +warning: test: file /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isfinite.m leaked file descriptors +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/@sym/euler.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/euler.m +***** error euler (sym(1), 2, 3) +***** assert (isequal (euler (sym(0)), sym(1))) ***** test - % float - assert (abs(pycall_sympy__ ('return 1.0/3,') - 1/3) < 1e-15) + m = sym([0 1 2; 8 10 888889]); + A = euler (m); + B = sym([1 0 -1; 1385 -50521 0]); + assert (isequal (A, B)) ***** test - % int - r = pycall_sympy__ ('return 123456'); - assert (r == 123456) - assert (isinteger (r)) + syms x + assert (isequal (euler(6, x), x^6 - 3*x^5 + 5*x^3 - 3*x)) +***** assert (isnan (euler (3, sym(nan)))) ***** test - % string - x = 'octave'; - cmd = 's = _ins[0]; return s.capitalize(),'; - y = pycall_sympy__ (cmd, x); - assert (strcmp(y, 'Octave')) + syms m x + em = euler (m, x); + A = subs(em, [m x], [2 sym(pi)]); + assert (isequal (A, sym(pi)^2 - sym(pi))) ***** test - % string with escaped newlines, comes back as escaped newlines - x = 'a string\nbroke off\nmy guitar\n'; - y = pycall_sympy__ ('return _ins', x); - assert (strcmp(y, x)) + % vectorized + syms x y + A = euler([1; 2], [x; y]); + B = [x - sym(1)/2; y^2 - y]; + assert (isequal (A, B)) ***** test - % string with actual newlines, comes back as actual newlines - x = sprintf('a string\nbroke off\nmy guitar\n'); - y = pycall_sympy__ ('return _ins', x); - y2 = strrep(y, sprintf('\n'), sprintf('\r\n')); % windows - assert (strcmp(x, y) || strcmp(x, y2)) + % round trip + syms m z + f = euler (m, z); + h = function_handle (f, 'vars', [m z]); + A = h (2, 2.2); + B = euler (2, 2.2); + assert (A, B) ***** test - % cmd string with newlines, works with cell - y = pycall_sympy__ ('return "string\nbroke",'); - y2 = sprintf('string\nbroke'); - y3 = strrep(y2, sprintf('\n'), sprintf('\r\n')); % windows - assert (strcmp(y, y2) || strcmp(y, y3)) + % compare vpa to maple: Digits:=34; evalf(euler(13, exp(1)+Pi*I/13)); + A = vpa('1623.14184180556920918624604530515') + ... + vpa('4270.98066989140286451493108809574')*1i; + z = vpa (exp(1), 32) + vpa(pi, 32)/13*1i; + B = euler (13, z); + relerr = abs(double(abs((B - A)/A))); + assert (relerr < 20*eps); +***** xtest + % as above, high-prec result broken in 1.12: https://github.com/sympy/sympy/issues/24156 + A = vpa('1623.14184180556920918624604530515') + ... + vpa('4270.98066989140286451493108809574')*1i; + z = vpa (exp(1), 32) + vpa(pi, 32)/13*1i; + B = euler (13, z); + relerr = abs(double(abs((B - A)/A))); + assert (relerr < 2e-31); +!!!!! known failure +assert (relerr < 2e-31) failed +10 tests, 9 passed, 1 known failure, 0 skipped +[inst/@sym/eq.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eq.m ***** test - % string with XML escapes - x = '<> >< <<>>'; - y = pycall_sympy__ ('return _ins', x); - assert (strcmp(y, x)) - x = '&'; - y = pycall_sympy__ ('return _ins', x); - assert (strcmp(y, x)) + % simple tests with scalar numbers + assert (logical (sym(1) == sym(1))) + assert (logical (sym(1) == 1)) + assert (~logical (sym(1) == 0)) + assert (isequal (sym(1) == sym(1), sym(true))) + assert (isequal (sym(1) == 1, sym(true))) + assert (isequal (sym(1) == 0, sym(false))) ***** test - % strings with double quotes - x = 'a\"b\"c'; - y = pycall_sympy__ ('return _ins', x); - assert (strcmp(y, x)) - x = '\"'; - y = pycall_sympy__ ('return _ins', x); - assert (strcmp(y, x)) + % Type of the output is sym or logical? + % FIXME: in current version, they are sym + e = sym(1) == sym(1); + %assert (islogical (e)) + assert (isa (e, 'sym')) ***** test - % cmd has double quotes, these must be escaped by user - % (of course: she is writing python code) - expy = 'a"b"c'; - y = pycall_sympy__ ('return "a\"b\"c",'); - assert (strcmp(y, expy)) + % things involving a variable are usually not bool but sym. + % (SMT behaviour says always, FIXME: currently we differ.) + syms x + e = x == 0; + assert (~islogical (e)) + assert (isa (e, 'sym')) ***** test - % strings with quotes - x = 'a''b'; % this is a single quote - y = pycall_sympy__ ('return _ins', x); - assert (strcmp(y, x)) + % ... except of course via cancellation + syms x + e = x - x == 0; + assert (logical (e)) + assert (isequal (e, sym(true))) ***** test - % strings with quotes - x = '\"a''b\"c''\"d'; - y = pycall_sympy__ ('return _ins[0]', x); - assert (strcmp(y, x)) + % array == array + a = sym([1 2; 3 4]); + y = a == a; + assert (isequal( size(y), [2 2])) + assert (isequal (y, sym([true true; true true]))) + assert (all(all(y))) + y = a == 1; + assert (isequal( size(y), [2 2])) + assert (isequal (y, sym([true false; false false]))) + assert (any(any(y))) + y = a == 42; + assert (isequal( size(y), [2 2])) + assert (isequal (y, sym([false false; false false]))) +-1103:22: SymPyDeprecationWarning: + +non-Expr objects in a Matrix is deprecated. Matrix represents +a mathematical matrix. To represent a container of non-numeric +entities, Use a list of lists, TableForm, NumPy array, or some +other data structure instead. + +See https://docs.sympy.org/latest/explanation/active-deprecations.html#deprecated-non-expr-in-matrix +for details. + +This has been deprecated since SymPy version 1.9. It +will be removed in a future version of SymPy. + + return Matrix(*q.shape, elements) ***** test - % strings with quotes - expy = '"a''b"c''"d'; - y = pycall_sympy__ ('s = "\"a''b\"c''\"d"; return s'); - assert (strcmp(y, expy)) + % more array == array + D = [0 1; 2 3]; + A = [sym(0) 1; sym(2) 3]; + DZ = D - D; + assert (isequal (logical(A == A), [true true; true true])) + assert (isequal (logical(A == D), [true true; true true])) + assert (isequal (logical(A - D == DZ), [true true; true true])) + assert (all (all ( A == A ))) + assert (all (all ( A == D ))) + assert (all (all ( A - D == DZ ))) ***** test - % strings with printf escapes - x = '% %% %%% %%%% %s %g %%s'; - y = pycall_sympy__ ('return _ins', x); - assert (strcmp(y, x)) + % logical output, right shape, etc + t = true; f = false; + a = sym([0 1 2; 3 4 5]); + b = sym([0 1 1; 3 5 5]); + e = a == b; + eexp = sym(logical([1 1 0; 1 0 1])); + assert (isequal (e, eexp)) + a = sym([0 1 2]); + b = sym([0 1 1]); + e = a == b; + eexp = sym(logical([1 1 0])); + assert (isequal (e, eexp)) + e = a' == b'; + eexp = eexp.'; % is/was bug here with ' + assert (isequal (e, eexp)) ***** test - % cmd with printf escapes - x = '% %% %%% %%%% %s %g %%s'; - y = pycall_sympy__ (['return "' x '",']); - assert (strcmp(y, x)) + % empty matrices compare to correct empty size + a = zeros (sym(3), 0); + assert (size (a == a), [3, 0]) + a = zeros (sym(0), 2); + assert (size (a == a), [0, 2]) +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/@sym/lt.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lt.m ***** test - % cmd w/ backslash and \n must be escaped by user - expy = 'a\b\\c\nd\'; - y = pycall_sympy__ ('return "a\\b\\\\c\\nd\\",'); - assert (strcmp(y, expy)) + % simple + x = sym(1); y = sym(1); e = x < y; + assert (~logical (e)) + x = sym(1); y = sym(2); e = x < y; + assert (logical (e)) ***** test - % slashes - x = '/\\ // \\\\ \\/\\/\\'; - z = '/\ // \\ \/\/\'; - y = pycall_sympy__ ('return _ins', x); - assert (strcmp(y, x)) + % mix sym and double + x = sym(1); y = 1; e = x < y; + assert (~logical (e)) + x = sym(1); y = 2; e = x < y; + assert (logical (e)) + x = 1; y = sym(1); e = x < y; + assert (~logical (e)) + x = 1; y = sym(2); e = x < y; + assert (logical (e)) ***** test - % slashes - z = '/\ // \\ \/\/\'; - y = pycall_sympy__ ('return "/\\ // \\\\ \\/\\/\\"'); - assert (strcmp(y, z)) + % Type of the output is sym or logical? + % FIXME: in current version, they are sym + x = sym(1); y = sym(1); e1 = x < y; + x = sym(1); y = sym(2); e2 = x < y; + %assert (islogical (e1)) + %assert (islogical (e2)) + assert (isa (e1, 'sym')) + assert (isa (e2, 'sym')) ***** test - % strings with special chars - x = '!@#$^&* you!'; - y = pycall_sympy__ ('return _ins', x); - assert (strcmp(y, x)) - x = '~-_=+[{]}|;:,.?'; - y = pycall_sympy__ ('return _ins', x); - assert (strcmp(y, x)) -***** xtest - % string with backtick trouble for system -c (sysoneline) - x = '`'; - y = pycall_sympy__ ('return _ins', x); - assert (strcmp(y, x)) + % ineq w/ symbols + syms x y + e = x < y; + assert (~islogical (e)) + assert (isa (e, 'sym')) ***** test - % unicode - s1 = '我爱你'; - cmd = 'return u"\u6211\u7231\u4f60",'; - s2 = pycall_sympy__ (cmd); - assert (strcmp (s1, s2)) + % array -- array + syms x + a = sym([1 3 3 2*x]); + b = sym([2 x 3 10]); + e = a < b; + assert (isa (e, 'sym')) + assert (logical (e(1))) + assert (isa (e(2), 'sym')) + assert (isequal (e(2), 3 < x)) + assert (~logical (e(3))) + assert (isa (e(4), 'sym')) + assert (isequal (e(4), 2*x < 10)) ***** test - % unicode with \x - s1 = '我'; - cmd = 'return b"\xe6\x88\x91".decode("utf-8")'; - s2 = pycall_sympy__ (cmd); - assert (strcmp (s1, s2)) + % array -- scalar + syms x oo + a = sym([1 x oo]); + b = sym(3); + e = a < b; + assert (isa (e, 'sym')) + assert (logical (e(1))) + assert (isa (e(2), 'sym')) + assert (isequal (e(2), x < 3)) + assert (~logical (e(3))) ***** test - % unicode with \x and some escaped backslashes - s1 = '\我\'; - cmd = 'return b"\\\xe6\x88\x91\\".decode("utf-8")'; - s2 = pycall_sympy__ (cmd); - assert (strcmp (s1, s2)) -***** xtest - % unicode passthru - s = '我爱你'; - s2 = pycall_sympy__ ('return _ins', s); - assert (strcmp (s, s2)) - s = '我爱你<>\&//\#%% %\我'; - s2 = pycall_sympy__ ('return _ins', s); - assert (strcmp (s, s2)) -***** xtest - % unicode w/ slashes, escapes - s = '我<>\&//\#%% %\我'; - s2 = pycall_sympy__ ('return "我<>\\&//\\#%% %\\我"'); - assert (strcmp (s, s2)) + % scalar -- array + syms x oo + a = sym(1); + b = sym([2 x -oo]); + e = a < b; + assert (isa (e, 'sym')) + assert (logical (e(1))) + assert (isa (e(2), 'sym')) + assert (isequal (e(2), 1 < x)) + assert (~logical (e(3))) ***** test - % list, tuple - assert (isequal (pycall_sympy__ ('return [1,2,3],'), {1, 2, 3})) - assert (isequal (pycall_sympy__ ('return (4,5),'), {4, 5})) - assert (isequal (pycall_sympy__ ('return (6,),'), {6,})) - assert (isequal (pycall_sympy__ ('return [],'), {})) + % ineq w/ nan + syms x + snan = sym(nan); + e = x < snan; + assert (~logical (e)) + e = snan < x; + assert (~logical (e)) + b = [sym(0) x]; + e = b < snan; + assert (isequal (e, [false false])) ***** test - % dict - cmd = 'd = dict(); d["a"] = 6; d["b"] = 10; return d,'; - d = pycall_sympy__ (cmd); - assert (d.a == 6 && d.b == 10) + % oo + syms oo x + e = oo < x; + assert (isa (e, 'sym')) + assert (strcmp (strtrim (disp (e, 'flat')), 'oo < x')) ***** test - r = pycall_sympy__ ('return 6'); - assert (isequal (r, 6)) + % sympy true matrix + a = sym([1 3 3]); + b = sym([2 4 1]); + e = a < b; + %assert (~isa (e, 'sym')) + %assert (islogical (e)) + assert (isequal (e, [true true false])) ***** test - r = pycall_sympy__ ('return "Hi"'); - assert (strcmp (r, 'Hi')) + % oo, finite real variables + syms oo + syms z real + assumeAlso(z, 'finite') + e = -oo < z; + assert (isequal (e, sym(true))) + e = z < oo; + assert (isequal (e, sym(true))) ***** test - % blank lines, lines with spaces - a = pycall_sympy__ ({ '', '', ' ', 'return 6', ' ', ''}); - assert (isequal (a, 6)) + % -oo, positive var (known failure w/ sympy 0.7.6.x) + syms oo + syms z positive + e = -oo < z; + assert (logical (e)) + assert (isequal (e, sym(true))) ***** test - % blank lines, strange comment lines - cmd = {'a = 1', '', '#', '', '# ', ' #', 'a = a + 2', ' #', 'return a'}; - a = pycall_sympy__ (cmd); - assert (isequal (a, 3)) + % positive + syms z positive + e = -1 < z; + assert (isequal (e, sym(true))) ***** test - % return empty string (was https://bugs.python.org/issue25270) - assert (isempty (pycall_sympy__ ('return ""'))) + syms oo + z = sym('z', 'negative'); + e = z < oo; + assert (isequal (e, sym(true))) +14 tests, 14 passed, 0 known failure, 0 skipped +[inst/@sym/fix.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fix.m ***** test - % return nothing (via an empty list) - % note distinct from 'return [],' - pycall_sympy__ ('return []') + d = 3/2; + x = sym('3/2'); + f1 = fix(x); + f2 = fix(d); + assert (isequal (f1, f2)) ***** test - % return nothing (because no return command) - pycall_sympy__ ('dummy = 1') + D = [1.1 4.6; -3.4 -8.9]; + A = [sym(11)/10 sym(46)/10; sym(-34)/10 sym(-89)/10]; + f1 = fix(A); + f2 = fix(D); + assert( isequal (f1, f2)) ***** test - % return nothing (because no command) - pycall_sympy__ ('') + d = sym(-11)/10; + c = -1; + assert (isequal (fix (d), c)) ***** test - % return nothing (because no command) - pycall_sympy__ ({}) -***** error - % python exception while passing variables to python - % This tests the "INTERNAL_PYTHON_ERROR" path. - % FIXME: this is a very specialized test, relies on internal octsympy - % implementation details, and may need to be adjusted for changes. - disp('') - disp('**********************************************************************') - disp('') - disp(' Some deliberate AttributeError and ValueError may appear next') - disp('') - disp('v v v v v v v v v v v v v v v v v v v v v v v v') - b = sym([], 'S.This_is_supposed_to_make_an_exception', [1 1], 'Test', 'Test', 'Test'); - c = b + 1; - -********************************************************************** - - Some deliberate AttributeError and ValueError may appear next - -v v v v v v v v v v v v v v v v v v v v v v v v -Traceback (most recent call last): - File "", line 4, in - _ins.append(S.This_is_supposed_to_make_an_exception) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/lib/python3/dist-packages/sympy/core/singleton.py", line 118, in __getattr__ - raise AttributeError( - "Attribute '%s' was not installed on SymPy registry %s" % ( - name, self)) -AttributeError: Attribute 'This_is_supposed_to_make_an_exception' was not installed on SymPy registry S + d = sym(-19)/10; + c = -1; + assert (isequal (fix (d), c)) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/ellipticF.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticF.m +***** error ellipticF (sym(1)) +***** error ellipticF (sym(1), 2, 3) +***** assert (double (ellipticF (sym (pi)/3, sym (-105)/10)), 0.6184459461, 10e-11) +***** assert (double (ellipticF (sym (pi)/4, sym (-pi))), 0.6485970495, 10e-11) +***** assert (double (ellipticF (sym (1), sym (-1))), 0.8963937895, 10e-11) +***** assert (double (ellipticF (sym (pi)/6, sym (0))), 0.5235987756, 10e-11) ***** test - % ...and after the above test, the pipe should still work - a = pycall_sympy__ ('return _ins[0]*2', 3); - assert (isequal (a, 6)) + % compare to Maple + us = vpa (ellipticF (sym(11)/10, sym(9)/4), 40); + % > evalf(EllipticF(sin(11/10), sqrt(9/4)), 40); + maple = vpa ('1.206444996991058996424988192917728014427', 40) - ... + vpa ('0.8157358125823472313001683083685348517476j', 40); + assert (abs (double (maple - us)), 0, 1e-39) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/@sym/atanh.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atanh.m +***** error atanh (sym(1), 2) +***** assert (isequaln (atanh (sym(nan)), sym(nan))) +***** shared x, d + d = 1/2; + x = sym('1/2'); ***** test - % This command does not fail with native interface and '@pyobject' - s = warning ('off', 'OctSymPy:pythonic_no_convert'); - try - q = pycall_sympy__ ({'return type(int)'}); - catch - msg = lasterror.message; - assert (~ isempty (regexp (msg, '.*does not know how to.*'))) - end - warning (s) - disp('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^') - disp(' End of deliberate errors!') - disp(' You should see "46/46" or "Passes 46 out of 46 tests" below') - disp('**********************************************************************') - % ...and after the above test, the pipe should still work - a = pycall_sympy__ ('return _ins[0]*2', 3); - assert (isequal (a, 6)) -Traceback (most recent call last): - File "", line 2, in - octoutput_drv(_outs) - ~~~~~~~~~~~~~^^^^^^^ - File "", line 12, in octoutput_drv - octoutput(x, xroot) - ~~~~~~~~~^^^^^^^^^^ - File "", line 96, in octoutput - raise ValueError("octoutput does not know how to export type " + str(type(x))) -ValueError: octoutput does not know how to export type -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - End of deliberate errors! - You should see "46/46" or "Passes 46 out of 46 tests" below -********************************************************************** + f1 = atanh(x); + f2 = atanh(d); + assert( abs(double(f1) - f2) < 1e-15 ) ***** test - % complex input - [A, B] = pycall_sympy__ ('z = 2*_ins[0]; return (z.real,z.imag)', 3+4i); - assert (A, 6) - assert (B, 8) + D = [d d; d d]; + A = [x x; x x]; + f1 = atanh(A); + f2 = atanh(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test - % complex output - z = pycall_sympy__ ('return 3+2j'); - assert (z, 3+2i) -***** error - s = char ('abc', 'defgh', '12345'); - r = pycall_sympy__ ('return _ins[0]', s); + % round trip + y = sym('y'); + A = atanh (d); + f = atanh (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/curl.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/curl.m +***** error curl([sym(1) 2 3], 42, 42) +***** shared x,y,z + syms x y z ***** test - r = pycall_sympy__ ('return len(_ins[0])', ''); - assert (r == 0) + % double const + f = [1 2 3]; + g = [sym(0); 0; 0]; + assert (isequal (curl(f, [x y z]), g)) + % should fail, calls @double: curl(f, {x y z}), g)) ***** test - % ensure the 0x0 matrix in octave gets mapped to the empty list in python - % @sym/subsasgn currently replies on this behaviour - assert (pycall_sympy__ ('return _ins[0] == []', [])); + % div curl always 0 + v = [exp(x); x*y; sin(z)]; + g = curl(v); + a = divergence(g, [x y z]); + assert (isAlways (a == sym(0))) + assert (isa (a, 'sym')) + g = curl(v, [x y z]); + a = divergence(g, [x y z]); + assert (isAlways (a == sym(0))) + assert (isa (a, 'sym')) ***** test - % ensure the empty string gets mapped to the empty string in python - assert (pycall_sympy__ ('return _ins[0] == ""', '')); -warning: test: file /build/reproducible-path/octave-symbolic-3.2.1/inst/pycall_sympy__.m leaked file descriptors -46 tests, 46 passed, 0 known failure, 0 skipped -[inst/vpasolve.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/vpasolve.m + % div curl always 0 + v = [exp(x); erfc(x*y); sin(exp(x)*y+sinh(z))]; + g = curl(v, [x y z]); + a = divergence(g, [x y z]); + assert (isAlways (a == sym(0))) + assert (isa (a, 'sym')) ***** test - syms x - vpi = vpa(sym(pi), 64); - e = tan(x/4) == 1; - q = vpasolve(e, x, 3.0); - w = q - vpi ; - assert (double(w) < 1e-30) + % curl grad is vec zero + f = sin(exp(x)*y+sinh(z)); + g = curl(gradient(f, [x,y,z])); + assert (isequal (g, sym([0;0;0]))) ***** test - syms x - vpi = vpa(sym(pi), 64); - e = tan(x/4) == 1; - q = vpasolve(e, x); - w = q - vpi; - assert (double(w) < 1e-30) - q = vpasolve(e); - w = q - vpi; - assert (double(w) < 1e-30) + % 2d fcn in 2d/3d + u = sin(exp(x)*y); + v = x^2*y^3; + vorticity2d = diff(v,x) - diff(u,y); + omega = curl([u; v; 0], [x y z]); + assert (isequal (omega, [0; 0; vorticity2d])) +***** error <3D vector> curl([sym(1) 2 3 4]) +***** error curl([sym(1) 2 3], {sym('x') sym('y') sym('z') sym('t')}) +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/@sym/ceil.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ceil.m +***** error ceil (sym(1), 2) +***** assert (isequaln (ceil (sym(nan)), sym(nan))) +***** shared x, d + d = 3/2; + x = sym('3/2'); +***** test + f1 = ceil(x); + f2 = ceil(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = ceil(A); + f2 = ceil(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = ceil (d); + f = ceil (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/coth.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coth.m +***** error coth (sym(1), 2) +***** assert (isequaln (coth (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); +***** test + f1 = coth(x); + f2 = coth(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = coth(A); + f2 = coth(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = coth (d); + f = coth (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/formula.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/formula.m ***** test - % very accurate pi syms x - e = tan(x/4) == 1; - m = digits(256); - q = vpasolve(e, x, 3); - assert (double(abs(sin(q))) < 1e-256) - digits(m); + assert (isequal (formula(x), x)) + assert (isequal (formula(2*x), 2*x)) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@sym/cat.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cat.m ***** test - % very accurate sqrt 2 + % mostly tested in horzcat, vertcat: one for good measure syms x - e = x*x == 2; - m = digits(256); - q = vpasolve(e, x, 1.5); - assert (double(abs(q*q - 2)) < 1e-256) - digits(m); + assert (isequal (cat(1, x, x), [x x])) + assert (isequal (cat(2, x, x), [x; x])) +***** error cat(3, sym(2), sym(3)) +***** error cat(0, sym(2), sym(3)) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/imag.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/imag.m +***** assert (isequal (imag (sym (4) + 3i),3)) ***** test - % very accurate sqrt pi - % (used to fail https://github.com/sympy/sympy/issues/8564) + syms x y real + z = x + 1i*y; + assert (isequal (imag (z),y)) +***** test + syms x y real + Z = [4 x + 1i*y; 1i*y 4 + 3i]; + assert (isequal (imag (Z),[0 y; y 3])) +***** test + syms x real + d = exp (x*i); + assert (isequal (imag (d), sin (x))) +***** test + % round trip syms x - e = x*x == sym(pi); - m = digits(256); - q = vpasolve(e, x, 3); - assert (double(abs(sin(q*q))) < 1e-256) - digits(m); + d = 3 - 5i; + f = imag (x); + A = imag (d); + h = function_handle (f); + B = h (d); + assert (A, B) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/divergence.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/divergence.m +***** shared x,y,z + syms x y z +***** test + % 1D + f = x^2; + assert (isequal (divergence(f), diff(f,x))) + assert (isequal (divergence(f,{x}), diff(f,x))) + assert (isequal (divergence(f,[x]), diff(f,x))) + assert (isequal (divergence(f,x), diff(f,x))) +***** test + % const + f = [sym(1); 2; exp(sym(3))]; + assert (isequal (divergence(f,{x,y,z}), 0)) + f = [sym(1); 2; exp(sym('c'))]; + assert (isequal (divergence(f,{x,y,z}), 0)) ***** test + % double const + f = [1 2]; + g = sym(0); + assert (isequal (divergence(f, [x y]), g)) + % should fail, calls @double: divergence(f, {x y}), g)) +***** test + % 1D fcn in 2d/3d + f = [x y z]; + assert (isequal (divergence(f), 3)) + assert (isequal (divergence(f, {x,y,z}), 3)) + assert (isequal (divergence(f, [x,y,z]), 3)) +***** test + % 2d fcn in 2d/3d + f = sin(exp(x)*y+sinh(z)); + g2 = [diff(f,x); diff(f,y)]; + l2 = diff(g2(1),x) + diff(g2(2),y); + g3 = [diff(f,x); diff(f,y); diff(f,z)]; + l3 = diff(g3(1),x) + diff(g3(2),y) + diff(g3(3),z); + assert (isequal (divergence(g2, {x,y}), l2)) + assert (isequal (divergence(g3, {x,y,z}), l3)) +***** error divergence ([1 2], [sym('x')]) +***** error divergence ([1 2], sym('x'), 42) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/@sym/dirac.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dirac.m +***** error dirac (sym(1), 2) +***** assert (isequaln (dirac (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); +***** test + f1 = dirac(x); + f2 = dirac(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = dirac(A); + f2 = dirac(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = dirac (d); + f = dirac (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/limit.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/limit.m +***** error limit (sym(1), 2, 3, 4, 5) +***** shared x, oo syms x - r = vpasolve(x^2 + 2 == 0, x, 1i); - assert (double (imag(r)^2 - 2), 0, 1e-32) - assert (double (real(r)^2), 0, 1e-32) - r = vpasolve(x^2 + 2 == 0, x, -3i + 5); - assert (double (imag(r)^2 - 2), 0, 1e-32) - assert (double (real(r)^2), 0, 1e-32) + oo = sym(inf); +***** assert (isa (limit(x, x, pi), 'sym')) +***** assert (isequal (limit(x, x, pi), sym(pi))) +***** assert (isequal (limit(sin(x)/x, x, 0), 1)) ***** test - % system - syms x y - f = 3*x^2 - 2*y^2 - 1; - g = x^2 - 2*x + y^2 + 2*y - 8; - r = vpasolve([f; g], [x; y], sym([-1; 1])); - assert (isa (r, 'sym')) - assert (numel (r) == 2) + % left/right-hand limit + assert (isequal (limit(1/x, x, 0, 'right'), oo)) + assert (isequal (limit(1/x, x, 0), oo)) + assert (isequal (limit(1/x, x, 0, 'left'), -oo)) + assert (isequal (limit(1/x, x, oo), 0)) + assert (isequal (limit(sign(x), x, 0, 'left'), -1)) + assert (isequal (limit(sign(x), x, 0, 'right'), 1)) + assert (isequal (limit(sign(x), x, 0, '-'), -1)) + assert (isequal (limit(sign(x), x, 0, '+'), 1)) ***** test - % system, double guess - syms x y - f = 3*x^2 - 2*y^2 - 1; - g = x^2 - 2*x + y^2 + 2*y - 8; - r = vpasolve([f; g], [x; y], [-1.1 1.2]); + % matrix + syms y + A = [x 1/x x*y]; + B = sym([3 sym(1)/3 3*y]); + assert (isequal (limit(A, x, 3), B)) ***** test - % system, double guess - syms x y - f = 3*x^2 - 2*y^2 - 1; - g = x^2 - 2*x + y^2 + 2*y - 8; - r1 = vpasolve([f; g], [x; y], [-1.1]); - r2 = vpasolve([f; g], [x; y], [-1.1 -1.1]); - assert (isequal (r1, r2)) + % omitting arguments + syms a + assert (isequal (limit(a), 0)) + assert (isequal (limit(a*x+a+2), a+2)) + assert (isequal (limit(a*x+a+2, 6), 7*a+2)) ***** test - % system, more eqns than unknowns - syms x y - eqns = [x^3 - x - y == 0; y*exp(x) == 16; log(y) + x == 4*log(sym(2))]; - r = vpasolve (eqns, [x; y], [1; 1]); - A = subs (lhs (eqns), [x; y], r); - err = A - [0; 16; 4*log(sym(2))]; - assert (double (err), zeros (size (err)), 1e-31) --1514:7: SymPyDeprecationWarning: - -non-Expr objects in a Matrix is deprecated. Matrix represents -a mathematical matrix. To represent a container of non-numeric -entities, Use a list of lists, TableForm, NumPy array, or some -other data structure instead. - -See https://docs.sympy.org/latest/explanation/active-deprecations.html#deprecated-non-expr-in-matrix -for details. - -This has been deprecated since SymPy version 1.9. It -will be removed in a future version of SymPy. - - _proc.append(sp.Matrix([[i]])) -10 tests, 10 passed, 0 known failure, 0 skipped -[inst/laguerreL.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/laguerreL.m -***** error laguerreL (1) -***** error laguerreL (1, 2, 3) -***** assert (isequal (laguerreL (0, rand), 1)) + % constants + assert (isequal (limit(sym(6)), 6)) + assert (isequal (limit(sym(6), 7), 6)) + assert (isequal (limit([sym(6) sym(2)], 7), [6 2])) ***** test - x = rand; - assert (isequal (laguerreL (1, x), 1 - x)) + % double constant, with sym limit + a = limit (6, sym(0)); + assert (isa (a, 'sym')) + assert (isequal (a, sym(6))) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/@sym/log.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log.m +***** error log (sym(1), 2) +***** assert (isequaln (log (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); ***** test - x=rand; - y1=laguerreL(2, x); - p2=[.5 -2 1]; - y2=polyval(p2,x); - assert(y1 - y2, 0, 10*eps); + f1 = log(x); + f2 = log(d); + assert( abs(double(f1) - f2) < 1e-15 ) ***** test - x=rand; - y1=laguerreL(3, x); - p3=[-1/6 9/6 -18/6 1]; - y2=polyval(p3,x); - assert(y1 - y2, 0, 20*eps); + D = [d d; d d]; + A = [x x; x x]; + f1 = log(A); + f2 = log(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test - x=rand; - y1=laguerreL(4, x); - p4=[1/24 -16/24 72/24 -96/24 1]; - y2=polyval(p4,x); - assert(y1 - y2, 0, 30*eps) -***** error laguerreL(1.5, 10) -***** error laguerreL([0 1], [1 2 3]) -***** error laguerreL([0 1], [1; 2]) + % round trip + y = sym('y'); + A = log (d); + f = log (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/orth.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/orth.m ***** test - % numerically stable implementation (in n) - L = laguerreL (10, 10); - Lex = 1763/63; - assert (L, Lex, -eps) - L = laguerreL (20, 10); - Lex = -177616901779/14849255421; % e.g., laguerreL(sym(20),10) - assert (L, Lex, -eps) + A = [1 2; 3 6]; + K = orth(A); + L = orth(sym(A)); + assert (isequal (size(L), [2 1])) + dif1 = abs (double(L) - K); + dif2 = abs (double(L) + K); + assert (all (dif1 < 1e-15) || all (dif2 < 1e-15)) ***** test - % vectorized x - L = laguerreL (2, [5 6 7]); - Lex = [3.5 7 11.5]; - assert (L, Lex, eps) + A = [1; 3]; + K = orth(A); + L = orth(sym(A)); + assert (isequal (size(L), [2 1])) + dif1 = abs (double(L) - K); + dif2 = abs (double(L) + K); + assert (all (dif1 < 1e-16) || all (dif2 < 1e-16)) ***** test - L = laguerreL (0, [4 5]); - assert (L, [1 1], eps) + A = sym([1 2; 3 4]); + L = orth(sym(A)); + assert (isequal (size(L), [2 2])) + v = L(:, 1); + w = L(:, 2); + assert (isAlways (v' * v == 1)) + assert (isAlways (w' * w == 1)) + assert (isAlways (v' * w == 0)) ***** test - % vector n - L = laguerreL ([0 1 2 3], [4 5 6 9]); - assert (L, [1 -4 7 -26], eps) + A = sym([1 1; 1 0; 1 0]); + L = orth(sym(A)); + assert (isequal (size(L), [3 2])) + v = L(:, 1); + w = L(:, 2); + assert (isAlways (v' * v == 1)) + assert (isAlways (w' * w == 1)) + assert (isAlways (v' * w == 0)) + % y and z components must be equal + assert (isAlways (v(2) == v(3))) + assert (isAlways (w(2) == w(3))) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/permute.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/permute.m +***** error permute (sym(1)) +***** error permute (sym(1), 2, 3) ***** test - % vector n, scalar x - L = laguerreL ([0 1 2 3], 6); - assert (L, [1 -5 7 1], eps) -***** assert (isa (laguerreL (0, single (1)), 'single')) -***** assert (isa (laguerreL (1, single ([1 2])), 'single')) -***** assert (isa (laguerreL ([1 2], single ([1 2])), 'single')) -18 tests, 18 passed, 0 known failure, 0 skipped -[inst/assumptions.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/assumptions.m + D = round(10*rand(5,3)); + A = sym(D); + B = permute(A, [1 2]); + assert (isequal(B, A)) + B = permute(A, [2 1]); + assert (isequal(B, A.')) ***** test syms x - assert(isempty(assumptions(x))) + A = [1 x]; + B = permute(A, [2 1]); + assert (isequal(B, [1; x])) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/besselk.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselk.m ***** test - x = sym('x', 'positive'); - a = assumptions(x); - assert(~isempty(strfind(a{1}, 'positive'))) + X = [1 2 3; 4 5 6]; + ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; + n = double(ns); + A = double(besselk(ns, X)); + B = besselk(n, X); + assert (all (all (abs (A - B) < 2*eps*abs(A)))) ***** test + % roundtrip syms x - assert(isempty(assumptions(x))) + A = besselk(2, 10); + q = besselk(2, x); + h = function_handle(q); + B = h(10); + assert (abs (A - B) <= eps*abs(A)) +***** error besselk(sym('x')) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/has.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/has.m +***** shared A, x, y + syms x y + A = [sym(pi) 2*sym(pi); x*y x+y]; +***** assert (isequal (has(A, x), [false false; true true])); +***** assert (isequal (has(A, x+y), [false false; false true])); +***** assert (isequal (has(A, 2), [false true; false false])); +***** assert (isequal (has(A, sym(pi)), [true true; false false])); +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/setdiff.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/setdiff.m ***** test - clear variables % for matlab test script - syms x positive - assert(~isempty(assumptions())) - clear x - assert(isempty(assumptions())) + A = sym([1 2 3]); + B = sym([1 2 4]); + C = setdiff(A, B); + D = sym([3]); + assert (isequal (C, D)) ***** test - % make sure we have at least these possible assumptions - A = {'real' 'positive' 'negative' 'integer' 'even' 'odd' 'rational'}; - B = assumptions('possible'); - assert (isempty (setdiff(A, B))) + % one nonsym + A = sym([1 2 3]); + B = [1 2 4]; + C = setdiff(A, B); + D = sym([3]); + assert (isequal (C, D)) ***** test - A = assumptions('possible'); - for i = 1:length(A) - x = sym('x', A{i}); - a = assumptions(x); - assert(strcmp(a{1}, ['x: ' A{i}] )) - s1 = sympy (x); - s2 = ['Symbol(''x'', ' A{i} '=True)']; - assert (strcmp (s1, s2)) - end + % empty + A = sym([1 2 3]); + C = setdiff(A, A); + assert (isempty (C)) ***** test - syms x positive - syms y real - syms z - f = x*y*z; - a = assumptions(f); - assert(length(a) == 2) - assert(~isempty(strfind(a{1}, 'positive'))) - assert(~isempty(strfind(a{2}, 'real'))) + % empty input + A = sym([1 2]); + C = setdiff(A, []); + assert (isequal (C, A) || isequal (C, sym([2 1]))) ***** test - % dict output - syms x positive - syms y real - syms z - f = x*y*z; - [v, d] = assumptions(f, 'dict'); - assert(length(v) == 2) - assert(iscell(v)) - assert(isa(v{1}, 'sym')) - assert(isa(v{2}, 'sym')) - assert(length(d) == 2) - assert(iscell(d)) - assert(isstruct(d{1})) - assert(isstruct(d{2})) + % scalar + syms x + assert (isequal (setdiff([x 1], x), sym(1))) + assert (isempty (setdiff(x, x))) ***** test - %% assumptions on just the vars in an expression - clear variables % for matlab test script - syms x y positive - f = 2*x; - assert(length(assumptions(f))==1) - assert(length(assumptions())==2) + A = interval(sym(1), 3); + B = interval(sym(2), 5); + C = setdiff(A, B); + assert( isequal( C, interval(sym(1), 2, false, true))) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@sym/gradient.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gradient.m +***** shared x,y,z + syms x y z ***** test - %% assumptions in cell/struct - clear variables % for matlab test script - syms x y z w positive - f = {2*x [1 2 y] {1, {z}}}; - assert(length(assumptions())==4) - assert(length(assumptions(f))==3) - clear x y z w - assert(length(assumptions())==3) - assert(length(assumptions(f))==3) + % 1D + f = x^2; + assert (isequal (gradient(f), diff(f,x))) + assert (isequal (gradient(f,{x}), diff(f,x))) + assert (isequal (gradient(f,[x]), diff(f,x))) + assert (isequal (gradient(f,x), diff(f,x))) ***** test - % multiple assumptions - n = sym('n', 'negative', 'even'); - assert (logical (n < 0)) - assert (~(logical (n > 0))) - assert (~(logical (n == -1))) + % const + f = sym(1); + g = sym(0); + assert (isequal (gradient(f), g)) + assert (isequal (gradient(f,x), g)) ***** test - % multiple assumptions: eqn neither true nor false - n = sym('n', 'negative', 'even'); - assert (~isequal (n, sym(true)) && ~isequal (n, sym(false))) + % double const + f = 1; + g = sym(0); + assert (isequal (gradient(f,x), g)) ***** test - %% TODO: rewrite later with https://github.com/gnu-octave/symbolic/issues/622 - a = pycall_sympy__ ('return Symbol("a", real=False)'); - assert (strcmp (assumptions (a), {'a: ~real'})) -13 tests, 13 passed, 0 known failure, 0 skipped -[inst/@logical/isAlways.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@logical/isAlways.m -***** error isAlways (true, false) -***** assert(isAlways(true)) -***** assert(~isAlways(false)) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/vpa.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/vpa.m + % 1D fcn in 2d/3d + f = sin(y); + assert (isequal (gradient(f), diff(f,y))) + assert (isequal (gradient(f, {x,y}), [sym(0); diff(f,y)])) + assert (isequal (gradient(f, [x y]), [sym(0); diff(f,y)])) + assert (isequal (size (gradient(f, {x,y})), [2 1])) + assert (isequal (gradient(f, {x,y,z}), [0; diff(f,y); 0])) + assert (isequal (gradient(f, [x y z]), [0; diff(f,y); 0])) + assert (isequal (size (gradient(f, {x,y,z})), [3 1])) ***** test - a = vpa(0, 4); - b = double(a); - assert(b == 0) + % grad is column vector + f = sin(y); + assert (isequal (size (gradient(f, {x,y})), [2 1])) + assert (isequal (size (gradient(f, {x,y,z})), [3 1])) + assert (isequal (size (gradient(f, [x y])), [2 1])) + assert (isequal (size (gradient(f, [x;y])), [2 1])) ***** test - a = vpa(pi, 4); - b = sin(a); - assert(abs(double(b)) < 1e-4) + % 2d fcn in 2d/3d + f = sin(exp(x)*y); + g2 = [diff(f,x); diff(f,y)]; + g3 = [diff(f,x); diff(f,y); diff(f,z)]; + assert (isequal (gradient(f), g2)) + assert (isequal (gradient(f, {x,y}), g2)) + assert (isequal (gradient(f, {x,y,z}), g3)) ***** test - % vpa from double is ok, doesn't warn (c.f., sym(2.3)) - a = vpa(2.3); - assert(true) + % 2d fcn in 2d/3d + f = sin(exp(x)*y+sinh(z)); + g2 = [diff(f,x); diff(f,y)]; + g3 = [diff(f,x); diff(f,y); diff(f,z)]; + assert (isequal (gradient(f), g3)) + assert (isequal (gradient(f, {x,y}), g2)) + assert (isequal (gradient(f, {x,y,z}), g3)) +***** error gradient(sym('x'), 42, 42) +***** error gradient([sym('x') sym('x')]) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/@sym/sinhint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinhint.m +***** error sinhint (sym(1), 2) +***** xtest + assert (isequaln (sinhint (sym(nan)), sym(nan))) +!!!!! known failure +assert (isequaln (sinhint (sym (nan)), sym (nan))) failed +***** shared x, d + d = 1; + x = sym('1'); ***** test - % vpa from double not more than 16 digits - a = vpa(sqrt(pi), 32); - b = sin(a^2); - assert(abs(double(b)) > 1e-20) - assert(abs(double(b)) < 1e-15) + f1 = sinhint(x); + f2 = 1.057250875375728514572; + assert( abs(double(f1) - f2) < 1e-15 ) ***** test - a = vpa(sym(pi), 32); - b = sin(a); - assert(abs(double(b)) < 1e-30) + D = [d d; d d]; + A = [x x; x x]; + f1 = sinhint(A); + f2 = 1.057250875375728514572; + f2 = [f2 f2; f2 f2]; + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test - a = vpa(sym(pi), 256); - b = sin(a); - assert(abs(double(b)) < 1e-256) + % round trip + y = sym('y'); + A = sinhint (d); + f = sinhint (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 4 passed, 1 known failure, 0 skipped +[inst/@sym/partfrac.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/partfrac.m ***** test - % pi str - a = vpa('pi', 32); - b = sin(a); - assert(abs(double(b)) < 1e-32) + % basic + syms x y z + assert(logical( partfrac(y/(x + 2)/(x + 1),x) == -y/(x + 2) + y/(x + 1) )) + assert(logical( factor(partfrac(x^2/(x^2 - y^2),y)) == factor(x/(2*(x + y)) + x/(2*(x - y)) ))) + assert(logical( factor(partfrac(x^2/(x^2 - y^2),x)) == factor(-y/(2*(x + y)) + y/(2*(x - y)) + 1 ))) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@sym/acosd.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acosd.m +***** error acosd (sym(1), 2) +***** assert (isequaln (acosd (sym(nan)), sym(nan))) ***** test - % pi str - a = vpa('pi', 32); - b = vpa(sym('pi'), 32); - assert (double (a - b) == 0) + f1 = acosd (sym(1)/2); + f2 = acosd (1/2); + assert (double (f1), f2, -eps) ***** test - spi = sym(pi); - a = vpa(spi, 10); - b = double(a); - assert(~isAlways(spi == a)) + D = [1 2; 3 4]/4; + A = sym([1 2; 3 4])/4; + f1 = acosd (A); + f2 = acosd (D); + assert (double (f1), f2, -eps) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/uplus.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/uplus.m ***** test - % matrix of sym - a = [sym(pi) 0; sym(1)/2 1]; - b = [pi 0; 0.5 1]; - c = vpa(a, 6); - assert(max(max(abs(double(c)-b))) < 1e-6) + syms x + assert (isa (+x, 'sym')) + assert (isequal (+x, x)) ***** test - % matrix of double - b = [pi 0; 0.5 1]; - c = vpa(b, 6); - assert(max(max(abs(double(c)-b))) < 1e-6) + A = sym([0 -1 inf]); + assert( isequal ( +A, A)) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/qr.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/qr.m +***** error qr (sym(1), 2, 3) +***** error [Q, R, P] = qr (sym(1)) +***** error qr (sym(1), 1) ***** test - % integer type - a = vpa(int32(6), 64); - b = vpa(6, 64); - assert (isequal (a, b)) + % scalar + [q, r] = qr(sym(6)); + assert (isequal (q, sym(1))) + assert (isequal (r, sym(6))) ***** test - % matrix of int - b = int32([pi 0; 6.25 1]); - c = vpa(b, 6); - assert (isequal (double(c), [3 0; 6 1])) + syms x positive + [q, r] = qr(x); + assert (isequal (q*r, x)) + assert (isequal (q, sym(1))) + assert (isequal (r, x)) ***** test - % can pass pi directly to vpa - a = vpa(sym(pi), 128); - b = vpa(pi, 128); - assert (isequal (a, b)) + % trickier if x could be zero, fails on 1.8 <= SymPy <= 1.10.1 + syms x + [q, r] = qr(x); + if (pycall_sympy__ ('return Version(spver) > Version("1.10.1")')) + assert (isequal (q*r, x)) + end ***** test - % if sym does sth special for e so should vpa - a = vpa(sym(exp(1)), 64); - b = vpa(exp(1), 64); - assert (isequal (a, b)) + A = [1 2; 3 4]; + B = sym(A); + [Q, R] = qr(B); + assert (isequal (Q*R, B)) + assert (isequal (R(2,1), sym(0))) + assert (isequal (Q(:,1)'*Q(:,2), sym(0))) + %[QA, RA] = qr(A) + %assert ( max(max(double(Q)-QA)) <= 10*eps) + %assert ( max(max(double(Q)-QA)) <= 10*eps) ***** test - % can pass pi directly to vpa, even in array - a = vpa(sym([2 pi]), 128); - b = vpa([2 pi], 128); - assert (isequal (a, b)) + % non square: tall skinny + A = sym([1 2; 3 4; 5 6]); + [Q, R] = qr (A, 0); + assert (size (Q), [3 2]) + assert (size (R), [2 2]) + assert (isequal (Q*R, A)) ***** test - % can pass i directly to vpa - a = vpa(sym(i)); - b = vpa(i); + % non square: short fat + A = sym([1 2 3; 4 5 6]); + [Q, R] = qr (A); + assert (isequal (Q*R, A)) ***** test - % 'i' and 'I' just make vars - a = vpa(sym(1i)); - b = vpa('i'); - c = vpa('I'); - assert (~isequal (a, b)) - assert (~isequal (a, c)) + % non square: short fat, rank deficient + A = sym([1 2 3; 2 4 6]); + [Q, R] = qr (A); + assert (isequal (Q*R, A)) + A = sym([1 2 3; 2 4 6; 0 0 0]); + [Q, R] = qr (A); + assert (isequal (Q*R, A)) ***** test - % '1i' and '1j' strings - a = vpa(sym(1i)); - b = vpa('1i'); - c = vpa('1j'); - assert (isequal (a, b)) - assert (isequal (a, c)) + % rank deficient + A = sym([1 2 3; 2 4 6; 0 0 0]); + [Q, R] = qr (A); + assert (isequal (Q*R, A)) + A = sym([1 2 3; 2 5 6; 0 0 0]); + [Q, R] = qr (A); + assert (isequal (Q*R, A)) ***** test - % Issue #868, precision loss on '0.33j' - a = vpa('0.33j', 40); - b = vpa('0.33i', 40); - assert (double (abs (imag (a)*100/33) - 1) < 1e-39) - assert (isequal (a, b)) + % single return value R not Q + assert (isequal (qr (sym(4)), sym(4))) +12 tests, 12 passed, 0 known failure, 0 skipped +[inst/@sym/symvar.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symvar.m +***** error symvar (sym(1), 2, 3) ***** test - % inf/-inf do not become symbol('inf') - S = {'oo', '-oo', 'inf', 'Inf', '-inf', '+inf'}; - for j = 1:length(S) - a = vpa(S{j}); - b = vpa(sym(S{j})); - assert (isequal (a, b)) - end + %% some empty cases + assert (isempty (symvar (sym(1)))); + assert (isempty (symvar (sym(1),1))); + assert (isempty (symvar (sym(1),0))); + assert (isempty (symvar (sym('x'),0))); +***** shared x,y,f + x=sym('x'); y=sym('y'); f=x^2+3*x*y-y^2; +***** assert (isequal (symvar (f), [x y])); +***** assert (isequal (symvar (f, 1), x)); ***** test - a = vpa('2.3', 20); - s = strtrim(disp(a, 'flat')); - assert (strcmp (s, '2.3000000000000000000')) + %% closest to x + syms x y a b c xx + alpha = sym('alpha'); + % https://www.mathworks.com/matlabcentral/newsreader/view_thread/237730 + assert( isequal (symvar (b*xx*exp(alpha) + c*sin(a*y), 2), [xx y])) + %% tests to match Matlab R2013b +***** shared x,y,z,a,b,c,X,Y,Z + syms x y z a b c X Y Z ***** test - % these should *not* be the same - a = vpa(2.3, 40); - b = vpa('2.3', 40); - sa = sympy (a); - sb = sympy (b); - assert (~isequal (a, b)) - assert (abs(double(a - b)) > 1e-20) - assert (abs(double(a - b)) < 1e-15) - assert (~strcmp(sa, sb)) + %% X,Y,Z first if no 2nd argument + s = prod([x y z a b c X Y Z]); + assert (isequal( symvar (s), [X Y Z a b c x y z] )) ***** test - % these should *not* be the same - x = vpa('1/3', 32); - y = vpa(sym(1)/3, 32); - z = vpa(1/3, 32); - assert (isequal (x, y)) - assert (~isequal (x, z)) + %% uppercase have *low* priority with argument? + s = prod([x y z a b c X Y Z]); + assert (isequal (symvar (s,4), [x, y, z, c] )) ***** test - % big integers - a = int64(12345678); - a = a*a; - b = vpa(a); - c = vpa('152415765279684'); - assert (isequal (b, c)) + %% closest to x + s = prod([y z a b c Y Z]); + assert (isequal( symvar (s,6), [ y, z, c, b, a, Y] )) + s = prod([a b c Y Z]); + assert (isequal( symvar (s,4), [ c, b, a, Y] )) ***** test - % big integers (workaround poor num2str, works in 4.0?) - a = int64(1234567891); a = a*a; - b = vpa(a); - c = vpa('1524157877488187881'); - assert (isequal (b, c)) + %% upper case letters in correct order + s = X*Y*Z; + assert (isequal( symvar (s,3), [X Y Z] )) ***** test - % isequal and other comparisons - a = vpa ("2/3", 32); - b = vpa ("2/3", 64); - assert (~ logical (a == b)) - assert (~ isequal (a, b)) - a = vpa ("1/3", 32); - b = vpa ("1/3", 64); - assert (~ logical (a == b)) - assert (~ isequal (a, b)) - a = vpa ("0.1", 32); - b = vpa ("0.1", 64); - assert (~ logical (a == b)) - assert (~ isequal (a, b)) + % diff. assumptions make diff. symbols + x1 = sym('x'); + x2 = sym('x', 'positive'); + f = x1*x2; + assert (length (symvar (f)) == 2) + z = symvar (f, 1); + assert (xor (isequal (z, x1), isequal (z, x2))) +10 tests, 10 passed, 0 known failure, 0 skipped +[inst/@sym/resize.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/resize.m ***** test - % isequal with array: Issue #1285 - a = vpa ("2/3", 32); - b = vpa ("2/3", 64); - assert (~ isequal ([a 2*a], [b 2*b])) -***** xtest - % non-equality of vpa that "might be" be integers: Issue #1285 - a = vpa ("123", 32); - b = vpa ("123", 64); - assert (~ logical (a == b)) -!!!!! known failure -assert (!logical (a == b)) failed -***** xtest - % non-equality of vpa that "might be" be integers: Issue #1285 - if (pycall_sympy__ ('return Version(spver) >= Version("1.12.1")')) - a = vpa ("123", 32); - b = vpa ("123", 64); - assert (~ isequal (a, b)) + B = sym([1 0 0; 0 0 0]); + assert (isequal (resize (sym(1), 2, 3), B)) + assert (isequal (resize (sym(1), [2 3]), B)) +***** test + B = sym([1 0; 0 0]); + assert (isequal (resize (sym(1), 2), B)) +***** test + A = sym([pi 2; 3 4]); + assert (isequal (resize (A, 1), sym(pi))) +***** assert (isequal (size (resize (sym(1), 0, 0)), [0 0])) +***** assert (isequal (size (resize (sym(1), 6, 0)), [6 0])) +***** assert (isequal (size (resize (sym(1), 0, 3)), [0 3])) +***** error resize (sym(1)) +***** error resize (sym(1), 2, 3, 4) +***** error resize (sym(1), [2 3 4]) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/@sym/sym2poly.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sym2poly.m +***** shared x,y,a,b,c + syms x y a b c +***** assert (isequal (sym2poly (x^2 + 3*x - 4), [1 3 -4])) +***** assert (isequal (sym2poly (x^6 - x^3), [1 0 0 -1 0 0 0])) +***** assert (isequal (sym2poly (x^2 + 3*x - 4, x), [1 3 -4])) +***** assert (norm (sym2poly (pi*x^2 + exp(sym(1))) - [pi 0 exp(1)]) < 10*eps) +***** assert (isa (sym2poly (x^2 + 3*x - 4), 'double')) +***** assert (isa (sym2poly (x^2 + 3*x - 4, x), 'sym')) +***** assert (isequal (sym2poly (x^2+y*x, x), [sym(1) y sym(0)])) +***** assert (isequal (sym2poly (x^2+y*x, y), [x x^2])) +***** assert (isequal (sym2poly (poly2sym ([a b c], x), x), [a b c])) +***** assert (isequal (poly2sym (sym2poly(a*x^2 + c, x), x), a*x^2 + c)) +***** assert (isequal (sym2poly (poly2sym ([1 2 3])), [1 2 3])) +***** error + % too many symbols for single-input + p = a*x^2 + 2; + c = sym2poly (p); +***** assert (isequal (sym2poly (sym(5)), sym(5))) +13 tests, 13 passed, 0 known failure, 0 skipped +[inst/@sym/cosh.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosh.m +***** error cosh (sym(1), 2) +***** assert (isequaln (cosh (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); +***** test + f1 = cosh(x); + f2 = cosh(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = cosh(A); + f2 = cosh(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = cosh (d); + f = cosh (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/sym.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sym.m +***** test + % integers + x = sym ('2'); + y = sym (2); + assert (isa (x, 'sym')) + assert (isa (y, 'sym')) + assert (isequal (x, y)) +***** test + % infinity + for x = {'inf', '-inf', inf, -inf, 'Inf'} + y = sym (x{1}); + assert (isa (y, 'sym')) + assert (isinf (double (y))) + assert (isinf (y)) end -***** warning vpa ('sqrt(2.0)'); -***** warning - a = vpa('2**0.5'); - b = vpa(sqrt(sym(2))); - assert (isequal (a, b)) ***** test - a = vpa('2.3e1'); - b = vpa(' 2.3e+1 '); - assert (isequal (a, b)) - a = vpa('21e-1'); - b = vpa('2.1'); - assert (isequal (a, b)) + % pi + x = sym ('pi'); + assert (isa (x, 'sym')) + assert (isequal (sin (x), sym (0))) + assert (abs (double (x) - pi) < 2*eps ) + x = sym (pi); + assert (isa (x, 'sym')) + assert (isequal (sin (x), sym (0))) + assert (abs (double (x) - pi) < 2*eps ) ***** test - % Issue #859, operations on immutable matrices - x = vpa (sym ([1 2])); - % If vpa no longer makes an ImmutableDenseMatrix, - % may need to adjust or remove this test. - assert (~ isempty (strfind (sympy (x), 'Immutable'))) - y = sin(x); - y2 = [sin(vpa(sym(1))) sin(vpa(sym(2)))]; - assert (isequal (y, y2)) -34 tests, 33 passed, 1 known failure, 0 skipped -[inst/assume.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/assume.m -***** error - a = assume('a', 'real') -***** error - assume positive integer -***** error - assume x y -***** error - assume x clear real -***** error - assume a>0 -***** error - assume 'x/pi' integer + % rationals + x = sym(1) / 3; + assert (isa (x, 'sym')) + assert (isequal (3*x - 1, sym (0))) + x = 1 / sym (3); + assert (isa (x, 'sym')) + assert (isequal (3*x - 1, sym (0))) + x = sym ('1/3'); + assert (isa (x, 'sym')) + assert (isequal (3*x - 1, sym (0))) ***** test - syms x - assume x positive - a = assumptions(x); - assert(strcmp(a, 'x: positive')) - assume x even - a = assumptions(x); - assert(strcmp(a, 'x: even')) + % passing small rationals + x = sym ('1/2'); + assert (double (x) == 1/2 ) + assert (isequal (2*x, sym (1))) +***** warning x = sym (1/2); ***** test - % multiple assumptions + % passing small rationals w/o quotes: despite the warning, + % it should work + s = warning ('off', 'OctSymPy:sym:rationalapprox'); + x = sym (1/2); + warning (s) + assert (double (x) == 1/2 ) + assert (isequal (2*x, sym (1))) +***** test + assert (isa (sym (pi), 'sym')) + assert (isa (sym ('beta'), 'sym')) +***** test + % sym from array + D = [0 1; 2 3]; + A = [sym(0) 1; sym(2) 3]; + assert (isa (sym (D), 'sym')) + assert (isequal (size (sym (D)), size (D))) + assert (isequal (sym (D), A)) +***** test + % more sym from array syms x - assume x positive integer - [tilde, a] = assumptions(x, 'dict'); - assert(a{1}.integer) - assert(a{1}.positive) + A = [x x]; + assert (isequal (sym (A), A)) + A = [1 x]; + assert (isequal (sym (A), A)) ***** test - % does workspace - syms x positive - x2 = x; - f = sin(x); - assume x negative - a = assumptions(x); - assert(strcmp(a, 'x: negative')) - a = assumptions(x2); - assert(strcmp(a, 'x: negative')) - a = assumptions(f); - assert(strcmp(a, 'x: negative')) -***** error - % does not create new variable x - clear x - assume x real -***** error - % no explicit variable named x + %% assumptions and clearing them + clear variables % for matlab test script + x = sym('x', 'real'); + f = {x {2*x}}; + asm = assumptions(); + assert ( ~isempty(asm)) + s = warning ('off', 'OctSymPy:deprecated'); + x = sym('x', 'clear'); + warning (s) + asm = assumptions(); + assert ( isempty(asm)) +***** test + %% matlab compat, syms x clear should add x to workspace + x = sym('x', 'real'); + f = 2*x; clear x - f = 2*sym('x'); - assume x real + assert (~logical(exist('x', 'var'))) + s = warning ('off', 'OctSymPy:deprecated'); + x = sym('x', 'clear'); + warning (s) + assert (logical(exist('x', 'var'))) ***** test - % clear does workspace - syms x positive + %% assumptions should work if x is already a sym + x = sym('x'); + x = sym(x, 'real'); + assert (~isempty(assumptions(x))) +***** test + %% likewise for clear + x = sym('x', 'real'); f = 2*x; - assume x clear - assert (isempty (assumptions (f))); - assert (isempty (assumptions ())); + s = warning ('off', 'OctSymPy:deprecated'); + x = sym(x, 'clear'); + warning (s) + assert (isempty(assumptions(x))) + assert (isempty(assumptions(f))) ***** test - syms x y - f = sin (2*x); - assume x y real - assert (strcmp (assumptions (x), 'x: real')) - assert (strcmp (assumptions (y), 'y: real')) - assert (strcmp (assumptions (f), 'x: real')) + % bool + t = sym (false); + t = sym (true); + assert (logical (t)) ***** test - syms x y - f = sin (2*x); - assume x y positive even - assert (strcmp (assumptions (x), 'x: positive, even') || strcmp (assumptions (x), 'x: even, positive')) - assert (strcmp (assumptions (y), 'y: positive, even') || strcmp (assumptions (y), 'y: even, positive')) - assert (strcmp (assumptions (f), 'x: positive, even') || strcmp (assumptions (f), 'x: even, positive')) + % bool vec/mat + a = sym (1); + t = sym ([true false]); + assert (isequal (t, [a == 1 a == 0])) + t = sym ([true false; false true]); + assert (isequal (t, [a == 1 a == 0; a == 0 a == 1])) ***** test - % works from variable names not symbols - syms x y - a = [x y]; - assume a real - assert (strcmp (assumptions (x), 'x: real')) - assert (strcmp (assumptions (y), 'y: real')) + % symbolic matrix + A = sym ('A', [2 3]); + assert (isa (A, 'sym')) + assert (isequal (size (A), [2 3])) + A(1, 1) = 7; + assert (isa (A, 'sym')) + A = A + 1; + assert (isa (A, 'sym')) ***** test - % works from variable names not symbols - y = sym('x'); - f = 2*y; - assume y real - assert (strcmp (assumptions (f), 'x: real')) + % symbolic matrix, symbolic but Integer size + A = sym ('A', sym([2 3])); + assert (isa (A, 'sym')) + assert (isequal (size (A), [2 3])) ***** test - % matrix of symbols - syms a b c d - A = [a b; c d]; - assume A real - assert (strcmp (assumptions (a), 'a: real')) - assert (strcmp (assumptions (b), 'b: real')) - assert (strcmp (assumptions (c), 'c: real')) - assert (strcmp (assumptions (d), 'd: real')) + % symbolic matrix, subs in for size + syms n m integer + A = sym ('A', [n m]); + B = subs (A, [n m], [5 6]); + assert (isa (B, 'sym')) + assert (isequal (size (B), [5 6])) +***** error sym('2*a', [2 3]) +***** error sym(2*sym('a'), [2 3]) +***** error sym('1', [2 3]) +***** error sym(1, [2 3]) +***** error + % TODO: symbolic tensor, maybe supported someday + sym('a', [2 3 4]) ***** test - % assume after symfun - clear x - syms f(x) - assume x real - assert (~ isempty (assumptions (formula (f)))) - assert (~ isempty (assumptions (argnames (f)))) -18 tests, 18 passed, 0 known failure, 0 skipped -[inst/syms.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/syms.m + % 50 shapes of empty + a = sym (ones (0, 3)); + assert (isa (a, 'sym')) + assert (isequal (size (a), [0 3])) + a = sym (ones (2, 0)); + assert (isequal (size (a), [2 0])) + a = sym ([]); + assert (isequal (size (a), [0 0])) ***** test - %% assumptions - syms x real - x2 = sym('x', 'real'); - assert (isequal (x, x2)) + % moar empty + a = sym ('a', [0 3]); + assert (isa (a, 'sym')) + assert (isequal (size (a), [0 3])) + a = sym ('a', [2 0]); + assert (isa (a, 'sym')) + assert (isequal (size (a), [2 0])) ***** test - % assumptions and clearing them on a symbol - syms x real - assert (~isempty (assumptions (x))) - syms x - assert (isempty (assumptions (x))) + % embedded sympy commands, various quotes, issue #143 + a = sym ('a'); + a1 = sym ('Symbol("a")'); + a2 = sym ('Symbol(''a'')'); + assert (isequal (a, a1)) + assert (isequal (a, a2)) + % Octave only, and eval to hide from Matlab parser + if exist ('OCTAVE_VERSION', 'builtin') + eval( 'a3 = sym("Symbol(''a'')");' ); + eval( 'a4 = sym("Symbol(\"a\")");' ); + assert (isequal (a, a3)) + assert (isequal (a, a4)) + end ***** test - % Note SMT would clear syms in existing expressions - syms x real - f = {x {2*x} cos(x/2)}; - assert (~isempty (assumptions (f))) - syms x - % but we do not: this would have to toggle for pure SMT compat - assert (~isempty (assumptions (f))) - % assert (isempty (assumptions (f))) -***** error - syms x clear -***** error - syms x positive y -***** error - % this sometimes catches typos or errors in assumption names - % (if you need careful checking, use sym not syms) - syms x positive evne -***** error - syms positive integer + % complex + x = sym(1 + 2i); + assert (isequal (x, sym(1)+sym(2)*1i)) ***** test - % does not create a variable called positive - syms x positive integer - assert (logical(exist('x', 'var'))) - assert (~logical(exist('positive', 'var'))) + % doubles bigger than int32 INTMAX should not fail + d = 4294967295; + a = sym (d); + assert (isequal (double (a), d)) + d = d + 123456; + a = sym (d); + assert (isequal (double (a), d)) ***** test - % Issue #885 - syms S(x) I(x) O(x) + % int32 integer types + a = sym (100); + b = sym (int32 (100)); + assert (isequal (a, b)) ***** test - % Issue #290 - syms FF(x) - syms ff(x) - syms Eq(x) + % int32 MAXINT integers + a = sym ('2147483647'); + b = sym (int32 (2147483647)); + assert (isequal (a, b)) + a = sym ('-2147483647'); + b = sym (int32 (-2147483647)); + assert (isequal (a, b)) + a = sym ('4294967295'); + b = sym (uint32 (4294967295)); + assert (isequal (a, b)) ***** test - % Issue #290 - syms beta(x) + % int64 integer types + a = sym ('123456789012345'); + b = sym (int64(123456789012345)); + c = sym (uint64(123456789012345)); + assert (isequal (a, b)) + assert (isequal (a, c)) ***** test - syms x real - syms f(x) - assert (~ isempty (assumptions (x))) + % integer arrays + a = int64 ([1 2 100]); + s = sym (a); + assert (isequal (double (a), [1 2 100])) ***** test - syms x real - f(x) = symfun(sym('f(x)'), x); - assert (~ isempty (assumptions (x))) - assert (~ isempty (assumptions (argnames (f)))) -13 tests, 13 passed, 0 known failure, 0 skipped -[inst/catalan.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/catalan.m -***** error catalan (sym(1)) -***** assert (double (catalan ()) > 0.915965594177) -***** assert (double (catalan ()) < 0.915965594178) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/heaviside.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/heaviside.m -***** assert (heaviside (0) == 0.5) -***** assert (isnan (heaviside (nan))) -***** assert (isequal (heaviside ([-inf -eps 0 eps inf]), [0 0 0.5 1 1])) -***** assert (isequaln (heaviside ([-1 1 nan]), [0 1 nan])) -***** assert (heaviside (0, 1) == 1) -***** error heaviside (1i) -***** assert (isa (heaviside (single (0)), 'single')) -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@symfun/symfun.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/symfun.m -***** error symfun (1, sym('x'), 3) -***** error symfun ('f', sym('x')) + % bigger int64 integer types + q = int64 (123456789012345); + w = 10000*q + 123; + a = sym ('1234567890123450123'); + b = sym (w); + assert (isequal (a, b)) ***** test - syms x y - syms f(x) - assert(isa(f,'symfun')) - clear f - f(x,y) = sym('f(x,y)'); - assert(isa(f,'symfun')) + % sym(double) heuristic + s = warning ('off', 'OctSymPy:sym:rationalapprox'); + x = sym(2*pi/3); + assert (isequal (x/sym(pi), sym(2)/3)) + x = sym(22*pi); + assert (isequal (x/sym(pi), sym(22))) + x = sym(pi/123); + assert (isequal (x/sym(pi), sym(1)/123)) + warning (s) ***** test - % symfuns are syms as well - syms x - f(x) = 2*x; - assert (isa (f, 'symfun')) - assert (isa (f, 'sym')) - assert (isequal (f(3), 6)) - assert (isequal (f(sin(x)), 2*sin(x))) + % sym(double) with 'r': no warning + a = 0.1; + x = sym(a, 'r'); + assert (isequal (x, sym(1)/10)) ***** test - syms x y - f = symfun(sym('f(x)'), {x}); - assert(isa(f, 'symfun')) - f = symfun(sym('f(x,y)'), [x y]); - assert(isa(f, 'symfun')) - f = symfun(sym('f(x,y)'), {x y}); - assert(isa(f, 'symfun')) + % sym(double) array with 'r': no warning + a = [0.1 0.2]; + x = sym(a, 'r'); + assert (isequal (x, [sym(a(1), 'r') sym(a(2), 'r')])) ***** test - % rhs is not sym - syms x - f = symfun(8, x); - assert (isa (f,'symfun')) - assert (isequal (f(10), sym(8))) + % sym(double) array with 'f': no warning + a = [0.1 0.2]; + x = sym(a, 'f'); + assert (isequal (x, [sym(a(1), 'f') sym(a(2), 'f')])) ***** test - % vector symfun - syms x y - F(x,y) = [1; 2*x; y; y*sin(x)]; - assert (isa (F, 'symfun')) - assert (isa (F, 'sym')) - assert (isequal (F(sym(pi)/2,4) , [sym(1); sym(pi); 4; 4] )) + % sym(double, 'f') + a = 0.1; + x = sym(a, 'f'); + assert (~isequal (x, sym(1)/10)) + assert (isequal (x, sym('3602879701896397')/sym('36028797018963968'))) ***** test - x = sym('x'); - y = sym('y'); - f(x) = sym('f(x)'); - g(x,y) = sym('g(x,y)'); - % make sure these don't fail - f(1); - g(1,2); - g(x,y); - diff(g, x); - diff(g, y); + x = sym(pi, 'f'); + assert (~isequal (x, sym('pi'))) + assert (isequal (x, sym('884279719003555')/sym('281474976710656'))) ***** test - % defining 1D symfun in terms of a 2D symfun - syms x y t - syms 'g(x,y)' - f(t) = g(t,t); - f(5); - assert (length (argnames (f)) == 1) - assert (isequal (argnames (f), t)) - assert (isequal( formula(diff(f,x)), sym(0))) + q = sym('3602879701896397')/sym('36028797018963968'); + x = sym(1 + 0.1i, 'f'); + assert (isequal (x, 1 + 1i*q)) + x = sym(0.1 + 0.1i, 'f'); + assert (isequal (x, q + 1i*q)) ***** test - % replace g with shorter and specific fcn - syms x g(x) - g; - g(x) = 2*x; - assert( isequal (g(5), 10)) + assert (isequal (sym(inf, 'f'), sym(inf))) + assert (isequal (sym(-inf, 'f'), sym(-inf))) + assert (isequaln (sym(nan, 'f'), sym(nan))) + assert (isequal (sym(complex(inf, -inf), 'f'), sym(complex(inf, -inf)))) + assert (isequaln (sym(complex(nan, inf), 'f'), sym(complex(nan, inf)))) + assert (isequaln (sym(complex(-inf, nan), 'f'), sym(complex(-inf, nan)))) ***** test - % octave <= 3.8 needs quotes on 2D symfuns, so make sure it works - syms x y - syms 'f(x)' - syms 'g(x,y)' - assert (isa (f, 'symfun')) - assert (isa (g, 'symfun')) + assert (isequal (sym (sqrt(2), 'r'), sqrt (sym (2)))) + assert (isequal (sym (sqrt(12345), 'r'), sqrt (sym (12345)))) ***** test - % Bug #41: Octave <= 3.8 parser fails without quotes around 2D fcn - syms x y - eval('syms g(x,y)') - assert (isa (g, 'symfun')) + % symbols with special sympy names + syms Ei Eq + assert (~isempty (regexp (sympy (Eq), '^Symbol'))) + assert (~isempty (regexp (sympy (Ei), '^Symbol'))) ***** test - % and these days it works without eval trick - syms g(x,y) - assert (isa (g, 'symfun')) + % more symbols with special sympy names + x = sym('FF'); + assert (~isempty (regexp (x.pickle, '^Symbol'))) + x = sym('ff'); + assert (~isempty (regexp (x.pickle, '^Symbol'))) ***** test - % syms f(x) without defining x - clear x - syms f(x) - assert(isa(f, 'symfun')) - assert(isa(x, 'sym')) + % E can be a sym not just exp(sym(1)) + syms E + assert (~logical (E == exp(sym(1)))) ***** test - % SMT compat: symfun indep var overwrites existing var - t = 6; - syms f(t) - assert (logical (t ~= 6)) + % e can be a symbol, not exp(sym(1)) + syms e + assert (~ logical (e == exp(sym(1)))) ***** test - % SMT compat: symfun indep var overwrites existing var, even if sym + % double e + x = sym (exp (1)); + y = exp (sym (1)); + assert (isequal (x, y)) + if (exist ('OCTAVE_VERSION', 'builtin')) + x = sym (e); + assert (isequal (x, y)) + end +***** test + x = sym (-exp (1)); + y = -exp (sym (1)); + assert (isequal (x, y)) +***** assert (~ isequal (sym (exp(1)), sym (exp(1), 'f'))) +***** warning sym (1e16); +***** warning sym (-1e16); +***** warning sym (10.33); +***** warning sym (-5.23); +***** warning sym (sqrt (1.4142135623731)); +***** warning sym ([1.2 1.3]); +***** error + x = sym ('x', 'positive2'); +***** error + x = sym ('x', 'integer', 'positive2'); +***** error + x = sym ('x', 'integer2', 'positive'); +***** error + x = sym ('-pi', 'positive') +***** error + x = sym ('pi', 'integer') +***** test + % multiple assumptions + n = sym ('n', 'negative', 'even'); + a = assumptions (n); + assert (strcmp (a, 'n: negative, even') || strcmp (a, 'n: even, negative')) +***** error + % multiple assumptions as a list + % TODO: should this be allowed? + n = sym ('n', {'negative', 'even'}); + a = assumptions (n); + assert (strcmp (a, 'n: negative, even') || strcmp (a, 'n: even, negative')) +***** error + n = sym ('n', {{'negative', 'even'}}); +***** test + % save/load sym objects syms x - t = x; - syms f(t) - assert (~ logical (t == x)) + y = 2*x; + a = 42; + myfile = tempname (); + save (myfile, 'x', 'y', 'a') + clear x y a + load (myfile) + assert (isequal (y, 2*x)) + assert (a == 42) + if (exist ('OCTAVE_VERSION', 'builtin')) + assert (unlink (myfile) == 0) + else + delete ([myfile '.mat']) + end +***** test + a = sym ('2.1'); + b = sym (21) / 10; + %% https://github.com/sympy/sympy/issues/11703 + assert (pycall_sympy__ ('return _ins[0] == _ins[1] and hash(_ins[0]) == hash(_ins[1])', a, b)) +***** test + % issue #706 + a = sym('Float("1.23")'); + assert (~ isempty (strfind (char (a), '.'))) +***** assert (isequal (sym({1 2 'a'}), [sym(1) sym(2) sym('a')])); +***** error sym({1 2 'a'}, 'positive'); +***** error sym({'a' 'b'}, 'positive'); +***** test + a = sym ('--1'); + b = sym ('---1'); + assert (isequal (a, sym (1))) + assert (isequal (b, sym (-1))) +***** test + % num2cell works on sym arrays + syms x + C1 = num2cell ([x 2 3; 4 5 6*x]); + assert (iscell (C1)) + assert (isequal (size (C1), [2 3])) + assert (isequal (C1{1,1}, x)) + assert (isequal (C1{2,3}, 6*x)) + assert (isequal (C1{1,3}, sym(3))) + assert (isa (C1{1,3}, 'sym')) ***** test + % function_handle + f = @(x, y) y*sin(x); syms x y - f(x) = x^2; - g(x,y) = sym('g(x,y)'); - f2 = 2*f; - assert( isequal (f2(4), 32)) - assert( isa(f2, 'symfun')) - assert( isa(2*g, 'symfun')) - assert( isa(0*g, 'symfun')) % in SMT, this is the zero symfun + assert (isequal (sym (f), y*sin(x))); + f = @(x) 42; + assert (isequal (sym (f), sym (42))); + f = @() 42; + assert (isequal (sym (f), sym (42))); +***** error + % function_handle + f = @(x) A*sin(x); + sym (f) ***** test - % syms has its own parsing code, check it works - syms f(x,y) - g = f; - syms f(x, y) + % Issue #885 + clear f x % if test not isolated (e.g., on matlab) + syms x + f(x) = sym('S(x)'); + f(x) = sym('I(x)'); + f(x) = sym('O(x)'); +***** test + % sym(sympy(x) == x identity, Issue #890 + syms x + f = exp (1i*x); + s = sympy (f); + g = sym (s); assert (isequal (f, g)) - syms 'f( x, y )' +***** test + % sym(sympy(x) == x identity + % Don't mistake "pi" (which is "srepr(S.Pi)") for a symfun variable + f = sym ('ff(pi, pi)'); + s1 = sympy (f); + s2 = 'FallingFactorial(pi, pi)'; + assert (strcmp (s1, s2)) +***** test + % sym(sympy(x) == x identity + % Don't mistake "I" (which is "srepr(S.ImaginaryUnit)") for a symfun variable + f = sym ('sin(I)'); + g = 1i*sinh (sym (1)); assert (isequal (f, g)) + s = sympy (f); + assert (isempty (strfind (s, 'Function'))) +***** error + % sym(sympy(x) == x identity + % Don't mistake "true/false" (which is "srepr(S.true)") for a symfun variable + % (Used to print as `S.true` but just `true` in sympy 1.2) + sym ('E(true,false)') ***** test - % syms own parsing code should not reorder the vars - syms f(y, x) - v = argnames (f); - assert (isequal (v(1), y) && isequal (v(2), x)) + % some variable names that are special to sympy but should not be for us + f = sym ('f(S, Q, C, O, N)'); + s1 = sympy (f); + s2 = 'Function(''f'')(Symbol(''S''), Symbol(''Q''), Symbol(''C''), Symbol(''O''), Symbol(''N''))'; + assert (strcmp (s1, s2)) ***** test - % assignment of symfun to symfun, issue #189 - syms t - x(t) = 2*t; - y(t) = x; - assert (isa (y, 'symfun')) - y = symfun(x, t); - assert (isa (y, 'symfun')) - % others - y = x; - assert (isa (y, 'symfun')) - y(t) = x(t); - assert (isa (y, 'symfun')) + % For SMT 2014 compatibility, I and E would become ImaginaryUnit and Exp(1) + % but I'm not sure this is by design. This test would need to change if + % we want stricter SMT compatibility. + f = sym ('f(x, I, E)'); + s1 = sympy (f); + s2 = 'Function(''f'')(Symbol(''x''), Symbol(''I''), Symbol(''E''))'; + assert (strcmp (s1, s2)) ***** test - % assignment of generic symfun to symfun - syms t x(t) - y(t) = x; - assert (isa (y, 'symfun')) - y = symfun(x, t); - assert (isa (y, 'symfun')) -***** error - % Issue #444: invalid args - syms x - f(x, x) = 2*x; -***** error - % Issue #444: invalid args - syms x y - f(x, y, x) = x + y; -***** error - % Issue #444: invalid args - syms x y - f(x, y, x) = x + y; -***** error - % Issue #444: expression as arg - syms x - f(2*x) = 4*x; -25 tests, 25 passed, 0 known failure, 0 skipped -[inst/@symfun/isequaln.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/isequaln.m -***** error isequaln (symfun('x + 1', x)) + % not the identity, force symfun + f = sym ('FF(w)'); + s1 = sympy (f); + s2 = 'Function(''FF'')(Symbol(''w''))'; + assert (strcmp (s1, s2)) ***** test - syms x y - f(x) = 2*x; - g(x) = 2*x; - assert (isequaln (f, g)) + % not the identity, force symfun + f = sym ('FF(w, pi)'); + s1 = sympy (f); + s2 = 'Function(''FF'')(Symbol(''w''), pi)'; + assert (strcmp (s1, s2)) +***** test + % not the identity, force symfun + f = sym ('ff(x, y)'); + s1 = sympy (f); + s2 = 'Function(''ff'')(Symbol(''x''), Symbol(''y''))'; + assert (strcmp (s1, s2)) ***** test + % But this one should satisfy "sym(sympy(x) == x" identity + % (OOTB, SymPy has ff -> FallingFactorial) + f = sym ('FallingFactorial(x, y)'); + s1 = sympy (f); + s2 = 'FallingFactorial(Symbol(''x''), Symbol(''y''))'; + assert (strcmp (s1, s2)) +***** error + % certain words cannot be used as variables + if (pycall_sympy__ ('return Version(spver) >= Version("1.10.1")')) + f = sym ('f(x, y, print)') + else + error ('use another variable') + end +86 tests, 86 passed, 0 known failure, 0 skipped +[inst/@sym/argnames.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/argnames.m +***** test + % basic tests syms x - f(x) = 2*x + 1; - g(x) = 2*x + 1; - h(x) = 2*x + 1; - assert (isequaln (f, g, h)) + f = 2*x; + assert (isempty (argnames(x))) + assert (isempty (argnames(f))) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@sym/isvector.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isvector.m +***** assert(isvector(sym('x'))) +***** assert(isvector(sym([1 2 3]))) +***** assert(isvector(sym([1; 2]))) +***** assert(~isvector(sym([1 2; 3 4]))) +***** assert(~isvector(sym([]))) +***** assert(isvector(sym(ones(1,0)))) +***** assert(~isvector(sym(ones(0,3)))) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/@sym/laguerreL.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laguerreL.m +***** shared x + syms x +***** assert (isequal (laguerreL(0, x), sym(1))) +***** assert (isequal (laguerreL(1, x), 1-x)) +***** assert (isequal (laguerreL(2, x), x^2/2 - 2*x + 1)) +***** error laguerreL(x) +***** error laguerreL(1, 2, x, 3) +***** shared ***** test syms x - f(x) = 2*x + 1; - g(x) = 2*x + 1; - h(x) = 2*x; - assert (~ isequaln (f, g, h)) + assert (isequal (laguerreL (-3, x), exp(x)*(x^2/2 + 2*x + 1))) ***** test - syms x y - f(x) = 2*x; - g(x, y) = 2*x; - assert (~ isequaln (f, g)) + syms x n + L = laguerreL([2 n], x); + expected = [laguerreL(2, x) laguerreL(n, x)]; + assert (isequal (L, expected)) ***** test syms x y - f(x) = symfun(nan, x); - g(x) = symfun(nan, x); - assert (isequaln (f, g)) + L = laguerreL([1; 2], [x; y]); + expected = [laguerreL(1, x); laguerreL(2, y)]; + assert (isequal (L, expected)) ***** test - syms x y - f(x) = symfun(nan, x); - g(x, y) = symfun(nan, x); - assert (~ isequaln (f, g)) -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@symfun/subsref.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/subsref.m + syms x n + assert (isequal (laguerreL(n, 0, x), laguerreL(n, x))) +***** shared x, y, n + syms x y n +***** assert (isequal (laguerreL([1 n], 0, x), laguerreL([1 n], x))) ***** test - syms x - f(x) = x^2; - v = f.vars; - assert(iscell(v)) - assert(length(v)==1) - assert(isequal(v{1},x)) + L = laguerreL([1; n], [pi; 0], [x; y]); + expected = [laguerreL(1, pi, x); laguerreL(n, 0, y)]; + assert (isequal (L, expected)) ***** test - %% pass through to sym properties - syms x - f(x) = x^2; - y = x^2; % not a symfun - assert(strcmp(f.flat, y.flat)) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@symfun/numel.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/numel.m + L = laguerreL([1 n], [pi 0], x); + expected = [laguerreL(1, pi, x) laguerreL(n, 0, x)]; + assert (isequal (L, expected)) +***** test + L = laguerreL([1 n], pi, [x y]); + expected = [laguerreL(1, pi, x) laguerreL(n, pi, y)]; + assert (isequal (L, expected)) +***** test + L = laguerreL(1, [pi 0], [x y]); + expected = [laguerreL(1, pi, x) laguerreL(1, 0, y)]; + assert (isequal (L, expected)) +***** test + L = laguerreL([1 n], pi, x); + expected = [laguerreL(1, pi, x) laguerreL(n, pi, x)]; + assert (isequal (L, expected)) +***** test + L = laguerreL(1, [pi 0], x); + expected = [laguerreL(1, pi, x) laguerreL(1, 0, x)]; + assert (isequal (L, expected)) +***** test + L = laguerreL(1, pi, [x y]); + expected = [laguerreL(1, pi, x) laguerreL(1, pi, y)]; + assert (isequal (L, expected)) +***** test + % round trip + f = laguerreL (n, x); + h = function_handle (f); + A = h (1, 3.2); + B = laguerreL (1, 3.2); + assert (A, B) + A = h ([1 2], [3.3 4.4]); + B = laguerreL ([1 2], [3.3 4.4]); + assert (A, B) +***** error + % round trip + f = laguerreL (n, y, x); + h = function_handle (f); +19 tests, 19 passed, 0 known failure, 0 skipped +[inst/@sym/besselj.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselj.m +***** test + X = [1 2 3; 4 5 6]; + ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; + n = double(ns); + A = double(besselj(ns, X)); + B = besselj(n, X); + assert (all (all (abs (A - B) < 50*eps*abs(A)))) ***** test + % roundtrip syms x - f(x) = x^2; - assert(numel(f)==1) + A = besselj(2, 10); + q = besselj(2, x); + h = function_handle(q); + B = h(10); + assert (abs (A - B) <= eps*abs(A)) +***** error besselj(sym('x')) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/minus.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/minus.m ***** test + % scalar syms x - f(x) = [1 x]; - assert(numel(f)==1) + assert (isa (x-1, 'sym')) + assert (isa (x-x, 'sym')) + assert (isequal (x-x, sym(0))) +***** test + % matrices + D = [0 1; 2 3]; + A = sym(D); + DZ = D - D; + assert (isequal ( A - D , DZ )) + assert (isequal ( A - A , DZ )) + assert (isequal ( D - A , DZ )) + assert (isequal ( A - 2 , D - 2 )) + assert (isequal ( 4 - A , 4 - D )) 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@symfun/int.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/int.m +[inst/@sym/ne.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ne.m ***** test - % indefinite integral of symfun gives symfun + % simple + x = sym(1); y = sym(1); e = x ~= y; + assert (~logical (e)) + x = sym(1); y = sym(2); e = x ~= y; + assert (logical(e)) +***** test + % array -- array syms x - f(x) = x^2; - g = int(f); - assert (isa(g, 'symfun')) - g = int(f, x); - assert (isa(g, 'symfun')) + a = sym([1 3 3 2*x]); + b = sym([2 x 3 10]); + e = a ~= b; + assert (isa (e, 'sym')) + assert (logical (e(1))) + assert (isa (e(2), 'sym')) + assert (isequal (e(2), 3 ~= x)) + assert (~logical (e(3))) + assert (isa (e(4), 'sym')) + assert (isequal (e(4), 2*x ~= 10)) ***** test - % indefinite integral of abstract symfun gives symfun - syms f(x) - g = int(f); - assert (isa(g, 'symfun')) - g = int(f, x); - assert (isa(g, 'symfun')) + % oo + syms oo x + e = oo ~= x; + assert (isa (e, 'sym')) + s = strtrim (disp (e, 'flat')); + % SymPy <= 0.7.6.x will be '!=', newer gives 'Ne', test both + assert (strcmp (s, 'oo != x') || strcmp (s, 'Ne(oo, x)')) ***** test - % definite integral does not give symfun + % nan + syms oo x + snan = sym(nan); + e = snan ~= sym(0); + assert (logical (e)) + e = snan ~= snan; + assert (logical (e)) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/cumsum.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cumsum.m +***** shared x, y + x = sym ('x'); + y = sym ('y'); +***** error cumsum (x, 1, 2) +***** assert (isequal (cumsum ([-x; -2*x; -3*x]), [-x; -3*x; -6*x])) +***** assert (isequal (cumsum ([x + 2i*y, 2*x + i*y]), [x + 2i*y, 3*x + 3i*y])) +***** assert (isequal (cumsum ([x, 2*x; 3*x, 4*x], 1), [1*x, 2*x; 4*x, 6*x] )) +***** assert (isequal (cumsum ([x, 2*x; 3*x, 4*x], 2), [1*x, 3*x; 3*x, 7*x] )) +***** test cumsum ([x, x], [2, 1]); # ensure behaves like builtin cumsum +***** test cumsum ([x, x], [1, -2]); # ensure behaves like builtin cumsum +***** error cumsum (x, []) +***** error cumsum (x, {1}) +***** error cumsum (x, struct('a', 1)) +***** error cumsum (x, x) +***** error cumsum (x, 0) +***** error cumsum (x, -1) +13 tests, 13 passed, 0 known failure, 0 skipped +[inst/@sym/setxor.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/setxor.m +***** test + A = sym([1 2 3]); + B = sym([1 2 4]); + C = setxor(A, B); + D1 = sym([3 4]); + D2 = sym([4 3]); + assert (isequal (C, D1) || isequal (C, D2)) +***** test + % one nonsym + A = sym([1 2 3]); + B = [1 2 4]; + C = setxor(A, B); + D1 = sym([3 4]); + D2 = sym([4 3]); + assert (isequal (C, D1) || isequal (C, D2)) +***** test + % empty + A = sym([1 2 3]); + C = setxor(A, A); + assert (isempty (C)) +***** test + % empty input + A = sym([1 2]); + C = setxor(A, []); + assert (isequal (C, A) || isequal (C, sym([2 1]))) +***** test + % scalar syms x - f(x) = x^2; - g = int(f, x, 0, 2); - assert (isa(g, 'sym')) - assert (~isa(g, 'symfun')) + assert (isequal (setxor([x 1], x), sym(1))) + assert (isempty (setxor(x, x))) ***** test - % ... even if it has a variable in it - syms x t - f(x) = x; - g = int(f, x, 0, t); - assert (isa(g, 'sym')) - assert (~isa(g, 'symfun')) + A = interval(sym(1), 3); + B = interval(sym(2), 5); + C = setxor(A, B); + D = union (interval (sym(1), 2, false, true), interval (sym(3), 5, true, false)); + assert( isequal( C, D)) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@sym/logspace.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logspace.m ***** test - % ... even if the input is abstract function - syms f(x) - g = int(f, x, 0, 2); - assert (isa(g, 'sym')) - assert (~isa(g, 'symfun')) + % default argument for N + A = logspace(0, 2); + assert (length (A) == 50); ***** test - % symfun in x, integrated in y gives symfun still in x - % (SMT does this too). - syms f(x) y - g = int(f, y); - assert (isa (g, 'symfun')) - assert (isequal (argnames (g), x)) + % special case: pi as end pt + A = logspace(-sym(3), sym(pi), 3); + assert (isequal (A(end), sym(pi))) ***** test - % same as above, but concrete symfun - syms x y - f(x) = x^2; - g = int(f, y); - assert (isa (g, 'symfun')) - assert (isequal (argnames (g), x)) - assert (isequal (formula(g), x^2*y)) -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@symfun/private_disp_name.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/private_disp_name.m + A = logspace(-sym(4), 0, 3); + B = [sym(1)/10000 sym(1)/100 sym(1)]; + assert (isequal (A, B)) ***** test - syms f(x) - s = private_disp_name(f, 'f'); - assert (strcmp (s, 'f(x)')) + % vpa support, might need recent sympy for sympy issue #10063 + n = 32; + A = logspace(-vpa(1,n), 0, 3); + B = [10^(-vpa(1,n)) 10^(-vpa(sym(1)/2,n)) vpa(1,n)]; + assert (all (A == B)) + assert (max(abs(double(A) - logspace(-1, 0, 3))) < 1e-15) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/isequal.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isequal.m ***** test - syms x y - g(y, x) = x + y; - s = private_disp_name(g, 'g'); - assert (strcmp (s, 'g(y, x)')) + a = sym([1 2]); + b = a; + assert (isequal (a, b)) + b(1) = 42; + assert (~isequal (a, b)) ***** test - syms f(x) - assert (isempty (private_disp_name(f, ''))) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@symfun/mpower.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mpower.m + a = sym([1 2; 3 4]); + b = a; + assert (isequal (a, b)) + b(1) = 42; + assert (~isequal (a, b)) ***** test - syms x - f(x) = 2*x; - h = f^f; - assert( isa(h, 'symfun')) - assert (isequal (formula (h), (2*x)^(2*x))) - h = f^sym(2); - assert( isa(h, 'symfun')) - assert (isequal (formula (h), 4*x^2)) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@symfun/formula.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/formula.m + a = sym([nan; 2]); + b = a; + assert (~isequal (a, b)) ***** test - % simple - syms x - f(x) = sin(x); - g = formula(f); - assert (isequal (g, sin(x))); + % proper nan treatment + a = sym([nan 2; 3 4]); + b = a; + assert (~isequal (a, b)) ***** test - % concrete: return is a sym, not a symfun + % more than two arrays + a = sym([1 2 3]); + b = a; + c = a; + assert (isequal (a, b, c)) + c(1) = 42; + assert (~isequal (a, b, c)) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/ldivide.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ldivide.m +***** test + % scalar syms x - f(x) = sin(x); - g = formula(f); - assert (~isa(g, 'symfun')); + assert (isa (x .\ 1, 'sym')) + assert (isa (x .\ x, 'sym')) + assert (isequal (x .\ 1, 1/x)) + assert (isequal (x .\ x, sym(1))) ***** test - % abstract: return is a sym, not a symfun - syms f(x) - g = formula(f); - assert (~isa(g, 'symfun')); -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@symfun/mldivide.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mldivide.m + % matrix-scalar + D = [1 1; 2 3]; + A = sym(D); + assert (isequal ( A .\ 6 , D .\ 6 )) + assert (isequal ( A .\ sym(6) , D .\ 6 )) + assert (isequal ( D .\ sym(6) , D .\ 6 )) ***** test - syms x - f(x) = x^2; - assert( isa(f\f, 'symfun')) - assert( isa(f\x, 'symfun')) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@symfun/minus.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/minus.m + % matrix-matrix + D = [1 2; 3 4]; + A = sym(D); + assert (isequal ( A .\ A , D .\ D )) + assert (isequal ( A .\ D , D .\ D )) + assert (isequal ( D .\ A , D .\ D )) +***** test + % matrix .\ matrix with symbols + syms x y + A = [x y; x^2 2*y]; + B = [y x; x y]; + assert (isequal ( A .\ A , sym(ones(2, 2)) )) + assert (isequal ( B .\ A , [x/y y/x; x 2] )) +***** test + % scalar .\ matrix + D = 3*[1 2; 3 4]; + A = sym(D); + assert (isequal ( 3 .\ A , 3 .\ D )) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/ellipke.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipke.m +***** error ellipke (sym(1), 2) ***** test + for i = 2:10 + [K E] = ellipke (sym (1)/i); + [k e] = ellipke (1/i); + assert (double ([K E]), [k e], 2*eps) + end +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/vertcat.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/vertcat.m +***** test + % basic syms x - f(x) = x^2; - assert( isa(f - f, 'symfun')) - assert( isa(f - x, 'symfun')) + A = [x; x]; + B = vertcat(x, x); + C = vertcat(x, x, x); + assert (isa (A, 'sym')) + assert (isa (B, 'sym')) + assert (isa (C, 'sym')) + assert (isequal (size(A), [2 1])) + assert (isequal (size(B), [2 1])) + assert (isequal (size(C), [3 1])) ***** test - % Octave bug #42735 fixed in 4.4.2 + % basic, part 2 syms x - f(x) = x^2; - g = x^2; - h = x - f; assert (isa (h, 'symfun') && isequal (formula (h), x - g)) - h = x + f; assert (isa (h, 'symfun') && isequal (formula (h), x + g)) - h = x * f; assert (isa (h, 'symfun') && isequal (formula (h), x * g)) - h = x / f; assert (isa (h, 'symfun') && isequal (formula (h), x / g)) - h = x ^ f; assert (isa (h, 'symfun') && isequal (formula (h), x ^ g)) - h = x .* f; assert (isa (h, 'symfun') && isequal (formula (h), x .* g)) - h = x ./ f; assert (isa (h, 'symfun') && isequal (formula (h), x ./ g)) - h = x .^ f; assert (isa (h, 'symfun') && isequal (formula (h), x .^ g)) + A = [x; 1]; + B = [1; x]; + C = [1; 2; x]; + assert (isa (A, 'sym')) + assert (isa (B, 'sym')) + assert (isa (C, 'sym')) + assert (isequal (size(A), [2 1])) + assert (isequal (size(B), [2 1])) + assert (isequal (size(C), [3 1])) ***** test - % different variables - syms x y - f(x) = 2*x; - g(y) = sin(y); - h = f - g(x); - assert( isa(h, 'symfun')) - assert( isequal (argnames (h), argnames (f))) - assert (isequal (formula (h), 2*x - sin(x))) - % and even if rh-sym has a dummy variable: - h = f - g(y); - assert( isa(h, 'symfun')) - assert( isequal (argnames (h), argnames(f))) - assert (isequal (formula (h), 2*x - sin(y))) + % column vectors + a = [sym(1); 2]; + b = [sym(3); 4]; + assert (isequal ( [a;b] , [1; 2; 3; 4] )) + assert (isequal ( [a;b;a] , [1; 2; 3; 4; 1; 2] )) ***** test - % different variables, f has more - syms x y - f(x,y) = 2*x*y; - g(y) = sin(y); - h = f - g(y) + g(x); - assert( isa(h, 'symfun')) - assert( isequal (argnames (h), argnames (f))) - assert (isequal (formula (h), 2*x*y - sin(y) + sin(x))) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@symfun/rdivide.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/rdivide.m + % row vectors + a = [sym(1) 2]; + b = [sym(3) 4]; + assert (isequal ( [a;b] , [1 2; 3 4] )) + assert (isequal ( [a;b;a] , [1 2; 3 4; 1 2] )) ***** test - syms x - f(x) = x^2; - assert( isa(f./f, 'symfun')) - assert( isa(f./[x x^2], 'symfun')) + % row vector, other row + a = [sym(1) 2]; + assert (isequal ( [a; [sym(3) 4]] , [1 2; 3 4] )) ***** test + % empty vectors + v = [sym(1) sym(2)]; + a = [v; []]; + assert (isequal (a, v)) + a = [[]; v; []]; + assert (isequal (a, v)) + a = [v; []; []]; + assert (isequal (a, v)) +***** xtest + % FIXME: is this Octave bug? worth worrying about syms x - f(x) = [x 2*x]; - h = f./[x 2]; - assert( isa(h, 'symfun')) - assert (isequal (formula (h), [1 x])) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@symfun/isequal.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/isequal.m -***** error isequal (symfun('x + 1', x)) + a = [x; [] []]; + assert (isequal (a, x)) +!!!!! known failure +octave_base_value::map_value(): wrong type argument 'null_matrix' ***** test - syms x y - f(x) = 2*x; - g(x) = 2*x; - assert (isequal (f, g)) + % more empty vectors + v = [sym(1) sym(2)]; + q = sym(ones(0, 2)); + assert (isequal ([v; q], v)) +***** error + v = [sym(1) sym(2)]; + q = sym(ones(0, 3)); + w = vertcat(v, q); ***** test + % Octave 3.6 bug: should pass on 3.8.1 and matlab + a = [sym(1) 2]; + assert (isequal ( [a; [3 4]] , [1 2; 3 4] )) + assert (isequal ( [a; sym(3) 4] , [1 2; 3 4] )) + % more examples syms x - f(x) = 2*x + 1; - g(x) = 2*x + 1; - h(x) = 2*x + 1; - assert (isequal (f, g, h)) + [x [x x]; x x x]; + [[x x] x; x x x]; + [[x x] x; [x x] x]; + [x x x; [x x] x]; +***** test + % issue #700 + A = sym ([1 2]); + B = simplify (A); + assert (isequal ([B; A], [A; B])) +11 tests, 10 passed, 1 known failure, 0 skipped +[inst/@sym/isAlways.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isAlways.m +***** test + % basics + assert(isAlways(true)) + assert(isAlways(1==1)) + assert(isAlways(sym(1)==sym(1))) + assert(isAlways(sym(1)==1)) ***** test + % numbers to logic? + assert (isAlways(sym(1))) + assert (isAlways(sym(-1))) + assert (~isAlways(sym(0))) +***** shared x syms x - f(x) = 2*x + 1; - g(x) = 2*x + 1; - h(x) = 2*x; - assert (~ isequal (f, g, h)) ***** test - syms x y - f(x) = 2*x; - g(x, y) = 2*x; - assert (~ isequal (f, g)) + % in this case it is boolean + expr = x - x == 0; + assert (logical(expr)) + assert (isAlways(expr)) + % and both are logical type + assert (islogical(logical(expr))) + assert (islogical(isAlways(expr))) +***** test + % structurally same and mathematically true + % (here expr should be sym, non-boolean) + expr = x == x; + assert (logical(expr)) + assert (isAlways(expr)) + %assert (~islogical(expr)) % FIXME: Issue #56 + %assert (isa(expr, 'sym)) ***** test + % structurally same and mathematically true + % (here expr should be sym, non-boolean) + expr = 1 + x == x + 1; + assert (logical(expr)) + assert (isAlways(expr)) +***** test + % non-zero numbers are true + assert (isAlways(sym(1))) + assert (isAlways(sym(-10))) + assert (~isAlways(sym(0))) +***** shared x, y syms x y - f(x) = symfun(nan, x); - g(x) = symfun(nan, x); - assert (~ isequal (f, g)) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@symfun/ldivide.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/ldivide.m ***** test + % structurally same and mathematically true + % (here expr should be sym, non-boolean) + expr = x*(1+y) == x*(y+1); + assert (logical(expr)) + assert (isAlways(expr)) + assert (islogical(isAlways(expr))) +***** test + % Now for some differences + % simplest example from SymPy FAQ + expr = x*(1+y) == x+x*y; + assert (~logical(expr)) + assert (isAlways(expr)) +***** test + % more differences 1, these don't simplify in sympy (as of 2016-01) + expr = (x+1)^2 == x*x + 2*x + 1; + assert (~logical(expr)) + assert (isAlways(expr)) +***** test + % more differences 2 + expr = sin(2*x) == 2*sin(x)*cos(x); + assert (~logical(expr)) + assert (isAlways(expr)) +***** test + % more differences 3, false + expr = x*(x+y) == x^2 + x*y + 1; + assert (~logical(expr)) + assert (~isAlways(expr)) + assert (~isAlways(expr, 'unknown', 'error')) +***** test + % logically not equal, math equal + exprn = x*(x+y) ~= x^2 + x*y; + assert (logical(exprn)) + assert (~isAlways(exprn)) +***** test + % logically not equal, math not equal + exprn = x*(x+y) ~= x^2 + x*y + 1; + assert (logical(exprn)) + assert (isAlways(exprn)) +***** test + % equal and not equal + e1 = sin(x)^2 + cos(x)^2 == 1; + e2 = sin(x)^2 + cos(x)^2 == 2; + assert (~logical(e1)) + assert (isAlways(e1)) + assert (~logical(e2)) + assert (~isAlways(e2)) + assert (~isAlways(e2, 'unknown', 'error')) +***** error isAlways(x, 'unknown', 'kevin') +***** error isAlways(x, 'unknown') +***** error isAlways(x, 'kevin', 'true') +***** error + a = [x*(x+y)==x^2+x*y x==y]; + b = isAlways(a, 'unknown', 'error'); +***** error + a = x==y; + b = isAlways(a, 'unknown', 'error'); +***** test + % array, unknown keyword + a = [x==x x==x+1 x==y x*(x+y)==x^2+x*y cos(x)^2+sin(x)^2==2]; + b = isAlways(a, 'unknown', false); + c = isAlways(a, 'unknown', 'false'); + expect = [true false false true false]; + assert (islogical(b)) + assert (isequal (b, expect)) + assert (isequal (c, expect)) + b = isAlways(a, 'unknown', true); + c = isAlways(a, 'unknown', 'true'); + expect = [true false true true false]; + assert (islogical(b)) + assert (isequal (b, expect)) + assert (isequal (c, expect)) +***** test + % ineq + e = x*(x+y) <= x^2 + x*y + 1; + assert (~logical(e)) + assert (isAlways(e)) + e = x*(x+y) <= x^2 + x*y; + assert (~logical(e)) + assert (isAlways(e)) +21 tests, 21 passed, 0 known failure, 0 skipped +[inst/@sym/intersect.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/intersect.m +***** test + A = sym([1 2 3]); + B = sym([1 2 4]); + C = intersect(A, B); + D = sym([1 2]); + assert (isequal (C, D)) +***** test + % one nonsym + A = sym([1 2 3]); + B = [1 2 4]; + C = intersect(A, B); + D = sym([1 2]); + assert (isequal (C, D)) +***** test + % empty + A = sym([1 2 3]); + C = intersect(A, A); + assert (isequal (C, A)) +***** test + % empty input + A = sym([1 2]); + C = intersect(A, []); + assert (isempty (C)) +***** test + % scalar syms x - f(x) = x^2; - assert( isa(f .\ f, 'symfun')) - assert( isa(f .\ x, 'symfun')) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@symfun/diff.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/diff.m + assert (isequal (intersect([x 1], x), x)) + assert (isequal (intersect(x, x), x)) ***** test - % concrete fcn + A = interval(sym(1), 3); + B = interval(sym(2), 5); + C = intersect(A, B); + assert( isequal( C, interval(sym(2), 3))) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@sym/pretty.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pretty.m +***** test + % simple syms x - f(x) = x*x; - g(x) = 2*x; - assert (logical (diff(f) == g)) - assert (isa (diff(f), 'symfun')) + s1 = pretty(sin(x)); + s2 = sprintf(' sin(x)\n'); + assert (strcmp (s1, s2)) ***** test - % abstract fcn - syms y(x) - assert (logical (diff(y) == diff(y(x)))) - assert (isa (diff(y), 'symfun')) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@symfun/mrdivide.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mrdivide.m + % force ascii + syms x + s1 = pretty(sin(x/2), 'ascii'); + s2 = sprintf(' /x\\\n sin|-|\n \\2/\n'); + swin = strrep(s1, sprintf('\r\n'), sprintf('\n')); + assert (strcmp (s1, s2) || strcmp (swin, s2)) ***** test + % force unicode syms x - f(x) = x^2; - assert( isa(f/f, 'symfun')) - assert( isa(f/x, 'symfun')) + s1 = pretty(sin(x/2), 'unicode'); + s2 = sprintf(' ⎛x⎞\n sin⎜─⎟\n ⎝2⎠\n'); + swin = strrep(s1, sprintf('\r\n'), sprintf('\n')); + assert (strcmp (s1, s2) || strcmp (swin, s2)) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/isna.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isna.m +***** test + % no sym should be NA + syms x oo + assert (~isna(sym(1))) + assert (~isna(x)) + assert (~isna(oo)) + assert (~isna(sym(nan))) + assert (isequal (isna (sym ([1 nan])), [false false])) 1 test, 1 passed, 0 known failure, 0 skipped -[inst/@symfun/size.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/size.m +[inst/@sym/ellipticCK.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCK.m +***** error ellipticCK (sym (1), 2) +***** assert (double (ellipticCK (sym (1)/2)), 1.8541, 10e-5) +***** assert (double (ellipticCK (sym (101)/10)), 0.812691836806976, -3*eps) +***** assert (isequal (ellipticCK (sym (1)), sym(pi)/2)) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/acsch.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acsch.m +***** error acsch (sym(1), 2) +***** assert (isequaln (acsch (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); +***** test + f1 = acsch(x); + f2 = acsch(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = acsch(A); + f2 = acsch(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = acsch (d); + f = acsch (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/assume.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/assume.m ***** test syms x - f(x) = x; - d = size(f); - assert (isequal (d, [1 1])) - [n, m] = size(f); - assert (isequal ([n m], [1 1])) - assert (size(f, 1) == 1) - assert (size(f, 2) == 1) + x = assume(x, 'positive'); + a = assumptions(x); + assert(strcmp(a, 'x: positive')) + x = assume(x, 'even'); + a = assumptions(x); + assert(strcmp(a, 'x: even')) + x = assume(x, 'odd'); + a = assumptions(x); + assert(strcmp(a, 'x: odd')) +***** error + syms x + x = assume (x, x); +***** error + syms x + x = assume (x/pi, 'integer') ***** test + % multiple assumptions syms x - f(x) = [1 x]; - d = size(f); - assert (isequal (d, [1 1])) - [n, m] = size(f); - assert (isequal ([n m], [1 1])) - assert (size(f, 1) == 1) - assert (size(f, 2) == 1) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@symfun/plus.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/plus.m + x = assume(x, 'positive', 'integer'); + [tilde, a] = assumptions(x, 'dict'); + assert(a{1}.integer) + assert(a{1}.positive) ***** test + % multiple assumptions syms x - f(x) = x^2; - assert( isa(f + f, 'symfun')) - assert( isa(f + x, 'symfun')) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@symfun/uminus.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/uminus.m + x = assume(x, 'even', 'positive'); + [tilde, a] = assumptions(x, 'dict'); + assert(a{1}.even) + assert(a{1}.positive) ***** test - % Issue #447 + % has output so avoids workspace + syms x positive + x2 = x; + f = sin(x); + x = assume(x, 'negative'); + a = assumptions(x); + assert(strcmp(a, 'x: negative')) + a = assumptions(x2); + assert(strcmp(a, 'x: positive')) + a = assumptions(f); + assert(strcmp(a, 'x: positive')) +***** test + % clear: has output so avoids workspace + syms x positive + f = 2*x; + x2 = assume(x, 'clear'); + assert (~ isempty (assumptions (f))); +***** test + % has no output so does workspace + syms x positive + x2 = x; + f = sin(x); + assume(x, 'negative'); + a = assumptions(x); + assert(strcmp(a, 'x: negative')) + a = assumptions(x2); + assert(strcmp(a, 'x: negative')) + a = assumptions(f); + assert(strcmp(a, 'x: negative')) +***** test + % clear: has not output so does workspace + syms x positive + f = 2*x; + assume(x, 'clear'); + assert (isempty (assumptions (f))); + assert (isempty (assumptions ())); +***** test + syms x positive + assume (x, 'clear') + assert (isempty (assumptions ())) +***** error syms x - f(x) = x^2; - assert (isa (-f, 'symfun')) + x2 = assume (x, 'clear', 'real'); +***** error + syms a + assume (a > 0) ***** test - syms f(x) - h = -f; - assert (isa (h, 'symfun')) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@symfun/symvar.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/symvar.m + syms x y + assume ([x y], 'real') + assert (strcmp (assumptions (x), 'x: real')) + assert (strcmp (assumptions (y), 'y: real')) ***** test - % basic - syms f(t, s) - assert (isempty (symvar (f, 0))) - assert (isequal (symvar (f, 1), t)) - assert (isequal (symvar (f, 2), [t s])) - assert (isequal (symvar (f, 3), [t s])) + syms x y + assume ([x y], 'positive', 'even') + assert (strcmp (assumptions (x), 'x: positive, even') || strcmp (assumptions (x), 'x: even, positive')) + assert (strcmp (assumptions (y), 'y: positive, even') || strcmp (assumptions (y), 'y: even, positive')) ***** test - % note preference for vars of symfun, if n requested - syms x f(y) - assert (isequal (symvar(f*x, 1), y)) - assert (isequal (symvar(f(y)*x, 1), x)) + % with output, original x and y are unchanged + syms x y + [p, q] = assume ([x y], 'real'); + assert (isempty (assumptions (x))) + assert (isempty (assumptions (y))) + assert (strcmp (assumptions (p), 'x: real')) + assert (strcmp (assumptions (q), 'y: real')) ***** test - % symfun, checked smt - syms x f(y) - a = f*x; - b = f(y)*x; - assert (isequal (symvar(a), [x y])) - assert (isequal (symvar(b), [x y])) + % matrix input + syms a b c d + assume ([a b; c d], 'real') + assert (strcmp (assumptions (a), 'a: real')) + assert (strcmp (assumptions (b), 'b: real')) + assert (strcmp (assumptions (c), 'c: real')) + assert (strcmp (assumptions (d), 'd: real')) +16 tests, 16 passed, 0 known failure, 0 skipped +[inst/@sym/round.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/round.m ***** test - % preference for the explicit variables - syms a x f(t, s) - h = f*a + x; - assert (isequal (symvar (h, 1), t)) - assert (isequal (symvar (h, 2), [t s])) - assert (isequal (symvar (h, 3), [t s x])) - assert (isequal (symvar (h, 4), [t s x a])) - assert (isequal (symvar (h, 5), [t s x a])) - assert (isequal (symvar (h), [a s t x])) + d = 3/2; + x = sym('3/2'); + f1 = round(x); + f2 = round(d); + assert (isequal (f1, f2)) +***** xtest + % ideally rounding direction would match Octave + d = 5/2; + x = sym('5/2'); + f1 = round(x); + f2 = round(d); + assert (isequal (f1, f2)) +!!!!! known failure +assert (isequal (f1, f2)) failed ***** test - % symfun dep on some vars only, matches smt w/ n - syms x s t - f(s) = x; - g(s, t) = x*s; - assert (isequal (symvar(f, 1), s)) - assert (isequal (symvar(f, 2), [s x])) - assert (isequal (symvar(g, 1), s)) - assert (isequal (symvar(g, 2), [s t])) - assert (isequal (symvar(g, 3), [s t x])) + D = [1.1 4.6; -3.4 -8.9]; + A = [sym(11)/10 sym(46)/10; sym(-34)/10 sym(-89)/10]; + f1 = round(A); + f2 = round(D); + assert( isequal (f1, f2)) ***** test - % A documented difference from SMT on symvar(symfun) w/o n - syms x s t - f(s) = x; - g(s, t) = x*s; - % SMT would have - %assert (isequal (symvar(f), x)) % no s - %assert (isequal (symvar(g), [s x])) % no t - assert (isequal (symvar(f), [s x])) - assert (isequal (symvar(g), [s t x])) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@symfun/argnames.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/argnames.m + d = sym(-11)/10; + c = -1; + assert (isequal (round (d), c)) ***** test - % basic test - syms f(x) - assert (isequal (argnames (f), x)) + d = sym(-19)/10; + c = -2; + assert (isequal (round (d), c)) ***** test - % Multiple variables, abstract symfun - syms f(t, x, y) - assert (isequal (argnames (f), [t x y])) + d = 7j/2; + x = sym(7j)/2; + f1 = round (x); + f2 = round (d); + assert (isequal (f1, f2)) ***** test - % Concrete symfun - syms x y z t - f(t, x, y) = x + y + z; - assert (isequal (argnames (f), [t x y])) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@symfun/times.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/times.m + d = 5/3 - 4j/7; + x = sym(5)/3 - sym(4j)/7; + f1 = round (x); + f2 = round (d); + assert (isequal (f1, f2)) +7 tests, 6 passed, 1 known failure, 0 skipped +[inst/@sym/sinc.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinc.m +***** error sinc (sym(1), 2) +***** assert (isequaln (sinc (sym(nan)), sym(nan))) +***** assert (isequal (sinc (sym(0)), sym(1))) +***** assert (isequal (sinc (sym(1)), sym(0))) +***** assert (isequal (sinc (-sym(1)), sym(0))) +***** assert (double (sinc (sym(pi))), sinc (pi), -10*eps) ***** test + A = [-sym(1)/2 sym(1)/2 pi; -sym(7)/2 sym(71)/2 sym(101)/3]; + D = double (A); + assert (sinc (D), double (sinc (A)), -200*eps) +***** test + A = [sym(51)/2 sym(1001)/3 sym(10001)/3 sym(100001)/3]; + D = double (A); + assert (sinc (D), double (sinc (A)), 1e-10) +***** test + % round trip syms x - f(x) = x^2; - assert( isa(f .* f, 'symfun')) - assert( isa(f .* x, 'symfun')) + A = sinc (1); + f = sinc (x); + h = function_handle (f); + B = h (1); + assert (A, B, -eps) ***** test + % round trip syms x - f(x) = [x 2*x]; - h = f.*[x 3]; - assert( isa(h, 'symfun')) - assert (isequal (formula (h), [x^2 6*x])) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@symfun/mtimes.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mtimes.m + f = sinc (x); + h = function_handle (f); + A = sinc (1.5); + B = h (1.5); + assert (A, B, -eps) ***** test syms x - f(x) = x^2; - assert( isa(f * f, 'symfun')) - assert( isa(f * x, 'symfun')) + h = function_handle (sinc (x)); + A = double (sinc (sym (12)/10)); + B = h (1.2); + C = sinc (1.2); + assert (A, B, -eps) + assert (A, C, -eps) +11 tests, 11 passed, 0 known failure, 0 skipped +[inst/@sym/hilb.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hilb.m +***** test + A = hilb (sym(3)); + B = [sym(1) sym(1)/2 sym(1)/3; sym(1)/2 sym(1)/3 sym(1)/4; sym(1)/3 sym(1)/4 sym(1)/5]; + assert (isequal (A, B)) 1 test, 1 passed, 0 known failure, 0 skipped -[inst/@symfun/power.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/power.m +[inst/@sym/charpoly.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/charpoly.m +***** error charpoly (sym (1), 1, 2) +***** error charpoly (sym ([1 2])) ***** test syms x - f(x) = 2*x; - h = f.^f; - assert( isa(h, 'symfun')) - assert (isequal (formula (h), (2*x)^(2*x))) + A = sym([1 2; 3 4]); + assert (isequal (charpoly(A, x), x^2 - 5*x -2)) ***** test syms x - f(x) = [x 2*x]; - h = f.^[x 3]; - assert( isa(h, 'symfun')) - assert (isequal (formula (h), [x^x 8*x^3])) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@double/logint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/logint.m -***** error logint (1, 2) + A = sym([1 2; 3 4]); + B = sym([1 -5 -2]); + assert (isequal (charpoly(A), B)) ***** test - x = 1.1; - y = sym(11)/10; - A = logint (x); - B = double (logint (y)); - assert (A, B, -4*eps); + syms x + A = sym([x x; x x]); + B = sym([1 -2*x 0]); + assert (isequal (charpoly(A), B)) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/sqrt.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sqrt.m +***** error sqrt (sym(1), 2) +***** assert (isequaln (sqrt (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); ***** test - y = [2 3 sym(pi); exp(sym(1)) 5 6]; - x = double (y); - A = logint (x); - B = double (logint (y)); - assert (A, B, -4*eps); + f1 = sqrt(x); + f2 = sqrt(d); + assert( abs(double(f1) - f2) < 1e-15 ) ***** test - % maple: - % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; - % > for a in A do evalf(Li(a)) end do; - x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; - A = [ 1.3876787420229375511 + 2.5087546988592328752*1i - 1.6987684473874802274 + 4.5936366057115204667*1i - 30.126141584079629926 - 3.4936715673748995398 + 5.5260023797127391973*1i - 0.90264689772681592152e-5 + 3.1415953634267361942*1i - -2.3996350854560916779 - 7.6971739096353664559*1i ]; - B = logint (x); + D = [d d; d d]; + A = [x x; x x]; + f1 = sqrt(A); + f2 = sqrt(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = sqrt (d); + f = sqrt (y); + h = function_handle (f); + B = h (d); assert (A, B, -eps) -***** assert (logint (inf), inf) -***** assert (isnan (logint (-inf))) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@double/pochhammer.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/pochhammer.m -***** error pochhammer (1) -***** error pochhammer (1, 2, 3) -***** error pochhammer ([1 2], [1 2 3]) -***** error pochhammer ([1 2], [1; 2]) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/ezcontour.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezcontour.m +***** error + syms x y z + ezcontour (x*y*z) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@sym/length.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/length.m ***** test - y = sym(11)/10; - t = sym(3); - x = 1.1; - s = 3; - A = pochhammer (x, s); - B = double (pochhammer (y, t)); - assert (A, B, -2*eps); + a = sym([1 2 3]); + assert(length(a) == 3); ***** test - % maple - A = 256.798558090310131720; - B = pochhammer (18.1, 1.9); - assert (A, B, -20*eps) + % 2D array + a = sym([1 2 3; 4 5 6]); + assert(length(a) == 3); ***** test - % maple, complex inputs> - A = 2.67921619474318221972 + 1.96716724764630702653*1i; - B = pochhammer (12.1+3.1*i, 0.5+0.2i); - assert (A, B, -4*eps); + % empty + a = sym([]); + assert(length(a) == 0); +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/tanh.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tanh.m +***** error tanh (sym(1), 2) +***** assert (isequaln (tanh (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); ***** test - % maple, matrix inputs - A = [5.61467232547723663908 20.6144884613920190965]; - B = pochhammer ([0.9 0.8], [3.1 4.2]); - assert (A, B, -3*eps); + f1 = tanh(x); + f2 = tanh(d); + assert( abs(double(f1) - f2) < 1e-15 ) ***** test - % x matrix, s scalar - y = [1 2 sym(pi); exp(sym(1)) 5 6]; - t = sym(2); - x = double (y); - s = 2; - A = pochhammer (s, x); - B = double (pochhammer (t, y)); - assert (A, B, -3*eps); + D = [d d; d d]; + A = [x x; x x]; + f1 = tanh(A); + f2 = tanh(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test - % s matrix, x scalar - t = [1 2 sym(pi); exp(sym(1)) 5 6]; - y = sym(2); - s = double (t); - x = 2; - A = pochhammer (s, x); - B = double (pochhammer (t, y)); - assert (A, B, -5*eps); -10 tests, 10 passed, 0 known failure, 0 skipped -[inst/@double/coshint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/coshint.m -***** error coshint (1, 2) + % round trip + y = sym('y'); + A = tanh (d); + f = tanh (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/rank.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rank.m ***** test - x = 1.1; - y = sym(11)/10; - A = coshint (x); - B = double (coshint (y)); - assert (A, B, -4*eps); + A = sym([1 2; 3 4]); + assert (rank(A) == 2); ***** test - y = [2 3 sym(pi); exp(sym(1)) 5 6]; - x = double (y); - A = coshint (x); - B = double (coshint (y)); - assert (A, B, -4*eps); + A = sym([1 2 3; 3 4 5]); + assert (rank(A) == 2); ***** test - % maple: - % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; - % > for a in A do evalf(Chi(a)) end do; - x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; - A = [ 0.58447599687824767874 + 1.8682915044330306402*1i - -0.63131069034703116988 + 1.8986171211850702957*1i - 0.13577763724269399110e42 - -0.045456433004455372635 + 1.5707963267948966192*1i - -8.6330747070747332203 + 3.1315929868531280002*1i - 0.74701205140887966531e7 + 0.10381444259644068585e8*1i ]; - B = coshint (x); - assert (A, B, -eps) -***** assert (coshint (inf), inf) -***** assert (isinf (coshint (-inf))) -***** assert (imag (coshint (-inf)), pi) + A = sym([1 2; 1 2]); + assert (rank(A) == 1); +***** test + A = sym([1 2; 3 4]); + assert (rank(A) == 2); +***** assert (rank(sym(1)) == 1); +***** assert (rank(sym(0)) == 0); +***** assert (rank(sym('x', 'positive')) == 1); 7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@double/sinint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/sinint.m -***** error sinint (1, 2) +[inst/@sym/sympy.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sympy.m +***** assert (strcmp (sympy (sym(pi)), 'pi')) +***** assert (strcmp (sympy (sym(1)), 'Integer(1)')) +***** assert (strcmp (sympy (sym(2)/3), 'Rational(2, 3)')) +***** assert (strcmp (sympy (sym('x')), 'Symbol(''x'')')) ***** test - x = 1.1; - y = sym(11)/10; - A = sinint (x); - B = double (sinint (y)); - assert (A, B, -4*eps); + x = sym('x'); + assert (isequal (sym(sympy(x)), x)) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/min.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/min.m ***** test - y = [2 3 sym(pi); exp(sym(1)) 5 6]; - x = double (y); - A = sinint (x); - B = double (sinint (y)); - assert (A, B, -4*eps); -***** assert (sinint (0), 0) -***** assert (sinint (inf), pi/2) -***** assert (sinint (-inf), -pi/2) -***** assert (sinint (1), 0.9460830703671830149414, -2*eps) -***** assert (sinint (-1), -0.9460830703671830149414, -2*eps) -***** assert (sinint (pi), 1.851937051982466170361, -2*eps) -***** assert (sinint (-pi), -1.851937051982466170361, -2*eps) -***** assert (sinint (300), 1.5708810882137495193, -2*eps) -***** assert (sinint (1e4), 1.5708915453859619157, -2*eps) -***** assert (sinint (20i), 1.2807826332028294459e7*1i, -2*eps) + % scalars with dim + a = min(sym(pi), [], 1); + b = sym(pi); + assert (isequal (a, b)); + a = min(sym(pi), [], 2); + assert (isequal (a, b)); + a = max(sym(pi), [], 1); + assert (isequal (a, b)); + a = max(sym(pi), [], 2); + assert (isequal (a, b)); +***** shared A, D + D = [0 1 2 3]; + A = sym(D); ***** test - % maple: - % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; - % > for a in A do evalf(Si(a)) end do; - x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; - A = [ 1.6782404878293681180 + 2.0396845546022061045*1i - -18.154174221650281533 + 1.6146414539230479060*1i - 1.5622254668890562934 - 1246.1144901994233444*1i - -0.000099999999944461111128 + 0.99999999833338888972e-6*1i - -1.5386156269726011209 - 0.053969388020443786229*1i ]; - B = sinint (x); - assert (A, B, -eps) -14 tests, 14 passed, 0 known failure, 0 skipped -[inst/@double/dilog.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/dilog.m + % row vectors + assert (isequal (min(A), sym(min(D)))) + assert (isequal (min(A), sym(0))) + assert (isequal (max(A), sym(max(D)))) + assert (isequal (max(A), sym(3))) ***** test - x = 1.1; - y = sym(11)/10; - A = dilog (x); - B = double (dilog (y)); - assert (A, B, -4*eps); + % row vectors with dim + assert (isequal (min(A, [], 1), sym(min(D, [], 1)))) + assert (isequal (min(A, [], 2), sym(min(D, [], 2)))) + assert (isequal (max(A, [], 1), sym(max(D, [], 1)))) + assert (isequal (max(A, [], 2), sym(max(D, [], 2)))) ***** test - y = [2 2 sym(pi); exp(sym(1)) 5 6]; - x = double (y); - A = dilog (x); - B = double (dilog (y)); - assert (A, B, -eps); + % column vectors + A = A.'; + D = D.'; + assert (isequal (min(A), sym(min(D)))) + assert (isequal (min(A), sym(0))) + assert (isequal (max(A), sym(max(D)))) + assert (isequal (max(A), sym(3))) ***** test - % maple: - % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; - % > for a in A do evalf(dilog(a)) end do; - x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; - A = [ -0.59248494924959145800 - 1.5760154034463234224*1i - -1.0549087538833908441 - 3.8759788000863368495*1i - -12.192421669033171348 - -2.9195729380904939394 - 3.9540920181102973073*1i - 1.6459519160623984119 - 0.00032335296277550987686*1i - -1.5445800511775466879 + 9.4256034277816069684*1i ]; - B = dilog (x); - assert (A, B, -eps) -***** xtest - % https://github.com/fredrik-johansson/mpmath/issues/473 - assert (isinf (dilog (inf))) -!!!!! known failure -assert (isinf (dilog (inf))) failed -***** assert (isnan (dilog (-inf))) -5 tests, 4 passed, 1 known failure, 0 skipped -[inst/@double/sinhint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/sinhint.m -***** error sinhint (1, 2) + % row vectors with dim + assert (isequal (min(A, [], 1), sym(min(D, [], 1)))) + assert (isequal (min(A, [], 2), sym(min(D, [], 2)))) + assert (isequal (max(A, [], 1), sym(max(D, [], 1)))) + assert (isequal (max(A, [], 2), sym(max(D, [], 2)))) +***** shared ***** test - x = 1.1; - y = sym(11)/10; - A = sinhint (x); - B = double (sinhint (y)); - assert (A, B, -4*eps); + % empty + a = min(sym([])); + assert(isempty(a)) + a = max(sym([])); + assert(isempty(a)) ***** test - y = [2 3 sym(pi); exp(sym(1)) 5 6]; - x = double (y); - A = sinhint (x); - B = double (sinhint (y)); - assert (A, B, -4*eps); + % matrix + A = [1 4 6; 2 2 5]; + A = sym(A); + assert (isequal (min(A), sym([1 2 5]))) + assert (isequal (min(A, [], 1), sym([1 2 5]))) + assert (isequal (min(A, [], 2), sym([1; 2]))) + assert (isequal (max(A), sym([2 4 6]))) + assert (isequal (max(A, [], 1), sym([2 4 6]))) + assert (isequal (max(A, [], 2), sym([6; 5]))) ***** test - % maple: - % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; - % > for a in A do evalf(Shi(a)) end do; - x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; - A = [ 0.45769171128668800567 + 1.8332099215048436239*1i - 0.60888490416819746440 + 1.2482232175376056201*1i - 0.13577763724269399110e42 - 1.6583475942188740493*1i - -0.00010000000005553888891 + 0.10000000016666111119e-5*1i - -0.74701205140887967022e7 - 0.10381447401236722090e8*1i ]; - B = sinhint (x); - assert (A, B, -eps) -***** assert (sinhint (inf), inf) -***** assert (sinhint (-inf), -inf) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@double/chebyshevU.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/chebyshevU.m -***** error chebyshevU (1) -***** error chebyshevU (1, 2, 3) -***** error chebyshevU ([1 2], [1 2 3]) -***** error chebyshevU ([1 2], [1; 2]) + % index output is double not sym + [m, I] = min(sym(2), [], 1); + assert (strcmp(class(I), 'double')) + [m, I] = max(sym(2), [], 1); + assert (strcmp(class(I), 'double')) ***** test - y = sym(11)/10; - t = sym(2); - x = 1.1; - s = 2; - A = chebyshevU (s, x); - B = double (chebyshevU (t, y)); - assert (A, B, -2*eps); + % empty rows/columns, I is double + A = sym(zeros(0, 4)); + [m, I] = min(A, [], 1); + assert (strcmp(class(I), 'double')) + [m, I] = max(A, [], 1); + assert (strcmp(class(I), 'double')) + A = sym(zeros(3, 0)); + [m, I] = min(A, [], 2); + assert (strcmp(class(I), 'double')) + [m, I] = max(A, [], 2); + assert (strcmp(class(I), 'double')) ***** test - % maple - A = 1.661891066691338157; - B = chebyshevU (18.1, 0.9); - assert (A, B, -3*eps) + % index output + A = [0 1 9; 10 7 4]; + B = sym(A); + [m1, I1] = min(A); + [m2, I2] = min(B); + assert (isequal (I1, I2)) + assert (isequal (m1, double(m2))) + [m1, I1] = max(A); + [m2, I2] = max(B); + assert (isequal (I1, I2)) + assert (isequal (m1, double(m2))) ***** test - % maple, complex inputs> - % ChebyshevU(12.1+3.1*I, 0.5+0.2*I); - A = 1.046959313670290818 - 0.03386773634958834846*1i; - B = chebyshevU (12.1+3.1*i, 0.5+0.2i); - assert (A, B, -3*eps); + % index output, with dim + A = [0 1 9; 10 7 4]; + B = sym(A); + [m1, I1] = min(A, [], 1); + [m2, I2] = min(B, [], 1); + assert (isequal (I1, I2)) + assert (isequal (m1, double(m2))) + [m1, I1] = min(A, [], 2); + [m2, I2] = min(B, [], 2); + assert (isequal (I1, I2)) + assert (isequal (m1, double(m2))) + [m1, I1] = max(A, [], 1); + [m2, I2] = max(B, [], 1); + assert (isequal (I1, I2)) + assert (isequal (m1, double(m2))) + [m1, I1] = max(A, [], 2); + [m2, I2] = max(B, [], 2); + assert (isequal (I1, I2)) + assert (isequal (m1, double(m2))) ***** test - % maple, matrix inputs - A = [2.2543638828875776000 -1.3872651600553574400]; - B = chebyshevU ([16 17], [0.9 0.8]); - assert (A, B, -10*eps); + % empty columns + A = sym(zeros(0, 4)); + [m, I] = min(A, [], 1); + assert (isequal (size(m), [0 4])) + assert (isequal (size(I), [0 4])) + [m, I] = max(A, [], 1); + assert (isequal (size(m), [0 4])) + assert (isequal (size(I), [0 4])) ***** test - % x matrix, s scalar - y = [1 2 sym(pi); exp(sym(1)) 5 6]; - t = sym(2); - x = double (y); - s = 2; - A = chebyshevU (s, x); - B = double (chebyshevU (t, y)); - assert (A, B, -eps); + % empty rows + A = sym(zeros(3, 0)); + [m, I] = min(A, [], 2); + assert (isequal (size(m), [3 0])) + assert (isequal (size(I), [3 0])) + [m, I] = max(A, [], 2); + assert (isequal (size(m), [3 0])) + assert (isequal (size(I), [3 0])) ***** test - % s matrix, x scalar - t = [1 2 sym(pi); exp(sym(1)) 5 6]; - y = sym(2); - s = double (t); - x = 2; - A = chebyshevU (s, x); - B = double (chebyshevU (t, y)); - assert (A, B, -2*eps); -***** xtest - % https://github.com/fredrik-johansson/mpmath/issues/469 - assert (chebyshevU (4, inf), inf) - assert (chebyshevU (4, -inf), inf) - assert (chebyshevU (3, inf), inf) - assert (chebyshevU (3, -inf), -inf) -!!!!! known failure -ASSERT errors for: assert (chebyshevU (4, inf),inf) - - Location | Observed | Expected | Reason - () 5 Inf 'Inf' mismatch -11 tests, 10 passed, 1 known failure, 0 skipped -[inst/@double/bernoulli.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/bernoulli.m -***** error bernoulli (1, 2, 3) -***** error bernoulli ([1 2], [1 2 3]) -***** error bernoulli ([1 2], [1; 2]) -***** assert (bernoulli (0), 1) -***** assert (bernoulli (3), 0) + % another empty case + % we differ slightly from double which gives 1x0/0x1 + A = sym(zeros(3, 0)); + [m, I] = min(A, [], 1); + assert (isempty (m)) + assert (isempty (I)) + A = sym(zeros(0, 3)); + [m, I] = min(A, [], 2); + assert (isempty (m)) + assert (isempty (I)) ***** test - % two different definitions in literature - assert (abs (bernoulli (1)), 0.5, -eps) -***** xtest - % we want to use B_1 = 1/2, possible with a version-specific filter - assert (bernoulli (1), 0.5, -eps) -!!!!! known failure -ASSERT errors for: assert (bernoulli (1),0.5,-eps) - - Location | Observed | Expected | Reason - () -0.5 0.5 Rel err 2 exceeds tol 2.2204e-16 by 2 + % empty without index output + A = sym(zeros(3, 0)); + assert (isempty (min (A, [], 1))) + assert (isempty (max (A, [], 1))) + assert (isempty (min (A, [], 2))) + assert (isempty (max (A, [], 2))) + A = sym(zeros(0, 3)); + assert (isempty (min (A, [], 1))) + assert (isempty (max (A, [], 1))) + assert (isempty (min (A, [], 2))) + assert (isempty (max (A, [], 2))) ***** test - n = sym(88); - m = 88; - A = bernoulli (m); - B = double (bernoulli (n)); - assert (A, B, -eps); + % binary op form, one a scalar + A = sym([3 1 9]); + m = min(A, sym(2)); + M = max(A, sym(2)); + assert (isequal (m, sym([2 1 2]))) + assert (isequal (M, sym([3 2 9]))) + m = min(sym(2), A); + M = max(sym(2), A); + assert (isequal (m, sym([2 1 2]))) + assert (isequal (M, sym([3 2 9]))) ***** test - m = [0 2; 3 4]; - n = sym(m); - A = bernoulli (m); - B = double (bernoulli (n)); - assert (isequal (A, B)); + % binary op form, both scalar + m = min(sym(1), sym(2)); + M = max(sym(2), sym(2)); + assert (isequal (m, sym(1))) + assert (isequal (M, sym(2))) ***** test - y = sym(19)/10; - n = sym(2); - x = 1.9; - m = 2; - A = bernoulli (m, x); - B = double (bernoulli (n, y)); - assert (A, B, -eps); + syms x y + assert (isequal (children (min (x, y)), [x y])) ***** test - assert (isequal (bernoulli (4, inf), inf)) - assert (isequal (bernoulli (4, -inf), inf)) -***** xtest - % still broken? - assert (isequal (bernoulli (3, inf), inf)) - assert (isequal (bernoulli (3, -inf), -inf)) + syms x y z + A = [x 1; y z]; + assert (isequal (min (A, [], 1), [min(x, y) min(1, z)])) + assert (isequal (max (A, [], 1), [max(x, y) max(1, z)])) + assert (isequal (min (A, [], 2), [min(x, 1); min(y, z)])) + assert (isequal (max (A, [], 2), [max(x, 1); max(y, z)])) ***** test - assert (isnan (bernoulli(3, nan))) - assert (isnumeric (bernoulli(3, nan))) + syms x y positive + a = min([x 2 y -6]); + assert (isequal (a, -6)) + a = max([x y -6]); + assert (isequal (a, max(x, y))) ***** test - % maple, complex input - A = 34.21957245745810513 - 130.0046256649829101i; - B = bernoulli(7, 2.123 + 1.234i); - assert (A, B, -5*eps); + syms x negative + a = min([x 6 10]); + assert (isequal (a, x)) + a = max([x -2 6]); + assert (isequal (a, 6)) +21 tests, 21 passed, 0 known failure, 0 skipped +[inst/@sym/tril.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tril.m ***** test - % x matrix, m scalar - y = [1 2 sym(pi); exp(sym(1)) 5 6]; - n = sym(2); - x = double (y); - m = 2; - A = bernoulli (m, x); - B = double (bernoulli (n, y)); - assert (A, B, -eps); + syms x + assert (isequal (tril(x), x)) ***** test - % m matrix, x scalar - m = [1 2 3; 4 5 6]; - n = sym(m); - y = sym(21)/10; - x = 2.1; - A = bernoulli (m, x); - B = double (bernoulli (n, y)); - assert (A, B, -3*eps); -16 tests, 15 passed, 1 known failure, 0 skipped -[inst/@double/fresnelc.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/fresnelc.m -***** error fresnelc (1, 2) + % with symbols + syms x + A = [x 2*x; 3*x 4*x]; + assert (isequal (tril(A), [x 0; 3*x 4*x])) ***** test - x = 1.1; - y = sym(11)/10; - A = fresnelc (x); - B = double (fresnelc (y)); - assert (A, B, -4*eps); + % diagonal shifts + B = round(10*rand(3,4)); + A = sym(B); + assert (isequal (tril(A), tril(B))) + assert (isequal (tril(A,0), tril(B,0))) + assert (isequal (tril(A,1), tril(B,1))) + assert (isequal (tril(A,-1), tril(B,-1))) ***** test - y = [2 3 sym(pi); exp(sym(1)) 5 6]; - x = double (y); - A = fresnelc (x); - B = double (fresnelc (y)); - assert (A, B, -4*eps); + % double array pass through + B = round(10*rand(3,4)); + assert (isequal (tril(B,sym(1)), tril(B,1))) + assert (isa (tril(B,sym(1)), 'double')) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/not.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/not.m +***** shared t, f + t = sym(true); + f = sym(false); ***** test - % maple: - % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; - % > for a in A do evalf(FresnelC(a)) end do; - x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; - A = [ 16.087871374125480424 - 36.225687992881650217*1i - 0.47688568479874574722e12 + 0.12213736710985573216e13*1i - 0.49999989867881789756 - 0.49989869420551572361*1i - -0.000099999999999999997535 + 0.99999999999999987665e-6*1i - 0.15391592966931193100e26 - 0.75738824160998910388e24*1i ]; - B = fresnelc (x); - assert (A, B, -eps) -***** assert (fresnelc (inf), 0.5) -***** assert (fresnelc (-inf), -0.5) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@double/fresnels.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/fresnels.m -***** error fresnels (1, 2) + % simple + assert (isequal( ~t, f)) + assert (isequal( ~t, f)) ***** test - x = 1.1; - y = sym(11)/10; - A = fresnels (x); - B = double (fresnels (y)); - assert (A, B, -4*eps); + % array + w = [t t f t]; + z = [f f t f]; + assert (isequal( ~w, z)) ***** test - y = [2 3 sym(pi); exp(sym(1)) 5 6]; - x = double (y); - A = fresnels (x); - B = double (fresnels (y)); - assert (A, B, -4*eps); + % number + assert (isequal( ~sym(5), f)) + assert (isequal( ~sym(0), t)) ***** test - % maple: - % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; - % > for a in A do evalf(FresnelS(a)) end do; - x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; - A = [ 36.725464883991438430 + 15.587751104404587334*1i - 0.12213736710980573217e13 - 0.47688568479924574726e12*1i - 0.49681690114783755327 - -0.46816997858488224040*1i - -0.52344169596561937423e-12 + 0.15707439669173367248e-13*1i - 0.75738824160998910399e24 + 0.15391592966931193100e26*1i ]; - B = fresnels (x); - assert (A, B, -eps) -***** assert (fresnels (inf), 0.5) -***** assert (fresnels (-inf), -0.5) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@double/harmonic.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/harmonic.m -***** error harmonic (1, 2) + % output is sym + syms x + e = ~(x == 4); + assert (isa (e, 'sym')) + assert (strncmp (sympy(e), 'Unequality', 10)) ***** test - x = 1.1; - y = sym(11)/10; - A = harmonic (x); - B = double (harmonic (y)); - assert (A, B, -4*eps); + % output is sym even for scalar t/f (should match other bool fcns) + assert (isa (~t, 'sym')) ***** test - y = [2 3 sym(pi); exp(sym(1)) 5 6]; - x = double (y); - A = harmonic (x); - B = double (harmonic (y)); - assert (A, B, -4*eps); -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@double/chebyshevT.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/chebyshevT.m -***** error chebyshevT (1) -***** error chebyshevT (1, 2, 3) -***** error chebyshevT ([1 2], [1 2 3]) -***** error chebyshevT ([1 2], [1; 2]) + % symbol ineq + syms x + a = [t f x == 1 x ~= 2 x < 3 x <= 4 x > 5 x >= 6]; + b = [f t x ~= 1 x == 2 x >= 3 x > 4 x <= 5 x < 6]; + assert (isequal( ~a, b)) ***** test - y = sym(11)/10; - t = sym(2); - x = 1.1; - s = 2; - A = chebyshevT (s, x); - B = double (chebyshevT (t, y)); - assert (A, B, -2*eps); + syms x + y = ~x; + s = disp(y, 'flat'); + assert (strcmp (strtrim (s), '~x') || strcmpi (strtrim (s), 'Not(x)')) +***** error not (sym(1), 2) +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/@sym/diag.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/diag.m ***** test - % maple - A = -0.304681164165948269030369; - B = chebyshevT (18.1, 0.9); - assert (A, B, -10*eps) + % scalar + syms x + assert (isequal (diag(x), x)) ***** test - % maple, complex inputs - % ChebyshevT(12.1+3.1*I, 0.5+0.2*I); - A = 0.637229289490379273451 - 0.475324703778957991318*1i; - B = chebyshevT (12.1+3.1*i, 0.5+0.2i); - assert (A, B, -5*eps); + % row,col vec input + syms x + r = [1 x 2]; + c = [sym(1); x]; + assert (isequal (diag(diag(c)), c)) + assert (isequal (diag(c), [sym(1) 0; 0 x])) + assert (isequal (diag(diag(r)), r.')) + assert (isequal (diag(r), [sym(1) 0 0; 0 x 0; sym(0) 0 2])) ***** test - % maple, matrix inputs - A = [0.59523064198266880000 0.57727442996887552000]; - B = chebyshevT ([16 17], [0.9 0.7]); - assert (A, B, -10*eps); + % create matrix, kth diag + syms x + r = [1 x]; + z = sym(0); + assert (isequal (diag (x, 0), x)) + assert (isequal (diag (x, 1), [z x; z z])) + assert (isequal (diag (x, -1), [z z; x z])) + assert (isequal (diag (x, 2), [z z x; z z z; z z z])) + assert (isequal (diag (r, 1), [z 1 z; z z x; z z z])) ***** test - % x matrix, s scalar - y = [1 2 sym(pi); exp(sym(1)) 5 6]; - t = sym(2); - x = double (y); - s = 2; - A = chebyshevT (s, x); - B = double (chebyshevT (t, y)); - assert (A, B, -eps); + % extract kth diag + A = sym([1 2 3; 4 5 6]); + assert (isequal (diag(A), sym([1; 5]))) + assert (isequal (diag(A, 0), sym([1; 5]))) + assert (isequal (diag(A, 1), sym([2; 6]))) + assert (isequal (diag(A, 2), sym(3))) + assert (isequal (diag(A, -1), sym(4))) + assert (isempty (diag(A, -2))) + assert (isempty (diag(A, 3))) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/dawson.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dawson.m ***** test - % s matrix, x scalar - t = [1 2 sym(pi); exp(sym(1)) 5 6]; - y = sym(2); - s = double (t); - x = 2; - A = chebyshevT (s, x); - B = double (chebyshevT (t, y)); - assert (A, B, -eps); -***** xtest - % https://github.com/fredrik-johansson/mpmath/issues/469 - assert (chebyshevT (4, inf), inf) - assert (chebyshevT (4, -inf), inf) - assert (chebyshevT (3, inf), inf) - assert (chebyshevT (3, -inf), -inf) -!!!!! known failure -ASSERT errors for: assert (chebyshevT (4, inf),inf) - - Location | Observed | Expected | Reason - () 1 Inf 'Inf' mismatch -11 tests, 10 passed, 1 known failure, 0 skipped -[inst/@double/adjoint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/adjoint.m + if (exist ('OCTAVE_VERSION', 'builtin')) + % dawson missing on Matlab, Issue #742 + A = dawson([1 2]); + B = double(dawson(sym([1 2]))); + assert(A, B, -eps) + end +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@sym/asind.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asind.m +***** error asind (sym(1), 2) +***** assert (isequaln (asind (sym(nan)), sym(nan))) ***** test - M = [1 2; 3 4]; - A = [4 -2; -3 1]; - assert (isequal (adjoint (M), A)); + f1 = asind (sym(1)/2); + f2 = asind (1/2); + assert (double (f1), f2, -eps) ***** test - assert (isequal (adjoint (42), 1)); + D = [1 2; 3 4]/4; + A = sym([1 2; 3 4])/4; + f1 = asind (A); + f2 = asind (D); + assert (double (f1), f2, -eps) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/besselyn.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselyn.m +***** test + % roundtrip + syms x + A = double(besselyn(sym(2), sym(10))); + q = besselyn(sym(2), x); + h = function_handle(q); + B = h(10); + assert (abs (A - B) <= eps) +***** error yn(sym('x')) 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@double/polylog.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/polylog.m -***** error polylog (1) -***** error polylog (1, 2, 3) -***** error polylog ([1 2], [1 2 3]) -***** error polylog ([1 2], [1; 2]) +[inst/@sym/toeplitz.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/toeplitz.m ***** test - y = sym(11)/10; - t = sym(2); - x = 1.1; - s = 2; - A = polylog (s, x); - B = double (polylog (t, y)); - assert (A, B, -eps); + % rect + R = [10 20 40]; C = [10 30]; + A = sym(toeplitz(R,C)); + B = toeplitz(sym(R),sym(C)); + assert (isequal (A, B)) + R = [10 20]; C = [10 30 50]; + A = sym(toeplitz(R,C)); + B = toeplitz(sym(R),sym(C)); + assert (isequal (A, B)) ***** test - % maple - A = 2.3201804233130983964 - 3.4513922952232026614*1i; - B = polylog (2, 3); - assert (A, B, -eps) + % symbols + syms x y + R = [10 20 40]; C = [10 30]; + Rs = [10 x 40]; Cs = [10 y]; + A = toeplitz(R,C); + B = toeplitz(Rs,Cs); + assert (isequal (A, subs(B,[x,y],[20 30]))) ***** test - % maple, complex inputs - A = -11.381456201167411758 + 6.2696695219721651947*1i; - B = polylog (1+2i, 3+4i); - assert (A, B, -eps); + % hermitian + syms a b c + A = [a b c; conj(b) a b; conj(c) conj(b) a]; + B = toeplitz([a,b,c]); + assert (isequal( A, B)) +***** warning + % mismatch + syms x + B = toeplitz([10 x], [1 3 x]); +***** warning + % scalar + B = toeplitz(sym(2), 3); + assert (isequal (B, sym(2))) ***** test - % maple, matrix inputs - A1 = 0.47961557317612748431 - 0.52788287823025778869*1i; - A2 = -0.0049750526563452645369 - 0.024579343612396884851*1i; - B = polylog ([-1-2i -3], [30+40i 40i]); - assert ([A1 A2], B, -eps); + % mismatch + syms x y + fprintf('\n one warning expected\n') % how to quiet this one? + A = toeplitz([10 2], [1 3 5]); + s = warning ('off', 'OctSymPy:toeplitz:diagconflict'); + B = toeplitz([10 x], [1 3 y]); + warning(s) + assert (isequal (A, subs(B, [x,y], [2 5]))) + + one warning expected +warning: toeplitz: column wins diagonal conflict +warning: called from + toeplitz at line 84 column 7 + __test__ at line 6 column 4 + test at line 682 column 11 + /tmp/tmp.ZYBI9fhIE2 at line 574 column 31 + +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@sym/mldivide.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mldivide.m ***** test - % x matrix, s scalar - y = [1 2 sym(pi); exp(sym(1)) 5 6]; - t = sym(2); - x = double (y); - s = 2; - A = polylog (s, x); - B = double (polylog (t, y)); - assert (A, B, -eps); + % scalar + syms x + assert (isa( x\x, 'sym')) + assert (isequal( x\x, sym(1))) + assert (isa( 2\x, 'sym')) + assert (isa( x\2, 'sym')) ***** test - % s matrix, x scalar - t = [1 2 sym(pi); exp(sym(1)) 5 6]; - y = sym(2); - s = double (t); - x = 2; - A = polylog (s, x); - B = double (polylog (t, y)); - assert (A, B, -eps); -10 tests, 10 passed, 0 known failure, 0 skipped -[inst/@double/cosint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/cosint.m -***** error cosint (1, 2) + % scalar \ matrix: easy, no system + D = 2*[0 1; 2 3]; + A = sym(D); + assert (isequal ( 2 \ A , D/2 )) + assert (isequal ( sym(2) \ A , D/2 )) ***** test - x = 1.1; - y = sym(11)/10; - A = cosint (x); - B = double (cosint (y)); - assert (A, B, -4*eps); + % singular matrix + A = sym([1 2; 2 4]); + b = sym([5; 10]); + x = A \ b; + syms c1 + y = [-2*c1 + 5; c1]; + assert (isequal (x, y)) ***** test - y = [2 3 sym(pi); exp(sym(1)) 5 6]; - x = double (y); - A = cosint (x); - B = double (cosint (y)); - assert (A, B, -4*eps); + % singular matrix, mult RHS + A = sym([1 2; 2 4]); + B = sym([[5; 10] [0; 2] [0; 0]]); + x = A \ B; + syms c1 c5 + y = [-2*c1 + 5 nan -2*c5; c1 nan c5]; + assert (isequaln (x, y)) +***** warning + % vpa, nearly singular matrix + A = sym([1 2; 2 4]); + A(1,1) = vpa('1.001'); + b = sym([1; 2]); + x = A \ b; + y = [sym(0); vpa('0.5')]; + assert (isequal (x, y)) +***** warning + % vpa, singular rhs + A = sym([1 2; 2 4]); + b = [vpa('1.01'); vpa('2')]; + x = A \ b; + assert (all(isnan(x))) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@sym/beta.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/beta.m +***** error beta (sym(1), 2, 3) +***** assert (isequal (double (beta (sym(1), 2)), 1/2)) +***** assert (isinf (double (beta (sym(1), 0)))) ***** test - % maple: - % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; - % > for a in A do evalf(Ci(a)) end do; - x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; - A = [ 2.0302963932917216378 - 0.15190715517585688438*1i - 1.6153896382910774851 + 19.725754055338264980*1i - -0.0051488251426104921444 - 1246.1144860424544147 + 1.5707963267948966192*1i - -8.6330747120742332203 + 3.1315929869531280002*1i - 0.069822228467306149311 - 3.1184744625477294643*1i ]; - B = cosint (x); + % round trip + syms x y + f = beta (x, y); + h = function_handle (f); + A = h (1.1, 2.2); + B = beta (1.1, 2.2); + assert (A, B) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/acos.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acos.m +***** error acos (sym(1), 2) +***** assert (isequaln (acos (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); +***** test + f1 = acos(x); + f2 = acos(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = acos(A); + f2 = acos(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = acos (d); + f = acos (y); + h = function_handle (f); + B = h (d); assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/unique.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/unique.m +***** test + A = sym([1 2 3 3 5 3 2 6 5]); + B = sym([1 2 3 5 6]); + assert (isequal (unique(A), B)) +***** test + syms x y + A = [1 2 3 3 4 5 5 6 7 7 x x y y]; + B = [1 2 3 4 5 6 7 x y]; + assert (isequal (unique(A), B)) +***** test + syms x + assert (isequal (unique(x), x)) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/piecewise.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/piecewise.m +***** test + % basic + syms x real + f = piecewise (abs (x) < 1, 1); + assert (isnan (subs (f, -1))); + assert (isequal (subs (f, 0), 1)); + assert (isnan (subs (f, 1))); +***** test + % heaviside + syms x real + f = rewrite (heaviside (x, 1 / sym (2)), 'Piecewise'); + g = piecewise (x < 0, 0, x == 0, 1 / sym (2), x > 0, 1); + assert (logical (simplify (f == g))); +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/xor.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/xor.m +***** shared t, f + t = sym(true); + f = sym(false); +***** test + % simple + assert (isequal (xor(t, f), t)) + assert (isequal (xor(t, t), f)) +***** test + % array + w = [t t f f]; + z = [t f t f]; + assert (isequal (xor(w, z), [f t t f])) ***** xtest - % is it nan or -inf? SymPy says zoo. - assert (isnan (cosint (0))) -!!!!! known failure -assert (isnan (cosint (0))) failed -***** assert (cosint (inf), 0) -***** assert (cosint (-inf), pi*1i, -eps) -***** assert (cosint (1), 0.33740392290096813466, -eps) -***** assert (cosint (-1), 0.33740392290096813466 + pi*1i, -eps) -***** assert (cosint (pi), 0.073667912046425485978, -5*eps) -***** assert (cosint (-pi), 0.07366791204642548597821 + pi*1i, -5*eps) -***** assert (cosint (300), -3.3321999185921117800e-3, -2*eps) -***** assert (cosint (1e4), -3.0551916724485212665e-5, -2*eps) -***** assert (cosint (1 + 1i), 0.8821721805559363250506+0.2872491335199559395273*1i, eps) -***** assert (cosint (1i), 0.8378669409802082408947 + pi/2*1i, -2*eps) + % output is sym even for scalar t/f + % ₣IXME: should match other bool fcns + assert (isa (xor(t, f), 'sym')) ***** test - % compare both sinint and cosint to expint - x = pi; - C1 = cosint (x); - S1 = sinint (x); - R = expint (1i*x); - C2 = -real (R); - S2 = imag (R) + pi/2; - assert (C1, C2, -100*eps); - assert (S1, S2, -100*eps); -16 tests, 15 passed, 1 known failure, 0 skipped -[inst/@double/zeta.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/zeta.m -***** error zeta (1, 2, 3) -***** assert (isnan (zeta (nan))) + % eqns + syms x + e = xor(x == 4, x == 5); + assert (isequal (subs(e, x, [3 4 5 6]), [f t t f])) ***** test - x = 1.1; - y = sym(11)/10; - A = zeta (x); - B = double (zeta (y)); - assert (A, B, -4*eps); + % eqns, exclusive + syms x + e = xor(x == 3, x^2 == 9); + assert (isequal (subs(e, x, [-3 0 3]), [t f f])) +***** error xor (sym('x'), 1, 2) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@sym/angle.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/angle.m ***** test - y = [2 3 sym(pi); exp(sym(1)) 5 6]; - x = double (y); - A = zeta (x); - B = double (zeta (y)); - assert (A, B, -4*eps); + Z = [sqrt(sym(3)) + 3*sym(i), 3 + sqrt(sym(3))*sym(i); 1 + sym(i), sym(i)]; + Q = [sym(pi)/3 sym(pi)/6; sym(pi)/4 sym(pi)/2]; + assert( isequal( angle(Z), Q)); ***** test - % maple: - % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; - % > for a in A do evalf(Zeta(a)) end do; - x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; - A = [ 0.59816556976238173670 - 0.35185474521784529050*1i - 0.21425967567391921717 + 0.52503846985036050707*1i - 1.0 - 1.7564685929749629608 - 0.10151198543617116894*1i - -0.49990811617645824900 - 0.91873792757763831501e-6*1i - 175.09070083717643866 - 71.512541417467273425*1i ]; - B = zeta (x); + % roundtrip + syms x + A = angle (2+2i); + f = angle (x); + h = function_handle (f); + B = h (2+2i); assert (A, B, -eps) -***** assert (zeta (inf), 1.0) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@double/euler.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/euler.m -***** error euler (1, 2, 3) -***** error euler ([1 2], [1 2 3]) -***** error euler ([1 2], [1; 2]) -***** assert (isequal (euler (0), 1)) -***** assert (isequal (euler (1), 0)) -***** assert (isequal (euler (10), -50521)) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/isrow.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isrow.m +***** assert (isrow (sym ([1]))) +***** assert (isrow (sym ([1 2 3]))) +***** assert (~isrow (sym ([]))) +***** assert (~isrow (sym ([1 2 3]'))) +***** assert (~isrow (sym ([1 2; 3 4]))) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/kron.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/kron.m +***** error kron (sym (2)) ***** test - n = sym(88); - m = 88; - A = euler (m); - B = double (euler (n)); - assert (A, B, -eps); + syms x y + A = [sin(x), sin(y); x, y]; + B = ones(2); + expected = sym([sin(x), sin(x), sin(y), sin(y); sin(x), sin(x), sin(y), sin(y); x, x, y, y; x, x, y, y]); + assert (isequal (kron(A, B), expected)) ***** test - m = [0 1; 2 4]; - n = sym(m); - A = euler (m); - B = double (euler (n)); - assert (isequal (A, B)); + syms x y + A = [sin(x), sin(y); x, y]; + B = 2; + assert (isequal (kron(A, B), 2*A)) ***** test - y = sym(19)/10; - n = sym(2); - x = 1.9; - m = 2; - A = euler (m, x); - B = double (euler (n, y)); - assert (A, B, -eps); + syms x y + A = [sin(x), sin(y)]; + B = 2; + assert (isequal( kron(B, A), 2*A)) ***** test - % correct behaviour at floating point infinity - assert (isequal (euler (4, inf), inf)) - assert (isequal (euler (4, -inf), inf)) - assert (isequal (euler (3, inf), inf)) - assert (isequal (euler (3, -inf), -inf)) + syms x y; + X = [tan(x), tan(x)]; + Y = [cot(x); cot(x)]; + expected = sym(ones(2)); + assert (isequal (simplify(kron(X, Y)), expected)) ***** test - assert (isnan (euler(3, nan))) - assert (isnumeric (euler(3, nan))) + syms x y z + X = [x, y, z]; + Y = [y, y; x, x]; + expected = [x*y, x*y, y^2, y^2, y*z, y*z; x^2, x^2, x*y, x*y, x*z, x*z]; + assert (isequal (kron(X, Y), expected)) ***** test - % maple, complex input - A = 113.33970046079423204 - 46.991080726974811540i; - B = euler(7, 2.12345 + 1.23i); - assert (A, B, -eps); + syms x y + X = [x, x^2; y, y^2]; + Y = [1, 0; 0, 1]; + expected = [x, x^2, 0, 0; y, y^2, 0, 0; 0, 0, x, x^2; 0, 0, y, y^2]; + assert (isequal (kron(Y, X), expected)) ***** test - % maple, complex input, large m, small x - A = 0.18034673393294025238e276 + 0.27756266681280689172e276*i; - B = euler (200, 0.123+0.234i); - assert (A, B, -eps); + syms x y z + assert (isequal (kron (x, y, z), x*y*z)) + assert (isequal (kron (x, y, z, 4), 4*x*y*z)) + assert (isequal (kron ([2 3], y, z), [2 3]*y*z)) + assert (isequal (kron ([2 3], [4; 5], y), [8 12; 10 15]*y)) ***** test - % x matrix, m scalar - y = [1 2 sym(pi); exp(sym(1)) 5 6]; - n = sym(2); - x = double (y); - m = 2; - A = euler (m, x); - B = double (euler (n, y)); - assert (A, B, -eps); + syms x y + A = kron ([x y], [1, -1; -1, 1], [2 3; 4 5]); + D = kron ([7 9], [1, -1; -1, 1], [2 3; 4 5]); + A = double (subs (A, [x y], [7 9])); + assert (isequal (A, D)) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/@sym/findsym.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/findsym.m +***** assert (strcmp (findsym (sym(2)), '')); +***** shared x,y,f + x=sym('x'); y=sym('y'); f=x^2+3*x*y-y^2; +***** assert (strcmp (findsym (f), 'x,y')); +***** assert (strcmp (findsym (f,1), 'x')); +***** test + % test order of returned vars + syms x y a b c xx + % https://www.mathworks.com/matlabcentral/newsreader/view_thread/237730 + alpha = sym('alpha'); + assert (strcmp (findsym(b*xx*exp(alpha) + c*sin(a*y), 2), 'xx,y')) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/union.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/union.m ***** test - % m matrix, x scalar - m = [1 2 3; 4 5 6]; - n = sym(m); - y = sym(21)/10; - x = 2.1; - A = euler (m, x); - B = double (euler (n, y)); - assert (A, B, -3*eps); -15 tests, 15 passed, 0 known failure, 0 skipped -[inst/octsympy_tests.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/octsympy_tests.m -***** assert(true) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/poly2sym.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/poly2sym.m -***** shared x,y,a,b,c,p - syms x y a b c - p = x^3 + 2*x^2 + 3*x + 4; -***** assert(isAlways( poly2sym([1 2 3 4]) == p )) -***** assert(isAlways( poly2sym([1 2 3 4],x) == p )) -***** assert(isAlways( poly2sym([1 2 3 4],y) == subs(p,x,y) )) -***** assert(isAlways( poly2sym([1 2 3 4],5) == subs(p,x,5) )) -***** assert(isequal( poly2sym ([1]), 1 )) -***** assert(isequal( poly2sym ([]), 0 )) -***** assert(isAlways( poly2sym(sym([1 2 3 4]),x) == p )) -***** assert(isAlways( poly2sym([a b c],x) == a*x^2 + b*x + c )) -***** assert(isAlways( poly2sym([a b c]) == a*x^2 + b*x + c )) -***** assert(isequal( poly2sym(sym([])), 0 )) -***** assert(isAlways( poly2sym({sym(1) sym(2)}, x) == x + 2 )) -***** assert(isequal( poly2sym ({1}), 1 )) -***** assert(isequal( poly2sym ({}), 0 )) -***** assert(isequal( poly2sym ({1}, x), 1 )) -***** assert(isequal( poly2sym ({}, x), 0 )) -***** assert(isAlways( poly2sym([x x], x) == x^2 + x )) + A = sym([1 2 3]); + B = sym([1 2 4]); + C = union(A, B); + D = sym([1 2 3 4]); + assert (isequal (C, D)) ***** test - % mixed cell array with doubles and syms - assert (isequal (poly2sym ({2.0 sym(3) int64(4)}), 2*x^2 + 3*x + 4)) + % one nonsym + A = sym([1 2 3]); + B = [1 2 4]; + C = union(A, B); + D = sym([1 2 3 4]); + assert (isequal (C, D)) ***** test - % string for x - p = poly2sym ([1 2], 's'); - syms s - assert (isequal (p, s + 2)) -18 tests, 18 passed, 0 known failure, 0 skipped -[inst/finiteset.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/finiteset.m + % empty + A = sym([1 2 3]); + C = union(A, A); + assert (isequal(C, A)) ***** test - s1 = finiteset(sym(1), 2, 2); - s2 = finiteset(sym(1), 2, 2, 2); - assert (isequal (s1, s2)) + % empty input + A = sym([1 2]); + C = union(A, []); + assert (isequal (C, sym([1 2]))) ***** test - s1 = finiteset(sym(0), 1); - s2 = finiteset(sym(0), 2, 3); - s = finiteset(sym(0), 1, 2, 3); - assert (isequal (s1 + s2, s)) + % scalar + syms x + assert (isequal (union([x 1], x), [1 x])) + assert (isequal (union(x, x), x)) ***** test - e = finiteset(); - s = finiteset(sym(1)); - s2 = e + s; - assert (isequal (s, s2)) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/logint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logint.m -***** error logint (sym(1), 2) -***** xtest - assert (isequaln (logint (sym(nan)), sym(nan))) -!!!!! known failure -assert (isequaln (logint (sym (nan)), sym (nan))) failed + A = interval(sym(1), 3); + B = interval(sym(2), 5); + C = union(A, B); + assert( isequal( C, interval(sym(1), 5))) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@sym/csc.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/csc.m +***** error csc (sym(1), 2) +***** assert (isequaln (csc (sym(nan)), sym(nan))) ***** shared x, d - d = 2; - x = sym('2'); + d = 1; + x = sym('1'); ***** test - f1 = logint(x); - f2 = 1.045163780117492784845; + f1 = csc(x); + f2 = csc(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = logint(A); - f2 = 1.045163780117492784845; - f2 = [f2 f2; f2 f2]; + f1 = csc(A); + f2 = csc(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = logint (d); - f = logint (y); + A = csc (d); + f = csc (y); h = function_handle (f); B = h (d); assert (A, B, -eps) -5 tests, 4 passed, 1 known failure, 0 skipped -[inst/@sym/csch.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/csch.m -***** error csch (sym(1), 2) -***** assert (isequaln (csch (sym(nan)), sym(nan))) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/pochhammer.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pochhammer.m +***** error pochhammer (sym(1)) +***** error pochhammer (sym(1), 2, 3) +***** assert (isequal (pochhammer (sym(3), 4), sym(360))) +***** assert (isequal (pochhammer (sym([2 3]), 3), sym([24 60]))) +***** test + % round trip + syms n z + f = pochhammer (z, n); + h = function_handle (f, 'vars', [z n]); + A = h (1.1, 2.2); + B = pochhammer (1.1, 2.2); + assert (A, B) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/sinint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinint.m +***** error sinint (sym(1), 2) +***** xtest + assert (isequaln (sinint (sym(nan)), sym(nan))) +!!!!! known failure +assert (isequaln (sinint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = csch(x); - f2 = csch(d); + f1 = sinint(x); + f2 = 0.9460830703671830149414; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = csch(A); - f2 = csch(D); + f1 = sinint(A); + f2 = 0.9460830703671830149414; + f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = csch (d); - f = csch (y); + A = sinint (d); + f = sinint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/besseljn.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besseljn.m -***** test - % roundtrip - syms x - A = double(besseljn(sym(2), sym(9))); - q = besseljn(sym(2), x); - h = function_handle(q); - B = h(9); - assert (abs (A - B) <= eps) -***** error jn(sym('x')) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/isfinite.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isfinite.m -***** assert (isfinite(sym(1))) -***** assert (isfinite(sym(-10))) -***** assert (~isfinite(sym('oo'))) -***** assert (~isfinite(sym('-oo'))) -***** assert (~isfinite(sym(1)/0)) -***** assert (~isfinite(sym(nan))) -***** assert (isequal (isfinite (sym ([1 inf])), [true false])) -***** test - % finite-by-assumption - syms x finite - assert (isfinite (x)) -8 tests, 8 passed, 0 known failure, 0 skipped -[inst/@sym/sym2poly.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sym2poly.m -***** shared x,y,a,b,c - syms x y a b c -***** assert (isequal (sym2poly (x^2 + 3*x - 4), [1 3 -4])) -***** assert (isequal (sym2poly (x^6 - x^3), [1 0 0 -1 0 0 0])) -***** assert (isequal (sym2poly (x^2 + 3*x - 4, x), [1 3 -4])) -***** assert (norm (sym2poly (pi*x^2 + exp(sym(1))) - [pi 0 exp(1)]) < 10*eps) -***** assert (isa (sym2poly (x^2 + 3*x - 4), 'double')) -***** assert (isa (sym2poly (x^2 + 3*x - 4, x), 'sym')) -***** assert (isequal (sym2poly (x^2+y*x, x), [sym(1) y sym(0)])) -***** assert (isequal (sym2poly (x^2+y*x, y), [x x^2])) -***** assert (isequal (sym2poly (poly2sym ([a b c], x), x), [a b c])) -***** assert (isequal (poly2sym (sym2poly(a*x^2 + c, x), x), a*x^2 + c)) -***** assert (isequal (sym2poly (poly2sym ([1 2 3])), [1 2 3])) -***** error - % too many symbols for single-input - p = a*x^2 + 2; - c = sym2poly (p); -***** assert (isequal (sym2poly (sym(5)), sym(5))) -13 tests, 13 passed, 0 known failure, 0 skipped -[inst/@sym/potential.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/potential.m -***** error potential (sym(1), 2, 3, 4) -***** shared x,y,z - syms x y z -***** test - % 1D - f = 3*x^2; - F = x^3; - assert (isequal (potential(f), F)) - assert (isequal (potential(f, x), F)) - assert (isequal (potential(f, x, 0), F)) - assert (isequal (potential(f, x, 2), F - 8)) -***** test - F = x*exp(y) + (z-1)^2; - f = gradient(F); - G = potential(f, [x;y;z], [0;1;1]); - assert (isAlways (G == F)) -***** test - F = x*exp(y); - f = gradient(F); - G = potential(f); - assert (isAlways (G == F)) ***** test - % no potential exists - syms x y - a = [x; x*y^2]; - assert (isnan (potential (a))) -***** shared -***** xtest - % fails b/c of sympy #8458 (piecewise expr that should simplify) + % rewrite syms x - f = cos(x); - assert (isequal (potential(f, x), sin(x))) -!!!!! known failure -assert (isequal (potential (f, x), sin (x))) failed + y1 = sinint (x); + y2 = rewrite (y1, 'Integral'); + d1 = diff (y1, x); + d2 = diff (y2, x); + v1 = double (subs (d1, x, 2)); + v2 = double (subs (d2, x, 2)); + assert (v1, v2, -eps) 6 tests, 5 passed, 1 known failure, 0 skipped -[inst/@sym/eq.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eq.m -***** test - % simple tests with scalar numbers - assert (logical (sym(1) == sym(1))) - assert (logical (sym(1) == 1)) - assert (~logical (sym(1) == 0)) - assert (isequal (sym(1) == sym(1), sym(true))) - assert (isequal (sym(1) == 1, sym(true))) - assert (isequal (sym(1) == 0, sym(false))) -***** test - % Type of the output is sym or logical? - % FIXME: in current version, they are sym - e = sym(1) == sym(1); - %assert (islogical (e)) - assert (isa (e, 'sym')) -***** test - % things involving a variable are usually not bool but sym. - % (SMT behaviour says always, FIXME: currently we differ.) - syms x - e = x == 0; - assert (~islogical (e)) - assert (isa (e, 'sym')) -***** test - % ... except of course via cancellation - syms x - e = x - x == 0; - assert (logical (e)) - assert (isequal (e, sym(true))) -***** test - % array == array - a = sym([1 2; 3 4]); - y = a == a; - assert (isequal( size(y), [2 2])) - assert (isequal (y, sym([true true; true true]))) - assert (all(all(y))) - y = a == 1; - assert (isequal( size(y), [2 2])) - assert (isequal (y, sym([true false; false false]))) - assert (any(any(y))) - y = a == 42; - assert (isequal( size(y), [2 2])) - assert (isequal (y, sym([false false; false false]))) -***** test - % more array == array - D = [0 1; 2 3]; - A = [sym(0) 1; sym(2) 3]; - DZ = D - D; - assert (isequal (logical(A == A), [true true; true true])) - assert (isequal (logical(A == D), [true true; true true])) - assert (isequal (logical(A - D == DZ), [true true; true true])) - assert (all (all ( A == A ))) - assert (all (all ( A == D ))) - assert (all (all ( A - D == DZ ))) -***** test - % logical output, right shape, etc - t = true; f = false; - a = sym([0 1 2; 3 4 5]); - b = sym([0 1 1; 3 5 5]); - e = a == b; - eexp = sym(logical([1 1 0; 1 0 1])); - assert (isequal (e, eexp)) - a = sym([0 1 2]); - b = sym([0 1 1]); - e = a == b; - eexp = sym(logical([1 1 0])); - assert (isequal (e, eexp)) - e = a' == b'; - eexp = eexp.'; % is/was bug here with ' - assert (isequal (e, eexp)) -***** test - % empty matrices compare to correct empty size - a = zeros (sym(3), 0); - assert (size (a == a), [3, 0]) - a = zeros (sym(0), 2); - assert (size (a == a), [0, 2]) -8 tests, 8 passed, 0 known failure, 0 skipped -[inst/@sym/round.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/round.m -***** test - d = 3/2; - x = sym('3/2'); - f1 = round(x); - f2 = round(d); - assert (isequal (f1, f2)) -***** xtest - % ideally rounding direction would match Octave - d = 5/2; - x = sym('5/2'); - f1 = round(x); - f2 = round(d); - assert (isequal (f1, f2)) -!!!!! known failure -assert (isequal (f1, f2)) failed -***** test - D = [1.1 4.6; -3.4 -8.9]; - A = [sym(11)/10 sym(46)/10; sym(-34)/10 sym(-89)/10]; - f1 = round(A); - f2 = round(D); - assert( isequal (f1, f2)) -***** test - d = sym(-11)/10; - c = -1; - assert (isequal (round (d), c)) -***** test - d = sym(-19)/10; - c = -2; - assert (isequal (round (d), c)) -***** test - d = 7j/2; - x = sym(7j)/2; - f1 = round (x); - f2 = round (d); - assert (isequal (f1, f2)) -***** test - d = 5/3 - 4j/7; - x = sym(5)/3 - sym(4j)/7; - f1 = round (x); - f2 = round (d); - assert (isequal (f1, f2)) -7 tests, 6 passed, 1 known failure, 0 skipped [inst/@sym/laplace.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laplace.m ***** test @@ -5506,1182 +6236,1605 @@ assert (isAlways (L == 24*s / (s^2 + 16)^2)) end 9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/tanh.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tanh.m -***** error tanh (sym(1), 2) -***** assert (isequaln (tanh (sym(nan)), sym(nan))) +[inst/@sym/chol.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chol.m +***** error chol (sym ([1 2; 3 4])); +***** error chol (sym ([1 2; 3 4; 5 6])); +***** test + A = chol(hilb(sym(2))); + B = [[1 0]; sym(1)/2 sqrt(sym(3))/6]; + assert( isequal( A, B )) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/acot.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acot.m +***** error acot (sym(1), 2) +***** assert (isequaln (acot (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = tanh(x); - f2 = tanh(d); + f1 = acot(x); + f2 = acot(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = tanh(A); - f2 = tanh(D); + f1 = acot(A); + f2 = acot(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = tanh (d); - f = tanh (y); + A = acot (d); + f = acot (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/intersect.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/intersect.m -***** test - A = sym([1 2 3]); - B = sym([1 2 4]); - C = intersect(A, B); - D = sym([1 2]); - assert (isequal (C, D)) -***** test - % one nonsym - A = sym([1 2 3]); - B = [1 2 4]; - C = intersect(A, B); - D = sym([1 2]); - assert (isequal (C, D)) -***** test - % empty - A = sym([1 2 3]); - C = intersect(A, A); - assert (isequal (C, A)) -***** test - % empty input - A = sym([1 2]); - C = intersect(A, []); - assert (isempty (C)) -***** test - % scalar - syms x - assert (isequal (intersect([x 1], x), x)) - assert (isequal (intersect(x, x), x)) -***** test - A = interval(sym(1), 3); - B = interval(sym(2), 5); - C = intersect(A, B); - assert( isequal( C, interval(sym(2), 3))) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/ctranspose.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ctranspose.m -***** test - x = sym(1); - assert (isequal (x', x)) -***** assert (isempty (sym([])')) -***** test - % conjugate does nothing to real x - syms x real - assert (isequal (x', x)) -***** test - % complex - syms x - assert (isequal (x', conj(x))) -***** test - % complex array - syms x - A = [x 2*x]; - B = [conj(x); 2*conj(x)]; - assert(isequal(A', B)) +[inst/@sym/cond.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cond.m ***** test A = [1 2; 3 4]; - assert(isequal( sym(A)' , sym(A') )) -***** test - A = [1 2] + 1i; - assert(isequal( sym(A)' , sym(A') )) -***** test - % true/false - t = sym(true); - f = sym(false); - assert (isequal ( t', t)) - assert (isequal ( f', f)) + B = sym(A); + k1 = cond(A); + k2 = cond(B); + k3 = double(k2); + assert (k1 - k3 <= 100*eps) ***** test - % more true/false - syms x - A = [x true 1i]; - B = [conj(x); true; -sym(1i)]; - assert (isequal ( A', B)) -/usr/lib/python3/dist-packages/sympy/matrices/matrixbase.py:2051: SymPyDeprecationWarning: - -non-Expr objects in a Matrix is deprecated. Matrix represents -a mathematical matrix. To represent a container of non-numeric -entities, Use a list of lists, TableForm, NumPy array, or some -other data structure instead. - -See https://docs.sympy.org/latest/explanation/active-deprecations.html#deprecated-non-expr-in-matrix -for details. - -This has been deprecated since SymPy version 1.9. It -will be removed in a future version of SymPy. - - out = self.from_dok(self.rows, self.cols, fdok) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/simplify.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/simplify.m -***** shared x,p,q - syms x - p = x^2 + x + 1; - q = horner (p); -***** assert(~isequal( p - q, 0)) -***** assert(isequal( simplify(p - q), 0)) + % matrix with symbols + syms x positive + A = [x 0; sym(0) 2*x]; + k1 = cond(A); + assert (isequal (k1, sym(2))) 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/acot.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acot.m -***** error acot (sym(1), 2) -***** assert (isequaln (acot (sym(nan)), sym(nan))) +[inst/@sym/sign.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sign.m +***** error sign (sym(1), 2) +***** assert (isequaln (sign (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = acot(x); - f2 = acot(d); + f1 = sign(x); + f2 = sign(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = acot(A); - f2 = acot(D); + f1 = sign(A); + f2 = sign(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = acot (d); - f = acot (y); + A = sign (d); + f = sign (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/symsum.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symsum.m -***** error symsum (sym(1), 2, 3, 4, 5) +[inst/@sym/latex.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/latex.m ***** test - % finite sums - syms n - assert (isequal (symsum(n,n,1,10), 55)) - assert(isa(symsum(n,n,1,10), 'sym')) - assert (isequal (symsum(n,n,sym(1),sym(10)), 55)) - assert (isequal (symsum(n,n,sym(1),sym(10)), 55)) - assert (isequal (symsum(1/n,n,1,10), sym(7381)/2520)) + syms x + y = sin(x); + assert (strcmp (latex (y), '\sin{\left(x \right)}')) +***** assert (strcmp (latex (exp (sym('x'))), 'e^{x}')) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/power.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/power.m ***** test - % negative limits - syms n - assert (isequal (symsum(n,n,-3,3), sym(0))) - assert (isequal (symsum(n,n,-3,0), sym(-6))) - assert (isequal (symsum(n,n,-3,-1), sym(-6))) + % scalar .^ scalar + syms x + assert (isa (x.^2, 'sym')) + assert (isa (2.^x, 'sym')) + assert (isa (x.^x, 'sym')) + assert (isequal (x.^2, x^2)) + assert (isequal (2.^x, 2^x)) + assert (isequal (x.^x, x^x)) ***** test - % one input - syms n - f = symsum (n); - g = n^2/2 - n/2; - assert (isequal (f, g)) - f = symsum (2*n); - g = n^2 - n; - assert (isequal (f, g)) + % scalar .^ matrix + D = [0 1; 2 3]; + A = sym(D); + assert (isequal ( sym(2).^D , 2.^D )) + assert (isequal ( sym(2).^A , 2.^A )) + assert (isequal ( 2.^D , 2.^A )) + assert (isequal ( 2.^A , 2.^A )) ***** test - % constant input - f = symsum (sym(2)); + % matrix .^ matrix syms x - g = 2*x; - assert (isequal (f, g)) + A = [x 2*x; 3*x 4*x]; + D = [0 1; 2 3]; + B = sym(D); + assert (isequal ( A.^D, [1 2*x; 9*x^2 64*x^3] )) + assert (isequal ( A.^B, [1 2*x; 9*x^2 64*x^3] )) ***** test - % two inputs - syms n - f = symsum (2*n, n); - g = n^2 - n; - assert (isequal (f, g)) + % matrix .^ scalar + syms x + A = [x 2*x]; + assert (isequal ( A.^2, [x^2 4*x^2] )) + assert (isequal ( A.^sym(2), [x^2 4*x^2] )) ***** test - % two inputs, second is range - syms n - f = symsum (n, [1 6]); - g = 21; - assert (isequal (f, g)) - f = symsum (n, [sym(1) 6]); - g = 21; - assert (isequal (f, g)) - f = symsum (2*n, [1 6]); - g = 2*21; - assert (isequal (f, g)) + % 1^oo + % (sympy >= 0.7.5 gives NaN, SMT R2013b: gives 1) + oo = sym(inf); + assert (isnan (1^oo)) ***** test - % three inputs, last is range - syms n - f = symsum (2*n, n, [1 4]); - g = sym(20); - assert (isequal (f, g)) - f = symsum (2*n, n, [sym(1) 4]); - g = sym(20); - assert (isequal (f, g)) - f = symsum (2, n, [sym(1) 4]); - g = sym(8); - assert (isequal (f, g)) + % 1^zoo + % (1 on sympy 0.7.4--0.7.6, but nan in git (2014-12-12, a210908d4)) + zoo = sym('zoo'); + assert (isnan (1^zoo)) ***** test - % three inputs, no range - syms n - f = symsum (2*n, 1, 4); - g = sym(20); - assert (isequal (f, g)) - f = symsum (5, sym(1), 3); - g = sym(15); - assert (isequal (f, g)) + % immutable test + A = sym([1 2]); + B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)]])'); + assert (isequal (A.^A, B.^B)) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/@sym/asec.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asec.m +***** error asec (sym(1), 2) +***** assert (isequaln (asec (sym(nan)), sym(nan))) +***** shared x, d + d = 2; + x = sym('2'); ***** test - % ok to use double's for arguments in infinite series - syms n oo - assert(isequal(symsum(1/n^2,n,1,oo), sym(pi)^2/6)) - assert(isequal(symsum(1/n^2,n,1,inf), sym(pi)^2/6)) + f1 = asec(x); + f2 = asec(d); + assert( abs(double(f1) - f2) < 1e-15 ) ***** test - % should be oo because 1 is real but seems to be - % zoo/oo depending on sympy version - syms n oo - zoo = sym('zoo'); - assert (isequal (symsum(1/n,n,1,oo), oo) || ... - isequal (symsum(1/n,n,1,oo), zoo)) -11 tests, 11 passed, 0 known failure, 0 skipped -[inst/@sym/rewrite.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rewrite.m + D = [d d; d d]; + A = [x x; x x]; + f1 = asec(A); + f2 = asec(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test - syms x - assert (isequal (rewrite(x, 'exp'), x)) + % round trip + y = sym('y'); + A = asec (d); + f = asec (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/all.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/all.m ***** test - % empty - e = sym([]); - assert (isequal (rewrite(e, 'sin'), e)) + % matrix + a = [0 3; 1 2]; + s = sym (a); + assert (isequal (all (s), all (a))) + assert (isequal (all (s,1), all (a,1))) + assert (isequal (all (s,2), all (a,2))) +***** test + % vector + a = [1 2 3]; + s = sym (a); + assert (isequal (all (s), all (a))) + assert (isequal (all (s,1), all (a,1))) + assert (isequal (all (s,2), all (a,2))) ***** test + % should fail on symbols syms x - A = [exp(x) exp(2*x)]; - B = [sinh(x) + cosh(x) sinh(2*x) + cosh(2*x)]; - assert (isequal (rewrite(A, 'sin'), B)) + s = [1 2 x]; + try + all (s) + waserr = false; + catch + waserr = true; + end + assert (waserr) 3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/gt.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gt.m +[inst/@sym/le.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/le.m ***** test % simple - x = sym(1); y = sym(1); e = x > y; - assert (~logical (e)) - x = sym(1); y = sym(2); e = x > y; - assert (~logical (e)) + x = sym(1); y = sym(1); e = x <= y; + assert (logical (e)) + x = sym(1); y = sym(2); e = x <= y; + assert (logical (e)) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); - e = a > b; + e = a <= b; assert (isa (e, 'sym')) - assert (~logical (e(1))) + assert (logical (e(1))) assert (isa (e(2), 'sym')) - assert (isequal (e(2), 3 > x)) - assert (~logical (e(3))) + assert (isequal (e(2), 3 <= x)) + assert (logical (e(3))) assert (isa (e(4), 'sym')) - assert (isequal (e(4), 2*x > 10)) + assert (isequal (e(4), 2*x <= 10)) 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/and.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/and.m -***** shared t, f - t = sym(true); - f = sym(false); +[inst/@sym/cumprod.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cumprod.m +***** shared x, y + x = sym ('x'); + y = sym ('y'); +***** error cumprod (x, 1, 2) +***** assert (isequal (cumprod ([-x; -2*x; -3*x]), [-x; 2*x^2; -6*x^3])) +***** assert (isequal (expand (cumprod ([x + i, x - i])), [x + i, x^2 + 1])) +***** assert (isequal (cumprod ([1, x; y, 2], 1), [1, x; y, 2*x] )) +***** assert (isequal (cumprod ([1, x; y, 2], 2), [1, x; y, 2*y] )) +***** test cumprod ([x, x], [2, 1]); # ensure behaves like builtin cumprod +***** test cumprod ([x, x], [1, -2]); # ensure behaves like builtin cumprod +***** error cumprod (x, []) +***** error cumprod (x, {1}) +***** error cumprod (x, struct('a', 1)) +***** error cumprod (x, x) +***** error cumprod (x, 0) +***** error cumprod (x, -1) +13 tests, 13 passed, 0 known failure, 0 skipped +[inst/@sym/iscolumn.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/iscolumn.m +***** assert (iscolumn (sym ([1]))) +***** assert (iscolumn (sym ([1 2 3]'))) +***** assert (~iscolumn (sym ([]))) +***** assert (~iscolumn (sym ([1 2 3]))) +***** assert (~iscolumn (sym ([1 2; 3 4]))) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/subsasgn.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsasgn.m +***** shared a,b + b = [1:4]; + a = sym(b); +***** test a(1) = 10; b(1) = 10; + assert(isequal( a, b )) +***** test I = logical([1 0 1 0]); + a(I) = 2; b(I) = 2; + assert(isequal( a, b )) +***** test I = logical([1 0 1 0]); + a(I) = [2 4]; b(I) = [2 4]; + assert(isequal( a, b )) +***** test I = logical([1 0 1 0]); + a(I) = [2; 4]; b(I) = [2; 4]; + assert(isequal( a, b )) +***** shared ***** test - % simple - assert (isequal (t & f, f)) - assert (isequal (t & t, t)) + b = 1:4; b = [b; 2*b; 3*b]; + a = sym(b); + rhs = [10 11; 12 13]; + a([1:2],[1:2]) = rhs; + b([1:2],[1:2]) = rhs; + assert(isequal( a, b )) + a(1:2,1:2) = rhs; + assert(isequal( a, b )) ***** test - % mix with nonsym - assert (isequal (t & false, f)) - assert (isequal (t & true, t)) - assert (isequal (t & 0, f)) - assert (isequal (t & 1, t)) - assert (isa (t & false, 'sym')) - assert (isa (t & 1, 'sym')) + % slice : + b = 1:4; b = [b; 2*b]; + a = sym(b); + rhs = [10 11; 12 13]; + a(:,2:3) = rhs; + b(:,2:3) = rhs; + assert(isequal( a, b )) ***** test - % array - w = [t t f f]; - z = [t f t f]; - assert (isequal (w & z, [t f f f])) + % grow 2D + b = 1:4; b = [b; 2*b]; + a = sym(b); + rhs = [10 11; 12 13]; + a([1 end+1],end:end+1) = rhs; + b([1 end+1],end:end+1) = rhs; + assert(isequal( a, b )) ***** test - % number - assert (isequal( sym(1) & t, t)) - assert (isequal( sym(0) & t, f)) + % grow from nothing + clear a + a(3) = sym (1); + b = sym ([0 0 1]); + assert (isequal (a, b)) ***** test - % output is sym even for scalar t/f - assert (isa (t & f, 'sym')) + % grow from nothing, 2D + clear a + a(2, 3) = sym (1); + b = sym ([0 0 0; 0 0 1;]); + assert (isequal (a, b)) ***** test - % eqns, exclusive - syms x - e = (x == 3) & (x^2 == 9); - assert (isequal (subs(e, x, [-3 0 3]), [f f t])) -***** error and (sym('x'), 2, 3) -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/erfi.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfi.m -***** error erfi (sym(1), 2) -***** assert (isequaln (erfi (sym(nan)), sym(nan))) -***** shared x, d - d = 0; - x = sym('0'); + % linear indices of 2D + b = 1:4; b = [b; 2*b; 3*b]; + a = sym(b); + b(1:4) = [10 11 12 13]; + a(1:4) = [10 11 12 13]; + assert(isequal( a, b )) + b(1:4) = [10 11; 12 13]; + a(1:4) = [10 11; 12 13]; + assert(isequal( a, b )) +***** error + % Wrong shape matrix RHS: Matlab/Octave don't allow this on doubles. + % Matlab SMT 2013b gets it wrong. We throw an error. + rhs = [10 11; 12 13]; + a = sym (magic (3)); + a(1:2,1:2) = rhs(:); ***** test - f1 = erfi(x); - f2 = 0; - assert( abs(double(f1) - f2) < 1e-15 ) + % Issue #963: vector RHS with diff orientation from 2D indexing + b = 1:4; b = [b; 2*b; 3*b]; + a = sym(b); + b(1:2:3, 1) = 11:2:13; + a(1:2:3, 1) = sym(11:2:13); + assert (isequal (a, b)) + b(1:2:3, 1) = 1:2:3; + a(1:2:3, 1) = 1:2:3; + assert (isequal (a, b)) ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = erfi(A); - f2 = 0; - f2 = [f2 f2; f2 f2]; - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + % Issue #963: vector RHS with diff orientation from 2D indexing + a = sym (magic (3)); + b = a; + a(1:2:3, 2) = [14 15]; + b(1:2:3, 2) = [14; 15]; + assert (isequal (a, b)) + a(2, 1:2:3) = [24 25]; + b(2, 1:2:3) = [24; 25]; + assert (isequal (a, b)) ***** test - % round trip - y = sym('y'); - A = erfi (d); - f = erfi (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/gradient.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gradient.m -***** shared x,y,z - syms x y z + % 1D growth and 'end' + g = sym([1 2 3]); + g(3:4) = [67 68]; + g(end:end+1) = [12 14]; + assert(isequal( g, [1 2 67 12 14] )) ***** test - % 1D - f = x^2; - assert (isequal (gradient(f), diff(f,x))) - assert (isequal (gradient(f,{x}), diff(f,x))) - assert (isequal (gradient(f,[x]), diff(f,x))) - assert (isequal (gradient(f,x), diff(f,x))) + % expanding empty and scalar + syms x + c = sym([]); + c(1) = x; + assert(isequal( c, x )) + c(2) = 2*x; + assert(isequal( c, [x 2*x] )) +***** shared a,b,I,J + b = 1:4; b = [b; 3*b; 5*b]; a = sym(b); + I = logical([1 0 1]); + J = logical([1 0 1 0]); +***** assert(isequal( a(I,J), b(I,J) )) ***** test - % const - f = sym(1); - g = sym(0); - assert (isequal (gradient(f), g)) - assert (isequal (gradient(f,x), g)) + rhs = [90 91; 92 93]; + b(I, J) = rhs; + a(I, J) = rhs; + assert(isequal( a, b )) ***** test - % double const - f = 1; - g = sym(0); - assert (isequal (gradient(f,x), g)) + b(I, J) = 100; + a(I, J) = 100; + assert(isequal( a, b )) +***** shared ***** test - % 1D fcn in 2d/3d - f = sin(y); - assert (isequal (gradient(f), diff(f,y))) - assert (isequal (gradient(f, {x,y}), [sym(0); diff(f,y)])) - assert (isequal (gradient(f, [x y]), [sym(0); diff(f,y)])) - assert (isequal (size (gradient(f, {x,y})), [2 1])) - assert (isequal (gradient(f, {x,y,z}), [0; diff(f,y); 0])) - assert (isequal (gradient(f, [x y z]), [0; diff(f,y); 0])) - assert (isequal (size (gradient(f, {x,y,z})), [3 1])) + % logical with all false + syms x + y = x; + y(false) = 6; + assert(isequal( y, x )); + a = [x x]; + a([false false]) = [6 6]; + assert(isequal( a, [x x] )); ***** test - % grad is column vector - f = sin(y); - assert (isequal (size (gradient(f, {x,y})), [2 1])) - assert (isequal (size (gradient(f, {x,y,z})), [3 1])) - assert (isequal (size (gradient(f, [x y])), [2 1])) - assert (isequal (size (gradient(f, [x;y])), [2 1])) + % issue #18, scalar access + syms x + x(1) = sym(6); + assert(isequal( x, sym(6) )); + x(1) = 6; + assert(isequal( x, sym(6) )); + x(true) = 88; + assert(isequal( x, sym(88) )); ***** test - % 2d fcn in 2d/3d - f = sin(exp(x)*y); - g2 = [diff(f,x); diff(f,y)]; - g3 = [diff(f,x); diff(f,y); diff(f,z)]; - assert (isequal (gradient(f), g2)) - assert (isequal (gradient(f, {x,y}), g2)) - assert (isequal (gradient(f, {x,y,z}), g3)) + % bug: assignment to column vector used to fail + A = sym(zeros(3,1)); + A(1) = 5; ***** test - % 2d fcn in 2d/3d - f = sin(exp(x)*y+sinh(z)); - g2 = [diff(f,x); diff(f,y)]; - g3 = [diff(f,x); diff(f,y); diff(f,z)]; - assert (isequal (gradient(f), g3)) - assert (isequal (gradient(f, {x,y}), g2)) - assert (isequal (gradient(f, {x,y,z}), g3)) -***** error gradient(sym('x'), 42, 42) -***** error gradient([sym('x') sym('x')]) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/pochhammer.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pochhammer.m -***** error pochhammer (sym(1)) -***** error pochhammer (sym(1), 2, 3) -***** assert (isequal (pochhammer (sym(3), 4), sym(360))) -***** assert (isequal (pochhammer (sym([2 3]), 3), sym([24 60]))) + % symfun creation (generic function) + syms x + g(x) = x*x; + assert(isa(g,'symfun')) ***** test - % round trip - syms n z - f = pochhammer (z, n); - h = function_handle (f, 'vars', [z n]); - A = h (1.1, 2.2); - B = pochhammer (1.1, 2.2); - assert (A, B) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/fplot.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fplot.m + % symfun creation (generic function) + syms x g(x) + assert(isa(g,'symfun')) ***** test - % simple + % symfun creation when g already exists and is a sym/symfun syms x - f = cos (x); - fplot (f); -No entry for terminal type "unknown"; -using dumb terminal settings. -warning: using the gnuplot graphics toolkit is discouraged - -The gnuplot graphics toolkit is not actively maintained and has a number -of limitations that are unlikely to be fixed. Communication with gnuplot -uses a one-directional pipe and limited information is passed back to the -Octave interpreter so most changes made interactively in the plot window -will not be reflected in the graphics properties managed by Octave. For -example, if the plot window is closed with a mouse click, Octave will not -be notified and will not update its internal list of open figure windows. -The qt toolkit is recommended instead. + g = x; + syms g(x) + assert(isa(g,'symfun')) + clear g + g(x) = x; + g(x) = x*x; + assert(isa(g,'symfun')) ***** test - % constant function - fplot (sym (10)); -No entry for terminal type "unknown"; -using dumb terminal settings. - line 0: warning: iconv failed to convert degree sign - |--------------------------------------------------------------------| - 1 +|+ + + **** + + +-+| - | + + ** + ** + +-----------------+ | - #|############################*########*##########+***?***x) cos (x)+ | - #|###########################*##########*########################### | - #|##########################*############*########################## | - 0.5 +|+########################*##############*########################+-+| - #|########################*################*######################## | - *|########################*################*######################## *| - #|#######################*##################*#######################* | - #|######################**##################**######################* | - 0 +|*####################*######################*####################*-+| - #|*####################*######################*####################* | - #|#**#################*########################*#################**# | - #|##*#################*########################*#################*## | - #|###*###############*##########################*###############*### | - -0.5 +|+###*#############*############################*#############*###+-+| - #|####**###########*##############################*###########**#### | - #|#####*##########*################################*##########*##### | - #|######**#######*##################################*#######**###### | - #|--------------------------------------------------------------------| - -1 +-+####+###*****#####+#############+############+#####*****###+####+-+ - -4 -2 0 2 4 - -warning: fplot: FCN is not a vectorized function which reduces performance -warning: called from - fplot at line 172 column 7 - fplot at line 107 column 5 - __test__ at line 4 column 2 - test at line 682 column 11 - /tmp/tmp.EEULPfFdek at line 606 column 31 - + % Issue #443: assignment with sym indices + A = sym([10 11]); + A(sym(1)) = 12; + assert (isequal (A, sym([12 11]))) ***** test - syms x - f = cos (x); - [xx, yy] = fplot (f); - assert (xx(1), -5) - assert (xx(end), 5) - assert (min (yy), -1, 0.1) - assert (max (yy), 1, 0.1) - line 0: warning: iconv failed to convert degree sign - |--------------------------------------------------------------------| - 11 +|+ + + + + + +-+| - | + + + + +------------+ | - #|#####################################################+***?***x) 10+ | - #|################################################################## | - #|################################################################## | - 10.5 +|+################################################################+-+| - #|################################################################## | - #|################################################################## | - #|################################################################## | - #|################################################################## | - 10 *|********************************************************************| - #|################################################################## | - #|################################################################## | - #|################################################################## | - #|################################################################## | - 9.5 +|+################################################################+-+| - #|################################################################## | - #|################################################################## | - #|################################################################## | - #|--------------------------------------------------------------------| - 9 +-+####+#############+#############+############+#############+####+-+ - -4 -2 0 2 4 - + % Issue #443: assignment with sym indices + A = sym([10 11]); + A(sym(1), 1) = 12; + assert (isequal (A, sym([12 11]))) + A(sym(1), sym(1)) = 13; + assert (isequal (A, sym([13 11]))) ***** test - syms x - f = cos (x); - dom = [1 3]; - [xx, yy] = fplot (f, dom); - assert (xx(1), dom(1)) - assert (xx(end), dom(2)) + % Issue #443: assignment with sym indices, increase size + A = sym([10 11]); + A(sym(2), 1) = 12; + assert (isequal (A, sym([10 11; 12 0]))) +***** error + % Issue #443 + A = sym([10 11]); + A(2, sym('x')) = sym(12); +***** error + % Issue #443 + A = sym([10 11]); + A(sym(2), sym('x')) = sym(12); +***** error + % issue #445 + A = sym([10 11]); + A(1.1) = 13 +***** error + % issue #445 + A = sym([10 11]); + A(sym(pi)) = 13 +***** error + % issue #445 + A = sym([1 2; 3 4]); + A(1.3, 1.2) = 13 ***** test + % older expansion tests syms x - f = cos (x); - dom = [1 3]; - fplot (f, dom); - assert (get (gca, 'xlim'), dom) + f = [2*x 3*x]; + f(2) = 4*x; + assert (isequal (f, [2*x 4*x])) + f(2) = 2; + assert (isequal(f, [2*x 2])) + g = f; + g(1,3) = x*x; + assert (isequal(g, [2*x 2 x^2])) + g = f; + g(3) = x*x; + assert (isequal(g, [2*x 2 x^2])) + g = f; + g(3) = 4; + assert (isequal(g, [2*x 2 4])) ***** test + % older slicing tests syms x - f = exp (x); - dom = [1 2 3 4]; - fplot (f, dom); - assert (get (gca, 'xlim'), dom(1:2)) - assert (get (gca, 'ylim'), dom(3:4)) - line 0: warning: iconv failed to convert degree sign - |--------------------------------------------------------------------| - 1 +|+ + + + +-+| - +| + + +-----------------++| - #|################################################+***?***x) cos (x)+ | - #|################################################################## | - #|################################################################## | - 0.5 *|**###############################################################+-+| - #|##**############################################################## | - #|####*****######################################################### | - #|#########***###################################################### | - #|############*****################################################# | - 0 +|+################**##############################################+-+| - #|###################*****########################################## | - #|########################***####################################### | - #|###########################**##################################### | - #|#############################*****################################ | - -0.5 +|+#################################*****##########################+-+| - #|#######################################**######################### | - #|#########################################*****#################### | - #|##############################################********############ | - +|--------------------------------------------------------------------| - -1 +-+##############+#################+################+##########******* - 1 1.5 2 2.5 3 - + f = [1 x^2 x^4]; + f(1:2) = [x x]; + assert (isequal( f, [x x x^4] )) + f(1:2) = [1 2]; + assert (isequal( f, [1 2 x^4] )) + f(end-1:end) = [3 4]; + assert (isequal( f, [1 3 4] )) + f(3:4) = [10 11]; + assert (isequal( f, [1 3 10 11] )) + f(end:end+1) = [12 14]; + assert (isequal( f, [1 3 10 12 14] )) ***** test - % bounds as syms + % struct.str = sym, sometimes calls subsasgn + d = struct(); syms x - f = cos (x); - dom = [1 2 3 4]; - fplot (f, sym (dom)); - assert (get (gca, 'xlim'), dom(1:2)) - assert (get (gca, 'ylim'), dom(3:4)) - line 0: warning: iconv failed to convert degree sign - |---------------------------------------------------------------------| - 4 +|+ + *+ + + +-+| - +| + * + + +-----------------++| - #|#######################*#########################+***?***x) exp (x)+ | - #|######################*############################################ | - 3.8 +|+#####################*###########################################+-+| - #|#####################*############################################# | - #|####################*############################################## | - #|###################*############################################### | - 3.6 +|+#################*###############################################+-+| - #|#################*################################################# | - #|################*################################################## | - #|###############*################################################### | - 3.4 +|+############**###################################################+-+| - #|############*###################################################### | - #|###########*####################################################### | - #|##########*######################################################## | - 3.2 +|+########*########################################################+-+| - #|########*########################################################## | - #|######**########################################################### | - +|---------------------------------------------------------------------| - 3 +-+###*#######+#############+#############+#############+###########+-+ - 1 1.2 1.4 1.6 1.8 2 - -***** test - % bounds as syms, regular handle for function - % fails on 6.1.0, maybe earlier too? - if (compare_versions (OCTAVE_VERSION (), '6.1.0', '!=')) - dom = [1 2]; - fplot (@cos, sym (dom)); - assert (get (gca, 'xlim'), dom(1:2)) - end - line 0: warning: iconv failed to convert degree sign - |---------------------------------------------------------------------| - 4 +|+ + + + + +-+| - +| + + + +-----------------++| - #|#################################################+***?***x) cos (x)+ | - #|################################################################### | - 3.8 +|+#################################################################+-+| - #|################################################################### | - #|################################################################### | - #|################################################################### | - 3.6 +|+#################################################################+-+| - #|################################################################### | - #|################################################################### | - #|################################################################### | - 3.4 +|+#################################################################+-+| - #|################################################################### | - #|################################################################### | - #|################################################################### | - 3.2 +|+#################################################################+-+| - #|################################################################### | - #|################################################################### | - +|---------------------------------------------------------------------| - 3 +-+###########+#############+#############+#############+###########+-+ - 1 1.2 1.4 1.6 1.8 2 - -***** error - syms x y - fplot (x*y) - line 0: warning: iconv failed to convert degree sign - |--------------------------------------------------------------------| - 0.8 +|+ + + + + +-+| - +| + + + + +----------++| - 0.6 +|+######################################################+***?***cos++| - *|*################################################################# | - #|#*****############################################################ | - 0.4 +|+#####*****######################################################+-+| - #|###########**********############################################# | - 0.2 +|+####################*****#######################################+-+| - #|##########################*****################################### | - #|###############################****############################### | - 0 +|+##################################*****#########################+-+| - #|########################################*****##################### | - -0.2 +|+############################################*****###############+-+| - #|##################################################*****########### | - #|#######################################################**********# | - -0.4 +|+################################################################***| - #|################################################################## | - -0.6 +|+################################################################+-+| - #|################################################################## | - +|--------------------------------------------------------------------| - -0.8 +-+###########+#############+############+#############+###########+-+ - 1 1.2 1.4 1.6 1.8 2 - + d.a = x; + assert (isa (d, 'struct')) + assert (isequal (d.a, x)) + d.('a') = x; + assert (isa (d, 'struct')) + assert (isequal (d.a, x)) + d = setfield(d, 'a', x); + assert (isa (d, 'struct')) + assert (isequal (d.a, x)) + % at least on Oct 3.8, this calls sym's subsasgn + d = struct(); + d = setfield(d, 'a', x); + assert (isa (d, 'struct')) + assert (isequal (d.a, x)) ***** test - % N parameter does something + % bool scalar assignments of true/false into sym syms x - [xx, yy] = fplot (sin (x), [0 2], 5); - N = length (xx); - assert (N >= 5) - [xx, yy] = fplot (sin (x), [0 2], 1000); - N = length (xx); - assert (N == 1000) + a = sym([1 2 x 3]); + b = [1 2 10 4]; + e = a == b; + assert (logical (e(2))) + e(2) = false; + assert (~logical (e(2))) ***** test - % tolerance parameter does something + % bool vector assignments of true/false into sym syms x - [xx, yy] = fplot (sin (exp (x/2)), [0 3], 0.1); - N1 = length (xx); - [xx, yy] = fplot (sin (exp (x/2)), [0 3], 0.01); - N2 = length (xx); - assert (N2 > N1) + a = sym([1 2 x 3]); + b = [1 2 10 4]; + e = a == b; + e(1:2) = [true true]; + assert (isequal (e, [sym(1)==1 sym(2)==2 x==10 sym(3)==4])) ***** test - % fmt parameter does something + % bool scalar promoted to vector assignments into sym syms x - fplot (sin (x), [0 6], 'rx--', 'linewidth', 5); - l = get (gca (), 'children'); - assert (get (l, 'color'), [1 0 0]) - assert (get (l, 'linewidth'), 5) - f = exp (x); - dom = [1 2 3 4]; - fplot (f, dom); - assert (get (gca, 'xlim'), dom(1:2)) - assert (get (gca, 'ylim'), dom(3:4)) - line 0: warning: iconv failed to convert degree sign - |--------------------------------------------------------------------| - 1 +|+ + BBBB*BB + + + + +-+| - +| B*B BB + + +-----------------++| - #|########BB############*BB#######################+***B***x) sin (x)+ | - #|######*B#################B######################################## | - #|#####B####################B####################################### | - 0.5 +|+###B######################*B####################################+-+| - #|###B#########################B#################################### | - #|#*B###########################B################################### | - #|B##############################B################################## | - #|################################*B################################ | - 0 B|+#################################B##############################+-+| - #|###################################B############################## | - #|####################################B############################# | - #|#####################################B############################ B| - #|######################################*B##########################B | - -0.5 +|+#######################################B#######################*B-+| - #|#########################################B#####################B## | - #|##########################################B*B################BB### | - #|#############################################B#############*B##### | - +|--------------------------------------------------------------------| - -1 +-+#########+##########+###########+##########+#####BBBB*B+########+-+ - 0 1 2 3 4 5 6 - + a = sym([1 2 x 3]); + b = [1 2 10 4]; + e = a == b; + e(1:2) = true; + assert (isequal (e, [sym(1)==1 sym(2)==2 x==10 sym(3)==4])) ***** test - close all -13 tests, 13 passed, 0 known failure, 0 skipped -[inst/@sym/rref.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rref.m + % grow scalar equality expression into a matrix of equalities + syms a b c d + e = a == b; + e(2) = c == d; + assert (isequal (e, [a==b c==d])) +***** shared a, b, I + b = [1:4]; b = [b; 3*b; 5*b]; + a = sym(b); + I = mod (b, 5) > 1; ***** test - A = sym([1 2; 3 4]); - [r, k] = rref(A); - assert (isequal (r, eye(2))) - assert (isequal (k, [1 2])) -***** assert (isequal (rref(sym([2 1])), [1 sym(1)/2])) -***** assert (isequal (rref(sym([1 2; 2 4])), [1 2; 0 0])) -***** assert (isequal (rref(sym([0 0; 2 4])), [1 2; 0 0])) + A = a; A(I) = 2*b(I); + B = b; B(I) = 2*b(I); + assert (isequal (A, B)) ***** test - A = sym([1 2 3; 2 3 4]); - [r, k] = rref(A); - assert (isequal (r, [1 0 -1; 0 1 2])) - assert (isequal (k, [1 2])); -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/norm.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/norm.m -***** assert (isequal (norm(sym(-6)), 6)) + % scalar RHS + A = a; A(I) = 17; + B = b; B(I) = 17; + assert (isequal (A, B)) ***** test - % 2-norm default - A = [1 2; 3 4]; - n1 = norm (sym (A)); - assert (isequal (n1, sqrt (sqrt (sym(221)) + 15))) - assert (norm (A), double (n1), -eps) + % nonetheless, above strange case should give right answer + I = logical([1 0 1 0; 0 1 0 1; 1 0 1 0]); + rhs = 2*b(I); + rhs2 = reshape(rhs, 2, 3); + A0 = a; A1 = a; + A0(I) = rhs; + A1(I) = rhs2; + assert (isequal (A0, A1)) +***** shared AA, BB + BB = [1 2 3; 4 5 6]; + AA = sym(BB); ***** test - syms x y real - assert (isequal (norm([x 1; 3 y], 'fro'), sqrt(x^2 + y^2 + 10))) + A = AA; B = BB; + B([1 6]) = [8 9]; + A([1 6]) = [8 9]; + assert (isequal (A, B)) ***** test - syms x real - assert (isequal (norm([x 1], 2), sqrt(x^2 + 1))) + % rhs scalar + A = AA; B = BB; + B([1 6]) = 88; + A([1 6]) = 88; + assert (isequal (A, B)) ***** test - % test sym vs double ord - syms x - assert (isequal (norm([x 2 1], 1), abs(x) + 3)) - assert (isequal (norm([x 2 1], sym(1)), abs(x) + 3)) - assert (isequal (norm([sym(-3) 2 1], inf), sym(3))) - assert (isequal (norm([sym(-3) 2 1], sym(inf)), sym(3))) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/expand.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expand.m + % If rhs is not a vector, make sure col-based access works + rhs = [18 20; 19 21]; + A = AA; B = BB; + B([1 6]) = 88; + A([1 6]) = 88; + B([1 2 3 4]) = rhs; + A([1 2 3 4]) = rhs; + assert (isequal (A, B)) ***** test - syms x - assert (logical (x^2 + 6*x + 5 == expand ((x+5)*(x+1)))) - assert (isequal (x^2 + 6*x + 5, expand ((x+5)*(x+1)))) + % Growth + A = AA; B = BB; + A(1,5) = 10; + B(1,5) = 10; + assert (isequal (A, B)) +***** shared ***** test - % array - syms x - assert (isequal (expand ([x (x+1)*x]), [x x^2+x])) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/lhs.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lhs.m + % Check row deletion 1D + a = sym([1; 3; 5]); + b = sym([3; 5]); + a(1) = []; + assert( isequal( a, b)) ***** test - syms x y - f = x + 1 == 2*y; - assert (isequal (lhs(f), x + 1)) - assert (isequal (rhs(f), 2*y)) + % Check column deletion 1D + a = sym([1, 4, 8]); + b = sym([4, 8]); + a(1) = []; + assert( isequal( a, b)) ***** test - syms x y - f = x + 1 < 2*y; - assert (isequal (lhs(f), x + 1)) - assert (isequal (rhs(f), 2*y)) + % Check row deletion 2D + a = sym([1, 2; 3, 4]); + b = sym([3, 4]); + a(1, :) = []; + assert( isequal( a, b)) ***** test - syms x y - f = x + 1 >= 2*y; - assert (isequal (lhs(f), x + 1)) - assert (isequal (rhs(f), 2*y)) + % Check column deletion 2D + a = sym([1, 2; 3, 4]); + b = sym([2; 4]); + a(:, 1) = []; + assert( isequal( a, b)) ***** test - syms x y - A = [x == y 2*x < 2*y; 3*x > 3*y 4*x <= 4*y; 5*x >= 5*y x < 0]; - L = [x 2*x; 3*x 4*x; 5*x x]; - R = [y 2*y; 3*y 4*y; 5*y 0]; - assert (isequal( lhs(A), L)) - assert (isequal( rhs(A), R)) -***** error - syms x - lhs(x) -***** error - lhs(sym(true)) -***** error - syms x - A = [1 + x == 2*x sym(6)]; - lhs(A) -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/igamma.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/igamma.m + % General assign + a = sym([1, 2; 3, 4]); + b = sym([5, 5; 5, 5]); + a(:) = 5; + assert( isequal( a, b)) ***** test - % mostly tested in @sym/gammainc - syms x - assert (isequal (igamma (2, x), gammainc(x, 2, 'upper'))) + % Empty matrix + a = sym([1, 2; 3, 4]); + a(:) = []; + assert( isequal( a, sym([]))) ***** test - % unregularized - B = double (igamma (sym(3), 1)); - A = gammainc (1, 3, 'upper')*gamma (3); - assert (A, B, -2*eps) + % Disassemble matrix + a = sym([1 2; 3 4; 5 6]); + b = sym([3 5 2 4 6]); + a(1) = []; + assert (isequal (a, b)); +***** error + a = sym([1, 2; 3, 4]); + a(1, 2) = []; ***** test - % something like a round trip: no igamma() - syms x a - f = igamma (a, x); - h = function_handle (f, 'vars', [a x]); - A = h (1.1, 2.2); - B = double (igamma (sym(11)/10, sym(22)/10)); - C = gammainc (2.2, 1.1, 'upper')*gamma(1.1); - assert (A, B, -10*eps) - assert (A, C, -10*eps) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/setdiff.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/setdiff.m + % Issue #964 + a = sym(10); + a(1) = []; + assert (isempty (a)) + assert (isequal (a, zeros(1, 0))) ***** test - A = sym([1 2 3]); - B = sym([1 2 4]); - C = setdiff(A, B); - D = sym([3]); - assert (isequal (C, D)) + % Issue #963: scalar asgn to empty part of matrix + A = sym (magic (3)); + B = A; + A(1, []) = 42; + assert (isequal (A, B)) + A([], 2) = 42; + assert (isequal (A, B)) + A([]) = 42; + assert (isequal (A, B)) + A([], []) = 42; + assert (isequal (A, B)) + A(2:3, []) = 42; + assert (isequal (A, B)) + A([], 2:3) = 42; + assert (isequal (A, B)) + A(:, []) = 42; + assert (isequal (A, B)) + A([], :) = 42; + assert (isequal (A, B)) ***** test - % one nonsym - A = sym([1 2 3]); - B = [1 2 4]; - C = setdiff(A, B); - D = sym([3]); - assert (isequal (C, D)) + % Issue #1026 + a = sym(1:5); + a(1:3) = []; + assert (isequal (a, sym([4 5]))) ***** test - % empty - A = sym([1 2 3]); - C = setdiff(A, A); - assert (isempty (C)) + % Issue #1026 + B = eye(4); + A = sym(B); + A(1:2, :) = []; + B(1:2, :) = []; + assert (isequal (A, B)) +***** error + % TODO: do we care what error? + A = sym (magic (3)); + A(2:3, []) = [66; 66]; +***** error + A = sym (magic (3)); + A([]) = [66; 66]; +***** error + A = sym (magic (3)); + A([], 1) = [66; 66]; ***** test - % empty input - A = sym([1 2]); - C = setdiff(A, []); - assert (isequal (C, A) || isequal (C, sym([2 1]))) + % Issue #966: empty indexing, empty RHS, A unchanged + B = magic(3); + A = sym(B); + A(1, []) = []; + assert (isequal (A, B)) + A([], 2) = []; + assert (isequal (A, B)) + A([], []) = []; + assert (isequal (A, B)) + A(2:3, []) = []; + assert (isequal (A, B)) + A([], 2:3) = []; + assert (isequal (A, B)) + A(:, []) = []; + assert (isequal (A, B)) + A([], :) = []; + assert (isequal (A, B)) ***** test - % scalar - syms x - assert (isequal (setdiff([x 1], x), sym(1))) - assert (isempty (setdiff(x, x))) + % Issue 967 + B = [1 2; 3 4]; + A = sym(B); + A([]) = []; + assert (isequal (A, B)) ***** test - A = interval(sym(1), 3); - B = interval(sym(2), 5); - C = setdiff(A, B); - assert( isequal( C, interval(sym(1), 2, false, true))) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/ei.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ei.m + % Issue #965 + a = sym(7); + a([]) = []; + assert (isequal (a, sym(7))) +***** test + % Issue #965 + a = sym(7); + a([]) = 42; + assert (isequal (a, sym(7))) +***** error + % Issue #965 + a = sym(7); + a([]) = [42 42] ***** test + b = eye (3); + a = sym (b); + I = [2 3; 4 5]; + a(I) = -2*I; + b(I) = -2*I; + assert (isequal (a, sym (b))); + assert (size (a), [3 3]); +***** error syms x - f = ei(sym(0)); - assert (double(f) == -inf) + A = [1 x; x 2]; + A(5) = x; ***** test - D = [1.895117816355937 4.954234356001890]; - A = ei(sym([1 2])); - assert (all (abs(double(A) - D) < 1e-15)) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/sind.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sind.m -***** error sind (sym(1), 2) -***** assert (isequaln (sind (sym(nan)), sym(nan))) + % 2D indexing with length in one dimension more than 2 + a = sym ([1 2; 3 4; 5 6]); + indices = [1 4; 2 5; 3 6]; + b = [10 11; 12 13; 14 15]; + a(indices) = b; + assert (isequal (a, sym (b))); ***** test - f1 = sind (sym(1)); - f2 = sind (1); - assert (double (f1), f2, -eps) + A = sym ([0 0 0]); + indices = [false true false]; + A(indices) = 1; + assert (isequal (A, sym ([0 1 0]))); + A(indices) = []; + assert (isequal (A, sym ([0 0]))); + indices = [false false]; + A(indices) = []; + assert (isequal (A, sym ([0 0]))); +***** shared a, b + a = [1 2 3 5; 4 5 6 9; 7 5 3 2]; + b = sym (a); ***** test - D = [10 30; 110 -45]; - A = sym(D); - f1 = sind (A); - f2 = sind (D); - assert (double (f1), f2, -eps) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/acsc.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acsc.m -***** error acsc (sym(1), 2) -***** assert (isequaln (acsc (sym(nan)), sym(nan))) + A = a; B = b; + A(true) = 0; + B(true) = 0; + assert (isequal (A, B)) +***** test + A = a; B = b; + A(false) = 0; + B(false) = 0; + assert (isequal (A, B)) +***** test + c = [false true]; + A = a; B = b; + A(c) = 0; B(c) = 0; + assert (isequal (A, B)) + d = c | true; + A(d) = 1; B(d) = 1; + assert (isequal (A, B)) + d = c & false; + A(d) = 2; B(d) = 2; + assert (isequal (A, B)) +***** test + c = [false true false true; true false true false; false true false true]; + A = a; B = b; + A(c) = 0; B(c) = 0; + assert (isequal (A, B)) + d = c | true; + A(d) = 1; B(d) = 1; + assert (isequal (A, B)) + d = c & false; + A(d) = 2; B(d) = 2; + assert (isequal (A, B)) +***** test + c = [false true false true false]; + A = a; B = b; + A(c) = 0; B(c) = 0; + assert (isequal (A, B)) + d = c | true; + A(d) = 1; B(d) = 1; + assert (isequal (A, B)) + d = c & false; + A(d) = 2; B(d) = 2; + assert (isequal (A, B)) +***** test + c = [false; true; false; true; false]; + A = a; B = b; + A(c) = 0; B(c) = 0; + assert (isequal (A, B)) + d = c | true; + A(d) = 1; B(d) = 1; + assert (isequal (A, B)) + d = c & false; + A(d) = 2; B(d) = 2; + assert (isequal (A, B)) +***** test + c = [false true; false true; true false]; + A = a; B = b; + A(c) = 0; B(c) = 0; + assert (isequal (A, B)) + d = c | true; + A(d) = 1; B(d) = 1; + assert (isequal (A, B)) + d = c & false; + A(d) = 2; B(d) = 2; + assert (isequal (A, B)) +77 tests, 77 passed, 0 known failure, 0 skipped +[inst/@sym/abs.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/abs.m +***** error abs (sym(1), 2) +***** assert (isequaln (abs (sym(nan)), sym(nan))) ***** shared x, d - d = 1; - x = sym('1'); + d = -1; + x = sym('-1'); ***** test - f1 = acsc(x); - f2 = acsc(d); + f1 = abs(x); + f2 = abs(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = acsc(A); - f2 = acsc(D); + f1 = abs(A); + f2 = abs(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = acsc (d); - f = acsc (y); + A = abs (d); + f = abs (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/isequaln.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isequaln.m -***** test - a = sym([1 2]); - b = a; - assert (isequaln (a, b)) - b(1) = 42; - assert (~isequaln (a, b)) -***** test - a = sym([1 2; 3 4]); - b = a; - assert (isequaln (a, b)) - b(1) = 42; - assert (~isequaln (a, b)) -***** test - a = sym([nan; 2]); - b = a; - assert (isequaln (a, b)) -***** test - a = sym([nan 2; 3 4]); - b = a; - assert (isequaln (a, b)) -***** test - % more than two arrays - a = sym([nan 2 3]); - b = a; - c = a; - assert (isequaln (a, b, c)) - c(1) = 42; - assert (~isequaln (a, b, c)) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/erfc.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfc.m -***** error erfc (sym(1), 2) -***** assert (isequaln (erfc (sym(nan)), sym(nan))) +[inst/@sym/asinh.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asinh.m +***** error asinh (sym(1), 2) +***** assert (isequaln (asinh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = erfc(x); - f2 = erfc(d); + f1 = asinh(x); + f2 = asinh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = erfc(A); - f2 = erfc(D); + f1 = asinh(A); + f2 = asinh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = erfc (d); - f = erfc (y); + A = asinh (d); + f = asinh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/ceil.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ceil.m -***** error ceil (sym(1), 2) -***** assert (isequaln (ceil (sym(nan)), sym(nan))) +[inst/@sym/mrdivide.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mrdivide.m +***** test + % scalar + syms x + assert (isa( x/x, 'sym')) + assert (isequal( x/x, sym(1))) + assert (isa( 2/x, 'sym')) + assert (isa( x/2, 'sym')) +***** test + % matrix / scalar + D = 2*[0 1; 2 3]; + A = sym(D); + assert (isequal ( A/2 , D/2 )) + assert (isequal ( A/sym(2) , D/2 )) +***** test + % I/A: either invert A or leave unevaluated: not bothered which + A = sym([1 2; 3 4]); + B = sym(eye(2)) / A; + assert (isequal (B, inv(A)) || strncmpi (sympy (B), 'MatPow', 6)) +***** xtest + % immutable test, upstream: TODO + A = sym([1 2; 3 4]); + B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); + assert (isequal (A/A, B/B)) +***** test + % A = C/B is C = A*B + A = sym([1 2; 3 4]); + B = sym([1 3; 4 8]); + C = A*B; + A2 = C / B; + assert (isequal (A, A2)) +***** test + A = [1 2; 3 4]; + B = A / A; + % assert (isequal (B, sym(eye(2)) + assert (isequal (B(1,1), 1)) + assert (isequal (B(2,2), 1)) + assert (isequal (B(2,1), 0)) + assert (isequal (B(1,2), 0)) +***** test + A = sym([5 6]); + B = sym([1 2; 3 4]); + C = A*B; + A2 = C / B; + assert (isequal (A, A2)) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/@sym/cbrt.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cbrt.m +***** error cbrt (sym(1), 2) +***** assert (isequaln (cbrt (sym(nan)), sym(nan))) ***** shared x, d - d = 3/2; - x = sym('3/2'); + d = 2; + x = sym('2'); ***** test - f1 = ceil(x); - f2 = ceil(d); + f1 = cbrt(x); + f2 = 1.2599210498948731647; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = ceil(A); - f2 = ceil(D); + f1 = cbrt(A); + f2 = 1.2599210498948731647; + f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = ceil (d); - f = ceil (y); + if (exist ('OCTAVE_VERSION', 'builtin')) + A = cbrt (d); + else + % Issue #742 + A = d^(1/3); + end + f = cbrt (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/logspace.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logspace.m +[inst/@sym/psi.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/psi.m +***** assert (isequal (psi (sym (1)), -eulergamma)) +***** assert (isequal (psi (1, sym (1)), sym (pi)^2/6)) +***** assert (isinf (psi (sym ('inf')))) ***** test - % default argument for N - A = logspace(0, 2); - assert (length (A) == 50); + % compare to Maple: evalf(Psi(-101/100)); + maple = vpa ('100.3963127058453949545769053445198842332424', 40); + us = vpa (psi (sym (-101)/100), 40); + assert (abs(double(maple-us)) < 1e-39) ***** test - % special case: pi as end pt - A = logspace(-sym(3), sym(pi), 3); - assert (isequal (A(end), sym(pi))) + % compare to Maple: evalf(Psi(1, 3*I-2)); + maple = vpa ('-0.1651414829219882371561038184133243839778799', 40) - ... + vpa ('0.1960040752985823275302034466611711263617296j', 40); + us = vpa (psi (1, sym (-2) + sym(3i)), 40); + assert (abs(double(maple-us)) < 1e-39) ***** test - A = logspace(-sym(4), 0, 3); - B = [sym(1)/10000 sym(1)/100 sym(1)]; - assert (isequal (A, B)) + % should match @double/psi + if (exist ('psi','builtin')) + assert (psi (pi), double (psi (sym (pi))), -3*eps) + assert (psi (100), double (psi (sym (100))), -3*eps) + assert (psi (1e-3), double (psi (1/sym (1e3))), -3*eps) + if (exist ('OCTAVE_VERSION', 'builtin')) + % 2014a doesn't support negative or complex arguments + assert (psi (-1.5), double (psi (sym (-3)/2)), -3*eps) + assert (psi (-8.3), double (psi (sym (-83)/10)),-4*eps) + assert (psi (2i), double (psi (sym (2i))), -3*eps) + assert (psi (10i+3), double (psi (sym (10i)+3)), -3*eps) + end + end ***** test - % vpa support, might need recent sympy for sympy issue #10063 - n = 32; - A = logspace(-vpa(1,n), 0, 3); - B = [10^(-vpa(1,n)) 10^(-vpa(sym(1)/2,n)) vpa(1,n)]; - assert (all (A == B)) - assert (max(abs(double(A) - logspace(-1, 0, 3))) < 1e-15) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/solve.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/solve.m + % @double/psi loses accuracy near the poles: note higher rel tol + if (exist ('psi','builtin')) + if (exist ('OCTAVE_VERSION', 'builtin')) + assert (psi (-1.1), double (psi (sym (-11)/10)), -6*eps) + assert (psi (-1.01), double (psi (sym (-101)/100)), -50*eps) + end + end ***** test - % Simple, single variable, single solution + if (exist ('psi','builtin')) + assert (psi (1, pi), double (psi (1, sym (pi))), -3*eps) + assert (psi (1, 100), double (psi (1, sym (100))), -3*eps) + assert (psi (1, 1e-4), double (psi (1, 1/sym (1e4))), -3*eps) + end +***** test + if (exist ('psi','builtin')) + assert (psi (2, pi), double (psi (2, sym (pi))), -3*eps) + assert (psi (2, 1000), double (psi (2, sym (1000))), -3*eps) + assert (psi (2, 1e-4), double (psi (2, 1/sym (1e4))), -3*eps) + end +***** test + % round trip + if (exist ('psi','builtin')) syms x - d = solve(10*x == 50); - assert (isequal (d, 5)) + f = psi (x); + h = function_handle (f); + A = h (1.1); + B = psi (1.1); + assert (A, B) + end +10 tests, 10 passed, 0 known failure, 0 skipped +[inst/@sym/kroneckerDelta.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/kroneckerDelta.m +***** error kroneckerDelta (sym(1), 2, 3) ***** test - % Single variable, multiple solutions syms x - d = solve(x^2 == 4); - assert (length(d) == 2); - assert (isequal (d, [2; -2]) || isequal (d, [-2; 2])) -***** shared x,y,eq + assert (isequal (kroneckerDelta (x, x), sym(1))) +***** assert (isequal (kroneckerDelta ([sym(1) 2 3], [1 2 0]), sym([1 1 0]))) +***** test + % round trip syms x y - eq = 10*x == 20*y; + f = kroneckerDelta (x, y); + h = function_handle (f); + assert (h (1, 2), 0) + assert (h (2, 2), 1) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/ones.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ones.m ***** test - d = solve(eq, x); - assert (isequal (d, 2*y)) + y = ones(sym(2)); + x = [1 1; 1 1]; + assert( isequal( y, sym(x))) ***** test - d = solve(eq, y); - assert (isequal (d, x/2)) + y = ones(sym(2), 1); + x = [1; 1]; + assert( isequal( y, sym(x))) ***** test - d = solve(eq); - assert (isequal (d, 2*y)) -***** shared x,y - syms x y + y = ones(sym(1), 2); + x = [1 1]; + assert( isequal( y, sym(x))) ***** test - d = solve(2*x - 3*y == 0, x + y == 1); - assert (isequal (d.x, sym(3)/5) && isequal(d.y, sym(2)/5)) + y = ones (sym([2 3])); + x = sym (ones ([2 3])); + assert (isequal (y, x)) +***** assert( isa( ones(sym(2), 'double'), 'double')) +***** assert( isa( ones(3, sym(3), 'single') , 'single')) +***** assert( isa( ones(3, sym(3)), 'sym')) +***** assert( isa( ones(3, sym(3), 'sym'), 'sym')) +***** xtest + % Issue #13 + assert( isa( ones(3, 3, 'sym'), 'sym')) +!!!!! known failure +invalid data type specified +9 tests, 8 passed, 1 known failure, 0 skipped +[inst/@sym/nextprime.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nextprime.m +***** assert (isequal (nextprime(sym(2)), 3)); +***** assert (isequal (nextprime(sym(18)), 19)); +***** assert (isequal (nextprime(sym([1 2 3])), [2 3 5])); +***** assert (isequal (nextprime(sym([-1 0])), [2 2])); ***** test - d = solve(2*x - 3*y == 0, x + y == 1, x, y); - assert (isequal (d.x, sym(3)/5) && isequal(d.y, sym(2)/5)) + % result is a sym + p = nextprime(sym(2)); + assert (isa (p, 'sym')) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/zeros.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/zeros.m ***** test - % Multiple solutions, multiple variables - d = solve(x^2 == 4, x + y == 1); - assert (length(d) == 2); - % FIXME: SMT has d.x gives vector and d.y giving vector, what is - % more intuitive? - for i = 1:2 - assert (isequal (d{i}.x + d{i}.y, 1)) - assert (isequal ((d{i}.x)^2, 4)) + y = zeros(sym(2)); + x = [0 0; 0 0]; + assert( isequal( y, sym(x))) +***** test + y = zeros(sym(2), 1); + x = [0; 0]; + assert( isequal( y, sym(x))) +***** test + y = zeros(sym(1), 2); + x = [0 0]; + assert( isequal( y, sym(x))) +***** test + y = zeros (sym([2 3])); + x = sym (zeros ([2 3])); + assert (isequal (y, x)) +***** assert( isa( zeros(sym(2), 'double'), 'double')) +***** assert( isa( zeros(3, sym(3), 'single') , 'single')) +***** assert( isa( zeros(3, sym(3)), 'sym')) +***** assert( isa( zeros(3, sym(3), 'sym'), 'sym')) +***** xtest + % Issue #13 + assert( isa( zeros(3, 3, 'sym'), 'sym')) +!!!!! known failure +invalid data type specified +9 tests, 8 passed, 1 known failure, 0 skipped +[inst/@sym/hypot.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hypot.m +***** assert (isequal (hypot (sym(3), 4), sym(5))) +***** test + % compare to @double (note Matlab hypot only takes 2 inputs) + A = hypot (hypot ([1 2 3], [4 5 6]), [7 8 9]); + B = double (hypot (sym([1 2 3]), [4 5 6], [7 8 9])); + assert (A, B, -eps) +***** test + % compare to @double, with complex + A = hypot ([1+2i 3+4i], [1 3+1i]); + B = double (hypot (sym([1+2i 3+4i]), [1 3+1i])); + assert (A, B, -eps) +***** test + % matrices + x = sym([1 -2; 0 3]); + y = sym([0 0; 8 4]); + A = hypot (x, y); + B = sym([1 2; 8 5]); + assert (isequal (A, B)) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/or.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/or.m +***** shared t, f + t = sym(true); + f = sym(false); +***** test + % simple + assert (isequal (t | f, t)) + assert (isequal (t | t, t)) + assert (isequal (f | f, f)) +***** test + % array + w = [t t f f]; + z = [t f t f]; + assert (isequal (w | z, [t t t f])) +***** test + % output is sym even for scalar t/f + assert (isa (t | f, 'sym')) +***** test + % eqns + syms x + e = or(x == 4, x == 5); + assert (isequal (subs(e, x, [3 4 5 6]), [f t t f])) +***** error or (sym(1), 2, 3) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/besselh.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselh.m +***** test + % default to k=1 + syms z a + A = besselh(a, z); + B = besselh(a, 1, z); + assert (isequal (A, B)) +***** error besselh(sym('z')) +***** error besselh(2, 0, sym('z')) +***** error besselh(2, 3, sym('z')) +***** test + % doubles, relative error + X = [1 2 pi; 4i 5 6+6i]; + Xs = sym(X); + Alpha = [pi 3 1; 3 2 0]; + Alphas = sym(Alpha); + for k = 1:2 + A = double(besselh(Alphas, k, Xs)); + B = besselh(Alpha, k, X); + assert (all (all (abs(A - B) < 10*eps*abs(A)))) end ***** test - % No solutions - syms x y z - d = solve(x == y, z); - assert (isempty (d)); + % round-trip + syms x + for k = 1:2 + A = besselh(4, k, 10); + q = besselh(4, k, x); + h = function_handle(q); + B = h(10); + assert (abs(A - B) <= eps*abs(A)) + end +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@sym/dsolve.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dsolve.m +***** error dsolve (1, sym('x')) ***** test - % Multiple outputs with single solution - [X, Y] = solve(2*x + y == 5, x + y == 3); - assert (isequal (X, 2)) - assert (isequal (Y, 1)) + syms y(x) + de = diff(y, 2) - 4*y == 0; + f = dsolve(de); + syms C1 C2 + g1 = C1*exp(-2*x) + C2*exp(2*x); + g2 = C2*exp(-2*x) + C1*exp(2*x); + assert (isequal (f, g1) || isequal (f, g2)) ***** test - % system: vector of equations, vector of vars - [X, Y] = solve([2*x + y == 5, x + y == 3], [x y]); - assert (isequal (X, 2)) - assert (isequal (Y, 1)) + % Not enough initial conditions + syms y(x) C1 + de = diff(y, 2) + 4*y == 0; + g = 3*cos(2*x) + C1*sin(2*x); + try + f = dsolve(de, y(0) == 3); + waserr = false; + catch + waserr = true; + expectederr = regexp (lasterr (), 'Perhaps.*under-specified'); + f = 42; + end + assert ((waserr && expectederr) || isequal (f, g)) ***** test - % system: vector of equations, individual vars - [X, Y] = solve([2*x + y == 5, x + y == 3], x, y); - assert (isequal (X, 2)) - assert (isequal (Y, 1)) + % Solution in implicit form + syms y(x) C1 + de = (2*x*y(x) - exp(-2*y(x)))*diff(y(x), x) + y(x) == 0; + sol = dsolve (de); + eqn = x*exp(2*y(x)) - log(y(x)) == C1; + % could differ by signs + sol = lhs (sol) - rhs (sol); + eqn = lhs (eqn) - rhs (eqn); + sol2 = subs (sol, C1, -C1); + assert (isequal (sol, eqn) || isequal (sol2, eqn)) ***** test - % system: individual equations, vector of vars - [X, Y] = solve(2*x + y == 5, x + y == 3, [x y]); - assert (isequal (X, 2)) - assert (isequal (Y, 1)) + % Compute solution and classification + syms y(x) C1 + de = (2*x*y(x) - exp(-2*y(x)))*diff(y(x), x) + y(x) == 0; + [sol, classy] = dsolve (de); + assert (any (strcmp (classy, '1st_exact'))) ***** test - % Multiple outputs with multiple solns - [X, Y] = solve(x*x == 4, x == 2*y); - assert ((isequal (X, [2; -2]) && isequal (Y, [1; -1])) || ... - (isequal (X, [-2; 2]) && isequal (Y, [-1; 1]))) + % initial conditions (first order ode) + syms y(x) + de = diff(y, x) + 4*y == 0; + f = dsolve(de, y(0) == 3); + g = 3*exp(-4*x); + assert (isequal (f, g)) ***** test - % Multiple outputs with multiple solns, specify vars - [X, Y] = solve(x*x == 4, x == 2*y, x, y); - assert ((isequal (X, [2; -2]) && isequal (Y, [1; -1])) || ... - (isequal (X, [-2; 2]) && isequal (Y, [-1; 1]))) -***** error - % mult outputs not allowed for scalar equation, even with mult soln (?) - [s1, s2] = solve(x^2 == 4, x); + % initial conditions (second order ode) + syms y(x) + de = diff(y, 2) + 4*y == 0; + f = dsolve(de, y(0) == 3, subs(diff(y,x),x,0)==0); + g = 3*cos(2*x); + assert (isequal (f, g)) ***** test - % overdetermined - X = solve(2*x - 10 == 0, 3*x - 15 == 0, x); - assert (isequal (X, sym(5))) + % Dirichlet boundary conditions (second order ode) + syms y(x) + de = diff(y, 2) + 4*y == 0; + f = dsolve(de, y(0) == 2, y(1) == 0); + g = -2*sin(2*x)/tan(sym('2'))+2*cos(2*x); + assert (isequal (simplify (f - g), 0)) ***** test - a = solve(2*x >= 10, 10*x <= 50); - assert (isequal( a, x==sym(5))) + % Neumann boundary conditions (second order ode) + syms y(x) + de = diff(y, 2) + 4*y == 0; + f = dsolve(de, subs(diff(y,x),x,0)==1, subs(diff(y,x),x,1)==0); + g = sin(2*x)/2+cos(2*x)/(2*tan(sym('2'))); + assert (isequal (simplify (f - g), 0)) ***** test - A = solve([2*x == 4*y, 2 == 3], x); - assert (isempty (A)) + % Dirichlet-Neumann boundary conditions (second order ode) + syms y(x) + de = diff(y, 2) + 4*y == 0; + f = dsolve(de, y(0) == 3, subs(diff(y,x),x,1)==0); + g = 3*sin(2*x)*tan(sym('2'))+3*cos(2*x); + assert (isequal (simplify (f - g), 0)) ***** test - % Issue #850 - A = solve (sym(pi)^2*x + y == 0); - assert (isequal (A, -y/sym(pi)^2)) + % System of ODEs gives struct, Issue #1003. + syms x(t) y(t) + ode1 = diff(x(t),t) == 2*y(t); + ode2 = diff(y(t),t) == 2*x(t); + soln = dsolve([ode1, ode2]); + assert (isstruct (soln)) + assert (numfields (soln) == 2) + assert (isequal (sort (fieldnames (soln)), {'x'; 'y'})) ***** test - % https://github.com/sympy/sympy/issues/14632 - A = solve([2*x == 4*y, sym(2) == 2], x); - assert (isequal (A, 2*y)) + % System of ODEs + syms x(t) y(t) C1 C2 + ode1 = diff(x(t),t) == 2*y(t); + ode2 = diff(y(t),t) == 2*x(t); + soln = dsolve([ode1, ode2]); + soln = [soln.x, soln.y]; + g1 = [C1*exp(-2*t) + C2*exp(2*t), -C1*exp(-2*t) + C2*exp(2*t)]; + g2 = [C1*exp(2*t) + C2*exp(-2*t), C1*exp(2*t) - C2*exp(-2*t)]; + g3 = [-C1*exp(-2*t) + C2*exp(2*t), C1*exp(-2*t) + C2*exp(2*t)]; + g4 = [C1*exp(2*t) - C2*exp(-2*t), C1*exp(2*t) + C2*exp(-2*t)]; + % old SymPy <= 1.5.1 had some extra twos + g5 = [2*C1*exp(-2*t) + 2*C2*exp(2*t), -2*C1*exp(-2*t) + 2*C2*exp(2*t)]; + g6 = [2*C1*exp(2*t) + 2*C2*exp(-2*t), 2*C1*exp(2*t) - 2*C2*exp(-2*t)]; + assert (isequal (soln, g1) || isequal (soln, g2) || ... + isequal (soln, g3) || isequal (soln, g4) || ... + isequal (soln, g5) || isequal (soln, g6)) ***** test - % https://github.com/sympy/sympy/issues/14632 - A = solve([2*x^2 == 32*y^2, sym(2) == 2], x); - B = solve([2*x^2 == 32*y^2], x); - assert (isequal (A, B) || isequal (A, flip (B))) + % System of ODEs (initial-value problem) + syms x(t) y(t) + ode_1=diff(x(t),t) == 2*y(t); + ode_2=diff(y(t),t) == 2*x(t); + sol_ivp=dsolve([ode_1,ode_2],x(0)==1,y(0)==0); + g_ivp=[exp(-2*t)/2+exp(2*t)/2,-exp(-2*t)/2+exp(2*t)/2]; + assert (isequal ([sol_ivp.x, sol_ivp.y], g_ivp)) ***** test - A = solve ([x+1 0], x); - assert (isequal (A, sym (-1))) + syms y(x) + de = diff(y, 2) + 4*y == 0; + f = dsolve(de, y(0) == 0, y(sym(pi)/4) == 1); + g = sin(2*x); + assert (isequal (f, g)) ***** test - A = solve (x + 1, x); - assert (isequal (A, sym (-1))) - A = solve (x, x); - assert (isequal (A, sym (0))) -24 tests, 24 passed, 0 known failure, 0 skipped -[inst/@sym/svd.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/svd.m + % Nonlinear example + syms y(x) C1 + e = diff(y, x) == y^2; + g = -1 / (C1 + x); + soln = dsolve(e); + assert (isequal (soln, g)) +***** test + % Nonlinear example with initial condition + syms y(x) + e = diff(y, x) == y^2; + g = -1 / (x - 1); + soln = dsolve(e, y(0) == 1); + assert (isequal (soln, g)) +***** test + % forcing, Issue #183, broken in older sympy + if (pycall_sympy__ ('return Version(spver) >= Version("1.7.1")')) + syms x(t) y(t) + ode1 = diff(x) == x + sin(t) + 2; + ode2 = diff(y) == y - t - 3; + soln = dsolve([ode1 ode2], x(0) == 1, y(0) == 2); + X = soln.x; + Y = soln.y; + assert (isequal (diff(X) - (X + sin(t) + 2), 0)) + assert (isequal (diff(Y) - (Y - t - 3), 0)) + end +***** test + syms f(x) a b + de = diff(f, x) == 4*f; + s = dsolve(de, f(a) == b); + assert (isequal (subs(s, x, a), b)) +***** test + % array of ICs + syms x(t) y(t) + ode_1 = diff (x(t), t) == 2*y(t); + ode_2 = diff (y(t), t) == 2*x(t); + sol = dsolve([ode_1, ode_2], [x(0)==1 y(0)==0]); + g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; + assert (isequal ([sol.x, sol.y], g)) +***** test + % cell-array of ICs or ODEs, but not both + % Note: to support both we'd need a wrapper outside of @sym + syms x(t) y(t) + ode_1 = diff (x(t), t) == 2*y(t); + ode_2 = diff (y(t), t) == 2*x(t); + sol = dsolve([ode_1, ode_2], {x(0)==1 y(0)==0}); + g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; + assert (isequal ([sol.x, sol.y], g)) + sol = dsolve({ode_1, ode_2}, [x(0)==1 y(0)==0]); + g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; + assert (isequal ([sol.x, sol.y], g)) +***** test + % array of ICs, Issue #1040. + if (pycall_sympy__ ('return Version(spver) >= Version("1.7.1")')) + syms x(t) y(t) z(t) + syms x_0 y_0 z_0 + diffEqns = [diff(x, t) == -x + 1, diff(y, t) == -y, diff(z, t) == -z]; + initCond = [x(0) == x_0, y(0) == y_0, z(0) == z_0]; + soln = dsolve (diffEqns, initCond); + soln = [soln.x, soln.y, soln.z]; + exact_soln = [(x_0 - 1)*exp(-t) + 1 y_0*exp(-t) z_0*exp(-t)]; + assert (isequal (soln, exact_soln)) + end +21 tests, 21 passed, 0 known failure, 0 skipped +[inst/@sym/collect.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/collect.m +***** test syms x y z + f = [x*y + x - 3 + 2*x^2 - z*x^3 + x^3]; + assert (logical (collect (f,x) == ((x^3)*(1 - z) + 2*(x^2) + x*(y + 1) - 3))) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@sym/trace.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/trace.m +***** test + % scalar + syms x + assert (isequal (trace(x), x)) +***** test + syms x + A = [x 3; 2*x 5]; + assert (isequal (trace(A), x + 5)) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/rhs.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rhs.m +***** test + syms x + f = x + 1 == 2*x; + assert (isequal (rhs(f), 2*x)) +***** error + syms x + rhs(x) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/size.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/size.m +***** test + a = sym([1 2 3]); + [n,m] = size(a); + assert (n == 1 && m == 3) +***** test + a = sym([1 2 3]); + n = size(a); + assert (isequal (n, [1 3])) +***** test + %% size, numel, length + a = sym([1 2 3; 4 5 6]); + assert (isa (size(a), 'double')) + assert (isa (numel(a), 'double')) + assert (isa (length(a), 'double')) + assert (isequal (size(a), [2 3])) + assert (length(a) == 3) + assert (numel(a) == 6) + a = sym([1; 2; 3]); + assert (isequal (size(a), [3 1])) + assert (length(a) == 3) + assert (numel(a) == 3) +***** test + %% size by dim + a = sym([1 2 3; 4 5 6]); + n = size(a, 1); + assert (n == 2) + m = size(a, 2); + assert (m == 3) + a = sym([1 2 3]'); + n = size(a, 1); + assert (n == 3) + m = size(a, 2); + assert (m == 1) +***** xtest + % symbolic-size matrices + syms n m integer + A = sym('A', [n m]); + d = size(A); + assert (~isa(d, 'sym')) + assert (isnumeric(d)) + assert (isequaln (d, [NaN NaN])) +!!!!! known failure +assert (isequaln (d, [NaN, NaN])) failed +***** xtest + % half-symbolic-size matrices + % FIXME: will fail until size stop lying by saying 1x1 + syms n integer + A = sym('A', [n 3]); + assert (isequaln (size(A), [NaN 3])) + A = sym('A', [4 n]); + assert (isequaln (size(A), [4 NaN])) +!!!!! known failure +assert (isequaln (size (A), [NaN, 3])) failed +***** xtest + % half-symbolic-size empty matrices + % FIXME: will fail until size stop lying by saying 1x1 + syms n integer + A = sym('A', [n 0]); + assert (isequaln (size(A), [NaN 0])) +!!!!! known failure +assert (isequaln (size (A), [NaN, 0])) failed +7 tests, 4 passed, 3 known failures, 0 skipped +[inst/@sym/gammainc.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gammainc.m +***** assert (isequal (gammainc (sym(0), 1), sym(0))) +***** assert (isequal (gammainc (sym(0), 2), sym(0))) +***** assert (isequal (gammainc (sym('oo'), 1), sym(1))) +***** assert (isequal (gammainc (sym(0), 1, 'upper'), sym(1))) +***** assert (isequal (gammainc (sym(0), 2, 'upper'), sym(1))) +***** assert (isequal (gammainc (sym('oo'), 1, 'upper'), sym(0))) +***** test + % default is lower + syms x a + assert (isequal (gammainc (x, a), gammainc(x, a, 'lower'))) +***** test + % compare to double + x = 5; a = 1; + A = gammainc (x, a); + B = double (gammainc (sym(x), a)); + assert(A, B, -eps) +***** test + % compare to double where gamma(a) != 1 + x = 5; a = 3; + A = gammainc (x, a); + B = double (gammainc (sym(x), a)); + assert(A, B, -eps) +***** test + % compare to double + x = 100; a = 1; + A = gammainc (x, a); + B = double (gammainc (sym(x), a)); + assert(A, B, -eps) +***** test + % compare to double + xs = sym(1)/1000; x = 1/1000; a = 1; + A = gammainc (x, a); + B = double (gammainc (xs, a)); + assert(A, B, -eps) +***** test + % compare to double + x = 5; a = 1; + A = gammainc (x, a, 'upper'); + B = double (gammainc (sym(x), a, 'upper')); + assert(A, B, -10*eps) +***** test + % compare to double + x = 10; a = 1; + A = gammainc (x, a, 'upper'); + B = double (gammainc (sym(x), a, 'upper')); + assert(A, B, -10*eps) +***** test + % compare to double + x = 40; a = 1; + A = gammainc (x, a, 'upper'); + B = double (gammainc (sym(x), a, 'upper')); + assert(A, B, -10*eps) +***** test + % compare to double + xs = sym(1)/1000; x = 1/1000; a = 1; + A = gammainc (x, a, 'upper'); + B = double (gammainc (xs, a, 'upper')); + assert(A, B, -eps) +***** test + % vectorized + P = gammainc([sym(pi) 2], [1 3]); + expected = [gammainc(pi, sym(1)) gammainc(2, sym(3))]; + assert (isequal (P, expected)) +***** test + % vectorized + P = gammainc(sym(pi), [1 3]); + expected = [gammainc(sym(pi), 1) gammainc(sym(pi), 3)]; + assert (isequal (P, expected)) +***** test + % vectorized + P = gammainc([sym(pi) 2], 1); + expected = [gammainc(pi, sym(1)) gammainc(2, sym(1))]; + assert (isequal (P, expected)) +***** test + % round trip + syms x a + f = gammainc (x, a, 'upper'); + h = function_handle (f, 'vars', [x a]); + A = h (1.1, 2); + B = gammainc (1.1, 2, 'upper'); + assert (A, B) +***** test + % round trip + syms x a + f = gammainc (x, a, 'lower'); + h = function_handle (f, 'vars', [x a]); + A = h (1.1, 2); + B = gammainc (1.1, 2, 'lower'); + assert (A, B) +***** test + % round trip + syms x a + f = gammainc (x, a, 'upper'); + h = function_handle (f, 'vars', [x a]); + A = h (1.1, 2.2); + B = gammainc (1.1, 2.2, 'upper'); + assert (A, B) +***** test + % round trip + syms x a + f = gammainc (x, a, 'lower'); + h = function_handle (f, 'vars', [x a]); + A = h (1.1, 2.2); + B = gammainc (1.1, 2.2, 'lower'); + assert (A, B) +22 tests, 22 passed, 0 known failure, 0 skipped +[inst/@sym/ellipticE.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticE.m +***** error ellipticE (sym(1), 2, 3) +***** assert (double (ellipticE (sym (-105)/10)), 3.70961391, 10e-9) +***** assert (double (ellipticE (sym (-pi)/4)), 1.844349247, 10e-10) +***** assert (double (ellipticE (sym (0))), 1.570796327, 10e-10) +***** assert (double (ellipticE (sym (1))), 1, 10e-1) +***** test + % compare to Maple + us = vpa (ellipticE (sym(7)/6, sym(13)/7), 40); + % > evalf(EllipticE(sin(7/6), sqrt(13/7)), 40); + maple = vpa ('0.6263078268598504591831743625971763209496', 40) + ... + vpa ('0.1775496232203171126975790989055865596501j', 40); + assert (abs (double (maple - us)), 0, 2e-39) +***** test + % compare to Maple + us = vpa (ellipticE (sym(8)/7), 40); + % > evalf(EllipticE(sqrt(8/7)), 40); + maple = vpa ('0.8717182992576322508542205614105802333270', 40) + ... + vpa ('0.1066754320328976949531350910798010526685j', 40); + assert (abs (double (maple - us)), 0, 2e-39) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/@sym/eig.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eig.m ***** test % basic A = [1 2; 3 4]; B = sym(A); - sd = svd(A); - s = svd(B); + sd = eig(A); + s = eig(B); s2 = double(s); - assert (norm(s2 - sd) <= 10*eps) + assert (norm(sort(s2) - sort(sd)) <= 10*eps) ***** test % scalars syms x - syms y positive a = sym(-10); - assert (isequal (svd(a), sym(10))) - assert (isequal (svd(x), sqrt(x*conj(x)))) - assert (isequal (svd(y), y)) + assert (isequal (eig(a), a)) + assert (isequal (eig(x), x)) ***** test - % matrix with symbols - syms x positive - A = [x+1 0; sym(0) 2*x+1]; - s = svd(A); - s2 = subs(s, x, 2); - assert (isequal (s2, [sym(5); 3])) + % diag, multiplicity + A = diag([6 6 7]); + B = sym(A); + e = eig(B); + assert (isequal (size (e), [3 1])) + assert (sum(logical(e == 6)) == 2) + assert (sum(logical(e == 7)) == 1) ***** test % matrix with symbols - syms x positive - A = [x+1 0; sym(0) 2*x+1]; - s = svd(A); - s2 = subs(s, x, 2); - assert (isequal (s2, [sym(5); 3])) -***** test - % matrix with symbols, nonneg sing values - syms x real - A = [x 0; 0 sym(-5)]; - s = svd(A); - assert (isequal (s, [abs(x); 5])) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/interval.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/interval.m + syms x y positive + A = [x+9 y; sym(0) 6]; + s = eig(A); + s = simplify(s); + assert (isequal (s, [x+9; 6]) || isequal (s, [6; x+9])) ***** test - a = interval(sym(1), 2); - assert (isa (a, 'sym')) + % eigenvects + e = sym([5 5 5 6 7]); + A = diag(e); + [V, D] = eig(A); + assert (isequal (diag(D), e.')) + assert (isequal (V, diag(sym([1 1 1 1 1])))) ***** test - % some set subtraction - a = interval(sym(0), 4); - b = interval(sym(0), 1); - c = interval(sym(1), 4, true); - q = a - b; - assert (isequal( q, c)) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/cumprod.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cumprod.m -***** shared x, y - x = sym ('x'); - y = sym ('y'); -***** error cumprod (x, 1, 2) -***** assert (isequal (cumprod ([-x; -2*x; -3*x]), [-x; 2*x^2; -6*x^3])) -***** assert (isequal (expand (cumprod ([x + i, x - i])), [x + i, x^2 + 1])) -***** assert (isequal (cumprod ([1, x; y, 2], 1), [1, x; y, 2*x] )) -***** assert (isequal (cumprod ([1, x; y, 2], 2), [1, x; y, 2*y] )) -***** test cumprod ([x, x], [2, 1]); # ensure behaves like builtin cumprod -***** test cumprod ([x, x], [1, -2]); # ensure behaves like builtin cumprod -***** error cumprod (x, []) -***** error cumprod (x, {1}) -***** error cumprod (x, struct('a', 1)) -***** error cumprod (x, x) -***** error cumprod (x, 0) -***** error cumprod (x, -1) -13 tests, 13 passed, 0 known failure, 0 skipped + % alg/geom mult, eigenvects + e = sym([5 5 5 6]); + A = diag(e); + A(1,2) = 1; + [V, D] = eig(A); + assert (isequal (diag(D), e.')) + assert (sum(logical(V(1,:) ~= 0)) == 2) + assert (sum(logical(V(2,:) ~= 0)) == 0) + assert (sum(logical(V(3,:) ~= 0)) == 1) + assert (sum(logical(V(4,:) ~= 0)) == 1) +6 tests, 6 passed, 0 known failure, 0 skipped [inst/@sym/eval.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eval.m ***** error eval (sym(1), 2) @@ -6710,124 +7863,283 @@ d = eval (f); assert (abs (d - 2*pi) > 1e-15) 6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/laguerreL.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laguerreL.m -***** shared x +[inst/@sym/besseljn.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besseljn.m +***** test + % roundtrip syms x -***** assert (isequal (laguerreL(0, x), sym(1))) -***** assert (isequal (laguerreL(1, x), 1-x)) -***** assert (isequal (laguerreL(2, x), x^2/2 - 2*x + 1)) -***** error laguerreL(x) -***** error laguerreL(1, 2, x, 3) -***** shared + A = double(besseljn(sym(2), sym(9))); + q = besseljn(sym(2), x); + h = function_handle(q); + B = h(9); + assert (abs (A - B) <= eps) +***** error jn(sym('x')) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/uminus.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/uminus.m ***** test + % scalar syms x - assert (isequal (laguerreL (-3, x), exp(x)*(x^2/2 + 2*x + 1))) + assert (isa (-x, 'sym')) + assert (isequal (-(-x), x)) ***** test - syms x n - L = laguerreL([2 n], x); - expected = [laguerreL(2, x) laguerreL(n, x)]; - assert (isequal (L, expected)) + % matrix + D = [0 1; 2 3]; + A = sym(D); + assert( isequal( -A, -D )) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/ellipticK.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticK.m +***** error ellipticK (sym(1), 2) +***** assert (isequal (ellipticK (sym (0)), sym (pi)/2)) +***** assert (isequal (ellipticK (sym (-inf)), sym (0))) +***** assert (double (ellipticK (sym (1)/2)), 1.854074677, 10e-10) +***** assert (double (ellipticK (sym (pi)/4)), 2.225253684, 10e-10) +***** assert (double (ellipticK (sym (-55)/10)), 0.9324665884, 10e-11) ***** test - syms x y - L = laguerreL([1; 2], [x; y]); - expected = [laguerreL(1, x); laguerreL(2, y)]; - assert (isequal (L, expected)) + % compare to double ellipke + m = 1/5; + ms = sym(1)/5; + [K, E] = ellipke (m); + assert (double (ellipticK (ms)), K, -1e-15) + assert (double (ellipticE (ms)), E, -1e-15) ***** test - syms x n - assert (isequal (laguerreL(n, 0, x), laguerreL(n, x))) -***** shared x, y, n - syms x y n -***** assert (isequal (laguerreL([1 n], 0, x), laguerreL([1 n], x))) + % compare to double ellipke + if (exist ('OCTAVE_VERSION', 'builtin')) + m = -10.3; + ms = -sym(103)/10; + [K, E] = ellipke (m); + assert (double (ellipticK (ms)), K, -1e-15) + assert (double (ellipticE (ms)), E, -1e-15) + end ***** test - L = laguerreL([1; n], [pi; 0], [x; y]); - expected = [laguerreL(1, pi, x); laguerreL(n, 0, y)]; - assert (isequal (L, expected)) + % compare to Maple + us = vpa (ellipticK (sym (7)), 40); + % > evalf(EllipticK(sqrt(7)), 40); + maple = vpa ('0.6168027921799632674669917683443602673441', 40) - ... + vpa ('0.9114898734184488922164103102629560336918j', 40); + assert (abs (double (maple - us)), 0, 1e-39) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/@sym/isequaln.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isequaln.m ***** test - L = laguerreL([1 n], [pi 0], x); - expected = [laguerreL(1, pi, x) laguerreL(n, 0, x)]; - assert (isequal (L, expected)) + a = sym([1 2]); + b = a; + assert (isequaln (a, b)) + b(1) = 42; + assert (~isequaln (a, b)) ***** test - L = laguerreL([1 n], pi, [x y]); - expected = [laguerreL(1, pi, x) laguerreL(n, pi, y)]; - assert (isequal (L, expected)) + a = sym([1 2; 3 4]); + b = a; + assert (isequaln (a, b)) + b(1) = 42; + assert (~isequaln (a, b)) ***** test - L = laguerreL(1, [pi 0], [x y]); - expected = [laguerreL(1, pi, x) laguerreL(1, 0, y)]; - assert (isequal (L, expected)) + a = sym([nan; 2]); + b = a; + assert (isequaln (a, b)) ***** test - L = laguerreL([1 n], pi, x); - expected = [laguerreL(1, pi, x) laguerreL(n, pi, x)]; - assert (isequal (L, expected)) + a = sym([nan 2; 3 4]); + b = a; + assert (isequaln (a, b)) ***** test - L = laguerreL(1, [pi 0], x); - expected = [laguerreL(1, pi, x) laguerreL(1, 0, x)]; - assert (isequal (L, expected)) + % more than two arrays + a = sym([nan 2 3]); + b = a; + c = a; + assert (isequaln (a, b, c)) + c(1) = 42; + assert (~isequaln (a, b, c)) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/signIm.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/signIm.m +***** assert (isequal (signIm (sym(1)), sym(0))) +***** assert (isequal (signIm (sym(1) + 2i), sym(1))) +***** assert (isequal (signIm (sym(1) - 2i), sym(-1))) ***** test - L = laguerreL(1, pi, [x y]); - expected = [laguerreL(1, pi, x) laguerreL(1, pi, y)]; - assert (isequal (L, expected)) + % intermediate A looks bit weird, but it works + syms z + A = signIm (z); + assert (isequal (subs(A, z, 3+sym(4i)), sym(1))) + assert (isequal (subs(A, z, 3-sym(4i)), sym(-1))) ***** test - % round trip - f = laguerreL (n, x); - h = function_handle (f); - A = h (1, 3.2); - B = laguerreL (1, 3.2); - assert (A, B) - A = h ([1 2], [3.3 4.4]); - B = laguerreL ([1 2], [3.3 4.4]); - assert (A, B) -***** error - % round trip - f = laguerreL (n, y, x); - h = function_handle (f); -19 tests, 19 passed, 0 known failure, 0 skipped -[inst/@sym/coshint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coshint.m -***** error coshint (sym(1), 2) -***** xtest - assert (isequaln (coshint (sym(nan)), sym(nan))) -!!!!! known failure -assert (isequaln (coshint (sym (nan)), sym (nan))) failed -***** shared x, d - d = 1; - x = sym('1'); + % really a @sym/sign test, but that one is autogen + z = 3 + sym(4i); + A = sign (z); + B = z / abs(z); + assert (double (A), double (B), eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/adjoint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/adjoint.m ***** test - f1 = coshint(x); - f2 = 0.8378669409802082408947; - assert( abs(double(f1) - f2) < 1e-15 ) + syms x + A = [x x^2; x^3 x^4]; + B = [x^4 -x^2; -x^3 x]; + assert( isequal( adjoint(A), B )) +***** test syms x + assert( isequal( adjoint(x), 1)) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/symprod.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symprod.m +***** error symprod (sym(1), 2, 3, 4, 5) ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = coshint(A); - f2 = 0.8378669409802082408947; - f2 = [f2 f2; f2 f2]; - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + % simple + syms n + assert (isequal (symprod(n, n, 1, 10), factorial(sym(10)))) + assert (isequal (symprod(n, n, sym(1), sym(10)), factorial(10))) ***** test - % round trip - y = sym('y'); - A = coshint (d); - f = coshint (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 4 passed, 1 known failure, 0 skipped -[inst/@sym/transpose.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/transpose.m + % one input + syms n + f = symprod (n); + g = factorial (n); + assert (isequal (f, g)) + f = symprod (2*n); + g = 2^n * factorial (n); + assert (isequal (f, g)) ***** test - x = sym(1); - assert (isequal (x.', x)) -***** assert (isempty (sym([]).')) + % constant input + f = symprod (sym(2)); + syms x + g = 2^x; + assert (isequal (f, g)) ***** test - syms x; - assert (isequal (x.', x)) + % two inputs + syms n + f = symprod (2*n, n); + g = 2^n * factorial (n); + assert (isequal (f, g)) ***** test - A = [1 2; 3 4]; - assert(isequal( sym(A).' , sym(A.') )) + % two inputs, second is range + syms n + f = symprod (n, [1 6]); + g = 720; + assert (isequal (f, g)) + f = symprod (n, [sym(1) 6]); + g = 720; + assert (isequal (f, g)) + f = symprod (2*n, [1 6]); + g = sym(2)^6*720; + assert (isequal (f, g)) ***** test - A = [1 2] + 1i; - assert(isequal( sym(A).' , sym(A.') )) -5 tests, 5 passed, 0 known failure, 0 skipped + % three inputs, last is range + syms n + f = symprod (2*n, n, [1 4]); + g = sym(384); + assert (isequal (f, g)) + f = symprod (2*n, n, [sym(1) 4]); + g = sym(384); + assert (isequal (f, g)) + f = symprod (2, n, [sym(1) 4]); + g = sym(16); + assert (isequal (f, g)) +***** test + % three inputs, no range + syms n + f = symprod (2*n, 1, 4); + g = sym(384); + assert (isequal (f, g)) + f = symprod (5, sym(1), 3); + g = sym(125); + assert (isequal (f, g)) +***** test + % infinite product + syms a n oo + zoo = sym('zoo'); + assert (isequal (symprod(a, n, 1, oo), a^oo)) + assert (isequal (symprod(a, n, 1, inf), a^oo)) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/@sym/find.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/find.m +***** error find (sym (1), 2, 3, 4) +***** error [x, y, z, w] = find (sym (1)) +***** test + syms x y positive + assert (isequal (find ([0 x 0 y]), [2 4])) + assert (isequal (find ([0 x 0 y], 1), 2)) + assert (isequal (find ([0 x 0 y], 1, 'first'), 2)) + assert (isequal (find ([0 x 0 y], 1, 'last'), 4)) + assert (isequal (find ([0 x 0 y], 2, 'last'), [2 4])) +***** test + % its enough that it could be non-zero, does not have to be + syms x y + assert (isequal (find ([0 x+y]), 2)) +***** test + % false should not be found + syms x y + assert (isequal (find ([x==x x==y]), 1)) + assert (isequal (find ([x==y]), [])) +***** test + % and/or should be treated as boolean + syms x y + assert (isequal (find ([or(x==y, x==2*y) x==y x==x]), 3)) +***** test + % None + none = pycall_sympy__ ('return None'); + assert (isequal (find ([sym(0) none sym(1)]), 3)) + syms x y + assert (isequal (find ([x==y none x==x]), 3)) +***** test + % two output + syms x y + A = [x 0 0; x+y 5 0]; + [i, j] = find (A); + assert (isequal (i, [1; 2; 2])) + assert (isequal (j, [1; 1; 2])) +***** test + % three output + syms x y + A = [x 0 0; x+y 5 0]; + [i, j, v] = find (A); + assert (isequal (i, [1; 2; 2])) + assert (isequal (j, [1; 1; 2])) + assert (isequal (v, [x; x+y; sym(5)])) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/@sym/plus.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/plus.m +***** test + % basic addition + syms x + assert (isa (x+5, 'sym')) + assert (isa (5+x, 'sym')) + assert (isa (5+sym(4), 'sym')) + assert (isequal (5+sym(4), sym(9))) +***** test + % array addition + syms x + D = [0 1; 2 3]; + A = [sym(0) 1; sym(2) 3]; + DZ = D - D; + assert( isequal ( A + D , 2*D )) + assert( isequal ( D + A , 2*D )) + assert( isequal ( A + A , 2*D )) + assert( isequal ( A + 2 , D + 2 )) + assert( isequal ( 4 + A , 4 + D )) +***** test + % ensure MatrixExpr can be manipulated somewhat + syms n m integer + A = sym('A', [n m]); + B = subs(A, [n m], [5 6]); + B = B + 1; + assert (isa (B, 'sym')) + C = B(1, 1); % currently makes a MatrixElement + C = C + 1; + assert (isa (C, 'sym')) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/rewrite.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rewrite.m +***** test + syms x + assert (isequal (rewrite(x, 'exp'), x)) +***** test + % empty + e = sym([]); + assert (isequal (rewrite(e, 'sin'), e)) +***** test + syms x + A = [exp(x) exp(2*x)]; + B = [sinh(x) + cosh(x) sinh(2*x) + cosh(2*x)]; + assert (isequal (rewrite(A, 'sin'), B)) +3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/subs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subs.m ***** error subs (sym(1), 2, 3, 4) @@ -6991,581 +8303,1215 @@ syms x assert (isequal (g, 6*x*y)) 25 tests, 25 passed, 0 known failure, 0 skipped -[inst/@sym/subsindex.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsindex.m +[inst/@sym/real.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/real.m +***** assert (isequal (real (sym (4) + 3i),4)) ***** test - i = sym(1); - a = 7; - assert(a(i)==a); - i = sym(2); - a = 2:2:10; - assert(a(i)==4); + syms x y real + z = x + 1i*y; + assert (isequal (real (z),x)) ***** test - i = sym([1 3 5]); - a = 1:10; - assert( isequal (a(i), [1 3 5])) + syms x y real + Z = [4 x + 1i*y; x 4 + 3i]; + assert (isequal (real (Z),[4 x; x 4])) ***** test - i = sym([1 3 5]); - a = sym(1:10); - assert( isequal (a(i), sym([1 3 5]))); + syms x real + d = exp (x*i); + assert (isequal (real (d), cos (x))) ***** test - % should be an error if it doesn't convert to double + % round trip syms x - a = 1:10; - try - a(x) - waserr = false; - catch - waserr = true; - end - assert(waserr) + d = 3 - 5i; + f = real (x); + A = real (d); + h = function_handle (f); + B = h (d); + assert (A, B) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/polylog.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/polylog.m +***** assert (isequal (polylog (sym('s'), 0), sym(0))) +***** assert (isequal (double (polylog (1, sym(-1))), -log(2))) +***** assert (isequal (double (polylog (0, sym(2))), -2)) +***** assert (isequal (double (polylog (-1, sym(2))), 2)) +***** assert (isequal (double (polylog (-2, sym(3))), -1.5)) +***** assert (isequal (double (polylog (-3, sym(2))), 26)) +***** assert (isequal (double (polylog (-4, sym(3))), -15)) +***** assert (isequal (double (polylog (1, sym(1)/2)), log(2))) +***** test + % round trip + syms s z + f = polylog (s, z); + h = function_handle (f, 'vars', [s z]); + A = h (1.1, 2.2); + B = polylog (1.1, 2.2); + assert (A, B) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/@sym/jacobian.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/jacobian.m +***** error jacobian (sym(1), 2, 3) +***** error jacobian ([sym(1) 2; sym(3) 4]) +***** shared x,y,z + syms x y z +***** test + % 1D + f = x^2; + assert (isequal (jacobian(f), diff(f,x))) + assert (isequal (jacobian(f,{x}), diff(f,x))) + assert (isequal (jacobian(f,x), diff(f,x))) +***** test + % const + f = sym(1); + g = sym(0); + assert (isequal (jacobian(f), g)) + assert (isequal (jacobian(f,x), g)) +***** test + % double const + f = 1; + g = sym(0); + assert (isequal (jacobian(f,x), g)) +***** test + % diag + f = [x y^2]; + g = [sym(1) 0; 0 2*y]; + assert (isequal (jacobian(f), g)) + assert (isequal (jacobian(f, [x y]), g)) + assert (isequal (jacobian(f, {x y}), g)) +***** test + % anti-diag + f = [y^2 x]; + g = [0 2*y; sym(1) 0]; + assert (isequal (jacobian(f), g)) + assert (isequal (jacobian(f, {x y}), g)) +***** test + % shape + f = [x y^2]; + assert (isequal (size(jacobian(f, {x y z})), [2 3])) + assert (isequal (size(jacobian(f, [x y z])), [2 3])) + assert (isequal (size(jacobian(f, [x; y; z])), [2 3])) + assert (isequal (size(jacobian(f.', {x y z})), [2 3])) +***** test + % scalar f + f = x*y; + assert (isequal (size(jacobian(f, {x y})), [1 2])) + g = gradient(f, {x y}); + assert (isequal (jacobian(f, {x y}), g.')) +***** test + % vect f wrt 1 var + f = [x x^2]; + assert (isequal (size(jacobian(f, x)), [2 1])) + f = f.'; % same shape output + assert (isequal (size(jacobian(f, x)), [2 1])) +10 tests, 10 passed, 0 known failure, 0 skipped +[inst/@sym/reshape.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/reshape.m ***** test + d = [2 4 6; 8 10 12]; + a = sym(d); + assert (isequal (reshape(a, [1 6]), reshape(d, [1 6]))) + assert (isequal (reshape(a, 1, 6), reshape(d, 1, 6))) + assert (isequal (reshape(a, 2, 3), reshape(d, 2, 3))) + assert (isequal (reshape(a, 3, 2), reshape(d, 3, 2))) + assert (isequal (reshape(a, 6, 1), reshape(d, 6, 1))) +***** shared x, a, d syms x - assert (isequal (x(sym (true)), x)) - assert (isequal (x(sym (false)), sym ([]))) + a = [1 x^2 x^4; x x^3 x^5]; + d = [0 2 4; 1 3 5]; + ***** test - x = 6; - assert (isequal (x(sym (true)), 6)) - assert (isequal (x(sym (false)), [])) + b = reshape(a, [1 6]); + assert (isequal (size(b), [1 6])) + assert (isequal (b, x.^reshape(d,1,6))) + ***** test - a = sym([10 12 14]); - assert (isequal (a(sym ([true false true])), a([1 3]))) - assert (isequal (a(sym ([false false false])), sym (ones(1,0)))) + b = reshape(a, [6 1]); + assert (isequal (size(b), [6 1])) + assert (isequal (b, x.^reshape(d,6,1))) + b = reshape(b, size(a)); + assert (isequal (size(b), [2 3])) + assert (isequal (b, a)) + ***** test - a = [10 11; 12 13]; - p = [true false; true true]; - assert (isequal (a(sym (p)), a(p))) - p = [false false false]; - assert (isequal (a(sym (p)), a(p))) -***** error - a = [10 12]; - I = [sym(true) 2]; - b = a(I); + b = a(:); + assert( isequal (size(b), [6 1])) + assert( isequal (b, x.^(d(:)))) + +***** test + % reshape scalar + assert (logical( reshape(x, 1, 1) == x )) + assert (logical( reshape(x, [1 1]) == x )) +***** shared a + syms a +***** error reshape(a, 2, 1) +***** error reshape(a, 1, 2) +***** error reshape(a, 1, 1, 1) +***** error reshape(a, [1, 1, 1]) 9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/log2.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log2.m -***** assert (isequal (log2 (sym (1024)), sym (10))) -***** assert (isequal (log2 (sym ([2 16; 32 1])), sym ([1 4; 5 0]))) +[inst/@sym/sin.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sin.m +***** error sin (sym(1), 2) +***** assert (isequaln (sin (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); ***** test - % round-trip - syms x - f = log2 (x); + f1 = sin(x); + f2 = sin(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = sin(A); + f2 = sin(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = sin (d); + f = sin (y); h = function_handle (f); - A = h (1.1); - B = log2 (1.1); - assert (A, B, -5*eps) + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/frac.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/frac.m +***** test + f1 = frac(sym(11)/10); + f2 = sym(1)/10; + assert (isequal (f1, f2)) +***** test + d = sym(-11)/10; + c = sym(9)/10; + assert (isequal (frac (d), c)) +***** test + d = sym(-19)/10; + c = sym(1)/10; + assert (isequal (frac (d), c)) 3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/ismatrix.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ismatrix.m -***** assert(ismatrix(sym('x'))) -***** assert(ismatrix(sym([1 2 3]))) -***** assert(ismatrix(sym([1; 2]))) -***** assert(ismatrix(sym([1 2; 3 4]))) -***** assert(ismatrix(sym([]))) -***** assert(ismatrix(sym(ones(1,0)))) -***** assert(ismatrix(sym(ones(0,3)))) -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/invhilb.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/invhilb.m +[inst/@sym/display.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/display.m ***** test - A = invhilb(sym(3)); - B = sym([9 -36 30;-36 192 -180;30 -180 180]); - assert( isequal( A, B)) + assert(true) 1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/sinint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinint.m -***** error sinint (sym(1), 2) +[inst/@sym/harmonic.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/harmonic.m +***** error harmonic (sym(1), 2) ***** xtest - assert (isequaln (sinint (sym(nan)), sym(nan))) + assert (isequaln (harmonic (sym(nan)), sym(nan))) !!!!! known failure -assert (isequaln (sinint (sym (nan)), sym (nan))) failed +assert (isequaln (harmonic (sym (nan)), sym (nan))) failed +***** assert (isequal (harmonic (sym(0)), sym(0))) +***** assert (isinf (harmonic (sym(inf)))) +***** assert (isequal (harmonic (sym([9 10])), [sym(7129)/2520 sym(7381)/2520])) +***** test + % round trip + y = sym('y'); + A = harmonic (7); + f = harmonic (y); + h = function_handle (f); + B = h (7); + assert (A, B, -eps) +6 tests, 5 passed, 1 known failure, 0 skipped +[inst/@sym/tand.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tand.m +***** error tand (sym(1), 2) +***** assert (isequaln (tand (sym(nan)), sym(nan))) +***** test + f1 = tand (sym(1)); + f2 = tand (1); + assert (double (f1), f2, -eps) +***** test + D = [10 30; 110 -45]; + A = sym(D); + f1 = tand (A); + f2 = tand (D); + assert (double (f1), f2, -eps) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/asin.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asin.m +***** error asin (sym(1), 2) +***** assert (isequaln (asin (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = sinint(x); - f2 = 0.9460830703671830149414; + f1 = asin(x); + f2 = asin(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = sinint(A); - f2 = 0.9460830703671830149414; - f2 = [f2 f2; f2 f2]; + f1 = asin(A); + f2 = asin(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = sinint (d); - f = sinint (y); + A = asin (d); + f = asin (y); h = function_handle (f); B = h (d); assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/function_handle.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/function_handle.m +***** shared x,y,z + syms x y z ***** test - % rewrite + % basic test + h = function_handle(2*x); + assert(isa(h, 'function_handle')) + assert(h(3)==6) +***** test + % autodetect inputs + h = function_handle(2*x*y, x+y); + [t1, t2] = h(3,5); + assert(t1 == 30 && t2 == 8) +***** test + % specified inputs + h = function_handle(2*x*y, 'vars', [x y]); + assert(h(3,5)==30) + h = function_handle(2*x*y, x+y, 'vars', [x y]); + [t1, t2] = h(3,5); + assert(t1 == 30 && t2 == 8) +***** test + % cell arrays for vars list + h = function_handle(2*x*y, x+y, 'vars', {x y}); + [t1, t2] = h(3,5); + assert(t1 == 30 && t2 == 8) + h = function_handle(2*x*y, x+y, 'vars', {'x' 'y'}); + [t1, t2] = h(3,5); + assert(t1 == 30 && t2 == 8) +***** test + % cell arrays specify order, overriding symvar order + h = function_handle(x*y, 12/y, 'vars', {y x}); + [t1, t2] = h(3, 6); + assert(t1 == 18 && t2 == 4) + h = function_handle(x*y, 12/y, 'vars', [y x]); + [t1, t2] = h(3, 6); + assert(t1 == 18 && t2 == 4) +***** test + % cell arrays specify order, overriding symvar order + h = function_handle(x*y, 12/y, 'vars', {y x}); + [t1, t2] = h(3, 6); + assert(t1 == 18 && t2 == 4) + h = function_handle(x*y, 12/y, 'vars', [y x]); + [t1, t2] = h(3, 6); + assert(t1 == 18 && t2 == 4) +***** test + % Functions with different names in Sympy. + f = abs(x); % becomes Abs(x) + h = function_handle(f); + assert(h(-10) == 10) + f = ceil(x); + h = function_handle(f); + assert(h(10.1) == 11) +***** test + % 'file' with empty filename returns handle + h = function_handle(2*x*y, 'file', ''); + assert(isa(h, 'function_handle')) + assert(h(3,5)==30) + h = function_handle(2*x*y, 'vars', {x y}, 'file', ''); + assert(isa(h, 'function_handle')) + assert(h(3,5)==30) +***** test + % output to disk + fprintf('\n') + if (exist ('OCTAVE_VERSION', 'builtin')) + temp_file = tempname('', 'oct_'); + else + temp_file = tempname(); + end + % allow loading function from temp_file + [temp_path, ans, ans] = fileparts(temp_file); + addpath(temp_path); + f = function_handle(2*x*y, 2^x, 'vars', {x y z}, 'file', temp_file); + assert( isa(f, 'function_handle')) + addpath(temp_path); % Matlab 2014a needs this? + [a,b] = f(10,20,30); + assert (isnumeric (a) && isnumeric (b)) + assert (a == 400) + assert (b == 1024) + if (exist ('OCTAVE_VERSION', 'builtin')) + assert (unlink([temp_file '.m']) == 0) + else + delete ([temp_file '.m']) + end + % remove temp_path from load path + rmpath(temp_path); + +Wrote file /tmp/oct_20KOsG.m. +***** test + % output to disk: also works with .m specified + if (exist ('OCTAVE_VERSION', 'builtin')) + temp_file = [tempname('', 'oct_') '.m']; + else + temp_file = [tempname() '.m']; + end + % allow loading function from temp_file + [temp_path, ans, ans] = fileparts(temp_file); + addpath(temp_path); + f = function_handle(2*x*y, 2^x, 'vars', {x y z}, 'file', temp_file); + assert( isa(f, 'function_handle')) + addpath(temp_path); % Matlab 2014a needs this? + [a,b] = f(10,20,30); + assert (isnumeric (a) && isnumeric (b)) + assert (a == 400) + assert (b == 1024) + if (exist ('OCTAVE_VERSION', 'builtin')) + assert (unlink(temp_file) == 0) + else + delete (temp_file) + end + % remove temp_path from load path + rmpath(temp_path); +Wrote file /tmp/oct_Ux6zc2.m. +***** test + % non-scalar outputs + H = [x y z]; + M = [x y; z 16]; + V = [x;y;z]; + h = function_handle(H, M, V); + [t1,t2,t3] = h(1,2,3); + assert(isequal(t1, [1 2 3])) + assert(isequal(t2, [1 2; 3 16])) + assert(isequal(t3, [1;2;3])) +***** test + % non-scalar outputs in .m files + H = [x y z]; + M = [x y; z 16]; + V = [x;y;z]; + if (exist ('OCTAVE_VERSION', 'builtin')) + temp_file = tempname('', 'oct_'); + else + temp_file = tempname(); + end + % allow loading function from temp_file + [temp_path, ans, ans] = fileparts(temp_file); + addpath(temp_path); + h = function_handle(H, M, V, 'vars', {x y z}, 'file', temp_file); + assert( isa(h, 'function_handle')) + addpath(temp_path); % Matlab 2014a needs this? + [t1,t2,t3] = h(1,2,3); + assert(isequal(t1, [1 2 3])) + assert(isequal(t2, [1 2; 3 16])) + assert(isequal(t3, [1;2;3])) + if (exist ('OCTAVE_VERSION', 'builtin')) + assert (unlink([temp_file '.m']) == 0) + else + delete ([temp_file '.m']) + end + % remove temp_path from load path + rmpath(temp_path); +Wrote file /tmp/oct_wrC4vA.m. +***** test + % order of outputs is lexiographic + syms a A x y + f = y + 10*a + 100*x + 1000*A; + h = function_handle(f); + assert (h(1, 2, 3, 4) == 1000 + 20 + 300 + 4) +***** test + % https://github.com/gnu-octave/symbolic/issues/854 + f = function_handle (x + 1i*sqrt (sym(3))); + assert (f (1), complex (1, sqrt (3)), -eps) +14 tests, 14 passed, 0 known failure, 0 skipped +[inst/@sym/fresnels.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fresnels.m +***** error fresnels (sym(1), 2) +***** test + a = fresnels(sym(0)); + assert (isequal (a, sym(0))) +***** test + b = fresnels(sym('oo')); + assert (isequal (b, sym(1)/2)) +***** test + % values in a matrix syms x - y1 = sinint (x); - y2 = rewrite (y1, 'Integral'); - d1 = diff (y1, x); - d2 = diff (y2, x); - v1 = double (subs (d1, x, 2)); - v2 = double (subs (d2, x, 2)); - assert (v1, v2, -eps) -6 tests, 5 passed, 1 known failure, 0 skipped -[inst/@sym/eig.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eig.m + a = fresnels([sym(0) sym('oo') x 1]); + b = [sym(0) sym(1)/2 fresnels(x) fresnels(sym(1))]; + assert (isequal (a, b)) ***** test - % basic - A = [1 2; 3 4]; - B = sym(A); - sd = eig(A); - s = eig(B); - s2 = double(s); - assert (norm(sort(s2) - sort(sd)) <= 10*eps) + % round trip + syms x + f = fresnels (x); + h = function_handle (f); + A = h (1.1); + B = fresnels (1.1); + assert (A, B) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/expm.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expm.m ***** test - % scalars + % scalar syms x - a = sym(-10); - assert (isequal (eig(a), a)) - assert (isequal (eig(x), x)) + assert (isequal (expm(x), exp(x))) ***** test - % diag, multiplicity - A = diag([6 6 7]); - B = sym(A); - e = eig(B); - assert (isequal (size (e), [3 1])) - assert (sum(logical(e == 6)) == 2) - assert (sum(logical(e == 7)) == 1) + % diagonal + A = [sym(1) 0; 0 sym(3)]; + B = [exp(sym(1)) 0; 0 exp(sym(3))]; + assert (isequal (expm(A), B)) ***** test - % matrix with symbols - syms x y positive - A = [x+9 y; sym(0) 6]; - s = eig(A); - s = simplify(s); - assert (isequal (s, [x+9; 6]) || isequal (s, [6; x+9])) + % diagonal w/ x + syms x positive + A = [sym(1) 0; 0 x+2]; + B = [exp(sym(1)) 0; 0 exp(x+2)]; + assert (isequal (expm(A), B)) ***** test - % eigenvects - e = sym([5 5 5 6 7]); - A = diag(e); - [V, D] = eig(A); - assert (isequal (diag(D), e.')) - assert (isequal (V, diag(sym([1 1 1 1 1])))) + % non-diagonal + syms x positive + A = [sym(1) 2; 0 x+2]; + B = expm(A); + C = double(subs(B, x, 4)); + D = expm(double(subs(A, x, 4))); + assert (max (max (abs (C - D))) <= 1e-11) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/heaviside.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/heaviside.m +***** error heaviside (sym(1), 2, 3) +***** assert (isequal (heaviside (sym(1)), sym(1))) +***** assert (isequal (heaviside (-sym(1)), sym(0))) +***** assert (double (heaviside (1)), heaviside (1)) ***** test - % alg/geom mult, eigenvects - e = sym([5 5 5 6]); - A = diag(e); - A(1,2) = 1; - [V, D] = eig(A); - assert (isequal (diag(D), e.')) - assert (sum(logical(V(1,:) ~= 0)) == 2) - assert (sum(logical(V(2,:) ~= 0)) == 0) - assert (sum(logical(V(3,:) ~= 0)) == 1) - assert (sum(logical(V(4,:) ~= 0)) == 1) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/fourier.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fourier.m + D = [1 -1; -10 20]; + A = sym(D); + assert (double (heaviside (A)), heaviside (D)) ***** test - % matlab SMT compatibility for arguments - syms r x u w v - Pi=sym('pi'); - assert(logical( fourier(exp(-x^2)) == sqrt(Pi)/exp(w^2/4) )) - assert(logical( fourier(exp(-w^2)) == sqrt(Pi)/exp(v^2/4) )) - assert(logical( fourier(exp(-r^2),u) == sqrt(Pi)/exp(u^2/4) )) - assert(logical( fourier(exp(-r^2),r,u) == sqrt(Pi)/exp(u^2/4) )) + H0 = sym([1 -2 0; 3 0 pi]); + A = heaviside (sym(0), H0); + assert (isequal (A, H0)) ***** test - % basic tests - syms x w - assert(logical( fourier(exp(-abs(x))) == 2/(w^2 + 1) )) - assert(logical( fourier(x*exp(-abs(x))) == -(w*4*1i)/(w^4 + 2*w^2 + 1) )) + A = heaviside ([-1 0 1], sym(1)/2); + assert (isequal (A, [0 sym(1)/2 1])) ***** test - % Dirac delta tests - syms x w - Pi=sym('pi'); - assert(logical( fourier(dirac(x-2)) == exp(-2*1i*w) )) - assert (logical( fourier(sym(2), x, w) == 4*Pi*dirac(w) )) + A = heaviside ([-1 0 1], sym(1)/2); + assert (isequal (A, [0 sym(1)/2 1])) +***** assert (isequaln (heaviside (sym(nan)), sym(nan))) ***** test - % advanced test - syms x w c d - Pi=sym('pi'); - F=Pi*(dirac(w-c)+dirac(w+c))+2*Pi*1i*(dirac(w+3*d)-dirac(w-3*d))+2/(w^2+1); - assert(logical( fourier(cos(c*x)+2*sin(3*d*x)+exp(-abs(x))) == expand(F) )) + assert (isequaln (heaviside (sym(nan), sym(nan)), sym(nan))) + assert (isequaln (heaviside (0, sym(nan)), sym(nan))) + assert (isequaln (heaviside (2, sym(nan)), sym(1))) + assert (isequaln (heaviside (-2, sym(nan)), sym(0))) +***** test + % round trip + syms x + A = heaviside (1); + f = heaviside (x); + h = function_handle (f); + B = h (1); + assert (A, B, -eps) +***** test + % round trip + syms x h0 + f = heaviside (x, h0); + h = function_handle (f, 'vars', {x h0}); + A = heaviside (1, 1/2); + B = h (1, 1/2); + assert (A, B, -eps) + A = heaviside (0, 1/2); + B = h (0, 1/2); + assert (A, B, -eps) +12 tests, 12 passed, 0 known failure, 0 skipped +[inst/@sym/ezsurf.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezsurf.m +***** error + syms u v t + ezsurf(u*v, 2*u*v, 3*v*t) +***** error + syms u v t + ezsurf(u*v, 2*u*v, u*v*t) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/sec.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sec.m +***** error sec (sym(1), 2) +***** assert (isequaln (sec (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); +***** test + f1 = sec(x); + f2 = sec(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = sec(A); + f2 = sec(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = sec (d); + f = sec (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/tan.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tan.m +***** error tan (sym(1), 2) +***** assert (isequaln (tan (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); +***** test + f1 = tan(x); + f2 = tan(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = tan(A); + f2 = tan(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = tan (d); + f = tan (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/cot.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cot.m +***** error cot (sym(1), 2) +***** assert (isequaln (cot (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); +***** test + f1 = cot(x); + f2 = cot(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = cot(A); + f2 = cot(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = cot (d); + f = cot (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/factor.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/factor.m +***** test + % n = 152862; + % [p,m] = factor(n); % only works on Octave, no Matlab as of 2014a + n = 330; % so we use an output without repeated factors + p = factor(n); m = ones(size(p)); + [ps,ms] = factor(sym(n)); + assert (isequal (p, ps)) + assert (isequal (m, ms)) +***** test + n = sym(2)^4*13; + [p,m] = factor(n); + assert (isequal (p, [2 13])) + assert (isequal (m, [4 1])) +***** test syms x + assert( logical (factor(x^2 + 6*x + 5) == (x+5)*(x+1))) +***** test + syms x + f = [ x^4/2 + 5*x^3/12 - x^2/3 x^2 - 1 10]; + g = [ x^2*(2*x - 1)*(3*x + 4)/12 (x+1)*(x-1) 10]; + assert (isequal (factor(f), g)) +***** test + % "fragile form" works + A = factor(sym(124)); + B = strtrim(disp(A, 'flat')); + assert (strcmp (B, '2**2*31**1')) +***** error [p, m] = factor(sym('x')); +***** error [p, m] = factor(sym(42), sym('x')); +***** test + % if polynomial happens to be a constant, don't attempt integer + % factorization if a variable is specified + f = sym(42); + q = factor(f, sym('x')); + assert (isequal (f, q)); +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/@sym/max.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/max.m +***** test + % simple + assert (isequal (max([sym(10) sym(11)]), sym(11))) +***** test + syms x y + assert (isequal (children (max (x, y)), [x y])) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/ezmesh.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezmesh.m +***** error + syms u v t + ezmesh(u*v, 2*u*v, 3*v*t) +***** error + syms u v t + ezmesh(u*v, 2*u*v, u*v*t) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/nchoosek.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nchoosek.m +***** assert (isequal (nchoosek(sym(5), sym(2)), sym(10))) +***** assert (isequal (nchoosek(sym(5), 2), sym(10))) +***** assert (isequal (nchoosek(5, sym(2)), sym(10))) +***** assert (isequal (nchoosek(sym(10), 0), 1)) +***** assert (isequal (nchoosek(sym(10), -1), 0)) +***** test + n = sym('n', 'nonnegative', 'integer'); + assert (isequal (nchoosek (n, n), sym(1))) +***** test + n = sym('n', 'integer'); + q = nchoosek(n, 2); + w = subs(q, n, 5); + assert (isequal (w, 10)) +***** test + n = sym('n', 'integer'); + k = sym('k', 'integer'); + q = nchoosek(n, k); + w = subs(q, {n k}, {5 2}); + assert (isequal (w, 10)) +***** test + % negative input + assert (isequal (nchoosek (sym(-2), sym(5)), sym(-6))) +***** test + % complex input + n = sym(1 + 3i); + k = sym(5); + A = nchoosek (n, k); + B = gamma (n + 1) / (gamma (k + 1) * gamma (n - k + 1)); + assert (double (A), double (B), -2*eps) +***** test + % complex input + n = sym(-2 + 3i); + k = sym(1 + i); + A = nchoosek (n, k); + B = gamma (n + 1) / (gamma (k + 1) * gamma (n - k + 1)); + assert (double (A), double (B), -2*eps) +11 tests, 11 passed, 0 known failure, 0 skipped +[inst/@sym/ei.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ei.m +***** test + syms x + f = ei(sym(0)); + assert (double(f) == -inf) +***** test + D = [1.895117816355937 4.954234356001890]; + A = ei(sym([1 2])); + assert (all (abs(double(A) - D) < 1e-15)) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/sech.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sech.m +***** error sech (sym(1), 2) +***** assert (isequaln (sech (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); +***** test + f1 = sech(x); + f2 = sech(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = sech(A); + f2 = sech(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = sech (d); + f = sech (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/triu.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/triu.m +***** test + % scalar + syms x + assert (isequal (triu(x), x)) + assert (isequal (triu(x,0), x)) + assert (isequal (triu(x,1), 0)) + assert (isequal (triu(x,-1), 0)) +***** test + % with symbols + syms x + A = [x 2*x; 3*x 4*x]; + assert (isequal (triu(A), [x 2*x; 0 4*x])) +***** test + % diagonal shifts + B = round(10*rand(3,4)); + A = sym(B); + assert (isequal (triu(A), triu(B))) + assert (isequal (triu(A,0), triu(B,0))) + assert (isequal (triu(A,1), triu(B,1))) + assert (isequal (triu(A,-1), triu(B,-1))) +***** test + % double array pass through + B = round(10*rand(3,4)); + assert (isequal (triu(B,sym(1)), triu(B,1))) + assert (isa (triu(B,sym(1)), 'double')) +***** test + % immutable test + A = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); + assert (isequal (triu (A), sym ([1 2; 0 4]))) + assert (isequal (tril (A), sym ([1 0; 3 4]))) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/ellipticCPi.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCPi.m +***** error ellipticCPi (sym (1)) +***** error ellipticCPi (sym (1), 2, 3) +***** assert (double (ellipticCPi (0, sym (1)/2)), 1.854074677, 10e-10) +***** assert (double (ellipticCPi (sym (6)/10, sym(71)/10)), 1.29469534336658, -20*eps) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/ismember.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ismember.m +***** assert (ismember (2, interval(sym(0),2))) +***** assert (~ismember (3, interval(sym(0),2))) +***** test + % something in a matrix + syms x + A = [1 x; sym(pi) 4]; + assert (ismember (sym(pi), A)) + assert (ismember (x, A)) + assert (~ismember (2, A)) +***** test + % set + syms x + S = finiteset(2, sym(pi), x); + assert (ismember (x, S)) +***** test + % set with positive symbol + syms p positive + S = finiteset(2, sym(pi), p); + assert (~ismember (-1, S)) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/disp.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/disp.m +***** test + syms x + s = disp(sin(x)); + assert(strcmp(s, sprintf(' sin(x)\n'))) +***** test + syms x + s = disp(sin(x/2), 'flat'); + assert(strcmp(s, sprintf(' sin(x/2)\n'))) +***** test + % Examples of 2x0 and 0x2 empty matrices: + a = sym([1 2; 3 4]); + b2x0 = a([true true], [false false]); + b0x2 = a([false false], [true true]); + assert (isequal (size (b2x0), [2 0])) + assert (isequal (size (b0x2), [0 2])) + s = disp(b2x0); + assert(strcmp(s, sprintf(' []\n'))) + s = disp(b0x2); + assert(strcmp(s, sprintf(' []\n'))) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/children.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/children.m +***** test + % basics, sum + syms x y + f = 2*x + x*x + sin(y); + assert (isempty (setxor (children(f), [2*x x*x sin(y)]))) +***** test + % basics, product + syms x y + f = 2*x*sin(y); + assert (isempty (setxor (children(f), [2 x sin(y)]))) +***** test + % basics, product and powers + syms x y + f = 2*x^2*y^3; + assert (isempty (setxor (children(f), [2 x^2 y^3]))) +***** test + % eqn, ineq + syms x y + lhs = 2*x^2; rhs = y^3 + 7; + assert (isequal (children(lhs == rhs), [lhs rhs])) + assert (isequal (children(lhs < rhs), [lhs rhs])) + assert (isequal (children(lhs >= rhs), [lhs rhs])) +***** test + % matrix + syms x y + f = [4 + y 1 + x; 2 + x 3 + x]; + c = children(f); + ec = {[4 y], [1 x]; [2 x], [3 x]}; + assert (isequal (size(c), size(ec))) + for i=1:length(c) + assert (isempty (setxor (c{i}, ec{i}))) + end +***** test + % matrix, sum/prod + syms x y + f = [x + y; x*sin(y); sin(x)]; + ec = {[x y]; [x sin(y)]; [x]}; + c = children(f); + assert (isequal (size(c), size(ec))) + for i=1:length(c) + assert (isempty (setxor (c{i}, ec{i}))) + end +***** test + % scalar symbol + syms x + assert (isequal (children(x), x)) +***** test + % scalar number + x = sym(6); + assert (isequal (children(x), x)) +***** test + % symbolic size matrix + syms n m integer + A = sym('a', [n m]); + C = children (A); + assert (isequal (C(2), n)) + assert (isequal (C(3), m)) ***** xtest - % Differential operator to algebraic - % SymPy cannot evaluate? (Issue #170) - syms x w f(x) - assert(logical( fourier(diff(f(x),x),x,w) == -1i*w*fourier(f(x),x,w) )) + % symbolic size matrix, fails on newer SymPy Issue #1089 + syms n m integer + A = sym('a', [n m]); + assert (isequal (children (A), [sym('a') n m])) !!!!! known failure -assert (logical (fourier (diff (f (x), x), x, w) == -1i * w * fourier (f (x), x, w))) failed -5 tests, 4 passed, 1 known failure, 0 skipped -[inst/@sym/reshape.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/reshape.m +assert (isequal (children (A), [sym('a'), n, m])) failed +10 tests, 9 passed, 1 known failure, 0 skipped +[inst/@sym/ilaplace.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ilaplace.m +***** error ilaplace (sym(1), 2, 3, 4) ***** test - d = [2 4 6; 8 10 12]; - a = sym(d); - assert (isequal (reshape(a, [1 6]), reshape(d, [1 6]))) - assert (isequal (reshape(a, 1, 6), reshape(d, 1, 6))) - assert (isequal (reshape(a, 2, 3), reshape(d, 2, 3))) - assert (isequal (reshape(a, 3, 2), reshape(d, 3, 2))) - assert (isequal (reshape(a, 6, 1), reshape(d, 6, 1))) -***** shared x, a, d - syms x - a = [1 x^2 x^4; x x^3 x^5]; - d = [0 2 4; 1 3 5]; - + % basic SMT compact: no heaviside + syms s + syms t positive + assert (isequal (ilaplace(1/s^2), t)) + assert (isequal (ilaplace(s/(s^2+9)), cos(3*t))) + assert (isequal (ilaplace(6/s^4), t^3)) ***** test - b = reshape(a, [1 6]); - assert (isequal (size(b), [1 6])) - assert (isequal (b, x.^reshape(d,1,6))) - + % more SMT compact + syms r + syms u positive + assert (isequal (ilaplace(1/r^2, u), u)) + assert (isequal (ilaplace(1/r^2, r, u), u)) ***** test - b = reshape(a, [6 1]); - assert (isequal (size(b), [6 1])) - assert (isequal (b, x.^reshape(d,6,1))) - b = reshape(b, size(a)); - assert (isequal (size(b), [2 3])) - assert (isequal (b, a)) - + % if t specified and not positive, we expect heaviside + clear s t + syms s t + assert (isequal (ilaplace(1/s^2, s, t), t*heaviside(t))) + assert (isequal (ilaplace(s/(s^2+9), t), cos(3*t)*heaviside(t))) + assert (isequal (ilaplace(6/s^4, t), t^3*heaviside(t))) +***** test + % Heaviside test + syms s + t=sym('t', 'positive'); + assert(logical( ilaplace(exp(-5*s)/s^2,t) == (t-5)*heaviside(t-5) )) +***** test + % Delta dirac test + syms s + t = sym('t'); + assert (isequal (ilaplace (sym('2'), t), 2*dirac(t))) +***** test + % Delta dirac test 2 + syms s t + calc = ilaplace (5*exp (-3*s) - 2*exp (-2*s)/s, s, t); + want = 5*dirac (t-3) - 2*heaviside (t-2); + assert (isequal (calc, want)) +***** test + % Delta dirac test 3, coefficient + syms s t + syms c positive + calc = ilaplace (2*exp (-c*s), s, t); + want = 2*dirac (t - c); + assert (isAlways (calc == want)) +***** error ilaplace (sym('s', 'positive')*sym('s')) +***** test + % SMT compact, prefers s over symvar + syms s x + syms t positive + assert (isequal (ilaplace(x/s^4), x*t^3/6)) + t = sym('t'); + assert (isequal (ilaplace(x/s^4, t), x*t^3/6*heaviside(t))) +***** test + % pick s even it has assumptions + syms s real + syms x t + assert (isequal (ilaplace (x/s^2, t), x*t*heaviside(t))) +11 tests, 11 passed, 0 known failure, 0 skipped +[inst/@sym/coshint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coshint.m +***** error coshint (sym(1), 2) +***** xtest + assert (isequaln (coshint (sym(nan)), sym(nan))) +!!!!! known failure +assert (isequaln (coshint (sym (nan)), sym (nan))) failed +***** shared x, d + d = 1; + x = sym('1'); ***** test - b = a(:); - assert( isequal (size(b), [6 1])) - assert( isequal (b, x.^(d(:)))) - + f1 = coshint(x); + f2 = 0.8378669409802082408947; + assert( abs(double(f1) - f2) < 1e-15 ) ***** test - % reshape scalar - assert (logical( reshape(x, 1, 1) == x )) - assert (logical( reshape(x, [1 1]) == x )) -***** shared a - syms a -***** error reshape(a, 2, 1) -***** error reshape(a, 1, 2) -***** error reshape(a, 1, 1, 1) -***** error reshape(a, [1, 1, 1]) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/dilog.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dilog.m -***** assert (isequal (dilog (sym(1)), sym(0))) -***** assert (isequal (dilog (sym(0)), sym(pi)^2/6)) -***** assert (isequal (dilog (sym(2)), -sym(pi)^2/12)) -***** assert (double(dilog(sym(-1))), pi^2/4 - pi*1i*log(2), eps) + D = [d d; d d]; + A = [x x; x x]; + f1 = coshint(A); + f2 = 0.8378669409802082408947; + f2 = [f2 f2; f2 f2]; + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test - % round-trip - syms x - f = dilog (x); + % round trip + y = sym('y'); + A = coshint (d); + f = coshint (y); h = function_handle (f); - A = h (1.1); - B = dilog (1.1); + B = h (d); assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/pinv.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pinv.m +5 tests, 4 passed, 1 known failure, 0 skipped +[inst/@sym/interval.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/interval.m ***** test - % scalar - syms x - assert (isequal (pinv(x), 1/x)) + a = interval(sym(1), 2); + assert (isa (a, 'sym')) ***** test - % 2x3 - A = [1 2 3; 4 5 6]; - assert (max (max (abs (double (pinv (sym (A))) - pinv(A)))) <= 10*eps) + % some set subtraction + a = interval(sym(0), 4); + b = interval(sym(0), 1); + c = interval(sym(1), 4, true); + q = a - b; + assert (isequal( q, c)) 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/tril.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tril.m -***** test - syms x - assert (isequal (tril(x), x)) +[inst/@sym/lhs.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lhs.m ***** test - % with symbols - syms x - A = [x 2*x; 3*x 4*x]; - assert (isequal (tril(A), [x 0; 3*x 4*x])) + syms x y + f = x + 1 == 2*y; + assert (isequal (lhs(f), x + 1)) + assert (isequal (rhs(f), 2*y)) ***** test - % diagonal shifts - B = round(10*rand(3,4)); - A = sym(B); - assert (isequal (tril(A), tril(B))) - assert (isequal (tril(A,0), tril(B,0))) - assert (isequal (tril(A,1), tril(B,1))) - assert (isequal (tril(A,-1), tril(B,-1))) + syms x y + f = x + 1 < 2*y; + assert (isequal (lhs(f), x + 1)) + assert (isequal (rhs(f), 2*y)) ***** test - % double array pass through - B = round(10*rand(3,4)); - assert (isequal (tril(B,sym(1)), tril(B,1))) - assert (isa (tril(B,sym(1)), 'double')) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/triu.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/triu.m + syms x y + f = x + 1 >= 2*y; + assert (isequal (lhs(f), x + 1)) + assert (isequal (rhs(f), 2*y)) ***** test - % scalar + syms x y + A = [x == y 2*x < 2*y; 3*x > 3*y 4*x <= 4*y; 5*x >= 5*y x < 0]; + L = [x 2*x; 3*x 4*x; 5*x x]; + R = [y 2*y; 3*y 4*y; 5*y 0]; + assert (isequal( lhs(A), L)) + assert (isequal( rhs(A), R)) +***** error syms x - assert (isequal (triu(x), x)) - assert (isequal (triu(x,0), x)) - assert (isequal (triu(x,1), 0)) - assert (isequal (triu(x,-1), 0)) -***** test - % with symbols + lhs(x) +***** error + lhs(sym(true)) +***** error syms x - A = [x 2*x; 3*x 4*x]; - assert (isequal (triu(A), [x 2*x; 0 4*x])) + A = [1 + x == 2*x sym(6)]; + lhs(A) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/@sym/isallconstant.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isallconstant.m +***** assert (isallconstant([sym(1) 2 3])) ***** test - % diagonal shifts - B = round(10*rand(3,4)); - A = sym(B); - assert (isequal (triu(A), triu(B))) - assert (isequal (triu(A,0), triu(B,0))) - assert (isequal (triu(A,1), triu(B,1))) - assert (isequal (triu(A,-1), triu(B,-1))) + syms x + assert (~isallconstant([sym(1) x 3])) ***** test - % double array pass through - B = round(10*rand(3,4)); - assert (isequal (triu(B,sym(1)), triu(B,1))) - assert (isa (triu(B,sym(1)), 'double')) + syms x + assert (~isallconstant([sym(1) x; sym(2) 3])) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/log10.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log10.m +***** assert (isequal (log10 (sym (1000)), sym (3))) +***** assert (isequal (log10 (sym ([10 100])), sym ([1 2]))) ***** test - % immutable test - A = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); - assert (isequal (triu (A), sym ([1 2; 0 4]))) - assert (isequal (tril (A), sym ([1 0; 3 4]))) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/atan2.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atan2.m -***** error atan2 (1) -***** error atan2 (1, 2, 3) + % round-trip + syms x + f = log10 (x); + h = function_handle (f); + A = h (1.1); + B = log10 (1.1); + assert (A, B, -eps) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/equationsToMatrix.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/equationsToMatrix.m ***** test - % some angles - e = sym(1); - a = atan2(0, e); - assert (isequal (a, sym(0))) - a = atan2(e, 0); - assert (isequal (a, sym(pi)/2)) + syms x y z + [A, B] = equationsToMatrix ([x + y - z == 1, 3*x - 2*y + z == 3, 4*x - 2*y + z + 9 == 0], [x, y, z]); + a = sym ([1 1 -1; 3 -2 1; 4 -2 1]); + b = sym ([1; 3; -9]); + assert (isequal (A, a)) + assert (isequal (B, b)) ***** test - % symbols can give numerical answer - syms x positive - a = atan2(0, x); - assert (isequal (a, sym(0))) - a = atan2(x, 0); - assert (isequal (a, sym(pi)/2)) - a = atan2(-x, 0); - assert (isequal (a, -sym(pi)/2)) + syms x y z + A = equationsToMatrix ([3*x + -3*y - 5*z == 9, 4*x - 7*y + -3*z == -1, 4*x - 9*y - 3*z + 2 == 0], [x, y, z]); + a = sym ([3 -3 -5; 4 -7 -3; 4 -9 -3]); + assert (isequal (A, a)) ***** test - % matrices - x = sym([1 -2; 0 0]); - y = sym([0 0; 8 -3]); - a = atan2(y, x); - sp = sym(pi); - aex = [0 sp; sp/2 -sp/2]; - assert (isequal (a, aex)) + syms x y + [A, B] = equationsToMatrix ([3*x + 9*y - 5 == 0, -8*x - 3*y == -2]); + a = sym ([3 9; -8 -3]); + b = sym ([5; -2]); + assert (isequal (A, a)) + assert (isequal (B, b)) ***** test - % round trip + % override symvar order syms x y - xd = -2; yd = -3; - f = atan2 (x, y); - A = atan2 (xd, yd); - h = function_handle (f); - B = h (xd, yd); - assert (A, B, -eps) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/toeplitz.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/toeplitz.m + [A, B] = equationsToMatrix ([3*x + 9*y - 5 == 0, -8*x - 3*y == -2], [y x]); + a = sym ([9 3; -3 -8]); + b = sym ([5; -2]); + assert (isequal (A, a)) + assert (isequal (B, b)) ***** test - % rect - R = [10 20 40]; C = [10 30]; - A = sym(toeplitz(R,C)); - B = toeplitz(sym(R),sym(C)); - assert (isequal (A, B)) - R = [10 20]; C = [10 30 50]; - A = sym(toeplitz(R,C)); - B = toeplitz(sym(R),sym(C)); - assert (isequal (A, B)) + syms x y z + [A, B] = equationsToMatrix ([x - 9*y + z == -5, -9*y*z == -5], [y, x]); + a = sym ([[-9 1]; -9*z 0]); + b = sym ([-5 - z; -5]); + assert (isequal (A, a)) + assert (isequal (B, b)) ***** test - % symbols syms x y - R = [10 20 40]; C = [10 30]; - Rs = [10 x 40]; Cs = [10 y]; - A = toeplitz(R,C); - B = toeplitz(Rs,Cs); - assert (isequal (A, subs(B,[x,y],[20 30]))) -***** test - % hermitian - syms a b c - A = [a b c; conj(b) a b; conj(c) conj(b) a]; - B = toeplitz([a,b,c]); - assert (isequal( A, B)) -***** warning - % mismatch - syms x - B = toeplitz([10 x], [1 3 x]); -***** warning - % scalar - B = toeplitz(sym(2), 3); - assert (isequal (B, sym(2))) + [A, B] = equationsToMatrix (-6*x + 4*y == 5, 4*x - 4*y - 5, x, y); + a = sym ([-6 4; 4 -4]); + b = sym ([5; 5]); + assert (isequal (A, a)) + assert (isequal (B, b)) ***** test - % mismatch + % vertical list of equations syms x y - fprintf('\n one warning expected\n') % how to quiet this one? - A = toeplitz([10 2], [1 3 5]); - s = warning ('off', 'OctSymPy:toeplitz:diagconflict'); - B = toeplitz([10 x], [1 3 y]); - warning(s) - assert (isequal (A, subs(B, [x,y], [2 5]))) - - one warning expected -warning: toeplitz: column wins diagonal conflict -warning: called from - toeplitz at line 84 column 7 - __test__ at line 6 column 4 - test at line 682 column 11 - /tmp/tmp.EEULPfFdek at line 894 column 31 - -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/hypergeom.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hypergeom.m -***** assert (isequal (double (hypergeom ([1, 2], [2, 3], sym(0))), 1)) + [A, B] = equationsToMatrix ([-6*x + 4*y == 5; 4*x - 4*y - 5], [x y]); + a = sym ([-6 4; 4 -4]); + b = sym ([5; 5]); + assert (isequal (A, a)) + assert (isequal (B, b)) ***** test - % matrix input - syms z - a = sym([1 2]); - b = sym([3 4]); - A = hypergeom (a, b, [0 sym(1); 2 z]); - B = [hypergeom(a,b,0) hypergeom(a,b,1); hypergeom(a,b,2) hypergeom(a,b,z)]; - assert (isequal (A, B)) + syms x y + [A, B] = equationsToMatrix (5*x == 1, y, x - 6*y - 7, y); + a = sym ([0; 1; -6]); + b = sym ([1 - 5*x; 0; -x + 7]); + assert (isequal (A, a)) + assert (isequal (B, b)) +***** error + syms x y + [A, B] = equationsToMatrix (x^2 + y^2 == 1, x - y + 1, x, y); ***** test - % scalars for a and/or b - syms z - assert (isequal (hypergeom(1, 2, z), hypergeom({sym(1)}, {sym(2)}, z))) - assert (isequal (hypergeom([1 2], 3, z), hypergeom([1 2], {sym(3)}, z))) - assert (isequal (hypergeom(1, [2 3], z), hypergeom({sym(1)}, [2 3], z))) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/asin.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asin.m -***** error asin (sym(1), 2) -***** assert (isequaln (asin (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); + % single equation + syms x + [A, B] = equationsToMatrix (3*x == 2, x); + a = sym (3); + b = sym (2); + assert (isequal (A, a)) + assert (isequal (B, b)) ***** test - f1 = asin(x); - f2 = asin(d); - assert( abs(double(f1) - f2) < 1e-15 ) + % single equation w/ symvar + syms x + [A, B] = equationsToMatrix (3*x == 2); + a = sym (3); + b = sym (2); + assert (isequal (A, a)) + assert (isequal (B, b)) +***** error + syms x + equationsToMatrix (3*x == 2, [x x]) +12 tests, 12 passed, 0 known failure, 0 skipped +[inst/@sym/ismatrix.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ismatrix.m +***** assert(ismatrix(sym('x'))) +***** assert(ismatrix(sym([1 2 3]))) +***** assert(ismatrix(sym([1; 2]))) +***** assert(ismatrix(sym([1 2; 3 4]))) +***** assert(ismatrix(sym([]))) +***** assert(ismatrix(sym(ones(1,0)))) +***** assert(ismatrix(sym(ones(0,3)))) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/@sym/colon.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/colon.m ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = asin(A); - f2 = asin(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + a = sym(1):5; + b = sym(1:5); + assert(isequal(a,b)); + a = 1:sym(5); + b = sym(1:5); + assert(isequal(a,b)); ***** test - % round trip - y = sym('y'); - A = asin (d); - f = asin (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/cbrt.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cbrt.m -***** error cbrt (sym(1), 2) -***** assert (isequaln (cbrt (sym(nan)), sym(nan))) -***** shared x, d - d = 2; - x = sym('2'); + a = 2:sym(2):8; + b = sym(2:2:8); + assert(isequal(a,b)); ***** test - f1 = cbrt(x); - f2 = 1.2599210498948731647; - assert( abs(double(f1) - f2) < 1e-15 ) + a = sym(10):-2:-4; + b = sym(10:-2:-4); + assert(isequal(a,b)); ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = cbrt(A); - f2 = 1.2599210498948731647; - f2 = [f2 f2; f2 f2]; - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + % symbolic intervals + p = sym(pi); + L = 0:p/4:p; + assert(isa(L,'sym')); + assert(isequal(L, [0 p/4 p/2 3*p/4 p])); ***** test - % round trip - y = sym('y'); - if (exist ('OCTAVE_VERSION', 'builtin')) - A = cbrt (d); - else - % Issue #742 - A = d^(1/3); - end - f = cbrt (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/isvector.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isvector.m -***** assert(isvector(sym('x'))) -***** assert(isvector(sym([1 2 3]))) -***** assert(isvector(sym([1; 2]))) -***** assert(~isvector(sym([1 2; 3 4]))) -***** assert(~isvector(sym([]))) -***** assert(isvector(sym(ones(1,0)))) -***** assert(~isvector(sym(ones(0,3)))) + % mixed symbolic and double intervals + p = sym(pi); + s = warning ('off', 'OctSymPy:sym:rationalapprox'); + L = 0.1:(sym(pi)/3):2.3; + warning(s) + assert(isa(L,'sym')); + t = sym(1)/10; + assert(isequal(L, [t p/3+t 2*p/3+t])); +***** error syms x; a = 0:x; +***** error syms x; a = 1:x; 7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/qr.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/qr.m -***** error qr (sym(1), 2, 3) -***** error [Q, R, P] = qr (sym(1)) -***** error qr (sym(1), 1) -***** test - % scalar - [q, r] = qr(sym(6)); - assert (isequal (q, sym(1))) - assert (isequal (r, sym(6))) -***** test - syms x positive - [q, r] = qr(x); - assert (isequal (q*r, x)) - assert (isequal (q, sym(1))) - assert (isequal (r, x)) +[inst/@sym/hessian.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hessian.m +***** error hessian (sym(1), 2, 3) +***** error hessian ([sym(1) sym(2)]) +***** shared x,y,z + syms x y z ***** test - % trickier if x could be zero, fails on 1.8 <= SymPy <= 1.10.1 - syms x - [q, r] = qr(x); - if (pycall_sympy__ ('return Version(spver) > Version("1.10.1")')) - assert (isequal (q*r, x)) - end + % 1D + f = x^2; + assert (isequal (hessian(f), diff(f,x,x))) + assert (isequal (hessian(f,{x}), diff(f,x,x))) + assert (isequal (hessian(f,x), diff(f,x,x))) ***** test - A = [1 2; 3 4]; - B = sym(A); - [Q, R] = qr(B); - assert (isequal (Q*R, B)) - assert (isequal (R(2,1), sym(0))) - assert (isequal (Q(:,1)'*Q(:,2), sym(0))) - %[QA, RA] = qr(A) - %assert ( max(max(double(Q)-QA)) <= 10*eps) - %assert ( max(max(double(Q)-QA)) <= 10*eps) + % const + f = sym(1); + g = sym(0); + assert (isequal (hessian(f), g)) + assert (isequal (hessian(f,x), g)) ***** test - % non square: tall skinny - A = sym([1 2; 3 4; 5 6]); - [Q, R] = qr (A, 0); - assert (size (Q), [3 2]) - assert (size (R), [2 2]) - assert (isequal (Q*R, A)) + % double const + f = 1; + g = sym(0); + assert (isequal (hessian(f,x), g)) ***** test - % non square: short fat - A = sym([1 2 3; 4 5 6]); - [Q, R] = qr (A); - assert (isequal (Q*R, A)) + % linear + f = 42*x; + g = sym(0); + assert (isequal (hessian(f), g)) + assert (isequal (hessian(f,x), g)) ***** test - % non square: short fat, rank deficient - A = sym([1 2 3; 2 4 6]); - [Q, R] = qr (A); - assert (isequal (Q*R, A)) - A = sym([1 2 3; 2 4 6; 0 0 0]); - [Q, R] = qr (A); - assert (isequal (Q*R, A)) + % linear + f = 42*x - sym('a')*y; + g = [0 0; 0 0]; + assert (isequal (hessian(f, {x y}), g)) ***** test - % rank deficient - A = sym([1 2 3; 2 4 6; 0 0 0]); - [Q, R] = qr (A); - assert (isequal (Q*R, A)) - A = sym([1 2 3; 2 5 6; 0 0 0]); - [Q, R] = qr (A); - assert (isequal (Q*R, A)) + % 2d + f = x*cos(y); + g = [0 -sin(y); -sin(y) -f]; + assert (isequal (hessian(f), g)) + assert (isequal (hessian(f, {x y}), g)) ***** test - % single return value R not Q - assert (isequal (qr (sym(4)), sym(4))) -12 tests, 12 passed, 0 known failure, 0 skipped + % 3d + f = x*cos(z); + Hexp = [0 0 -sin(z); sym(0) 0 0; -sin(z) 0 -f]; + H = hessian(f, {x y z}); + assert (isequal (H, Hexp)) +9 tests, 9 passed, 0 known failure, 0 skipped [inst/@sym/subsref.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsref.m ***** shared a,b @@ -7778,1593 +9724,543 @@ assert (isequal (ar(false (6, 1)), r(false (6, 1)))) assert (isequal (ac(false (6, 1)), c(false (6, 1)))) 50 tests, 50 passed, 0 known failure, 0 skipped -[inst/@sym/laplacian.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laplacian.m -***** shared x,y,z - syms x y z -***** test - % 1D - f = x^2; - g = diff(f,x,x); - assert (isequal (laplacian(f), g)) - assert (isequal (laplacian(f,{x}), g)) - assert (isequal (laplacian(f,[x]), g)) - assert (isequal (laplacian(f,x), g)) -***** test - % const - f = sym(1); - g = sym(0); - assert (isequal (laplacian(f), g)) - assert (isequal (laplacian(f,x), g)) - f = sym('c'); - assert (isequal (laplacian(f,x), g)) -***** test - % double const - f = 1; - g = sym(0); - assert (isequal (laplacian(f,x), g)) -***** test - % 1D fcn in 2d/3d - f = sin(2*y); - g = -4*f; - assert (isequal (laplacian(f), g)) - assert (isequal (laplacian(f, {x,y}), g)) - assert (isequal (laplacian(f, {x,y,z}), g)) -***** test - % 2d fcn in 2d/3d - f = sin(exp(x)*y); - g = diff(f,x,x) + diff(f,y,y); - assert (isequal (laplacian(f), g)) - assert (isequal (laplacian(f, {x,y}), g)) -***** test - % 2d fcn in 2d/3d - f = sin(exp(x)*y+sinh(z)); - gr2 = gradient(f, {x,y}); - divgr2 = divergence(gr2, {x,y}); - l2 = laplacian(f,{x,y}); - gr3 = gradient(f, {x,y,z}); - divgr3 = divergence(gr3, {x,y,z}); - l3 = laplacian(f,{x,y,z}); - assert (isAlways (l2 == divgr2)) - assert (isAlways (l3 == divgr3)) -***** error laplacian(sym('x'), sym('x'), 42) -***** error laplacian([sym('x'), sym('x')]) -8 tests, 8 passed, 0 known failure, 0 skipped -[inst/@sym/ellipticPi.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticPi.m -***** error ellipticPi (sym (1)) -***** error ellipticPi (sym (1), 2, 3, 4) -***** assert (double (ellipticPi (sym (-23)/10, sym (pi)/4, 0)), 0.5876852228, 10e-11) -***** assert (double (ellipticPi (sym (1)/3, sym (pi)/3, sym (1)/2)), 1.285032276, 10e-11) -***** assert (double (ellipticPi (sym (2), sym (pi)/6, sym (2))), 0.7507322117, 10e-11) -***** xtest - % FIXME: search/report upstream - assert (double (ellipticPi (sym (-1), 0, sym (1))), 0) -!!!!! known failure -ASSERT errors for: assert (double (ellipticPi (sym (-1), 0, sym (1))),0) - - Location | Observed | Expected | Reason - () NaN 0 'NaN' mismatch -***** xtest - % FIXME: this is a regression somewhere: loss of precision: Issue #1064 - % compare to Maple, complete - us = vpa (ellipticPi (sym(1)/6, sym(4)/3), 40); - % > evalf(EllipticPi(sin(1/6), sqrt(4/3)), 40); - maple = vpa ('2.019271696236161760696477679310987869058', 40) - ... - vpa ('1.708165765120289929280805062355360570830j', 40); - assert (abs (double (maple - us)), 0, 2e-39) -!!!!! known failure -ASSERT errors for: assert (abs (double (maple - us)),0,2e-39) - - Location | Observed | Expected | Reason - () 5.7666e-32 0 Abs err 5.7666e-32 exceeds tol 2e-39 by 6e-32 -***** test - % compare to Maple, complete - us = vpa (ellipticPi (sym(1)/6, sym(4)/3), 40); - % > evalf(EllipticPi(sin(1/6), sqrt(4/3)), 40); - maple = vpa ('2.019271696236161760696477679310987869058', 40) - ... - vpa ('1.708165765120289929280805062355360570830j', 40); - assert (abs (double (maple - us)), 0, 2e-30) -***** test - % compare to Maple, incomplete - us = vpa (ellipticPi (sym(8)/7, sym(4)/3, sym(2)/7), 40); - % > evalf(EllipticPi(sin(4/3), 8/7, sqrt(2/7)), 40); - maple = vpa ('2.089415796799294830305265090302275542033', 40) - ... - vpa ('4.798862045930802761256228043192491271947j', 40); - assert (abs (double (maple - us)), 0, 6e-39) -9 tests, 7 passed, 2 known failures, 0 skipped -[inst/@sym/numel.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/numel.m -***** test - a = sym([1 2 3]); - assert(numel(a) == 3); -***** test - % 2D array - a = sym([1 2 3; 4 5 6]); - assert(numel(a) == 6); -***** test - % empty - a = sym([]); - assert(numel(a) == 0); -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/cart2pol.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cart2pol.m -***** test - % multiple non-scalar inputs - x = sym ('x', [2 2]); - assume (x, 'real'); - y = sym ('y', [2 2]); - assume (y, 'real'); - [theta, r] = cart2pol (x, y); - assert (isequal (r, sqrt (x.^2 + y.^2))); - assert (isequal (tan (theta), y ./ x)); - % mixing scalar inputs with non-scalar inputs - syms z real - [theta_2, r_2, z_2] = cart2pol (x, y, z); - assert (isequal (r_2, sqrt (x.^2 + y.^2))); - assert (isequal (tan (theta_2), y ./ x)); - assert (isequal (z_2, z * ones (2, 2))); -***** test - % column vector with 2 entries - syms x y real - [theta, r] = cart2pol ([x; y]); - assert (isequal (r, sqrt (x.^2 + y.^2))); - assert (isequal (tan (theta), y ./ x)); - % column vector with 3 entries - syms z real - [theta_2, r_2, z_2] = cart2pol ([x; y; z]); - assert (isequal (r_2, sqrt (x.^2 + y.^2))); - assert (isequal (tan (theta_2), y ./ x)); - assert (isequal (z_2, z)); -***** test - % matrix with 2 columns - syms x y u v real - C = [x y; u v]; - [theta, r] = cart2pol (C); - assert (isequal (r, [sqrt(x.^2+y.^2); sqrt(u.^2+v.^2)])); - assert (isequal (tan (theta), [y/x; v/u])); - % matrix with 3 columns - syms z w real - C_2 = [x y z; u v w]; - [theta_2, r_2, z_2] = cart2pol (C_2); - assert (isequal (r, [sqrt(x.^2+y.^2); sqrt(u.^2+v.^2)])); - assert (isequal (tan (theta), [y/x; v/u])); - assert (isequal (z_2, [z; w])); -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/frac.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/frac.m -***** test - f1 = frac(sym(11)/10); - f2 = sym(1)/10; - assert (isequal (f1, f2)) -***** test - d = sym(-11)/10; - c = sym(9)/10; - assert (isequal (frac (d), c)) -***** test - d = sym(-19)/10; - c = sym(1)/10; - assert (isequal (frac (d), c)) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/nextprime.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nextprime.m -***** assert (isequal (nextprime(sym(2)), 3)); -***** assert (isequal (nextprime(sym(18)), 19)); -***** assert (isequal (nextprime(sym([1 2 3])), [2 3 5])); -***** assert (isequal (nextprime(sym([-1 0])), [2 2])); -***** test - % result is a sym - p = nextprime(sym(2)); - assert (isa (p, 'sym')) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/jacobian.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/jacobian.m -***** error jacobian (sym(1), 2, 3) -***** error jacobian ([sym(1) 2; sym(3) 4]) -***** shared x,y,z - syms x y z -***** test - % 1D - f = x^2; - assert (isequal (jacobian(f), diff(f,x))) - assert (isequal (jacobian(f,{x}), diff(f,x))) - assert (isequal (jacobian(f,x), diff(f,x))) -***** test - % const - f = sym(1); - g = sym(0); - assert (isequal (jacobian(f), g)) - assert (isequal (jacobian(f,x), g)) -***** test - % double const - f = 1; - g = sym(0); - assert (isequal (jacobian(f,x), g)) -***** test - % diag - f = [x y^2]; - g = [sym(1) 0; 0 2*y]; - assert (isequal (jacobian(f), g)) - assert (isequal (jacobian(f, [x y]), g)) - assert (isequal (jacobian(f, {x y}), g)) -***** test - % anti-diag - f = [y^2 x]; - g = [0 2*y; sym(1) 0]; - assert (isequal (jacobian(f), g)) - assert (isequal (jacobian(f, {x y}), g)) -***** test - % shape - f = [x y^2]; - assert (isequal (size(jacobian(f, {x y z})), [2 3])) - assert (isequal (size(jacobian(f, [x y z])), [2 3])) - assert (isequal (size(jacobian(f, [x; y; z])), [2 3])) - assert (isequal (size(jacobian(f.', {x y z})), [2 3])) -***** test - % scalar f - f = x*y; - assert (isequal (size(jacobian(f, {x y})), [1 2])) - g = gradient(f, {x y}); - assert (isequal (jacobian(f, {x y}), g.')) -***** test - % vect f wrt 1 var - f = [x x^2]; - assert (isequal (size(jacobian(f, x)), [2 1])) - f = f.'; % same shape output - assert (isequal (size(jacobian(f, x)), [2 1])) -10 tests, 10 passed, 0 known failure, 0 skipped -[inst/@sym/any.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/any.m -***** test - % matrix - a = [0 0; 1 0]; - s = sym(a); - assert (isequal (any (s), any (a))) - assert (isequal (any (s,1), any (a,1))) - assert (isequal (any (s,2), any (a,2))) +[inst/@sym/symreplace.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symreplace.m ***** test - % vector - a = [0 1 0]; - s = sym(a); - assert (isequal (any (s), any (a))) - assert (isequal (any (s,1), any (a,1))) - assert (isequal (any (s,2), any (a,2))) + % start with assumptions on x then remove them + syms x positive + f = x*10; + symreplace(x, sym('x')) + assert(isempty(assumptions(x))) ***** test - % should fail on symbols + % replace x with y syms x - s = [0 1 x]; - try - any (s) - waserr = false; - catch - waserr = true; - end - assert (waserr) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/ilaplace.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ilaplace.m -***** error ilaplace (sym(1), 2, 3, 4) -***** test - % basic SMT compact: no heaviside - syms s - syms t positive - assert (isequal (ilaplace(1/s^2), t)) - assert (isequal (ilaplace(s/(s^2+9)), cos(3*t))) - assert (isequal (ilaplace(6/s^4), t^3)) -***** test - % more SMT compact - syms r - syms u positive - assert (isequal (ilaplace(1/r^2, u), u)) - assert (isequal (ilaplace(1/r^2, r, u), u)) -***** test - % if t specified and not positive, we expect heaviside - clear s t - syms s t - assert (isequal (ilaplace(1/s^2, s, t), t*heaviside(t))) - assert (isequal (ilaplace(s/(s^2+9), t), cos(3*t)*heaviside(t))) - assert (isequal (ilaplace(6/s^4, t), t^3*heaviside(t))) -***** test - % Heaviside test - syms s - t=sym('t', 'positive'); - assert(logical( ilaplace(exp(-5*s)/s^2,t) == (t-5)*heaviside(t-5) )) -***** test - % Delta dirac test - syms s - t = sym('t'); - assert (isequal (ilaplace (sym('2'), t), 2*dirac(t))) -***** test - % Delta dirac test 2 - syms s t - calc = ilaplace (5*exp (-3*s) - 2*exp (-2*s)/s, s, t); - want = 5*dirac (t-3) - 2*heaviside (t-2); - assert (isequal (calc, want)) -***** test - % Delta dirac test 3, coefficient - syms s t - syms c positive - calc = ilaplace (2*exp (-c*s), s, t); - want = 2*dirac (t - c); - assert (isAlways (calc == want)) -***** error ilaplace (sym('s', 'positive')*sym('s')) -***** test - % SMT compact, prefers s over symvar - syms s x - syms t positive - assert (isequal (ilaplace(x/s^4), x*t^3/6)) - t = sym('t'); - assert (isequal (ilaplace(x/s^4, t), x*t^3/6*heaviside(t))) -***** test - % pick s even it has assumptions - syms s real - syms x t - assert (isequal (ilaplace (x/s^2, t), x*t*heaviside(t))) -11 tests, 11 passed, 0 known failure, 0 skipped -[inst/@sym/rank.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rank.m -***** test - A = sym([1 2; 3 4]); - assert (rank(A) == 2); -***** test - A = sym([1 2 3; 3 4 5]); - assert (rank(A) == 2); -***** test - A = sym([1 2; 1 2]); - assert (rank(A) == 1); -***** test - A = sym([1 2; 3 4]); - assert (rank(A) == 2); -***** assert (rank(sym(1)) == 1); -***** assert (rank(sym(0)) == 0); -***** assert (rank(sym('x', 'positive')) == 1); -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/acsch.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acsch.m -***** error acsch (sym(1), 2) -***** assert (isequaln (acsch (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); -***** test - f1 = acsch(x); - f2 = acsch(d); - assert( abs(double(f1) - f2) < 1e-15 ) -***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = acsch(A); - f2 = acsch(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) -***** test - % round trip - y = sym('y'); - A = acsch (d); - f = acsch (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/sort.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sort.m -***** error sort (sym(1), 2) -***** test - f = [sym(1), sym(0)]; - expected = sym([0, 1]); - assert (isequal (sort(f), expected)) -***** test - f = [sym(1)]; - expected = sym(1); - assert (isequal (sort(f), expected)) -***** test - f = [sym(3), sym(2), sym(6)]; - s = sort(f); - expected_s = sym([2, 3, 6]); - assert (isequal (s, expected_s)) -***** test - f = [sym(pi), sin(sym(2)), sqrt(sym(6))]; - s = sort(f); - expected_s = sym([sin(sym(2)), sqrt(sym(6)), sym(pi)]); - assert (isequal (s, expected_s)) -***** test - f = [sym(1), sym(2); sym(2), sym(pi); sym(pi), sym(1)]; - s = sort(f); - expected_s = ([sym(1), sym(1); sym(2), sym(2); sym(pi), sym(pi)]); - assert (isequal (s, expected_s)) -***** assert (isequal (sort(sym([])), sym([]))) -***** error sort([sym('x') 1]) -***** test - % but with assumptions, symbols can be sorted - p = sym('p', 'positive'); - n = sym('n', 'negative'); - expected_s = [n p]; - s = sort ([p n]); - assert (isequal (s, expected_s)) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/kroneckerDelta.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/kroneckerDelta.m -***** error kroneckerDelta (sym(1), 2, 3) + f = x*10; + symreplace(x, sym('y')) + assert( isequal (f, 10*sym('y'))) ***** test + % gets inside cells syms x - assert (isequal (kroneckerDelta (x, x), sym(1))) -***** assert (isequal (kroneckerDelta ([sym(1) 2 3], [1 2 0]), sym([1 1 0]))) + f = {x 1 2 {3 4*x}}; + symreplace(x, sym('y')) + syms y + assert( isequal (f{1}, y)) + assert( isequal (f{4}{2}, 4*y)) ***** test - % round trip - syms x y - f = kroneckerDelta (x, y); - h = function_handle (f); - assert (h (1, 2), 0) - assert (h (2, 2), 1) + % gets inside structs/cells + syms x + my.foo = {x 1 2 {3 4*x}}; + my.bar = x; + g = {'ride' my 'motor' 'sicle'}; + symreplace(x, sym('y')) + syms y + f = g{2}; + assert( isequal (f.foo{1}, y)) + assert( isequal (f.foo{4}{2}, 4*y)) + assert( isequal (f.bar, y)) 4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/pretty.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pretty.m +[inst/@sym/igamma.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/igamma.m ***** test - % simple + % mostly tested in @sym/gammainc syms x - s1 = pretty(sin(x)); - s2 = sprintf(' sin(x)\n'); - assert (strcmp (s1, s2)) + assert (isequal (igamma (2, x), gammainc(x, 2, 'upper'))) ***** test - % force ascii - syms x - s1 = pretty(sin(x/2), 'ascii'); - s2 = sprintf(' /x\\\n sin|-|\n \\2/\n'); - swin = strrep(s1, sprintf('\r\n'), sprintf('\n')); - assert (strcmp (s1, s2) || strcmp (swin, s2)) + % unregularized + B = double (igamma (sym(3), 1)); + A = gammainc (1, 3, 'upper')*gamma (3); + assert (A, B, -2*eps) ***** test - % force unicode - syms x - s1 = pretty(sin(x/2), 'unicode'); - s2 = sprintf(' ⎛x⎞\n sin⎜─⎟\n ⎝2⎠\n'); - swin = strrep(s1, sprintf('\r\n'), sprintf('\n')); - assert (strcmp (s1, s2) || strcmp (swin, s2)) + % something like a round trip: no igamma() + syms x a + f = igamma (a, x); + h = function_handle (f, 'vars', [a x]); + A = h (1.1, 2.2); + B = double (igamma (sym(11)/10, sym(22)/10)); + C = gammainc (2.2, 1.1, 'upper')*gamma(1.1); + assert (A, B, -10*eps) + assert (A, C, -10*eps) 3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/charpoly.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/charpoly.m -***** error charpoly (sym (1), 1, 2) -***** error charpoly (sym ([1 2])) -***** test - syms x - A = sym([1 2; 3 4]); - assert (isequal (charpoly(A, x), x^2 - 5*x -2)) -***** test - syms x - A = sym([1 2; 3 4]); - B = sym([1 -5 -2]); - assert (isequal (charpoly(A), B)) -***** test - syms x - A = sym([x x; x x]); - B = sym([1 -2*x 0]); - assert (isequal (charpoly(A), B)) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/min.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/min.m -***** test - % scalars with dim - a = min(sym(pi), [], 1); - b = sym(pi); - assert (isequal (a, b)); - a = min(sym(pi), [], 2); - assert (isequal (a, b)); - a = max(sym(pi), [], 1); - assert (isequal (a, b)); - a = max(sym(pi), [], 2); - assert (isequal (a, b)); -***** shared A, D - D = [0 1 2 3]; - A = sym(D); -***** test - % row vectors - assert (isequal (min(A), sym(min(D)))) - assert (isequal (min(A), sym(0))) - assert (isequal (max(A), sym(max(D)))) - assert (isequal (max(A), sym(3))) -***** test - % row vectors with dim - assert (isequal (min(A, [], 1), sym(min(D, [], 1)))) - assert (isequal (min(A, [], 2), sym(min(D, [], 2)))) - assert (isequal (max(A, [], 1), sym(max(D, [], 1)))) - assert (isequal (max(A, [], 2), sym(max(D, [], 2)))) -***** test - % column vectors - A = A.'; - D = D.'; - assert (isequal (min(A), sym(min(D)))) - assert (isequal (min(A), sym(0))) - assert (isequal (max(A), sym(max(D)))) - assert (isequal (max(A), sym(3))) -***** test - % row vectors with dim - assert (isequal (min(A, [], 1), sym(min(D, [], 1)))) - assert (isequal (min(A, [], 2), sym(min(D, [], 2)))) - assert (isequal (max(A, [], 1), sym(max(D, [], 1)))) - assert (isequal (max(A, [], 2), sym(max(D, [], 2)))) -***** shared -***** test - % empty - a = min(sym([])); - assert(isempty(a)) - a = max(sym([])); - assert(isempty(a)) -***** test - % matrix - A = [1 4 6; 2 2 5]; - A = sym(A); - assert (isequal (min(A), sym([1 2 5]))) - assert (isequal (min(A, [], 1), sym([1 2 5]))) - assert (isequal (min(A, [], 2), sym([1; 2]))) - assert (isequal (max(A), sym([2 4 6]))) - assert (isequal (max(A, [], 1), sym([2 4 6]))) - assert (isequal (max(A, [], 2), sym([6; 5]))) -***** test - % index output is double not sym - [m, I] = min(sym(2), [], 1); - assert (strcmp(class(I), 'double')) - [m, I] = max(sym(2), [], 1); - assert (strcmp(class(I), 'double')) -***** test - % empty rows/columns, I is double - A = sym(zeros(0, 4)); - [m, I] = min(A, [], 1); - assert (strcmp(class(I), 'double')) - [m, I] = max(A, [], 1); - assert (strcmp(class(I), 'double')) - A = sym(zeros(3, 0)); - [m, I] = min(A, [], 2); - assert (strcmp(class(I), 'double')) - [m, I] = max(A, [], 2); - assert (strcmp(class(I), 'double')) -***** test - % index output - A = [0 1 9; 10 7 4]; - B = sym(A); - [m1, I1] = min(A); - [m2, I2] = min(B); - assert (isequal (I1, I2)) - assert (isequal (m1, double(m2))) - [m1, I1] = max(A); - [m2, I2] = max(B); - assert (isequal (I1, I2)) - assert (isequal (m1, double(m2))) -***** test - % index output, with dim - A = [0 1 9; 10 7 4]; - B = sym(A); - [m1, I1] = min(A, [], 1); - [m2, I2] = min(B, [], 1); - assert (isequal (I1, I2)) - assert (isequal (m1, double(m2))) - [m1, I1] = min(A, [], 2); - [m2, I2] = min(B, [], 2); - assert (isequal (I1, I2)) - assert (isequal (m1, double(m2))) - [m1, I1] = max(A, [], 1); - [m2, I2] = max(B, [], 1); - assert (isequal (I1, I2)) - assert (isequal (m1, double(m2))) - [m1, I1] = max(A, [], 2); - [m2, I2] = max(B, [], 2); - assert (isequal (I1, I2)) - assert (isequal (m1, double(m2))) -***** test - % empty columns - A = sym(zeros(0, 4)); - [m, I] = min(A, [], 1); - assert (isequal (size(m), [0 4])) - assert (isequal (size(I), [0 4])) - [m, I] = max(A, [], 1); - assert (isequal (size(m), [0 4])) - assert (isequal (size(I), [0 4])) -***** test - % empty rows - A = sym(zeros(3, 0)); - [m, I] = min(A, [], 2); - assert (isequal (size(m), [3 0])) - assert (isequal (size(I), [3 0])) - [m, I] = max(A, [], 2); - assert (isequal (size(m), [3 0])) - assert (isequal (size(I), [3 0])) -***** test - % another empty case - % we differ slightly from double which gives 1x0/0x1 - A = sym(zeros(3, 0)); - [m, I] = min(A, [], 1); - assert (isempty (m)) - assert (isempty (I)) - A = sym(zeros(0, 3)); - [m, I] = min(A, [], 2); - assert (isempty (m)) - assert (isempty (I)) +[inst/@sym/atan2.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atan2.m +***** error atan2 (1) +***** error atan2 (1, 2, 3) ***** test - % empty without index output - A = sym(zeros(3, 0)); - assert (isempty (min (A, [], 1))) - assert (isempty (max (A, [], 1))) - assert (isempty (min (A, [], 2))) - assert (isempty (max (A, [], 2))) - A = sym(zeros(0, 3)); - assert (isempty (min (A, [], 1))) - assert (isempty (max (A, [], 1))) - assert (isempty (min (A, [], 2))) - assert (isempty (max (A, [], 2))) + % some angles + e = sym(1); + a = atan2(0, e); + assert (isequal (a, sym(0))) + a = atan2(e, 0); + assert (isequal (a, sym(pi)/2)) ***** test - % binary op form, one a scalar - A = sym([3 1 9]); - m = min(A, sym(2)); - M = max(A, sym(2)); - assert (isequal (m, sym([2 1 2]))) - assert (isequal (M, sym([3 2 9]))) - m = min(sym(2), A); - M = max(sym(2), A); - assert (isequal (m, sym([2 1 2]))) - assert (isequal (M, sym([3 2 9]))) + % symbols can give numerical answer + syms x positive + a = atan2(0, x); + assert (isequal (a, sym(0))) + a = atan2(x, 0); + assert (isequal (a, sym(pi)/2)) + a = atan2(-x, 0); + assert (isequal (a, -sym(pi)/2)) ***** test - % binary op form, both scalar - m = min(sym(1), sym(2)); - M = max(sym(2), sym(2)); - assert (isequal (m, sym(1))) - assert (isequal (M, sym(2))) + % matrices + x = sym([1 -2; 0 0]); + y = sym([0 0; 8 -3]); + a = atan2(y, x); + sp = sym(pi); + aex = [0 sp; sp/2 -sp/2]; + assert (isequal (a, aex)) ***** test + % round trip syms x y - assert (isequal (children (min (x, y)), [x y])) -***** test - syms x y z - A = [x 1; y z]; - assert (isequal (min (A, [], 1), [min(x, y) min(1, z)])) - assert (isequal (max (A, [], 1), [max(x, y) max(1, z)])) - assert (isequal (min (A, [], 2), [min(x, 1); min(y, z)])) - assert (isequal (max (A, [], 2), [max(x, 1); max(y, z)])) -***** test - syms x y positive - a = min([x 2 y -6]); - assert (isequal (a, -6)) - a = max([x y -6]); - assert (isequal (a, max(x, y))) -***** test - syms x negative - a = min([x 6 10]); - assert (isequal (a, x)) - a = max([x -2 6]); - assert (isequal (a, 6)) -21 tests, 21 passed, 0 known failure, 0 skipped -[inst/@sym/ellipticCK.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCK.m -***** error ellipticCK (sym (1), 2) -***** assert (double (ellipticCK (sym (1)/2)), 1.8541, 10e-5) -***** assert (double (ellipticCK (sym (101)/10)), 0.812691836806976, -3*eps) -***** assert (isequal (ellipticCK (sym (1)), sym(pi)/2)) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/factor.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/factor.m -***** test - % n = 152862; - % [p,m] = factor(n); % only works on Octave, no Matlab as of 2014a - n = 330; % so we use an output without repeated factors - p = factor(n); m = ones(size(p)); - [ps,ms] = factor(sym(n)); - assert (isequal (p, ps)) - assert (isequal (m, ms)) -***** test - n = sym(2)^4*13; - [p,m] = factor(n); - assert (isequal (p, [2 13])) - assert (isequal (m, [4 1])) -***** test syms x - assert( logical (factor(x^2 + 6*x + 5) == (x+5)*(x+1))) -***** test - syms x - f = [ x^4/2 + 5*x^3/12 - x^2/3 x^2 - 1 10]; - g = [ x^2*(2*x - 1)*(3*x + 4)/12 (x+1)*(x-1) 10]; - assert (isequal (factor(f), g)) -***** test - % "fragile form" works - A = factor(sym(124)); - B = strtrim(disp(A, 'flat')); - assert (strcmp (B, '2**2*31**1')) -***** error [p, m] = factor(sym('x')); -***** error [p, m] = factor(sym(42), sym('x')); -***** test - % if polynomial happens to be a constant, don't attempt integer - % factorization if a variable is specified - f = sym(42); - q = factor(f, sym('x')); - assert (isequal (f, q)); -8 tests, 8 passed, 0 known failure, 0 skipped -[inst/@sym/union.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/union.m -***** test - A = sym([1 2 3]); - B = sym([1 2 4]); - C = union(A, B); - D = sym([1 2 3 4]); - assert (isequal (C, D)) -***** test - % one nonsym - A = sym([1 2 3]); - B = [1 2 4]; - C = union(A, B); - D = sym([1 2 3 4]); - assert (isequal (C, D)) -***** test - % empty - A = sym([1 2 3]); - C = union(A, A); - assert (isequal(C, A)) -***** test - % empty input - A = sym([1 2]); - C = union(A, []); - assert (isequal (C, sym([1 2]))) -***** test - % scalar - syms x - assert (isequal (union([x 1], x), [1 x])) - assert (isequal (union(x, x), x)) -***** test - A = interval(sym(1), 3); - B = interval(sym(2), 5); - C = union(A, B); - assert( isequal( C, interval(sym(1), 5))) + xd = -2; yd = -3; + f = atan2 (x, y); + A = atan2 (xd, yd); + h = function_handle (f); + B = h (xd, yd); + assert (A, B, -eps) 6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/lt.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lt.m +[inst/@sym/gt.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gt.m ***** test % simple - x = sym(1); y = sym(1); e = x < y; - assert (~logical (e)) - x = sym(1); y = sym(2); e = x < y; - assert (logical (e)) -***** test - % mix sym and double - x = sym(1); y = 1; e = x < y; + x = sym(1); y = sym(1); e = x > y; assert (~logical (e)) - x = sym(1); y = 2; e = x < y; - assert (logical (e)) - x = 1; y = sym(1); e = x < y; + x = sym(1); y = sym(2); e = x > y; assert (~logical (e)) - x = 1; y = sym(2); e = x < y; - assert (logical (e)) -***** test - % Type of the output is sym or logical? - % FIXME: in current version, they are sym - x = sym(1); y = sym(1); e1 = x < y; - x = sym(1); y = sym(2); e2 = x < y; - %assert (islogical (e1)) - %assert (islogical (e2)) - assert (isa (e1, 'sym')) - assert (isa (e2, 'sym')) -***** test - % ineq w/ symbols - syms x y - e = x < y; - assert (~islogical (e)) - assert (isa (e, 'sym')) ***** test % array -- array syms x a = sym([1 3 3 2*x]); b = sym([2 x 3 10]); - e = a < b; + e = a > b; assert (isa (e, 'sym')) - assert (logical (e(1))) + assert (~logical (e(1))) assert (isa (e(2), 'sym')) - assert (isequal (e(2), 3 < x)) + assert (isequal (e(2), 3 > x)) assert (~logical (e(3))) assert (isa (e(4), 'sym')) - assert (isequal (e(4), 2*x < 10)) -***** test - % array -- scalar - syms x oo - a = sym([1 x oo]); - b = sym(3); - e = a < b; - assert (isa (e, 'sym')) - assert (logical (e(1))) - assert (isa (e(2), 'sym')) - assert (isequal (e(2), x < 3)) - assert (~logical (e(3))) -***** test - % scalar -- array - syms x oo - a = sym(1); - b = sym([2 x -oo]); - e = a < b; - assert (isa (e, 'sym')) - assert (logical (e(1))) - assert (isa (e(2), 'sym')) - assert (isequal (e(2), 1 < x)) - assert (~logical (e(3))) + assert (isequal (e(4), 2*x > 10)) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/fplot.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fplot.m ***** test - % ineq w/ nan + % simple syms x - snan = sym(nan); - e = x < snan; - assert (~logical (e)) - e = snan < x; - assert (~logical (e)) - b = [sym(0) x]; - e = b < snan; - assert (isequal (e, [false false])) -***** test - % oo - syms oo x - e = oo < x; - assert (isa (e, 'sym')) - assert (strcmp (strtrim (disp (e, 'flat')), 'oo < x')) -***** test - % sympy true matrix - a = sym([1 3 3]); - b = sym([2 4 1]); - e = a < b; - %assert (~isa (e, 'sym')) - %assert (islogical (e)) - assert (isequal (e, [true true false])) -***** test - % oo, finite real variables - syms oo - syms z real - assumeAlso(z, 'finite') - e = -oo < z; - assert (isequal (e, sym(true))) - e = z < oo; - assert (isequal (e, sym(true))) -***** test - % -oo, positive var (known failure w/ sympy 0.7.6.x) - syms oo - syms z positive - e = -oo < z; - assert (logical (e)) - assert (isequal (e, sym(true))) -***** test - % positive - syms z positive - e = -1 < z; - assert (isequal (e, sym(true))) + f = cos (x); + fplot (f); +No entry for terminal type "unknown"; +using dumb terminal settings. +warning: using the gnuplot graphics toolkit is discouraged + +The gnuplot graphics toolkit is not actively maintained and has a number +of limitations that are unlikely to be fixed. Communication with gnuplot +uses a one-directional pipe and limited information is passed back to the +Octave interpreter so most changes made interactively in the plot window +will not be reflected in the graphics properties managed by Octave. For +example, if the plot window is closed with a mouse click, Octave will not +be notified and will not update its internal list of open figure windows. +The qt toolkit is recommended instead. ***** test - syms oo - z = sym('z', 'negative'); - e = z < oo; - assert (isequal (e, sym(true))) -14 tests, 14 passed, 0 known failure, 0 skipped -[inst/@sym/numden.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/numden.m -***** error numden (sym(1), 2) + % constant function + fplot (sym (10)); +No entry for terminal type "unknown"; +using dumb terminal settings. + line 0: warning: iconv failed to convert degree sign +warning: fplot: FCN is not a vectorized function which reduces performance +warning: called from + fplot at line 172 column 7 + fplot at line 107 column 5 + __test__ at line 4 column 2 + test at line 682 column 11 + /tmp/tmp.ZYBI9fhIE2 at line 1406 column 31 + ***** test syms x - [n, d] = numden (1/x); - assert (isequal (n, sym(1)) && isequal (d, x)) -***** test - syms x y - n1 = [sym(1); x]; - d1 = [x; y]; - [n, d] = numden (n1 ./ d1); - assert (isequal (n, n1) && isequal (d, d1)) -***** test - [n, d] = numden (sym(2)); - assert (isequal (n, 2)); - assert (isequal (d, 1)); -***** test - syms x y - [n, d] = numden ((x + pi)/(y + 6)); - assert (isequal (n, x + pi)); - assert (isequal (d, y + 6)); -***** test - syms x y - [n, d] = numden ((x^2 + y^2)/(x*y)); - assert (isequal (n, x^2 + y^2)); - assert (isequal (d, x*y)); -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/fix.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fix.m -***** test - d = 3/2; - x = sym('3/2'); - f1 = fix(x); - f2 = fix(d); - assert (isequal (f1, f2)) -***** test - D = [1.1 4.6; -3.4 -8.9]; - A = [sym(11)/10 sym(46)/10; sym(-34)/10 sym(-89)/10]; - f1 = fix(A); - f2 = fix(D); - assert( isequal (f1, f2)) -***** test - d = sym(-11)/10; - c = -1; - assert (isequal (fix (d), c)) -***** test - d = sym(-19)/10; - c = -1; - assert (isequal (fix (d), c)) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/ezsurf.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezsurf.m -***** error - syms u v t - ezsurf(u*v, 2*u*v, 3*v*t) -***** error - syms u v t - ezsurf(u*v, 2*u*v, u*v*t) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/prevprime.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/prevprime.m -***** assert (isequal (prevprime(sym(3)), 2)); -***** assert (isequal (prevprime(sym(20)), 19)); -***** assert (isequal (prevprime(sym([3 5 10])), [2 3 7])); -***** error prevprime(sym(2)) -***** error prevprime(sym(-2)) -***** test - % result is a sym - p = prevprime(sym(3)); - assert (isa (p, 'sym')) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/sin.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sin.m -***** error sin (sym(1), 2) -***** assert (isequaln (sin (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); -***** test - f1 = sin(x); - f2 = sin(d); - assert( abs(double(f1) - f2) < 1e-15 ) -***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = sin(A); - f2 = sin(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) -***** test - % round trip - y = sym('y'); - A = sin (d); - f = sin (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/assume.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/assume.m + f = cos (x); + [xx, yy] = fplot (f); + assert (xx(1), -5) + assert (xx(end), 5) + assert (min (yy), -1, 0.1) + assert (max (yy), 1, 0.1) + line 0: warning: iconv failed to convert degree sign ***** test syms x - x = assume(x, 'positive'); - a = assumptions(x); - assert(strcmp(a, 'x: positive')) - x = assume(x, 'even'); - a = assumptions(x); - assert(strcmp(a, 'x: even')) - x = assume(x, 'odd'); - a = assumptions(x); - assert(strcmp(a, 'x: odd')) -***** error - syms x - x = assume (x, x); -***** error - syms x - x = assume (x/pi, 'integer') + f = cos (x); + dom = [1 3]; + [xx, yy] = fplot (f, dom); + assert (xx(1), dom(1)) + assert (xx(end), dom(2)) ***** test - % multiple assumptions syms x - x = assume(x, 'positive', 'integer'); - [tilde, a] = assumptions(x, 'dict'); - assert(a{1}.integer) - assert(a{1}.positive) + f = cos (x); + dom = [1 3]; + fplot (f, dom); + assert (get (gca, 'xlim'), dom) ***** test - % multiple assumptions syms x - x = assume(x, 'even', 'positive'); - [tilde, a] = assumptions(x, 'dict'); - assert(a{1}.even) - assert(a{1}.positive) -***** test - % has output so avoids workspace - syms x positive - x2 = x; - f = sin(x); - x = assume(x, 'negative'); - a = assumptions(x); - assert(strcmp(a, 'x: negative')) - a = assumptions(x2); - assert(strcmp(a, 'x: positive')) - a = assumptions(f); - assert(strcmp(a, 'x: positive')) -***** test - % clear: has output so avoids workspace - syms x positive - f = 2*x; - x2 = assume(x, 'clear'); - assert (~ isempty (assumptions (f))); -***** test - % has no output so does workspace - syms x positive - x2 = x; - f = sin(x); - assume(x, 'negative'); - a = assumptions(x); - assert(strcmp(a, 'x: negative')) - a = assumptions(x2); - assert(strcmp(a, 'x: negative')) - a = assumptions(f); - assert(strcmp(a, 'x: negative')) -***** test - % clear: has not output so does workspace - syms x positive - f = 2*x; - assume(x, 'clear'); - assert (isempty (assumptions (f))); - assert (isempty (assumptions ())); + f = exp (x); + dom = [1 2 3 4]; + fplot (f, dom); + assert (get (gca, 'xlim'), dom(1:2)) + assert (get (gca, 'ylim'), dom(3:4)) + line 0: warning: iconv failed to convert degree sign ***** test - syms x positive - assume (x, 'clear') - assert (isempty (assumptions ())) -***** error + % bounds as syms syms x - x2 = assume (x, 'clear', 'real'); -***** error - syms a - assume (a > 0) -***** test - syms x y - assume ([x y], 'real') - assert (strcmp (assumptions (x), 'x: real')) - assert (strcmp (assumptions (y), 'y: real')) -***** test - syms x y - assume ([x y], 'positive', 'even') - assert (strcmp (assumptions (x), 'x: positive, even') || strcmp (assumptions (x), 'x: even, positive')) - assert (strcmp (assumptions (y), 'y: positive, even') || strcmp (assumptions (y), 'y: even, positive')) -***** test - % with output, original x and y are unchanged - syms x y - [p, q] = assume ([x y], 'real'); - assert (isempty (assumptions (x))) - assert (isempty (assumptions (y))) - assert (strcmp (assumptions (p), 'x: real')) - assert (strcmp (assumptions (q), 'y: real')) -***** test - % matrix input - syms a b c d - assume ([a b; c d], 'real') - assert (strcmp (assumptions (a), 'a: real')) - assert (strcmp (assumptions (b), 'b: real')) - assert (strcmp (assumptions (c), 'c: real')) - assert (strcmp (assumptions (d), 'd: real')) -16 tests, 16 passed, 0 known failure, 0 skipped -[inst/@sym/psi.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/psi.m -***** assert (isequal (psi (sym (1)), -eulergamma)) -***** assert (isequal (psi (1, sym (1)), sym (pi)^2/6)) -***** assert (isinf (psi (sym ('inf')))) -***** test - % compare to Maple: evalf(Psi(-101/100)); - maple = vpa ('100.3963127058453949545769053445198842332424', 40); - us = vpa (psi (sym (-101)/100), 40); - assert (abs(double(maple-us)) < 1e-39) -***** test - % compare to Maple: evalf(Psi(1, 3*I-2)); - maple = vpa ('-0.1651414829219882371561038184133243839778799', 40) - ... - vpa ('0.1960040752985823275302034466611711263617296j', 40); - us = vpa (psi (1, sym (-2) + sym(3i)), 40); - assert (abs(double(maple-us)) < 1e-39) -***** test - % should match @double/psi - if (exist ('psi','builtin')) - assert (psi (pi), double (psi (sym (pi))), -3*eps) - assert (psi (100), double (psi (sym (100))), -3*eps) - assert (psi (1e-3), double (psi (1/sym (1e3))), -3*eps) - if (exist ('OCTAVE_VERSION', 'builtin')) - % 2014a doesn't support negative or complex arguments - assert (psi (-1.5), double (psi (sym (-3)/2)), -3*eps) - assert (psi (-8.3), double (psi (sym (-83)/10)),-4*eps) - assert (psi (2i), double (psi (sym (2i))), -3*eps) - assert (psi (10i+3), double (psi (sym (10i)+3)), -3*eps) - end - end -***** test - % @double/psi loses accuracy near the poles: note higher rel tol - if (exist ('psi','builtin')) - if (exist ('OCTAVE_VERSION', 'builtin')) - assert (psi (-1.1), double (psi (sym (-11)/10)), -6*eps) - assert (psi (-1.01), double (psi (sym (-101)/100)), -50*eps) - end - end -***** test - if (exist ('psi','builtin')) - assert (psi (1, pi), double (psi (1, sym (pi))), -3*eps) - assert (psi (1, 100), double (psi (1, sym (100))), -3*eps) - assert (psi (1, 1e-4), double (psi (1, 1/sym (1e4))), -3*eps) - end + f = cos (x); + dom = [1 2 3 4]; + fplot (f, sym (dom)); + assert (get (gca, 'xlim'), dom(1:2)) + assert (get (gca, 'ylim'), dom(3:4)) + line 0: warning: iconv failed to convert degree sign + |---------------------------------------------------------------------| + 4 +|+ + *+ + + +-+| + +| + * + + +-----------------++| + #|#######################*#########################+***?***x) exp (x)+ | + #|######################*############################################ | + 3.8 +|+#####################*###########################################+-+| + #|#####################*############################################# | + #|####################*############################################## | + #|###################*############################################### | + 3.6 +|+#################*###############################################+-+| + #|#################*################################################# | + #|################*################################################## | + #|###############*################################################### | + 3.4 +|+############**###################################################+-+| + #|############*###################################################### | + #|###########*####################################################### | + #|##########*######################################################## | + 3.2 +|+########*########################################################+-+| + #|########*########################################################## | + #|######**########################################################### | + +|---------------------------------------------------------------------| + 3 +-+###*#######+#############+#############+#############+###########+-+ + 1 1.2 1.4 1.6 1.8 2 + ***** test - if (exist ('psi','builtin')) - assert (psi (2, pi), double (psi (2, sym (pi))), -3*eps) - assert (psi (2, 1000), double (psi (2, sym (1000))), -3*eps) - assert (psi (2, 1e-4), double (psi (2, 1/sym (1e4))), -3*eps) + % bounds as syms, regular handle for function + % fails on 6.1.0, maybe earlier too? + if (compare_versions (OCTAVE_VERSION (), '6.1.0', '!=')) + dom = [1 2]; + fplot (@cos, sym (dom)); + assert (get (gca, 'xlim'), dom(1:2)) end + line 0: warning: iconv failed to convert degree sign + |---------------------------------------------------------------------| + 4 +|+ + + + + +-+| + +| + + + +-----------------++| + #|#################################################+***?***x) cos (x)+ | + #|################################################################### | + 3.8 +|+#################################################################+-+| + #|################################################################### | + #|################################################################### | + #|################################################################### | + 3.6 +|+#################################################################+-+| + #|################################################################### | + #|################################################################### | + #|################################################################### | + 3.4 +|+#################################################################+-+| + #|################################################################### | + #|################################################################### | + #|################################################################### | + 3.2 +|+#################################################################+-+| + #|################################################################### | + #|################################################################### | + +|---------------------------------------------------------------------| + 3 +-+###########+#############+#############+#############+###########+-+ + 1 1.2 1.4 1.6 1.8 2 + +***** error + syms x y + fplot (x*y) + line 0: warning: iconv failed to convert degree sign + |--------------------------------------------------------------------| + 0.8 +|+ + + + + +-+| + +| + + + + +----------++| + 0.6 +|+######################################################+***?***cos++| + *|*################################################################# | + #|#*****############################################################ | + 0.4 +|+#####*****######################################################+-+| + #|###########**********############################################# | + 0.2 +|+####################*****#######################################+-+| + #|##########################*****################################### | + #|###############################****############################### | + 0 +|+##################################*****#########################+-+| + #|########################################*****##################### | + -0.2 +|+############################################*****###############+-+| + #|##################################################*****########### | + #|#######################################################**********# | + -0.4 +|+################################################################***| + #|################################################################## | + -0.6 +|+################################################################+-+| + #|################################################################## | + +|--------------------------------------------------------------------| + -0.8 +-+###########+#############+############+#############+###########+-+ + 1 1.2 1.4 1.6 1.8 2 + ***** test - % round trip - if (exist ('psi','builtin')) + % N parameter does something syms x - f = psi (x); - h = function_handle (f); - A = h (1.1); - B = psi (1.1); - assert (A, B) - end -10 tests, 10 passed, 0 known failure, 0 skipped -[inst/@sym/int.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/int.m -***** shared x,y,a - syms x y a -***** assert(logical(int(cos(x)) - sin(x) == 0)) -***** assert(logical(int(cos(x),x) - sin(x) == 0)) -***** assert(logical(int(cos(x),x,0,1) - sin(sym(1)) == 0)) -***** test - %% limits might be syms - assert( isequal (int(cos(x),x,sym(0),sym(1)), sin(sym(1)))) - assert( isequal (int(cos(x),x,0,a), sin(a))) -***** test - %% other variables present - assert( isequal (int(y*cos(x),x), y*sin(x))) -***** test - %% limits as array - assert( isequal (int(cos(x),x,[0 1]), sin(sym(1)))) - assert( isequal (int(cos(x),x,sym([0 1])), sin(sym(1)))) - assert( isequal (int(cos(x),x,[0 a]), sin(a))) -***** test - %% no x given - assert( isequal (int(cos(x),[0 1]), sin(sym(1)))) - assert( isequal (int(cos(x),sym([0 1])), sin(sym(1)))) - assert( isequal (int(cos(x),[0 a]), sin(a))) - assert( isequal (int(cos(x),0,a), sin(a))) -***** test - %% integration of const - assert( isequal (int(sym(2),y), 2*y)) - assert( isequal (int(sym(2)), 2*x)) - assert( isequal (int(sym(2),[0 a]), 2*a)) - assert( isequal (int(sym(2),0,a), 2*a)) -***** test - % componentwise int of array - A = [x x*x]; - assert (isequal (int(A, x), [x^2/2 x^3/3])) -***** test - % NonElementaryIntegral bug - % https://savannah.gnu.org/bugs/index.php?46831 - f = int(exp(exp(x))); - f = f + 2; - g = diff(f); - assert (isequal (g, exp(exp(x)))) -10 tests, 10 passed, 0 known failure, 0 skipped -[inst/@sym/symprod.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symprod.m -***** error symprod (sym(1), 2, 3, 4, 5) -***** test - % simple - syms n - assert (isequal (symprod(n, n, 1, 10), factorial(sym(10)))) - assert (isequal (symprod(n, n, sym(1), sym(10)), factorial(10))) -***** test - % one input - syms n - f = symprod (n); - g = factorial (n); - assert (isequal (f, g)) - f = symprod (2*n); - g = 2^n * factorial (n); - assert (isequal (f, g)) + [xx, yy] = fplot (sin (x), [0 2], 5); + N = length (xx); + assert (N >= 5) + [xx, yy] = fplot (sin (x), [0 2], 1000); + N = length (xx); + assert (N == 1000) ***** test - % constant input - f = symprod (sym(2)); + % tolerance parameter does something syms x - g = 2^x; - assert (isequal (f, g)) -***** test - % two inputs - syms n - f = symprod (2*n, n); - g = 2^n * factorial (n); - assert (isequal (f, g)) -***** test - % two inputs, second is range - syms n - f = symprod (n, [1 6]); - g = 720; - assert (isequal (f, g)) - f = symprod (n, [sym(1) 6]); - g = 720; - assert (isequal (f, g)) - f = symprod (2*n, [1 6]); - g = sym(2)^6*720; - assert (isequal (f, g)) -***** test - % three inputs, last is range - syms n - f = symprod (2*n, n, [1 4]); - g = sym(384); - assert (isequal (f, g)) - f = symprod (2*n, n, [sym(1) 4]); - g = sym(384); - assert (isequal (f, g)) - f = symprod (2, n, [sym(1) 4]); - g = sym(16); - assert (isequal (f, g)) -***** test - % three inputs, no range - syms n - f = symprod (2*n, 1, 4); - g = sym(384); - assert (isequal (f, g)) - f = symprod (5, sym(1), 3); - g = sym(125); - assert (isequal (f, g)) -***** test - % infinite product - syms a n oo - zoo = sym('zoo'); - assert (isequal (symprod(a, n, 1, oo), a^oo)) - assert (isequal (symprod(a, n, 1, inf), a^oo)) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/setxor.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/setxor.m -***** test - A = sym([1 2 3]); - B = sym([1 2 4]); - C = setxor(A, B); - D1 = sym([3 4]); - D2 = sym([4 3]); - assert (isequal (C, D1) || isequal (C, D2)) -***** test - % one nonsym - A = sym([1 2 3]); - B = [1 2 4]; - C = setxor(A, B); - D1 = sym([3 4]); - D2 = sym([4 3]); - assert (isequal (C, D1) || isequal (C, D2)) -***** test - % empty - A = sym([1 2 3]); - C = setxor(A, A); - assert (isempty (C)) -***** test - % empty input - A = sym([1 2]); - C = setxor(A, []); - assert (isequal (C, A) || isequal (C, sym([2 1]))) + [xx, yy] = fplot (sin (exp (x/2)), [0 3], 0.1); + N1 = length (xx); + [xx, yy] = fplot (sin (exp (x/2)), [0 3], 0.01); + N2 = length (xx); + assert (N2 > N1) ***** test - % scalar + % fmt parameter does something syms x - assert (isequal (setxor([x 1], x), sym(1))) - assert (isempty (setxor(x, x))) + fplot (sin (x), [0 6], 'rx--', 'linewidth', 5); + l = get (gca (), 'children'); + assert (get (l, 'color'), [1 0 0]) + assert (get (l, 'linewidth'), 5) + f = exp (x); + dom = [1 2 3 4]; + fplot (f, dom); + assert (get (gca, 'xlim'), dom(1:2)) + assert (get (gca, 'ylim'), dom(3:4)) + line 0: warning: iconv failed to convert degree sign + |--------------------------------------------------------------------| + 1 +|+ + BBBB*BB + + + + +-+| + +| B*B BB + + +-----------------++| + #|########BB############*BB#######################+***B***x) sin (x)+ | + #|######*B#################B######################################## | + #|#####B####################B####################################### | + 0.5 +|+###B######################*B####################################+-+| + #|###B#########################B#################################### | + #|#*B###########################B################################### | + #|B##############################B################################## | + #|################################*B################################ | + 0 B|+#################################B##############################+-+| + #|###################################B############################## | + #|####################################B############################# | + #|#####################################B############################ B| + #|######################################*B##########################B | + -0.5 +|+#######################################B#######################*B-+| + #|#########################################B#####################B## | + #|##########################################B*B################BB### | + #|#############################################B#############*B##### | + +|--------------------------------------------------------------------| + -1 +-+#########+##########+###########+##########+#####BBBB*B+########+-+ + 0 1 2 3 4 5 6 + ***** test - A = interval(sym(1), 3); - B = interval(sym(2), 5); - C = setxor(A, B); - D = union (interval (sym(1), 2, false, true), interval (sym(3), 5, true, false)); - assert( isequal( C, D)) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/cot.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cot.m -***** error cot (sym(1), 2) -***** assert (isequaln (cot (sym(nan)), sym(nan))) + close all +13 tests, 13 passed, 0 known failure, 0 skipped +[inst/@sym/factorial.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/factorial.m +***** error factorial (sym(1), 2) +***** xtest + assert (isequaln (factorial (sym(nan)), sym(nan))) +!!!!! known failure +assert (isequaln (factorial (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = cot(x); - f2 = cot(d); + f1 = factorial(x); + f2 = factorial(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = cot(A); - f2 = cot(D); + f1 = factorial(A); + f2 = factorial(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = cot (d); - f = cot (y); + A = factorial (d); + f = factorial (y); h = function_handle (f); B = h (d); assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/permute.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/permute.m -***** error permute (sym(1)) -***** error permute (sym(1), 2, 3) -***** test - D = round(10*rand(5,3)); - A = sym(D); - B = permute(A, [1 2]); - assert (isequal(B, A)) - B = permute(A, [2 1]); - assert (isequal(B, A.')) -***** test - syms x - A = [1 x]; - B = permute(A, [2 1]); - assert (isequal(B, [1; x])) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/limit.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/limit.m -***** error limit (sym(1), 2, 3, 4, 5) -***** shared x, oo - syms x - oo = sym(inf); -***** assert (isa (limit(x, x, pi), 'sym')) -***** assert (isequal (limit(x, x, pi), sym(pi))) -***** assert (isequal (limit(sin(x)/x, x, 0), 1)) -***** test - % left/right-hand limit - assert (isequal (limit(1/x, x, 0, 'right'), oo)) - assert (isequal (limit(1/x, x, 0), oo)) - assert (isequal (limit(1/x, x, 0, 'left'), -oo)) - assert (isequal (limit(1/x, x, oo), 0)) - assert (isequal (limit(sign(x), x, 0, 'left'), -1)) - assert (isequal (limit(sign(x), x, 0, 'right'), 1)) - assert (isequal (limit(sign(x), x, 0, '-'), -1)) - assert (isequal (limit(sign(x), x, 0, '+'), 1)) -***** test - % matrix - syms y - A = [x 1/x x*y]; - B = sym([3 sym(1)/3 3*y]); - assert (isequal (limit(A, x, 3), B)) -***** test - % omitting arguments - syms a - assert (isequal (limit(a), 0)) - assert (isequal (limit(a*x+a+2), a+2)) - assert (isequal (limit(a*x+a+2, 6), 7*a+2)) -***** test - % constants - assert (isequal (limit(sym(6)), 6)) - assert (isequal (limit(sym(6), 7), 6)) - assert (isequal (limit([sym(6) sym(2)], 7), [6 2])) -***** test - % double constant, with sym limit - a = limit (6, sym(0)); - assert (isa (a, 'sym')) - assert (isequal (a, sym(6))) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/erfcinv.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfcinv.m -***** error erfcinv (sym(1), 2) -***** assert (isequaln (erfcinv (sym(nan)), sym(nan))) +5 tests, 4 passed, 1 known failure, 0 skipped +[inst/@sym/erfc.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfc.m +***** error erfc (sym(1), 2) +***** assert (isequaln (erfc (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = erfcinv(x); - f2 = erfcinv(d); + f1 = erfc(x); + f2 = erfc(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = erfcinv(A); - f2 = erfcinv(D); + f1 = erfc(A); + f2 = erfc(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = erfcinv (d); - f = erfcinv (y); + A = erfc (d); + f = erfc (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/xor.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/xor.m -***** shared t, f - t = sym(true); - f = sym(false); +[inst/@sym/norm.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/norm.m +***** assert (isequal (norm(sym(-6)), 6)) ***** test - % simple - assert (isequal (xor(t, f), t)) - assert (isequal (xor(t, t), f)) + % 2-norm default + A = [1 2; 3 4]; + n1 = norm (sym (A)); + assert (isequal (n1, sqrt (sqrt (sym(221)) + 15))) + assert (norm (A), double (n1), -eps) ***** test - % array - w = [t t f f]; - z = [t f t f]; - assert (isequal (xor(w, z), [f t t f])) -***** xtest - % output is sym even for scalar t/f - % ₣IXME: should match other bool fcns - assert (isa (xor(t, f), 'sym')) + syms x y real + assert (isequal (norm([x 1; 3 y], 'fro'), sqrt(x^2 + y^2 + 10))) ***** test - % eqns - syms x - e = xor(x == 4, x == 5); - assert (isequal (subs(e, x, [3 4 5 6]), [f t t f])) + syms x real + assert (isequal (norm([x 1], 2), sqrt(x^2 + 1))) ***** test - % eqns, exclusive + % test sym vs double ord syms x - e = xor(x == 3, x^2 == 9); - assert (isequal (subs(e, x, [-3 0 3]), [t f f])) -***** error xor (sym('x'), 1, 2) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/ellipticCE.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCE.m -***** error ellipticCE (sym (1), 2) -***** assert (isequal (ellipticCE (sym (0)), sym (1))) -***** assert (isequal (ellipticCE (sym (1)), sym (pi)/2)) -***** assert (double (ellipticCE (sym (pi)/4)), 1.482786927, 10e-10) -***** assert (double (ellipticCE (sym (pi)/2)), 1.775344699, 10e-10) + assert (isequal (norm([x 2 1], 1), abs(x) + 3)) + assert (isequal (norm([x 2 1], sym(1)), abs(x) + 3)) + assert (isequal (norm([sym(-3) 2 1], inf), sym(3))) + assert (isequal (norm([sym(-3) 2 1], sym(inf)), sym(3))) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/nchoosek.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nchoosek.m -***** assert (isequal (nchoosek(sym(5), sym(2)), sym(10))) -***** assert (isequal (nchoosek(sym(5), 2), sym(10))) -***** assert (isequal (nchoosek(5, sym(2)), sym(10))) -***** assert (isequal (nchoosek(sym(10), 0), 1)) -***** assert (isequal (nchoosek(sym(10), -1), 0)) +[inst/@sym/ctranspose.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ctranspose.m ***** test - n = sym('n', 'nonnegative', 'integer'); - assert (isequal (nchoosek (n, n), sym(1))) + x = sym(1); + assert (isequal (x', x)) +***** assert (isempty (sym([])')) ***** test - n = sym('n', 'integer'); - q = nchoosek(n, 2); - w = subs(q, n, 5); - assert (isequal (w, 10)) + % conjugate does nothing to real x + syms x real + assert (isequal (x', x)) ***** test - n = sym('n', 'integer'); - k = sym('k', 'integer'); - q = nchoosek(n, k); - w = subs(q, {n k}, {5 2}); - assert (isequal (w, 10)) + % complex + syms x + assert (isequal (x', conj(x))) ***** test - % negative input - assert (isequal (nchoosek (sym(-2), sym(5)), sym(-6))) + % complex array + syms x + A = [x 2*x]; + B = [conj(x); 2*conj(x)]; + assert(isequal(A', B)) ***** test - % complex input - n = sym(1 + 3i); - k = sym(5); - A = nchoosek (n, k); - B = gamma (n + 1) / (gamma (k + 1) * gamma (n - k + 1)); - assert (double (A), double (B), -2*eps) + A = [1 2; 3 4]; + assert(isequal( sym(A)' , sym(A') )) ***** test - % complex input - n = sym(-2 + 3i); - k = sym(1 + i); - A = nchoosek (n, k); - B = gamma (n + 1) / (gamma (k + 1) * gamma (n - k + 1)); - assert (double (A), double (B), -2*eps) -11 tests, 11 passed, 0 known failure, 0 skipped -[inst/@sym/cosd.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosd.m -***** error cosd (sym(1), 2) -***** assert (isequaln (cosd (sym(nan)), sym(nan))) + A = [1 2] + 1i; + assert(isequal( sym(A)' , sym(A') )) ***** test - f1 = cosd (sym(1)); - f2 = cosd (1); - assert (double (f1), f2, -eps) + % true/false + t = sym(true); + f = sym(false); + assert (isequal ( t', t)) + assert (isequal ( f', f)) ***** test - D = [10 30; 110 -45]; - A = sym(D); - f1 = cosd (A); - f2 = cosd (D); - assert (double (f1), f2, -4*eps) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/log.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log.m -***** error log (sym(1), 2) -***** assert (isequaln (log (sym(nan)), sym(nan))) + % more true/false + syms x + A = [x true 1i]; + B = [conj(x); true; -sym(1i)]; + assert (isequal ( A', B)) +/usr/lib/python3/dist-packages/sympy/matrices/matrixbase.py:2051: SymPyDeprecationWarning: + +non-Expr objects in a Matrix is deprecated. Matrix represents +a mathematical matrix. To represent a container of non-numeric +entities, Use a list of lists, TableForm, NumPy array, or some +other data structure instead. + +See https://docs.sympy.org/latest/explanation/active-deprecations.html#deprecated-non-expr-in-matrix +for details. + +This has been deprecated since SymPy version 1.9. It +will be removed in a future version of SymPy. + + out = self.from_dok(self.rows, self.cols, fdok) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/@sym/floor.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/floor.m +***** error floor (sym(1), 2) +***** assert (isequaln (floor (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = log(x); - f2 = log(d); + f1 = floor(x); + f2 = floor(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = log(A); - f2 = log(D); + f1 = floor(A); + f2 = floor(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = log (d); - f = log (y); + A = floor (d); + f = floor (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/equationsToMatrix.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/equationsToMatrix.m -***** test - syms x y z - [A, B] = equationsToMatrix ([x + y - z == 1, 3*x - 2*y + z == 3, 4*x - 2*y + z + 9 == 0], [x, y, z]); - a = sym ([1 1 -1; 3 -2 1; 4 -2 1]); - b = sym ([1; 3; -9]); - assert (isequal (A, a)) - assert (isequal (B, b)) -***** test - syms x y z - A = equationsToMatrix ([3*x + -3*y - 5*z == 9, 4*x - 7*y + -3*z == -1, 4*x - 9*y - 3*z + 2 == 0], [x, y, z]); - a = sym ([3 -3 -5; 4 -7 -3; 4 -9 -3]); - assert (isequal (A, a)) -***** test - syms x y - [A, B] = equationsToMatrix ([3*x + 9*y - 5 == 0, -8*x - 3*y == -2]); - a = sym ([3 9; -8 -3]); - b = sym ([5; -2]); - assert (isequal (A, a)) - assert (isequal (B, b)) -***** test - % override symvar order - syms x y - [A, B] = equationsToMatrix ([3*x + 9*y - 5 == 0, -8*x - 3*y == -2], [y x]); - a = sym ([9 3; -3 -8]); - b = sym ([5; -2]); - assert (isequal (A, a)) - assert (isequal (B, b)) -***** test - syms x y z - [A, B] = equationsToMatrix ([x - 9*y + z == -5, -9*y*z == -5], [y, x]); - a = sym ([[-9 1]; -9*z 0]); - b = sym ([-5 - z; -5]); - assert (isequal (A, a)) - assert (isequal (B, b)) -***** test - syms x y - [A, B] = equationsToMatrix (-6*x + 4*y == 5, 4*x - 4*y - 5, x, y); - a = sym ([-6 4; 4 -4]); - b = sym ([5; 5]); - assert (isequal (A, a)) - assert (isequal (B, b)) +[inst/@sym/numel.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/numel.m ***** test - % vertical list of equations - syms x y - [A, B] = equationsToMatrix ([-6*x + 4*y == 5; 4*x - 4*y - 5], [x y]); - a = sym ([-6 4; 4 -4]); - b = sym ([5; 5]); - assert (isequal (A, a)) - assert (isequal (B, b)) + a = sym([1 2 3]); + assert(numel(a) == 3); ***** test - syms x y - [A, B] = equationsToMatrix (5*x == 1, y, x - 6*y - 7, y); - a = sym ([0; 1; -6]); - b = sym ([1 - 5*x; 0; -x + 7]); - assert (isequal (A, a)) - assert (isequal (B, b)) -***** error - syms x y - [A, B] = equationsToMatrix (x^2 + y^2 == 1, x - y + 1, x, y); + % 2D array + a = sym([1 2 3; 4 5 6]); + assert(numel(a) == 6); ***** test - % single equation - syms x - [A, B] = equationsToMatrix (3*x == 2, x); - a = sym (3); - b = sym (2); - assert (isequal (A, a)) - assert (isequal (B, b)) + % empty + a = sym([]); + assert(numel(a) == 0); +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/isempty.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isempty.m +***** shared se, a + se = sym ([]); + a = sym ([1 2]); +***** assert (~isempty (sym (1))) +***** assert (isempty (sym (se))) +***** assert (isempty (se == [])) ***** test - % single equation w/ symvar - syms x - [A, B] = equationsToMatrix (3*x == 2); - a = sym (3); - b = sym (2); - assert (isequal (A, a)) - assert (isequal (B, b)) -***** error - syms x - equationsToMatrix (3*x == 2, [x x]) -12 tests, 12 passed, 0 known failure, 0 skipped -[inst/@sym/det.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/det.m -***** assert (isequal (det(sym([])), 1)) +***** test se(1) = 10; +***** test assert ( isa (se, 'sym')) +***** test assert ( isequal (se, 10)) +***** shared ***** test - syms x y real - assert (isequal (det([x 5; 7 y]), x*y-35)) + % empty matrices + A = sym('A', [3 0]); + assert (isempty (A)) + A = sym(ones(3,0)); + assert (isempty (A)) ***** test - syms x - assert (isequal (det(x), x)) - assert (isequal (det(sym(-6)), sym(-6))) -3 tests, 3 passed, 0 known failure, 0 skipped + % non-empty symbolic-size matrices + syms n integer + A = sym('A', [3 n]); + assert (~isempty (A)) +***** xtest + % empty symbolic-size matrices + % FIXME: will fail until size stop lying by saying 1x1 + syms n integer + A = sym('A', [0 n]); + assert (isempty (A)) + A = sym('A', [n 0]); + assert (isempty (A)) +!!!!! known failure +assert (isempty (A)) failed +10 tests, 9 passed, 1 known failure, 0 skipped [inst/@sym/horzcat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/horzcat.m ***** test @@ -9431,400 +10327,108 @@ B = simplify (A); assert (isequal ([B A], [A B])) 8 tests, 8 passed, 0 known failure, 0 skipped -[inst/@sym/piecewise.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/piecewise.m -***** test - % basic - syms x real - f = piecewise (abs (x) < 1, 1); - assert (isnan (subs (f, -1))); - assert (isequal (subs (f, 0), 1)); - assert (isnan (subs (f, 1))); -***** test - % heaviside - syms x real - f = rewrite (heaviside (x, 1 / sym (2)), 'Piecewise'); - g = piecewise (x < 0, 0, x == 0, 1 / sym (2), x > 0, 1); - assert (logical (simplify (f == g))); -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/besselk.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselk.m -***** test - X = [1 2 3; 4 5 6]; - ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; - n = double(ns); - A = double(besselk(ns, X)); - B = besselk(n, X); - assert (all (all (abs (A - B) < 2*eps*abs(A)))) -***** test - % roundtrip - syms x - A = besselk(2, 10); - q = besselk(2, x); - h = function_handle(q); - B = h(10); - assert (abs (A - B) <= eps*abs(A)) -***** error besselk(sym('x')) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/find.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/find.m -***** error find (sym (1), 2, 3, 4) -***** error [x, y, z, w] = find (sym (1)) -***** test - syms x y positive - assert (isequal (find ([0 x 0 y]), [2 4])) - assert (isequal (find ([0 x 0 y], 1), 2)) - assert (isequal (find ([0 x 0 y], 1, 'first'), 2)) - assert (isequal (find ([0 x 0 y], 1, 'last'), 4)) - assert (isequal (find ([0 x 0 y], 2, 'last'), [2 4])) -***** test - % its enough that it could be non-zero, does not have to be - syms x y - assert (isequal (find ([0 x+y]), 2)) -***** test - % false should not be found - syms x y - assert (isequal (find ([x==x x==y]), 1)) - assert (isequal (find ([x==y]), [])) -***** test - % and/or should be treated as boolean - syms x y - assert (isequal (find ([or(x==y, x==2*y) x==y x==x]), 3)) -***** test - % None - none = pycall_sympy__ ('return None'); - assert (isequal (find ([sym(0) none sym(1)]), 3)) - syms x y - assert (isequal (find ([x==y none x==x]), 3)) +[inst/@sym/isinf.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isinf.m +***** shared x,zoo,oo,snan + oo = sym(inf); + zoo = sym('zoo'); + x = sym('x'); + snan = sym(nan); ***** test - % two output - syms x y - A = [x 0 0; x+y 5 0]; - [i, j] = find (A); - assert (isequal (i, [1; 2; 2])) - assert (isequal (j, [1; 1; 2])) + % various ops that give inf and nan + assert (isinf(oo)) + assert (isinf(zoo)) + assert (isinf(oo+oo)) + assert (~isinf(oo+zoo)) + assert (~isinf(0*oo)) + assert (~isinf(0*zoo)) + assert (~isinf(snan)) + assert (~isinf(oo-oo)) + assert (~isinf(oo-zoo)) ***** test - % three output - syms x y - A = [x 0 0; x+y 5 0]; - [i, j, v] = find (A); - assert (isequal (i, [1; 2; 2])) - assert (isequal (j, [1; 1; 2])) - assert (isequal (v, [x; x+y; sym(5)])) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/sign.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sign.m -***** error sign (sym(1), 2) -***** assert (isequaln (sign (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); + % arrays + assert (isequal( isinf([oo zoo]), [1 1] )) + assert (isequal( isinf([oo 1]), [1 0] )) + assert (isequal( isinf([10 zoo]), [0 1] )) + assert (isequal( isinf([x oo x]), [0 1 0] )) ***** test - f1 = sign(x); - f2 = sign(d); - assert( abs(double(f1) - f2) < 1e-15 ) + % Must not contain string 'symbol'; these all should make an + % actual infinity. Actually a ctor test, not isinf. + % IIRC, SMT in Matlab 2013b fails. + oo = sym(inf); + assert (isempty (strfind (sympy (oo), 'Symbol'))) + oo = sym(-inf); + assert (isempty (strfind (sympy (oo), 'Symbol'))) + oo = sym('inf'); + assert (isempty (strfind (sympy (oo), 'Symbol'))) + oo = sym('-inf'); + assert (isempty (strfind (sympy (oo), 'Symbol'))) + oo = sym('Inf'); + assert (isempty (strfind (sympy (oo), 'Symbol'))) ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = sign(A); - f2 = sign(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + % ops with infinity shouldn't collapse + syms x oo zoo + y = x + oo; + assert (~isempty (strfind (lower (sympy (y)), 'add') )) + y = x - oo; + assert (~isempty (strfind (lower (sympy (y)), 'add') )) + y = x - zoo; + assert (~isempty (strfind (lower (sympy (y)), 'add') )) + y = x*oo; + assert (~isempty (strfind (lower (sympy (y)), 'mul') )) ***** test - % round trip - y = sym('y'); - A = sign (d); - f = sign (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) + % ops with infinity are not necessarily infinite + syms x oo zoo + y = x + oo; + assert(~isinf(y)) % SMT 2014a says "true", I disagree + y = x - zoo; + assert(~isinf(y)) + y = x*oo; + assert(~isinf(y)) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/sinhint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinhint.m -***** error sinhint (sym(1), 2) -***** xtest - assert (isequaln (sinhint (sym(nan)), sym(nan))) -!!!!! known failure -assert (isequaln (sinhint (sym (nan)), sym (nan))) failed -***** shared x, d - d = 1; - x = sym('1'); -***** test - f1 = sinhint(x); - f2 = 1.057250875375728514572; - assert( abs(double(f1) - f2) < 1e-15 ) -***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = sinhint(A); - f2 = 1.057250875375728514572; - f2 = [f2 f2; f2 f2]; - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) -***** test - % round trip - y = sym('y'); - A = sinhint (d); - f = sinhint (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 4 passed, 1 known failure, 0 skipped -[inst/@sym/asind.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asind.m -***** error asind (sym(1), 2) -***** assert (isequaln (asind (sym(nan)), sym(nan))) -***** test - f1 = asind (sym(1)/2); - f2 = asind (1/2); - assert (double (f1), f2, -eps) -***** test - D = [1 2; 3 4]/4; - A = sym([1 2; 3 4])/4; - f1 = asind (A); - f2 = asind (D); - assert (double (f1), f2, -eps) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/sinc.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinc.m -***** error sinc (sym(1), 2) -***** assert (isequaln (sinc (sym(nan)), sym(nan))) -***** assert (isequal (sinc (sym(0)), sym(1))) -***** assert (isequal (sinc (sym(1)), sym(0))) -***** assert (isequal (sinc (-sym(1)), sym(0))) -***** assert (double (sinc (sym(pi))), sinc (pi), -10*eps) -***** test - A = [-sym(1)/2 sym(1)/2 pi; -sym(7)/2 sym(71)/2 sym(101)/3]; - D = double (A); - assert (sinc (D), double (sinc (A)), -200*eps) -***** test - A = [sym(51)/2 sym(1001)/3 sym(10001)/3 sym(100001)/3]; - D = double (A); - assert (sinc (D), double (sinc (A)), 1e-10) -***** test - % round trip - syms x - A = sinc (1); - f = sinc (x); - h = function_handle (f); - B = h (1); - assert (A, B, -eps) -***** test - % round trip - syms x - f = sinc (x); - h = function_handle (f); - A = sinc (1.5); - B = h (1.5); - assert (A, B, -eps) -***** test - syms x - h = function_handle (sinc (x)); - A = double (sinc (sym (12)/10)); - B = h (1.2); - C = sinc (1.2); - assert (A, B, -eps) - assert (A, C, -eps) -11 tests, 11 passed, 0 known failure, 0 skipped -[inst/@sym/curl.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/curl.m -***** error curl([sym(1) 2 3], 42, 42) -***** shared x,y,z - syms x y z -***** test - % double const - f = [1 2 3]; - g = [sym(0); 0; 0]; - assert (isequal (curl(f, [x y z]), g)) - % should fail, calls @double: curl(f, {x y z}), g)) -***** test - % div curl always 0 - v = [exp(x); x*y; sin(z)]; - g = curl(v); - a = divergence(g, [x y z]); - assert (isAlways (a == sym(0))) - assert (isa (a, 'sym')) - g = curl(v, [x y z]); - a = divergence(g, [x y z]); - assert (isAlways (a == sym(0))) - assert (isa (a, 'sym')) -***** test - % div curl always 0 - v = [exp(x); erfc(x*y); sin(exp(x)*y+sinh(z))]; - g = curl(v, [x y z]); - a = divergence(g, [x y z]); - assert (isAlways (a == sym(0))) - assert (isa (a, 'sym')) -***** test - % curl grad is vec zero - f = sin(exp(x)*y+sinh(z)); - g = curl(gradient(f, [x,y,z])); - assert (isequal (g, sym([0;0;0]))) -***** test - % 2d fcn in 2d/3d - u = sin(exp(x)*y); - v = x^2*y^3; - vorticity2d = diff(v,x) - diff(u,y); - omega = curl([u; v; 0], [x y z]); - assert (isequal (omega, [0; 0; vorticity2d])) -***** error <3D vector> curl([sym(1) 2 3 4]) -***** error curl([sym(1) 2 3], {sym('x') sym('y') sym('z') sym('t')}) -8 tests, 8 passed, 0 known failure, 0 skipped -[inst/@sym/chol.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chol.m -***** error chol (sym ([1 2; 3 4])); -***** error chol (sym ([1 2; 3 4; 5 6])); -***** test - A = chol(hilb(sym(2))); - B = [[1 0]; sym(1)/2 sqrt(sym(3))/6]; - assert( isequal( A, B )) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/nnz.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nnz.m -***** assert (nnz (sym ([1])) == 1) -***** assert (nnz (sym ([0])) == 0) -***** assert (nnz (sym ([])) == 0) -***** assert (nnz (sym ([1 0; 0 3])) == 2) -***** test - syms x - assert (nnz ([x 0]) == 1) -***** assert (nnz (sym (true)) == 1) -***** assert (nnz (sym (false)) == 0) -***** assert (nnz (sym (inf)) == 1) -***** assert (nnz (sym (nan)) == 1) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/besselyn.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselyn.m +[inst/@sym/mod.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mod.m +***** error mod (sym(1), 2, 3 ,4) +***** assert (isequal (mod (sym(5), 4), sym(1))) +***** assert (isequal (mod ([sym(5) 8], 4), [1 0] )) +***** assert (isequal (mod (sym(5), [2 3]), [1 2] )) +***** assert (isequal (mod ([sym(5) sym(6)], [2 3]), [1 0] )) ***** test - % roundtrip syms x - A = double(besselyn(sym(2), sym(10))); - q = besselyn(sym(2), x); - h = function_handle(q); - B = h(10); - assert (abs (A - B) <= eps) -***** error yn(sym('x')) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/private_disp_name.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/private_disp_name.m + assert (isequal ( mod (5*x, 3), 2*x )) ***** test syms x - s = private_disp_name(x, 'x'); - assert (strcmp (s, 'x')) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/prod.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/prod.m -***** error prod (sym(1), 2, 3) -***** error prod (sym(1), 42) -***** shared x,y,z - syms x y z -***** assert (isequal (prod (x), x)) -***** assert (isequal (prod ([x y z]), x*y*z)) -***** assert (isequal (prod ([x; y; z]), x*y*z)) -***** assert (isequal (prod ([x y z], 1), [x y z])) -***** assert (isequal (prod ([x y z], 2), x*y*z)) -***** shared a,b - b = [1 2; 3 4]; a = sym(b); -***** assert (isequal (prod(a), prod(b))) -***** assert (isequal (prod(a,1), prod(b,1))) -***** assert (isequal (prod(a,2), prod(b,2))) -***** test - % weird inputs - a = prod('xx', sym(1)); - assert (isequal (a, sym('xx'))) -11 tests, 11 passed, 0 known failure, 0 skipped -[inst/@sym/columns.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/columns.m -***** test - a = sym([1 2 3]); - assert (columns(a) == 3) -***** test - a = sym([1; 2]); - assert (columns(a) == 1) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/unique.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/unique.m -***** test - A = sym([1 2 3 3 5 3 2 6 5]); - B = sym([1 2 3 5 6]); - assert (isequal (unique(A), B)) + a = [7*x^2 + 3*x + 3 3*x; 13*x^4 6*x]; + assert (isequal ( mod (a,3), [x^2 0; x^4 0] )) ***** test + % vector of polys with mix of vars: symvar on each syms x y - A = [1 2 3 3 4 5 5 6 7 7 x x y y]; - B = [1 2 3 4 5 6 7 x y]; - assert (isequal (unique(A), B)) + a = [6*x 7*y]; + b = mod(a, 4); + c = [2*x 3*y]; + assert (isequal (b, c)) ***** test + % coeff has variable syms x - assert (isequal (unique(x), x)) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/hilb.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hilb.m -***** test - A = hilb (sym(3)); - B = [sym(1) sym(1)/2 sym(1)/3; sym(1)/2 sym(1)/3 sym(1)/4; sym(1)/3 sym(1)/4 sym(1)/5]; - assert (isequal (A, B)) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/cond.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cond.m -***** test - A = [1 2; 3 4]; - B = sym(A); - k1 = cond(A); - k2 = cond(B); - k3 = double(k2); - assert (k1 - k3 <= 100*eps) -***** test - % matrix with symbols - syms x positive - A = [x 0; sym(0) 2*x]; - k1 = cond(A); - assert (isequal (k1, sym(2))) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/hessian.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hessian.m -***** error hessian (sym(1), 2, 3) -***** error hessian ([sym(1) sym(2)]) -***** shared x,y,z - syms x y z -***** test - % 1D - f = x^2; - assert (isequal (hessian(f), diff(f,x,x))) - assert (isequal (hessian(f,{x}), diff(f,x,x))) - assert (isequal (hessian(f,x), diff(f,x,x))) -***** test - % const - f = sym(1); - g = sym(0); - assert (isequal (hessian(f), g)) - assert (isequal (hessian(f,x), g)) -***** test - % double const - f = 1; - g = sym(0); - assert (isequal (hessian(f,x), g)) -***** test - % linear - f = 42*x; - g = sym(0); - assert (isequal (hessian(f), g)) - assert (isequal (hessian(f,x), g)) -***** test - % linear - f = 42*x - sym('a')*y; - g = [0 0; 0 0]; - assert (isequal (hessian(f, {x y}), g)) + n = sym('n', 'integer'); + p = (3*n + 2)*x; + q = mod(p, 3); + assert (isequal (q, 2*x)) ***** test - % 2d - f = x*cos(y); - g = [0 -sin(y); -sin(y) -f]; - assert (isequal (hessian(f), g)) - assert (isequal (hessian(f, {x y}), g)) + % coeff has variable + syms x a + p = a*x; + q = mod(p, 3); + q = children(q); + q = q(2); % order might be fragile! + w = subs(q, a, 5); + assert (isequal (w, 2)) ***** test - % 3d - f = x*cos(z); - Hexp = [0 0 -sin(z); sym(0) 0 0; -sin(z) 0 -f]; - H = hessian(f, {x y z}); - assert (isequal (H, Hexp)) -9 tests, 9 passed, 0 known failure, 0 skipped + % different modulo + syms x y + q = mod([5*x + 10 5*y + 10], [2 3]); + assert (isequal (q, [x 2*y + 1])) +11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/chebyshevU.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chebyshevU.m ***** error chebyshevU (sym(1)) @@ -9845,549 +10449,188 @@ B = chebyshevU (1.1, 2.2); assert (A, B) 8 tests, 8 passed, 0 known failure, 0 skipped -[inst/@sym/taylor.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/taylor.m -***** test - syms x - f = exp(x); - expected = 1 + x + x^2/2 + x^3/6 + x^4/24 + x^5/120; - assert (isequal (taylor(f), expected)) - assert (isequal (taylor(f,x), expected)) - assert (isequal (taylor(f,x,0), expected)) -***** test - syms x - f = exp(x); - expected = 1 + x + x^2/2 + x^3/6 + x^4/24; - assert (isequal (taylor(f,'order',5), expected)) - assert (isequal (taylor(f,x,'order',5), expected)) - assert (isequal (taylor(f,x,0,'order',5), expected)) -***** test - % key/value ordering doesn't matter - syms x - f = exp(x); - g1 = taylor(f, 'expansionPoint', 1, 'order', 3); - g2 = taylor(f, 'order', 3, 'expansionPoint', 1); - assert (isequal (g1, g2)) -***** test - syms x - f = x^2; - assert (isequal (taylor(f,x,0,'order',0), 0)) - assert (isequal (taylor(f,x,0,'order',1), 0)) - assert (isequal (taylor(f,x,0,'order',2), 0)) - assert (isequal (taylor(f,x,0,'order',3), x^2)) - assert (isequal (taylor(f,x,0,'order',4), x^2)) -***** test - syms x y - f = exp(x)+exp(y); - expected = 2 + x + x^2/2 + x^3/6 + x^4/24 + y + y^2/2 + y^3/6 + y^4/24; - assert (isAlways(taylor(f,[x,y],'order',5)== expected)) - assert (isAlways(taylor(f,[x,y],[0,0],'order',5) == expected)) -***** test - % key/value ordering doesn't matter - syms x - f = exp(x); - g1 = taylor(f, 'expansionPoint', 1, 'order', 3); - g2 = taylor(f, 'order', 3, 'expansionPoint', 1); - assert (isequal (g1, g2)) -***** test - syms x - f = x^2; - assert (isequal (taylor(f,x,0,'order',0), 0)) - assert (isequal (taylor(f,x,0,'order',1), 0)) - assert (isequal (taylor(f,x,0,'order',2), 0)) - assert (isequal (taylor(f,x,0,'order',3), x^2)) - assert (isequal (taylor(f,x,0,'order',4), x^2)) -***** test - % syms for a and order - syms x - f = x^2; - assert (isequal (taylor(f,x,sym(0),'order',sym(2)), 0)) - assert (isequal (taylor(f,x,sym(0),'order',sym(4)), x^2)) -***** test - syms x y - f = exp (x^2 + y^2); - expected = 1+ x^2 +y^2 + x^4/2 + x^2*y^2 + y^4/2; - assert (isAlways(taylor(f,[x,y],'order',5)== expected)) - assert (isAlways(taylor(f,[x,y],'expansionPoint', [0,0],'order',5) == expected)) -***** test - syms x y - f = sqrt(1+x^2+y^2); - expected = 1+ x^2/2 +y^2/2 - x^4/8 - x^2*y^2/4 - y^4/8; - assert (isAlways(taylor(f,[x,y],'order',6)== expected)) - assert (isAlways(taylor(f,[x,y],'expansionPoint', [0,0],'order',5) == expected)) -***** test - syms x y - f = sin (x^2 + y^2); - expected = sin(sym(1))+2*cos(sym(1))*(x-1)+(cos(sym(1))-2*sin(sym(1)))*(x-1)^2 + cos(sym(1))*y^2; - assert (isAlways(taylor(f,[x,y],'expansionPoint', [1,0],'order',3) == expected)) -***** test - % key/value ordering doesn't matter - syms x y - f = exp(x+y); - g1 = taylor(f, 'expansionPoint',1, 'order', 3); - g2 = taylor(f, 'order', 3, 'expansionPoint',1); - assert (isAlways(g1== g2)) -***** test - syms x y - f = x^2 + y^2; - assert (isAlways(taylor(f,[x,y],[0,0],'order',0)== sym(0) )) - assert (isAlways(taylor(f,[x,y],[0,0],'order',1)== sym(0) )) - assert (isAlways(taylor(f,[x,y],[0,0],'order',2)== sym(0) )) - assert (isAlways(taylor(f,[x,y],[0,0],'order',3)== sym(x^2 + y^2))) - assert (isAlways(taylor(f,[x,y],[0,0],'order',4)== sym(x^2 + y^2))) -***** test - % expansion point - syms x a - f = x^2; - g = taylor(f,x,2); - assert (isequal (simplify(g), f)) - assert (isequal (g, 4*x+(x-2)^2-4)) - g = taylor(f,x,a); - assert (isequal (simplify(g), f)) -***** test - % wrong order-1 series with nonzero expansion pt: - % upstream bug https://github.com/sympy/sympy/issues/9351 - syms x - g = x^2 + 2*x + 3; - h = taylor (g, x, 4, 'order', 1); - assert (isequal (h, 27)) -***** test - syms x y z - g = x^2 + 2*y + 3*z; - h = taylor (g, [x,y,z], 'order', 4); - assert (isAlways(h == g)) ; -***** test - syms x y z - g = sin(x*y*z); - h = taylor (g, [x,y,z], 'order', 4); - assert (isAlways(h == x*y*z)) ; -***** error - syms x y - taylor(0, [x, y], [1, 2, 3]); -18 tests, 18 passed, 0 known failure, 0 skipped -[inst/@sym/ismember.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ismember.m -***** assert (ismember (2, interval(sym(0),2))) -***** assert (~ismember (3, interval(sym(0),2))) -***** test - % something in a matrix - syms x - A = [1 x; sym(pi) 4]; - assert (ismember (sym(pi), A)) - assert (ismember (x, A)) - assert (~ismember (2, A)) -***** test - % set - syms x - S = finiteset(2, sym(pi), x); - assert (ismember (x, S)) -***** test - % set with positive symbol - syms p positive - S = finiteset(2, sym(pi), p); - assert (~ismember (-1, S)) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/matlabFunction.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/matlabFunction.m +[inst/@sym/divisors.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/divisors.m ***** test - % autodetect inputs - syms x y - s = warning('off', 'OctSymPy:function_handle:nocodegen'); - h = matlabFunction(2*x*y, x+y); - warning(s) - [t1, t2] = h(3,5); - assert(t1 == 30 && t2 == 8) + assert( isequal( divisors(sym(150)), divisors(sym(-150)) )) 1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/length.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/length.m -***** test - a = sym([1 2 3]); - assert(length(a) == 3); -***** test - % 2D array - a = sym([1 2 3; 4 5 6]); - assert(length(a) == 3); -***** test - % empty - a = sym([]); - assert(length(a) == 0); -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/lu.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lu.m -***** test - % scalar - [l, u, p] = lu(sym(6)); - assert (isequal (l, sym(1))) - assert (isequal (u, sym(6))) - assert (isequal (p, sym(1))) - syms x - [l, u, p] = lu(x); - assert (isequal (l*u, p*x)) - [l, u] = lu(x); - assert (isequal (l*u, x)) -***** test - % perm - A = sym(fliplr(2*eye(3))); - [L, U, P] = lu(A); - assert (isequal (L*U, P*A)) - [L, U, P] = lu(A, 'matrix'); - assert (isequal (L*U, P*A)) - [L, U, p] = lu(A, 'vector'); - assert (isequal (L*U, A(p,:))) - [L, U] = lu(A); - assert (isequal (L*U, A)) -***** test - % p is col vectpr - A = sym([0 2; 3 4]); - [L, U, p] = lu(A, 'vector'); - assert(iscolumn(p)) -***** test - % simple matrix - A = [1 2; 3 4]; - B = sym(A); - [L, U, P] = lu(B); - assert (isequal (L*U, P*B)) - assert (isequal (U(2,1), sym(0))) - % needs pivot - A = [0 2; 3 4]; - B = sym(A); - [L, U, P] = lu(B); - [Ld, Ud, Pd] = lu(A); - assert (isequal (L*U, P*A)) - assert (isequal (U(2,1), sym(0))) - % matches regular LU - assert ( max(max(double(L)-Ld)) <= 10*eps) - assert ( max(max(double(U)-Ud)) <= 10*eps) - assert ( isequal (P, Pd)) -***** test - % rectangular - A = sym([1 2; 3 4; 5 6]); - [L, U] = lu (A); - assert (isequal (L*U, A)) -***** test - % rectangular - A = sym([1 2 3; 4 5 6]); - [L, U] = lu (A); - assert (isequal (L*U, A)) -***** test - % rectangular, repeated row - A = sym([1 2 3; 2 4 6]); - [L, U] = lu (A); - assert (isequal (L*U, A)) -***** test - % rectangular, needs permutation - A = sym([0 0 0; 1 2 3]); - [L, U] = lu (A); - assert (isequal (L*U, A)) - assert (~isequal (tril (L), L)) - [L, U, P] = lu (A); - assert (isequal (L*U, P*A)) - assert (isequal (tril (L), L)) -8 tests, 8 passed, 0 known failure, 0 skipped -[inst/@sym/cross.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cross.m -***** error cross (sym(1), 2, 3) -***** test - a = sym([1; 0; 0]); - b = sym([0; 1; 0]); - c = cross(a, b); - assert (isequal (c, sym([0; 0; 1]))) -***** test - syms x - a = sym([x; 0; 0]); - b = sym([0; 1; 0]); - c = cross(a, b); - assert (isequal (c, sym([0; 0; x]))) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/sech.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sech.m -***** error sech (sym(1), 2) -***** assert (isequaln (sech (sym(nan)), sym(nan))) +[inst/@sym/sinh.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinh.m +***** error sinh (sym(1), 2) +***** assert (isequaln (sinh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = sech(x); - f2 = sech(d); + f1 = sinh(x); + f2 = sinh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = sech(A); - f2 = sech(D); + f1 = sinh(A); + f2 = sinh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = sech (d); - f = sech (y); + A = sinh (d); + f = sinh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/colon.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/colon.m +[inst/@sym/log2.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log2.m +***** assert (isequal (log2 (sym (1024)), sym (10))) +***** assert (isequal (log2 (sym ([2 16; 32 1])), sym ([1 4; 5 0]))) ***** test - a = sym(1):5; - b = sym(1:5); - assert(isequal(a,b)); - a = 1:sym(5); - b = sym(1:5); - assert(isequal(a,b)); + % round-trip + syms x + f = log2 (x); + h = function_handle (f); + A = h (1.1); + B = log2 (1.1); + assert (A, B, -5*eps) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/pinv.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/pinv.m ***** test - a = 2:sym(2):8; - b = sym(2:2:8); - assert(isequal(a,b)); + % scalar + syms x + assert (isequal (pinv(x), 1/x)) ***** test - a = sym(10):-2:-4; - b = sym(10:-2:-4); - assert(isequal(a,b)); + % 2x3 + A = [1 2 3; 4 5 6]; + assert (max (max (abs (double (pinv (sym (A))) - pinv(A)))) <= 10*eps) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/cosd.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosd.m +***** error cosd (sym(1), 2) +***** assert (isequaln (cosd (sym(nan)), sym(nan))) ***** test - % symbolic intervals - p = sym(pi); - L = 0:p/4:p; - assert(isa(L,'sym')); - assert(isequal(L, [0 p/4 p/2 3*p/4 p])); + f1 = cosd (sym(1)); + f2 = cosd (1); + assert (double (f1), f2, -eps) ***** test - % mixed symbolic and double intervals - p = sym(pi); - s = warning ('off', 'OctSymPy:sym:rationalapprox'); - L = 0.1:(sym(pi)/3):2.3; - warning(s) - assert(isa(L,'sym')); - t = sym(1)/10; - assert(isequal(L, [t p/3+t 2*p/3+t])); -***** error syms x; a = 0:x; -***** error syms x; a = 1:x; -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/factorial.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/factorial.m -***** error factorial (sym(1), 2) + D = [10 30; 110 -45]; + A = sym(D); + f1 = cosd (A); + f2 = cosd (D); + assert (double (f1), f2, -4*eps) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/cosint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosint.m +***** error cosint (sym(1), 2) ***** xtest - assert (isequaln (factorial (sym(nan)), sym(nan))) + assert (isequaln (cosint (sym(nan)), sym(nan))) !!!!! known failure -assert (isequaln (factorial (sym (nan)), sym (nan))) failed +assert (isequaln (cosint (sym (nan)), sym (nan))) failed ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = factorial(x); - f2 = factorial(d); + f1 = cosint(x); + f2 = 0.3374039229009681346626; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = factorial(A); - f2 = factorial(D); + f1 = cosint(A); + f2 = 0.3374039229009681346626; + f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = factorial (d); - f = factorial (y); + A = cosint (d); + f = cosint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) -5 tests, 4 passed, 1 known failure, 0 skipped -[inst/@sym/atand.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atand.m -***** error atand (sym(1), 2) -***** assert (isequaln (atand (sym(nan)), sym(nan))) -***** test - f1 = atand (sym(1)/2); - f2 = atand (1/2); - assert (double (f1), f2, -eps) -***** test - D = [1 2; 3 4]/4; - A = sym([1 2; 3 4])/4; - f1 = atand (A); - f2 = atand (D); - assert (double (f1), f2, -eps) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/collect.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/collect.m -***** test syms x y z - f = [x*y + x - 3 + 2*x^2 - z*x^3 + x^3]; - assert (logical (collect (f,x) == ((x^3)*(1 - z) + 2*(x^2) + x*(y + 1) - 3))) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/max.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/max.m -***** test - % simple - assert (isequal (max([sym(10) sym(11)]), sym(11))) -***** test - syms x y - assert (isequal (children (max (x, y)), [x y])) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/ifourier.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ifourier.m -***** error ifourier (sym(1), 2, 3, 4) -***** test - % matlab SMT compat - syms t r u x w - Pi=sym('pi'); - assert(logical( ifourier(exp(-abs(w))) == 1/(Pi*(x^2 + 1)) )) - assert(logical( ifourier(exp(-abs(x))) == 1/(Pi*(t^2 + 1)) )) - assert(logical( ifourier(exp(-abs(r)),u) == 1/(Pi*(u^2 + 1)) )) - assert(logical( ifourier(exp(-abs(r)),r,u) == 1/(Pi*(u^2 + 1)) )) -***** test - % basic - syms x w - Pi=sym('pi'); - assert(logical( ifourier(exp(-w^2/4)) == 1/(sqrt(Pi)*exp(x^2)) )) - assert(logical( ifourier(sqrt(Pi)/exp(w^2/4)) == exp(-x^2) )) -***** test - % Dirac delta tests - syms x w - Pi=sym('pi'); - assert(logical( ifourier(dirac(w-2)) == exp(2*1i*x)/(2*Pi) )) - assert (logical( ifourier(sym(2), w, x) == 2*dirac(x) )) -***** test - % advanced test - syms x w c d - Pi=sym('pi'); - f=(Pi*(dirac(x-c)+dirac(x+c))+2*Pi*1i*(-dirac(x+3*d)+dirac(x-3*d))+2/(x^2+1))/(2*Pi); - assert(logical( simplify(ifourier(cos(c*w)+2*sin(3*d*w)+exp(-abs(w)))-f) == 0 )) -***** xtest - % Inverse Fourier transform cannot recover non-smooth functions - % SymPy cannot evaluate correctly?? - syms x w - assert(logical( ifourier(2/(w^2 + 1)) == exp(-abs(x)) )) - assert(logical( ifourier(2/(w^2 + 1)) == heaviside(x)/exp(x) + heaviside(-x)*exp(x) )) - assert(logical( ifourier(-(w*4)/(w^4 + 2*w^2 + 1) )== -x*exp(-abs(x))*1i )) - assert(logical( ifourier(-(w*4)/(w^4 + 2*w^2 + 1) )== -x*(heaviside(x)/exp(x) + heaviside(-x)*exp(x))*1i )) -!!!!! known failure -assert (logical (ifourier (2 / (w ^ 2 + 1)) == exp (-abs (x)))) failed -***** error ifourier (sym('k', 'positive')*sym('k')) -***** test - % SMT compact, prefers k over symvar - syms k x y - assert (isequal (ifourier(y*exp(-k^2/4)), y/sqrt(sym(pi))*exp(-x^2))) -8 tests, 7 passed, 1 known failure, 0 skipped -[inst/@sym/orth.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/orth.m -***** test - A = [1 2; 3 6]; - K = orth(A); - L = orth(sym(A)); - assert (isequal (size(L), [2 1])) - dif1 = abs (double(L) - K); - dif2 = abs (double(L) + K); - assert (all (dif1 < 1e-15) || all (dif2 < 1e-15)) -***** test - A = [1; 3]; - K = orth(A); - L = orth(sym(A)); - assert (isequal (size(L), [2 1])) - dif1 = abs (double(L) - K); - dif2 = abs (double(L) + K); - assert (all (dif1 < 1e-16) || all (dif2 < 1e-16)) ***** test - A = sym([1 2; 3 4]); - L = orth(sym(A)); - assert (isequal (size(L), [2 2])) - v = L(:, 1); - w = L(:, 2); - assert (isAlways (v' * v == 1)) - assert (isAlways (w' * w == 1)) - assert (isAlways (v' * w == 0)) + % rewrite + syms x + y1 = cosint (x); + y2 = rewrite (y1, 'Integral'); + d1 = diff (y1, x); + d2 = diff (y2, x); + assert (isequal (d1, simplify(d2))) + v1 = double (subs (d1, x, 2)); + v2 = double (subs (d2, x, 2)); + assert (v1, v2, -eps) +6 tests, 5 passed, 1 known failure, 0 skipped +[inst/@sym/hypergeom.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hypergeom.m +***** assert (isequal (double (hypergeom ([1, 2], [2, 3], sym(0))), 1)) ***** test - A = sym([1 1; 1 0; 1 0]); - L = orth(sym(A)); - assert (isequal (size(L), [3 2])) - v = L(:, 1); - w = L(:, 2); - assert (isAlways (v' * v == 1)) - assert (isAlways (w' * w == 1)) - assert (isAlways (v' * w == 0)) - % y and z components must be equal - assert (isAlways (v(2) == v(3))) - assert (isAlways (w(2) == w(3))) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/mpower.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mpower.m + % matrix input + syms z + a = sym([1 2]); + b = sym([3 4]); + A = hypergeom (a, b, [0 sym(1); 2 z]); + B = [hypergeom(a,b,0) hypergeom(a,b,1); hypergeom(a,b,2) hypergeom(a,b,z)]; + assert (isequal (A, B)) ***** test + % scalars for a and/or b + syms z + assert (isequal (hypergeom(1, 2, z), hypergeom({sym(1)}, {sym(2)}, z))) + assert (isequal (hypergeom([1 2], 3, z), hypergeom([1 2], {sym(3)}, z))) + assert (isequal (hypergeom(1, [2 3], z), hypergeom({sym(1)}, [2 3], z))) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/simplify.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/simplify.m +***** shared x,p,q syms x - assert(isequal(x^(sym(4)/5), x.^(sym(4)/5))) -***** test - % integer powers of scalars + p = x^2 + x + 1; + q = horner (p); +***** assert(~isequal( p - q, 0)) +***** assert(isequal( simplify(p - q), 0)) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/chebyshevT.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chebyshevT.m +***** error chebyshevT (sym(1)) +***** error chebyshevT (sym(1), 2, 3) +***** assert (isequaln (chebyshevT (2, sym(nan)), sym(nan))) +***** shared x syms x - assert (isequal (x^2, x*x)) - assert (isequal (x^sym(3), x*x*x)) -***** test - % array ^ integer - syms x y - A = [x 2; y 4]; - assert (isequal (A^2, A*A)) - assert (isequal (simplify(A^3 - A*A*A), [0 0; 0 0])) +***** assert(isequal(chebyshevT(0, x), sym(1))) +***** assert(isequal(chebyshevT(1, x), x)) +***** assert(isequal(chebyshevT(2, x), 2*x*x - 1)) +***** assert(isequal(chebyshevT([0 1 2], x), [sym(1) x (2*x*x-1)])) ***** test - % array ^ rational - Ad = [1 2; 0 3]; - A = sym(Ad); - B = A^(sym(1)/3); - Bd = Ad^(1/3); - assert (max(max(abs(double(B) - Bd))) < 1e-14) + % round trip + syms n z + f = chebyshevT (n, z); + h = function_handle (f, 'vars', [n z]); + A = h (1.1, 2.2); + B = chebyshevT (1.1, 2.2); + assert (A, B) +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/@sym/fresnelc.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fresnelc.m +***** error fresnelc (sym(1), 2) ***** test - % non-integer power - A = sym([1 2; 0 3]); - B = A^pi; - C = [1 -1+3^sym(pi); 0 sym(3)^pi]; - assert (isequal (B, C)) + a = fresnelc(sym(0)); + assert (isequal (a, sym(0))) ***** test - % matpow - syms n - A = sym([1 2; 3 4]); - B = A^n; - C = 10 + B + B^2; - D = subs(C, n, 1); - E = 10 + A + A^2; - assert (isequal (simplify(D), simplify(E))) + b = fresnelc(sym('oo')); + assert (isequal (b, sym(1)/2)) ***** test - % matpow, sub in zero gives identity - A = sym([1 2; 0 3]); - syms n; - B = A^n; - C = subs(B, n, 1); - assert (isequal (C, A)) - C = subs(B, n, 0); - assert (isequal (C, sym(eye(2)))) -***** xtest - % scalar^array (e.g., defined by matrix exponential) not implemented in SymPy? - % on 1.0 < SymPy <= 1.5.1, you can form the expression but still cannot eval + % values in a matrix syms x - A = [1 2; 3 4]; - B = x^A; - assert (strcmp (regexprep (disp (B, 'flat'), '\s+', ''), 'x**Matrix([[1,2],[3,4]])')) - % sub in and compare to double - Bs = subs(B, x, sym(3)/2); - D1 = double(Bs); - D2 = (3/2)^[1 2; 3 4]; - assert (max(max(abs(D1 - D2))) < 1e-14) -!!!!! known failure -Python exception: TypeError: unsupported operand type(s) for ** or pow(): 'Symbol' and 'MutableDenseMatrix' - occurred at line 2 of the Python code block: - return x**y -***** error - A = sym([1 2; 3 4]); - B = A^A; -9 tests, 8 passed, 1 known failure, 0 skipped -[inst/@sym/has.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/has.m -***** shared A, x, y - syms x y - A = [sym(pi) 2*sym(pi); x*y x+y]; -***** assert (isequal (has(A, x), [false false; true true])); -***** assert (isequal (has(A, x+y), [false false; false true])); -***** assert (isequal (has(A, 2), [false true; false false])); -***** assert (isequal (has(A, sym(pi)), [true true; false false])); -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/formula.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/formula.m + a = fresnelc([sym(0) sym('oo') x 1]); + b = [sym(0) sym(1)/2 fresnelc(x) fresnelc(sym(1))]; + assert (isequal (a, b)) ***** test + % round trip syms x - assert (isequal (formula(x), x)) - assert (isequal (formula(2*x), 2*x)) -1 test, 1 passed, 0 known failure, 0 skipped + f = fresnelc (x); + h = function_handle (f); + A = h (1.1); + B = fresnelc (1.1); + assert (A, B) +5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/repmat.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/repmat.m ***** test @@ -10416,74 +10659,28 @@ A = repmat(sym(pi), [2 0]); assert (isequal (size(A), [2 0])) 4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/mldivide.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mldivide.m -***** test - % scalar - syms x - assert (isa( x\x, 'sym')) - assert (isequal( x\x, sym(1))) - assert (isa( 2\x, 'sym')) - assert (isa( x\2, 'sym')) -***** test - % scalar \ matrix: easy, no system - D = 2*[0 1; 2 3]; - A = sym(D); - assert (isequal ( 2 \ A , D/2 )) - assert (isequal ( sym(2) \ A , D/2 )) -***** test - % singular matrix - A = sym([1 2; 2 4]); - b = sym([5; 10]); - x = A \ b; - syms c1 - y = [-2*c1 + 5; c1]; - assert (isequal (x, y)) -***** test - % singular matrix, mult RHS - A = sym([1 2; 2 4]); - B = sym([[5; 10] [0; 2] [0; 0]]); - x = A \ B; - syms c1 c5 - y = [-2*c1 + 5 nan -2*c5; c1 nan c5]; - assert (isequaln (x, y)) -***** warning - % vpa, nearly singular matrix - A = sym([1 2; 2 4]); - A(1,1) = vpa('1.001'); - b = sym([1; 2]); - x = A \ b; - y = [sym(0); vpa('0.5')]; - assert (isequal (x, y)) -***** warning - % vpa, singular rhs - A = sym([1 2; 2 4]); - b = [vpa('1.01'); vpa('2')]; - x = A \ b; - assert (all(isnan(x))) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/erf.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erf.m -***** error erf (sym(1), 2) -***** assert (isequaln (erf (sym(nan)), sym(nan))) +[inst/@sym/acosh.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acosh.m +***** error acosh (sym(1), 2) +***** assert (isequaln (acosh (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = erf(x); - f2 = erf(d); + f1 = acosh(x); + f2 = acosh(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = erf(A); - f2 = erf(D); + f1 = acosh(A); + f2 = acosh(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = erf (d); - f = erf (y); + A = acosh (d); + f = acosh (y); h = function_handle (f); B = h (d); assert (A, B, -eps) @@ -10503,319 +10700,12 @@ ***** error isprime(sym('x')); 9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/jordan.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/jordan.m -***** test - % basic - A = sym ([2 1 0 0; 0 2 1 0; 0 0 3 0; 0 1 -1 3]); - [V, J] = jordan (A); - assert (isequal (inv (V) * A * V, J)); - assert (isequal (J, sym ([2 1 0 0; 0 2 0 0; 0 0 3 0; 0 0 0 3]))) - % the first 2 generalized eigenvectors form a cycle - assert (isequal ((A - J(1, 1) * eye (4)) * V(:, 1), zeros (4, 1))); - assert (isequal ((A - J(2, 2) * eye (4)) * V(:, 2), V(:, 1))); - % the last 2 generalized eigenvectors are eigenvectors - assert (isequal ((A - J(3, 3) * eye (4)) * V(:, 3), zeros (4, 1))); - assert (isequal ((A - J(4, 4) * eye (4)) * V(:, 4), zeros (4, 1))); -***** test - % scalars - assert (isequal (jordan (sym (-10)), sym (-10))); - assert (isequal (jordan (sym ('x')), sym ('x'))); -***** test - % diagonal matrices - A = diag (sym ([6 6 7])); - [V1, D] = eig (A); - [V2, J] = jordan (A); - assert (isequal (V1, V2)); - assert (isequal (D, J)); -***** test - % matrices of unknown entries - A = [sym('a') sym('b'); sym('c') sym('d')]; - [V, D] = eig (A); - J = jordan (A); - assert (isequal (simplify (D), simplify (J))); -***** test - % matrices of mixed entries - A = [sym('x')+9 sym('y'); sym(0) 6]; - [V, D] = eig (A); - J = jordan (A); - assert (isequal (simplify (D), simplify (J))); -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/besselj.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselj.m -***** test - X = [1 2 3; 4 5 6]; - ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; - n = double(ns); - A = double(besselj(ns, X)); - B = besselj(n, X); - assert (all (all (abs (A - B) < 50*eps*abs(A)))) -***** test - % roundtrip - syms x - A = besselj(2, 10); - q = besselj(2, x); - h = function_handle(q); - B = h(10); - assert (abs (A - B) <= eps*abs(A)) -***** error besselj(sym('x')) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/heaviside.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/heaviside.m -***** error heaviside (sym(1), 2, 3) -***** assert (isequal (heaviside (sym(1)), sym(1))) -***** assert (isequal (heaviside (-sym(1)), sym(0))) -***** assert (double (heaviside (1)), heaviside (1)) -***** test - D = [1 -1; -10 20]; - A = sym(D); - assert (double (heaviside (A)), heaviside (D)) -***** test - H0 = sym([1 -2 0; 3 0 pi]); - A = heaviside (sym(0), H0); - assert (isequal (A, H0)) -***** test - A = heaviside ([-1 0 1], sym(1)/2); - assert (isequal (A, [0 sym(1)/2 1])) -***** test - A = heaviside ([-1 0 1], sym(1)/2); - assert (isequal (A, [0 sym(1)/2 1])) -***** assert (isequaln (heaviside (sym(nan)), sym(nan))) -***** test - assert (isequaln (heaviside (sym(nan), sym(nan)), sym(nan))) - assert (isequaln (heaviside (0, sym(nan)), sym(nan))) - assert (isequaln (heaviside (2, sym(nan)), sym(1))) - assert (isequaln (heaviside (-2, sym(nan)), sym(0))) -***** test - % round trip - syms x - A = heaviside (1); - f = heaviside (x); - h = function_handle (f); - B = h (1); - assert (A, B, -eps) -***** test - % round trip - syms x h0 - f = heaviside (x, h0); - h = function_handle (f, 'vars', {x h0}); - A = heaviside (1, 1/2); - B = h (1, 1/2); - assert (A, B, -eps) - A = heaviside (0, 1/2); - B = h (0, 1/2); - assert (A, B, -eps) -12 tests, 12 passed, 0 known failure, 0 skipped -[inst/@sym/fliplr.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fliplr.m -***** test - % simple - syms x - A = [x 2; sym(pi) x]; - B = [2 x; x sym(pi)]; - assert (isequal (fliplr(A), B)) -***** test - % simple, odd # cols - syms x - A = [x 2 sym(pi); x 1 2]; - B = [sym(pi) 2 x; 2 1 x]; - assert (isequal (fliplr(A), B)) -***** test - % scalar - syms x - assert (isequal (fliplr(x), x)) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/resize.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/resize.m -***** test - B = sym([1 0 0; 0 0 0]); - assert (isequal (resize (sym(1), 2, 3), B)) - assert (isequal (resize (sym(1), [2 3]), B)) -***** test - B = sym([1 0; 0 0]); - assert (isequal (resize (sym(1), 2), B)) -***** test - A = sym([pi 2; 3 4]); - assert (isequal (resize (A, 1), sym(pi))) -***** assert (isequal (size (resize (sym(1), 0, 0)), [0 0])) -***** assert (isequal (size (resize (sym(1), 6, 0)), [6 0])) -***** assert (isequal (size (resize (sym(1), 0, 3)), [0 3])) -***** error resize (sym(1)) -***** error resize (sym(1), 2, 3, 4) -***** error resize (sym(1), [2 3 4]) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/horner.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/horner.m -***** error horner (sym(1), 2, 3) -***** assert (isAlways (horner(sym(1)) == 1)) -***** test - syms x - assert (isAlways (horner(x) == x)) -***** test - syms x a - p = a^2 + a*x + 2*a + 2*x; - assert (isequal (horner (p, a), a*(a+x+2) + 2*x)) - q = a^2 + 2*a + x*(a + 2); - assert (isequal (horner (p, x), q)) - assert (isequal (horner (p), q)) -***** test - syms x - p = poly2sym ([2 4 6 8], x); - q = horner (p); - assert (isAlways (p == q)) - assert (isAlways (horner(2*x^3 + 4*x^2 + 6*x + 8) == q)) -***** test - % non-sym input - syms x - assert (isequal (horner(6, x), sym(6))) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/degree.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/degree.m -***** error degree (sym(1), 2, 3) -***** test - syms x - assert (isequal (degree(x^3), 3)) - assert (isequal (degree(x^3 + 6), 3)) -***** test - % specify variable - syms x y - p = x^2 + y*x + 1; - assert (isequal (degree(p), 2)) - assert (isequal (degree(p, x), 2)) - assert (isequal (degree(p, y), 1)) -***** test - syms x a oo - assert (isequal (degree(x^3, a), 0)) - assert (isequal (degree(sym(1), a), 0)) - assert (isequal (degree(sym(0), a), -oo)) -***** xtest - % constant inputs - syms oo - assert (isequal (degree(sym(1)), 0)) - assert (isequal (degree(sym(0)), -oo)) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/erfinv.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfinv.m -***** error erfinv (sym(1), 2) -***** assert (isequaln (erfinv (sym(nan)), sym(nan))) -***** shared x, d - d = 1/2; - x = sym('1/2'); -***** test - f1 = erfinv(x); - f2 = erfinv(d); - assert( abs(double(f1) - f2) < 1e-15 ) -***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = erfinv(A); - f2 = erfinv(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) -***** test - % round trip - y = sym('y'); - A = erfinv (d); - f = erfinv (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/arg.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/arg.m +[inst/@sym/lgamma.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lgamma.m ***** test - syms x - assert (isequal (angle (x), arg (x))); + % tested by gammaln + assert (isequal (lgamma (sym ('x')), gammaln (sym ('x')))) 1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/conj.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/conj.m -***** test - a = sym(6); - b = sym(5i); - assert (isequal (conj(a), a)) - assert (isequal (conj(b), -b)) - assert (isequal (conj(a+b), a-b)) -***** test - syms x - assert (isequal (conj(conj(x)), x)) -***** test - syms x real - assert (isequal (conj(x), x)) -***** test - % array - syms x - A = [x 6+1i; sym(1) x+2i]; - B = [conj(x) 6-1i; sym(1) conj(x)-2i]; - assert (isequal (conj(A), B)) -***** test - % true/false - t = sym(true); - f = sym(false); - assert (isequal ( conj(t), t)) - assert (isequal ( conj(f), f)) -***** test - % round trip - syms x - d = 3 - 5i; - f = conj (x); - A = conj (d); - h = function_handle (f); - B = h (d); - assert (A, B) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/sinh.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sinh.m -***** error sinh (sym(1), 2) -***** assert (isequaln (sinh (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); -***** test - f1 = sinh(x); - f2 = sinh(d); - assert( abs(double(f1) - f2) < 1e-15 ) -***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = sinh(A); - f2 = sinh(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) -***** test - % round trip - y = sym('y'); - A = sinh (d); - f = sinh (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/minus.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/minus.m -***** test - % scalar - syms x - assert (isa (x-1, 'sym')) - assert (isa (x-x, 'sym')) - assert (isequal (x-x, sym(0))) -***** test - % matrices - D = [0 1; 2 3]; - A = sym(D); - DZ = D - D; - assert (isequal ( A - D , DZ )) - assert (isequal ( A - A , DZ )) - assert (isequal ( D - A , DZ )) - assert (isequal ( A - 2 , D - 2 )) - assert (isequal ( 4 - A , 4 - D )) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/rows.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rows.m -***** test - a = sym([1 2 3]); - assert (rows(a) == 1) -***** test - a = sym([1 2 3; 4 5 6]); - assert (rows(a) == 2) -2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/rdivide.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rdivide.m ***** test @@ -10852,6 +10742,109 @@ A = sym(D); assert (isequal ( 12./A , 12./D )) 5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/columns.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/columns.m +***** test + a = sym([1 2 3]); + assert (columns(a) == 3) +***** test + a = sym([1; 2]); + assert (columns(a) == 1) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/mpower.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mpower.m +***** test + syms x + assert(isequal(x^(sym(4)/5), x.^(sym(4)/5))) +***** test + % integer powers of scalars + syms x + assert (isequal (x^2, x*x)) + assert (isequal (x^sym(3), x*x*x)) +***** test + % array ^ integer + syms x y + A = [x 2; y 4]; + assert (isequal (A^2, A*A)) + assert (isequal (simplify(A^3 - A*A*A), [0 0; 0 0])) +***** test + % array ^ rational + Ad = [1 2; 0 3]; + A = sym(Ad); + B = A^(sym(1)/3); + Bd = Ad^(1/3); + assert (max(max(abs(double(B) - Bd))) < 1e-14) +***** test + % non-integer power + A = sym([1 2; 0 3]); + B = A^pi; + C = [1 -1+3^sym(pi); 0 sym(3)^pi]; + assert (isequal (B, C)) +***** test + % matpow + syms n + A = sym([1 2; 3 4]); + B = A^n; + C = 10 + B + B^2; + D = subs(C, n, 1); + E = 10 + A + A^2; + assert (isequal (simplify(D), simplify(E))) +***** test + % matpow, sub in zero gives identity + A = sym([1 2; 0 3]); + syms n; + B = A^n; + C = subs(B, n, 1); + assert (isequal (C, A)) + C = subs(B, n, 0); + assert (isequal (C, sym(eye(2)))) +***** xtest + % scalar^array (e.g., defined by matrix exponential) not implemented in SymPy? + % on 1.0 < SymPy <= 1.5.1, you can form the expression but still cannot eval + syms x + A = [1 2; 3 4]; + B = x^A; + assert (strcmp (regexprep (disp (B, 'flat'), '\s+', ''), 'x**Matrix([[1,2],[3,4]])')) + % sub in and compare to double + Bs = subs(B, x, sym(3)/2); + D1 = double(Bs); + D2 = (3/2)^[1 2; 3 4]; + assert (max(max(abs(D1 - D2))) < 1e-14) +!!!!! known failure +Python exception: TypeError: unsupported operand type(s) for ** or pow(): 'Symbol' and 'MutableDenseMatrix' + occurred at line 2 of the Python code block: + return x**y +***** error + A = sym([1 2; 3 4]); + B = A^A; +9 tests, 8 passed, 1 known failure, 0 skipped +[inst/@sym/fortran.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fortran.m +***** shared x,y,z + syms x y z +***** test + % basic test + f = x*sin(y) + abs(z); + source = fortran(f); + expected = ' x*sin(y) + abs(z)'; + s1 = strrep (expected, 'abs', 'Abs'); + assert (strcmp (source, expected) || strcmp (source, s1)) +***** test + % output test + f = x*sin(y) + abs(z); + [F,H] = fortran(f, 'file', '', 'show_header', false); + expected_h_code = sprintf('\ninterface\nREAL*8 function myfun(x, y, z)\nimplicit none\nREAL*8, intent(in) :: x\nREAL*8, intent(in) :: y\nREAL*8, intent(in) :: z\nend function\nend interface\n\n'); + expected_f_code = sprintf('\nREAL*8 function myfun(x, y, z)\nimplicit none\nREAL*8, intent(in) :: x\nREAL*8, intent(in) :: y\nREAL*8, intent(in) :: z\n\nmyfun = x*sin(y) + abs(z)\n\nend function\n'); + assert(strcmp(F.name, 'file.f90')) + assert(strcmp(H.name, 'file.h')) + %disp(expected_f_code); disp(F.code) + s1 = strrep (expected_f_code, 'abs', 'Abs'); + s2 = strrep (expected_f_code, sprintf ('\n'), sprintf ('\r\n')); + s3 = strrep (s2, 'abs', 'Abs'); + s4 = strrep (expected_h_code, sprintf ('\n'), sprintf ('\r\n')); + assert (strcmp (F.code, expected_f_code) || strcmp (F.code, s1) || strcmp (F.code, s2) || strcmp (F.code, s3)) + assert (strcmp (H.code, expected_h_code) || strcmp (H.code, s4)) +2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/asech.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asech.m ***** error asech (sym(1), 2) @@ -10878,24 +10871,6 @@ B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/signIm.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/signIm.m -***** assert (isequal (signIm (sym(1)), sym(0))) -***** assert (isequal (signIm (sym(1) + 2i), sym(1))) -***** assert (isequal (signIm (sym(1) - 2i), sym(-1))) -***** test - % intermediate A looks bit weird, but it works - syms z - A = signIm (z); - assert (isequal (subs(A, z, 3+sym(4i)), sym(1))) - assert (isequal (subs(A, z, 3-sym(4i)), sym(-1))) -***** test - % really a @sym/sign test, but that one is autogen - z = 3 + sym(4i); - A = sign (z); - B = z / abs(z); - assert (double (A), double (B), eps) -5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/bernoulli.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/bernoulli.m ***** error bernoulli (sym(1), 2, 3) @@ -10930,491 +10905,275 @@ B = bernoulli (2, 2.2); assert (A, B) 9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/symreplace.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symreplace.m -***** test - % start with assumptions on x then remove them - syms x positive - f = x*10; - symreplace(x, sym('x')) - assert(isempty(assumptions(x))) -***** test - % replace x with y - syms x - f = x*10; - symreplace(x, sym('y')) - assert( isequal (f, 10*sym('y'))) -***** test - % gets inside cells - syms x - f = {x 1 2 {3 4*x}}; - symreplace(x, sym('y')) - syms y - assert( isequal (f{1}, y)) - assert( isequal (f{4}{2}, 4*y)) -***** test - % gets inside structs/cells - syms x - my.foo = {x 1 2 {3 4*x}}; - my.bar = x; - g = {'ride' my 'motor' 'sicle'}; - symreplace(x, sym('y')) - syms y - f = g{2}; - assert( isequal (f.foo{1}, y)) - assert( isequal (f.foo{4}{2}, 4*y)) - assert( isequal (f.bar, y)) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/isequal.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isequal.m -***** test - a = sym([1 2]); - b = a; - assert (isequal (a, b)) - b(1) = 42; - assert (~isequal (a, b)) -***** test - a = sym([1 2; 3 4]); - b = a; - assert (isequal (a, b)) - b(1) = 42; - assert (~isequal (a, b)) -***** test - a = sym([nan; 2]); - b = a; - assert (~isequal (a, b)) -***** test - % proper nan treatment - a = sym([nan 2; 3 4]); - b = a; - assert (~isequal (a, b)) -***** test - % more than two arrays - a = sym([1 2 3]); - b = a; - c = a; - assert (isequal (a, b, c)) - c(1) = 42; - assert (~isequal (a, b, c)) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/cat.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cat.m -***** test - % mostly tested in horzcat, vertcat: one for good measure - syms x - assert (isequal (cat(1, x, x), [x x])) - assert (isequal (cat(2, x, x), [x; x])) -***** error cat(3, sym(2), sym(3)) -***** error cat(0, sym(2), sym(3)) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/divisors.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/divisors.m -***** test - assert( isequal( divisors(sym(150)), divisors(sym(-150)) )) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/ldivide.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ldivide.m -***** test - % scalar - syms x - assert (isa (x .\ 1, 'sym')) - assert (isa (x .\ x, 'sym')) - assert (isequal (x .\ 1, 1/x)) - assert (isequal (x .\ x, sym(1))) -***** test - % matrix-scalar - D = [1 1; 2 3]; - A = sym(D); - assert (isequal ( A .\ 6 , D .\ 6 )) - assert (isequal ( A .\ sym(6) , D .\ 6 )) - assert (isequal ( D .\ sym(6) , D .\ 6 )) -***** test - % matrix-matrix - D = [1 2; 3 4]; - A = sym(D); - assert (isequal ( A .\ A , D .\ D )) - assert (isequal ( A .\ D , D .\ D )) - assert (isequal ( D .\ A , D .\ D )) +[inst/@sym/exp.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/exp.m +***** error exp (sym(1), 2) +***** assert (isequaln (exp (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); ***** test - % matrix .\ matrix with symbols - syms x y - A = [x y; x^2 2*y]; - B = [y x; x y]; - assert (isequal ( A .\ A , sym(ones(2, 2)) )) - assert (isequal ( B .\ A , [x/y y/x; x 2] )) + f1 = exp(x); + f2 = exp(d); + assert( abs(double(f1) - f2) < 1e-15 ) ***** test - % scalar .\ matrix - D = 3*[1 2; 3 4]; - A = sym(D); - assert (isequal ( 3 .\ A , 3 .\ D )) + D = [d d; d d]; + A = [x x; x x]; + f1 = exp(A); + f2 = exp(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = exp (d); + f = exp (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/vertcat.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/vertcat.m +[inst/@sym/solve.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/solve.m ***** test - % basic + % Simple, single variable, single solution syms x - A = [x; x]; - B = vertcat(x, x); - C = vertcat(x, x, x); - assert (isa (A, 'sym')) - assert (isa (B, 'sym')) - assert (isa (C, 'sym')) - assert (isequal (size(A), [2 1])) - assert (isequal (size(B), [2 1])) - assert (isequal (size(C), [3 1])) + d = solve(10*x == 50); + assert (isequal (d, 5)) ***** test - % basic, part 2 + % Single variable, multiple solutions syms x - A = [x; 1]; - B = [1; x]; - C = [1; 2; x]; - assert (isa (A, 'sym')) - assert (isa (B, 'sym')) - assert (isa (C, 'sym')) - assert (isequal (size(A), [2 1])) - assert (isequal (size(B), [2 1])) - assert (isequal (size(C), [3 1])) + d = solve(x^2 == 4); + assert (length(d) == 2); + assert (isequal (d, [2; -2]) || isequal (d, [-2; 2])) +***** shared x,y,eq + syms x y + eq = 10*x == 20*y; ***** test - % column vectors - a = [sym(1); 2]; - b = [sym(3); 4]; - assert (isequal ( [a;b] , [1; 2; 3; 4] )) - assert (isequal ( [a;b;a] , [1; 2; 3; 4; 1; 2] )) + d = solve(eq, x); + assert (isequal (d, 2*y)) ***** test - % row vectors - a = [sym(1) 2]; - b = [sym(3) 4]; - assert (isequal ( [a;b] , [1 2; 3 4] )) - assert (isequal ( [a;b;a] , [1 2; 3 4; 1 2] )) + d = solve(eq, y); + assert (isequal (d, x/2)) ***** test - % row vector, other row - a = [sym(1) 2]; - assert (isequal ( [a; [sym(3) 4]] , [1 2; 3 4] )) + d = solve(eq); + assert (isequal (d, 2*y)) +***** shared x,y + syms x y ***** test - % empty vectors - v = [sym(1) sym(2)]; - a = [v; []]; - assert (isequal (a, v)) - a = [[]; v; []]; - assert (isequal (a, v)) - a = [v; []; []]; - assert (isequal (a, v)) -***** xtest - % FIXME: is this Octave bug? worth worrying about - syms x - a = [x; [] []]; - assert (isequal (a, x)) -!!!!! known failure -octave_base_value::map_value(): wrong type argument 'null_matrix' + d = solve(2*x - 3*y == 0, x + y == 1); + assert (isequal (d.x, sym(3)/5) && isequal(d.y, sym(2)/5)) ***** test - % more empty vectors - v = [sym(1) sym(2)]; - q = sym(ones(0, 2)); - assert (isequal ([v; q], v)) -***** error - v = [sym(1) sym(2)]; - q = sym(ones(0, 3)); - w = vertcat(v, q); + d = solve(2*x - 3*y == 0, x + y == 1, x, y); + assert (isequal (d.x, sym(3)/5) && isequal(d.y, sym(2)/5)) ***** test - % Octave 3.6 bug: should pass on 3.8.1 and matlab - a = [sym(1) 2]; - assert (isequal ( [a; [3 4]] , [1 2; 3 4] )) - assert (isequal ( [a; sym(3) 4] , [1 2; 3 4] )) - % more examples - syms x - [x [x x]; x x x]; - [[x x] x; x x x]; - [[x x] x; [x x] x]; - [x x x; [x x] x]; + % Multiple solutions, multiple variables + d = solve(x^2 == 4, x + y == 1); + assert (length(d) == 2); + % FIXME: SMT has d.x gives vector and d.y giving vector, what is + % more intuitive? + for i = 1:2 + assert (isequal (d{i}.x + d{i}.y, 1)) + assert (isequal ((d{i}.x)^2, 4)) + end ***** test - % issue #700 - A = sym ([1 2]); - B = simplify (A); - assert (isequal ([B; A], [A; B])) -11 tests, 10 passed, 1 known failure, 0 skipped -[inst/@sym/diff.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/diff.m -***** shared x,y,z + % No solutions syms x y z + d = solve(x == y, z); + assert (isempty (d)); ***** test - % basic - assert(logical( diff(sin(x)) - cos(x) == 0 )) - assert(logical( diff(sin(x),x) - cos(x) == 0 )) - assert(logical( diff(sin(x),x,x) + sin(x) == 0 )) + % Multiple outputs with single solution + [X, Y] = solve(2*x + y == 5, x + y == 3); + assert (isequal (X, 2)) + assert (isequal (Y, 1)) ***** test - % these fail when doubles are not converted to sym - assert(logical( diff(sin(x),x,2) + sin(x) == 0 )) - assert(logical( diff(sym(1),x) == 0 )) - assert(logical( diff(1,x) == 0 )) - assert(logical( diff(pi,x) == 0 )) + % system: vector of equations, vector of vars + [X, Y] = solve([2*x + y == 5, x + y == 3], [x y]); + assert (isequal (X, 2)) + assert (isequal (Y, 1)) ***** test - % symbolic diff of const (w/o variable) fails in sympy, but we work around - assert (isequal (diff(sym(1)), sym(0))) + % system: vector of equations, individual vars + [X, Y] = solve([2*x + y == 5, x + y == 3], x, y); + assert (isequal (X, 2)) + assert (isequal (Y, 1)) ***** test - % nth symbolic diff of const - assert (isequal (diff(sym(1), 2), sym(0))) - assert (isequal (diff(sym(1), sym(1)), sym(0))) + % system: individual equations, vector of vars + [X, Y] = solve(2*x + y == 5, x + y == 3, [x y]); + assert (isequal (X, 2)) + assert (isequal (Y, 1)) ***** test - % octave's vector difference still works - assert(isempty(diff(1))) - assert((diff([2 6]) == 4)) + % Multiple outputs with multiple solns + [X, Y] = solve(x*x == 4, x == 2*y); + assert ((isequal (X, [2; -2]) && isequal (Y, [1; -1])) || ... + (isequal (X, [-2; 2]) && isequal (Y, [-1; 1]))) ***** test - % other forms - f = sin(x); - g = diff(f,x,2); - assert (isequal (diff(f,2), g)) - assert (isequal (diff(f,sym(2)), g)) - g = diff(f,x); - assert (isequal (diff(f), g)) - assert (isequal (diff(f,1), g)) + % Multiple outputs with multiple solns, specify vars + [X, Y] = solve(x*x == 4, x == 2*y, x, y); + assert ((isequal (X, [2; -2]) && isequal (Y, [1; -1])) || ... + (isequal (X, [-2; 2]) && isequal (Y, [-1; 1]))) +***** error + % mult outputs not allowed for scalar equation, even with mult soln (?) + [s1, s2] = solve(x^2 == 4, x); ***** test - % old SMT supported (still does?) the 'n' before the 'x' - % we might remove this someday, no longer seems documented in SMT - f = sin(x); - g = diff(f,x,2); - assert (isequal (diff(f,2,x), g)) - assert (isequal (diff(f,sym(2),x), g)) - g = diff(f,x); - assert (isequal (diff(f,1,x), g)) + % overdetermined + X = solve(2*x - 10 == 0, 3*x - 15 == 0, x); + assert (isequal (X, sym(5))) ***** test - % matrix - A = [x sin(x); x*y 10]; - B = [1 cos(x); y 0]; - assert(isequal(diff(A,x),B)) + a = solve(2*x >= 10, 10*x <= 50); + assert (isequal( a, x==sym(5))) ***** test - % bug: use symvar - a = x*y; - b = diff(a); - assert (isequal (b, y)) + A = solve([2*x == 4*y, 2 == 3], x); + assert (isempty (A)) ***** test - % bug: symvar should be used on the matrix, not comp-by-comp - a = [x y x*x]; - b = diff(a); - assert (~isequal (b(2), 1)) - assert (isequal (b, [1 0 2*x])) - b = diff(a,1); - assert (~isequal (b(2), 1)) - assert (isequal (b, [1 0 2*x])) -10 tests, 10 passed, 0 known failure, 0 skipped -[inst/@sym/le.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/le.m + % Issue #850 + A = solve (sym(pi)^2*x + y == 0); + assert (isequal (A, -y/sym(pi)^2)) ***** test - % simple - x = sym(1); y = sym(1); e = x <= y; - assert (logical (e)) - x = sym(1); y = sym(2); e = x <= y; - assert (logical (e)) + % https://github.com/sympy/sympy/issues/14632 + A = solve([2*x == 4*y, sym(2) == 2], x); + assert (isequal (A, 2*y)) ***** test - % array -- array - syms x - a = sym([1 3 3 2*x]); - b = sym([2 x 3 10]); - e = a <= b; - assert (isa (e, 'sym')) - assert (logical (e(1))) - assert (isa (e(2), 'sym')) - assert (isequal (e(2), 3 <= x)) - assert (logical (e(3))) - assert (isa (e(4), 'sym')) - assert (isequal (e(4), 2*x <= 10)) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/mrdivide.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mrdivide.m + % https://github.com/sympy/sympy/issues/14632 + A = solve([2*x^2 == 32*y^2, sym(2) == 2], x); + B = solve([2*x^2 == 32*y^2], x); + assert (isequal (A, B) || isequal (A, flip (B))) +***** test + A = solve ([x+1 0], x); + assert (isequal (A, sym (-1))) +***** test + A = solve (x + 1, x); + assert (isequal (A, sym (-1))) + A = solve (x, x); + assert (isequal (A, sym (0))) +24 tests, 24 passed, 0 known failure, 0 skipped +[inst/@sym/nnz.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/nnz.m +***** assert (nnz (sym ([1])) == 1) +***** assert (nnz (sym ([0])) == 0) +***** assert (nnz (sym ([])) == 0) +***** assert (nnz (sym ([1 0; 0 3])) == 2) ***** test - % scalar syms x - assert (isa( x/x, 'sym')) - assert (isequal( x/x, sym(1))) - assert (isa( 2/x, 'sym')) - assert (isa( x/2, 'sym')) + assert (nnz ([x 0]) == 1) +***** assert (nnz (sym (true)) == 1) +***** assert (nnz (sym (false)) == 0) +***** assert (nnz (sym (inf)) == 1) +***** assert (nnz (sym (nan)) == 1) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/@sym/ssinint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ssinint.m +***** assert (isequal (ssinint(sym(0)), -sym(pi)/2)) ***** test - % matrix / scalar - D = 2*[0 1; 2 3]; - A = sym(D); - assert (isequal ( A/2 , D/2 )) - assert (isequal ( A/sym(2) , D/2 )) + A = ssinint (sym ([0 1])); + B = [-pi/2 -0.62471325642771360426]; + assert( all(all( abs(double(A)-B) < 1e-15 ))) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/ifourier.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ifourier.m +***** error ifourier (sym(1), 2, 3, 4) ***** test - % I/A: either invert A or leave unevaluated: not bothered which - A = sym([1 2; 3 4]); - B = sym(eye(2)) / A; - assert (isequal (B, inv(A)) || strncmpi (sympy (B), 'MatPow', 6)) -***** xtest - % immutable test, upstream: TODO - A = sym([1 2; 3 4]); - B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)], [Integer(3), Integer(4)]])'); - assert (isequal (A/A, B/B)) + % matlab SMT compat + syms t r u x w + Pi=sym('pi'); + assert(logical( ifourier(exp(-abs(w))) == 1/(Pi*(x^2 + 1)) )) + assert(logical( ifourier(exp(-abs(x))) == 1/(Pi*(t^2 + 1)) )) + assert(logical( ifourier(exp(-abs(r)),u) == 1/(Pi*(u^2 + 1)) )) + assert(logical( ifourier(exp(-abs(r)),r,u) == 1/(Pi*(u^2 + 1)) )) ***** test - % A = C/B is C = A*B - A = sym([1 2; 3 4]); - B = sym([1 3; 4 8]); - C = A*B; - A2 = C / B; - assert (isequal (A, A2)) + % basic + syms x w + Pi=sym('pi'); + assert(logical( ifourier(exp(-w^2/4)) == 1/(sqrt(Pi)*exp(x^2)) )) + assert(logical( ifourier(sqrt(Pi)/exp(w^2/4)) == exp(-x^2) )) ***** test - A = [1 2; 3 4]; - B = A / A; - % assert (isequal (B, sym(eye(2)) - assert (isequal (B(1,1), 1)) - assert (isequal (B(2,2), 1)) - assert (isequal (B(2,1), 0)) - assert (isequal (B(1,2), 0)) + % Dirac delta tests + syms x w + Pi=sym('pi'); + assert(logical( ifourier(dirac(w-2)) == exp(2*1i*x)/(2*Pi) )) + assert (logical( ifourier(sym(2), w, x) == 2*dirac(x) )) ***** test - A = sym([5 6]); - B = sym([1 2; 3 4]); - C = A*B; - A2 = C / B; - assert (isequal (A, A2)) -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/ztrans.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ztrans.m + % advanced test + syms x w c d + Pi=sym('pi'); + f=(Pi*(dirac(x-c)+dirac(x+c))+2*Pi*1i*(-dirac(x+3*d)+dirac(x-3*d))+2/(x^2+1))/(2*Pi); + assert(logical( simplify(ifourier(cos(c*w)+2*sin(3*d*w)+exp(-abs(w)))-f) == 0 )) +***** xtest + % Inverse Fourier transform cannot recover non-smooth functions + % SymPy cannot evaluate correctly?? + syms x w + assert(logical( ifourier(2/(w^2 + 1)) == exp(-abs(x)) )) + assert(logical( ifourier(2/(w^2 + 1)) == heaviside(x)/exp(x) + heaviside(-x)*exp(x) )) + assert(logical( ifourier(-(w*4)/(w^4 + 2*w^2 + 1) )== -x*exp(-abs(x))*1i )) + assert(logical( ifourier(-(w*4)/(w^4 + 2*w^2 + 1) )== -x*(heaviside(x)/exp(x) + heaviside(-x)*exp(x))*1i )) +!!!!! known failure +assert (logical (ifourier (2 / (w ^ 2 + 1)) == exp (-abs (x)))) failed +***** error ifourier (sym('k', 'positive')*sym('k')) ***** test - % basic Z-transform table checks - % X1, ..., X4 must have inner radius of convergence 1 - syms n z - % trick to extract the closed form formula using the fact that inner roc = 1 - closed_form = @(X) subs (X, abs (1 / z), 1 / sym (2)); - % check if ztrans(f) == X - check_ztrans = @(f, X) logical (simplify (closed_form (ztrans (f)) == X)); - f1 = sym (1); - X1 = 1 / (1 - 1 / z); - assert (check_ztrans (f1, X1)); - f2 = n; - X2 = (1 / z) / (1 - 1 / z)^2; - assert (check_ztrans (f2, X2)); - f3 = n^2; - X3 = (1 / z) * (1 + 1 / z) / (1 - 1 / z)^3; - assert (check_ztrans (f3, X3)); - f4 = n^3; - X4 = (1 / z) * (1 + 4 / z + 1 / z^2) / (1 - 1 / z)^4; - assert (check_ztrans (f4, X4)); - % basic matrix checks - A1 = ztrans ([f1 f2; f3 f4]); - B1 = [ztrans(f1) ztrans(f2); ztrans(f3) ztrans(f4)]; - assert (isequal (A1, B1)); - A2 = ztrans ([f1 f2; f3 f4], z); - B2 = [ztrans(f1, z) ztrans(f2, z); ztrans(f3, z) ztrans(f4, z)]; - assert (isequal (A2, B2)); - A3 = ztrans ([f1 f2; f3 f4], n, z); - B3 = [ztrans(f1, n, z) ztrans(f2, n, z); ztrans(f3, n, z) ztrans(f4, n, z)]; - assert (isequal (A3, B3)); + % SMT compact, prefers k over symvar + syms k x y + assert (isequal (ifourier(y*exp(-k^2/4)), y/sqrt(sym(pi))*exp(-x^2))) +8 tests, 7 passed, 1 known failure, 0 skipped +[inst/@sym/horner.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/horner.m +***** error horner (sym(1), 2, 3) +***** assert (isAlways (horner(sym(1)) == 1)) ***** test - % additional Z-transform table checks - % X1, ..., X4 must have inner radius of convergence a - syms n nonnegative integer - syms m positive integer - syms a - syms z - % trick to extract the closed form formula using the fact that inner roc = a - closed_form = @(X) subs (X, abs (a / z), 1 / sym (2)); - % check if ztrans(f) == X - check_ztrans = @(f, X) logical (simplify (closed_form (ztrans (f)) == X)); - f1 = a^n; - X1 = 1 / (1 - a / z); - assert (check_ztrans (f1, X1)); - f2 = n * a^n; - X2 = (a / z) / (1 - a / z)^2; - assert (check_ztrans (f2, X2)); - f3 = n^2 * a^n; - X3 = (a / z) * (1 + a / z) / (1 - a / z)^3; - assert (check_ztrans (f3, X3)); - f4 = nchoosek(n + m - 1, m - 1) * a^n; - X4 = 1 / (1 - a / z)^m; - assert (check_ztrans (f4, X4)); - % additional matrix checks - A1 = ztrans (f1, [n m; m n], [z a; a z]); - B1 = [ztrans(f1, n, z) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, n, z)]; - assert (isequal (A1, B1)); - A2 = ztrans (f1, m, [z a; a z]); - B2 = [ztrans(f1, m, z) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, m, z)]; - assert (isequal (A2, B2)); - A3 = ztrans (f1, [n m; m n], a); - B3 = [ztrans(f1, n, a) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, n, a)]; - assert (isequal (A3, B3)); + syms x + assert (isAlways (horner(x) == x)) ***** test - % Kronecker delta checks - syms n n0 nonnegative integer - syms z - assert (isequal (ztrans (kroneckerDelta (n)), 1)); - assert (isequal (ztrans (kroneckerDelta (n - n0)), 1 / z^n0)); + syms x a + p = a^2 + a*x + 2*a + 2*x; + assert (isequal (horner (p, a), a*(a+x+2) + 2*x)) + q = a^2 + 2*a + x*(a + 2); + assert (isequal (horner (p, x), q)) + assert (isequal (horner (p), q)) ***** test - % basic var selection checks - syms n m z w - assert (isequal (ztrans (1 / factorial (n)), exp (1 / z))); - assert (isequal (ztrans (1 / factorial (z)), exp (1 / w))); - assert (isequal (ztrans (1 / factorial (m), w), exp (1 / w))); - assert (isequal (ztrans (1 / factorial (m), m, w), exp (1 / w))); + syms x + p = poly2sym ([2 4 6 8], x); + q = horner (p); + assert (isAlways (p == q)) + assert (isAlways (horner(2*x^3 + 4*x^2 + 6*x + 8) == q)) ***** test - % additional var selection checks - syms n m z - f = kroneckerDelta(m) / factorial (n); - assert (isequal (ztrans (f, z), exp (1 / z) * kroneckerDelta (m))); - assert (isequal (ztrans (f, n, z), exp (1 / z) * kroneckerDelta (m))); - assert (isequal (ztrans (f, m, z), 1 / factorial (n))); + % non-sym input + syms x + assert (isequal (horner(6, x), sym(6))) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@sym/zeta.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/zeta.m +***** error zeta (sym(1), 2, 3) +***** assert (isequaln (zeta (sym(nan)), sym(nan))) ***** test - % if no t, use symvar: take x before a - syms a x z - assert (isequal (ztrans (a / factorial (x)), a * exp (1 / z))); -***** error ztrans (sym ('n')^sym ('n', 'nonnegative', 'integer')) -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/besselh.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besselh.m + f1 = zeta (sym(2)); + f2 = pi^2/6; + assert (double (f1), f2, -1e-15) ***** test - % default to k=1 - syms z a - A = besselh(a, z); - B = besselh(a, 1, z); - assert (isequal (A, B)) -***** error besselh(sym('z')) -***** error besselh(2, 0, sym('z')) -***** error besselh(2, 3, sym('z')) + A = sym([0 2; 4 6]); + f1 = zeta (A); + f2 = [-1/2 pi^2/6; pi^4/90 pi^6/945]; + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test - % doubles, relative error - X = [1 2 pi; 4i 5 6+6i]; - Xs = sym(X); - Alpha = [pi 3 1; 3 2 0]; - Alphas = sym(Alpha); - for k = 1:2 - A = double(besselh(Alphas, k, Xs)); - B = besselh(Alpha, k, X); - assert (all (all (abs(A - B) < 10*eps*abs(A)))) - end + % round trip + y = sym('y'); + f = zeta (y); + h = function_handle (f); + A = zeta (2); + B = h (2); + assert (A, B, -eps) ***** test - % round-trip syms x - for k = 1:2 - A = besselh(4, k, 10); - q = besselh(4, k, x); - h = function_handle(q); - B = h(10); - assert (abs(A - B) <= eps*abs(A)) - end -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sym/ellipticF.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticF.m -***** error ellipticF (sym(1)) -***** error ellipticF (sym(1), 2, 3) -***** assert (double (ellipticF (sym (pi)/3, sym (-105)/10)), 0.6184459461, 10e-11) -***** assert (double (ellipticF (sym (pi)/4, sym (-pi))), 0.6485970495, 10e-11) -***** assert (double (ellipticF (sym (1), sym (-1))), 0.8963937895, 10e-11) -***** assert (double (ellipticF (sym (pi)/6, sym (0))), 0.5235987756, 10e-11) + assert (isequal (zeta (0, x), zeta(x))) ***** test - % compare to Maple - us = vpa (ellipticF (sym(11)/10, sym(9)/4), 40); - % > evalf(EllipticF(sin(11/10), sqrt(9/4)), 40); - maple = vpa ('1.206444996991058996424988192917728014427', 40) - ... - vpa ('0.8157358125823472313001683083685348517476j', 40); - assert (abs (double (maple - us)), 0, 1e-39) + % ensure its the nth deriv wrt x, not the n deriv + syms x n + F = zeta (n, x); + F = subs(F, n, 3); + assert (isequal (F, diff (zeta (x), x, x, x))) 7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/uplus.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/uplus.m +[inst/@sym/private_disp_name.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/private_disp_name.m ***** test syms x - assert (isa (+x, 'sym')) - assert (isequal (+x, x)) -***** test - A = sym([0 -1 inf]); - assert( isequal ( +A, A)) -2 tests, 2 passed, 0 known failure, 0 skipped + s = private_disp_name(x, 'x'); + assert (strcmp (s, 'x')) +1 test, 1 passed, 0 known failure, 0 skipped [inst/@sym/bessely.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/bessely.m ***** test @@ -11434,233 +11193,88 @@ assert (abs (A - B) <= eps*abs(A)) ***** error bessely(sym('x')) 3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/fresnelc.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fresnelc.m -***** error fresnelc (sym(1), 2) -***** test - a = fresnelc(sym(0)); - assert (isequal (a, sym(0))) -***** test - b = fresnelc(sym('oo')); - assert (isequal (b, sym(1)/2)) -***** test - % values in a matrix - syms x - a = fresnelc([sym(0) sym('oo') x 1]); - b = [sym(0) sym(1)/2 fresnelc(x) fresnelc(sym(1))]; - assert (isequal (a, b)) -***** test - % round trip - syms x - f = fresnelc (x); - h = function_handle (f); - A = h (1.1); - B = fresnelc (1.1); - assert (A, B) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/rhs.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rhs.m +[inst/@sym/ipermute.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ipermute.m +***** error permute (sym(1)) +***** error permute (sym(1), 2, 3) ***** test syms x - f = x + 1 == 2*x; - assert (isequal (rhs(f), 2*x)) -***** error - syms x - rhs(x) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/size.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/size.m -***** test - a = sym([1 2 3]); - [n,m] = size(a); - assert (n == 1 && m == 3) -***** test - a = sym([1 2 3]); - n = size(a); - assert (isequal (n, [1 3])) -***** test - %% size, numel, length - a = sym([1 2 3; 4 5 6]); - assert (isa (size(a), 'double')) - assert (isa (numel(a), 'double')) - assert (isa (length(a), 'double')) - assert (isequal (size(a), [2 3])) - assert (length(a) == 3) - assert (numel(a) == 6) - a = sym([1; 2; 3]); - assert (isequal (size(a), [3 1])) - assert (length(a) == 3) - assert (numel(a) == 3) -***** test - %% size by dim - a = sym([1 2 3; 4 5 6]); - n = size(a, 1); - assert (n == 2) - m = size(a, 2); - assert (m == 3) - a = sym([1 2 3]'); - n = size(a, 1); - assert (n == 3) - m = size(a, 2); - assert (m == 1) -***** xtest - % symbolic-size matrices - syms n m integer - A = sym('A', [n m]); - d = size(A); - assert (~isa(d, 'sym')) - assert (isnumeric(d)) - assert (isequaln (d, [NaN NaN])) -!!!!! known failure -assert (isequaln (d, [NaN, NaN])) failed -***** xtest - % half-symbolic-size matrices - % FIXME: will fail until size stop lying by saying 1x1 - syms n integer - A = sym('A', [n 3]); - assert (isequaln (size(A), [NaN 3])) - A = sym('A', [4 n]); - assert (isequaln (size(A), [4 NaN])) -!!!!! known failure -assert (isequaln (size (A), [NaN, 3])) failed -***** xtest - % half-symbolic-size empty matrices - % FIXME: will fail until size stop lying by saying 1x1 - syms n integer - A = sym('A', [n 0]); - assert (isequaln (size(A), [NaN 0])) -!!!!! known failure -assert (isequaln (size (A), [NaN, 0])) failed -7 tests, 4 passed, 3 known failures, 0 skipped -[inst/@sym/hypot.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/hypot.m -***** assert (isequal (hypot (sym(3), 4), sym(5))) -***** test - % compare to @double (note Matlab hypot only takes 2 inputs) - A = hypot (hypot ([1 2 3], [4 5 6]), [7 8 9]); - B = double (hypot (sym([1 2 3]), [4 5 6], [7 8 9])); - assert (A, B, -eps) -***** test - % compare to @double, with complex - A = hypot ([1+2i 3+4i], [1 3+1i]); - B = double (hypot (sym([1+2i 3+4i]), [1 3+1i])); - assert (A, B, -eps) -***** test - % matrices - x = sym([1 -2; 0 3]); - y = sym([0 0; 8 4]); - A = hypot (x, y); - B = sym([1 2; 8 5]); - assert (isequal (A, B)) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/sqrt.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sqrt.m -***** error sqrt (sym(1), 2) -***** assert (isequaln (sqrt (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); -***** test - f1 = sqrt(x); - f2 = sqrt(d); - assert( abs(double(f1) - f2) < 1e-15 ) -***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = sqrt(A); - f2 = sqrt(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) -***** test - % round trip - y = sym('y'); - A = sqrt (d); - f = sqrt (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/zeros.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/zeros.m + A = [1 x]; + perm = [2 1]; + B = permute(A, perm); + C = ipermute(B, perm); + assert (isequal(C, A)) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/int.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/int.m +***** shared x,y,a + syms x y a +***** assert(logical(int(cos(x)) - sin(x) == 0)) +***** assert(logical(int(cos(x),x) - sin(x) == 0)) +***** assert(logical(int(cos(x),x,0,1) - sin(sym(1)) == 0)) ***** test - y = zeros(sym(2)); - x = [0 0; 0 0]; - assert( isequal( y, sym(x))) + %% limits might be syms + assert( isequal (int(cos(x),x,sym(0),sym(1)), sin(sym(1)))) + assert( isequal (int(cos(x),x,0,a), sin(a))) ***** test - y = zeros(sym(2), 1); - x = [0; 0]; - assert( isequal( y, sym(x))) + %% other variables present + assert( isequal (int(y*cos(x),x), y*sin(x))) ***** test - y = zeros(sym(1), 2); - x = [0 0]; - assert( isequal( y, sym(x))) + %% limits as array + assert( isequal (int(cos(x),x,[0 1]), sin(sym(1)))) + assert( isequal (int(cos(x),x,sym([0 1])), sin(sym(1)))) + assert( isequal (int(cos(x),x,[0 a]), sin(a))) ***** test - y = zeros (sym([2 3])); - x = sym (zeros ([2 3])); - assert (isequal (y, x)) -***** assert( isa( zeros(sym(2), 'double'), 'double')) -***** assert( isa( zeros(3, sym(3), 'single') , 'single')) -***** assert( isa( zeros(3, sym(3)), 'sym')) -***** assert( isa( zeros(3, sym(3), 'sym'), 'sym')) -***** xtest - % Issue #13 - assert( isa( zeros(3, 3, 'sym'), 'sym')) -!!!!! known failure -invalid data type specified -9 tests, 8 passed, 1 known failure, 0 skipped -[inst/@sym/fresnels.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fresnels.m -***** error fresnels (sym(1), 2) + %% no x given + assert( isequal (int(cos(x),[0 1]), sin(sym(1)))) + assert( isequal (int(cos(x),sym([0 1])), sin(sym(1)))) + assert( isequal (int(cos(x),[0 a]), sin(a))) + assert( isequal (int(cos(x),0,a), sin(a))) ***** test - a = fresnels(sym(0)); - assert (isequal (a, sym(0))) + %% integration of const + assert( isequal (int(sym(2),y), 2*y)) + assert( isequal (int(sym(2)), 2*x)) + assert( isequal (int(sym(2),[0 a]), 2*a)) + assert( isequal (int(sym(2),0,a), 2*a)) ***** test - b = fresnels(sym('oo')); - assert (isequal (b, sym(1)/2)) + % componentwise int of array + A = [x x*x]; + assert (isequal (int(A, x), [x^2/2 x^3/3])) ***** test - % values in a matrix - syms x - a = fresnels([sym(0) sym('oo') x 1]); - b = [sym(0) sym(1)/2 fresnels(x) fresnels(sym(1))]; - assert (isequal (a, b)) + % NonElementaryIntegral bug + % https://savannah.gnu.org/bugs/index.php?46831 + f = int(exp(exp(x))); + f = f + 2; + g = diff(f); + assert (isequal (g, exp(exp(x)))) +10 tests, 10 passed, 0 known failure, 0 skipped +[inst/@sym/any.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/any.m ***** test - % round trip - syms x - f = fresnels (x); - h = function_handle (f); - A = h (1.1); - B = fresnels (1.1); - assert (A, B) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/plus.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/plus.m + % matrix + a = [0 0; 1 0]; + s = sym(a); + assert (isequal (any (s), any (a))) + assert (isequal (any (s,1), any (a,1))) + assert (isequal (any (s,2), any (a,2))) ***** test - % basic addition - syms x - assert (isa (x+5, 'sym')) - assert (isa (5+x, 'sym')) - assert (isa (5+sym(4), 'sym')) - assert (isequal (5+sym(4), sym(9))) + % vector + a = [0 1 0]; + s = sym(a); + assert (isequal (any (s), any (a))) + assert (isequal (any (s,1), any (a,1))) + assert (isequal (any (s,2), any (a,2))) ***** test - % array addition + % should fail on symbols syms x - D = [0 1; 2 3]; - A = [sym(0) 1; sym(2) 3]; - DZ = D - D; - assert( isequal ( A + D , 2*D )) - assert( isequal ( D + A , 2*D )) - assert( isequal ( A + A , 2*D )) - assert( isequal ( A + 2 , D + 2 )) - assert( isequal ( 4 + A , 4 + D )) -***** test - % ensure MatrixExpr can be manipulated somewhat - syms n m integer - A = sym('A', [n m]); - B = subs(A, [n m], [5 6]); - B = B + 1; - assert (isa (B, 'sym')) - C = B(1, 1); % currently makes a MatrixElement - C = C + 1; - assert (isa (C, 'sym')) + s = [0 1 x]; + try + any (s) + waserr = false; + catch + waserr = true; + end + assert (waserr) 3 tests, 3 passed, 0 known failure, 0 skipped [inst/@sym/logical.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logical.m @@ -11753,1592 +11367,470 @@ assert(false); end 12 tests, 12 passed, 0 known failure, 0 skipped -[inst/@sym/partfrac.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/partfrac.m -***** test - % basic - syms x y z - assert(logical( partfrac(y/(x + 2)/(x + 1),x) == -y/(x + 2) + y/(x + 1) )) - assert(logical( factor(partfrac(x^2/(x^2 - y^2),y)) == factor(x/(2*(x + y)) + x/(2*(x - y)) ))) - assert(logical( factor(partfrac(x^2/(x^2 - y^2),x)) == factor(-y/(2*(x + y)) + y/(2*(x - y)) + 1 ))) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/expint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expint.m -***** error expint (sym(1), 2, 3) +[inst/@sym/dilog.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dilog.m +***** assert (isequal (dilog (sym(1)), sym(0))) +***** assert (isequal (dilog (sym(0)), sym(pi)^2/6)) +***** assert (isequal (dilog (sym(2)), -sym(pi)^2/12)) +***** assert (double(dilog(sym(-1))), pi^2/4 - pi*1i*log(2), eps) ***** test - f1 = expint(sym(1)); - f2 = expint(1); - assert( abs(double(f1) - f2) < 1e-15 ) + % round-trip + syms x + f = dilog (x); + h = function_handle (f); + A = h (1.1); + B = dilog (1.1); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/invhilb.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/invhilb.m ***** test - f1 = expint(sym(1i)); - f2 = expint(1i); - assert( abs(double(f1) - f2) < 1e-15 ) + A = invhilb(sym(3)); + B = sym([9 -36 30;-36 192 -180;30 -180 180]); + assert( isequal( A, B)) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@sym/gammaln.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gammaln.m +***** assert (isequal (gammaln (sym (3)), log (sym (2)))) +***** assert (isequal (gammaln (sym (10)), log (gamma (sym (10))))) ***** test - D = [1 2; 3 4]; - A = sym(D); - f1 = expint(A); - f2 = expint(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + % compare to Maple: evalf(lnGAMMA(Pi)); + maple = vpa ('0.827694592323437101529578558452359951153502', 40); + us = vpa (gammaln (sym(pi)), 40); + assert (abs(double(maple-us)) < 1e-39) ***** test - syms x - A = expint(x); - B = expint(1, x); - assert (isequal (A, B)) + % compare to Maple: evalf(lnGAMMA(3+2*I)); + maple = vpa ('-0.0316390593739611898037677296008797172022603', 40) + ... + vpa ('2.02219319750132712401643376238334982100512j', 40); + us = vpa (gammaln (sym(3) + 2i), 40); + assert (abs(double(maple-us)) < 1e-39) ***** test - syms x - A = exp(-x)/x; - B = expint(0, x); - assert (isequal (A, B)) + % compare to Maple: evalf(lnGAMMA(-1.5)); + % notably, @double/gammaln has zero imag part + maple = vpa ('0.8600470153764810145109326816703567873271571', 40) - ... + vpa ('6.2831853071795864769252867665590057683943388j', 40); + us = vpa (gammaln (-sym(3)/2), 40); + assert (abs(double(maple-us)) < 1e-39) +***** assert (gammaln (pi), double (gammaln (sym (pi))), -3*eps) +***** assert (gammaln (100), double (gammaln (sym (100))), -3*eps) +***** assert (gammaln (1e-3), double (gammaln (1/sym (1e3))), -100*eps) ***** test % round trip syms x - A = expint (3); - f = expint (x); - h = function_handle (f); - B = h (3); - assert (A, B, -eps) -***** error - % round trip - syms n x - f = expint (n, x); + f = gammaln (x); h = function_handle (f); -8 tests, 8 passed, 0 known failure, 0 skipped -[inst/@sym/isAlways.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isAlways.m -***** test - % basics - assert(isAlways(true)) - assert(isAlways(1==1)) - assert(isAlways(sym(1)==sym(1))) - assert(isAlways(sym(1)==1)) + A = h (1.1); + B = gammaln (1.1); + assert (A, B) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/@sym/numden.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/numden.m +***** error numden (sym(1), 2) ***** test - % numbers to logic? - assert (isAlways(sym(1))) - assert (isAlways(sym(-1))) - assert (~isAlways(sym(0))) -***** shared x syms x + [n, d] = numden (1/x); + assert (isequal (n, sym(1)) && isequal (d, x)) ***** test - % in this case it is boolean - expr = x - x == 0; - assert (logical(expr)) - assert (isAlways(expr)) - % and both are logical type - assert (islogical(logical(expr))) - assert (islogical(isAlways(expr))) -***** test - % structurally same and mathematically true - % (here expr should be sym, non-boolean) - expr = x == x; - assert (logical(expr)) - assert (isAlways(expr)) - %assert (~islogical(expr)) % FIXME: Issue #56 - %assert (isa(expr, 'sym)) -***** test - % structurally same and mathematically true - % (here expr should be sym, non-boolean) - expr = 1 + x == x + 1; - assert (logical(expr)) - assert (isAlways(expr)) -***** test - % non-zero numbers are true - assert (isAlways(sym(1))) - assert (isAlways(sym(-10))) - assert (~isAlways(sym(0))) -***** shared x, y syms x y + n1 = [sym(1); x]; + d1 = [x; y]; + [n, d] = numden (n1 ./ d1); + assert (isequal (n, n1) && isequal (d, d1)) ***** test - % structurally same and mathematically true - % (here expr should be sym, non-boolean) - expr = x*(1+y) == x*(y+1); - assert (logical(expr)) - assert (isAlways(expr)) - assert (islogical(isAlways(expr))) -***** test - % Now for some differences - % simplest example from SymPy FAQ - expr = x*(1+y) == x+x*y; - assert (~logical(expr)) - assert (isAlways(expr)) -***** test - % more differences 1, these don't simplify in sympy (as of 2016-01) - expr = (x+1)^2 == x*x + 2*x + 1; - assert (~logical(expr)) - assert (isAlways(expr)) -***** test - % more differences 2 - expr = sin(2*x) == 2*sin(x)*cos(x); - assert (~logical(expr)) - assert (isAlways(expr)) -***** test - % more differences 3, false - expr = x*(x+y) == x^2 + x*y + 1; - assert (~logical(expr)) - assert (~isAlways(expr)) - assert (~isAlways(expr, 'unknown', 'error')) -***** test - % logically not equal, math equal - exprn = x*(x+y) ~= x^2 + x*y; - assert (logical(exprn)) - assert (~isAlways(exprn)) -***** test - % logically not equal, math not equal - exprn = x*(x+y) ~= x^2 + x*y + 1; - assert (logical(exprn)) - assert (isAlways(exprn)) -***** test - % equal and not equal - e1 = sin(x)^2 + cos(x)^2 == 1; - e2 = sin(x)^2 + cos(x)^2 == 2; - assert (~logical(e1)) - assert (isAlways(e1)) - assert (~logical(e2)) - assert (~isAlways(e2)) - assert (~isAlways(e2, 'unknown', 'error')) -***** error isAlways(x, 'unknown', 'kevin') -***** error isAlways(x, 'unknown') -***** error isAlways(x, 'kevin', 'true') -***** error - a = [x*(x+y)==x^2+x*y x==y]; - b = isAlways(a, 'unknown', 'error'); -***** error - a = x==y; - b = isAlways(a, 'unknown', 'error'); -***** test - % array, unknown keyword - a = [x==x x==x+1 x==y x*(x+y)==x^2+x*y cos(x)^2+sin(x)^2==2]; - b = isAlways(a, 'unknown', false); - c = isAlways(a, 'unknown', 'false'); - expect = [true false false true false]; - assert (islogical(b)) - assert (isequal (b, expect)) - assert (isequal (c, expect)) - b = isAlways(a, 'unknown', true); - c = isAlways(a, 'unknown', 'true'); - expect = [true false true true false]; - assert (islogical(b)) - assert (isequal (b, expect)) - assert (isequal (c, expect)) -***** test - % ineq - e = x*(x+y) <= x^2 + x*y + 1; - assert (~logical(e)) - assert (isAlways(e)) - e = x*(x+y) <= x^2 + x*y; - assert (~logical(e)) - assert (isAlways(e)) -21 tests, 21 passed, 0 known failure, 0 skipped -[inst/@sym/ones.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ones.m -***** test - y = ones(sym(2)); - x = [1 1; 1 1]; - assert( isequal( y, sym(x))) -***** test - y = ones(sym(2), 1); - x = [1; 1]; - assert( isequal( y, sym(x))) + [n, d] = numden (sym(2)); + assert (isequal (n, 2)); + assert (isequal (d, 1)); ***** test - y = ones(sym(1), 2); - x = [1 1]; - assert( isequal( y, sym(x))) + syms x y + [n, d] = numden ((x + pi)/(y + 6)); + assert (isequal (n, x + pi)); + assert (isequal (d, y + 6)); ***** test - y = ones (sym([2 3])); - x = sym (ones ([2 3])); - assert (isequal (y, x)) -***** assert( isa( ones(sym(2), 'double'), 'double')) -***** assert( isa( ones(3, sym(3), 'single') , 'single')) -***** assert( isa( ones(3, sym(3)), 'sym')) -***** assert( isa( ones(3, sym(3), 'sym'), 'sym')) -***** xtest - % Issue #13 - assert( isa( ones(3, 3, 'sym'), 'sym')) -!!!!! known failure -invalid data type specified -9 tests, 8 passed, 1 known failure, 0 skipped -[inst/@sym/ge.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ge.m + syms x y + [n, d] = numden ((x^2 + y^2)/(x*y)); + assert (isequal (n, x^2 + y^2)); + assert (isequal (d, x*y)); +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@sym/flipud.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/flipud.m ***** test % simple - x = sym(1); y = sym(1); e = x >= y; - assert (logical (e)) - x = sym(1); y = sym(2); e = x >= y; - assert (~logical(e)) + syms x + A = [x 2; sym(pi) x]; + B = [sym(pi) x; x 2]; + assert (isequal (flipud(A), B)) ***** test - % array -- array + % simple, odd # rows syms x - a = sym([1 3 3 2*x]); - b = sym([2 x 3 10]); - e = a >= b; - assert (isa (e, 'sym')) - assert (~logical (e(1))) - assert (isa (e(2), 'sym')) - assert (isequal (e(2), 3 >= x)) - assert (logical (e(3))) - assert (isa (e(4), 'sym')) - assert (isequal (e(4), 2*x >= 10)) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/csc.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/csc.m -***** error csc (sym(1), 2) -***** assert (isequaln (csc (sym(nan)), sym(nan))) + A = [x 2; sym(pi) x; [1 2]]; + B = [[1 2]; sym(pi) x; x 2]; + assert (isequal (flipud(A), B)) +***** test + % scalar + syms x + assert (isequal (flipud(x), x)) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/erfcinv.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfcinv.m +***** error erfcinv (sym(1), 2) +***** assert (isequaln (erfcinv (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = csc(x); - f2 = csc(d); + f1 = erfcinv(x); + f2 = erfcinv(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = csc(A); - f2 = csc(D); + f1 = erfcinv(A); + f2 = erfcinv(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = csc (d); - f = csc (y); + A = erfcinv (d); + f = erfcinv (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/coth.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coth.m -***** error coth (sym(1), 2) -***** assert (isequaln (coth (sym(nan)), sym(nan))) +[inst/@sym/cart2pol.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cart2pol.m +***** test + % multiple non-scalar inputs + x = sym ('x', [2 2]); + assume (x, 'real'); + y = sym ('y', [2 2]); + assume (y, 'real'); + [theta, r] = cart2pol (x, y); + assert (isequal (r, sqrt (x.^2 + y.^2))); + assert (isequal (tan (theta), y ./ x)); + % mixing scalar inputs with non-scalar inputs + syms z real + [theta_2, r_2, z_2] = cart2pol (x, y, z); + assert (isequal (r_2, sqrt (x.^2 + y.^2))); + assert (isequal (tan (theta_2), y ./ x)); + assert (isequal (z_2, z * ones (2, 2))); +***** test + % column vector with 2 entries + syms x y real + [theta, r] = cart2pol ([x; y]); + assert (isequal (r, sqrt (x.^2 + y.^2))); + assert (isequal (tan (theta), y ./ x)); + % column vector with 3 entries + syms z real + [theta_2, r_2, z_2] = cart2pol ([x; y; z]); + assert (isequal (r_2, sqrt (x.^2 + y.^2))); + assert (isequal (tan (theta_2), y ./ x)); + assert (isequal (z_2, z)); +***** test + % matrix with 2 columns + syms x y u v real + C = [x y; u v]; + [theta, r] = cart2pol (C); + assert (isequal (r, [sqrt(x.^2+y.^2); sqrt(u.^2+v.^2)])); + assert (isequal (tan (theta), [y/x; v/u])); + % matrix with 3 columns + syms z w real + C_2 = [x y z; u v w]; + [theta_2, r_2, z_2] = cart2pol (C_2); + assert (isequal (r, [sqrt(x.^2+y.^2); sqrt(u.^2+v.^2)])); + assert (isequal (tan (theta), [y/x; v/u])); + assert (isequal (z_2, [z; w])); +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/acsc.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acsc.m +***** error acsc (sym(1), 2) +***** assert (isequaln (acsc (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = coth(x); - f2 = coth(d); + f1 = acsc(x); + f2 = acsc(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = coth(A); - f2 = coth(D); + f1 = acsc(A); + f2 = acsc(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = coth (d); - f = coth (y); + A = acsc (d); + f = acsc (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/linspace.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/linspace.m -***** test - a = linspace(sym(3), 5, 5); - b = [sym(6) 7 8 9 10]/2; - assert (isequal (a, b)) -***** test - % non-integers - A = linspace(0, sym(pi), 10); - assert (length (A) == 10); - assert (isequal (A(6), 5*sym(pi)/9)); -***** test - % default argument for N - A = linspace(1, 100); - assert (length (A) == 100); -***** test - % special case for just N = 1 - A = linspace(sym(2), 3, 1); - assert (isequal (A, 3)) - A = linspace(sym(2), 3, 0); - assert (isequal (A, 3)) - A = linspace(sym(2), 3, sym(3)/2); - assert (isequal (A, 3)) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/isna.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isna.m -***** test - % no sym should be NA - syms x oo - assert (~isna(sym(1))) - assert (~isna(x)) - assert (~isna(oo)) - assert (~isna(sym(nan))) - assert (isequal (isna (sym ([1 nan])), [false false])) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/expm.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expm.m +[inst/@sym/fliplr.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fliplr.m ***** test - % scalar + % simple syms x - assert (isequal (expm(x), exp(x))) -***** test - % diagonal - A = [sym(1) 0; 0 sym(3)]; - B = [exp(sym(1)) 0; 0 exp(sym(3))]; - assert (isequal (expm(A), B)) -***** test - % diagonal w/ x - syms x positive - A = [sym(1) 0; 0 x+2]; - B = [exp(sym(1)) 0; 0 exp(x+2)]; - assert (isequal (expm(A), B)) -***** test - % non-diagonal - syms x positive - A = [sym(1) 2; 0 x+2]; - B = expm(A); - C = double(subs(B, x, 4)); - D = expm(double(subs(A, x, 4))); - assert (max (max (abs (C - D))) <= 1e-11) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/findsym.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/findsym.m -***** assert (strcmp (findsym (sym(2)), '')); -***** shared x,y,f - x=sym('x'); y=sym('y'); f=x^2+3*x*y-y^2; -***** assert (strcmp (findsym (f), 'x,y')); -***** assert (strcmp (findsym (f,1), 'x')); + A = [x 2; sym(pi) x]; + B = [2 x; x sym(pi)]; + assert (isequal (fliplr(A), B)) ***** test - % test order of returned vars - syms x y a b c xx - % https://www.mathworks.com/matlabcentral/newsreader/view_thread/237730 - alpha = sym('alpha'); - assert (strcmp (findsym(b*xx*exp(alpha) + c*sin(a*y), 2), 'xx,y')) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/uminus.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/uminus.m + % simple, odd # cols + syms x + A = [x 2 sym(pi); x 1 2]; + B = [sym(pi) 2 x; 2 1 x]; + assert (isequal (fliplr(A), B)) ***** test % scalar syms x - assert (isa (-x, 'sym')) - assert (isequal (-(-x), x)) -***** test - % matrix - D = [0 1; 2 3]; - A = sym(D); - assert( isequal( -A, -D )) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/kron.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/kron.m -***** error kron (sym (2)) + assert (isequal (fliplr(x), x)) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/subsindex.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsindex.m ***** test - syms x y - A = [sin(x), sin(y); x, y]; - B = ones(2); - expected = sym([sin(x), sin(x), sin(y), sin(y); sin(x), sin(x), sin(y), sin(y); x, x, y, y; x, x, y, y]); - assert (isequal (kron(A, B), expected)) + i = sym(1); + a = 7; + assert(a(i)==a); + i = sym(2); + a = 2:2:10; + assert(a(i)==4); ***** test - syms x y - A = [sin(x), sin(y); x, y]; - B = 2; - assert (isequal (kron(A, B), 2*A)) + i = sym([1 3 5]); + a = 1:10; + assert( isequal (a(i), [1 3 5])) ***** test - syms x y - A = [sin(x), sin(y)]; - B = 2; - assert (isequal( kron(B, A), 2*A)) + i = sym([1 3 5]); + a = sym(1:10); + assert( isequal (a(i), sym([1 3 5]))); ***** test - syms x y; - X = [tan(x), tan(x)]; - Y = [cot(x); cot(x)]; - expected = sym(ones(2)); - assert (isequal (simplify(kron(X, Y)), expected)) + % should be an error if it doesn't convert to double + syms x + a = 1:10; + try + a(x) + waserr = false; + catch + waserr = true; + end + assert(waserr) ***** test - syms x y z - X = [x, y, z]; - Y = [y, y; x, x]; - expected = [x*y, x*y, y^2, y^2, y*z, y*z; x^2, x^2, x*y, x*y, x*z, x*z]; - assert (isequal (kron(X, Y), expected)) + syms x + assert (isequal (x(sym (true)), x)) + assert (isequal (x(sym (false)), sym ([]))) ***** test - syms x y - X = [x, x^2; y, y^2]; - Y = [1, 0; 0, 1]; - expected = [x, x^2, 0, 0; y, y^2, 0, 0; 0, 0, x, x^2; 0, 0, y, y^2]; - assert (isequal (kron(Y, X), expected)) + x = 6; + assert (isequal (x(sym (true)), 6)) + assert (isequal (x(sym (false)), [])) ***** test - syms x y z - assert (isequal (kron (x, y, z), x*y*z)) - assert (isequal (kron (x, y, z, 4), 4*x*y*z)) - assert (isequal (kron ([2 3], y, z), [2 3]*y*z)) - assert (isequal (kron ([2 3], [4; 5], y), [8 12; 10 15]*y)) + a = sym([10 12 14]); + assert (isequal (a(sym ([true false true])), a([1 3]))) + assert (isequal (a(sym ([false false false])), sym (ones(1,0)))) ***** test - syms x y - A = kron ([x y], [1, -1; -1, 1], [2 3; 4 5]); - D = kron ([7 9], [1, -1; -1, 1], [2 3; 4 5]); - A = double (subs (A, [x y], [7 9])); - assert (isequal (A, D)) + a = [10 11; 12 13]; + p = [true false; true true]; + assert (isequal (a(sym (p)), a(p))) + p = [false false false]; + assert (isequal (a(sym (p)), a(p))) +***** error + a = [10 12]; + I = [sym(true) 2]; + b = a(I); 9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/end.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/end.m +[inst/@sym/conj.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/conj.m ***** test - % scalar - syms x - y = x(1:end); - assert (isequal (x, y)) + a = sym(6); + b = sym(5i); + assert (isequal (conj(a), a)) + assert (isequal (conj(b), -b)) + assert (isequal (conj(a+b), a-b)) ***** test - % vector syms x - A = [1 2 x 4]; - y = A(end-1:end); - assert (isequal (y, [x 4])) + assert (isequal (conj(conj(x)), x)) ***** test - % subset of matrix - syms x - A = [1 2 x; x 3 9; 4 x*x 6]; - y = A(end,1:end-1); - assert (isequal (y, [4 x*x])) + syms x real + assert (isequal (conj(x), x)) ***** test - % linear index of matrix + % array syms x - A = [1 2 x; x 3 9]; - y = A(end); - assert (isequal (y, sym(9))) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/symvar.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symvar.m -***** error symvar (sym(1), 2, 3) -***** test - %% some empty cases - assert (isempty (symvar (sym(1)))); - assert (isempty (symvar (sym(1),1))); - assert (isempty (symvar (sym(1),0))); - assert (isempty (symvar (sym('x'),0))); -***** shared x,y,f - x=sym('x'); y=sym('y'); f=x^2+3*x*y-y^2; -***** assert (isequal (symvar (f), [x y])); -***** assert (isequal (symvar (f, 1), x)); -***** test - %% closest to x - syms x y a b c xx - alpha = sym('alpha'); - % https://www.mathworks.com/matlabcentral/newsreader/view_thread/237730 - assert( isequal (symvar (b*xx*exp(alpha) + c*sin(a*y), 2), [xx y])) - %% tests to match Matlab R2013b -***** shared x,y,z,a,b,c,X,Y,Z - syms x y z a b c X Y Z -***** test - %% X,Y,Z first if no 2nd argument - s = prod([x y z a b c X Y Z]); - assert (isequal( symvar (s), [X Y Z a b c x y z] )) -***** test - %% uppercase have *low* priority with argument? - s = prod([x y z a b c X Y Z]); - assert (isequal (symvar (s,4), [x, y, z, c] )) -***** test - %% closest to x - s = prod([y z a b c Y Z]); - assert (isequal( symvar (s,6), [ y, z, c, b, a, Y] )) - s = prod([a b c Y Z]); - assert (isequal( symvar (s,4), [ c, b, a, Y] )) -***** test - %% upper case letters in correct order - s = X*Y*Z; - assert (isequal( symvar (s,3), [X Y Z] )) -***** test - % diff. assumptions make diff. symbols - x1 = sym('x'); - x2 = sym('x', 'positive'); - f = x1*x2; - assert (length (symvar (f)) == 2) - z = symvar (f, 1); - assert (xor (isequal (z, x1), isequal (z, x2))) -10 tests, 10 passed, 0 known failure, 0 skipped -[inst/@sym/dawson.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dawson.m + A = [x 6+1i; sym(1) x+2i]; + B = [conj(x) 6-1i; sym(1) conj(x)-2i]; + assert (isequal (conj(A), B)) ***** test - if (exist ('OCTAVE_VERSION', 'builtin')) - % dawson missing on Matlab, Issue #742 - A = dawson([1 2]); - B = double(dawson(sym([1 2]))); - assert(A, B, -eps) - end -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/not.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/not.m -***** shared t, f + % true/false t = sym(true); f = sym(false); -***** test - % simple - assert (isequal( ~t, f)) - assert (isequal( ~t, f)) -***** test - % array - w = [t t f t]; - z = [f f t f]; - assert (isequal( ~w, z)) -***** test - % number - assert (isequal( ~sym(5), f)) - assert (isequal( ~sym(0), t)) -***** test - % output is sym - syms x - e = ~(x == 4); - assert (isa (e, 'sym')) - assert (strncmp (sympy(e), 'Unequality', 10)) -***** test - % output is sym even for scalar t/f (should match other bool fcns) - assert (isa (~t, 'sym')) -***** test - % symbol ineq - syms x - a = [t f x == 1 x ~= 2 x < 3 x <= 4 x > 5 x >= 6]; - b = [f t x ~= 1 x == 2 x >= 3 x > 4 x <= 5 x < 6]; - assert (isequal( ~a, b)) -***** test - syms x - y = ~x; - s = disp(y, 'flat'); - assert (strcmp (strtrim (s), '~x') || strcmpi (strtrim (s), 'Not(x)')) -***** error not (sym(1), 2) -8 tests, 8 passed, 0 known failure, 0 skipped -[inst/@sym/ellipticE.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticE.m -***** error ellipticE (sym(1), 2, 3) -***** assert (double (ellipticE (sym (-105)/10)), 3.70961391, 10e-9) -***** assert (double (ellipticE (sym (-pi)/4)), 1.844349247, 10e-10) -***** assert (double (ellipticE (sym (0))), 1.570796327, 10e-10) -***** assert (double (ellipticE (sym (1))), 1, 10e-1) -***** test - % compare to Maple - us = vpa (ellipticE (sym(7)/6, sym(13)/7), 40); - % > evalf(EllipticE(sin(7/6), sqrt(13/7)), 40); - maple = vpa ('0.6263078268598504591831743625971763209496', 40) + ... - vpa ('0.1775496232203171126975790989055865596501j', 40); - assert (abs (double (maple - us)), 0, 2e-39) -***** test - % compare to Maple - us = vpa (ellipticE (sym(8)/7), 40); - % > evalf(EllipticE(sqrt(8/7)), 40); - maple = vpa ('0.8717182992576322508542205614105802333270', 40) + ... - vpa ('0.1066754320328976949531350910798010526685j', 40); - assert (abs (double (maple - us)), 0, 2e-39) -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/children.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/children.m -***** test - % basics, sum - syms x y - f = 2*x + x*x + sin(y); - assert (isempty (setxor (children(f), [2*x x*x sin(y)]))) -***** test - % basics, product - syms x y - f = 2*x*sin(y); - assert (isempty (setxor (children(f), [2 x sin(y)]))) -***** test - % basics, product and powers - syms x y - f = 2*x^2*y^3; - assert (isempty (setxor (children(f), [2 x^2 y^3]))) -***** test - % eqn, ineq - syms x y - lhs = 2*x^2; rhs = y^3 + 7; - assert (isequal (children(lhs == rhs), [lhs rhs])) - assert (isequal (children(lhs < rhs), [lhs rhs])) - assert (isequal (children(lhs >= rhs), [lhs rhs])) -***** test - % matrix - syms x y - f = [4 + y 1 + x; 2 + x 3 + x]; - c = children(f); - ec = {[4 y], [1 x]; [2 x], [3 x]}; - assert (isequal (size(c), size(ec))) - for i=1:length(c) - assert (isempty (setxor (c{i}, ec{i}))) - end -***** test - % matrix, sum/prod - syms x y - f = [x + y; x*sin(y); sin(x)]; - ec = {[x y]; [x sin(y)]; [x]}; - c = children(f); - assert (isequal (size(c), size(ec))) - for i=1:length(c) - assert (isempty (setxor (c{i}, ec{i}))) - end -***** test - % scalar symbol - syms x - assert (isequal (children(x), x)) -***** test - % scalar number - x = sym(6); - assert (isequal (children(x), x)) -***** test - % symbolic size matrix - syms n m integer - A = sym('a', [n m]); - C = children (A); - assert (isequal (C(2), n)) - assert (isequal (C(3), m)) -***** xtest - % symbolic size matrix, fails on newer SymPy Issue #1089 - syms n m integer - A = sym('a', [n m]); - assert (isequal (children (A), [sym('a') n m])) -!!!!! known failure -assert (isequal (children (A), [sym('a'), n, m])) failed -10 tests, 9 passed, 1 known failure, 0 skipped -[inst/@sym/harmonic.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/harmonic.m -***** error harmonic (sym(1), 2) -***** xtest - assert (isequaln (harmonic (sym(nan)), sym(nan))) -!!!!! known failure -assert (isequaln (harmonic (sym (nan)), sym (nan))) failed -***** assert (isequal (harmonic (sym(0)), sym(0))) -***** assert (isinf (harmonic (sym(inf)))) -***** assert (isequal (harmonic (sym([9 10])), [sym(7129)/2520 sym(7381)/2520])) + assert (isequal ( conj(t), t)) + assert (isequal ( conj(f), f)) ***** test % round trip - y = sym('y'); - A = harmonic (7); - f = harmonic (y); - h = function_handle (f); - B = h (7); - assert (A, B, -eps) -6 tests, 5 passed, 1 known failure, 0 skipped -[inst/@sym/char.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/char.m -***** test - % issue #91: expose as string - a = sym(pi); - assert (strcmp (char (a), 'pi')) -***** shared x - x = sym('x'); -***** assert (strcmp (char (x), 'x')) -***** assert (strcmp (char (2*x), '2*x')) -***** assert (strcmp (char ([2*x x]), 'Matrix([[2*x, x]])')) -***** assert (strcmp (char ([2*x 2; 1 x]), 'Matrix([[2*x, 2], [1, x]])')) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/lambertw.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lambertw.m -***** test - % W(x)*exp(W(x)) == x - syms x - T = lambertw(x)*exp(lambertw(x)); - T = double (subs (T, x, 10)); - assert (isequal (T, 10)); -***** test - % k, x not x, k to match SMT - syms x - T = lambertw(2, x)*exp(lambertw(2, x)); - T = double (subs (T, x, 10)); - assert (abs(T - 10) < 1e-15) -***** assert (isequal (lambertw(sym(0)), sym(0))) -***** assert ( isequal (lambertw (-1/exp(sym(1))), -sym(1))) -***** assert ( isequal (lambertw (0, -1/exp(sym(1))), -sym(1))) -***** assert ( isequal (lambertw (-1, -1/exp(sym(1))), -sym(1))) -***** xtest - % W(x)*exp(W(x)) == x; FIXME: a failure in SymPy? syms x - T = simplify(lambertw(x)*exp(lambertw(x))); - assert (isequal (T, x)) -!!!!! known failure -assert (isequal (T, x)) failed -***** assert (abs (lambertw(pi) - double(lambertw(sym(pi)))) < 5*eps) -***** assert (abs (lambertw(-1, 5) - double(lambertw(-1, sym(5)))) < 5*eps) -***** assert (abs (lambertw(2, 2) - double(lambertw(2, sym(2)))) < 5*eps) -***** test - % round trip - syms x k - A = lambertw (5); - f = lambertw (x); - h = function_handle (f); - B = h (5); - assert (A, B) - - A = lambertw (3, 5); - f = lambertw (k, x); + d = 3 - 5i; + f = conj (x); + A = conj (d); h = function_handle (f); - B = h (3, 5); + B = h (d); assert (A, B) -11 tests, 10 passed, 1 known failure, 0 skipped -[inst/@sym/ccode.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ccode.m -***** shared x,y,z - syms x y z -***** test - % basic test - f = x*sin(y) + abs(z); - source = ccode(f); - expected = 'x*sin(y) + fabs(z)'; - assert(strcmp(source, expected)) -***** test - % output test - f = x*sin(y) + abs(z); - [C, H] = ccode(f, 'file', '', 'show_header', false); - expected_c_code = sprintf('#include \"file.h\"\n#include \n\ndouble myfun(double x, double y, double z) {\n\n double myfun_result;\n myfun_result = x*sin(y) + fabs(z);\n return myfun_result;\n\n}\n'); - expected_h_code = sprintf('\n#ifndef PROJECT__FILE__H\n#define PROJECT__FILE__H\n\ndouble myfun(double x, double y, double z);\n\n#endif\n\n'); - assert(strcmp(C.name, 'file.c')) - assert(strcmp(H.name, 'file.h')) - hwin = strrep(expected_h_code, sprintf('\n'), sprintf('\r\n')); - assert (strcmp (H.code, expected_h_code) || strcmp (H.code, hwin)) - s1 = expected_c_code; - s2 = strrep(expected_c_code, sprintf('\n'), sprintf('\r\n')); - assert (strcmp (C.code, s1) || strcmp (C.code, s2)) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/sym.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sym.m -***** test - % integers - x = sym ('2'); - y = sym (2); - assert (isa (x, 'sym')) - assert (isa (y, 'sym')) - assert (isequal (x, y)) -***** test - % infinity - for x = {'inf', '-inf', inf, -inf, 'Inf'} - y = sym (x{1}); - assert (isa (y, 'sym')) - assert (isinf (double (y))) - assert (isinf (y)) - end -***** test - % pi - x = sym ('pi'); - assert (isa (x, 'sym')) - assert (isequal (sin (x), sym (0))) - assert (abs (double (x) - pi) < 2*eps ) - x = sym (pi); - assert (isa (x, 'sym')) - assert (isequal (sin (x), sym (0))) - assert (abs (double (x) - pi) < 2*eps ) -***** test - % rationals - x = sym(1) / 3; - assert (isa (x, 'sym')) - assert (isequal (3*x - 1, sym (0))) - x = 1 / sym (3); - assert (isa (x, 'sym')) - assert (isequal (3*x - 1, sym (0))) - x = sym ('1/3'); - assert (isa (x, 'sym')) - assert (isequal (3*x - 1, sym (0))) -***** test - % passing small rationals - x = sym ('1/2'); - assert (double (x) == 1/2 ) - assert (isequal (2*x, sym (1))) -***** warning x = sym (1/2); -***** test - % passing small rationals w/o quotes: despite the warning, - % it should work - s = warning ('off', 'OctSymPy:sym:rationalapprox'); - x = sym (1/2); - warning (s) - assert (double (x) == 1/2 ) - assert (isequal (2*x, sym (1))) -***** test - assert (isa (sym (pi), 'sym')) - assert (isa (sym ('beta'), 'sym')) -***** test - % sym from array - D = [0 1; 2 3]; - A = [sym(0) 1; sym(2) 3]; - assert (isa (sym (D), 'sym')) - assert (isequal (size (sym (D)), size (D))) - assert (isequal (sym (D), A)) -***** test - % more sym from array - syms x - A = [x x]; - assert (isequal (sym (A), A)) - A = [1 x]; - assert (isequal (sym (A), A)) -***** test - %% assumptions and clearing them - clear variables % for matlab test script - x = sym('x', 'real'); - f = {x {2*x}}; - asm = assumptions(); - assert ( ~isempty(asm)) - s = warning ('off', 'OctSymPy:deprecated'); - x = sym('x', 'clear'); - warning (s) - asm = assumptions(); - assert ( isempty(asm)) -***** test - %% matlab compat, syms x clear should add x to workspace - x = sym('x', 'real'); - f = 2*x; - clear x - assert (~logical(exist('x', 'var'))) - s = warning ('off', 'OctSymPy:deprecated'); - x = sym('x', 'clear'); - warning (s) - assert (logical(exist('x', 'var'))) -***** test - %% assumptions should work if x is already a sym - x = sym('x'); - x = sym(x, 'real'); - assert (~isempty(assumptions(x))) -***** test - %% likewise for clear - x = sym('x', 'real'); - f = 2*x; - s = warning ('off', 'OctSymPy:deprecated'); - x = sym(x, 'clear'); - warning (s) - assert (isempty(assumptions(x))) - assert (isempty(assumptions(f))) -***** test - % bool - t = sym (false); - t = sym (true); - assert (logical (t)) -***** test - % bool vec/mat - a = sym (1); - t = sym ([true false]); - assert (isequal (t, [a == 1 a == 0])) - t = sym ([true false; false true]); - assert (isequal (t, [a == 1 a == 0; a == 0 a == 1])) -***** test - % symbolic matrix - A = sym ('A', [2 3]); - assert (isa (A, 'sym')) - assert (isequal (size (A), [2 3])) - A(1, 1) = 7; - assert (isa (A, 'sym')) - A = A + 1; - assert (isa (A, 'sym')) -***** test - % symbolic matrix, symbolic but Integer size - A = sym ('A', sym([2 3])); - assert (isa (A, 'sym')) - assert (isequal (size (A), [2 3])) -***** test - % symbolic matrix, subs in for size - syms n m integer - A = sym ('A', [n m]); - B = subs (A, [n m], [5 6]); - assert (isa (B, 'sym')) - assert (isequal (size (B), [5 6])) -***** error sym('2*a', [2 3]) -***** error sym(2*sym('a'), [2 3]) -***** error sym('1', [2 3]) -***** error sym(1, [2 3]) -***** error - % TODO: symbolic tensor, maybe supported someday - sym('a', [2 3 4]) -***** test - % 50 shapes of empty - a = sym (ones (0, 3)); - assert (isa (a, 'sym')) - assert (isequal (size (a), [0 3])) - a = sym (ones (2, 0)); - assert (isequal (size (a), [2 0])) - a = sym ([]); - assert (isequal (size (a), [0 0])) -***** test - % moar empty - a = sym ('a', [0 3]); - assert (isa (a, 'sym')) - assert (isequal (size (a), [0 3])) - a = sym ('a', [2 0]); - assert (isa (a, 'sym')) - assert (isequal (size (a), [2 0])) -***** test - % embedded sympy commands, various quotes, issue #143 - a = sym ('a'); - a1 = sym ('Symbol("a")'); - a2 = sym ('Symbol(''a'')'); - assert (isequal (a, a1)) - assert (isequal (a, a2)) - % Octave only, and eval to hide from Matlab parser - if exist ('OCTAVE_VERSION', 'builtin') - eval( 'a3 = sym("Symbol(''a'')");' ); - eval( 'a4 = sym("Symbol(\"a\")");' ); - assert (isequal (a, a3)) - assert (isequal (a, a4)) - end -***** test - % complex - x = sym(1 + 2i); - assert (isequal (x, sym(1)+sym(2)*1i)) -***** test - % doubles bigger than int32 INTMAX should not fail - d = 4294967295; - a = sym (d); - assert (isequal (double (a), d)) - d = d + 123456; - a = sym (d); - assert (isequal (double (a), d)) -***** test - % int32 integer types - a = sym (100); - b = sym (int32 (100)); - assert (isequal (a, b)) -***** test - % int32 MAXINT integers - a = sym ('2147483647'); - b = sym (int32 (2147483647)); - assert (isequal (a, b)) - a = sym ('-2147483647'); - b = sym (int32 (-2147483647)); - assert (isequal (a, b)) - a = sym ('4294967295'); - b = sym (uint32 (4294967295)); - assert (isequal (a, b)) -***** test - % int64 integer types - a = sym ('123456789012345'); - b = sym (int64(123456789012345)); - c = sym (uint64(123456789012345)); - assert (isequal (a, b)) - assert (isequal (a, c)) -***** test - % integer arrays - a = int64 ([1 2 100]); - s = sym (a); - assert (isequal (double (a), [1 2 100])) -***** test - % bigger int64 integer types - q = int64 (123456789012345); - w = 10000*q + 123; - a = sym ('1234567890123450123'); - b = sym (w); - assert (isequal (a, b)) -***** test - % sym(double) heuristic - s = warning ('off', 'OctSymPy:sym:rationalapprox'); - x = sym(2*pi/3); - assert (isequal (x/sym(pi), sym(2)/3)) - x = sym(22*pi); - assert (isequal (x/sym(pi), sym(22))) - x = sym(pi/123); - assert (isequal (x/sym(pi), sym(1)/123)) - warning (s) -***** test - % sym(double) with 'r': no warning - a = 0.1; - x = sym(a, 'r'); - assert (isequal (x, sym(1)/10)) -***** test - % sym(double) array with 'r': no warning - a = [0.1 0.2]; - x = sym(a, 'r'); - assert (isequal (x, [sym(a(1), 'r') sym(a(2), 'r')])) -***** test - % sym(double) array with 'f': no warning - a = [0.1 0.2]; - x = sym(a, 'f'); - assert (isequal (x, [sym(a(1), 'f') sym(a(2), 'f')])) -***** test - % sym(double, 'f') - a = 0.1; - x = sym(a, 'f'); - assert (~isequal (x, sym(1)/10)) - assert (isequal (x, sym('3602879701896397')/sym('36028797018963968'))) -***** test - x = sym(pi, 'f'); - assert (~isequal (x, sym('pi'))) - assert (isequal (x, sym('884279719003555')/sym('281474976710656'))) -***** test - q = sym('3602879701896397')/sym('36028797018963968'); - x = sym(1 + 0.1i, 'f'); - assert (isequal (x, 1 + 1i*q)) - x = sym(0.1 + 0.1i, 'f'); - assert (isequal (x, q + 1i*q)) -***** test - assert (isequal (sym(inf, 'f'), sym(inf))) - assert (isequal (sym(-inf, 'f'), sym(-inf))) - assert (isequaln (sym(nan, 'f'), sym(nan))) - assert (isequal (sym(complex(inf, -inf), 'f'), sym(complex(inf, -inf)))) - assert (isequaln (sym(complex(nan, inf), 'f'), sym(complex(nan, inf)))) - assert (isequaln (sym(complex(-inf, nan), 'f'), sym(complex(-inf, nan)))) -***** test - assert (isequal (sym (sqrt(2), 'r'), sqrt (sym (2)))) - assert (isequal (sym (sqrt(12345), 'r'), sqrt (sym (12345)))) -***** test - % symbols with special sympy names - syms Ei Eq - assert (~isempty (regexp (sympy (Eq), '^Symbol'))) - assert (~isempty (regexp (sympy (Ei), '^Symbol'))) -***** test - % more symbols with special sympy names - x = sym('FF'); - assert (~isempty (regexp (x.pickle, '^Symbol'))) - x = sym('ff'); - assert (~isempty (regexp (x.pickle, '^Symbol'))) -***** test - % E can be a sym not just exp(sym(1)) - syms E - assert (~logical (E == exp(sym(1)))) -***** test - % e can be a symbol, not exp(sym(1)) - syms e - assert (~ logical (e == exp(sym(1)))) -***** test - % double e - x = sym (exp (1)); - y = exp (sym (1)); - assert (isequal (x, y)) - if (exist ('OCTAVE_VERSION', 'builtin')) - x = sym (e); - assert (isequal (x, y)) - end -***** test - x = sym (-exp (1)); - y = -exp (sym (1)); - assert (isequal (x, y)) -***** assert (~ isequal (sym (exp(1)), sym (exp(1), 'f'))) -***** warning sym (1e16); -***** warning sym (-1e16); -***** warning sym (10.33); -***** warning sym (-5.23); -***** warning sym (sqrt (1.4142135623731)); -***** warning sym ([1.2 1.3]); -***** error - x = sym ('x', 'positive2'); -***** error - x = sym ('x', 'integer', 'positive2'); -***** error - x = sym ('x', 'integer2', 'positive'); -***** error - x = sym ('-pi', 'positive') -***** error - x = sym ('pi', 'integer') -***** test - % multiple assumptions - n = sym ('n', 'negative', 'even'); - a = assumptions (n); - assert (strcmp (a, 'n: negative, even') || strcmp (a, 'n: even, negative')) -***** error - % multiple assumptions as a list - % TODO: should this be allowed? - n = sym ('n', {'negative', 'even'}); - a = assumptions (n); - assert (strcmp (a, 'n: negative, even') || strcmp (a, 'n: even, negative')) -***** error - n = sym ('n', {{'negative', 'even'}}); -***** test - % save/load sym objects - syms x - y = 2*x; - a = 42; - myfile = tempname (); - save (myfile, 'x', 'y', 'a') - clear x y a - load (myfile) - assert (isequal (y, 2*x)) - assert (a == 42) - if (exist ('OCTAVE_VERSION', 'builtin')) - assert (unlink (myfile) == 0) - else - delete ([myfile '.mat']) - end -***** test - a = sym ('2.1'); - b = sym (21) / 10; - %% https://github.com/sympy/sympy/issues/11703 - assert (pycall_sympy__ ('return _ins[0] == _ins[1] and hash(_ins[0]) == hash(_ins[1])', a, b)) -***** test - % issue #706 - a = sym('Float("1.23")'); - assert (~ isempty (strfind (char (a), '.'))) -***** assert (isequal (sym({1 2 'a'}), [sym(1) sym(2) sym('a')])); -***** error sym({1 2 'a'}, 'positive'); -***** error sym({'a' 'b'}, 'positive'); +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@sym/expint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expint.m +***** error expint (sym(1), 2, 3) ***** test - a = sym ('--1'); - b = sym ('---1'); - assert (isequal (a, sym (1))) - assert (isequal (b, sym (-1))) + f1 = expint(sym(1)); + f2 = expint(1); + assert( abs(double(f1) - f2) < 1e-15 ) ***** test - % num2cell works on sym arrays - syms x - C1 = num2cell ([x 2 3; 4 5 6*x]); - assert (iscell (C1)) - assert (isequal (size (C1), [2 3])) - assert (isequal (C1{1,1}, x)) - assert (isequal (C1{2,3}, 6*x)) - assert (isequal (C1{1,3}, sym(3))) - assert (isa (C1{1,3}, 'sym')) + f1 = expint(sym(1i)); + f2 = expint(1i); + assert( abs(double(f1) - f2) < 1e-15 ) ***** test - % function_handle - f = @(x, y) y*sin(x); - syms x y - assert (isequal (sym (f), y*sin(x))); - f = @(x) 42; - assert (isequal (sym (f), sym (42))); - f = @() 42; - assert (isequal (sym (f), sym (42))); -***** error - % function_handle - f = @(x) A*sin(x); - sym (f) + D = [1 2; 3 4]; + A = sym(D); + f1 = expint(A); + f2 = expint(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test - % Issue #885 - clear f x % if test not isolated (e.g., on matlab) syms x - f(x) = sym('S(x)'); - f(x) = sym('I(x)'); - f(x) = sym('O(x)'); + A = expint(x); + B = expint(1, x); + assert (isequal (A, B)) ***** test - % sym(sympy(x) == x identity, Issue #890 syms x - f = exp (1i*x); - s = sympy (f); - g = sym (s); - assert (isequal (f, g)) -***** test - % sym(sympy(x) == x identity - % Don't mistake "pi" (which is "srepr(S.Pi)") for a symfun variable - f = sym ('ff(pi, pi)'); - s1 = sympy (f); - s2 = 'FallingFactorial(pi, pi)'; - assert (strcmp (s1, s2)) -***** test - % sym(sympy(x) == x identity - % Don't mistake "I" (which is "srepr(S.ImaginaryUnit)") for a symfun variable - f = sym ('sin(I)'); - g = 1i*sinh (sym (1)); - assert (isequal (f, g)) - s = sympy (f); - assert (isempty (strfind (s, 'Function'))) -***** error - % sym(sympy(x) == x identity - % Don't mistake "true/false" (which is "srepr(S.true)") for a symfun variable - % (Used to print as `S.true` but just `true` in sympy 1.2) - sym ('E(true,false)') -***** test - % some variable names that are special to sympy but should not be for us - f = sym ('f(S, Q, C, O, N)'); - s1 = sympy (f); - s2 = 'Function(''f'')(Symbol(''S''), Symbol(''Q''), Symbol(''C''), Symbol(''O''), Symbol(''N''))'; - assert (strcmp (s1, s2)) -***** test - % For SMT 2014 compatibility, I and E would become ImaginaryUnit and Exp(1) - % but I'm not sure this is by design. This test would need to change if - % we want stricter SMT compatibility. - f = sym ('f(x, I, E)'); - s1 = sympy (f); - s2 = 'Function(''f'')(Symbol(''x''), Symbol(''I''), Symbol(''E''))'; - assert (strcmp (s1, s2)) -***** test - % not the identity, force symfun - f = sym ('FF(w)'); - s1 = sympy (f); - s2 = 'Function(''FF'')(Symbol(''w''))'; - assert (strcmp (s1, s2)) -***** test - % not the identity, force symfun - f = sym ('FF(w, pi)'); - s1 = sympy (f); - s2 = 'Function(''FF'')(Symbol(''w''), pi)'; - assert (strcmp (s1, s2)) -***** test - % not the identity, force symfun - f = sym ('ff(x, y)'); - s1 = sympy (f); - s2 = 'Function(''ff'')(Symbol(''x''), Symbol(''y''))'; - assert (strcmp (s1, s2)) -***** test - % But this one should satisfy "sym(sympy(x) == x" identity - % (OOTB, SymPy has ff -> FallingFactorial) - f = sym ('FallingFactorial(x, y)'); - s1 = sympy (f); - s2 = 'FallingFactorial(Symbol(''x''), Symbol(''y''))'; - assert (strcmp (s1, s2)) -***** error - % certain words cannot be used as variables - if (pycall_sympy__ ('return Version(spver) >= Version("1.10.1")')) - f = sym ('f(x, y, print)') - else - error ('use another variable') - end -86 tests, 86 passed, 0 known failure, 0 skipped -[inst/@sym/abs.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/abs.m -***** error abs (sym(1), 2) -***** assert (isequaln (abs (sym(nan)), sym(nan))) -***** shared x, d - d = -1; - x = sym('-1'); -***** test - f1 = abs(x); - f2 = abs(d); - assert( abs(double(f1) - f2) < 1e-15 ) -***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = abs(A); - f2 = abs(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + A = exp(-x)/x; + B = expint(0, x); + assert (isequal (A, B)) ***** test % round trip - y = sym('y'); - A = abs (d); - f = abs (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/log10.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/log10.m -***** assert (isequal (log10 (sym (1000)), sym (3))) -***** assert (isequal (log10 (sym ([10 100])), sym ([1 2]))) -***** test - % round-trip syms x - f = log10 (x); + A = expint (3); + f = expint (x); h = function_handle (f); - A = h (1.1); - B = log10 (1.1); + B = h (3); assert (A, B, -eps) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/dirac.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dirac.m -***** error dirac (sym(1), 2) -***** assert (isequaln (dirac (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); -***** test - f1 = dirac(x); - f2 = dirac(d); - assert( abs(double(f1) - f2) < 1e-15 ) -***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = dirac(A); - f2 = dirac(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) -***** test +***** error % round trip - y = sym('y'); - A = dirac (d); - f = dirac (y); + syms n x + f = expint (n, x); h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/argnames.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/argnames.m +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/@sym/svd.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/svd.m ***** test - % basic tests + % basic + A = [1 2; 3 4]; + B = sym(A); + sd = svd(A); + s = svd(B); + s2 = double(s); + assert (norm(s2 - sd) <= 10*eps) +***** test + % scalars syms x - f = 2*x; - assert (isempty (argnames(x))) - assert (isempty (argnames(f))) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/atanh.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atanh.m -***** error atanh (sym(1), 2) -***** assert (isequaln (atanh (sym(nan)), sym(nan))) -***** shared x, d - d = 1/2; - x = sym('1/2'); + syms y positive + a = sym(-10); + assert (isequal (svd(a), sym(10))) + assert (isequal (svd(x), sqrt(x*conj(x)))) + assert (isequal (svd(y), y)) ***** test - f1 = atanh(x); - f2 = atanh(d); - assert( abs(double(f1) - f2) < 1e-15 ) + % matrix with symbols + syms x positive + A = [x+1 0; sym(0) 2*x+1]; + s = svd(A); + s2 = subs(s, x, 2); + assert (isequal (s2, [sym(5); 3])) ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = atanh(A); - f2 = atanh(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + % matrix with symbols + syms x positive + A = [x+1 0; sym(0) 2*x+1]; + s = svd(A); + s2 = subs(s, x, 2); + assert (isequal (s2, [sym(5); 3])) ***** test - % round trip - y = sym('y'); - A = atanh (d); - f = atanh (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) + % matrix with symbols, nonneg sing values + syms x real + A = [x 0; 0 sym(-5)]; + s = svd(A); + assert (isequal (s, [abs(x); 5])) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/all.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/all.m -***** test - % matrix - a = [0 3; 1 2]; - s = sym (a); - assert (isequal (all (s), all (a))) - assert (isequal (all (s,1), all (a,1))) - assert (isequal (all (s,2), all (a,2))) -***** test - % vector - a = [1 2 3]; - s = sym (a); - assert (isequal (all (s), all (a))) - assert (isequal (all (s,1), all (a,1))) - assert (isequal (all (s,2), all (a,2))) +[inst/@sym/inv.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/inv.m ***** test - % should fail on symbols + % scalar syms x - s = [1 2 x]; - try - all (s) - waserr = false; - catch - waserr = true; - end - assert (waserr) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/exp.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/exp.m -***** error exp (sym(1), 2) -***** assert (isequaln (exp (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); -***** test - f1 = exp(x); - f2 = exp(d); - assert( abs(double(f1) - f2) < 1e-15 ) -***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = exp(A); - f2 = exp(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + assert (isequal (inv(x), 1/x)) ***** test - % round trip - y = sym('y'); - A = exp (d); - f = exp (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/chebyshevT.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/chebyshevT.m -***** error chebyshevT (sym(1)) -***** error chebyshevT (sym(1), 2, 3) -***** assert (isequaln (chebyshevT (2, sym(nan)), sym(nan))) -***** shared x + % diagonal syms x -***** assert(isequal(chebyshevT(0, x), sym(1))) -***** assert(isequal(chebyshevT(1, x), x)) -***** assert(isequal(chebyshevT(2, x), 2*x*x - 1)) -***** assert(isequal(chebyshevT([0 1 2], x), [sym(1) x (2*x*x-1)])) -***** test - % round trip - syms n z - f = chebyshevT (n, z); - h = function_handle (f, 'vars', [n z]); - A = h (1.1, 2.2); - B = chebyshevT (1.1, 2.2); - assert (A, B) -8 tests, 8 passed, 0 known failure, 0 skipped -[inst/@sym/function_handle.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/function_handle.m -***** shared x,y,z - syms x y z -***** test - % basic test - h = function_handle(2*x); - assert(isa(h, 'function_handle')) - assert(h(3)==6) -***** test - % autodetect inputs - h = function_handle(2*x*y, x+y); - [t1, t2] = h(3,5); - assert(t1 == 30 && t2 == 8) -***** test - % specified inputs - h = function_handle(2*x*y, 'vars', [x y]); - assert(h(3,5)==30) - h = function_handle(2*x*y, x+y, 'vars', [x y]); - [t1, t2] = h(3,5); - assert(t1 == 30 && t2 == 8) -***** test - % cell arrays for vars list - h = function_handle(2*x*y, x+y, 'vars', {x y}); - [t1, t2] = h(3,5); - assert(t1 == 30 && t2 == 8) - h = function_handle(2*x*y, x+y, 'vars', {'x' 'y'}); - [t1, t2] = h(3,5); - assert(t1 == 30 && t2 == 8) -***** test - % cell arrays specify order, overriding symvar order - h = function_handle(x*y, 12/y, 'vars', {y x}); - [t1, t2] = h(3, 6); - assert(t1 == 18 && t2 == 4) - h = function_handle(x*y, 12/y, 'vars', [y x]); - [t1, t2] = h(3, 6); - assert(t1 == 18 && t2 == 4) -***** test - % cell arrays specify order, overriding symvar order - h = function_handle(x*y, 12/y, 'vars', {y x}); - [t1, t2] = h(3, 6); - assert(t1 == 18 && t2 == 4) - h = function_handle(x*y, 12/y, 'vars', [y x]); - [t1, t2] = h(3, 6); - assert(t1 == 18 && t2 == 4) -***** test - % Functions with different names in Sympy. - f = abs(x); % becomes Abs(x) - h = function_handle(f); - assert(h(-10) == 10) - f = ceil(x); - h = function_handle(f); - assert(h(10.1) == 11) -***** test - % 'file' with empty filename returns handle - h = function_handle(2*x*y, 'file', ''); - assert(isa(h, 'function_handle')) - assert(h(3,5)==30) - h = function_handle(2*x*y, 'vars', {x y}, 'file', ''); - assert(isa(h, 'function_handle')) - assert(h(3,5)==30) -***** test - % output to disk - fprintf('\n') - if (exist ('OCTAVE_VERSION', 'builtin')) - temp_file = tempname('', 'oct_'); - else - temp_file = tempname(); - end - % allow loading function from temp_file - [temp_path, ans, ans] = fileparts(temp_file); - addpath(temp_path); - f = function_handle(2*x*y, 2^x, 'vars', {x y z}, 'file', temp_file); - assert( isa(f, 'function_handle')) - addpath(temp_path); % Matlab 2014a needs this? - [a,b] = f(10,20,30); - assert (isnumeric (a) && isnumeric (b)) - assert (a == 400) - assert (b == 1024) - if (exist ('OCTAVE_VERSION', 'builtin')) - assert (unlink([temp_file '.m']) == 0) - else - delete ([temp_file '.m']) - end - % remove temp_path from load path - rmpath(temp_path); - -Wrote file /tmp/oct_ie4jp0.m. -***** test - % output to disk: also works with .m specified - if (exist ('OCTAVE_VERSION', 'builtin')) - temp_file = [tempname('', 'oct_') '.m']; - else - temp_file = [tempname() '.m']; - end - % allow loading function from temp_file - [temp_path, ans, ans] = fileparts(temp_file); - addpath(temp_path); - f = function_handle(2*x*y, 2^x, 'vars', {x y z}, 'file', temp_file); - assert( isa(f, 'function_handle')) - addpath(temp_path); % Matlab 2014a needs this? - [a,b] = f(10,20,30); - assert (isnumeric (a) && isnumeric (b)) - assert (a == 400) - assert (b == 1024) - if (exist ('OCTAVE_VERSION', 'builtin')) - assert (unlink(temp_file) == 0) - else - delete (temp_file) - end - % remove temp_path from load path - rmpath(temp_path); -Wrote file /tmp/oct_ITT7py.m. -***** test - % non-scalar outputs - H = [x y z]; - M = [x y; z 16]; - V = [x;y;z]; - h = function_handle(H, M, V); - [t1,t2,t3] = h(1,2,3); - assert(isequal(t1, [1 2 3])) - assert(isequal(t2, [1 2; 3 16])) - assert(isequal(t3, [1;2;3])) + A = [sym(1) 0; 0 x]; + B = [sym(1) 0; 0 1/x]; + assert (isequal (inv(A), B)) ***** test - % non-scalar outputs in .m files - H = [x y z]; - M = [x y; z 16]; - V = [x;y;z]; - if (exist ('OCTAVE_VERSION', 'builtin')) - temp_file = tempname('', 'oct_'); - else - temp_file = tempname(); - end - % allow loading function from temp_file - [temp_path, ans, ans] = fileparts(temp_file); - addpath(temp_path); - h = function_handle(H, M, V, 'vars', {x y z}, 'file', temp_file); - assert( isa(h, 'function_handle')) - addpath(temp_path); % Matlab 2014a needs this? - [t1,t2,t3] = h(1,2,3); - assert(isequal(t1, [1 2 3])) - assert(isequal(t2, [1 2; 3 16])) - assert(isequal(t3, [1;2;3])) - if (exist ('OCTAVE_VERSION', 'builtin')) - assert (unlink([temp_file '.m']) == 0) - else - delete ([temp_file '.m']) - end - % remove temp_path from load path - rmpath(temp_path); -Wrote file /tmp/oct_nWhJCN.m. + % 2x2 inverse + A = [1 2; 3 4]; + assert (max (max (abs (double (inv (sym (A))) - inv(A)))) <= 3*eps) +***** error + syms a; + A = [a a; a a]; + inv(A) +***** error + syms a; + A = [a a]; + inv(A) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/end.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/end.m ***** test - % order of outputs is lexiographic - syms a A x y - f = y + 10*a + 100*x + 1000*A; - h = function_handle(f); - assert (h(1, 2, 3, 4) == 1000 + 20 + 300 + 4) + % scalar + syms x + y = x(1:end); + assert (isequal (x, y)) ***** test - % https://github.com/gnu-octave/symbolic/issues/854 - f = function_handle (x + 1i*sqrt (sym(3))); - assert (f (1), complex (1, sqrt (3)), -eps) -14 tests, 14 passed, 0 known failure, 0 skipped -[inst/@sym/disp.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/disp.m + % vector + syms x + A = [1 2 x 4]; + y = A(end-1:end); + assert (isequal (y, [x 4])) ***** test + % subset of matrix syms x - s = disp(sin(x)); - assert(strcmp(s, sprintf(' sin(x)\n'))) + A = [1 2 x; x 3 9; 4 x*x 6]; + y = A(end,1:end-1); + assert (isequal (y, [4 x*x])) ***** test + % linear index of matrix syms x - s = disp(sin(x/2), 'flat'); - assert(strcmp(s, sprintf(' sin(x/2)\n'))) + A = [1 2 x; x 3 9]; + y = A(end); + assert (isequal (y, sym(9))) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/eye.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eye.m ***** test - % Examples of 2x0 and 0x2 empty matrices: - a = sym([1 2; 3 4]); - b2x0 = a([true true], [false false]); - b0x2 = a([false false], [true true]); - assert (isequal (size (b2x0), [2 0])) - assert (isequal (size (b0x2), [0 2])) - s = disp(b2x0); - assert(strcmp(s, sprintf(' []\n'))) - s = disp(b0x2); - assert(strcmp(s, sprintf(' []\n'))) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/fortran.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fortran.m -***** shared x,y,z - syms x y z + y = eye(sym(2)); + x = [1 0; 0 1]; + assert( isequal( y, sym(x))) ***** test - % basic test - f = x*sin(y) + abs(z); - source = fortran(f); - expected = ' x*sin(y) + abs(z)'; - s1 = strrep (expected, 'abs', 'Abs'); - assert (strcmp (source, expected) || strcmp (source, s1)) + y = eye(sym(2), 1); + x = [1; 0]; + assert( isequal( y, sym(x))) ***** test - % output test - f = x*sin(y) + abs(z); - [F,H] = fortran(f, 'file', '', 'show_header', false); - expected_h_code = sprintf('\ninterface\nREAL*8 function myfun(x, y, z)\nimplicit none\nREAL*8, intent(in) :: x\nREAL*8, intent(in) :: y\nREAL*8, intent(in) :: z\nend function\nend interface\n\n'); - expected_f_code = sprintf('\nREAL*8 function myfun(x, y, z)\nimplicit none\nREAL*8, intent(in) :: x\nREAL*8, intent(in) :: y\nREAL*8, intent(in) :: z\n\nmyfun = x*sin(y) + abs(z)\n\nend function\n'); - assert(strcmp(F.name, 'file.f90')) - assert(strcmp(H.name, 'file.h')) - %disp(expected_f_code); disp(F.code) - s1 = strrep (expected_f_code, 'abs', 'Abs'); - s2 = strrep (expected_f_code, sprintf ('\n'), sprintf ('\r\n')); - s3 = strrep (s2, 'abs', 'Abs'); - s4 = strrep (expected_h_code, sprintf ('\n'), sprintf ('\r\n')); - assert (strcmp (F.code, expected_f_code) || strcmp (F.code, s1) || strcmp (F.code, s2) || strcmp (F.code, s3)) - assert (strcmp (H.code, expected_h_code) || strcmp (H.code, s4)) -2 tests, 2 passed, 0 known failure, 0 skipped + y = eye(sym(1), 2); + x = [1 0]; + assert( isequal( y, sym(x))) +***** test + y = eye (sym([2 3])); + x = sym (eye ([2 3])); + assert (isequal (y, x)) +***** assert( isa( eye(sym(2), 'double'), 'double')) +***** assert( isa( eye(3, sym(3), 'single') , 'single')) +***** assert( isa( eye(3, sym(3)), 'sym')) +***** assert( isa( eye(3, sym(3), 'sym'), 'sym')) +***** xtest + % Issue #13 + assert( isa( eye(3, 3, 'sym'), 'sym')) +!!!!! known failure +invalid data type specified +9 tests, 8 passed, 1 known failure, 0 skipped [inst/@sym/isconstant.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isconstant.m ***** test @@ -13352,32 +11844,56 @@ B = [false true; true false]; assert (isequal (isconstant (A), B)) 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/cos.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cos.m -***** error cos (sym(1), 2) -***** assert (isequaln (cos (sym(nan)), sym(nan))) +[inst/@sym/acoth.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acoth.m +***** error acoth (sym(1), 2) +***** assert (isequaln (acoth (sym(nan)), sym(nan))) ***** shared x, d - d = 1; - x = sym('1'); + d = 2; + x = sym('2'); ***** test - f1 = cos(x); - f2 = cos(d); + f1 = acoth(x); + f2 = acoth(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = cos(A); - f2 = cos(D); + f1 = acoth(A); + f2 = acoth(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = cos (d); - f = cos (y); + A = acoth (d); + f = acoth (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/ccode.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ccode.m +***** shared x,y,z + syms x y z +***** test + % basic test + f = x*sin(y) + abs(z); + source = ccode(f); + expected = 'x*sin(y) + fabs(z)'; + assert(strcmp(source, expected)) +***** test + % output test + f = x*sin(y) + abs(z); + [C, H] = ccode(f, 'file', '', 'show_header', false); + expected_c_code = sprintf('#include \"file.h\"\n#include \n\ndouble myfun(double x, double y, double z) {\n\n double myfun_result;\n myfun_result = x*sin(y) + fabs(z);\n return myfun_result;\n\n}\n'); + expected_h_code = sprintf('\n#ifndef PROJECT__FILE__H\n#define PROJECT__FILE__H\n\ndouble myfun(double x, double y, double z);\n\n#endif\n\n'); + assert(strcmp(C.name, 'file.c')) + assert(strcmp(H.name, 'file.h')) + hwin = strrep(expected_h_code, sprintf('\n'), sprintf('\r\n')); + assert (strcmp (H.code, expected_h_code) || strcmp (H.code, hwin)) + s1 = expected_c_code; + s2 = strrep(expected_c_code, sprintf('\n'), sprintf('\r\n')); + assert (strcmp (C.code, s1) || strcmp (C.code, s2)) +2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sym/times.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/times.m ***** test @@ -13417,461 +11933,296 @@ assert (~ isempty (strfind (sympy (B.*C), 'Hadamard'))) assert (~ isempty (strfind (sympy (C.*B), 'Hadamard'))) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/isscalar.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isscalar.m -***** assert(isscalar(sym('x'))) -***** test - a = sym([1 2 3]); - assert(~isscalar(a)) -***** assert(~isscalar(sym([]))) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/ssinint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ssinint.m -***** assert (isequal (ssinint(sym(0)), -sym(pi)/2)) -***** test - A = ssinint (sym ([0 1])); - B = [-pi/2 -0.62471325642771360426]; - assert( all(all( abs(double(A)-B) < 1e-15 ))) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/latex.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/latex.m -***** test - syms x - y = sin(x); - assert (strcmp (latex (y), '\sin{\left(x \right)}')) -***** assert (strcmp (latex (exp (sym('x'))), 'e^{x}')) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/sum.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sum.m -***** error sum (sym(1), 2, 3) -***** error sum (sym(1), 42) -***** shared x,y,z - syms x y z -***** assert (isequal (sum (x), x)) -***** assert (isequal (sum ([x y z]), x+y+z)) -***** assert (isequal (sum ([x; y; z]), x+y+z)) -***** assert (isequal (sum ([x y z], 1), [x y z])) -***** assert (isequal (sum ([x y z], 2), x+y+z)) -***** shared a,b - b = [1 2; 3 4]; a = sym(b); -***** assert (isequal (sum(a), sum(b))) -***** assert (isequal (sum(a,1), sum(b,1))) -***** assert (isequal (sum(a,2), sum(b,2))) -***** test - % weird inputs - a = sum('xx', sym(1)); - assert (isequal (a, sym('xx'))) -11 tests, 11 passed, 0 known failure, 0 skipped -[inst/@sym/asinh.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asinh.m -***** error asinh (sym(1), 2) -***** assert (isequaln (asinh (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); +[inst/@sym/double.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/double.m ***** test - f1 = asinh(x); - f2 = asinh(d); - assert( abs(double(f1) - f2) < 1e-15 ) + % numeric scalar + a = double(sym(10)); + assert (a == 10) + assert (isa (a, 'double')) ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = asinh(A); - f2 = asinh(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + % numeric vectors + a = double(sym([10 12])); + assert (isequal (a, [10 12])) + assert (isa (a, 'double')) ***** test - % round trip - y = sym('y'); - A = asinh (d); - f = asinh (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/trace.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/trace.m + % complex + a = 3 + 4i; + b = sym(a); + assert (isequal (double (b), a)) +***** xtest + % unexpected, precisely same floating point + a = 3 + 4i; + b = sym(a); + assert (isequal (double (b/pi), a/pi)) ***** test - % scalar - syms x - assert (isequal (trace(x), x)) + % floating point + x = sqrt(sym(2)); + assert( abs(double(x) - sqrt(2)) < 2*eps) + x = sym(pi); + assert( abs(double(x) - pi) < 2*eps) ***** test - syms x - A = [x 3; 2*x 5]; - assert (isequal (trace(A), x + 5)) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/atan.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atan.m -***** error atan (sym(1), 2) -***** assert (isequaln (atan (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); + oo = sym(inf); + assert( double(oo) == inf ) + assert( double(-oo) == -inf ) + assert( isnan(double(0*oo)) ) ***** test - f1 = atan(x); - f2 = atan(d); - assert( abs(double(f1) - f2) < 1e-15 ) + zoo = sym('zoo'); + assert (double(zoo) == complex(inf, inf)) ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = atan(A); - f2 = atan(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + zoo = sym('zoo'); + assert (double(-zoo) == double(zoo) ) + assert( isnan(double(0*zoo)) ) ***** test - % round trip - y = sym('y'); - A = atan (d); - f = atan (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/null.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/null.m + % nan + snan = sym(nan); + assert( isnan(double(snan))) ***** test - A = sym([1 2; 3 4]); - assert (isempty (null (A))) -***** assert (isempty (null (sym(4)))) + % don't want NaN+NaNi + snan = sym(nan); + assert (isreal (double (snan))) ***** test - A = sym([1 2 3; 3 4 5]); - assert (isequal (null(A), sym([1;-2;1]))) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/adjoint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/adjoint.m + % arrays + a = [1 2; 3 4]; + assert( isequal( double(sym(a)), a )) + assert( isequal( double(sym(a)), a )) + % should fail with error for non-double +***** error syms x; double(x) +***** error syms x; double([1 2 x]) +13 tests, 13 passed, 0 known failure, 0 skipped +[inst/@sym/assumeAlso.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/assumeAlso.m ***** test syms x - A = [x x^2; x^3 x^4]; - B = [x^4 -x^2; -x^3 x]; - assert( isequal( adjoint(A), B )) -***** test syms x - assert( isequal( adjoint(x), 1)) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/inv.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/inv.m -***** test - % scalar + x = assumeAlso(x, 'positive'); + a = assumptions(x); + assert(strcmp(a, 'x: positive')) +***** error syms x - assert (isequal (inv(x), 1/x)) + x = assumeAlso (x, x); ***** test - % diagonal - syms x - A = [sym(1) 0; 0 x]; - B = [sym(1) 0; 0 1/x]; - assert (isequal (inv(A), B)) + syms x positive + x = assumeAlso(x, 'integer'); + [tilde, a] = assumptions(x, 'dict'); + assert(a{1}.integer) + assert(a{1}.positive) ***** test - % 2x2 inverse - A = [1 2; 3 4]; - assert (max (max (abs (double (inv (sym (A))) - inv(A)))) <= 3*eps) -***** error - syms a; - A = [a a; a a]; - inv(A) -***** error - syms a; - A = [a a]; - inv(A) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/beta.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/beta.m -***** error beta (sym(1), 2, 3) -***** assert (isequal (double (beta (sym(1), 2)), 1/2)) -***** assert (isinf (double (beta (sym(1), 0)))) + % multiple assumptions + syms x positive + x = assumeAlso(x, 'integer', 'even'); + [tilde, a] = assumptions(x, 'dict'); + assert(a{1}.integer) + assert(a{1}.positive) + assert(a{1}.even) ***** test - % round trip - syms x y - f = beta (x, y); - h = function_handle (f); - A = h (1.1, 2.2); - B = beta (1.1, 2.2); - assert (A, B) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/mod.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mod.m -***** error mod (sym(1), 2, 3 ,4) -***** assert (isequal (mod (sym(5), 4), sym(1))) -***** assert (isequal (mod ([sym(5) 8], 4), [1 0] )) -***** assert (isequal (mod (sym(5), [2 3]), [1 2] )) -***** assert (isequal (mod ([sym(5) sym(6)], [2 3]), [1 0] )) + % multiple assumptions + syms x integer + x = assumeAlso (x, 'even', 'positive'); + [tilde, a] = assumptions (x, 'dict'); + assert (a{1}.integer) + assert (a{1}.even) + assert (a{1}.positive) ***** test - syms x - assert (isequal ( mod (5*x, 3), 2*x )) + % has output so avoids workspace + syms x positive + x2 = x; + f = sin(x); + assumeAlso(x, 'integer'); + a = assumptions(x); + assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) + a = assumptions(x2); + assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) + a = assumptions(f); + assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) ***** test - syms x - a = [7*x^2 + 3*x + 3 3*x; 13*x^4 6*x]; - assert (isequal ( mod (a,3), [x^2 0; x^4 0] )) + % has no output so does workspace + syms x positive + x2 = x; + f = sin(x); + assumeAlso(x, 'integer'); + a = assumptions(x); + assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) + a = assumptions(x2); + assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) + a = assumptions(f); + assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) +***** error + syms a + assumeAlso (a > 0) ***** test - % vector of polys with mix of vars: symvar on each syms x y - a = [6*x 7*y]; - b = mod(a, 4); - c = [2*x 3*y]; - assert (isequal (b, c)) -***** test - % coeff has variable - syms x - n = sym('n', 'integer'); - p = (3*n + 2)*x; - q = mod(p, 3); - assert (isequal (q, 2*x)) + assumeAlso ([x y], 'even') + assert (strcmp (assumptions (x), 'x: even')) + assert (strcmp (assumptions (y), 'y: even')) ***** test - % coeff has variable - syms x a - p = a*x; - q = mod(p, 3); - q = children(q); - q = q(2); % order might be fragile! - w = subs(q, a, 5); - assert (isequal (w, 2)) + syms x y positive + f = sin (2*x); + assumeAlso ([x y], 'even') + assert (strcmp (assumptions (x), 'x: even, positive') || strcmp (assumptions (x), 'x: positive, even')) + assert (strcmp (assumptions (y), 'y: even, positive') || strcmp (assumptions (y), 'y: positive, even')) + assert (strcmp (assumptions (f), 'x: even, positive') || strcmp (assumptions (f), 'x: positive, even')) ***** test - % different modulo - syms x y - q = mod([5*x + 10 5*y + 10], [2 3]); - assert (isequal (q, [x 2*y + 1])) + % with output, original x and y are unchanged + syms x y positive + f = sin (2*x); + [p, q] = assumeAlso ([x y], 'even'); + assert (strcmp (assumptions (x), 'x: positive')) + assert (strcmp (assumptions (y), 'y: positive')) + assert (strcmp (assumptions (f), 'x: positive')) + assert (strcmp (assumptions (p), 'x: even, positive') || strcmp (assumptions (p), 'x: positive, even')) + assert (strcmp (assumptions (q), 'y: even, positive') || strcmp (assumptions (q), 'y: positive, even')) 11 tests, 11 passed, 0 known failure, 0 skipped -[inst/@sym/acos.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acos.m -***** error acos (sym(1), 2) -***** assert (isequaln (acos (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); -***** test - f1 = acos(x); - f2 = acos(d); - assert( abs(double(f1) - f2) < 1e-15 ) -***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = acos(A); - f2 = acos(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +[inst/@sym/char.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/char.m ***** test - % round trip - y = sym('y'); - A = acos (d); - f = acos (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) + % issue #91: expose as string + a = sym(pi); + assert (strcmp (char (a), 'pi')) +***** shared x + x = sym('x'); +***** assert (strcmp (char (x), 'x')) +***** assert (strcmp (char (2*x), '2*x')) +***** assert (strcmp (char ([2*x x]), 'Matrix([[2*x, x]])')) +***** assert (strcmp (char ([2*x 2; 1 x]), 'Matrix([[2*x, 2], [1, x]])')) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/dsolve.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dsolve.m -***** error dsolve (1, sym('x')) -***** test - syms y(x) - de = diff(y, 2) - 4*y == 0; - f = dsolve(de); - syms C1 C2 - g1 = C1*exp(-2*x) + C2*exp(2*x); - g2 = C2*exp(-2*x) + C1*exp(2*x); - assert (isequal (f, g1) || isequal (f, g2)) -***** test - % Not enough initial conditions - syms y(x) C1 - de = diff(y, 2) + 4*y == 0; - g = 3*cos(2*x) + C1*sin(2*x); - try - f = dsolve(de, y(0) == 3); - waserr = false; - catch - waserr = true; - expectederr = regexp (lasterr (), 'Perhaps.*under-specified'); - f = 42; - end - assert ((waserr && expectederr) || isequal (f, g)) -***** test - % Solution in implicit form - syms y(x) C1 - de = (2*x*y(x) - exp(-2*y(x)))*diff(y(x), x) + y(x) == 0; - sol = dsolve (de); - eqn = x*exp(2*y(x)) - log(y(x)) == C1; - % could differ by signs - sol = lhs (sol) - rhs (sol); - eqn = lhs (eqn) - rhs (eqn); - sol2 = subs (sol, C1, -C1); - assert (isequal (sol, eqn) || isequal (sol2, eqn)) -***** test - % Compute solution and classification - syms y(x) C1 - de = (2*x*y(x) - exp(-2*y(x)))*diff(y(x), x) + y(x) == 0; - [sol, classy] = dsolve (de); - assert (any (strcmp (classy, '1st_exact'))) -***** test - % initial conditions (first order ode) - syms y(x) - de = diff(y, x) + 4*y == 0; - f = dsolve(de, y(0) == 3); - g = 3*exp(-4*x); - assert (isequal (f, g)) -***** test - % initial conditions (second order ode) - syms y(x) - de = diff(y, 2) + 4*y == 0; - f = dsolve(de, y(0) == 3, subs(diff(y,x),x,0)==0); - g = 3*cos(2*x); - assert (isequal (f, g)) +[inst/@sym/cross.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cross.m +***** error cross (sym(1), 2, 3) ***** test - % Dirichlet boundary conditions (second order ode) - syms y(x) - de = diff(y, 2) + 4*y == 0; - f = dsolve(de, y(0) == 2, y(1) == 0); - g = -2*sin(2*x)/tan(sym('2'))+2*cos(2*x); - assert (isequal (simplify (f - g), 0)) + a = sym([1; 0; 0]); + b = sym([0; 1; 0]); + c = cross(a, b); + assert (isequal (c, sym([0; 0; 1]))) ***** test - % Neumann boundary conditions (second order ode) - syms y(x) - de = diff(y, 2) + 4*y == 0; - f = dsolve(de, subs(diff(y,x),x,0)==1, subs(diff(y,x),x,1)==0); - g = sin(2*x)/2+cos(2*x)/(2*tan(sym('2'))); - assert (isequal (simplify (f - g), 0)) + syms x + a = sym([x; 0; 0]); + b = sym([0; 1; 0]); + c = cross(a, b); + assert (isequal (c, sym([0; 0; x]))) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/lu.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lu.m ***** test - % Dirichlet-Neumann boundary conditions (second order ode) - syms y(x) - de = diff(y, 2) + 4*y == 0; - f = dsolve(de, y(0) == 3, subs(diff(y,x),x,1)==0); - g = 3*sin(2*x)*tan(sym('2'))+3*cos(2*x); - assert (isequal (simplify (f - g), 0)) + % scalar + [l, u, p] = lu(sym(6)); + assert (isequal (l, sym(1))) + assert (isequal (u, sym(6))) + assert (isequal (p, sym(1))) + syms x + [l, u, p] = lu(x); + assert (isequal (l*u, p*x)) + [l, u] = lu(x); + assert (isequal (l*u, x)) ***** test - % System of ODEs gives struct, Issue #1003. - syms x(t) y(t) - ode1 = diff(x(t),t) == 2*y(t); - ode2 = diff(y(t),t) == 2*x(t); - soln = dsolve([ode1, ode2]); - assert (isstruct (soln)) - assert (numfields (soln) == 2) - assert (isequal (sort (fieldnames (soln)), {'x'; 'y'})) + % perm + A = sym(fliplr(2*eye(3))); + [L, U, P] = lu(A); + assert (isequal (L*U, P*A)) + [L, U, P] = lu(A, 'matrix'); + assert (isequal (L*U, P*A)) + [L, U, p] = lu(A, 'vector'); + assert (isequal (L*U, A(p,:))) + [L, U] = lu(A); + assert (isequal (L*U, A)) ***** test - % System of ODEs - syms x(t) y(t) C1 C2 - ode1 = diff(x(t),t) == 2*y(t); - ode2 = diff(y(t),t) == 2*x(t); - soln = dsolve([ode1, ode2]); - soln = [soln.x, soln.y]; - g1 = [C1*exp(-2*t) + C2*exp(2*t), -C1*exp(-2*t) + C2*exp(2*t)]; - g2 = [C1*exp(2*t) + C2*exp(-2*t), C1*exp(2*t) - C2*exp(-2*t)]; - g3 = [-C1*exp(-2*t) + C2*exp(2*t), C1*exp(-2*t) + C2*exp(2*t)]; - g4 = [C1*exp(2*t) - C2*exp(-2*t), C1*exp(2*t) + C2*exp(-2*t)]; - % old SymPy <= 1.5.1 had some extra twos - g5 = [2*C1*exp(-2*t) + 2*C2*exp(2*t), -2*C1*exp(-2*t) + 2*C2*exp(2*t)]; - g6 = [2*C1*exp(2*t) + 2*C2*exp(-2*t), 2*C1*exp(2*t) - 2*C2*exp(-2*t)]; - assert (isequal (soln, g1) || isequal (soln, g2) || ... - isequal (soln, g3) || isequal (soln, g4) || ... - isequal (soln, g5) || isequal (soln, g6)) + % p is col vectpr + A = sym([0 2; 3 4]); + [L, U, p] = lu(A, 'vector'); + assert(iscolumn(p)) ***** test - % System of ODEs (initial-value problem) - syms x(t) y(t) - ode_1=diff(x(t),t) == 2*y(t); - ode_2=diff(y(t),t) == 2*x(t); - sol_ivp=dsolve([ode_1,ode_2],x(0)==1,y(0)==0); - g_ivp=[exp(-2*t)/2+exp(2*t)/2,-exp(-2*t)/2+exp(2*t)/2]; - assert (isequal ([sol_ivp.x, sol_ivp.y], g_ivp)) + % simple matrix + A = [1 2; 3 4]; + B = sym(A); + [L, U, P] = lu(B); + assert (isequal (L*U, P*B)) + assert (isequal (U(2,1), sym(0))) + % needs pivot + A = [0 2; 3 4]; + B = sym(A); + [L, U, P] = lu(B); + [Ld, Ud, Pd] = lu(A); + assert (isequal (L*U, P*A)) + assert (isequal (U(2,1), sym(0))) + % matches regular LU + assert ( max(max(double(L)-Ld)) <= 10*eps) + assert ( max(max(double(U)-Ud)) <= 10*eps) + assert ( isequal (P, Pd)) ***** test - syms y(x) - de = diff(y, 2) + 4*y == 0; - f = dsolve(de, y(0) == 0, y(sym(pi)/4) == 1); - g = sin(2*x); - assert (isequal (f, g)) + % rectangular + A = sym([1 2; 3 4; 5 6]); + [L, U] = lu (A); + assert (isequal (L*U, A)) ***** test - % Nonlinear example - syms y(x) C1 - e = diff(y, x) == y^2; - g = -1 / (C1 + x); - soln = dsolve(e); - assert (isequal (soln, g)) + % rectangular + A = sym([1 2 3; 4 5 6]); + [L, U] = lu (A); + assert (isequal (L*U, A)) ***** test - % Nonlinear example with initial condition - syms y(x) - e = diff(y, x) == y^2; - g = -1 / (x - 1); - soln = dsolve(e, y(0) == 1); - assert (isequal (soln, g)) + % rectangular, repeated row + A = sym([1 2 3; 2 4 6]); + [L, U] = lu (A); + assert (isequal (L*U, A)) ***** test - % forcing, Issue #183, broken in older sympy - if (pycall_sympy__ ('return Version(spver) >= Version("1.7.1")')) - syms x(t) y(t) - ode1 = diff(x) == x + sin(t) + 2; - ode2 = diff(y) == y - t - 3; - soln = dsolve([ode1 ode2], x(0) == 1, y(0) == 2); - X = soln.x; - Y = soln.y; - assert (isequal (diff(X) - (X + sin(t) + 2), 0)) - assert (isequal (diff(Y) - (Y - t - 3), 0)) - end + % rectangular, needs permutation + A = sym([0 0 0; 1 2 3]); + [L, U] = lu (A); + assert (isequal (L*U, A)) + assert (~isequal (tril (L), L)) + [L, U, P] = lu (A); + assert (isequal (L*U, P*A)) + assert (isequal (tril (L), L)) +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/@sym/mtimes.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mtimes.m ***** test - syms f(x) a b - de = diff(f, x) == 4*f; - s = dsolve(de, f(a) == b); - assert (isequal (subs(s, x, a), b)) + % scalar + syms x + assert (isa (x*2, 'sym')) + assert (isequal (2*sym(3), sym(6))) + assert (isequal (sym(2)*3, sym(6))) ***** test - % array of ICs - syms x(t) y(t) - ode_1 = diff (x(t), t) == 2*y(t); - ode_2 = diff (y(t), t) == 2*x(t); - sol = dsolve([ode_1, ode_2], [x(0)==1 y(0)==0]); - g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; - assert (isequal ([sol.x, sol.y], g)) + % matrix-scalar + D = [0 1; 2 3]; + A = sym(D); + assert (isa (2*A, 'sym')) + assert (isequal ( 2*A , 2*D )) + assert (isequal ( A*2 , 2*D )) ***** test - % cell-array of ICs or ODEs, but not both - % Note: to support both we'd need a wrapper outside of @sym - syms x(t) y(t) - ode_1 = diff (x(t), t) == 2*y(t); - ode_2 = diff (y(t), t) == 2*x(t); - sol = dsolve([ode_1, ode_2], {x(0)==1 y(0)==0}); - g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; - assert (isequal ([sol.x, sol.y], g)) - sol = dsolve({ode_1, ode_2}, [x(0)==1 y(0)==0]); - g = [exp(-2*t)/2+exp(2*t)/2, -exp(-2*t)/2+exp(2*t)/2]; - assert (isequal ([sol.x, sol.y], g)) + % matrix-matrix + D = [0 1; 2 3]; + A = sym(D); + assert (isa (A*A, 'sym')) + assert (isequal ( A*A , D*D )) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/sind.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sind.m +***** error sind (sym(1), 2) +***** assert (isequaln (sind (sym(nan)), sym(nan))) ***** test - % array of ICs, Issue #1040. - if (pycall_sympy__ ('return Version(spver) >= Version("1.7.1")')) - syms x(t) y(t) z(t) - syms x_0 y_0 z_0 - diffEqns = [diff(x, t) == -x + 1, diff(y, t) == -y, diff(z, t) == -z]; - initCond = [x(0) == x_0, y(0) == y_0, z(0) == z_0]; - soln = dsolve (diffEqns, initCond); - soln = [soln.x, soln.y, soln.z]; - exact_soln = [(x_0 - 1)*exp(-t) + 1 y_0*exp(-t) z_0*exp(-t)]; - assert (isequal (soln, exact_soln)) - end -21 tests, 21 passed, 0 known failure, 0 skipped -[inst/@sym/acoth.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acoth.m -***** error acoth (sym(1), 2) -***** assert (isequaln (acoth (sym(nan)), sym(nan))) -***** shared x, d - d = 2; - x = sym('2'); + f1 = sind (sym(1)); + f2 = sind (1); + assert (double (f1), f2, -eps) ***** test - f1 = acoth(x); - f2 = acoth(d); - assert( abs(double(f1) - f2) < 1e-15 ) + D = [10 30; 110 -45]; + A = sym(D); + f1 = sind (A); + f2 = sind (D); + assert (double (f1), f2, -eps) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/atand.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atand.m +***** error atand (sym(1), 2) +***** assert (isequaln (atand (sym(nan)), sym(nan))) ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = acoth(A); - f2 = acoth(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + f1 = atand (sym(1)/2); + f2 = atand (1/2); + assert (double (f1), f2, -eps) ***** test - % round trip - y = sym('y'); - A = acoth (d); - f = acoth (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/ezcontour.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezcontour.m -***** error - syms x y z - ezcontour (x*y*z) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/ellipticCPi.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCPi.m -***** error ellipticCPi (sym (1)) -***** error ellipticCPi (sym (1), 2, 3) -***** assert (double (ellipticCPi (0, sym (1)/2)), 1.854074677, 10e-10) -***** assert (double (ellipticCPi (sym (6)/10, sym(71)/10)), 1.29469534336658, -20*eps) + D = [1 2; 3 4]/4; + A = sym([1 2; 3 4])/4; + f1 = atand (A); + f2 = atand (D); + assert (double (f1), f2, -eps) 4 tests, 4 passed, 0 known failure, 0 skipped [inst/@sym/isnan.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isnan.m @@ -13922,438 +12273,736 @@ y = sym('NaN'); assert (isempty( strfind (sympy (y), 'Symbol'))) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/imag.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/imag.m -***** assert (isequal (imag (sym (4) + 3i),3)) -***** test - syms x y real - z = x + 1i*y; - assert (isequal (imag (z),y)) -***** test - syms x y real - Z = [4 x + 1i*y; 1i*y 4 + 3i]; - assert (isequal (imag (Z),[0 y; y 3])) -***** test - syms x real - d = exp (x*i); - assert (isequal (imag (d), sin (x))) -***** test - % round trip - syms x - d = 3 - 5i; - f = imag (x); - A = imag (d); - h = function_handle (f); - B = h (d); - assert (A, B) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/ipermute.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ipermute.m -***** error permute (sym(1)) -***** error permute (sym(1), 2, 3) -***** test - syms x - A = [1 x]; - perm = [2 1]; - B = permute(A, perm); - C = ipermute(B, perm); - assert (isequal(C, A)) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/sec.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sec.m -***** error sec (sym(1), 2) -***** assert (isequaln (sec (sym(nan)), sym(nan))) +[inst/@sym/logint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/logint.m +***** error logint (sym(1), 2) +***** xtest + assert (isequaln (logint (sym(nan)), sym(nan))) +!!!!! known failure +assert (isequaln (logint (sym (nan)), sym (nan))) failed ***** shared x, d - d = 1; - x = sym('1'); + d = 2; + x = sym('2'); ***** test - f1 = sec(x); - f2 = sec(d); + f1 = logint(x); + f2 = 1.045163780117492784845; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = sec(A); - f2 = sec(D); + f1 = logint(A); + f2 = 1.045163780117492784845; + f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = sec (d); - f = sec (y); + A = logint (d); + f = logint (y); h = function_handle (f); B = h (d); assert (A, B, -eps) +5 tests, 4 passed, 1 known failure, 0 skipped +[inst/@sym/diff.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/diff.m +***** shared x,y,z + syms x y z +***** test + % basic + assert(logical( diff(sin(x)) - cos(x) == 0 )) + assert(logical( diff(sin(x),x) - cos(x) == 0 )) + assert(logical( diff(sin(x),x,x) + sin(x) == 0 )) +***** test + % these fail when doubles are not converted to sym + assert(logical( diff(sin(x),x,2) + sin(x) == 0 )) + assert(logical( diff(sym(1),x) == 0 )) + assert(logical( diff(1,x) == 0 )) + assert(logical( diff(pi,x) == 0 )) +***** test + % symbolic diff of const (w/o variable) fails in sympy, but we work around + assert (isequal (diff(sym(1)), sym(0))) +***** test + % nth symbolic diff of const + assert (isequal (diff(sym(1), 2), sym(0))) + assert (isequal (diff(sym(1), sym(1)), sym(0))) +***** test + % octave's vector difference still works + assert(isempty(diff(1))) + assert((diff([2 6]) == 4)) +***** test + % other forms + f = sin(x); + g = diff(f,x,2); + assert (isequal (diff(f,2), g)) + assert (isequal (diff(f,sym(2)), g)) + g = diff(f,x); + assert (isequal (diff(f), g)) + assert (isequal (diff(f,1), g)) +***** test + % old SMT supported (still does?) the 'n' before the 'x' + % we might remove this someday, no longer seems documented in SMT + f = sin(x); + g = diff(f,x,2); + assert (isequal (diff(f,2,x), g)) + assert (isequal (diff(f,sym(2),x), g)) + g = diff(f,x); + assert (isequal (diff(f,1,x), g)) +***** test + % matrix + A = [x sin(x); x*y 10]; + B = [1 cos(x); y 0]; + assert(isequal(diff(A,x),B)) +***** test + % bug: use symvar + a = x*y; + b = diff(a); + assert (isequal (b, y)) +***** test + % bug: symvar should be used on the matrix, not comp-by-comp + a = [x y x*x]; + b = diff(a); + assert (~isequal (b(2), 1)) + assert (isequal (b, [1 0 2*x])) + b = diff(a,1); + assert (~isequal (b(2), 1)) + assert (isequal (b, [1 0 2*x])) +10 tests, 10 passed, 0 known failure, 0 skipped +[inst/@sym/transpose.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/transpose.m +***** test + x = sym(1); + assert (isequal (x.', x)) +***** assert (isempty (sym([]).')) +***** test + syms x; + assert (isequal (x.', x)) +***** test + A = [1 2; 3 4]; + assert(isequal( sym(A).' , sym(A.') )) +***** test + A = [1 2] + 1i; + assert(isequal( sym(A).' , sym(A.') )) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/angle.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/angle.m +[inst/@sym/rows.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rows.m ***** test - Z = [sqrt(sym(3)) + 3*sym(i), 3 + sqrt(sym(3))*sym(i); 1 + sym(i), sym(i)]; - Q = [sym(pi)/3 sym(pi)/6; sym(pi)/4 sym(pi)/2]; - assert( isequal( angle(Z), Q)); + a = sym([1 2 3]); + assert (rows(a) == 1) ***** test - % roundtrip - syms x - A = angle (2+2i); - f = angle (x); - h = function_handle (f); - B = h (2+2i); - assert (A, B, -eps) + a = sym([1 2 3; 4 5 6]); + assert (rows(a) == 2) 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/iscolumn.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/iscolumn.m -***** assert (iscolumn (sym ([1]))) -***** assert (iscolumn (sym ([1 2 3]'))) -***** assert (~iscolumn (sym ([]))) -***** assert (~iscolumn (sym ([1 2 3]))) -***** assert (~iscolumn (sym ([1 2; 3 4]))) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/cosh.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosh.m -***** error cosh (sym(1), 2) -***** assert (isequaln (cosh (sym(nan)), sym(nan))) +[inst/@sym/isscalar.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isscalar.m +***** assert(isscalar(sym('x'))) +***** test + a = sym([1 2 3]); + assert(~isscalar(a)) +***** assert(~isscalar(sym([]))) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/erfi.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfi.m +***** error erfi (sym(1), 2) +***** assert (isequaln (erfi (sym(nan)), sym(nan))) ***** shared x, d - d = 1; - x = sym('1'); + d = 0; + x = sym('0'); ***** test - f1 = cosh(x); - f2 = cosh(d); + f1 = erfi(x); + f2 = 0; assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = cosh(A); - f2 = cosh(D); + f1 = erfi(A); + f2 = 0; + f2 = [f2 f2; f2 f2]; assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = cosh (d); - f = cosh (y); + A = erfi (d); + f = erfi (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/real.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/real.m -***** assert (isequal (real (sym (4) + 3i),4)) +[inst/@sym/expand.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/expand.m ***** test - syms x y real - z = x + 1i*y; - assert (isequal (real (z),x)) + syms x + assert (logical (x^2 + 6*x + 5 == expand ((x+5)*(x+1)))) + assert (isequal (x^2 + 6*x + 5, expand ((x+5)*(x+1)))) ***** test - syms x y real - Z = [4 x + 1i*y; x 4 + 3i]; - assert (isequal (real (Z),[4 x; x 4])) + % array + syms x + assert (isequal (expand ([x (x+1)*x]), [x x^2+x])) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/taylor.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/taylor.m ***** test - syms x real - d = exp (x*i); - assert (isequal (real (d), cos (x))) + syms x + f = exp(x); + expected = 1 + x + x^2/2 + x^3/6 + x^4/24 + x^5/120; + assert (isequal (taylor(f), expected)) + assert (isequal (taylor(f,x), expected)) + assert (isequal (taylor(f,x,0), expected)) ***** test - % round trip syms x - d = 3 - 5i; - f = real (x); - A = real (d); - h = function_handle (f); - B = h (d); - assert (A, B) + f = exp(x); + expected = 1 + x + x^2/2 + x^3/6 + x^4/24; + assert (isequal (taylor(f,'order',5), expected)) + assert (isequal (taylor(f,x,'order',5), expected)) + assert (isequal (taylor(f,x,0,'order',5), expected)) +***** test + % key/value ordering doesn't matter + syms x + f = exp(x); + g1 = taylor(f, 'expansionPoint', 1, 'order', 3); + g2 = taylor(f, 'order', 3, 'expansionPoint', 1); + assert (isequal (g1, g2)) +***** test + syms x + f = x^2; + assert (isequal (taylor(f,x,0,'order',0), 0)) + assert (isequal (taylor(f,x,0,'order',1), 0)) + assert (isequal (taylor(f,x,0,'order',2), 0)) + assert (isequal (taylor(f,x,0,'order',3), x^2)) + assert (isequal (taylor(f,x,0,'order',4), x^2)) +***** test + syms x y + f = exp(x)+exp(y); + expected = 2 + x + x^2/2 + x^3/6 + x^4/24 + y + y^2/2 + y^3/6 + y^4/24; + assert (isAlways(taylor(f,[x,y],'order',5)== expected)) + assert (isAlways(taylor(f,[x,y],[0,0],'order',5) == expected)) +***** test + % key/value ordering doesn't matter + syms x + f = exp(x); + g1 = taylor(f, 'expansionPoint', 1, 'order', 3); + g2 = taylor(f, 'order', 3, 'expansionPoint', 1); + assert (isequal (g1, g2)) +***** test + syms x + f = x^2; + assert (isequal (taylor(f,x,0,'order',0), 0)) + assert (isequal (taylor(f,x,0,'order',1), 0)) + assert (isequal (taylor(f,x,0,'order',2), 0)) + assert (isequal (taylor(f,x,0,'order',3), x^2)) + assert (isequal (taylor(f,x,0,'order',4), x^2)) +***** test + % syms for a and order + syms x + f = x^2; + assert (isequal (taylor(f,x,sym(0),'order',sym(2)), 0)) + assert (isequal (taylor(f,x,sym(0),'order',sym(4)), x^2)) +***** test + syms x y + f = exp (x^2 + y^2); + expected = 1+ x^2 +y^2 + x^4/2 + x^2*y^2 + y^4/2; + assert (isAlways(taylor(f,[x,y],'order',5)== expected)) + assert (isAlways(taylor(f,[x,y],'expansionPoint', [0,0],'order',5) == expected)) +***** test + syms x y + f = sqrt(1+x^2+y^2); + expected = 1+ x^2/2 +y^2/2 - x^4/8 - x^2*y^2/4 - y^4/8; + assert (isAlways(taylor(f,[x,y],'order',6)== expected)) + assert (isAlways(taylor(f,[x,y],'expansionPoint', [0,0],'order',5) == expected)) +***** test + syms x y + f = sin (x^2 + y^2); + expected = sin(sym(1))+2*cos(sym(1))*(x-1)+(cos(sym(1))-2*sin(sym(1)))*(x-1)^2 + cos(sym(1))*y^2; + assert (isAlways(taylor(f,[x,y],'expansionPoint', [1,0],'order',3) == expected)) +***** test + % key/value ordering doesn't matter + syms x y + f = exp(x+y); + g1 = taylor(f, 'expansionPoint',1, 'order', 3); + g2 = taylor(f, 'order', 3, 'expansionPoint',1); + assert (isAlways(g1== g2)) +***** test + syms x y + f = x^2 + y^2; + assert (isAlways(taylor(f,[x,y],[0,0],'order',0)== sym(0) )) + assert (isAlways(taylor(f,[x,y],[0,0],'order',1)== sym(0) )) + assert (isAlways(taylor(f,[x,y],[0,0],'order',2)== sym(0) )) + assert (isAlways(taylor(f,[x,y],[0,0],'order',3)== sym(x^2 + y^2))) + assert (isAlways(taylor(f,[x,y],[0,0],'order',4)== sym(x^2 + y^2))) +***** test + % expansion point + syms x a + f = x^2; + g = taylor(f,x,2); + assert (isequal (simplify(g), f)) + assert (isequal (g, 4*x+(x-2)^2-4)) + g = taylor(f,x,a); + assert (isequal (simplify(g), f)) +***** test + % wrong order-1 series with nonzero expansion pt: + % upstream bug https://github.com/sympy/sympy/issues/9351 + syms x + g = x^2 + 2*x + 3; + h = taylor (g, x, 4, 'order', 1); + assert (isequal (h, 27)) +***** test + syms x y z + g = x^2 + 2*y + 3*z; + h = taylor (g, [x,y,z], 'order', 4); + assert (isAlways(h == g)) ; +***** test + syms x y z + g = sin(x*y*z); + h = taylor (g, [x,y,z], 'order', 4); + assert (isAlways(h == x*y*z)) ; +***** error + syms x y + taylor(0, [x, y], [1, 2, 3]); +18 tests, 18 passed, 0 known failure, 0 skipped +[inst/@sym/jordan.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/jordan.m +***** test + % basic + A = sym ([2 1 0 0; 0 2 1 0; 0 0 3 0; 0 1 -1 3]); + [V, J] = jordan (A); + assert (isequal (inv (V) * A * V, J)); + assert (isequal (J, sym ([2 1 0 0; 0 2 0 0; 0 0 3 0; 0 0 0 3]))) + % the first 2 generalized eigenvectors form a cycle + assert (isequal ((A - J(1, 1) * eye (4)) * V(:, 1), zeros (4, 1))); + assert (isequal ((A - J(2, 2) * eye (4)) * V(:, 2), V(:, 1))); + % the last 2 generalized eigenvectors are eigenvectors + assert (isequal ((A - J(3, 3) * eye (4)) * V(:, 3), zeros (4, 1))); + assert (isequal ((A - J(4, 4) * eye (4)) * V(:, 4), zeros (4, 1))); +***** test + % scalars + assert (isequal (jordan (sym (-10)), sym (-10))); + assert (isequal (jordan (sym ('x')), sym ('x'))); +***** test + % diagonal matrices + A = diag (sym ([6 6 7])); + [V1, D] = eig (A); + [V2, J] = jordan (A); + assert (isequal (V1, V2)); + assert (isequal (D, J)); +***** test + % matrices of unknown entries + A = [sym('a') sym('b'); sym('c') sym('d')]; + [V, D] = eig (A); + J = jordan (A); + assert (isequal (simplify (D), simplify (J))); +***** test + % matrices of mixed entries + A = [sym('x')+9 sym('y'); sym(0) 6]; + [V, D] = eig (A); + J = jordan (A); + assert (isequal (simplify (D), simplify (J))); 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/polylog.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/polylog.m -***** assert (isequal (polylog (sym('s'), 0), sym(0))) -***** assert (isequal (double (polylog (1, sym(-1))), -log(2))) -***** assert (isequal (double (polylog (0, sym(2))), -2)) -***** assert (isequal (double (polylog (-1, sym(2))), 2)) -***** assert (isequal (double (polylog (-2, sym(3))), -1.5)) -***** assert (isequal (double (polylog (-3, sym(2))), 26)) -***** assert (isequal (double (polylog (-4, sym(3))), -15)) -***** assert (isequal (double (polylog (1, sym(1)/2)), log(2))) +[inst/@sym/ellipticPi.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticPi.m +***** error ellipticPi (sym (1)) +***** error ellipticPi (sym (1), 2, 3, 4) +***** assert (double (ellipticPi (sym (-23)/10, sym (pi)/4, 0)), 0.5876852228, 10e-11) +***** assert (double (ellipticPi (sym (1)/3, sym (pi)/3, sym (1)/2)), 1.285032276, 10e-11) +***** assert (double (ellipticPi (sym (2), sym (pi)/6, sym (2))), 0.7507322117, 10e-11) +***** xtest + % FIXME: search/report upstream + assert (double (ellipticPi (sym (-1), 0, sym (1))), 0) +!!!!! known failure +ASSERT errors for: assert (double (ellipticPi (sym (-1), 0, sym (1))),0) + + Location | Observed | Expected | Reason + () NaN 0 'NaN' mismatch +***** xtest + % FIXME: this is a regression somewhere: loss of precision: Issue #1064 + % compare to Maple, complete + us = vpa (ellipticPi (sym(1)/6, sym(4)/3), 40); + % > evalf(EllipticPi(sin(1/6), sqrt(4/3)), 40); + maple = vpa ('2.019271696236161760696477679310987869058', 40) - ... + vpa ('1.708165765120289929280805062355360570830j', 40); + assert (abs (double (maple - us)), 0, 2e-39) +!!!!! known failure +ASSERT errors for: assert (abs (double (maple - us)),0,2e-39) + + Location | Observed | Expected | Reason + () 5.7666e-32 0 Abs err 5.7666e-32 exceeds tol 2e-39 by 6e-32 ***** test - % round trip - syms s z - f = polylog (s, z); - h = function_handle (f, 'vars', [s z]); - A = h (1.1, 2.2); - B = polylog (1.1, 2.2); - assert (A, B) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/acosh.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acosh.m -***** error acosh (sym(1), 2) -***** assert (isequaln (acosh (sym(nan)), sym(nan))) + % compare to Maple, complete + us = vpa (ellipticPi (sym(1)/6, sym(4)/3), 40); + % > evalf(EllipticPi(sin(1/6), sqrt(4/3)), 40); + maple = vpa ('2.019271696236161760696477679310987869058', 40) - ... + vpa ('1.708165765120289929280805062355360570830j', 40); + assert (abs (double (maple - us)), 0, 2e-30) +***** test + % compare to Maple, incomplete + us = vpa (ellipticPi (sym(8)/7, sym(4)/3, sym(2)/7), 40); + % > evalf(EllipticPi(sin(4/3), 8/7, sqrt(2/7)), 40); + maple = vpa ('2.089415796799294830305265090302275542033', 40) - ... + vpa ('4.798862045930802761256228043192491271947j', 40); + assert (abs (double (maple - us)), 0, 6e-39) +9 tests, 7 passed, 2 known failures, 0 skipped +[inst/@sym/degree.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/degree.m +***** error degree (sym(1), 2, 3) +***** test + syms x + assert (isequal (degree(x^3), 3)) + assert (isequal (degree(x^3 + 6), 3)) +***** test + % specify variable + syms x y + p = x^2 + y*x + 1; + assert (isequal (degree(p), 2)) + assert (isequal (degree(p, x), 2)) + assert (isequal (degree(p, y), 1)) +***** test + syms x a oo + assert (isequal (degree(x^3, a), 0)) + assert (isequal (degree(sym(1), a), 0)) + assert (isequal (degree(sym(0), a), -oo)) +***** xtest + % constant inputs + syms oo + assert (isequal (degree(sym(1)), 0)) + assert (isequal (degree(sym(0)), -oo)) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/gamma.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gamma.m +***** error gamma (sym(1), 2) +***** assert (isequaln (gamma (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = acosh(x); - f2 = acosh(d); + f1 = gamma(x); + f2 = gamma(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = acosh(A); - f2 = acosh(D); + f1 = gamma(A); + f2 = gamma(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = acosh (d); - f = acosh (y); + A = gamma (d); + f = gamma (y); h = function_handle (f); B = h (d); assert (A, B, -eps) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/flipud.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/flipud.m -***** test - % simple - syms x - A = [x 2; sym(pi) x]; - B = [sym(pi) x; x 2]; - assert (isequal (flipud(A), B)) -***** test - % simple, odd # rows - syms x - A = [x 2; sym(pi) x; [1 2]]; - B = [[1 2]; sym(pi) x; x 2]; - assert (isequal (flipud(A), B)) -***** test - % scalar - syms x - assert (isequal (flipud(x), x)) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/ne.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ne.m -***** test - % simple - x = sym(1); y = sym(1); e = x ~= y; - assert (~logical (e)) - x = sym(1); y = sym(2); e = x ~= y; - assert (logical(e)) -***** test - % array -- array - syms x - a = sym([1 3 3 2*x]); - b = sym([2 x 3 10]); - e = a ~= b; - assert (isa (e, 'sym')) - assert (logical (e(1))) - assert (isa (e(2), 'sym')) - assert (isequal (e(2), 3 ~= x)) - assert (~logical (e(3))) - assert (isa (e(4), 'sym')) - assert (isequal (e(4), 2*x ~= 10)) -***** test - % oo - syms oo x - e = oo ~= x; - assert (isa (e, 'sym')) - s = strtrim (disp (e, 'flat')); - % SymPy <= 0.7.6.x will be '!=', newer gives 'Ne', test both - assert (strcmp (s, 'oo != x') || strcmp (s, 'Ne(oo, x)')) -***** test - % nan - syms oo x - snan = sym(nan); - e = snan ~= sym(0); - assert (logical (e)) - e = snan ~= snan; - assert (logical (e)) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/or.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/or.m +[inst/@sym/and.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/and.m ***** shared t, f t = sym(true); f = sym(false); ***** test % simple - assert (isequal (t | f, t)) - assert (isequal (t | t, t)) - assert (isequal (f | f, f)) + assert (isequal (t & f, f)) + assert (isequal (t & t, t)) +***** test + % mix with nonsym + assert (isequal (t & false, f)) + assert (isequal (t & true, t)) + assert (isequal (t & 0, f)) + assert (isequal (t & 1, t)) + assert (isa (t & false, 'sym')) + assert (isa (t & 1, 'sym')) ***** test % array w = [t t f f]; z = [t f t f]; - assert (isequal (w | z, [t t t f])) + assert (isequal (w & z, [t f f f])) +***** test + % number + assert (isequal( sym(1) & t, t)) + assert (isequal( sym(0) & t, f)) ***** test % output is sym even for scalar t/f - assert (isa (t | f, 'sym')) + assert (isa (t & f, 'sym')) ***** test - % eqns + % eqns, exclusive syms x - e = or(x == 4, x == 5); - assert (isequal (subs(e, x, [3 4 5 6]), [f t t f])) -***** error or (sym(1), 2, 3) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/ezmesh.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ezmesh.m -***** error - syms u v t - ezmesh(u*v, 2*u*v, 3*v*t) -***** error - syms u v t - ezmesh(u*v, 2*u*v, u*v*t) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/gammaln.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gammaln.m -***** assert (isequal (gammaln (sym (3)), log (sym (2)))) -***** assert (isequal (gammaln (sym (10)), log (gamma (sym (10))))) + e = (x == 3) & (x^2 == 9); + assert (isequal (subs(e, x, [-3 0 3]), [f f t])) +***** error and (sym('x'), 2, 3) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/@sym/sum.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sum.m +***** error sum (sym(1), 2, 3) +***** error sum (sym(1), 42) +***** shared x,y,z + syms x y z +***** assert (isequal (sum (x), x)) +***** assert (isequal (sum ([x y z]), x+y+z)) +***** assert (isequal (sum ([x; y; z]), x+y+z)) +***** assert (isequal (sum ([x y z], 1), [x y z])) +***** assert (isequal (sum ([x y z], 2), x+y+z)) +***** shared a,b + b = [1 2; 3 4]; a = sym(b); +***** assert (isequal (sum(a), sum(b))) +***** assert (isequal (sum(a,1), sum(b,1))) +***** assert (isequal (sum(a,2), sum(b,2))) ***** test - % compare to Maple: evalf(lnGAMMA(Pi)); - maple = vpa ('0.827694592323437101529578558452359951153502', 40); - us = vpa (gammaln (sym(pi)), 40); - assert (abs(double(maple-us)) < 1e-39) + % weird inputs + a = sum('xx', sym(1)); + assert (isequal (a, sym('xx'))) +11 tests, 11 passed, 0 known failure, 0 skipped +[inst/@sym/fourier.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/fourier.m ***** test - % compare to Maple: evalf(lnGAMMA(3+2*I)); - maple = vpa ('-0.0316390593739611898037677296008797172022603', 40) + ... - vpa ('2.02219319750132712401643376238334982100512j', 40); - us = vpa (gammaln (sym(3) + 2i), 40); - assert (abs(double(maple-us)) < 1e-39) + % matlab SMT compatibility for arguments + syms r x u w v + Pi=sym('pi'); + assert(logical( fourier(exp(-x^2)) == sqrt(Pi)/exp(w^2/4) )) + assert(logical( fourier(exp(-w^2)) == sqrt(Pi)/exp(v^2/4) )) + assert(logical( fourier(exp(-r^2),u) == sqrt(Pi)/exp(u^2/4) )) + assert(logical( fourier(exp(-r^2),r,u) == sqrt(Pi)/exp(u^2/4) )) ***** test - % compare to Maple: evalf(lnGAMMA(-1.5)); - % notably, @double/gammaln has zero imag part - maple = vpa ('0.8600470153764810145109326816703567873271571', 40) - ... - vpa ('6.2831853071795864769252867665590057683943388j', 40); - us = vpa (gammaln (-sym(3)/2), 40); - assert (abs(double(maple-us)) < 1e-39) -***** assert (gammaln (pi), double (gammaln (sym (pi))), -3*eps) -***** assert (gammaln (100), double (gammaln (sym (100))), -3*eps) -***** assert (gammaln (1e-3), double (gammaln (1/sym (1e3))), -100*eps) + % basic tests + syms x w + assert(logical( fourier(exp(-abs(x))) == 2/(w^2 + 1) )) + assert(logical( fourier(x*exp(-abs(x))) == -(w*4*1i)/(w^4 + 2*w^2 + 1) )) ***** test - % round trip + % Dirac delta tests + syms x w + Pi=sym('pi'); + assert(logical( fourier(dirac(x-2)) == exp(-2*1i*w) )) + assert (logical( fourier(sym(2), x, w) == 4*Pi*dirac(w) )) +***** test + % advanced test + syms x w c d + Pi=sym('pi'); + F=Pi*(dirac(w-c)+dirac(w+c))+2*Pi*1i*(dirac(w+3*d)-dirac(w-3*d))+2/(w^2+1); + assert(logical( fourier(cos(c*x)+2*sin(3*d*x)+exp(-abs(x))) == expand(F) )) +***** xtest + % Differential operator to algebraic + % SymPy cannot evaluate? (Issue #170) + syms x w f(x) + assert(logical( fourier(diff(f(x),x),x,w) == -1i*w*fourier(f(x),x,w) )) +!!!!! known failure +assert (logical (fourier (diff (f (x), x), x, w) == -1i * w * fourier (f (x), x, w))) failed +5 tests, 4 passed, 1 known failure, 0 skipped +[inst/@sym/symsum.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/symsum.m +***** error symsum (sym(1), 2, 3, 4, 5) +***** test + % finite sums + syms n + assert (isequal (symsum(n,n,1,10), 55)) + assert(isa(symsum(n,n,1,10), 'sym')) + assert (isequal (symsum(n,n,sym(1),sym(10)), 55)) + assert (isequal (symsum(n,n,sym(1),sym(10)), 55)) + assert (isequal (symsum(1/n,n,1,10), sym(7381)/2520)) +***** test + % negative limits + syms n + assert (isequal (symsum(n,n,-3,3), sym(0))) + assert (isequal (symsum(n,n,-3,0), sym(-6))) + assert (isequal (symsum(n,n,-3,-1), sym(-6))) +***** test + % one input + syms n + f = symsum (n); + g = n^2/2 - n/2; + assert (isequal (f, g)) + f = symsum (2*n); + g = n^2 - n; + assert (isequal (f, g)) +***** test + % constant input + f = symsum (sym(2)); syms x - f = gammaln (x); - h = function_handle (f); - A = h (1.1); - B = gammaln (1.1); - assert (A, B) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/sympy.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sympy.m -***** assert (strcmp (sympy (sym(pi)), 'pi')) -***** assert (strcmp (sympy (sym(1)), 'Integer(1)')) -***** assert (strcmp (sympy (sym(2)/3), 'Rational(2, 3)')) -***** assert (strcmp (sympy (sym('x')), 'Symbol(''x'')')) + g = 2*x; + assert (isequal (f, g)) ***** test - x = sym('x'); - assert (isequal (sym(sympy(x)), x)) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/gammainc.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gammainc.m -***** assert (isequal (gammainc (sym(0), 1), sym(0))) -***** assert (isequal (gammainc (sym(0), 2), sym(0))) -***** assert (isequal (gammainc (sym('oo'), 1), sym(1))) -***** assert (isequal (gammainc (sym(0), 1, 'upper'), sym(1))) -***** assert (isequal (gammainc (sym(0), 2, 'upper'), sym(1))) -***** assert (isequal (gammainc (sym('oo'), 1, 'upper'), sym(0))) + % two inputs + syms n + f = symsum (2*n, n); + g = n^2 - n; + assert (isequal (f, g)) +***** test + % two inputs, second is range + syms n + f = symsum (n, [1 6]); + g = 21; + assert (isequal (f, g)) + f = symsum (n, [sym(1) 6]); + g = 21; + assert (isequal (f, g)) + f = symsum (2*n, [1 6]); + g = 2*21; + assert (isequal (f, g)) ***** test - % default is lower - syms x a - assert (isequal (gammainc (x, a), gammainc(x, a, 'lower'))) + % three inputs, last is range + syms n + f = symsum (2*n, n, [1 4]); + g = sym(20); + assert (isequal (f, g)) + f = symsum (2*n, n, [sym(1) 4]); + g = sym(20); + assert (isequal (f, g)) + f = symsum (2, n, [sym(1) 4]); + g = sym(8); + assert (isequal (f, g)) ***** test - % compare to double - x = 5; a = 1; - A = gammainc (x, a); - B = double (gammainc (sym(x), a)); - assert(A, B, -eps) + % three inputs, no range + syms n + f = symsum (2*n, 1, 4); + g = sym(20); + assert (isequal (f, g)) + f = symsum (5, sym(1), 3); + g = sym(15); + assert (isequal (f, g)) ***** test - % compare to double where gamma(a) != 1 - x = 5; a = 3; - A = gammainc (x, a); - B = double (gammainc (sym(x), a)); - assert(A, B, -eps) + % ok to use double's for arguments in infinite series + syms n oo + assert(isequal(symsum(1/n^2,n,1,oo), sym(pi)^2/6)) + assert(isequal(symsum(1/n^2,n,1,inf), sym(pi)^2/6)) ***** test - % compare to double - x = 100; a = 1; - A = gammainc (x, a); - B = double (gammainc (sym(x), a)); - assert(A, B, -eps) + % should be oo because 1 is real but seems to be + % zoo/oo depending on sympy version + syms n oo + zoo = sym('zoo'); + assert (isequal (symsum(1/n,n,1,oo), oo) || ... + isequal (symsum(1/n,n,1,oo), zoo)) +11 tests, 11 passed, 0 known failure, 0 skipped +[inst/@sym/prevprime.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/prevprime.m +***** assert (isequal (prevprime(sym(3)), 2)); +***** assert (isequal (prevprime(sym(20)), 19)); +***** assert (isequal (prevprime(sym([3 5 10])), [2 3 7])); +***** error prevprime(sym(2)) +***** error prevprime(sym(-2)) ***** test - % compare to double - xs = sym(1)/1000; x = 1/1000; a = 1; - A = gammainc (x, a); - B = double (gammainc (xs, a)); - assert(A, B, -eps) + % result is a sym + p = prevprime(sym(3)); + assert (isa (p, 'sym')) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@sym/null.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/null.m ***** test - % compare to double - x = 5; a = 1; - A = gammainc (x, a, 'upper'); - B = double (gammainc (sym(x), a, 'upper')); - assert(A, B, -10*eps) + A = sym([1 2; 3 4]); + assert (isempty (null (A))) +***** assert (isempty (null (sym(4)))) ***** test - % compare to double - x = 10; a = 1; - A = gammainc (x, a, 'upper'); - B = double (gammainc (sym(x), a, 'upper')); - assert(A, B, -10*eps) + A = sym([1 2 3; 3 4 5]); + assert (isequal (null(A), sym([1;-2;1]))) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/arg.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/arg.m ***** test - % compare to double - x = 40; a = 1; - A = gammainc (x, a, 'upper'); - B = double (gammainc (sym(x), a, 'upper')); - assert(A, B, -10*eps) + syms x + assert (isequal (angle (x), arg (x))); +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@sym/ge.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ge.m ***** test - % compare to double - xs = sym(1)/1000; x = 1/1000; a = 1; - A = gammainc (x, a, 'upper'); - B = double (gammainc (xs, a, 'upper')); - assert(A, B, -eps) + % simple + x = sym(1); y = sym(1); e = x >= y; + assert (logical (e)) + x = sym(1); y = sym(2); e = x >= y; + assert (~logical(e)) ***** test - % vectorized - P = gammainc([sym(pi) 2], [1 3]); - expected = [gammainc(pi, sym(1)) gammainc(2, sym(3))]; - assert (isequal (P, expected)) + % array -- array + syms x + a = sym([1 3 3 2*x]); + b = sym([2 x 3 10]); + e = a >= b; + assert (isa (e, 'sym')) + assert (~logical (e(1))) + assert (isa (e(2), 'sym')) + assert (isequal (e(2), 3 >= x)) + assert (logical (e(3))) + assert (isa (e(4), 'sym')) + assert (isequal (e(4), 2*x >= 10)) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sym/erfinv.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erfinv.m +***** error erfinv (sym(1), 2) +***** assert (isequaln (erfinv (sym(nan)), sym(nan))) +***** shared x, d + d = 1/2; + x = sym('1/2'); ***** test - % vectorized - P = gammainc(sym(pi), [1 3]); - expected = [gammainc(sym(pi), 1) gammainc(sym(pi), 3)]; - assert (isequal (P, expected)) + f1 = erfinv(x); + f2 = erfinv(d); + assert( abs(double(f1) - f2) < 1e-15 ) ***** test - % vectorized - P = gammainc([sym(pi) 2], 1); - expected = [gammainc(pi, sym(1)) gammainc(2, sym(1))]; - assert (isequal (P, expected)) + D = [d d; d d]; + A = [x x; x x]; + f1 = erfinv(A); + f2 = erfinv(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip - syms x a - f = gammainc (x, a, 'upper'); - h = function_handle (f, 'vars', [x a]); - A = h (1.1, 2); - B = gammainc (1.1, 2, 'upper'); - assert (A, B) + y = sym('y'); + A = erfinv (d); + f = erfinv (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/det.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/det.m +***** assert (isequal (det(sym([])), 1)) ***** test - % round trip - syms x a - f = gammainc (x, a, 'lower'); - h = function_handle (f, 'vars', [x a]); - A = h (1.1, 2); - B = gammainc (1.1, 2, 'lower'); - assert (A, B) + syms x y real + assert (isequal (det([x 5; 7 y]), x*y-35)) ***** test - % round trip - syms x a - f = gammainc (x, a, 'upper'); - h = function_handle (f, 'vars', [x a]); - A = h (1.1, 2.2); - B = gammainc (1.1, 2.2, 'upper'); - assert (A, B) + syms x + assert (isequal (det(x), x)) + assert (isequal (det(sym(-6)), sym(-6))) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/lambertw.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lambertw.m +***** test + % W(x)*exp(W(x)) == x + syms x + T = lambertw(x)*exp(lambertw(x)); + T = double (subs (T, x, 10)); + assert (isequal (T, 10)); +***** test + % k, x not x, k to match SMT + syms x + T = lambertw(2, x)*exp(lambertw(2, x)); + T = double (subs (T, x, 10)); + assert (abs(T - 10) < 1e-15) +***** assert (isequal (lambertw(sym(0)), sym(0))) +***** assert ( isequal (lambertw (-1/exp(sym(1))), -sym(1))) +***** assert ( isequal (lambertw (0, -1/exp(sym(1))), -sym(1))) +***** assert ( isequal (lambertw (-1, -1/exp(sym(1))), -sym(1))) +***** xtest + % W(x)*exp(W(x)) == x; FIXME: a failure in SymPy? + syms x + T = simplify(lambertw(x)*exp(lambertw(x))); + assert (isequal (T, x)) +!!!!! known failure +assert (isequal (T, x)) failed +***** assert (abs (lambertw(pi) - double(lambertw(sym(pi)))) < 5*eps) +***** assert (abs (lambertw(-1, 5) - double(lambertw(-1, sym(5)))) < 5*eps) +***** assert (abs (lambertw(2, 2) - double(lambertw(2, sym(2)))) < 5*eps) ***** test % round trip - syms x a - f = gammainc (x, a, 'lower'); - h = function_handle (f, 'vars', [x a]); - A = h (1.1, 2.2); - B = gammainc (1.1, 2.2, 'lower'); + syms x k + A = lambertw (5); + f = lambertw (x); + h = function_handle (f); + B = h (5); assert (A, B) -22 tests, 22 passed, 0 known failure, 0 skipped -[inst/@sym/isrow.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isrow.m -***** assert (isrow (sym ([1]))) -***** assert (isrow (sym ([1 2 3]))) -***** assert (~isrow (sym ([]))) -***** assert (~isrow (sym ([1 2 3]'))) -***** assert (~isrow (sym ([1 2; 3 4]))) + + A = lambertw (3, 5); + f = lambertw (k, x); + h = function_handle (f); + B = h (3, 5); + assert (A, B) +11 tests, 10 passed, 1 known failure, 0 skipped +[inst/@sym/ellipticCE.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticCE.m +***** error ellipticCE (sym (1), 2) +***** assert (isequal (ellipticCE (sym (0)), sym (1))) +***** assert (isequal (ellipticCE (sym (1)), sym (pi)/2)) +***** assert (double (ellipticCE (sym (pi)/4)), 1.482786927, 10e-10) +***** assert (double (ellipticCE (sym (pi)/2)), 1.775344699, 10e-10) 5 tests, 5 passed, 0 known failure, 0 skipped [inst/@sym/coeffs.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/coeffs.m @@ -14462,21 +13111,152 @@ assert (isequal (c1, c2)) assert (isequal (t1, t2)) 18 tests, 18 passed, 0 known failure, 0 skipped -[inst/@sym/isallconstant.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isallconstant.m -***** assert (isallconstant([sym(1) 2 3])) +[inst/@sym/potential.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/potential.m +***** error potential (sym(1), 2, 3, 4) +***** shared x,y,z + syms x y z ***** test - syms x - assert (~isallconstant([sym(1) x 3])) + % 1D + f = 3*x^2; + F = x^3; + assert (isequal (potential(f), F)) + assert (isequal (potential(f, x), F)) + assert (isequal (potential(f, x, 0), F)) + assert (isequal (potential(f, x, 2), F - 8)) +***** test + F = x*exp(y) + (z-1)^2; + f = gradient(F); + G = potential(f, [x;y;z], [0;1;1]); + assert (isAlways (G == F)) +***** test + F = x*exp(y); + f = gradient(F); + G = potential(f); + assert (isAlways (G == F)) ***** test + % no potential exists + syms x y + a = [x; x*y^2]; + assert (isnan (potential (a))) +***** shared +***** xtest + % fails b/c of sympy #8458 (piecewise expr that should simplify) syms x - assert (~isallconstant([sym(1) x; sym(2) 3])) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/display.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/display.m + f = cos(x); + assert (isequal (potential(f, x), sin(x))) +!!!!! known failure +assert (isequal (potential (f, x), sin (x))) failed +6 tests, 5 passed, 1 known failure, 0 skipped +[inst/@sym/erf.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/erf.m +***** error erf (sym(1), 2) +***** assert (isequaln (erf (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); ***** test - assert(true) -1 test, 1 passed, 0 known failure, 0 skipped + f1 = erf(x); + f2 = erf(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = erf(A); + f2 = erf(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = erf (d); + f = erf (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/sort.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/sort.m +***** error sort (sym(1), 2) +***** test + f = [sym(1), sym(0)]; + expected = sym([0, 1]); + assert (isequal (sort(f), expected)) +***** test + f = [sym(1)]; + expected = sym(1); + assert (isequal (sort(f), expected)) +***** test + f = [sym(3), sym(2), sym(6)]; + s = sort(f); + expected_s = sym([2, 3, 6]); + assert (isequal (s, expected_s)) +***** test + f = [sym(pi), sin(sym(2)), sqrt(sym(6))]; + s = sort(f); + expected_s = sym([sin(sym(2)), sqrt(sym(6)), sym(pi)]); + assert (isequal (s, expected_s)) +***** test + f = [sym(1), sym(2); sym(2), sym(pi); sym(pi), sym(1)]; + s = sort(f); + expected_s = ([sym(1), sym(1); sym(2), sym(2); sym(pi), sym(pi)]); + assert (isequal (s, expected_s)) +***** assert (isequal (sort(sym([])), sym([]))) +***** error sort([sym('x') 1]) +***** test + % but with assumptions, symbols can be sorted + p = sym('p', 'positive'); + n = sym('n', 'negative'); + expected_s = [n p]; + s = sort ([p n]); + assert (isequal (s, expected_s)) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/@sym/atan.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/atan.m +***** error atan (sym(1), 2) +***** assert (isequaln (atan (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); +***** test + f1 = atan(x); + f2 = atan(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = atan(A); + f2 = atan(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = atan (d); + f = atan (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/prod.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/prod.m +***** error prod (sym(1), 2, 3) +***** error prod (sym(1), 42) +***** shared x,y,z + syms x y z +***** assert (isequal (prod (x), x)) +***** assert (isequal (prod ([x y z]), x*y*z)) +***** assert (isequal (prod ([x; y; z]), x*y*z)) +***** assert (isequal (prod ([x y z], 1), [x y z])) +***** assert (isequal (prod ([x y z], 2), x*y*z)) +***** shared a,b + b = [1 2; 3 4]; a = sym(b); +***** assert (isequal (prod(a), prod(b))) +***** assert (isequal (prod(a,1), prod(b,1))) +***** assert (isequal (prod(a,2), prod(b,2))) +***** test + % weird inputs + a = prod('xx', sym(1)); + assert (isequal (a, sym('xx'))) +11 tests, 11 passed, 0 known failure, 0 skipped [inst/@sym/dot.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/dot.m ***** error dot (sym(1), 2, 3) @@ -14494,66 +13274,311 @@ ***** test assert (isequal (dot (sym([1 i]), sym([i 2])), sym(-i))) 4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/cumsum.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cumsum.m -***** shared x, y - x = sym ('x'); - y = sym ('y'); -***** error cumsum (x, 1, 2) -***** assert (isequal (cumsum ([-x; -2*x; -3*x]), [-x; -3*x; -6*x])) -***** assert (isequal (cumsum ([x + 2i*y, 2*x + i*y]), [x + 2i*y, 3*x + 3i*y])) -***** assert (isequal (cumsum ([x, 2*x; 3*x, 4*x], 1), [1*x, 2*x; 4*x, 6*x] )) -***** assert (isequal (cumsum ([x, 2*x; 3*x, 4*x], 2), [1*x, 3*x; 3*x, 7*x] )) -***** test cumsum ([x, x], [2, 1]); # ensure behaves like builtin cumsum -***** test cumsum ([x, x], [1, -2]); # ensure behaves like builtin cumsum -***** error cumsum (x, []) -***** error cumsum (x, {1}) -***** error cumsum (x, struct('a', 1)) -***** error cumsum (x, x) -***** error cumsum (x, 0) -***** error cumsum (x, -1) -13 tests, 13 passed, 0 known failure, 0 skipped -[inst/@sym/cosint.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cosint.m -***** error cosint (sym(1), 2) -***** xtest - assert (isequaln (cosint (sym(nan)), sym(nan))) -!!!!! known failure -assert (isequaln (cosint (sym (nan)), sym (nan))) failed +[inst/@sym/csch.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/csch.m +***** error csch (sym(1), 2) +***** assert (isequaln (csch (sym(nan)), sym(nan))) ***** shared x, d d = 1; x = sym('1'); ***** test - f1 = cosint(x); - f2 = 0.3374039229009681346626; + f1 = csch(x); + f2 = csch(d); assert( abs(double(f1) - f2) < 1e-15 ) ***** test D = [d d; d d]; A = [x x; x x]; - f1 = cosint(A); - f2 = 0.3374039229009681346626; - f2 = [f2 f2; f2 f2]; + f1 = csch(A); + f2 = csch(D); assert( all(all( abs(double(f1) - f2) < 1e-15 ))) ***** test % round trip y = sym('y'); - A = cosint (d); - f = cosint (y); + A = csch (d); + f = csch (y); h = function_handle (f); B = h (d); assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/laplacian.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/laplacian.m +***** shared x,y,z + syms x y z ***** test - % rewrite + % 1D + f = x^2; + g = diff(f,x,x); + assert (isequal (laplacian(f), g)) + assert (isequal (laplacian(f,{x}), g)) + assert (isequal (laplacian(f,[x]), g)) + assert (isequal (laplacian(f,x), g)) +***** test + % const + f = sym(1); + g = sym(0); + assert (isequal (laplacian(f), g)) + assert (isequal (laplacian(f,x), g)) + f = sym('c'); + assert (isequal (laplacian(f,x), g)) +***** test + % double const + f = 1; + g = sym(0); + assert (isequal (laplacian(f,x), g)) +***** test + % 1D fcn in 2d/3d + f = sin(2*y); + g = -4*f; + assert (isequal (laplacian(f), g)) + assert (isequal (laplacian(f, {x,y}), g)) + assert (isequal (laplacian(f, {x,y,z}), g)) +***** test + % 2d fcn in 2d/3d + f = sin(exp(x)*y); + g = diff(f,x,x) + diff(f,y,y); + assert (isequal (laplacian(f), g)) + assert (isequal (laplacian(f, {x,y}), g)) +***** test + % 2d fcn in 2d/3d + f = sin(exp(x)*y+sinh(z)); + gr2 = gradient(f, {x,y}); + divgr2 = divergence(gr2, {x,y}); + l2 = laplacian(f,{x,y}); + gr3 = gradient(f, {x,y,z}); + divgr3 = divergence(gr3, {x,y,z}); + l3 = laplacian(f,{x,y,z}); + assert (isAlways (l2 == divgr2)) + assert (isAlways (l3 == divgr3)) +***** error laplacian(sym('x'), sym('x'), 42) +***** error laplacian([sym('x'), sym('x')]) +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/@sym/ztrans.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ztrans.m +***** test + % basic Z-transform table checks + % X1, ..., X4 must have inner radius of convergence 1 + syms n z + % trick to extract the closed form formula using the fact that inner roc = 1 + closed_form = @(X) subs (X, abs (1 / z), 1 / sym (2)); + % check if ztrans(f) == X + check_ztrans = @(f, X) logical (simplify (closed_form (ztrans (f)) == X)); + f1 = sym (1); + X1 = 1 / (1 - 1 / z); + assert (check_ztrans (f1, X1)); + f2 = n; + X2 = (1 / z) / (1 - 1 / z)^2; + assert (check_ztrans (f2, X2)); + f3 = n^2; + X3 = (1 / z) * (1 + 1 / z) / (1 - 1 / z)^3; + assert (check_ztrans (f3, X3)); + f4 = n^3; + X4 = (1 / z) * (1 + 4 / z + 1 / z^2) / (1 - 1 / z)^4; + assert (check_ztrans (f4, X4)); + % basic matrix checks + A1 = ztrans ([f1 f2; f3 f4]); + B1 = [ztrans(f1) ztrans(f2); ztrans(f3) ztrans(f4)]; + assert (isequal (A1, B1)); + A2 = ztrans ([f1 f2; f3 f4], z); + B2 = [ztrans(f1, z) ztrans(f2, z); ztrans(f3, z) ztrans(f4, z)]; + assert (isequal (A2, B2)); + A3 = ztrans ([f1 f2; f3 f4], n, z); + B3 = [ztrans(f1, n, z) ztrans(f2, n, z); ztrans(f3, n, z) ztrans(f4, n, z)]; + assert (isequal (A3, B3)); +***** test + % additional Z-transform table checks + % X1, ..., X4 must have inner radius of convergence a + syms n nonnegative integer + syms m positive integer + syms a + syms z + % trick to extract the closed form formula using the fact that inner roc = a + closed_form = @(X) subs (X, abs (a / z), 1 / sym (2)); + % check if ztrans(f) == X + check_ztrans = @(f, X) logical (simplify (closed_form (ztrans (f)) == X)); + f1 = a^n; + X1 = 1 / (1 - a / z); + assert (check_ztrans (f1, X1)); + f2 = n * a^n; + X2 = (a / z) / (1 - a / z)^2; + assert (check_ztrans (f2, X2)); + f3 = n^2 * a^n; + X3 = (a / z) * (1 + a / z) / (1 - a / z)^3; + assert (check_ztrans (f3, X3)); + f4 = nchoosek(n + m - 1, m - 1) * a^n; + X4 = 1 / (1 - a / z)^m; + assert (check_ztrans (f4, X4)); + % additional matrix checks + A1 = ztrans (f1, [n m; m n], [z a; a z]); + B1 = [ztrans(f1, n, z) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, n, z)]; + assert (isequal (A1, B1)); + A2 = ztrans (f1, m, [z a; a z]); + B2 = [ztrans(f1, m, z) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, m, z)]; + assert (isequal (A2, B2)); + A3 = ztrans (f1, [n m; m n], a); + B3 = [ztrans(f1, n, a) ztrans(f1, m, a); ztrans(f1, m, a) ztrans(f1, n, a)]; + assert (isequal (A3, B3)); +***** test + % Kronecker delta checks + syms n n0 nonnegative integer + syms z + assert (isequal (ztrans (kroneckerDelta (n)), 1)); + assert (isequal (ztrans (kroneckerDelta (n - n0)), 1 / z^n0)); +***** test + % basic var selection checks + syms n m z w + assert (isequal (ztrans (1 / factorial (n)), exp (1 / z))); + assert (isequal (ztrans (1 / factorial (z)), exp (1 / w))); + assert (isequal (ztrans (1 / factorial (m), w), exp (1 / w))); + assert (isequal (ztrans (1 / factorial (m), m, w), exp (1 / w))); +***** test + % additional var selection checks + syms n m z + f = kroneckerDelta(m) / factorial (n); + assert (isequal (ztrans (f, z), exp (1 / z) * kroneckerDelta (m))); + assert (isequal (ztrans (f, n, z), exp (1 / z) * kroneckerDelta (m))); + assert (isequal (ztrans (f, m, z), 1 / factorial (n))); +***** test + % if no t, use symvar: take x before a + syms a x z + assert (isequal (ztrans (a / factorial (x)), a * exp (1 / z))); +***** error ztrans (sym ('n')^sym ('n', 'nonnegative', 'integer')) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/@sym/besseli.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besseli.m +***** test + X = [1 2 3; 4 5 6]; + ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; + n = double(ns); + A = double(besseli(ns, X)); + B = besseli(n, X); + assert (all (all (abs (A - B) < 100*eps*abs(A)))) +***** test + % roundtrip syms x - y1 = cosint (x); - y2 = rewrite (y1, 'Integral'); - d1 = diff (y1, x); - d2 = diff (y2, x); - assert (isequal (d1, simplify(d2))) - v1 = double (subs (d1, x, 2)); - v2 = double (subs (d2, x, 2)); - assert (v1, v2, -eps) -6 tests, 5 passed, 1 known failure, 0 skipped + A = besseli(2, 10); + q = besseli(2, x); + h = function_handle(q); + B = h(10); + assert (abs (A - B) <= eps*abs(A)) +***** error besseli(sym('x')) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@sym/cos.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/cos.m +***** error cos (sym(1), 2) +***** assert (isequaln (cos (sym(nan)), sym(nan))) +***** shared x, d + d = 1; + x = sym('1'); +***** test + f1 = cos(x); + f2 = cos(d); + assert( abs(double(f1) - f2) < 1e-15 ) +***** test + D = [d d; d d]; + A = [x x; x x]; + f1 = cos(A); + f2 = cos(D); + assert( all(all( abs(double(f1) - f2) < 1e-15 ))) +***** test + % round trip + y = sym('y'); + A = cos (d); + f = cos (y); + h = function_handle (f); + B = h (d); + assert (A, B, -eps) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/linspace.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/linspace.m +***** test + a = linspace(sym(3), 5, 5); + b = [sym(6) 7 8 9 10]/2; + assert (isequal (a, b)) +***** test + % non-integers + A = linspace(0, sym(pi), 10); + assert (length (A) == 10); + assert (isequal (A(6), 5*sym(pi)/9)); +***** test + % default argument for N + A = linspace(1, 100); + assert (length (A) == 100); +***** test + % special case for just N = 1 + A = linspace(sym(2), 3, 1); + assert (isequal (A, 3)) + A = linspace(sym(2), 3, 0); + assert (isequal (A, 3)) + A = linspace(sym(2), 3, sym(3)/2); + assert (isequal (A, 3)) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@sym/rref.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/rref.m +***** test + A = sym([1 2; 3 4]); + [r, k] = rref(A); + assert (isequal (r, eye(2))) + assert (isequal (k, [1 2])) +***** assert (isequal (rref(sym([2 1])), [1 sym(1)/2])) +***** assert (isequal (rref(sym([1 2; 2 4])), [1 2; 0 0])) +***** assert (isequal (rref(sym([0 0; 2 4])), [1 2; 0 0])) +***** test + A = sym([1 2 3; 2 3 4]); + [r, k] = rref(A); + assert (isequal (r, [1 0 -1; 0 1 2])) + assert (isequal (k, [1 2])); +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sym/matlabFunction.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/matlabFunction.m +***** test + % autodetect inputs + syms x y + s = warning('off', 'OctSymPy:function_handle:nocodegen'); + h = matlabFunction(2*x*y, x+y); + warning(s) + [t1, t2] = h(3,5); + assert(t1 == 30 && t2 == 8) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@sym/isNone.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isNone.m +***** test + None = pycall_sympy__ ('return None'); +***** shared None + None = pycall_sympy__ ('return None'); +***** assert (isNone(None)) +***** assert (~isNone(sym('x'))) +***** assert (islogical(isNone(None))) +***** test + a = [1 None]; + a = [None None]; + a = [None; 1]; + a = [None; None]; + a = [None 2; 3 None]; +***** test + a = sym([1 2]); + a(1,2) = None; + assert (isequal (a, [sym(1) None])); +***** assert (isequal (None(1), None)); +***** error None(None); +***** error x=sym('x'); x(None); +***** error x=1; x(None); +***** error None(None); +***** error 1 + None; +***** error None - 1; +***** error 6*None; +***** error 2^None; +***** error [1 2].*None; +***** error isconstant(None); +***** error nnz(None); +***** error logical(None); +***** error isAlways(None); +***** error logical([sym(true) None]); +***** error isAlways([sym(true) None]); +***** assert (isequal (children(None), None)) +***** assert (isequal (repmat(None, 1, 2), [None None])) +***** assert (isequal (fliplr(None), None)) +***** assert (isequal (flipud(None), None)) +26 tests, 26 passed, 0 known failure, 0 skipped [inst/@sym/airy.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/airy.m ***** test @@ -14603,1367 +13628,2354 @@ assert (abs(A-B) < 500*eps*abs(A)) end 9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/diag.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/diag.m -***** test - % scalar - syms x - assert (isequal (diag(x), x)) -***** test - % row,col vec input - syms x - r = [1 x 2]; - c = [sym(1); x]; - assert (isequal (diag(diag(c)), c)) - assert (isequal (diag(c), [sym(1) 0; 0 x])) - assert (isequal (diag(diag(r)), r.')) - assert (isequal (diag(r), [sym(1) 0 0; 0 x 0; sym(0) 0 2])) -***** test - % create matrix, kth diag - syms x - r = [1 x]; - z = sym(0); - assert (isequal (diag (x, 0), x)) - assert (isequal (diag (x, 1), [z x; z z])) - assert (isequal (diag (x, -1), [z z; x z])) - assert (isequal (diag (x, 2), [z z x; z z z; z z z])) - assert (isequal (diag (r, 1), [z 1 z; z z x; z z z])) +[inst/dirac.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/dirac.m +***** assert (isinf (dirac (0))) +***** assert (dirac (1) == 0) +***** assert (isnan (dirac (nan))) +***** assert (isequaln (dirac ([-1 1 0 eps inf -inf nan]), [0 0 inf 0 0 0 nan])) +***** error dirac (1i) +***** assert (isa (dirac (single (0)), 'single')) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/digits.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/digits.m ***** test - % extract kth diag - A = sym([1 2 3; 4 5 6]); - assert (isequal (diag(A), sym([1; 5]))) - assert (isequal (diag(A, 0), sym([1; 5]))) - assert (isequal (diag(A, 1), sym([2; 6]))) - assert (isequal (diag(A, 2), sym(3))) - assert (isequal (diag(A, -1), sym(4))) - assert (isempty (diag(A, -2))) - assert (isempty (diag(A, 3))) + orig = digits(32); % to reset later + m = digits(64); + p = vpa(sym(pi)); + assert (abs (double (sin(p))) < 1e-64) + n = digits(m); + assert (n == 64) + p = vpa(sym(pi)); + assert (abs (double (sin(p))) < 1e-32) + assert (abs (double (sin(p))) > 1e-40) + digits(orig) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/fibonacci.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/fibonacci.m +***** assert (isequal ( fibonacci (sym(0)), 0)) +***** assert (isequal ( fibonacci (sym(14)), sym(377))) +***** assert (isequal ( fibonacci (14), 377)) +***** test syms x + assert (isequal (fibonacci (5,x), x^4 + 3*x^2 + 1)) 4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/besseli.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/besseli.m -***** test - X = [1 2 3; 4 5 6]; - ns = [sym(0) 1 -2; sym(1)/2 -sym(3)/2 pi]; - n = double(ns); - A = double(besseli(ns, X)); - B = besseli(n, X); - assert (all (all (abs (A - B) < 100*eps*abs(A)))) -***** test - % roundtrip - syms x - A = besseli(2, 10); - q = besseli(2, x); - h = function_handle(q); - B = h(10); - assert (abs (A - B) <= eps*abs(A)) -***** error besseli(sym('x')) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/ellipke.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipke.m -***** error ellipke (sym(1), 2) -***** test - for i = 2:10 - [K E] = ellipke (sym (1)/i); - [k e] = ellipke (1/i); - assert (double ([K E]), [k e], 2*eps) - end -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/@sym/zeta.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/zeta.m -***** error zeta (sym(1), 2, 3) -***** assert (isequaln (zeta (sym(nan)), sym(nan))) -***** test - f1 = zeta (sym(2)); - f2 = pi^2/6; - assert (double (f1), f2, -1e-15) -***** test - A = sym([0 2; 4 6]); - f1 = zeta (A); - f2 = [-1/2 pi^2/6; pi^4/90 pi^6/945]; - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) -***** test - % round trip - y = sym('y'); - f = zeta (y); - h = function_handle (f); - A = zeta (2); - B = h (2); - assert (A, B, -eps) +[inst/laguerreL.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/laguerreL.m +***** error laguerreL (1) +***** error laguerreL (1, 2, 3) +***** assert (isequal (laguerreL (0, rand), 1)) ***** test - syms x - assert (isequal (zeta (0, x), zeta(x))) + x = rand; + assert (isequal (laguerreL (1, x), 1 - x)) ***** test - % ensure its the nth deriv wrt x, not the n deriv - syms x n - F = zeta (n, x); - F = subs(F, n, 3); - assert (isequal (F, diff (zeta (x), x, x, x))) -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/mtimes.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/mtimes.m + x=rand; + y1=laguerreL(2, x); + p2=[.5 -2 1]; + y2=polyval(p2,x); + assert(y1 - y2, 0, 10*eps); ***** test - % scalar - syms x - assert (isa (x*2, 'sym')) - assert (isequal (2*sym(3), sym(6))) - assert (isequal (sym(2)*3, sym(6))) + x=rand; + y1=laguerreL(3, x); + p3=[-1/6 9/6 -18/6 1]; + y2=polyval(p3,x); + assert(y1 - y2, 0, 20*eps); ***** test - % matrix-scalar - D = [0 1; 2 3]; - A = sym(D); - assert (isa (2*A, 'sym')) - assert (isequal ( 2*A , 2*D )) - assert (isequal ( A*2 , 2*D )) + x=rand; + y1=laguerreL(4, x); + p4=[1/24 -16/24 72/24 -96/24 1]; + y2=polyval(p4,x); + assert(y1 - y2, 0, 30*eps) +***** error laguerreL(1.5, 10) +***** error laguerreL([0 1], [1 2 3]) +***** error laguerreL([0 1], [1; 2]) ***** test - % matrix-matrix - D = [0 1; 2 3]; - A = sym(D); - assert (isa (A*A, 'sym')) - assert (isequal ( A*A , D*D )) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/@sym/tan.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tan.m -***** error tan (sym(1), 2) -***** assert (isequaln (tan (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); + % numerically stable implementation (in n) + L = laguerreL (10, 10); + Lex = 1763/63; + assert (L, Lex, -eps) + L = laguerreL (20, 10); + Lex = -177616901779/14849255421; % e.g., laguerreL(sym(20),10) + assert (L, Lex, -eps) ***** test - f1 = tan(x); - f2 = tan(d); - assert( abs(double(f1) - f2) < 1e-15 ) + % vectorized x + L = laguerreL (2, [5 6 7]); + Lex = [3.5 7 11.5]; + assert (L, Lex, eps) ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = tan(A); - f2 = tan(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + L = laguerreL (0, [4 5]); + assert (L, [1 1], eps) ***** test - % round trip - y = sym('y'); - A = tan (d); - f = tan (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/lgamma.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/lgamma.m + % vector n + L = laguerreL ([0 1 2 3], [4 5 6 9]); + assert (L, [1 -4 7 -26], eps) ***** test - % tested by gammaln - assert (isequal (lgamma (sym ('x')), gammaln (sym ('x')))) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/@sym/assumeAlso.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/assumeAlso.m + % vector n, scalar x + L = laguerreL ([0 1 2 3], 6); + assert (L, [1 -5 7 1], eps) +***** assert (isa (laguerreL (0, single (1)), 'single')) +***** assert (isa (laguerreL (1, single ([1 2])), 'single')) +***** assert (isa (laguerreL ([1 2], single ([1 2])), 'single')) +18 tests, 18 passed, 0 known failure, 0 skipped +[inst/assume.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/assume.m +***** error + a = assume('a', 'real') +***** error + assume positive integer +***** error + assume x y +***** error + assume x clear real +***** error + assume a>0 +***** error + assume 'x/pi' integer ***** test syms x - x = assumeAlso(x, 'positive'); + assume x positive a = assumptions(x); assert(strcmp(a, 'x: positive')) -***** error - syms x - x = assumeAlso (x, x); -***** test - syms x positive - x = assumeAlso(x, 'integer'); - [tilde, a] = assumptions(x, 'dict'); - assert(a{1}.integer) - assert(a{1}.positive) + assume x even + a = assumptions(x); + assert(strcmp(a, 'x: even')) ***** test % multiple assumptions - syms x positive - x = assumeAlso(x, 'integer', 'even'); + syms x + assume x positive integer [tilde, a] = assumptions(x, 'dict'); assert(a{1}.integer) assert(a{1}.positive) - assert(a{1}.even) ***** test - % multiple assumptions - syms x integer - x = assumeAlso (x, 'even', 'positive'); - [tilde, a] = assumptions (x, 'dict'); - assert (a{1}.integer) - assert (a{1}.even) - assert (a{1}.positive) -***** test - % has output so avoids workspace + % does workspace syms x positive x2 = x; f = sin(x); - assumeAlso(x, 'integer'); + assume x negative a = assumptions(x); - assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) + assert(strcmp(a, 'x: negative')) a = assumptions(x2); - assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) + assert(strcmp(a, 'x: negative')) a = assumptions(f); - assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) + assert(strcmp(a, 'x: negative')) +***** error + % does not create new variable x + clear x + assume x real +***** error + % no explicit variable named x + clear x + f = 2*sym('x'); + assume x real ***** test - % has no output so does workspace + % clear does workspace syms x positive - x2 = x; - f = sin(x); - assumeAlso(x, 'integer'); - a = assumptions(x); - assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) - a = assumptions(x2); - assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) - a = assumptions(f); - assert(strcmp(a, 'x: positive, integer') || strcmp(a, 'x: integer, positive')) -***** error - syms a - assumeAlso (a > 0) + f = 2*x; + assume x clear + assert (isempty (assumptions (f))); + assert (isempty (assumptions ())); ***** test syms x y - assumeAlso ([x y], 'even') - assert (strcmp (assumptions (x), 'x: even')) - assert (strcmp (assumptions (y), 'y: even')) -***** test - syms x y positive f = sin (2*x); - assumeAlso ([x y], 'even') - assert (strcmp (assumptions (x), 'x: even, positive') || strcmp (assumptions (x), 'x: positive, even')) - assert (strcmp (assumptions (y), 'y: even, positive') || strcmp (assumptions (y), 'y: positive, even')) - assert (strcmp (assumptions (f), 'x: even, positive') || strcmp (assumptions (f), 'x: positive, even')) + assume x y real + assert (strcmp (assumptions (x), 'x: real')) + assert (strcmp (assumptions (y), 'y: real')) + assert (strcmp (assumptions (f), 'x: real')) ***** test - % with output, original x and y are unchanged - syms x y positive + syms x y f = sin (2*x); - [p, q] = assumeAlso ([x y], 'even'); - assert (strcmp (assumptions (x), 'x: positive')) - assert (strcmp (assumptions (y), 'y: positive')) - assert (strcmp (assumptions (f), 'x: positive')) - assert (strcmp (assumptions (p), 'x: even, positive') || strcmp (assumptions (p), 'x: positive, even')) - assert (strcmp (assumptions (q), 'y: even, positive') || strcmp (assumptions (q), 'y: positive, even')) -11 tests, 11 passed, 0 known failure, 0 skipped -[inst/@sym/gamma.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/gamma.m -***** error gamma (sym(1), 2) -***** assert (isequaln (gamma (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); + assume x y positive even + assert (strcmp (assumptions (x), 'x: positive, even') || strcmp (assumptions (x), 'x: even, positive')) + assert (strcmp (assumptions (y), 'y: positive, even') || strcmp (assumptions (y), 'y: even, positive')) + assert (strcmp (assumptions (f), 'x: positive, even') || strcmp (assumptions (f), 'x: even, positive')) ***** test - f1 = gamma(x); - f2 = gamma(d); - assert( abs(double(f1) - f2) < 1e-15 ) + % works from variable names not symbols + syms x y + a = [x y]; + assume a real + assert (strcmp (assumptions (x), 'x: real')) + assert (strcmp (assumptions (y), 'y: real')) ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = gamma(A); - f2 = gamma(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + % works from variable names not symbols + y = sym('x'); + f = 2*y; + assume y real + assert (strcmp (assumptions (f), 'x: real')) ***** test - % round trip - y = sym('y'); - A = gamma (d); - f = gamma (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/ellipticK.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/ellipticK.m -***** error ellipticK (sym(1), 2) -***** assert (isequal (ellipticK (sym (0)), sym (pi)/2)) -***** assert (isequal (ellipticK (sym (-inf)), sym (0))) -***** assert (double (ellipticK (sym (1)/2)), 1.854074677, 10e-10) -***** assert (double (ellipticK (sym (pi)/4)), 2.225253684, 10e-10) -***** assert (double (ellipticK (sym (-55)/10)), 0.9324665884, 10e-11) + % matrix of symbols + syms a b c d + A = [a b; c d]; + assume A real + assert (strcmp (assumptions (a), 'a: real')) + assert (strcmp (assumptions (b), 'b: real')) + assert (strcmp (assumptions (c), 'c: real')) + assert (strcmp (assumptions (d), 'd: real')) ***** test - % compare to double ellipke - m = 1/5; - ms = sym(1)/5; - [K, E] = ellipke (m); - assert (double (ellipticK (ms)), K, -1e-15) - assert (double (ellipticE (ms)), E, -1e-15) + % assume after symfun + clear x + syms f(x) + assume x real + assert (~ isempty (assumptions (formula (f)))) + assert (~ isempty (assumptions (argnames (f)))) +18 tests, 18 passed, 0 known failure, 0 skipped +[inst/vpa.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/vpa.m ***** test - % compare to double ellipke - if (exist ('OCTAVE_VERSION', 'builtin')) - m = -10.3; - ms = -sym(103)/10; - [K, E] = ellipke (m); - assert (double (ellipticK (ms)), K, -1e-15) - assert (double (ellipticE (ms)), E, -1e-15) - end + a = vpa(0, 4); + b = double(a); + assert(b == 0) ***** test - % compare to Maple - us = vpa (ellipticK (sym (7)), 40); - % > evalf(EllipticK(sqrt(7)), 40); - maple = vpa ('0.6168027921799632674669917683443602673441', 40) - ... - vpa ('0.9114898734184488922164103102629560336918j', 40); - assert (abs (double (maple - us)), 0, 1e-39) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/@sym/asec.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/asec.m -***** error asec (sym(1), 2) -***** assert (isequaln (asec (sym(nan)), sym(nan))) -***** shared x, d - d = 2; - x = sym('2'); + a = vpa(pi, 4); + b = sin(a); + assert(abs(double(b)) < 1e-4) ***** test - f1 = asec(x); - f2 = asec(d); - assert( abs(double(f1) - f2) < 1e-15 ) + % vpa from double is ok, doesn't warn (c.f., sym(2.3)) + a = vpa(2.3); + assert(true) ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = asec(A); - f2 = asec(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + % vpa from double not more than 16 digits + a = vpa(sqrt(pi), 32); + b = sin(a^2); + assert(abs(double(b)) > 1e-20) + assert(abs(double(b)) < 1e-15) ***** test - % round trip - y = sym('y'); - A = asec (d); - f = asec (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/isinf.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isinf.m -***** shared x,zoo,oo,snan - oo = sym(inf); - zoo = sym('zoo'); - x = sym('x'); - snan = sym(nan); + a = vpa(sym(pi), 32); + b = sin(a); + assert(abs(double(b)) < 1e-30) ***** test - % various ops that give inf and nan - assert (isinf(oo)) - assert (isinf(zoo)) - assert (isinf(oo+oo)) - assert (~isinf(oo+zoo)) - assert (~isinf(0*oo)) - assert (~isinf(0*zoo)) - assert (~isinf(snan)) - assert (~isinf(oo-oo)) - assert (~isinf(oo-zoo)) + a = vpa(sym(pi), 256); + b = sin(a); + assert(abs(double(b)) < 1e-256) ***** test - % arrays - assert (isequal( isinf([oo zoo]), [1 1] )) - assert (isequal( isinf([oo 1]), [1 0] )) - assert (isequal( isinf([10 zoo]), [0 1] )) - assert (isequal( isinf([x oo x]), [0 1 0] )) + % pi str + a = vpa('pi', 32); + b = sin(a); + assert(abs(double(b)) < 1e-32) ***** test - % Must not contain string 'symbol'; these all should make an - % actual infinity. Actually a ctor test, not isinf. - % IIRC, SMT in Matlab 2013b fails. - oo = sym(inf); - assert (isempty (strfind (sympy (oo), 'Symbol'))) - oo = sym(-inf); - assert (isempty (strfind (sympy (oo), 'Symbol'))) - oo = sym('inf'); - assert (isempty (strfind (sympy (oo), 'Symbol'))) - oo = sym('-inf'); - assert (isempty (strfind (sympy (oo), 'Symbol'))) - oo = sym('Inf'); - assert (isempty (strfind (sympy (oo), 'Symbol'))) + % pi str + a = vpa('pi', 32); + b = vpa(sym('pi'), 32); + assert (double (a - b) == 0) ***** test - % ops with infinity shouldn't collapse - syms x oo zoo - y = x + oo; - assert (~isempty (strfind (lower (sympy (y)), 'add') )) - y = x - oo; - assert (~isempty (strfind (lower (sympy (y)), 'add') )) - y = x - zoo; - assert (~isempty (strfind (lower (sympy (y)), 'add') )) - y = x*oo; - assert (~isempty (strfind (lower (sympy (y)), 'mul') )) + spi = sym(pi); + a = vpa(spi, 10); + b = double(a); + assert(~isAlways(spi == a)) ***** test - % ops with infinity are not necessarily infinite - syms x oo zoo - y = x + oo; - assert(~isinf(y)) % SMT 2014a says "true", I disagree - y = x - zoo; - assert(~isinf(y)) - y = x*oo; - assert(~isinf(y)) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/isNone.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isNone.m + % matrix of sym + a = [sym(pi) 0; sym(1)/2 1]; + b = [pi 0; 0.5 1]; + c = vpa(a, 6); + assert(max(max(abs(double(c)-b))) < 1e-6) ***** test - None = pycall_sympy__ ('return None'); -***** shared None - None = pycall_sympy__ ('return None'); -***** assert (isNone(None)) -***** assert (~isNone(sym('x'))) -***** assert (islogical(isNone(None))) + % matrix of double + b = [pi 0; 0.5 1]; + c = vpa(b, 6); + assert(max(max(abs(double(c)-b))) < 1e-6) ***** test - a = [1 None]; - a = [None None]; - a = [None; 1]; - a = [None; None]; - a = [None 2; 3 None]; + % integer type + a = vpa(int32(6), 64); + b = vpa(6, 64); + assert (isequal (a, b)) ***** test - a = sym([1 2]); - a(1,2) = None; - assert (isequal (a, [sym(1) None])); -***** assert (isequal (None(1), None)); -***** error None(None); -***** error x=sym('x'); x(None); -***** error x=1; x(None); -***** error None(None); -***** error 1 + None; -***** error None - 1; -***** error 6*None; -***** error 2^None; -***** error [1 2].*None; -***** error isconstant(None); -***** error nnz(None); -***** error logical(None); -***** error isAlways(None); -***** error logical([sym(true) None]); -***** error isAlways([sym(true) None]); -***** assert (isequal (children(None), None)) -***** assert (isequal (repmat(None, 1, 2), [None None])) -***** assert (isequal (fliplr(None), None)) -***** assert (isequal (flipud(None), None)) -26 tests, 26 passed, 0 known failure, 0 skipped -[inst/@sym/subsasgn.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/subsasgn.m -***** shared a,b - b = [1:4]; - a = sym(b); -***** test a(1) = 10; b(1) = 10; - assert(isequal( a, b )) -***** test I = logical([1 0 1 0]); - a(I) = 2; b(I) = 2; - assert(isequal( a, b )) -***** test I = logical([1 0 1 0]); - a(I) = [2 4]; b(I) = [2 4]; - assert(isequal( a, b )) -***** test I = logical([1 0 1 0]); - a(I) = [2; 4]; b(I) = [2; 4]; - assert(isequal( a, b )) -***** shared + % matrix of int + b = int32([pi 0; 6.25 1]); + c = vpa(b, 6); + assert (isequal (double(c), [3 0; 6 1])) ***** test - b = 1:4; b = [b; 2*b; 3*b]; - a = sym(b); - rhs = [10 11; 12 13]; - a([1:2],[1:2]) = rhs; - b([1:2],[1:2]) = rhs; - assert(isequal( a, b )) - a(1:2,1:2) = rhs; - assert(isequal( a, b )) + % can pass pi directly to vpa + a = vpa(sym(pi), 128); + b = vpa(pi, 128); + assert (isequal (a, b)) ***** test - % slice : - b = 1:4; b = [b; 2*b]; - a = sym(b); - rhs = [10 11; 12 13]; - a(:,2:3) = rhs; - b(:,2:3) = rhs; - assert(isequal( a, b )) + % if sym does sth special for e so should vpa + a = vpa(sym(exp(1)), 64); + b = vpa(exp(1), 64); + assert (isequal (a, b)) ***** test - % grow 2D - b = 1:4; b = [b; 2*b]; - a = sym(b); - rhs = [10 11; 12 13]; - a([1 end+1],end:end+1) = rhs; - b([1 end+1],end:end+1) = rhs; - assert(isequal( a, b )) + % can pass pi directly to vpa, even in array + a = vpa(sym([2 pi]), 128); + b = vpa([2 pi], 128); + assert (isequal (a, b)) ***** test - % grow from nothing - clear a - a(3) = sym (1); - b = sym ([0 0 1]); + % can pass i directly to vpa + a = vpa(sym(i)); + b = vpa(i); +***** test + % 'i' and 'I' just make vars + a = vpa(sym(1i)); + b = vpa('i'); + c = vpa('I'); + assert (~isequal (a, b)) + assert (~isequal (a, c)) +***** test + % '1i' and '1j' strings + a = vpa(sym(1i)); + b = vpa('1i'); + c = vpa('1j'); assert (isequal (a, b)) + assert (isequal (a, c)) ***** test - % grow from nothing, 2D - clear a - a(2, 3) = sym (1); - b = sym ([0 0 0; 0 0 1;]); + % Issue #868, precision loss on '0.33j' + a = vpa('0.33j', 40); + b = vpa('0.33i', 40); + assert (double (abs (imag (a)*100/33) - 1) < 1e-39) assert (isequal (a, b)) ***** test - % linear indices of 2D - b = 1:4; b = [b; 2*b; 3*b]; - a = sym(b); - b(1:4) = [10 11 12 13]; - a(1:4) = [10 11 12 13]; - assert(isequal( a, b )) - b(1:4) = [10 11; 12 13]; - a(1:4) = [10 11; 12 13]; - assert(isequal( a, b )) -***** error - % Wrong shape matrix RHS: Matlab/Octave don't allow this on doubles. - % Matlab SMT 2013b gets it wrong. We throw an error. - rhs = [10 11; 12 13]; - a = sym (magic (3)); - a(1:2,1:2) = rhs(:); + % inf/-inf do not become symbol('inf') + S = {'oo', '-oo', 'inf', 'Inf', '-inf', '+inf'}; + for j = 1:length(S) + a = vpa(S{j}); + b = vpa(sym(S{j})); + assert (isequal (a, b)) + end ***** test - % Issue #963: vector RHS with diff orientation from 2D indexing - b = 1:4; b = [b; 2*b; 3*b]; - a = sym(b); - b(1:2:3, 1) = 11:2:13; - a(1:2:3, 1) = sym(11:2:13); - assert (isequal (a, b)) - b(1:2:3, 1) = 1:2:3; - a(1:2:3, 1) = 1:2:3; + a = vpa('2.3', 20); + s = strtrim(disp(a, 'flat')); + assert (strcmp (s, '2.3000000000000000000')) +***** test + % these should *not* be the same + a = vpa(2.3, 40); + b = vpa('2.3', 40); + sa = sympy (a); + sb = sympy (b); + assert (~isequal (a, b)) + assert (abs(double(a - b)) > 1e-20) + assert (abs(double(a - b)) < 1e-15) + assert (~strcmp(sa, sb)) +***** test + % these should *not* be the same + x = vpa('1/3', 32); + y = vpa(sym(1)/3, 32); + z = vpa(1/3, 32); + assert (isequal (x, y)) + assert (~isequal (x, z)) +***** test + % big integers + a = int64(12345678); + a = a*a; + b = vpa(a); + c = vpa('152415765279684'); + assert (isequal (b, c)) +***** test + % big integers (workaround poor num2str, works in 4.0?) + a = int64(1234567891); a = a*a; + b = vpa(a); + c = vpa('1524157877488187881'); + assert (isequal (b, c)) +***** test + % isequal and other comparisons + a = vpa ("2/3", 32); + b = vpa ("2/3", 64); + assert (~ logical (a == b)) + assert (~ isequal (a, b)) + a = vpa ("1/3", 32); + b = vpa ("1/3", 64); + assert (~ logical (a == b)) + assert (~ isequal (a, b)) + a = vpa ("0.1", 32); + b = vpa ("0.1", 64); + assert (~ logical (a == b)) + assert (~ isequal (a, b)) +***** test + % isequal with array: Issue #1285 + a = vpa ("2/3", 32); + b = vpa ("2/3", 64); + assert (~ isequal ([a 2*a], [b 2*b])) +***** xtest + % non-equality of vpa that "might be" be integers: Issue #1285 + a = vpa ("123", 32); + b = vpa ("123", 64); + assert (~ logical (a == b)) +!!!!! known failure +assert (!logical (a == b)) failed +***** xtest + % non-equality of vpa that "might be" be integers: Issue #1285 + if (pycall_sympy__ ('return Version(spver) >= Version("1.12.1")')) + a = vpa ("123", 32); + b = vpa ("123", 64); + assert (~ isequal (a, b)) + end +***** warning vpa ('sqrt(2.0)'); +***** warning + a = vpa('2**0.5'); + b = vpa(sqrt(sym(2))); assert (isequal (a, b)) ***** test - % Issue #963: vector RHS with diff orientation from 2D indexing - a = sym (magic (3)); - b = a; - a(1:2:3, 2) = [14 15]; - b(1:2:3, 2) = [14; 15]; + a = vpa('2.3e1'); + b = vpa(' 2.3e+1 '); assert (isequal (a, b)) - a(2, 1:2:3) = [24 25]; - b(2, 1:2:3) = [24; 25]; + a = vpa('21e-1'); + b = vpa('2.1'); assert (isequal (a, b)) ***** test - % 1D growth and 'end' - g = sym([1 2 3]); - g(3:4) = [67 68]; - g(end:end+1) = [12 14]; - assert(isequal( g, [1 2 67 12 14] )) + % Issue #859, operations on immutable matrices + x = vpa (sym ([1 2])); + % If vpa no longer makes an ImmutableDenseMatrix, + % may need to adjust or remove this test. + assert (~ isempty (strfind (sympy (x), 'Immutable'))) + y = sin(x); + y2 = [sin(vpa(sym(1))) sin(vpa(sym(2)))]; + assert (isequal (y, y2)) +34 tests, 33 passed, 1 known failure, 0 skipped +[inst/eulergamma.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/eulergamma.m +***** error catalan (sym(1)) +***** assert (double (eulergamma ()) > 0.577215664901) +***** assert (double (eulergamma ()) < 0.577215664902) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/poly2sym.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/poly2sym.m +***** shared x,y,a,b,c,p + syms x y a b c + p = x^3 + 2*x^2 + 3*x + 4; +***** assert(isAlways( poly2sym([1 2 3 4]) == p )) +***** assert(isAlways( poly2sym([1 2 3 4],x) == p )) +***** assert(isAlways( poly2sym([1 2 3 4],y) == subs(p,x,y) )) +***** assert(isAlways( poly2sym([1 2 3 4],5) == subs(p,x,5) )) +***** assert(isequal( poly2sym ([1]), 1 )) +***** assert(isequal( poly2sym ([]), 0 )) +***** assert(isAlways( poly2sym(sym([1 2 3 4]),x) == p )) +***** assert(isAlways( poly2sym([a b c],x) == a*x^2 + b*x + c )) +***** assert(isAlways( poly2sym([a b c]) == a*x^2 + b*x + c )) +***** assert(isequal( poly2sym(sym([])), 0 )) +***** assert(isAlways( poly2sym({sym(1) sym(2)}, x) == x + 2 )) +***** assert(isequal( poly2sym ({1}), 1 )) +***** assert(isequal( poly2sym ({}), 0 )) +***** assert(isequal( poly2sym ({1}, x), 1 )) +***** assert(isequal( poly2sym ({}, x), 0 )) +***** assert(isAlways( poly2sym([x x], x) == x^2 + x )) +***** test + % mixed cell array with doubles and syms + assert (isequal (poly2sym ({2.0 sym(3) int64(4)}), 2*x^2 + 3*x + 4)) +***** test + % string for x + p = poly2sym ([1 2], 's'); + syms s + assert (isequal (p, s + 2)) +18 tests, 18 passed, 0 known failure, 0 skipped +[inst/catalan.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/catalan.m +***** error catalan (sym(1)) +***** assert (double (catalan ()) > 0.915965594177) +***** assert (double (catalan ()) < 0.915965594178) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/findsymbols.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/findsymbols.m +***** test + syms x b y n a arlo + z = a*x + b*pi*sin (n) + exp (y) + exp (sym (1)) + arlo; + s = findsymbols (z); + assert (isequal ([s{:}], [a,arlo,b,n,x,y])) ***** test - % expanding empty and scalar syms x - c = sym([]); - c(1) = x; - assert(isequal( c, x )) - c(2) = 2*x; - assert(isequal( c, [x 2*x] )) -***** shared a,b,I,J - b = 1:4; b = [b; 3*b; 5*b]; a = sym(b); - I = logical([1 0 1]); - J = logical([1 0 1 0]); -***** assert(isequal( a(I,J), b(I,J) )) + s = findsymbols (x); + assert (isequal (s{1}, x)) ***** test - rhs = [90 91; 92 93]; - b(I, J) = rhs; - a(I, J) = rhs; - assert(isequal( a, b )) + syms z x y a + s = findsymbols ([x y; 1 a]); + assert (isequal ([s{:}], [a x y])) +***** assert (isempty (findsymbols (sym (1)))) +***** assert (isempty (findsymbols (sym ([1 2])))) +***** assert (isempty (findsymbols (sym (nan)))) +***** assert (isempty (findsymbols (sym (inf)))) +***** assert (isempty (findsymbols (exp (sym (2))))) ***** test - b(I, J) = 100; - a(I, J) = 100; - assert(isequal( a, b )) -***** shared + % empty sym for findsymbols, findsym, and symvar + assert (isempty (findsymbols (sym([])))) + assert (isempty (findsym (sym([])))) + assert (isempty (symvar (sym([])))) ***** test - % logical with all false + % diff. assumptions make diff. symbols + x1 = sym('x'); + x2 = sym('x', 'positive'); + f = x1*x2; + assert (length (findsymbols (f)) == 2) +***** test + % symfun or sym + syms x f(y) + a = f*x; + b = f(y)*x; + assert (isequal (findsymbols(a), {x y})) + assert (isequal (findsymbols(b), {x y})) +***** test + % findsymbols on symfun does not find the argnames (unless they + % are on the RHS of course, this matches SMT 2014a). + syms a x y + f(x, y) = a; % const symfun + assert (isequal (findsymbols(f), {a})) + syms a x y + f(x, y) = a*y; + assert (isequal (findsymbols(f), {a y})) +***** test + % sorts lexicographically, same as symvar *with single input* + % (note symvar does something different with 2 inputs). + syms A B a b x y X Y + f = A*a*B*b*y*X*Y*x; + assert (isequal (findsymbols(f), {A B X Y a b x y})) + assert (isequal (symvar(f), [A B X Y a b x y])) +***** test + % symbols in matpow + syms x y + syms n + A = [sin(x) 2; y 1]; + B = A^n; + L = findsymbols(B); + assert (isequal (L, {n x y})) +***** test + % array of eq + syms x y + assert (isequal (findsymbols (2 == [2 x y]), {x y})) +***** test + % array of ineq + syms x y + A = [x < 1 2*x < y x >= 2 3 <= x x != y]; + assert (isequal (findsymbols (A), {x y})) +16 tests, 16 passed, 0 known failure, 0 skipped +[inst/pycall_sympy__.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/pycall_sympy__.m +***** test + % general test + x = 10; y = 6; + cmd = '(x,y) = _ins; return (x+y,x-y)'; + [a,b] = pycall_sympy__ (cmd, x, y); + assert (a == x + y && b == x - y) +***** test + % bool + assert (pycall_sympy__ ('return True,')) + assert (~pycall_sympy__ ('return False,')) +***** test + % float + assert (abs(pycall_sympy__ ('return 1.0/3,') - 1/3) < 1e-15) +***** test + % int + r = pycall_sympy__ ('return 123456'); + assert (r == 123456) + assert (isinteger (r)) +***** test + % string + x = 'octave'; + cmd = 's = _ins[0]; return s.capitalize(),'; + y = pycall_sympy__ (cmd, x); + assert (strcmp(y, 'Octave')) +***** test + % string with escaped newlines, comes back as escaped newlines + x = 'a string\nbroke off\nmy guitar\n'; + y = pycall_sympy__ ('return _ins', x); + assert (strcmp(y, x)) +***** test + % string with actual newlines, comes back as actual newlines + x = sprintf('a string\nbroke off\nmy guitar\n'); + y = pycall_sympy__ ('return _ins', x); + y2 = strrep(y, sprintf('\n'), sprintf('\r\n')); % windows + assert (strcmp(x, y) || strcmp(x, y2)) +***** test + % cmd string with newlines, works with cell + y = pycall_sympy__ ('return "string\nbroke",'); + y2 = sprintf('string\nbroke'); + y3 = strrep(y2, sprintf('\n'), sprintf('\r\n')); % windows + assert (strcmp(y, y2) || strcmp(y, y3)) +***** test + % string with XML escapes + x = '<> >< <<>>'; + y = pycall_sympy__ ('return _ins', x); + assert (strcmp(y, x)) + x = '&'; + y = pycall_sympy__ ('return _ins', x); + assert (strcmp(y, x)) +***** test + % strings with double quotes + x = 'a\"b\"c'; + y = pycall_sympy__ ('return _ins', x); + assert (strcmp(y, x)) + x = '\"'; + y = pycall_sympy__ ('return _ins', x); + assert (strcmp(y, x)) +***** test + % cmd has double quotes, these must be escaped by user + % (of course: she is writing python code) + expy = 'a"b"c'; + y = pycall_sympy__ ('return "a\"b\"c",'); + assert (strcmp(y, expy)) +***** test + % strings with quotes + x = 'a''b'; % this is a single quote + y = pycall_sympy__ ('return _ins', x); + assert (strcmp(y, x)) +***** test + % strings with quotes + x = '\"a''b\"c''\"d'; + y = pycall_sympy__ ('return _ins[0]', x); + assert (strcmp(y, x)) +***** test + % strings with quotes + expy = '"a''b"c''"d'; + y = pycall_sympy__ ('s = "\"a''b\"c''\"d"; return s'); + assert (strcmp(y, expy)) +***** test + % strings with printf escapes + x = '% %% %%% %%%% %s %g %%s'; + y = pycall_sympy__ ('return _ins', x); + assert (strcmp(y, x)) +***** test + % cmd with printf escapes + x = '% %% %%% %%%% %s %g %%s'; + y = pycall_sympy__ (['return "' x '",']); + assert (strcmp(y, x)) +***** test + % cmd w/ backslash and \n must be escaped by user + expy = 'a\b\\c\nd\'; + y = pycall_sympy__ ('return "a\\b\\\\c\\nd\\",'); + assert (strcmp(y, expy)) +***** test + % slashes + x = '/\\ // \\\\ \\/\\/\\'; + z = '/\ // \\ \/\/\'; + y = pycall_sympy__ ('return _ins', x); + assert (strcmp(y, x)) +***** test + % slashes + z = '/\ // \\ \/\/\'; + y = pycall_sympy__ ('return "/\\ // \\\\ \\/\\/\\"'); + assert (strcmp(y, z)) +***** test + % strings with special chars + x = '!@#$^&* you!'; + y = pycall_sympy__ ('return _ins', x); + assert (strcmp(y, x)) + x = '~-_=+[{]}|;:,.?'; + y = pycall_sympy__ ('return _ins', x); + assert (strcmp(y, x)) +***** xtest + % string with backtick trouble for system -c (sysoneline) + x = '`'; + y = pycall_sympy__ ('return _ins', x); + assert (strcmp(y, x)) +***** test + % unicode + s1 = '我爱你'; + cmd = 'return u"\u6211\u7231\u4f60",'; + s2 = pycall_sympy__ (cmd); + assert (strcmp (s1, s2)) +***** test + % unicode with \x + s1 = '我'; + cmd = 'return b"\xe6\x88\x91".decode("utf-8")'; + s2 = pycall_sympy__ (cmd); + assert (strcmp (s1, s2)) +***** test + % unicode with \x and some escaped backslashes + s1 = '\我\'; + cmd = 'return b"\\\xe6\x88\x91\\".decode("utf-8")'; + s2 = pycall_sympy__ (cmd); + assert (strcmp (s1, s2)) +***** xtest + % unicode passthru + s = '我爱你'; + s2 = pycall_sympy__ ('return _ins', s); + assert (strcmp (s, s2)) + s = '我爱你<>\&//\#%% %\我'; + s2 = pycall_sympy__ ('return _ins', s); + assert (strcmp (s, s2)) +***** xtest + % unicode w/ slashes, escapes + s = '我<>\&//\#%% %\我'; + s2 = pycall_sympy__ ('return "我<>\\&//\\#%% %\\我"'); + assert (strcmp (s, s2)) +***** test + % list, tuple + assert (isequal (pycall_sympy__ ('return [1,2,3],'), {1, 2, 3})) + assert (isequal (pycall_sympy__ ('return (4,5),'), {4, 5})) + assert (isequal (pycall_sympy__ ('return (6,),'), {6,})) + assert (isequal (pycall_sympy__ ('return [],'), {})) +***** test + % dict + cmd = 'd = dict(); d["a"] = 6; d["b"] = 10; return d,'; + d = pycall_sympy__ (cmd); + assert (d.a == 6 && d.b == 10) +***** test + r = pycall_sympy__ ('return 6'); + assert (isequal (r, 6)) +***** test + r = pycall_sympy__ ('return "Hi"'); + assert (strcmp (r, 'Hi')) +***** test + % blank lines, lines with spaces + a = pycall_sympy__ ({ '', '', ' ', 'return 6', ' ', ''}); + assert (isequal (a, 6)) +***** test + % blank lines, strange comment lines + cmd = {'a = 1', '', '#', '', '# ', ' #', 'a = a + 2', ' #', 'return a'}; + a = pycall_sympy__ (cmd); + assert (isequal (a, 3)) +***** test + % return empty string (was https://bugs.python.org/issue25270) + assert (isempty (pycall_sympy__ ('return ""'))) +***** test + % return nothing (via an empty list) + % note distinct from 'return [],' + pycall_sympy__ ('return []') +***** test + % return nothing (because no return command) + pycall_sympy__ ('dummy = 1') +***** test + % return nothing (because no command) + pycall_sympy__ ('') +***** test + % return nothing (because no command) + pycall_sympy__ ({}) +***** error + % python exception while passing variables to python + % This tests the "INTERNAL_PYTHON_ERROR" path. + % FIXME: this is a very specialized test, relies on internal octsympy + % implementation details, and may need to be adjusted for changes. + disp('') + disp('**********************************************************************') + disp('') + disp(' Some deliberate AttributeError and ValueError may appear next') + disp('') + disp('v v v v v v v v v v v v v v v v v v v v v v v v') + b = sym([], 'S.This_is_supposed_to_make_an_exception', [1 1], 'Test', 'Test', 'Test'); + c = b + 1; + +********************************************************************** + + Some deliberate AttributeError and ValueError may appear next + +v v v v v v v v v v v v v v v v v v v v v v v v +Traceback (most recent call last): + File "", line 4, in + _ins.append(S.This_is_supposed_to_make_an_exception) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/sympy/core/singleton.py", line 118, in __getattr__ + raise AttributeError( + "Attribute '%s' was not installed on SymPy registry %s" % ( + name, self)) +AttributeError: Attribute 'This_is_supposed_to_make_an_exception' was not installed on SymPy registry S +***** test + % ...and after the above test, the pipe should still work + a = pycall_sympy__ ('return _ins[0]*2', 3); + assert (isequal (a, 6)) +***** test + % This command does not fail with native interface and '@pyobject' + s = warning ('off', 'OctSymPy:pythonic_no_convert'); + try + q = pycall_sympy__ ({'return type(int)'}); + catch + msg = lasterror.message; + assert (~ isempty (regexp (msg, '.*does not know how to.*'))) + end + warning (s) + disp('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^') + disp(' End of deliberate errors!') + disp(' You should see "46/46" or "Passes 46 out of 46 tests" below') + disp('**********************************************************************') + % ...and after the above test, the pipe should still work + a = pycall_sympy__ ('return _ins[0]*2', 3); + assert (isequal (a, 6)) +Traceback (most recent call last): + File "", line 2, in + octoutput_drv(_outs) + ~~~~~~~~~~~~~^^^^^^^ + File "", line 12, in octoutput_drv + octoutput(x, xroot) + ~~~~~~~~~^^^^^^^^^^ + File "", line 96, in octoutput + raise ValueError("octoutput does not know how to export type " + str(type(x))) +ValueError: octoutput does not know how to export type +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + End of deliberate errors! + You should see "46/46" or "Passes 46 out of 46 tests" below +********************************************************************** +***** test + % complex input + [A, B] = pycall_sympy__ ('z = 2*_ins[0]; return (z.real,z.imag)', 3+4i); + assert (A, 6) + assert (B, 8) +***** test + % complex output + z = pycall_sympy__ ('return 3+2j'); + assert (z, 3+2i) +***** error + s = char ('abc', 'defgh', '12345'); + r = pycall_sympy__ ('return _ins[0]', s); +***** test + r = pycall_sympy__ ('return len(_ins[0])', ''); + assert (r == 0) +***** test + % ensure the 0x0 matrix in octave gets mapped to the empty list in python + % @sym/subsasgn currently replies on this behaviour + assert (pycall_sympy__ ('return _ins[0] == []', [])); +***** test + % ensure the empty string gets mapped to the empty string in python + assert (pycall_sympy__ ('return _ins[0] == ""', '')); +46 tests, 46 passed, 0 known failure, 0 skipped +[inst/heaviside.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/heaviside.m +***** assert (heaviside (0) == 0.5) +***** assert (isnan (heaviside (nan))) +***** assert (isequal (heaviside ([-inf -eps 0 eps inf]), [0 0 0.5 1 1])) +***** assert (isequaln (heaviside ([-1 1 nan]), [0 1 nan])) +***** assert (heaviside (0, 1) == 1) +***** error heaviside (1i) +***** assert (isa (heaviside (single (0)), 'single')) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/syms.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/syms.m +***** test + %% assumptions + syms x real + x2 = sym('x', 'real'); + assert (isequal (x, x2)) +***** test + % assumptions and clearing them on a symbol + syms x real + assert (~isempty (assumptions (x))) syms x - y = x; - y(false) = 6; - assert(isequal( y, x )); - a = [x x]; - a([false false]) = [6 6]; - assert(isequal( a, [x x] )); + assert (isempty (assumptions (x))) ***** test - % issue #18, scalar access + % Note SMT would clear syms in existing expressions + syms x real + f = {x {2*x} cos(x/2)}; + assert (~isempty (assumptions (f))) syms x - x(1) = sym(6); - assert(isequal( x, sym(6) )); - x(1) = 6; - assert(isequal( x, sym(6) )); - x(true) = 88; - assert(isequal( x, sym(88) )); + % but we do not: this would have to toggle for pure SMT compat + assert (~isempty (assumptions (f))) + % assert (isempty (assumptions (f))) +***** error + syms x clear +***** error + syms x positive y +***** error + % this sometimes catches typos or errors in assumption names + % (if you need careful checking, use sym not syms) + syms x positive evne +***** error + syms positive integer ***** test - % bug: assignment to column vector used to fail - A = sym(zeros(3,1)); - A(1) = 5; + % does not create a variable called positive + syms x positive integer + assert (logical(exist('x', 'var'))) + assert (~logical(exist('positive', 'var'))) +***** test + % Issue #885 + syms S(x) I(x) O(x) +***** test + % Issue #290 + syms FF(x) + syms ff(x) + syms Eq(x) +***** test + % Issue #290 + syms beta(x) +***** test + syms x real + syms f(x) + assert (~ isempty (assumptions (x))) +***** test + syms x real + f(x) = symfun(sym('f(x)'), x); + assert (~ isempty (assumptions (x))) + assert (~ isempty (assumptions (argnames (f)))) +13 tests, 13 passed, 0 known failure, 0 skipped +[inst/cell2sym.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/cell2sym.m +***** test + A = {1 2 3; 4 5 6}; + B = [1 2 3; 4 5 6]; + assert (isequal (cell2sym(A), sym(B))) +***** test + A = {'a' 'b'; 'c' 10}; + B = [sym('a') sym('b'); sym('c') sym(10)]; + assert (isequal (cell2sym(A), B)) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/assumptions.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/assumptions.m ***** test - % symfun creation (generic function) syms x - g(x) = x*x; - assert(isa(g,'symfun')) + assert(isempty(assumptions(x))) ***** test - % symfun creation (generic function) - syms x g(x) - assert(isa(g,'symfun')) + x = sym('x', 'positive'); + a = assumptions(x); + assert(~isempty(strfind(a{1}, 'positive'))) ***** test - % symfun creation when g already exists and is a sym/symfun syms x - g = x; - syms g(x) - assert(isa(g,'symfun')) - clear g - g(x) = x; - g(x) = x*x; - assert(isa(g,'symfun')) + assert(isempty(assumptions(x))) ***** test - % Issue #443: assignment with sym indices - A = sym([10 11]); - A(sym(1)) = 12; - assert (isequal (A, sym([12 11]))) + clear variables % for matlab test script + syms x positive + assert(~isempty(assumptions())) + clear x + assert(isempty(assumptions())) ***** test - % Issue #443: assignment with sym indices - A = sym([10 11]); - A(sym(1), 1) = 12; - assert (isequal (A, sym([12 11]))) - A(sym(1), sym(1)) = 13; - assert (isequal (A, sym([13 11]))) + % make sure we have at least these possible assumptions + A = {'real' 'positive' 'negative' 'integer' 'even' 'odd' 'rational'}; + B = assumptions('possible'); + assert (isempty (setdiff(A, B))) ***** test - % Issue #443: assignment with sym indices, increase size - A = sym([10 11]); - A(sym(2), 1) = 12; - assert (isequal (A, sym([10 11; 12 0]))) -***** error - % Issue #443 - A = sym([10 11]); - A(2, sym('x')) = sym(12); -***** error - % Issue #443 - A = sym([10 11]); - A(sym(2), sym('x')) = sym(12); -***** error - % issue #445 - A = sym([10 11]); - A(1.1) = 13 -***** error - % issue #445 - A = sym([10 11]); - A(sym(pi)) = 13 -***** error - % issue #445 - A = sym([1 2; 3 4]); - A(1.3, 1.2) = 13 + A = assumptions('possible'); + for i = 1:length(A) + x = sym('x', A{i}); + a = assumptions(x); + assert(strcmp(a{1}, ['x: ' A{i}] )) + s1 = sympy (x); + s2 = ['Symbol(''x'', ' A{i} '=True)']; + assert (strcmp (s1, s2)) + end ***** test - % older expansion tests + syms x positive + syms y real + syms z + f = x*y*z; + a = assumptions(f); + assert(length(a) == 2) + assert(~isempty(strfind(a{1}, 'positive'))) + assert(~isempty(strfind(a{2}, 'real'))) +***** test + % dict output + syms x positive + syms y real + syms z + f = x*y*z; + [v, d] = assumptions(f, 'dict'); + assert(length(v) == 2) + assert(iscell(v)) + assert(isa(v{1}, 'sym')) + assert(isa(v{2}, 'sym')) + assert(length(d) == 2) + assert(iscell(d)) + assert(isstruct(d{1})) + assert(isstruct(d{2})) +***** test + %% assumptions on just the vars in an expression + clear variables % for matlab test script + syms x y positive + f = 2*x; + assert(length(assumptions(f))==1) + assert(length(assumptions())==2) +***** test + %% assumptions in cell/struct + clear variables % for matlab test script + syms x y z w positive + f = {2*x [1 2 y] {1, {z}}}; + assert(length(assumptions())==4) + assert(length(assumptions(f))==3) + clear x y z w + assert(length(assumptions())==3) + assert(length(assumptions(f))==3) +***** test + % multiple assumptions + n = sym('n', 'negative', 'even'); + assert (logical (n < 0)) + assert (~(logical (n > 0))) + assert (~(logical (n == -1))) +***** test + % multiple assumptions: eqn neither true nor false + n = sym('n', 'negative', 'even'); + assert (~isequal (n, sym(true)) && ~isequal (n, sym(false))) +***** test + %% TODO: rewrite later with https://github.com/gnu-octave/symbolic/issues/622 + a = pycall_sympy__ ('return Symbol("a", real=False)'); + assert (strcmp (assumptions (a), {'a: ~real'})) +13 tests, 13 passed, 0 known failure, 0 skipped +[inst/@symfun/formula.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/formula.m +***** test + % simple syms x - f = [2*x 3*x]; - f(2) = 4*x; - assert (isequal (f, [2*x 4*x])) - f(2) = 2; - assert (isequal(f, [2*x 2])) - g = f; - g(1,3) = x*x; - assert (isequal(g, [2*x 2 x^2])) - g = f; - g(3) = x*x; - assert (isequal(g, [2*x 2 x^2])) - g = f; - g(3) = 4; - assert (isequal(g, [2*x 2 4])) + f(x) = sin(x); + g = formula(f); + assert (isequal (g, sin(x))); ***** test - % older slicing tests + % concrete: return is a sym, not a symfun syms x - f = [1 x^2 x^4]; - f(1:2) = [x x]; - assert (isequal( f, [x x x^4] )) - f(1:2) = [1 2]; - assert (isequal( f, [1 2 x^4] )) - f(end-1:end) = [3 4]; - assert (isequal( f, [1 3 4] )) - f(3:4) = [10 11]; - assert (isequal( f, [1 3 10 11] )) - f(end:end+1) = [12 14]; - assert (isequal( f, [1 3 10 12 14] )) + f(x) = sin(x); + g = formula(f); + assert (~isa(g, 'symfun')); +***** test + % abstract: return is a sym, not a symfun + syms f(x) + g = formula(f); + assert (~isa(g, 'symfun')); +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@symfun/symvar.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/symvar.m +***** test + % basic + syms f(t, s) + assert (isempty (symvar (f, 0))) + assert (isequal (symvar (f, 1), t)) + assert (isequal (symvar (f, 2), [t s])) + assert (isequal (symvar (f, 3), [t s])) +***** test + % note preference for vars of symfun, if n requested + syms x f(y) + assert (isequal (symvar(f*x, 1), y)) + assert (isequal (symvar(f(y)*x, 1), x)) +***** test + % symfun, checked smt + syms x f(y) + a = f*x; + b = f(y)*x; + assert (isequal (symvar(a), [x y])) + assert (isequal (symvar(b), [x y])) +***** test + % preference for the explicit variables + syms a x f(t, s) + h = f*a + x; + assert (isequal (symvar (h, 1), t)) + assert (isequal (symvar (h, 2), [t s])) + assert (isequal (symvar (h, 3), [t s x])) + assert (isequal (symvar (h, 4), [t s x a])) + assert (isequal (symvar (h, 5), [t s x a])) + assert (isequal (symvar (h), [a s t x])) +***** test + % symfun dep on some vars only, matches smt w/ n + syms x s t + f(s) = x; + g(s, t) = x*s; + assert (isequal (symvar(f, 1), s)) + assert (isequal (symvar(f, 2), [s x])) + assert (isequal (symvar(g, 1), s)) + assert (isequal (symvar(g, 2), [s t])) + assert (isequal (symvar(g, 3), [s t x])) +***** test + % A documented difference from SMT on symvar(symfun) w/o n + syms x s t + f(s) = x; + g(s, t) = x*s; + % SMT would have + %assert (isequal (symvar(f), x)) % no s + %assert (isequal (symvar(g), [s x])) % no t + assert (isequal (symvar(f), [s x])) + assert (isequal (symvar(g), [s t x])) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@symfun/argnames.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/argnames.m +***** test + % basic test + syms f(x) + assert (isequal (argnames (f), x)) +***** test + % Multiple variables, abstract symfun + syms f(t, x, y) + assert (isequal (argnames (f), [t x y])) +***** test + % Concrete symfun + syms x y z t + f(t, x, y) = x + y + z; + assert (isequal (argnames (f), [t x y])) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@symfun/minus.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/minus.m ***** test - % struct.str = sym, sometimes calls subsasgn - d = struct(); syms x - d.a = x; - assert (isa (d, 'struct')) - assert (isequal (d.a, x)) - d.('a') = x; - assert (isa (d, 'struct')) - assert (isequal (d.a, x)) - d = setfield(d, 'a', x); - assert (isa (d, 'struct')) - assert (isequal (d.a, x)) - % at least on Oct 3.8, this calls sym's subsasgn - d = struct(); - d = setfield(d, 'a', x); - assert (isa (d, 'struct')) - assert (isequal (d.a, x)) + f(x) = x^2; + assert( isa(f - f, 'symfun')) + assert( isa(f - x, 'symfun')) ***** test - % bool scalar assignments of true/false into sym + % Octave bug #42735 fixed in 4.4.2 syms x - a = sym([1 2 x 3]); - b = [1 2 10 4]; - e = a == b; - assert (logical (e(2))) - e(2) = false; - assert (~logical (e(2))) + f(x) = x^2; + g = x^2; + h = x - f; assert (isa (h, 'symfun') && isequal (formula (h), x - g)) + h = x + f; assert (isa (h, 'symfun') && isequal (formula (h), x + g)) + h = x * f; assert (isa (h, 'symfun') && isequal (formula (h), x * g)) + h = x / f; assert (isa (h, 'symfun') && isequal (formula (h), x / g)) + h = x ^ f; assert (isa (h, 'symfun') && isequal (formula (h), x ^ g)) + h = x .* f; assert (isa (h, 'symfun') && isequal (formula (h), x .* g)) + h = x ./ f; assert (isa (h, 'symfun') && isequal (formula (h), x ./ g)) + h = x .^ f; assert (isa (h, 'symfun') && isequal (formula (h), x .^ g)) +***** test + % different variables + syms x y + f(x) = 2*x; + g(y) = sin(y); + h = f - g(x); + assert( isa(h, 'symfun')) + assert( isequal (argnames (h), argnames (f))) + assert (isequal (formula (h), 2*x - sin(x))) + % and even if rh-sym has a dummy variable: + h = f - g(y); + assert( isa(h, 'symfun')) + assert( isequal (argnames (h), argnames(f))) + assert (isequal (formula (h), 2*x - sin(y))) +***** test + % different variables, f has more + syms x y + f(x,y) = 2*x*y; + g(y) = sin(y); + h = f - g(y) + g(x); + assert( isa(h, 'symfun')) + assert( isequal (argnames (h), argnames (f))) + assert (isequal (formula (h), 2*x*y - sin(y) + sin(x))) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/@symfun/isequal.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/isequal.m +***** error isequal (symfun('x + 1', x)) +***** test + syms x y + f(x) = 2*x; + g(x) = 2*x; + assert (isequal (f, g)) ***** test - % bool vector assignments of true/false into sym syms x - a = sym([1 2 x 3]); - b = [1 2 10 4]; - e = a == b; - e(1:2) = [true true]; - assert (isequal (e, [sym(1)==1 sym(2)==2 x==10 sym(3)==4])) + f(x) = 2*x + 1; + g(x) = 2*x + 1; + h(x) = 2*x + 1; + assert (isequal (f, g, h)) ***** test - % bool scalar promoted to vector assignments into sym syms x - a = sym([1 2 x 3]); - b = [1 2 10 4]; - e = a == b; - e(1:2) = true; - assert (isequal (e, [sym(1)==1 sym(2)==2 x==10 sym(3)==4])) + f(x) = 2*x + 1; + g(x) = 2*x + 1; + h(x) = 2*x; + assert (~ isequal (f, g, h)) ***** test - % grow scalar equality expression into a matrix of equalities - syms a b c d - e = a == b; - e(2) = c == d; - assert (isequal (e, [a==b c==d])) -***** shared a, b, I - b = [1:4]; b = [b; 3*b; 5*b]; - a = sym(b); - I = mod (b, 5) > 1; + syms x y + f(x) = 2*x; + g(x, y) = 2*x; + assert (~ isequal (f, g)) ***** test - A = a; A(I) = 2*b(I); - B = b; B(I) = 2*b(I); - assert (isequal (A, B)) + syms x y + f(x) = symfun(nan, x); + g(x) = symfun(nan, x); + assert (~ isequal (f, g)) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@symfun/ldivide.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/ldivide.m ***** test - % scalar RHS - A = a; A(I) = 17; - B = b; B(I) = 17; - assert (isequal (A, B)) + syms x + f(x) = x^2; + assert( isa(f .\ f, 'symfun')) + assert( isa(f .\ x, 'symfun')) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@symfun/mldivide.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mldivide.m ***** test - % nonetheless, above strange case should give right answer - I = logical([1 0 1 0; 0 1 0 1; 1 0 1 0]); - rhs = 2*b(I); - rhs2 = reshape(rhs, 2, 3); - A0 = a; A1 = a; - A0(I) = rhs; - A1(I) = rhs2; - assert (isequal (A0, A1)) -***** shared AA, BB - BB = [1 2 3; 4 5 6]; - AA = sym(BB); + syms x + f(x) = x^2; + assert( isa(f\f, 'symfun')) + assert( isa(f\x, 'symfun')) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@symfun/power.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/power.m ***** test - A = AA; B = BB; - B([1 6]) = [8 9]; - A([1 6]) = [8 9]; - assert (isequal (A, B)) + syms x + f(x) = 2*x; + h = f.^f; + assert( isa(h, 'symfun')) + assert (isequal (formula (h), (2*x)^(2*x))) ***** test - % rhs scalar - A = AA; B = BB; - B([1 6]) = 88; - A([1 6]) = 88; - assert (isequal (A, B)) + syms x + f(x) = [x 2*x]; + h = f.^[x 3]; + assert( isa(h, 'symfun')) + assert (isequal (formula (h), [x^x 8*x^3])) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@symfun/mrdivide.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mrdivide.m ***** test - % If rhs is not a vector, make sure col-based access works - rhs = [18 20; 19 21]; - A = AA; B = BB; - B([1 6]) = 88; - A([1 6]) = 88; - B([1 2 3 4]) = rhs; - A([1 2 3 4]) = rhs; - assert (isequal (A, B)) + syms x + f(x) = x^2; + assert( isa(f/f, 'symfun')) + assert( isa(f/x, 'symfun')) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@symfun/size.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/size.m ***** test - % Growth - A = AA; B = BB; - A(1,5) = 10; - B(1,5) = 10; - assert (isequal (A, B)) -***** shared + syms x + f(x) = x; + d = size(f); + assert (isequal (d, [1 1])) + [n, m] = size(f); + assert (isequal ([n m], [1 1])) + assert (size(f, 1) == 1) + assert (size(f, 2) == 1) ***** test - % Check row deletion 1D - a = sym([1; 3; 5]); - b = sym([3; 5]); - a(1) = []; - assert( isequal( a, b)) + syms x + f(x) = [1 x]; + d = size(f); + assert (isequal (d, [1 1])) + [n, m] = size(f); + assert (isequal ([n m], [1 1])) + assert (size(f, 1) == 1) + assert (size(f, 2) == 1) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@symfun/uminus.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/uminus.m ***** test - % Check column deletion 1D - a = sym([1, 4, 8]); - b = sym([4, 8]); - a(1) = []; - assert( isequal( a, b)) + % Issue #447 + syms x + f(x) = x^2; + assert (isa (-f, 'symfun')) ***** test - % Check row deletion 2D - a = sym([1, 2; 3, 4]); - b = sym([3, 4]); - a(1, :) = []; - assert( isequal( a, b)) + syms f(x) + h = -f; + assert (isa (h, 'symfun')) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@symfun/isequaln.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/isequaln.m +***** error isequaln (symfun('x + 1', x)) ***** test - % Check column deletion 2D - a = sym([1, 2; 3, 4]); - b = sym([2; 4]); - a(:, 1) = []; - assert( isequal( a, b)) + syms x y + f(x) = 2*x; + g(x) = 2*x; + assert (isequaln (f, g)) ***** test - % General assign - a = sym([1, 2; 3, 4]); - b = sym([5, 5; 5, 5]); - a(:) = 5; - assert( isequal( a, b)) + syms x + f(x) = 2*x + 1; + g(x) = 2*x + 1; + h(x) = 2*x + 1; + assert (isequaln (f, g, h)) ***** test - % Empty matrix - a = sym([1, 2; 3, 4]); - a(:) = []; - assert( isequal( a, sym([]))) + syms x + f(x) = 2*x + 1; + g(x) = 2*x + 1; + h(x) = 2*x; + assert (~ isequaln (f, g, h)) ***** test - % Disassemble matrix - a = sym([1 2; 3 4; 5 6]); - b = sym([3 5 2 4 6]); - a(1) = []; - assert (isequal (a, b)); -***** error - a = sym([1, 2; 3, 4]); - a(1, 2) = []; + syms x y + f(x) = 2*x; + g(x, y) = 2*x; + assert (~ isequaln (f, g)) ***** test - % Issue #964 - a = sym(10); - a(1) = []; - assert (isempty (a)) - assert (isequal (a, zeros(1, 0))) + syms x y + f(x) = symfun(nan, x); + g(x) = symfun(nan, x); + assert (isequaln (f, g)) ***** test - % Issue #963: scalar asgn to empty part of matrix - A = sym (magic (3)); - B = A; - A(1, []) = 42; - assert (isequal (A, B)) - A([], 2) = 42; - assert (isequal (A, B)) - A([]) = 42; - assert (isequal (A, B)) - A([], []) = 42; - assert (isequal (A, B)) - A(2:3, []) = 42; - assert (isequal (A, B)) - A([], 2:3) = 42; - assert (isequal (A, B)) - A(:, []) = 42; - assert (isequal (A, B)) - A([], :) = 42; - assert (isequal (A, B)) + syms x y + f(x) = symfun(nan, x); + g(x, y) = symfun(nan, x); + assert (~ isequaln (f, g)) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/@symfun/plus.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/plus.m ***** test - % Issue #1026 - a = sym(1:5); - a(1:3) = []; - assert (isequal (a, sym([4 5]))) + syms x + f(x) = x^2; + assert( isa(f + f, 'symfun')) + assert( isa(f + x, 'symfun')) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@symfun/subsref.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/subsref.m ***** test - % Issue #1026 - B = eye(4); - A = sym(B); - A(1:2, :) = []; - B(1:2, :) = []; - assert (isequal (A, B)) -***** error - % TODO: do we care what error? - A = sym (magic (3)); - A(2:3, []) = [66; 66]; -***** error - A = sym (magic (3)); - A([]) = [66; 66]; -***** error - A = sym (magic (3)); - A([], 1) = [66; 66]; + syms x + f(x) = x^2; + v = f.vars; + assert(iscell(v)) + assert(length(v)==1) + assert(isequal(v{1},x)) ***** test - % Issue #966: empty indexing, empty RHS, A unchanged - B = magic(3); - A = sym(B); - A(1, []) = []; - assert (isequal (A, B)) - A([], 2) = []; - assert (isequal (A, B)) - A([], []) = []; - assert (isequal (A, B)) - A(2:3, []) = []; - assert (isequal (A, B)) - A([], 2:3) = []; - assert (isequal (A, B)) - A(:, []) = []; - assert (isequal (A, B)) - A([], :) = []; - assert (isequal (A, B)) + %% pass through to sym properties + syms x + f(x) = x^2; + y = x^2; % not a symfun + assert(strcmp(f.flat, y.flat)) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@symfun/numel.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/numel.m ***** test - % Issue 967 - B = [1 2; 3 4]; - A = sym(B); - A([]) = []; - assert (isequal (A, B)) + syms x + f(x) = x^2; + assert(numel(f)==1) ***** test - % Issue #965 - a = sym(7); - a([]) = []; - assert (isequal (a, sym(7))) + syms x + f(x) = [1 x]; + assert(numel(f)==1) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@symfun/symfun.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/symfun.m +***** error symfun (1, sym('x'), 3) +***** error symfun ('f', sym('x')) ***** test - % Issue #965 - a = sym(7); - a([]) = 42; - assert (isequal (a, sym(7))) -***** error - % Issue #965 - a = sym(7); - a([]) = [42 42] + syms x y + syms f(x) + assert(isa(f,'symfun')) + clear f + f(x,y) = sym('f(x,y)'); + assert(isa(f,'symfun')) ***** test - b = eye (3); - a = sym (b); - I = [2 3; 4 5]; - a(I) = -2*I; - b(I) = -2*I; - assert (isequal (a, sym (b))); - assert (size (a), [3 3]); -***** error + % symfuns are syms as well syms x - A = [1 x; x 2]; - A(5) = x; + f(x) = 2*x; + assert (isa (f, 'symfun')) + assert (isa (f, 'sym')) + assert (isequal (f(3), 6)) + assert (isequal (f(sin(x)), 2*sin(x))) ***** test - % 2D indexing with length in one dimension more than 2 - a = sym ([1 2; 3 4; 5 6]); - indices = [1 4; 2 5; 3 6]; - b = [10 11; 12 13; 14 15]; - a(indices) = b; - assert (isequal (a, sym (b))); + syms x y + f = symfun(sym('f(x)'), {x}); + assert(isa(f, 'symfun')) + f = symfun(sym('f(x,y)'), [x y]); + assert(isa(f, 'symfun')) + f = symfun(sym('f(x,y)'), {x y}); + assert(isa(f, 'symfun')) ***** test - A = sym ([0 0 0]); - indices = [false true false]; - A(indices) = 1; - assert (isequal (A, sym ([0 1 0]))); - A(indices) = []; - assert (isequal (A, sym ([0 0]))); - indices = [false false]; - A(indices) = []; - assert (isequal (A, sym ([0 0]))); -***** shared a, b - a = [1 2 3 5; 4 5 6 9; 7 5 3 2]; - b = sym (a); + % rhs is not sym + syms x + f = symfun(8, x); + assert (isa (f,'symfun')) + assert (isequal (f(10), sym(8))) ***** test - A = a; B = b; - A(true) = 0; - B(true) = 0; - assert (isequal (A, B)) + % vector symfun + syms x y + F(x,y) = [1; 2*x; y; y*sin(x)]; + assert (isa (F, 'symfun')) + assert (isa (F, 'sym')) + assert (isequal (F(sym(pi)/2,4) , [sym(1); sym(pi); 4; 4] )) ***** test - A = a; B = b; - A(false) = 0; - B(false) = 0; - assert (isequal (A, B)) + x = sym('x'); + y = sym('y'); + f(x) = sym('f(x)'); + g(x,y) = sym('g(x,y)'); + % make sure these don't fail + f(1); + g(1,2); + g(x,y); + diff(g, x); + diff(g, y); ***** test - c = [false true]; - A = a; B = b; - A(c) = 0; B(c) = 0; - assert (isequal (A, B)) - d = c | true; - A(d) = 1; B(d) = 1; - assert (isequal (A, B)) - d = c & false; - A(d) = 2; B(d) = 2; - assert (isequal (A, B)) + % defining 1D symfun in terms of a 2D symfun + syms x y t + syms 'g(x,y)' + f(t) = g(t,t); + f(5); + assert (length (argnames (f)) == 1) + assert (isequal (argnames (f), t)) + assert (isequal( formula(diff(f,x)), sym(0))) ***** test - c = [false true false true; true false true false; false true false true]; - A = a; B = b; - A(c) = 0; B(c) = 0; - assert (isequal (A, B)) - d = c | true; - A(d) = 1; B(d) = 1; - assert (isequal (A, B)) - d = c & false; - A(d) = 2; B(d) = 2; - assert (isequal (A, B)) + % replace g with shorter and specific fcn + syms x g(x) + g; + g(x) = 2*x; + assert( isequal (g(5), 10)) ***** test - c = [false true false true false]; - A = a; B = b; - A(c) = 0; B(c) = 0; - assert (isequal (A, B)) - d = c | true; - A(d) = 1; B(d) = 1; - assert (isequal (A, B)) - d = c & false; - A(d) = 2; B(d) = 2; - assert (isequal (A, B)) + % octave <= 3.8 needs quotes on 2D symfuns, so make sure it works + syms x y + syms 'f(x)' + syms 'g(x,y)' + assert (isa (f, 'symfun')) + assert (isa (g, 'symfun')) ***** test - c = [false; true; false; true; false]; - A = a; B = b; - A(c) = 0; B(c) = 0; - assert (isequal (A, B)) - d = c | true; - A(d) = 1; B(d) = 1; - assert (isequal (A, B)) - d = c & false; - A(d) = 2; B(d) = 2; - assert (isequal (A, B)) + % Bug #41: Octave <= 3.8 parser fails without quotes around 2D fcn + syms x y + eval('syms g(x,y)') + assert (isa (g, 'symfun')) ***** test - c = [false true; false true; true false]; - A = a; B = b; - A(c) = 0; B(c) = 0; - assert (isequal (A, B)) - d = c | true; - A(d) = 1; B(d) = 1; - assert (isequal (A, B)) - d = c & false; - A(d) = 2; B(d) = 2; - assert (isequal (A, B)) -77 tests, 77 passed, 0 known failure, 0 skipped -[inst/@sym/floor.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/floor.m -***** error floor (sym(1), 2) -***** assert (isequaln (floor (sym(nan)), sym(nan))) -***** shared x, d - d = 1; - x = sym('1'); + % and these days it works without eval trick + syms g(x,y) + assert (isa (g, 'symfun')) ***** test - f1 = floor(x); - f2 = floor(d); - assert( abs(double(f1) - f2) < 1e-15 ) + % syms f(x) without defining x + clear x + syms f(x) + assert(isa(f, 'symfun')) + assert(isa(x, 'sym')) ***** test - D = [d d; d d]; - A = [x x; x x]; - f1 = floor(A); - f2 = floor(D); - assert( all(all( abs(double(f1) - f2) < 1e-15 ))) + % SMT compat: symfun indep var overwrites existing var + t = 6; + syms f(t) + assert (logical (t ~= 6)) ***** test - % round trip - y = sym('y'); - A = floor (d); - f = floor (y); - h = function_handle (f); - B = h (d); - assert (A, B, -eps) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sym/euler.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/euler.m -***** error euler (sym(1), 2, 3) -***** assert (isequal (euler (sym(0)), sym(1))) + % SMT compat: symfun indep var overwrites existing var, even if sym + syms x + t = x; + syms f(t) + assert (~ logical (t == x)) ***** test - m = sym([0 1 2; 8 10 888889]); - A = euler (m); - B = sym([1 0 -1; 1385 -50521 0]); - assert (isequal (A, B)) + syms x y + f(x) = x^2; + g(x,y) = sym('g(x,y)'); + f2 = 2*f; + assert( isequal (f2(4), 32)) + assert( isa(f2, 'symfun')) + assert( isa(2*g, 'symfun')) + assert( isa(0*g, 'symfun')) % in SMT, this is the zero symfun ***** test - syms x - assert (isequal (euler(6, x), x^6 - 3*x^5 + 5*x^3 - 3*x)) -***** assert (isnan (euler (3, sym(nan)))) + % syms has its own parsing code, check it works + syms f(x,y) + g = f; + syms f(x, y) + assert (isequal (f, g)) + syms 'f( x, y )' + assert (isequal (f, g)) ***** test - syms m x - em = euler (m, x); - A = subs(em, [m x], [2 sym(pi)]); - assert (isequal (A, sym(pi)^2 - sym(pi))) + % syms own parsing code should not reorder the vars + syms f(y, x) + v = argnames (f); + assert (isequal (v(1), y) && isequal (v(2), x)) ***** test - % vectorized - syms x y - A = euler([1; 2], [x; y]); - B = [x - sym(1)/2; y^2 - y]; - assert (isequal (A, B)) + % assignment of symfun to symfun, issue #189 + syms t + x(t) = 2*t; + y(t) = x; + assert (isa (y, 'symfun')) + y = symfun(x, t); + assert (isa (y, 'symfun')) + % others + y = x; + assert (isa (y, 'symfun')) + y(t) = x(t); + assert (isa (y, 'symfun')) ***** test - % round trip - syms m z - f = euler (m, z); - h = function_handle (f, 'vars', [m z]); - A = h (2, 2.2); - B = euler (2, 2.2); - assert (A, B) + % assignment of generic symfun to symfun + syms t x(t) + y(t) = x; + assert (isa (y, 'symfun')) + y = symfun(x, t); + assert (isa (y, 'symfun')) +***** error + % Issue #444: invalid args + syms x + f(x, x) = 2*x; +***** error + % Issue #444: invalid args + syms x y + f(x, y, x) = x + y; +***** error + % Issue #444: invalid args + syms x y + f(x, y, x) = x + y; +***** error + % Issue #444: expression as arg + syms x + f(2*x) = 4*x; +25 tests, 25 passed, 0 known failure, 0 skipped +[inst/@symfun/rdivide.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/rdivide.m ***** test - % compare vpa to maple: Digits:=34; evalf(euler(13, exp(1)+Pi*I/13)); - A = vpa('1623.14184180556920918624604530515') + ... - vpa('4270.98066989140286451493108809574')*1i; - z = vpa (exp(1), 32) + vpa(pi, 32)/13*1i; - B = euler (13, z); - relerr = abs(double(abs((B - A)/A))); - assert (relerr < 20*eps); -***** xtest - % as above, high-prec result broken in 1.12: https://github.com/sympy/sympy/issues/24156 - A = vpa('1623.14184180556920918624604530515') + ... - vpa('4270.98066989140286451493108809574')*1i; - z = vpa (exp(1), 32) + vpa(pi, 32)/13*1i; - B = euler (13, z); - relerr = abs(double(abs((B - A)/A))); - assert (relerr < 2e-31); -!!!!! known failure -assert (relerr < 2e-31) failed -10 tests, 9 passed, 1 known failure, 0 skipped -[inst/@sym/tand.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/tand.m -***** error tand (sym(1), 2) -***** assert (isequaln (tand (sym(nan)), sym(nan))) + syms x + f(x) = x^2; + assert( isa(f./f, 'symfun')) + assert( isa(f./[x x^2], 'symfun')) ***** test - f1 = tand (sym(1)); - f2 = tand (1); - assert (double (f1), f2, -eps) + syms x + f(x) = [x 2*x]; + h = f./[x 2]; + assert( isa(h, 'symfun')) + assert (isequal (formula (h), [1 x])) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@symfun/mpower.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mpower.m ***** test - D = [10 30; 110 -45]; - A = sym(D); - f1 = tand (A); - f2 = tand (D); - assert (double (f1), f2, -eps) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/double.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/double.m + syms x + f(x) = 2*x; + h = f^f; + assert( isa(h, 'symfun')) + assert (isequal (formula (h), (2*x)^(2*x))) + h = f^sym(2); + assert( isa(h, 'symfun')) + assert (isequal (formula (h), 4*x^2)) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@symfun/private_disp_name.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/private_disp_name.m ***** test - % numeric scalar - a = double(sym(10)); - assert (a == 10) - assert (isa (a, 'double')) + syms f(x) + s = private_disp_name(f, 'f'); + assert (strcmp (s, 'f(x)')) ***** test - % numeric vectors - a = double(sym([10 12])); - assert (isequal (a, [10 12])) - assert (isa (a, 'double')) + syms x y + g(y, x) = x + y; + s = private_disp_name(g, 'g'); + assert (strcmp (s, 'g(y, x)')) ***** test - % complex - a = 3 + 4i; - b = sym(a); - assert (isequal (double (b), a)) -***** xtest - % unexpected, precisely same floating point - a = 3 + 4i; - b = sym(a); - assert (isequal (double (b/pi), a/pi)) + syms f(x) + assert (isempty (private_disp_name(f, ''))) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@symfun/int.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/int.m ***** test - % floating point - x = sqrt(sym(2)); - assert( abs(double(x) - sqrt(2)) < 2*eps) - x = sym(pi); - assert( abs(double(x) - pi) < 2*eps) + % indefinite integral of symfun gives symfun + syms x + f(x) = x^2; + g = int(f); + assert (isa(g, 'symfun')) + g = int(f, x); + assert (isa(g, 'symfun')) ***** test - oo = sym(inf); - assert( double(oo) == inf ) - assert( double(-oo) == -inf ) - assert( isnan(double(0*oo)) ) + % indefinite integral of abstract symfun gives symfun + syms f(x) + g = int(f); + assert (isa(g, 'symfun')) + g = int(f, x); + assert (isa(g, 'symfun')) ***** test - zoo = sym('zoo'); - assert (double(zoo) == complex(inf, inf)) + % definite integral does not give symfun + syms x + f(x) = x^2; + g = int(f, x, 0, 2); + assert (isa(g, 'sym')) + assert (~isa(g, 'symfun')) ***** test - zoo = sym('zoo'); - assert (double(-zoo) == double(zoo) ) - assert( isnan(double(0*zoo)) ) + % ... even if it has a variable in it + syms x t + f(x) = x; + g = int(f, x, 0, t); + assert (isa(g, 'sym')) + assert (~isa(g, 'symfun')) ***** test - % nan - snan = sym(nan); - assert( isnan(double(snan))) + % ... even if the input is abstract function + syms f(x) + g = int(f, x, 0, 2); + assert (isa(g, 'sym')) + assert (~isa(g, 'symfun')) ***** test - % don't want NaN+NaNi - snan = sym(nan); - assert (isreal (double (snan))) + % symfun in x, integrated in y gives symfun still in x + % (SMT does this too). + syms f(x) y + g = int(f, y); + assert (isa (g, 'symfun')) + assert (isequal (argnames (g), x)) ***** test - % arrays - a = [1 2; 3 4]; - assert( isequal( double(sym(a)), a )) - assert( isequal( double(sym(a)), a )) - % should fail with error for non-double -***** error syms x; double(x) -***** error syms x; double([1 2 x]) -13 tests, 13 passed, 0 known failure, 0 skipped -[inst/@sym/power.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/power.m + % same as above, but concrete symfun + syms x y + f(x) = x^2; + g = int(f, y); + assert (isa (g, 'symfun')) + assert (isequal (argnames (g), x)) + assert (isequal (formula(g), x^2*y)) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/@symfun/times.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/times.m ***** test - % scalar .^ scalar syms x - assert (isa (x.^2, 'sym')) - assert (isa (2.^x, 'sym')) - assert (isa (x.^x, 'sym')) - assert (isequal (x.^2, x^2)) - assert (isequal (2.^x, 2^x)) - assert (isequal (x.^x, x^x)) + f(x) = x^2; + assert( isa(f .* f, 'symfun')) + assert( isa(f .* x, 'symfun')) ***** test - % scalar .^ matrix - D = [0 1; 2 3]; - A = sym(D); - assert (isequal ( sym(2).^D , 2.^D )) - assert (isequal ( sym(2).^A , 2.^A )) - assert (isequal ( 2.^D , 2.^A )) - assert (isequal ( 2.^A , 2.^A )) + syms x + f(x) = [x 2*x]; + h = f.*[x 3]; + assert( isa(h, 'symfun')) + assert (isequal (formula (h), [x^2 6*x])) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@symfun/mtimes.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/mtimes.m ***** test - % matrix .^ matrix syms x - A = [x 2*x; 3*x 4*x]; - D = [0 1; 2 3]; - B = sym(D); - assert (isequal ( A.^D, [1 2*x; 9*x^2 64*x^3] )) - assert (isequal ( A.^B, [1 2*x; 9*x^2 64*x^3] )) + f(x) = x^2; + assert( isa(f * f, 'symfun')) + assert( isa(f * x, 'symfun')) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@symfun/diff.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@symfun/diff.m ***** test - % matrix .^ scalar + % concrete fcn syms x - A = [x 2*x]; - assert (isequal ( A.^2, [x^2 4*x^2] )) - assert (isequal ( A.^sym(2), [x^2 4*x^2] )) + f(x) = x*x; + g(x) = 2*x; + assert (logical (diff(f) == g)) + assert (isa (diff(f), 'symfun')) ***** test - % 1^oo - % (sympy >= 0.7.5 gives NaN, SMT R2013b: gives 1) - oo = sym(inf); - assert (isnan (1^oo)) + % abstract fcn + syms y(x) + assert (logical (diff(y) == diff(y(x)))) + assert (isa (diff(y), 'symfun')) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/finiteset.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/finiteset.m ***** test - % 1^zoo - % (1 on sympy 0.7.4--0.7.6, but nan in git (2014-12-12, a210908d4)) - zoo = sym('zoo'); - assert (isnan (1^zoo)) + s1 = finiteset(sym(1), 2, 2); + s2 = finiteset(sym(1), 2, 2, 2); + assert (isequal (s1, s2)) ***** test - % immutable test - A = sym([1 2]); - B = sym('ImmutableDenseMatrix([[Integer(1), Integer(2)]])'); - assert (isequal (A.^A, B.^B)) -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/divergence.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/divergence.m -***** shared x,y,z - syms x y z + s1 = finiteset(sym(0), 1); + s2 = finiteset(sym(0), 2, 3); + s = finiteset(sym(0), 1, 2, 3); + assert (isequal (s1 + s2, s)) ***** test - % 1D - f = x^2; - assert (isequal (divergence(f), diff(f,x))) - assert (isequal (divergence(f,{x}), diff(f,x))) - assert (isequal (divergence(f,[x]), diff(f,x))) - assert (isequal (divergence(f,x), diff(f,x))) + e = finiteset(); + s = finiteset(sym(1)); + s2 = e + s; + assert (isequal (s, s2)) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@double/euler.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/euler.m +***** error euler (1, 2, 3) +***** error euler ([1 2], [1 2 3]) +***** error euler ([1 2], [1; 2]) +***** assert (isequal (euler (0), 1)) +***** assert (isequal (euler (1), 0)) +***** assert (isequal (euler (10), -50521)) ***** test - % const - f = [sym(1); 2; exp(sym(3))]; - assert (isequal (divergence(f,{x,y,z}), 0)) - f = [sym(1); 2; exp(sym('c'))]; - assert (isequal (divergence(f,{x,y,z}), 0)) + n = sym(88); + m = 88; + A = euler (m); + B = double (euler (n)); + assert (A, B, -eps); ***** test - % double const - f = [1 2]; - g = sym(0); - assert (isequal (divergence(f, [x y]), g)) - % should fail, calls @double: divergence(f, {x y}), g)) + m = [0 1; 2 4]; + n = sym(m); + A = euler (m); + B = double (euler (n)); + assert (isequal (A, B)); ***** test - % 1D fcn in 2d/3d - f = [x y z]; - assert (isequal (divergence(f), 3)) - assert (isequal (divergence(f, {x,y,z}), 3)) - assert (isequal (divergence(f, [x,y,z]), 3)) + y = sym(19)/10; + n = sym(2); + x = 1.9; + m = 2; + A = euler (m, x); + B = double (euler (n, y)); + assert (A, B, -eps); ***** test - % 2d fcn in 2d/3d - f = sin(exp(x)*y+sinh(z)); - g2 = [diff(f,x); diff(f,y)]; - l2 = diff(g2(1),x) + diff(g2(2),y); - g3 = [diff(f,x); diff(f,y); diff(f,z)]; - l3 = diff(g3(1),x) + diff(g3(2),y) + diff(g3(3),z); - assert (isequal (divergence(g2, {x,y}), l2)) - assert (isequal (divergence(g3, {x,y,z}), l3)) -***** error divergence ([1 2], [sym('x')]) -***** error divergence ([1 2], sym('x'), 42) + % correct behaviour at floating point infinity + assert (isequal (euler (4, inf), inf)) + assert (isequal (euler (4, -inf), inf)) + assert (isequal (euler (3, inf), inf)) + assert (isequal (euler (3, -inf), -inf)) +***** test + assert (isnan (euler(3, nan))) + assert (isnumeric (euler(3, nan))) +***** test + % maple, complex input + A = 113.33970046079423204 - 46.991080726974811540i; + B = euler(7, 2.12345 + 1.23i); + assert (A, B, -eps); +***** test + % maple, complex input, large m, small x + A = 0.18034673393294025238e276 + 0.27756266681280689172e276*i; + B = euler (200, 0.123+0.234i); + assert (A, B, -eps); +***** test + % x matrix, m scalar + y = [1 2 sym(pi); exp(sym(1)) 5 6]; + n = sym(2); + x = double (y); + m = 2; + A = euler (m, x); + B = double (euler (n, y)); + assert (A, B, -eps); +***** test + % m matrix, x scalar + m = [1 2 3; 4 5 6]; + n = sym(m); + y = sym(21)/10; + x = 2.1; + A = euler (m, x); + B = double (euler (n, y)); + assert (A, B, -3*eps); +15 tests, 15 passed, 0 known failure, 0 skipped +[inst/@double/sinhint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/sinhint.m +***** error sinhint (1, 2) +***** test + x = 1.1; + y = sym(11)/10; + A = sinhint (x); + B = double (sinhint (y)); + assert (A, B, -4*eps); +***** test + y = [2 3 sym(pi); exp(sym(1)) 5 6]; + x = double (y); + A = sinhint (x); + B = double (sinhint (y)); + assert (A, B, -4*eps); +***** test + % maple: + % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; + % > for a in A do evalf(Shi(a)) end do; + x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; + A = [ 0.45769171128668800567 + 1.8332099215048436239*1i + 0.60888490416819746440 + 1.2482232175376056201*1i + 0.13577763724269399110e42 + 1.6583475942188740493*1i + -0.00010000000005553888891 + 0.10000000016666111119e-5*1i + -0.74701205140887967022e7 - 0.10381447401236722090e8*1i ]; + B = sinhint (x); + assert (A, B, -eps) +***** assert (sinhint (inf), inf) +***** assert (sinhint (-inf), -inf) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@double/pochhammer.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/pochhammer.m +***** error pochhammer (1) +***** error pochhammer (1, 2, 3) +***** error pochhammer ([1 2], [1 2 3]) +***** error pochhammer ([1 2], [1; 2]) +***** test + y = sym(11)/10; + t = sym(3); + x = 1.1; + s = 3; + A = pochhammer (x, s); + B = double (pochhammer (y, t)); + assert (A, B, -2*eps); +***** test + % maple + A = 256.798558090310131720; + B = pochhammer (18.1, 1.9); + assert (A, B, -20*eps) +***** test + % maple, complex inputs> + A = 2.67921619474318221972 + 1.96716724764630702653*1i; + B = pochhammer (12.1+3.1*i, 0.5+0.2i); + assert (A, B, -4*eps); +***** test + % maple, matrix inputs + A = [5.61467232547723663908 20.6144884613920190965]; + B = pochhammer ([0.9 0.8], [3.1 4.2]); + assert (A, B, -3*eps); +***** test + % x matrix, s scalar + y = [1 2 sym(pi); exp(sym(1)) 5 6]; + t = sym(2); + x = double (y); + s = 2; + A = pochhammer (s, x); + B = double (pochhammer (t, y)); + assert (A, B, -3*eps); +***** test + % s matrix, x scalar + t = [1 2 sym(pi); exp(sym(1)) 5 6]; + y = sym(2); + s = double (t); + x = 2; + A = pochhammer (s, x); + B = double (pochhammer (t, y)); + assert (A, B, -5*eps); +10 tests, 10 passed, 0 known failure, 0 skipped +[inst/@double/sinint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/sinint.m +***** error sinint (1, 2) +***** test + x = 1.1; + y = sym(11)/10; + A = sinint (x); + B = double (sinint (y)); + assert (A, B, -4*eps); +***** test + y = [2 3 sym(pi); exp(sym(1)) 5 6]; + x = double (y); + A = sinint (x); + B = double (sinint (y)); + assert (A, B, -4*eps); +***** assert (sinint (0), 0) +***** assert (sinint (inf), pi/2) +***** assert (sinint (-inf), -pi/2) +***** assert (sinint (1), 0.9460830703671830149414, -2*eps) +***** assert (sinint (-1), -0.9460830703671830149414, -2*eps) +***** assert (sinint (pi), 1.851937051982466170361, -2*eps) +***** assert (sinint (-pi), -1.851937051982466170361, -2*eps) +***** assert (sinint (300), 1.5708810882137495193, -2*eps) +***** assert (sinint (1e4), 1.5708915453859619157, -2*eps) +***** assert (sinint (20i), 1.2807826332028294459e7*1i, -2*eps) +***** test + % maple: + % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; + % > for a in A do evalf(Si(a)) end do; + x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; + A = [ 1.6782404878293681180 + 2.0396845546022061045*1i + -18.154174221650281533 + 1.6146414539230479060*1i + 1.5622254668890562934 + 1246.1144901994233444*1i + -0.000099999999944461111128 + 0.99999999833338888972e-6*1i + -1.5386156269726011209 - 0.053969388020443786229*1i ]; + B = sinint (x); + assert (A, B, -eps) +14 tests, 14 passed, 0 known failure, 0 skipped +[inst/@double/adjoint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/adjoint.m +***** test + M = [1 2; 3 4]; + A = [4 -2; -3 1]; + assert (isequal (adjoint (M), A)); +***** test + assert (isequal (adjoint (42), 1)); +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@double/polylog.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/polylog.m +***** error polylog (1) +***** error polylog (1, 2, 3) +***** error polylog ([1 2], [1 2 3]) +***** error polylog ([1 2], [1; 2]) +***** test + y = sym(11)/10; + t = sym(2); + x = 1.1; + s = 2; + A = polylog (s, x); + B = double (polylog (t, y)); + assert (A, B, -eps); +***** test + % maple + A = 2.3201804233130983964 - 3.4513922952232026614*1i; + B = polylog (2, 3); + assert (A, B, -eps) +***** test + % maple, complex inputs + A = -11.381456201167411758 + 6.2696695219721651947*1i; + B = polylog (1+2i, 3+4i); + assert (A, B, -eps); +***** test + % maple, matrix inputs + A1 = 0.47961557317612748431 - 0.52788287823025778869*1i; + A2 = -0.0049750526563452645369 - 0.024579343612396884851*1i; + B = polylog ([-1-2i -3], [30+40i 40i]); + assert ([A1 A2], B, -eps); +***** test + % x matrix, s scalar + y = [1 2 sym(pi); exp(sym(1)) 5 6]; + t = sym(2); + x = double (y); + s = 2; + A = polylog (s, x); + B = double (polylog (t, y)); + assert (A, B, -eps); +***** test + % s matrix, x scalar + t = [1 2 sym(pi); exp(sym(1)) 5 6]; + y = sym(2); + s = double (t); + x = 2; + A = polylog (s, x); + B = double (polylog (t, y)); + assert (A, B, -eps); +10 tests, 10 passed, 0 known failure, 0 skipped +[inst/@double/harmonic.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/harmonic.m +***** error harmonic (1, 2) +***** test + x = 1.1; + y = sym(11)/10; + A = harmonic (x); + B = double (harmonic (y)); + assert (A, B, -4*eps); +***** test + y = [2 3 sym(pi); exp(sym(1)) 5 6]; + x = double (y); + A = harmonic (x); + B = double (harmonic (y)); + assert (A, B, -4*eps); +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/@double/fresnels.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/fresnels.m +***** error fresnels (1, 2) +***** test + x = 1.1; + y = sym(11)/10; + A = fresnels (x); + B = double (fresnels (y)); + assert (A, B, -4*eps); +***** test + y = [2 3 sym(pi); exp(sym(1)) 5 6]; + x = double (y); + A = fresnels (x); + B = double (fresnels (y)); + assert (A, B, -4*eps); +***** test + % maple: + % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; + % > for a in A do evalf(FresnelS(a)) end do; + x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; + A = [ 36.725464883991438430 + 15.587751104404587334*1i + 0.12213736710980573217e13 - 0.47688568479924574726e12*1i + 0.49681690114783755327 + -0.46816997858488224040*1i + -0.52344169596561937423e-12 + 0.15707439669173367248e-13*1i + 0.75738824160998910399e24 + 0.15391592966931193100e26*1i ]; + B = fresnels (x); + assert (A, B, -eps) +***** assert (fresnels (inf), 0.5) +***** assert (fresnels (-inf), -0.5) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@double/coshint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/coshint.m +***** error coshint (1, 2) +***** test + x = 1.1; + y = sym(11)/10; + A = coshint (x); + B = double (coshint (y)); + assert (A, B, -4*eps); +***** test + y = [2 3 sym(pi); exp(sym(1)) 5 6]; + x = double (y); + A = coshint (x); + B = double (coshint (y)); + assert (A, B, -4*eps); +***** test + % maple: + % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; + % > for a in A do evalf(Chi(a)) end do; + x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; + A = [ 0.58447599687824767874 + 1.8682915044330306402*1i + -0.63131069034703116988 + 1.8986171211850702957*1i + 0.13577763724269399110e42 + -0.045456433004455372635 + 1.5707963267948966192*1i + -8.6330747070747332203 + 3.1315929868531280002*1i + 0.74701205140887966531e7 + 0.10381444259644068585e8*1i ]; + B = coshint (x); + assert (A, B, -eps) +***** assert (coshint (inf), inf) +***** assert (isinf (coshint (-inf))) +***** assert (imag (coshint (-inf)), pi) 7 tests, 7 passed, 0 known failure, 0 skipped -[inst/@sym/eye.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/eye.m +[inst/@double/chebyshevU.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/chebyshevU.m +***** error chebyshevU (1) +***** error chebyshevU (1, 2, 3) +***** error chebyshevU ([1 2], [1 2 3]) +***** error chebyshevU ([1 2], [1; 2]) ***** test - y = eye(sym(2)); - x = [1 0; 0 1]; - assert( isequal( y, sym(x))) + y = sym(11)/10; + t = sym(2); + x = 1.1; + s = 2; + A = chebyshevU (s, x); + B = double (chebyshevU (t, y)); + assert (A, B, -2*eps); ***** test - y = eye(sym(2), 1); - x = [1; 0]; - assert( isequal( y, sym(x))) + % maple + A = 1.661891066691338157; + B = chebyshevU (18.1, 0.9); + assert (A, B, -3*eps) ***** test - y = eye(sym(1), 2); - x = [1 0]; - assert( isequal( y, sym(x))) + % maple, complex inputs> + % ChebyshevU(12.1+3.1*I, 0.5+0.2*I); + A = 1.046959313670290818 - 0.03386773634958834846*1i; + B = chebyshevU (12.1+3.1*i, 0.5+0.2i); + assert (A, B, -3*eps); ***** test - y = eye (sym([2 3])); - x = sym (eye ([2 3])); - assert (isequal (y, x)) -***** assert( isa( eye(sym(2), 'double'), 'double')) -***** assert( isa( eye(3, sym(3), 'single') , 'single')) -***** assert( isa( eye(3, sym(3)), 'sym')) -***** assert( isa( eye(3, sym(3), 'sym'), 'sym')) + % maple, matrix inputs + A = [2.2543638828875776000 -1.3872651600553574400]; + B = chebyshevU ([16 17], [0.9 0.8]); + assert (A, B, -10*eps); +***** test + % x matrix, s scalar + y = [1 2 sym(pi); exp(sym(1)) 5 6]; + t = sym(2); + x = double (y); + s = 2; + A = chebyshevU (s, x); + B = double (chebyshevU (t, y)); + assert (A, B, -eps); +***** test + % s matrix, x scalar + t = [1 2 sym(pi); exp(sym(1)) 5 6]; + y = sym(2); + s = double (t); + x = 2; + A = chebyshevU (s, x); + B = double (chebyshevU (t, y)); + assert (A, B, -2*eps); ***** xtest - % Issue #13 - assert( isa( eye(3, 3, 'sym'), 'sym')) + % https://github.com/fredrik-johansson/mpmath/issues/469 + assert (chebyshevU (4, inf), inf) + assert (chebyshevU (4, -inf), inf) + assert (chebyshevU (3, inf), inf) + assert (chebyshevU (3, -inf), -inf) !!!!! known failure -invalid data type specified -9 tests, 8 passed, 1 known failure, 0 skipped -[inst/@sym/acosd.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/acosd.m -***** error acosd (sym(1), 2) -***** assert (isequaln (acosd (sym(nan)), sym(nan))) +ASSERT errors for: assert (chebyshevU (4, inf),inf) + + Location | Observed | Expected | Reason + () 5 Inf 'Inf' mismatch +11 tests, 10 passed, 1 known failure, 0 skipped +[inst/@double/cosint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/cosint.m +***** error cosint (1, 2) ***** test - f1 = acosd (sym(1)/2); - f2 = acosd (1/2); - assert (double (f1), f2, -eps) + x = 1.1; + y = sym(11)/10; + A = cosint (x); + B = double (cosint (y)); + assert (A, B, -4*eps); ***** test - D = [1 2; 3 4]/4; - A = sym([1 2; 3 4])/4; - f1 = acosd (A); - f2 = acosd (D); - assert (double (f1), f2, -eps) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sym/isempty.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@sym/isempty.m -***** shared se, a - se = sym ([]); - a = sym ([1 2]); -***** assert (~isempty (sym (1))) -***** assert (isempty (sym (se))) -***** assert (isempty (se == [])) + y = [2 3 sym(pi); exp(sym(1)) 5 6]; + x = double (y); + A = cosint (x); + B = double (cosint (y)); + assert (A, B, -4*eps); ***** test -***** test se(1) = 10; -***** test assert ( isa (se, 'sym')) -***** test assert ( isequal (se, 10)) -***** shared + % maple: + % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; + % > for a in A do evalf(Ci(a)) end do; + x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; + A = [ 2.0302963932917216378 - 0.15190715517585688438*1i + 1.6153896382910774851 + 19.725754055338264980*1i + -0.0051488251426104921444 + 1246.1144860424544147 + 1.5707963267948966192*1i + -8.6330747120742332203 + 3.1315929869531280002*1i + 0.069822228467306149311 - 3.1184744625477294643*1i ]; + B = cosint (x); + assert (A, B, -eps) +***** xtest + % is it nan or -inf? SymPy says zoo. + assert (isnan (cosint (0))) +!!!!! known failure +assert (isnan (cosint (0))) failed +***** assert (cosint (inf), 0) +***** assert (cosint (-inf), pi*1i, -eps) +***** assert (cosint (1), 0.33740392290096813466, -eps) +***** assert (cosint (-1), 0.33740392290096813466 + pi*1i, -eps) +***** assert (cosint (pi), 0.073667912046425485978, -5*eps) +***** assert (cosint (-pi), 0.07366791204642548597821 + pi*1i, -5*eps) +***** assert (cosint (300), -3.3321999185921117800e-3, -2*eps) +***** assert (cosint (1e4), -3.0551916724485212665e-5, -2*eps) +***** assert (cosint (1 + 1i), 0.8821721805559363250506+0.2872491335199559395273*1i, eps) +***** assert (cosint (1i), 0.8378669409802082408947 + pi/2*1i, -2*eps) ***** test - % empty matrices - A = sym('A', [3 0]); - assert (isempty (A)) - A = sym(ones(3,0)); - assert (isempty (A)) + % compare both sinint and cosint to expint + x = pi; + C1 = cosint (x); + S1 = sinint (x); + R = expint (1i*x); + C2 = -real (R); + S2 = imag (R) + pi/2; + assert (C1, C2, -100*eps); + assert (S1, S2, -100*eps); +16 tests, 15 passed, 1 known failure, 0 skipped +[inst/@double/chebyshevT.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/chebyshevT.m +***** error chebyshevT (1) +***** error chebyshevT (1, 2, 3) +***** error chebyshevT ([1 2], [1 2 3]) +***** error chebyshevT ([1 2], [1; 2]) ***** test - % non-empty symbolic-size matrices - syms n integer - A = sym('A', [3 n]); - assert (~isempty (A)) + y = sym(11)/10; + t = sym(2); + x = 1.1; + s = 2; + A = chebyshevT (s, x); + B = double (chebyshevT (t, y)); + assert (A, B, -2*eps); +***** test + % maple + A = -0.304681164165948269030369; + B = chebyshevT (18.1, 0.9); + assert (A, B, -10*eps) +***** test + % maple, complex inputs + % ChebyshevT(12.1+3.1*I, 0.5+0.2*I); + A = 0.637229289490379273451 - 0.475324703778957991318*1i; + B = chebyshevT (12.1+3.1*i, 0.5+0.2i); + assert (A, B, -5*eps); +***** test + % maple, matrix inputs + A = [0.59523064198266880000 0.57727442996887552000]; + B = chebyshevT ([16 17], [0.9 0.7]); + assert (A, B, -10*eps); +***** test + % x matrix, s scalar + y = [1 2 sym(pi); exp(sym(1)) 5 6]; + t = sym(2); + x = double (y); + s = 2; + A = chebyshevT (s, x); + B = double (chebyshevT (t, y)); + assert (A, B, -eps); +***** test + % s matrix, x scalar + t = [1 2 sym(pi); exp(sym(1)) 5 6]; + y = sym(2); + s = double (t); + x = 2; + A = chebyshevT (s, x); + B = double (chebyshevT (t, y)); + assert (A, B, -eps); ***** xtest - % empty symbolic-size matrices - % FIXME: will fail until size stop lying by saying 1x1 - syms n integer - A = sym('A', [0 n]); - assert (isempty (A)) - A = sym('A', [n 0]); - assert (isempty (A)) + % https://github.com/fredrik-johansson/mpmath/issues/469 + assert (chebyshevT (4, inf), inf) + assert (chebyshevT (4, -inf), inf) + assert (chebyshevT (3, inf), inf) + assert (chebyshevT (3, -inf), -inf) !!!!! known failure -assert (isempty (A)) failed -10 tests, 9 passed, 1 known failure, 0 skipped -[inst/findsymbols.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/findsymbols.m +ASSERT errors for: assert (chebyshevT (4, inf),inf) + + Location | Observed | Expected | Reason + () 1 Inf 'Inf' mismatch +11 tests, 10 passed, 1 known failure, 0 skipped +[inst/@double/fresnelc.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/fresnelc.m +***** error fresnelc (1, 2) ***** test - syms x b y n a arlo - z = a*x + b*pi*sin (n) + exp (y) + exp (sym (1)) + arlo; - s = findsymbols (z); - assert (isequal ([s{:}], [a,arlo,b,n,x,y])) + x = 1.1; + y = sym(11)/10; + A = fresnelc (x); + B = double (fresnelc (y)); + assert (A, B, -4*eps); +***** test + y = [2 3 sym(pi); exp(sym(1)) 5 6]; + x = double (y); + A = fresnelc (x); + B = double (fresnelc (y)); + assert (A, B, -4*eps); +***** test + % maple: + % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; + % > for a in A do evalf(FresnelC(a)) end do; + x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; + A = [ 16.087871374125480424 - 36.225687992881650217*1i + 0.47688568479874574722e12 + 0.12213736710985573216e13*1i + 0.49999989867881789756 + 0.49989869420551572361*1i + -0.000099999999999999997535 + 0.99999999999999987665e-6*1i + 0.15391592966931193100e26 - 0.75738824160998910388e24*1i ]; + B = fresnelc (x); + assert (A, B, -eps) +***** assert (fresnelc (inf), 0.5) +***** assert (fresnelc (-inf), -0.5) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@double/bernoulli.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/bernoulli.m +***** error bernoulli (1, 2, 3) +***** error bernoulli ([1 2], [1 2 3]) +***** error bernoulli ([1 2], [1; 2]) +***** assert (bernoulli (0), 1) +***** assert (bernoulli (3), 0) +***** test + % two different definitions in literature + assert (abs (bernoulli (1)), 0.5, -eps) +***** xtest + % we want to use B_1 = 1/2, possible with a version-specific filter + assert (bernoulli (1), 0.5, -eps) +!!!!! known failure +ASSERT errors for: assert (bernoulli (1),0.5,-eps) + + Location | Observed | Expected | Reason + () -0.5 0.5 Rel err 2 exceeds tol 2.2204e-16 by 2 +***** test + n = sym(88); + m = 88; + A = bernoulli (m); + B = double (bernoulli (n)); + assert (A, B, -eps); +***** test + m = [0 2; 3 4]; + n = sym(m); + A = bernoulli (m); + B = double (bernoulli (n)); + assert (isequal (A, B)); +***** test + y = sym(19)/10; + n = sym(2); + x = 1.9; + m = 2; + A = bernoulli (m, x); + B = double (bernoulli (n, y)); + assert (A, B, -eps); +***** test + assert (isequal (bernoulli (4, inf), inf)) + assert (isequal (bernoulli (4, -inf), inf)) +***** xtest + % still broken? + assert (isequal (bernoulli (3, inf), inf)) + assert (isequal (bernoulli (3, -inf), -inf)) +***** test + assert (isnan (bernoulli(3, nan))) + assert (isnumeric (bernoulli(3, nan))) +***** test + % maple, complex input + A = 34.21957245745810513 - 130.0046256649829101i; + B = bernoulli(7, 2.123 + 1.234i); + assert (A, B, -5*eps); +***** test + % x matrix, m scalar + y = [1 2 sym(pi); exp(sym(1)) 5 6]; + n = sym(2); + x = double (y); + m = 2; + A = bernoulli (m, x); + B = double (bernoulli (n, y)); + assert (A, B, -eps); +***** test + % m matrix, x scalar + m = [1 2 3; 4 5 6]; + n = sym(m); + y = sym(21)/10; + x = 2.1; + A = bernoulli (m, x); + B = double (bernoulli (n, y)); + assert (A, B, -3*eps); +16 tests, 15 passed, 1 known failure, 0 skipped +[inst/@double/zeta.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/zeta.m +***** error zeta (1, 2, 3) +***** assert (isnan (zeta (nan))) +***** test + x = 1.1; + y = sym(11)/10; + A = zeta (x); + B = double (zeta (y)); + assert (A, B, -4*eps); +***** test + y = [2 3 sym(pi); exp(sym(1)) 5 6]; + x = double (y); + A = zeta (x); + B = double (zeta (y)); + assert (A, B, -4*eps); +***** test + % maple: + % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; + % > for a in A do evalf(Zeta(a)) end do; + x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; + A = [ 0.59816556976238173670 - 0.35185474521784529050*1i + 0.21425967567391921717 + 0.52503846985036050707*1i + 1.0 + 1.7564685929749629608 - 0.10151198543617116894*1i + -0.49990811617645824900 - 0.91873792757763831501e-6*1i + 175.09070083717643866 - 71.512541417467273425*1i ]; + B = zeta (x); + assert (A, B, -eps) +***** assert (zeta (inf), 1.0) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/@double/dilog.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/dilog.m +***** test + x = 1.1; + y = sym(11)/10; + A = dilog (x); + B = double (dilog (y)); + assert (A, B, -4*eps); +***** test + y = [2 2 sym(pi); exp(sym(1)) 5 6]; + x = double (y); + A = dilog (x); + B = double (dilog (y)); + assert (A, B, -eps); +***** test + % maple: + % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; + % > for a in A do evalf(dilog(a)) end do; + x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; + A = [ -0.59248494924959145800 - 1.5760154034463234224*1i + -1.0549087538833908441 - 3.8759788000863368495*1i + -12.192421669033171348 + -2.9195729380904939394 - 3.9540920181102973073*1i + 1.6459519160623984119 - 0.00032335296277550987686*1i + -1.5445800511775466879 + 9.4256034277816069684*1i ]; + B = dilog (x); + assert (A, B, -eps) +***** xtest + % https://github.com/fredrik-johansson/mpmath/issues/473 + assert (isinf (dilog (inf))) +!!!!! known failure +assert (isinf (dilog (inf))) failed +***** assert (isnan (dilog (-inf))) +5 tests, 4 passed, 1 known failure, 0 skipped +[inst/@double/logint.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@double/logint.m +***** error logint (1, 2) +***** test + x = 1.1; + y = sym(11)/10; + A = logint (x); + B = double (logint (y)); + assert (A, B, -4*eps); +***** test + y = [2 3 sym(pi); exp(sym(1)) 5 6]; + x = double (y); + A = logint (x); + B = double (logint (y)); + assert (A, B, -4*eps); +***** test + % maple: + % > A := [1+2*I, -2 + 5*I, 100, 10*I, -1e-4 + 1e-6*I, -20 + I]; + % > for a in A do evalf(Li(a)) end do; + x = [1+2i; -2+5i; 100; 10i; -1e-4 + 1e-6*1i; -20-1i]; + A = [ 1.3876787420229375511 + 2.5087546988592328752*1i + 1.6987684473874802274 + 4.5936366057115204667*1i + 30.126141584079629926 + 3.4936715673748995398 + 5.5260023797127391973*1i + 0.90264689772681592152e-5 + 3.1415953634267361942*1i + -2.3996350854560916779 - 7.6971739096353664559*1i ]; + B = logint (x); + assert (A, B, -eps) +***** assert (logint (inf), inf) +***** assert (isnan (logint (-inf))) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/vpasolve.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/vpasolve.m ***** test syms x - s = findsymbols (x); - assert (isequal (s{1}, x)) + vpi = vpa(sym(pi), 64); + e = tan(x/4) == 1; + q = vpasolve(e, x, 3.0); + w = q - vpi ; + assert (double(w) < 1e-30) ***** test - syms z x y a - s = findsymbols ([x y; 1 a]); - assert (isequal ([s{:}], [a x y])) -***** assert (isempty (findsymbols (sym (1)))) -***** assert (isempty (findsymbols (sym ([1 2])))) -***** assert (isempty (findsymbols (sym (nan)))) -***** assert (isempty (findsymbols (sym (inf)))) -***** assert (isempty (findsymbols (exp (sym (2))))) + syms x + vpi = vpa(sym(pi), 64); + e = tan(x/4) == 1; + q = vpasolve(e, x); + w = q - vpi; + assert (double(w) < 1e-30) + q = vpasolve(e); + w = q - vpi; + assert (double(w) < 1e-30) ***** test - % empty sym for findsymbols, findsym, and symvar - assert (isempty (findsymbols (sym([])))) - assert (isempty (findsym (sym([])))) - assert (isempty (symvar (sym([])))) + % very accurate pi + syms x + e = tan(x/4) == 1; + m = digits(256); + q = vpasolve(e, x, 3); + assert (double(abs(sin(q))) < 1e-256) + digits(m); ***** test - % diff. assumptions make diff. symbols - x1 = sym('x'); - x2 = sym('x', 'positive'); - f = x1*x2; - assert (length (findsymbols (f)) == 2) + % very accurate sqrt 2 + syms x + e = x*x == 2; + m = digits(256); + q = vpasolve(e, x, 1.5); + assert (double(abs(q*q - 2)) < 1e-256) + digits(m); ***** test - % symfun or sym - syms x f(y) - a = f*x; - b = f(y)*x; - assert (isequal (findsymbols(a), {x y})) - assert (isequal (findsymbols(b), {x y})) + % very accurate sqrt pi + % (used to fail https://github.com/sympy/sympy/issues/8564) + syms x + e = x*x == sym(pi); + m = digits(256); + q = vpasolve(e, x, 3); + assert (double(abs(sin(q*q))) < 1e-256) + digits(m); ***** test - % findsymbols on symfun does not find the argnames (unless they - % are on the RHS of course, this matches SMT 2014a). - syms a x y - f(x, y) = a; % const symfun - assert (isequal (findsymbols(f), {a})) - syms a x y - f(x, y) = a*y; - assert (isequal (findsymbols(f), {a y})) + syms x + r = vpasolve(x^2 + 2 == 0, x, 1i); + assert (double (imag(r)^2 - 2), 0, 1e-32) + assert (double (real(r)^2), 0, 1e-32) + r = vpasolve(x^2 + 2 == 0, x, -3i + 5); + assert (double (imag(r)^2 - 2), 0, 1e-32) + assert (double (real(r)^2), 0, 1e-32) ***** test - % sorts lexicographically, same as symvar *with single input* - % (note symvar does something different with 2 inputs). - syms A B a b x y X Y - f = A*a*B*b*y*X*Y*x; - assert (isequal (findsymbols(f), {A B X Y a b x y})) - assert (isequal (symvar(f), [A B X Y a b x y])) + % system + syms x y + f = 3*x^2 - 2*y^2 - 1; + g = x^2 - 2*x + y^2 + 2*y - 8; + r = vpasolve([f; g], [x; y], sym([-1; 1])); + assert (isa (r, 'sym')) + assert (numel (r) == 2) ***** test - % symbols in matpow + % system, double guess syms x y - syms n - A = [sin(x) 2; y 1]; - B = A^n; - L = findsymbols(B); - assert (isequal (L, {n x y})) + f = 3*x^2 - 2*y^2 - 1; + g = x^2 - 2*x + y^2 + 2*y - 8; + r = vpasolve([f; g], [x; y], [-1.1 1.2]); ***** test - % array of eq + % system, double guess syms x y - assert (isequal (findsymbols (2 == [2 x y]), {x y})) + f = 3*x^2 - 2*y^2 - 1; + g = x^2 - 2*x + y^2 + 2*y - 8; + r1 = vpasolve([f; g], [x; y], [-1.1]); + r2 = vpasolve([f; g], [x; y], [-1.1 -1.1]); + assert (isequal (r1, r2)) ***** test - % array of ineq + % system, more eqns than unknowns syms x y - A = [x < 1 2*x < y x >= 2 3 <= x x != y]; - assert (isequal (findsymbols (A), {x y})) -16 tests, 16 passed, 0 known failure, 0 skipped + eqns = [x^3 - x - y == 0; y*exp(x) == 16; log(y) + x == 4*log(sym(2))]; + r = vpasolve (eqns, [x; y], [1; 1]); + A = subs (lhs (eqns), [x; y], r); + err = A - [0; 16; 4*log(sym(2))]; + assert (double (err), zeros (size (err)), 1e-31) +10 tests, 10 passed, 0 known failure, 0 skipped +[inst/octsympy_tests.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/octsympy_tests.m +***** assert(true) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/@logical/isAlways.m] +>>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/@logical/isAlways.m +***** error isAlways (true, false) +***** assert(isAlways(true)) +***** assert(~isAlways(false)) +3 tests, 3 passed, 0 known failure, 0 skipped [inst/lambertw.m] >>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/lambertw.m ***** assert (isequal (lambertw (0), 0)) @@ -16054,54 +16066,6 @@ B = [nan nan nan]; assert (isequaln (A, B)) 21 tests, 21 passed, 0 known failure, 0 skipped -[inst/dirac.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/dirac.m -***** assert (isinf (dirac (0))) -***** assert (dirac (1) == 0) -***** assert (isnan (dirac (nan))) -***** assert (isequaln (dirac ([-1 1 0 eps inf -inf nan]), [0 0 inf 0 0 0 nan])) -***** error dirac (1i) -***** assert (isa (dirac (single (0)), 'single')) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/eulergamma.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/eulergamma.m -***** error catalan (sym(1)) -***** assert (double (eulergamma ()) > 0.577215664901) -***** assert (double (eulergamma ()) < 0.577215664902) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/digits.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/digits.m -***** test - orig = digits(32); % to reset later - m = digits(64); - p = vpa(sym(pi)); - assert (abs (double (sin(p))) < 1e-64) - n = digits(m); - assert (n == 64) - p = vpa(sym(pi)); - assert (abs (double (sin(p))) < 1e-32) - assert (abs (double (sin(p))) > 1e-40) - digits(orig) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/cell2sym.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/cell2sym.m -***** test - A = {1 2 3; 4 5 6}; - B = [1 2 3; 4 5 6]; - assert (isequal (cell2sym(A), sym(B))) -***** test - A = {'a' 'b'; 'c' 10}; - B = [sym('a') sym('b'); sym('c') sym(10)]; - assert (isequal (cell2sym(A), B)) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/fibonacci.m] ->>>>> /build/reproducible-path/octave-symbolic-3.2.1/inst/fibonacci.m -***** assert (isequal ( fibonacci (sym(0)), 0)) -***** assert (isequal ( fibonacci (sym(14)), sym(377))) -***** assert (isequal ( fibonacci (14), 377)) -***** test syms x - assert (isequal (fibonacci (5,x), x^4 + 3*x^2 + 1)) -4 tests, 4 passed, 0 known failure, 0 skipped Checking C++ files ... Done running the unit tests. @@ -16130,12 +16094,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/645323/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/645323/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/1183969 and its subdirectories -I: Current time: Fri Feb 21 02:39:11 -12 2025 -I: pbuilder-time-stamp: 1740148751 +I: removing directory /srv/workspace/pbuilder/645323 and its subdirectories +I: Current time: Fri Mar 27 11:23:43 +14 2026 +I: pbuilder-time-stamp: 1774560223 Compressing the 2nd log... /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/amd64/octave-symbolic_3.2.1-3.diff: 79.3% -- replaced with /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/amd64/octave-symbolic_3.2.1-3.diff.gz b2/build.log: 80.4% -- replaced with stdout Compressing the 1st log... b1/build.log: 80.7% -- replaced with stdout Fri Feb 21 15:00:46 UTC 2025 I: diffoscope 288 will be used to compare the two builds: ++ date -u +%s + DIFFOSCOPE_STAMP=/var/log/reproducible-builds/diffoscope_stamp_octave-symbolic_unstable_amd64_1740150046 + touch /var/log/reproducible-builds/diffoscope_stamp_octave-symbolic_unstable_amd64_1740150046 + RESULT=0 + systemd-run '--description=diffoscope on octave-symbolic/3.2.1-3 in unstable/amd64' --slice=rb-build-diffoscope.slice -u rb-diffoscope-amd64_19-46115 '--property=SuccessExitStatus=1 124' --user --send-sighup --pipe --wait -E TMPDIR timeout 155m nice schroot --directory /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS --run-session -c jenkins-reproducible-unstable-diffoscope-5d0862d0-016b-4232-b5b1-e83641fbbc19 -- sh -c 'export TMPDIR=/srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/dbd-tmp-ytORItr ; timeout 150m diffoscope --timeout 7200 --html /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/octave-symbolic_3.2.1-3.diffoscope.html --text /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/octave-symbolic_3.2.1-3.diffoscope.txt --json /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/octave-symbolic_3.2.1-3.diffoscope.json --profile=- /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b1/octave-symbolic_3.2.1-3_amd64.changes /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b2/octave-symbolic_3.2.1-3_amd64.changes' + false + set +x Running as unit: rb-diffoscope-amd64_19-46115.service # Profiling output for: /usr/bin/diffoscope --timeout 7200 --html /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/octave-symbolic_3.2.1-3.diffoscope.html --text /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/octave-symbolic_3.2.1-3.diffoscope.txt --json /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/octave-symbolic_3.2.1-3.diffoscope.json --profile=- /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b1/octave-symbolic_3.2.1-3_amd64.changes /srv/reproducible-results/rbuild-debian/r-b-build.KCDgwxGS/b2/octave-symbolic_3.2.1-3_amd64.changes ## command (total time: 0.000s) 0.000s 1 call cmp (internal) ## has_same_content_as (total time: 0.000s) 0.000s 1 call diffoscope.comparators.binary.FilesystemFile ## main (total time: 0.003s) 0.003s 2 calls outputs 0.000s 1 call cleanup Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 223ms CPU time consumed: 223ms _ _ _ _ ___ ___| |_ __ ___ _____ ___ _ _ _ __ ___ | |__ ___ | (_) ___ / _ \ / __| __/ _` \ \ / / _ \_____/ __| | | | '_ ` _ \| '_ \ / _ \| | |/ __| | (_) | (__| || (_| |\ V / __/_____\__ \ |_| | | | | | | |_) | (_) | | | (__ \___/ \___|\__\__,_| \_/ \___| |___/\__, |_| |_| |_|_.__/ \___/|_|_|\___| |___/ Fri Feb 21 15:00:46 UTC 2025 I: diffoscope 288 found no differences in the changes files, and a .buildinfo file also exists. Fri Feb 21 15:00:46 UTC 2025 I: octave-symbolic from unstable built successfully and reproducibly on amd64. INSERT 0 1 INSERT 0 1 DELETE 1 [2025-02-21 15:00:47] INFO: Starting at 2025-02-21 15:00:47.464728 [2025-02-21 15:00:47] INFO: Generating the pages of 1 package(s) [2025-02-21 15:00:47] CRITICAL: https://tests.reproducible-builds.org/debian/unstable/amd64/octave-symbolic didn't produce a buildlog, even though it has been built. [2025-02-21 15:00:47] INFO: Finished at 2025-02-21 15:00:47.880813, took: 0:00:00.416092 Fri Feb 21 15:00:47 UTC 2025 - successfully updated the database and updated https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/octave-symbolic.html Fri Feb 21 15:00:47 UTC 2025 I: Submitting .buildinfo files to external archives: Fri Feb 21 15:00:47 UTC 2025 I: Submitting 24K b1/octave-symbolic_3.2.1-3_amd64.buildinfo.asc https://buildinfo.debian.net/9f31ad74f4496f990bc9d1d0afd307c7bf849c3c/octave-symbolic_3.2.1-3_all Fri Feb 21 15:00:49 UTC 2025 I: Submitting 24K b2/octave-symbolic_3.2.1-3_amd64.buildinfo.asc https://buildinfo.debian.net/f482833a267504d2e7e3f8c40cc27de7167823be/octave-symbolic_3.2.1-3_all Fri Feb 21 15:00:52 UTC 2025 I: Done submitting .buildinfo files to http://buildinfo.debian.net/api/submit. Fri Feb 21 15:00:52 UTC 2025 I: Done submitting .buildinfo files. Fri Feb 21 15:00:52 UTC 2025 I: Removing signed octave-symbolic_3.2.1-3_amd64.buildinfo.asc files: removed './b1/octave-symbolic_3.2.1-3_amd64.buildinfo.asc' removed './b2/octave-symbolic_3.2.1-3_amd64.buildinfo.asc' 1740150052 amd64 unstable octave-symbolic Starting cleanup. /var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/amd64/octave-symbolic_3.2.1-3.rbuild.log: 80.4% -- replaced with /var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/amd64/octave-symbolic_3.2.1-3.rbuild.log.gz [2025-02-21 15:00:53] INFO: Starting at 2025-02-21 15:00:53.049612 [2025-02-21 15:00:53] INFO: Generating the pages of 1 package(s) [2025-02-21 15:00:53] INFO: Finished at 2025-02-21 15:00:53.450755, took: 0:00:00.401152 All cleanup done. Fri Feb 21 15:00:53 UTC 2025 - total duration: 0h 43m 25s. Fri Feb 21 15:00:53 UTC 2025 - reproducible_build.sh stopped running as /tmp/jenkins-script-zdOZmW6n, removing. Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 43min 32.572s CPU time consumed: 9.134s